summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlvin Penner <penner@vaxxine.com>2014-07-25 21:23:13 +0000
committerapenner <penner@vaxxine.com>2014-07-25 21:23:13 +0000
commit962b4e5a31b1128cdb9dfcccac87e7449a3351f1 (patch)
tree74f1ca1973f86665a686fa97a2933a2ec88e126d /src
parentsync with libTere version of text_reassemble.c (diff)
downloadinkscape-962b4e5a31b1128cdb9dfcccac87e7449a3351f1.tar.gz
inkscape-962b4e5a31b1128cdb9dfcccac87e7449a3351f1.zip
refresh text objects when clipping (Bug 1339305)
Fixed bugs: - https://launchpad.net/bugs/1339305 (bzr r13470)
Diffstat (limited to 'src')
-rw-r--r--src/sp-flowregion.cpp4
-rw-r--r--src/sp-flowtext.cpp2
-rw-r--r--src/sp-text.cpp1
-rw-r--r--src/sp-use.cpp12
4 files changed, 18 insertions, 1 deletions
diff --git a/src/sp-flowregion.cpp b/src/sp-flowregion.cpp
index 709e9e464..e8e5c3d95 100644
--- a/src/sp-flowregion.cpp
+++ b/src/sp-flowregion.cpp
@@ -185,6 +185,8 @@ Inkscape::XML::Node *SPFlowregion::write(Inkscape::XML::Document *xml_doc, Inksc
SPItem::write(xml_doc, repr, flags);
+ this->UpdateComputed(); // copied from update(), see LP Bug 1339305
+
return repr;
}
@@ -372,6 +374,8 @@ static void GetDest(SPObject* child,Shape **computed)
tr_mat = SP_ITEM(u_child)->transform;
}
if ( SP_IS_SHAPE (u_child) ) {
+ if (!(SP_SHAPE(u_child)->_curve))
+ SP_SHAPE (u_child)->set_shape ();
curve = SP_SHAPE (u_child)->getCurve ();
} else if ( SP_IS_TEXT (u_child) ) {
curve = SP_TEXT (u_child)->getNormalizedBpath ();
diff --git a/src/sp-flowtext.cpp b/src/sp-flowtext.cpp
index b4fd54ee4..59832a2b4 100644
--- a/src/sp-flowtext.cpp
+++ b/src/sp-flowtext.cpp
@@ -255,6 +255,8 @@ Inkscape::XML::Node* SPFlowtext::write(Inkscape::XML::Document* doc, Inkscape::X
}
}
+ this->rebuildLayout(); // copied from update(), see LP Bug 1339305
+
SPItem::write(doc, repr, flags);
return repr;
diff --git a/src/sp-text.cpp b/src/sp-text.cpp
index bbc7ec43d..9a7f0b7a0 100644
--- a/src/sp-text.cpp
+++ b/src/sp-text.cpp
@@ -278,6 +278,7 @@ Inkscape::XML::Node *SPText::write(Inkscape::XML::Document *xml_doc, Inkscape::X
}
this->attributes.writeTo(repr);
+ this->rebuildLayout(); // copied from update(), see LP Bug 1339305
// deprecated attribute, but keep it around for backwards compatibility
if (this->style->line_height.set && !this->style->line_height.inherit && !this->style->line_height.normal && this->style->line_height.unit == SP_CSS_UNIT_PERCENT) {
diff --git a/src/sp-use.cpp b/src/sp-use.cpp
index 7d908a66a..e3fcd252a 100644
--- a/src/sp-use.cpp
+++ b/src/sp-use.cpp
@@ -38,6 +38,8 @@
#include "sp-use.h"
#include "sp-use-reference.h"
#include "sp-shape.h"
+#include "sp-text.h"
+#include "sp-flowtext.h"
namespace {
SPObject* createUse() {
@@ -177,8 +179,16 @@ Inkscape::XML::Node* SPUse::write(Inkscape::XML::Document *xml_doc, Inkscape::XM
g_free(uri_string);
}
- if (SP_IS_SHAPE(this->child))
+ if (SP_IS_SHAPE(this->child)) {
SP_SHAPE(this->child)->set_shape(); // evaluate SPCurve of child
+ } else if (SP_IS_TEXT(this->child)) {
+ SP_TEXT(this->child)->rebuildLayout(); // refresh Layout, LP Bug 1339305
+ } else if (SP_IS_FLOWTEXT(this->child)) {
+ if (SP_IS_FLOWREGION(SP_FLOWTEXT(this->child)->firstChild()))
+ SP_FLOWREGION(SP_FLOWTEXT(this->child)->firstChild())->UpdateComputed();
+ SP_FLOWTEXT(this->child)->rebuildLayout();
+ }
+
return repr;
}