From 28961728b32fadb232900b459428118a213c0f77 Mon Sep 17 00:00:00 2001 From: speleo3 Date: Mon, 11 May 2009 17:35:19 +0000 Subject: [PATCH] call sp_document_ensure_up_to_date for getCenter/setCenter (Bug #374968) --- src/sp-item.cpp | 6 ++++++ src/ui/clipboard.cpp | 5 +---- 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) { -- 2.30.2