diff options
| author | chr <chr> | 2017-05-23 19:48:27 +0000 |
|---|---|---|
| committer | chr <chr> | 2017-05-23 19:48:27 +0000 |
| commit | 603492342f7dc248e131d783af2606e6bcf6324f (patch) | |
| tree | 53dcbaa3e098d2d263594ad40598220ff05b53e1 /src/ui/dialog/objects.cpp | |
| parent | opject panel: rework shotcuts: let the user decide (diff) | |
| download | inkscape-603492342f7dc248e131d783af2606e6bcf6324f.tar.gz inkscape-603492342f7dc248e131d783af2606e6bcf6324f.zip | |
bugfix: change active layer
note: the actions "LayerNext"/"LayerPrev" (ctrl+pageup/down)
never clear the selection, they ignore the user setting
"clear selection on layer change"
So the object panel will only change if there is no selection!
(bzr r15698.1.11)
Diffstat (limited to 'src/ui/dialog/objects.cpp')
| -rw-r--r-- | src/ui/dialog/objects.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/ui/dialog/objects.cpp b/src/ui/dialog/objects.cpp index 61ce3ada3..fd78fec90 100644 --- a/src/ui/dialog/objects.cpp +++ b/src/ui/dialog/objects.cpp @@ -309,11 +309,13 @@ void ObjectsPanel::_objectsChanged(SPObject */*obj*/) SPRoot* root = document->getRoot(); if ( root ) { _selectedConnection.block(); + _documentChangedCurrentLayer.block(); //Clear the tree store _store->clear(); //Add all items recursively _addObject( root, 0 ); _selectedConnection.unblock(); + _documentChangedCurrentLayer.unblock(); //Set the tree selection _objectsSelected(_desktop->selection); //Handle button sensitivity @@ -588,6 +590,7 @@ void ObjectsPanel::_pushTreeSelectionToCurrent() if ( _desktop && _desktop->currentRoot() ) { //block connections for selection and compositing values to prevent interference _selectionChangedConnection.block(); + _documentChangedCurrentLayer.block(); //Clear the selection and then iterate over the tree selection, pushing each item to the desktop _desktop->selection->clear(); @@ -595,6 +598,7 @@ void ObjectsPanel::_pushTreeSelectionToCurrent() _tree.get_selection()->selected_foreach_iter( sigc::bind<bool *>(sigc::mem_fun(*this, &ObjectsPanel::_selected_row_callback), &setOpacity)); //unblock connections _selectionChangedConnection.unblock(); + _documentChangedCurrentLayer.unblock(); _checkTreeSelection(); } @@ -2056,6 +2060,7 @@ void ObjectsPanel::setDesktop( SPDesktop* desktop ) if ( desktop != _desktop ) { _documentChangedConnection.disconnect(); + _documentChangedCurrentLayer.disconnect(); _selectionChangedConnection.disconnect(); if ( _desktop ) { _desktop = 0; @@ -2065,6 +2070,9 @@ void ObjectsPanel::setDesktop( SPDesktop* desktop ) if ( _desktop ) { //Connect desktop signals _documentChangedConnection = _desktop->connectDocumentReplaced( sigc::mem_fun(*this, &ObjectsPanel::setDocument)); + + _documentChangedCurrentLayer = _desktop->connectCurrentLayerChanged( sigc::mem_fun(*this, &ObjectsPanel::_objectsChanged)); + _selectionChangedConnection = _desktop->selection->connectChanged( sigc::mem_fun(*this, &ObjectsPanel::_objectsSelected)); setDocument(_desktop, _desktop->doc()); |
