summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Holder <speleo3@users.sourceforge.net>2009-05-11 17:35:19 +0000
committerspeleo3 <speleo3@users.sourceforge.net>2009-05-11 17:35:19 +0000
commitb73014debefe2255afac9093bc9e6a7cdfe2f649 (patch)
tree7e92f75a8dd11178c97417b6f3800050e98a7b30
parentRenaming Alpha engraving to Alpha draw and Alpha engraving, color to Alpha fi... (diff)
downloadinkscape-b73014debefe2255afac9093bc9e6a7cdfe2f649.tar.gz
inkscape-b73014debefe2255afac9093bc9e6a7cdfe2f649.zip
call sp_document_ensure_up_to_date for getCenter/setCenter (Bug #374968)
(bzr r7860)
-rw-r--r--src/sp-item.cpp6
-rw-r--r--src/ui/clipboard.cpp5
2 files changed, 7 insertions, 4 deletions
diff --git a/src/sp-item.cpp b/src/sp-item.cpp
index ff3952c25..662dc1cac 100644
--- a/src/sp-item.cpp
+++ b/src/sp-item.cpp
@@ -293,6 +293,9 @@ SPItem::setExplicitlyHidden(bool const val) {
*/
void
SPItem::setCenter(Geom::Point object_centre) {
+ // for getBounds() to work
+ sp_document_ensure_up_to_date(SP_OBJECT_DOCUMENT(this));
+
Geom::OptRect bbox = getBounds(sp_item_i2d_affine(this));
if (bbox) {
transform_center_x = object_centre[Geom::X] - bbox->midpoint()[Geom::X];
@@ -315,6 +318,9 @@ bool SPItem::isCenterSet() {
}
Geom::Point SPItem::getCenter() const {
+ // for getBounds() to work
+ sp_document_ensure_up_to_date(SP_OBJECT_DOCUMENT(this));
+
Geom::OptRect bbox = getBounds(sp_item_i2d_affine(this));
if (bbox) {
return to_2geom(bbox->midpoint()) + Geom::Point (this->transform_center_x, this->transform_center_y);
diff --git a/src/ui/clipboard.cpp b/src/ui/clipboard.cpp
index f56932487..2ee62cfec 100644
--- a/src/ui/clipboard.cpp
+++ b/src/ui/clipboard.cpp
@@ -799,14 +799,11 @@ void ClipboardManagerImpl::_pasteDocument(SPDocument *clipdoc, bool in_place)
// invers apply parent transform
Geom::Matrix doc2parent = sp_item_i2doc_affine(SP_ITEM(desktop->currentLayer())).inverse();
+ sp_selection_apply_affine(selection, doc2parent);
// Update (among other things) all curves in paths, for bounds() to work
sp_document_ensure_up_to_date(target_document);
- // Don't exactly know what sp_document_ensure_up_to_date() does, but apparently it must be called before
- // item->getCenter() is used in sp_selection_apply_affine(). If not, then the center will be at (0,0)
- sp_selection_apply_affine(selection, doc2parent);
-
// move selection either to original position (in_place) or to mouse pointer
Geom::OptRect sel_bbox = selection->bounds();
if (sel_bbox) {