summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJabiertxof <jabier.arraiza@marker.es>2018-09-13 16:04:04 +0000
committerJabiertxof <jabier.arraiza@marker.es>2018-09-13 16:04:04 +0000
commit8b8e0a6670e59a2d6d1abdf66fb83de0a4e5f4e9 (patch)
tree079461416d34877d38d11b09344bfb57616db4fd /src
parentUpdate POTFILES.in and POTFILES.skip (diff)
downloadinkscape-8b8e0a6670e59a2d6d1abdf66fb83de0a4e5f4e9.tar.gz
inkscape-8b8e0a6670e59a2d6d1abdf66fb83de0a4e5f4e9.zip
Fix bug applying powerclip/mask to non cliped/masked elements
Diffstat (limited to 'src')
-rw-r--r--src/live_effects/lpe-powerclip.cpp10
-rw-r--r--src/live_effects/lpe-powerclip.h1
-rw-r--r--src/live_effects/lpe-powermask.cpp10
-rw-r--r--src/live_effects/lpe-powermask.h1
4 files changed, 22 insertions, 0 deletions
diff --git a/src/live_effects/lpe-powerclip.cpp b/src/live_effects/lpe-powerclip.cpp
index f4fb15dae..38a8d02a0 100644
--- a/src/live_effects/lpe-powerclip.cpp
+++ b/src/live_effects/lpe-powerclip.cpp
@@ -47,6 +47,16 @@ LPEPowerClip::LPEPowerClip(LivePathEffectObject *lpeobject)
LPEPowerClip::~LPEPowerClip() = default;
void
+LPEPowerClip::doOnApply (SPLPEItem const * lpeitem)
+{
+ SPLPEItem * item = const_cast<SPLPEItem*>(lpeitem);
+ SPObject * clip_path = item->clip_ref->getObject();
+ if (!clip_path) {
+ item->removeCurrentPathEffect(false);
+ }
+}
+
+void
LPEPowerClip::doBeforeEffect (SPLPEItem const* lpeitem){
SPObject * clip_path = SP_ITEM(sp_lpe_item)->clip_ref->getObject();
gchar * uri_str = uri.param_getSVGValue();
diff --git a/src/live_effects/lpe-powerclip.h b/src/live_effects/lpe-powerclip.h
index 6e95ab4ab..6fc85cbab 100644
--- a/src/live_effects/lpe-powerclip.h
+++ b/src/live_effects/lpe-powerclip.h
@@ -18,6 +18,7 @@ class LPEPowerClip : public Effect {
public:
LPEPowerClip(LivePathEffectObject *lpeobject);
~LPEPowerClip() override;
+ void doOnApply (SPLPEItem const * lpeitem);
void doBeforeEffect (SPLPEItem const* lpeitem) override;
Geom::PathVector doEffect_path (Geom::PathVector const & path_in) override;
void doOnRemove (SPLPEItem const* /*lpeitem*/) override;
diff --git a/src/live_effects/lpe-powermask.cpp b/src/live_effects/lpe-powermask.cpp
index 54168fdb5..6df0770a9 100644
--- a/src/live_effects/lpe-powermask.cpp
+++ b/src/live_effects/lpe-powermask.cpp
@@ -51,6 +51,16 @@ LPEPowerMask::LPEPowerMask(LivePathEffectObject *lpeobject)
LPEPowerMask::~LPEPowerMask() = default;
void
+LPEPowerMask::doOnApply (SPLPEItem const * lpeitem)
+{
+ SPLPEItem *item = const_cast<SPLPEItem*>(lpeitem);
+ SPObject * mask = item->mask_ref->getObject();
+ if (!mask) {
+ item->removeCurrentPathEffect(false);
+ }
+}
+
+void
LPEPowerMask::doBeforeEffect (SPLPEItem const* lpeitem){
//To avoid close of color dialog and better performance on change color
SPObject * mask = SP_ITEM(sp_lpe_item)->mask_ref->getObject();
diff --git a/src/live_effects/lpe-powermask.h b/src/live_effects/lpe-powermask.h
index 397356614..15533299d 100644
--- a/src/live_effects/lpe-powermask.h
+++ b/src/live_effects/lpe-powermask.h
@@ -19,6 +19,7 @@ class LPEPowerMask : public Effect {
public:
LPEPowerMask(LivePathEffectObject *lpeobject);
~LPEPowerMask() override;
+ void doOnApply (SPLPEItem const * lpeitem);
void doBeforeEffect (SPLPEItem const* lpeitem) override;
void doEffect (SPCurve * curve) override;
void doOnRemove (SPLPEItem const* /*lpeitem*/) override;