X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fwidgets%2Flayer-selector.cpp;h=66f4aebf4e77fd822908a38f6e0e8e3dd37ec5dd;hb=81a9af22c466ddef2c71616702e565245ea37254;hp=34433e9b77005b69ad7c9ce8c4750f105fd552f5;hpb=6b15695578f07a3f72c4c9475c1a261a3021472a;p=inkscape.git diff --git a/src/widgets/layer-selector.cpp b/src/widgets/layer-selector.cpp index 34433e9b7..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 { @@ -37,7 +39,7 @@ namespace { class AlternateIcons : public Gtk::HBox { public: - AlternateIcons(GtkIconSize size, gchar const *a, gchar const *b) + AlternateIcons(Inkscape::IconSize size, gchar const *a, gchar const *b) : _a(NULL), _b(NULL) { if (a) { @@ -46,7 +48,7 @@ public: add(*_a); } if (b) { - _b = Gtk::manage(sp_icon_get_icon(b,size)); + _b = Gtk::manage(sp_icon_get_icon(b, size)); _b->set_no_show_all(true); add(*_b); } @@ -91,7 +93,7 @@ LayerSelector::LayerSelector(SPDesktop *desktop) { AlternateIcons *label; - label = Gtk::manage(new AlternateIcons(GTK_ICON_SIZE_MENU, "visible", "hidden")); + label = Gtk::manage(new AlternateIcons(Inkscape::ICON_SIZE_DECORATION, "visible", "hidden")); _visibility_toggle.add(*label); _visibility_toggle.signal_toggled().connect( sigc::compose( @@ -111,7 +113,7 @@ LayerSelector::LayerSelector(SPDesktop *desktop) _tooltips.set_tip(_visibility_toggle, _("Toggle current layer visibility")); pack_start(_visibility_toggle, Gtk::PACK_EXPAND_PADDING); - label = Gtk::manage(new AlternateIcons(GTK_ICON_SIZE_MENU, "lock_unlocked", "width_height_lock")); + label = Gtk::manage(new AlternateIcons(Inkscape::ICON_SIZE_DECORATION, "lock_unlocked", "width_height_lock")); _lock_toggle.add(*label); _lock_toggle.signal_toggled().connect( sigc::compose( @@ -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")); } }