diff options
| author | Jon A. Cruz <jon@joncruz.org> | 2006-05-29 16:12:36 +0000 |
|---|---|---|
| committer | joncruz <joncruz@users.sourceforge.net> | 2006-05-29 16:12:36 +0000 |
| commit | d04860c5b4725baed4db6f992f5728407cc72d87 (patch) | |
| tree | afc0011377e40c03903e596fbc36360ec2aff556 /src | |
| parent | default inkboard to off for the remainder of the freeze (diff) | |
| download | inkscape-d04860c5b4725baed4db6f992f5728407cc72d87.tar.gz inkscape-d04860c5b4725baed4db6f992f5728407cc72d87.zip | |
workaround assertion upon file revert
(bzr r1064)
Diffstat (limited to 'src')
| -rw-r--r-- | src/desktop.cpp | 2 | ||||
| -rw-r--r-- | src/dialogs/layers-panel.cpp | 15 | ||||
| -rw-r--r-- | src/layer-manager.cpp | 9 |
3 files changed, 16 insertions, 10 deletions
diff --git a/src/desktop.cpp b/src/desktop.cpp index b1dbae118..17ce0907c 100644 --- a/src/desktop.cpp +++ b/src/desktop.cpp @@ -380,7 +380,7 @@ SPObject *SPDesktop::currentLayer() const */ void SPDesktop::setCurrentLayer(SPObject *object) { g_return_if_fail(SP_IS_GROUP(object)); - g_return_if_fail( currentRoot() == object || currentRoot()->isAncestorOf(object)); + g_return_if_fail( currentRoot() == object || (currentRoot() && currentRoot()->isAncestorOf(object)) ); // printf("Set Layer to ID: %s\n", SP_OBJECT_ID(object)); _layer_hierarchy->setBottom(object); } diff --git a/src/dialogs/layers-panel.cpp b/src/dialogs/layers-panel.cpp index cdcafbbc1..a09ce1527 100644 --- a/src/dialogs/layers-panel.cpp +++ b/src/dialogs/layers-panel.cpp @@ -499,13 +499,16 @@ SPObject* LayersPanel::_selectedLayer() void LayersPanel::_pushTreeSelectionToCurrent() { SPObject* inTree = _selectedLayer(); - if ( inTree ) { - SPObject* curr = _desktop->currentLayer(); - if ( curr != inTree ) { - _mgr->setCurrentLayer( inTree ); + // TODO hunt down the possible API abuse in getting NULL + if ( _desktop->currentRoot() ) { + if ( inTree ) { + SPObject* curr = _desktop->currentLayer(); + if ( curr != inTree ) { + _mgr->setCurrentLayer( inTree ); + } + } else { + _mgr->setCurrentLayer( _desktop->doc()->root ); } - } else { - _mgr->setCurrentLayer( _desktop->doc()->root ); } } diff --git a/src/layer-manager.cpp b/src/layer-manager.cpp index e2e40340f..61b0e15bb 100644 --- a/src/layer-manager.cpp +++ b/src/layer-manager.cpp @@ -75,10 +75,13 @@ LayerManager::LayerManager(SPDesktop *desktop) void LayerManager::setCurrentLayer( SPObject* obj ) { - _desktop->setCurrentLayer( obj ); + //g_return_if_fail( _desktop->currentRoot() ); + if ( _desktop->currentRoot() ) { + _desktop->setCurrentLayer( obj ); - if ( prefs_get_int_attribute_limited("options.selection", "layerdeselect", 1, 0, 1) ) { - sp_desktop_selection( _desktop )->clear(); + if ( prefs_get_int_attribute_limited("options.selection", "layerdeselect", 1, 0, 1) ) { + sp_desktop_selection( _desktop )->clear(); + } } } |
