summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLiam P. White <inkscapebronyat-signgmaildotcom>2014-06-22 22:21:48 +0000
committerLiam P. White <inkscapebronyat-signgmaildotcom>2014-06-22 22:21:48 +0000
commit9494f126c9a54446dd5d049bfc5704c702dc9047 (patch)
tree2bdec9325b7b2df45f9914c06e9a6d7c5ec6da74 /src
parentAdd new named color 'rebeccapurple' (CSS4 Color). (diff)
downloadinkscape-9494f126c9a54446dd5d049bfc5704c702dc9047.tar.gz
inkscape-9494f126c9a54446dd5d049bfc5704c702dc9047.zip
Fix for ungrouping/non-LPEItem masks
Fixed bugs: - https://launchpad.net/bugs/1333020 (bzr r13436)
Diffstat (limited to 'src')
-rw-r--r--src/sp-lpe-item.cpp31
1 files changed, 23 insertions, 8 deletions
diff --git a/src/sp-lpe-item.cpp b/src/sp-lpe-item.cpp
index ad0902967..e04d8f841 100644
--- a/src/sp-lpe-item.cpp
+++ b/src/sp-lpe-item.cpp
@@ -337,16 +337,24 @@ lpeobject_ref_modified(SPObject */*href*/, guint /*flags*/, SPLPEItem *lpeitem)
static void
sp_lpe_item_create_original_path_recursive(SPLPEItem *lpeitem)
{
+ g_return_if_fail(lpeitem != NULL);
SPMask * mask = lpeitem->mask_ref->getObject();
- if(mask)
+
+ if (mask)
{
- sp_lpe_item_create_original_path_recursive(SP_LPE_ITEM(mask->firstChild()));
+ if (SPLPEItem* maskChild = dynamic_cast<SPLPEItem*>(mask->firstChild())) {
+ sp_lpe_item_create_original_path_recursive(maskChild);
+ }
}
+
SPClipPath * clipPath = lpeitem->clip_ref->getObject();
- if(clipPath)
+ if (clipPath)
{
- sp_lpe_item_create_original_path_recursive(SP_LPE_ITEM(clipPath->firstChild()));
+ if (SPLPEItem* clipChild = dynamic_cast<SPLPEItem*>(clipPath->firstChild())) {
+ sp_lpe_item_create_original_path_recursive(clipChild);
+ }
}
+
if (SP_IS_GROUP(lpeitem)) {
GSList const *item_list = sp_item_group_item_list(SP_GROUP(lpeitem));
for ( GSList const *iter = item_list; iter; iter = iter->next ) {
@@ -367,15 +375,22 @@ sp_lpe_item_create_original_path_recursive(SPLPEItem *lpeitem)
static void
sp_lpe_item_cleanup_original_path_recursive(SPLPEItem *lpeitem)
{
+ g_return_if_fail(lpeitem != NULL);
SPMask * mask = lpeitem->mask_ref->getObject();
- if(mask)
+
+ if (mask)
{
- sp_lpe_item_cleanup_original_path_recursive(SP_LPE_ITEM(mask->firstChild()));
+ if (SPLPEItem* maskChild = dynamic_cast<SPLPEItem*>(mask->firstChild())) {
+ sp_lpe_item_cleanup_original_path_recursive(maskChild);
+ }
}
+
SPClipPath * clipPath = lpeitem->clip_ref->getObject();
- if(clipPath)
+ if (clipPath)
{
- sp_lpe_item_cleanup_original_path_recursive(SP_LPE_ITEM(clipPath->firstChild()));
+ if (SPLPEItem* clipChild = dynamic_cast<SPLPEItem*>(clipPath->firstChild())) {
+ sp_lpe_item_cleanup_original_path_recursive(clipChild);
+ }
}
if (SP_IS_GROUP(lpeitem)) {