X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fwidgets%2Flayer-selector.cpp;h=66f4aebf4e77fd822908a38f6e0e8e3dd37ec5dd;hb=81a9af22c466ddef2c71616702e565245ea37254;hp=e0c8286b09b8fe53d4ee8b0ca75d42fe9498db37;hpb=4a5051f5137c3a1d9720720cb7e9e98d7d3c415f;p=inkscape.git diff --git a/src/widgets/layer-selector.cpp b/src/widgets/layer-selector.cpp index e0c8286b0..66f4aebf4 100644 --- a/src/widgets/layer-selector.cpp +++ b/src/widgets/layer-selector.cpp @@ -28,7 +28,9 @@ #include "desktop.h" #include "document.h" #include "dialogs/layer-properties.h" +#include "layer-manager.h" #include "xml/node-event-vector.h" +#include "verbs.h" namespace Inkscape { namespace Widgets { @@ -290,9 +292,11 @@ void LayerSelector::_setDesktopLayer() { SPObject *layer=_selector.get_active()->get_value(_model_columns.object); if ( _desktop && layer ) { _layer_changed_connection.block(); - _desktop->setCurrentLayer(layer); + + _desktop->layer_manager->setCurrentLayer(layer); + _layer_changed_connection.unblock(); - SP_DT_SELECTION(_desktop)->clear(); + _selectLayer(_desktop->currentLayer()); } } @@ -418,6 +422,18 @@ void LayerSelector::_protectUpdate(sigc::slot slot) { _visibility_toggled_connection.block(true); _lock_toggled_connection.block(true); slot(); + + SPObject *layer = _desktop ? _desktop->currentLayer() : 0; + if ( layer ) { + bool wantedValue = ( SP_IS_ITEM(layer) ? SP_ITEM(layer)->isLocked() : false ); + if ( _lock_toggle.get_active() != wantedValue ) { + _lock_toggle.set_active( wantedValue ); + } + wantedValue = ( SP_IS_ITEM(layer) ? SP_ITEM(layer)->isHidden() : false ); + if ( _visibility_toggle.get_active() != wantedValue ) { + _visibility_toggle.set_active( wantedValue ); + } + } _visibility_toggled_connection.block(visibility_blocked); _lock_toggled_connection.block(lock_blocked); } @@ -562,14 +578,16 @@ void LayerSelector::_prepareLabelRenderer( void LayerSelector::_lockLayer(bool lock) { if ( _layer && SP_IS_ITEM(_layer) ) { SP_ITEM(_layer)->setLocked(lock); - sp_document_maybe_done(SP_DT_DOCUMENT(_desktop), "LayerSelector:lock"); + sp_document_done(sp_desktop_document(_desktop), SP_VERB_NONE, + lock? _("Lock layer") : _("Unlock layer")); } } void LayerSelector::_hideLayer(bool hide) { if ( _layer && SP_IS_ITEM(_layer) ) { SP_ITEM(_layer)->setHidden(hide); - sp_document_maybe_done(SP_DT_DOCUMENT(_desktop), "LayerSelector:hide"); + sp_document_done(sp_desktop_document(_desktop), SP_VERB_NONE, + hide? _("Hide layer") : _("Unhide layer")); } }