summaryrefslogtreecommitdiffstats
path: root/src/object
diff options
context:
space:
mode:
authorMartin Owens <doctormo@gmail.com>2018-10-04 18:28:40 +0000
committerMartin Owens <doctormo@gmail.com>2018-10-05 22:03:39 +0000
commitd3d052b3e24ef3fc5d12fb92775325691f343bd2 (patch)
tree6e450ba3aee3ea7eff15b4e99cc72f1395853638 /src/object
parentReplicate some of the sp-item attribute handling for sp-stop (diff)
downloadinkscape-d3d052b3e24ef3fc5d12fb92775325691f343bd2.tar.gz
inkscape-d3d052b3e24ef3fc5d12fb92775325691f343bd2.zip
Fix signaling issue with gradient stops not updating their parent
Diffstat (limited to 'src/object')
-rw-r--r--src/object/sp-gradient.cpp1
-rw-r--r--src/object/sp-stop.cpp10
-rw-r--r--src/object/sp-stop.h1
3 files changed, 11 insertions, 1 deletions
diff --git a/src/object/sp-gradient.cpp b/src/object/sp-gradient.cpp
index d0d50783f..7e31540b6 100644
--- a/src/object/sp-gradient.cpp
+++ b/src/object/sp-gradient.cpp
@@ -539,7 +539,6 @@ void SPGradient::modified(guint flags)
#ifdef OBJECT_TRACE
objectTrace( "SPGradient::modified" );
#endif
-
if (flags & SP_OBJECT_CHILD_MODIFIED_FLAG) {
if (SP_IS_MESHGRADIENT(this)) {
this->invalidateArray();
diff --git a/src/object/sp-stop.cpp b/src/object/sp-stop.cpp
index 7386599ff..41daeb4d4 100644
--- a/src/object/sp-stop.cpp
+++ b/src/object/sp-stop.cpp
@@ -69,11 +69,21 @@ void SPStop::set(unsigned int key, const gchar* value) {
} else {
SPObject::set(key, value);
}
+ // This makes sure that the parent sp-gradient is updated.
+ this->requestModified(SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG);
break;
}
}
}
+void SPStop::modified(guint flags)
+{
+ if (parent && !(flags & SP_OBJECT_PARENT_MODIFIED_FLAG)) {
+ parent->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG);
+ }
+}
+
+
/**
* Virtual set: set attribute to value.
*/
diff --git a/src/object/sp-stop.h b/src/object/sp-stop.h
index aef7bb180..7ee03259e 100644
--- a/src/object/sp-stop.h
+++ b/src/object/sp-stop.h
@@ -44,6 +44,7 @@ public:
protected:
void build(SPDocument* doc, Inkscape::XML::Node* repr) override;
void set(unsigned int key, const char* value) override;
+ void modified(guint flags) override;
Inkscape::XML::Node* write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, unsigned int flags) override;
};