summaryrefslogtreecommitdiffstats
path: root/src/desktop.cpp
diff options
context:
space:
mode:
authorJon A. Cruz <jon@joncruz.org>2008-06-13 15:55:51 +0000
committerjoncruz <joncruz@users.sourceforge.net>2008-06-13 15:55:51 +0000
commite5ec4c23a1e63eca1c9375f8b0ac9f598ee58417 (patch)
treea82c7ce7f272e9e4dc38ce4eaeeffd463fda0954 /src/desktop.cpp
parentResolve ID clashes when importing files (fixes bug 168626). (diff)
downloadinkscape-e5ec4c23a1e63eca1c9375f8b0ac9f598ee58417.tar.gz
inkscape-e5ec4c23a1e63eca1c9375f8b0ac9f598ee58417.zip
Added the ability to toggle a layer "solo". Fixes bug #171530.
(bzr r5922)
Diffstat (limited to 'src/desktop.cpp')
-rw-r--r--src/desktop.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/desktop.cpp b/src/desktop.cpp
index 5796ed638..e16b030a4 100644
--- a/src/desktop.cpp
+++ b/src/desktop.cpp
@@ -85,6 +85,7 @@
#include "xml/repr.h"
#include "message-context.h"
#include "device-manager.h"
+#include "layer-fns.h"
#include "layer-manager.h"
#include "event-log.h"
#include "display/canvas-grid.h"
@@ -467,6 +468,31 @@ void SPDesktop::setCurrentLayer(SPObject *object) {
_layer_hierarchy->setBottom(object);
}
+void SPDesktop::toggleLayerSolo(SPObject *object) {
+ g_return_if_fail(SP_IS_GROUP(object));
+ g_return_if_fail( currentRoot() == object || (currentRoot() && currentRoot()->isAncestorOf(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();
+ }
+ 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 ( SP_ITEM(object)->isHidden() ) {
+ SP_ITEM(object)->setHidden(false);
+ }
+
+ for ( std::vector<SPObject*>::iterator it = layers.begin(); it != layers.end(); ++it ) {
+ SP_ITEM(*it)->setHidden(othersShowing);
+ }
+}
+
/**
* Return layer that contains \a object.
*/