From 9494f126c9a54446dd5d049bfc5704c702dc9047 Mon Sep 17 00:00:00 2001 From: "Liam P. White" Date: Sun, 22 Jun 2014 18:21:48 -0400 Subject: Fix for ungrouping/non-LPEItem masks Fixed bugs: - https://launchpad.net/bugs/1333020 (bzr r13436) --- src/sp-lpe-item.cpp | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) (limited to 'src') 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(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(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(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(clipPath->firstChild())) { + sp_lpe_item_cleanup_original_path_recursive(clipChild); + } } if (SP_IS_GROUP(lpeitem)) { -- cgit v1.2.3