summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon A. Cruz <jon@joncruz.org>2006-05-29 16:12:36 +0000
committerjoncruz <joncruz@users.sourceforge.net>2006-05-29 16:12:36 +0000
commitd04860c5b4725baed4db6f992f5728407cc72d87 (patch)
treeafc0011377e40c03903e596fbc36360ec2aff556
parentdefault inkboard to off for the remainder of the freeze (diff)
downloadinkscape-d04860c5b4725baed4db6f992f5728407cc72d87.tar.gz
inkscape-d04860c5b4725baed4db6f992f5728407cc72d87.zip
workaround assertion upon file revert
(bzr r1064)
-rw-r--r--ChangeLog7
-rw-r--r--src/desktop.cpp2
-rw-r--r--src/dialogs/layers-panel.cpp15
-rw-r--r--src/layer-manager.cpp9
4 files changed, 22 insertions, 11 deletions
diff --git a/ChangeLog b/ChangeLog
index f9a908f01..4a6b28a80 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2006-05-29 Jon A. Cruz <jon@joncruz.org>
+
+ * src/desktop.cpp, src/layer-manager.cpp, src/dialogs/layers-panel.cpp:
+ Workaround to avoid assertion upon file revert.
+
2006-05-28 Bryce <bryce@bryceharrington.org>
* sp-marker.cpp: Adding documentation
@@ -37,7 +42,7 @@
2006-05-28 Jon A. Cruz <jon@joncruz.org>
- * src/layer-manager.cpp, src/layer-manager.cpp,
+ * src/layer-manager.cpp, src/layer-manager.h,
src/preferences-skeleton.h, src/ui/dialog/inkscape-preferences.cpp,
src/ui/dialog/inkscape-preferences.h,
src/widgets/layer-selector.cpp, src/dialogs/layers-panel.cpp:
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();
+ }
}
}