summaryrefslogtreecommitdiffstats
path: root/src/desktop.cpp
diff options
context:
space:
mode:
authorsu_v <suv-sf@users.sourceforge.net>2012-11-10 06:07:17 +0000
committer~suv <suv-sf@users.sourceforge.net>2012-11-10 06:07:17 +0000
commit6fadc1a815eca2b0a85038ae95d9dd7dbe8a8ae7 (patch)
tree951c9b05d57c8ffe745561865253055ae2e8f566 /src/desktop.cpp
parentmerge from trunk (r11858) (diff)
parentWin32. Updating the trunk again for devlibs r36. (diff)
downloadinkscape-6fadc1a815eca2b0a85038ae95d9dd7dbe8a8ae7.tar.gz
inkscape-6fadc1a815eca2b0a85038ae95d9dd7dbe8a8ae7.zip
merge from trunk (r11865)
(bzr r11668.1.39)
Diffstat (limited to 'src/desktop.cpp')
-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();
+ }
}