diff options
| author | Jon A. Cruz <jon@joncruz.org> | 2008-06-13 15:55:51 +0000 |
|---|---|---|
| committer | joncruz <joncruz@users.sourceforge.net> | 2008-06-13 15:55:51 +0000 |
| commit | e5ec4c23a1e63eca1c9375f8b0ac9f598ee58417 (patch) | |
| tree | a82c7ce7f272e9e4dc38ce4eaeeffd463fda0954 /src/desktop.cpp | |
| parent | Resolve ID clashes when importing files (fixes bug 168626). (diff) | |
| download | inkscape-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.cpp | 26 |
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. */ |
