summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJohn Smith <john.smith7545@yahoo.com>2012-11-03 10:18:09 +0000
committerJohn Smith <john.smith7545@yahoo.com>2012-11-03 10:18:09 +0000
commit66f12daab54277b91b8fa44c9b0cc6961f6357b1 (patch)
tree17c96e213329ad276a56cfdb2ab81f9af655ddcd /src
parentDon't remove default css values if element is in <defs> or is a <symbol>. (diff)
downloadinkscape-66f12daab54277b91b8fa44c9b0cc6961f6357b1.tar.gz
inkscape-66f12daab54277b91b8fa44c9b0cc6961f6357b1.zip
Fix for 1065933 : Better support for sub-layers in 'Show/Hide other layers'
(bzr r11861)
Diffstat (limited to 'src')
-rw-r--r--src/desktop.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/desktop.cpp b/src/desktop.cpp
index fa0c8647f..f10174119 100644
--- a/src/desktop.cpp
+++ b/src/desktop.cpp
@@ -549,12 +549,17 @@ void SPDesktop::toggleLayerSolo(SPObject *object) {
bool othersShowing = false;
std::vector<SPObject*> layers;
for ( SPObject* obj = Inkscape::next_layer(currentRoot(), object); obj; obj = Inkscape::next_layer(currentRoot(), obj) ) {
- layers.push_back(obj);
- othersShowing |= !SP_ITEM(obj)->isHidden();
+ // Don't hide ancestors, since that would in turn hide the layer as well
+ if (!obj->isAncestorOf(object)) {
+ layers.push_back(obj);
+ othersShowing |= !SP_ITEM(obj)->isHidden();
+ }
}
for ( SPObject* obj = Inkscape::previous_layer(currentRoot(), object); obj; obj = Inkscape::previous_layer(currentRoot(), obj) ) {
- layers.push_back(obj);
- othersShowing |= !SP_ITEM(obj)->isHidden();
+ if (!obj->isAncestorOf(object)) {
+ layers.push_back(obj);
+ othersShowing |= !SP_ITEM(obj)->isHidden();
+ }
}