Code

Crash fix (occured if creating layer in layerless document)
authorknutux <knutux@users.sourceforge.net>
Tue, 18 Apr 2006 12:56:42 +0000 (12:56 +0000)
committerknutux <knutux@users.sourceforge.net>
Tue, 18 Apr 2006 12:56:42 +0000 (12:56 +0000)
src/dialogs/layer-properties.cpp
src/dialogs/layer-properties.h

index 5be24993a9929cc273183c86eed0184c1cca0ec5..2b39155b00c648168026aecaeba346cb34e55cab 100644 (file)
@@ -34,7 +34,7 @@ namespace UI {
 namespace Dialogs {
 
 LayerPropertiesDialog::LayerPropertiesDialog()
-: _strategy(NULL), _desktop(NULL), _layer(NULL)
+: _strategy(NULL), _desktop(NULL), _layer(NULL), _position_visible(false)
 {
     GtkWidget *dlg = GTK_WIDGET(gobj());
     g_assert(dlg);
@@ -137,8 +137,9 @@ LayerPropertiesDialog::_setup_position_controls() {
     if ( NULL == _layer || _desktop->currentRoot() == _layer ) {
         // no layers yet, so option above/below/sublayer is useless
         return;
-        }
-        
+    }
+
+    _position_visible = true;
     _dropdown_list = Gtk::ListStore::create(_dropdown_columns);
     _layer_position_combo.set_model(_dropdown_list);
     _layer_position_combo.pack_start(_label_renderer);
@@ -206,8 +207,12 @@ void LayerPropertiesDialog::Create::setup(LayerPropertiesDialog &dialog) {
 void LayerPropertiesDialog::Create::perform(LayerPropertiesDialog &dialog) {
     SPDesktop *desktop=dialog._desktop;
 
-    Gtk::ListStore::iterator activeRow(dialog._layer_position_combo.get_active());
-    LayerRelativePosition position = activeRow->get_value(dialog._dropdown_columns.position);
+    LayerRelativePosition position = LPOS_ABOVE;
+    
+    if (dialog._position_visible) {
+        Gtk::ListStore::iterator activeRow(dialog._layer_position_combo.get_active());
+        position = activeRow->get_value(dialog._dropdown_columns.position);
+    }
 
     SPObject *new_layer=Inkscape::create_layer(desktop->currentRoot(), dialog._layer, position);
     
index 93cd4f7e0cb7dbd021064b29ccf4466cdc946ff7..58bed141d4a75e87d329ee7d2b634bbb548a5709 100644 (file)
@@ -83,6 +83,7 @@ protected:
     Gtk::Label        _layer_position_label;
     Gtk::ComboBox     _layer_position_combo;
     Gtk::Table        _layout_table;
+    bool              _position_visible;
 
     PositionDropdownColumns _dropdown_columns;
     Gtk::CellRendererText _label_renderer;