summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAaron Spike <aaron@ekips.org>2006-04-28 04:14:59 +0000
committeracspike <acspike@users.sourceforge.net>2006-04-28 04:14:59 +0000
commit290410e3b0ef13947447f6026e18eba666f61aa6 (patch)
tree47af87c40a055cce76e740c25ebf6c96f3a0386f /src
parentAdded CREATE v0.1 support for gradients/swatches/patterns (diff)
downloadinkscape-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)
Diffstat (limited to 'src')
-rw-r--r--src/document.cpp4
-rw-r--r--src/sp-item-group.cpp14
-rw-r--r--src/sp-item-group.h3
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;