From d3d052b3e24ef3fc5d12fb92775325691f343bd2 Mon Sep 17 00:00:00 2001 From: Martin Owens Date: Thu, 4 Oct 2018 14:28:40 -0400 Subject: Fix signaling issue with gradient stops not updating their parent --- src/object/sp-gradient.cpp | 1 - src/object/sp-stop.cpp | 10 ++++++++++ src/object/sp-stop.h | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) (limited to 'src') 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; }; -- cgit v1.2.3