diff options
| author | Aaron Spike <aaron@ekips.org> | 2006-04-28 04:14:59 +0000 |
|---|---|---|
| committer | acspike <acspike@users.sourceforge.net> | 2006-04-28 04:14:59 +0000 |
| commit | 290410e3b0ef13947447f6026e18eba666f61aa6 (patch) | |
| tree | 47af87c40a055cce76e740c25ebf6c96f3a0386f | |
| parent | Added CREATE v0.1 support for gradients/swatches/patterns (diff) | |
| download | inkscape-290410e3b0ef13947447f6026e18eba666f61aa6.tar.gz inkscape-290410e3b0ef13947447f6026e18eba666f61aa6.zip | |
fix translation for fit page
the translation is now preserved across save by translating all child elements of the root
instead of just translating the root itself.
(bzr r602)
| -rw-r--r-- | src/document.cpp | 4 | ||||
| -rw-r--r-- | src/sp-item-group.cpp | 14 | ||||
| -rw-r--r-- | src/sp-item-group.h | 3 |
3 files changed, 19 insertions, 2 deletions
diff --git a/src/document.cpp b/src/document.cpp index ef04735ef..eca4ab2dc 100644 --- a/src/document.cpp +++ b/src/document.cpp @@ -52,7 +52,7 @@ #include "prefs-utils.h" #include "libavoid/router.h" #include "libnr/nr-rect.h" -#include "sp-item-transform.h" +#include "sp-item-group.h" #include "display/nr-arena-item.h" @@ -499,7 +499,7 @@ void SPDocument::fitToRect(NRRect const & rect) sp_document_set_height(this, h, &unit); NR::translate tr = NR::translate::translate(-rect.x0,-(rect.y0 + (h - old_height))); - sp_item_move_rel((SPItem *) root, tr); + static_cast<SPGroup *>(root)->translateChildItems(tr); } void sp_document_set_uri(SPDocument *document, gchar const *uri) diff --git a/src/sp-item-group.cpp b/src/sp-item-group.cpp index cd11b3c41..b5f6881b7 100644 --- a/src/sp-item-group.cpp +++ b/src/sp-item-group.cpp @@ -29,6 +29,7 @@ #include "document.h" #include "style.h" #include "attributes.h" +#include "sp-item-transform.h" #include "sp-root.h" #include "sp-use.h" @@ -524,6 +525,19 @@ void SPGroup::_updateLayerMode(unsigned int display_key) { } } +void SPGroup::translateChildItems(NR::translate const &tr) +{ + if (this->hasChildren()) + { + SPObject *o = NULL; + for (o = sp_object_first_child(SP_OBJECT(this)) ; o != NULL ; o = SP_OBJECT_NEXT(o) ) { + if (SP_IS_ITEM (o)) { + sp_item_move_rel(static_cast<SPItem *>(o), tr); + } + } + } +} + CGroup::CGroup(SPGroup *group) { _group = group; } diff --git a/src/sp-item-group.h b/src/sp-item-group.h index ebf5c0402..b78291074 100644 --- a/src/sp-item-group.h +++ b/src/sp-item-group.h @@ -24,6 +24,8 @@ class CGroup; +namespace NR{ struct translate; } + struct SPGroup : public SPItem { enum LayerMode { GROUP, LAYER }; @@ -43,6 +45,7 @@ struct SPGroup : public SPItem { LayerMode layerDisplayMode(unsigned int display_key) const; void setLayerDisplayMode(unsigned int display_key, LayerMode mode); + void translateChildItems(NR::translate const &tr); CGroup *group; |
