diff options
| author | Jon A. Cruz <jon@joncruz.org> | 2006-05-21 15:58:09 +0000 |
|---|---|---|
| committer | joncruz <joncruz@users.sourceforge.net> | 2006-05-21 15:58:09 +0000 |
| commit | a06c4627fac215a02736eeaa7b2f0c29e3757850 (patch) | |
| tree | fecc2a6cfd3856681740c0a95b71a319b3f870ce /src/layer-manager.cpp | |
| parent | fix unstable behavior when ctrl+alt+dragging more than one sharp node (diff) | |
| download | inkscape-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.cpp | 22 |
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); +} + } /* |
