summaryrefslogtreecommitdiffstats
path: root/src/layer-manager.cpp
diff options
context:
space:
mode:
authorJon A. Cruz <jon@joncruz.org>2006-05-21 15:58:09 +0000
committerjoncruz <joncruz@users.sourceforge.net>2006-05-21 15:58:09 +0000
commita06c4627fac215a02736eeaa7b2f0c29e3757850 (patch)
treefecc2a6cfd3856681740c0a95b71a319b3f870ce /src/layer-manager.cpp
parentfix unstable behavior when ctrl+alt+dragging more than one sharp node (diff)
downloadinkscape-a06c4627fac215a02736eeaa7b2f0c29e3757850.tar.gz
inkscape-a06c4627fac215a02736eeaa7b2f0c29e3757850.zip
Adding notification when managed layers change.
(bzr r917)
Diffstat (limited to 'src/layer-manager.cpp')
-rw-r--r--src/layer-manager.cpp22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/layer-manager.cpp b/src/layer-manager.cpp
index c2999f6c8..ab2dff107 100644
--- a/src/layer-manager.cpp
+++ b/src/layer-manager.cpp
@@ -23,7 +23,7 @@ namespace Inkscape {
LayerManager::LayerManager(SPDesktop *desktop)
: _desktop(desktop), _document(NULL)
{
-// _layer_connection = desktop->connectCurrentLayerChanged( sigc::hide<0>( sigc::mem_fun(*this, &LayerManager::_rebuild) ) );
+ _layer_connection = desktop->connectCurrentLayerChanged( sigc::mem_fun(*this, &LayerManager::_selectedLayerChanged) );
sigc::bound_mem_functor1<void, Inkscape::LayerManager, SPDocument*> first = sigc::mem_fun(*this, &LayerManager::_setDocument);
@@ -47,6 +47,17 @@ void LayerManager::_setDocument(SPDocument *document) {
_rebuild();
}
+
+void LayerManager::_objectModifiedCB( SPObject* obj, guint flags, LayerManager* mgr )
+{
+ mgr->_objectModified( obj, flags );
+}
+
+void LayerManager::_objectModified( SPObject* obj, guint flags )
+{
+ _details_changed_signal.emit( obj );
+}
+
void LayerManager::_rebuild() {
_clear();
GSList const *layers=sp_document_get_resource_list(_document, "layer");
@@ -69,6 +80,8 @@ void LayerManager::_rebuild() {
}
Inkscape::XML::Node* node = higher ? SP_OBJECT_REPR(higher) : 0;
if ( node && node->parent() ) {
+ g_signal_connect( G_OBJECT(curr), "modified", G_CALLBACK( _objectModifiedCB ), this );
+
_addOne(curr);
}
}
@@ -77,6 +90,13 @@ void LayerManager::_rebuild() {
}
}
+// Connected to the desktop's CurrentLayerChanged signal
+void LayerManager::_selectedLayerChanged(SPObject *layer)
+{
+ // notify anyone who's listening to this instead of directly to the desktop
+ _layer_changed_signal.emit(layer);
+}
+
}
/*