From 730a38c15de801678c2670df8c70f75af570f2b2 Mon Sep 17 00:00:00 2001 From: Quy Tonthat Date: Sun, 31 Aug 2008 15:28:35 +0000 Subject: [PATCH] Fix crashes when creating new layers. This is to fix crashes caused by recent changes that try to get the viewport to refresh after layer properties are changed. Unfortunately the changes caused crash when a new layer is created (r761 and r781). This fix will get the refresh without the crashes. Signed-off-by: Quy Tonthat --- ChangeLog | 4 ++++ src/viklayer.c | 3 +-- src/viklayerspanel.c | 4 +++- src/vikwindow.c | 4 +--- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index fc632952..d14b8a35 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-09-01 +Quy Tonthat : + * Fixed crashes when creating new layers. + 2008-08-30 Guilhem Bonnefille : * QA: removing specific GtkCellRenderer diff --git a/src/viklayer.c b/src/viklayer.c index b5db0ef3..e85427e1 100644 --- a/src/viklayer.c +++ b/src/viklayer.c @@ -469,12 +469,11 @@ static gboolean layer_properties_factory ( VikLayer *vl, VikViewport *vp ) (gpointer) vik_layer_interfaces[vl->type]->get_param, vl) ) { case 0: - return FALSE; case 3: + return FALSE; /* redraw (?) */ case 2: vik_layer_post_read ( vl, vp, FALSE ); /* update any gc's */ - vik_layer_emit_update ( vl ); default: return TRUE; } diff --git a/src/viklayerspanel.c b/src/viklayerspanel.c index 480cb5d0..50358913 100644 --- a/src/viklayerspanel.c +++ b/src/viklayerspanel.c @@ -485,7 +485,9 @@ gboolean vik_layers_panel_properties ( VikLayersPanel *vlp ) { if ( vik_treeview_item_get_data ( vlp->vt, &iter ) == VIK_LAYER_AGGREGATE ) a_dialog_info_msg ( VIK_GTK_WINDOW_FROM_WIDGET(vlp), _("Aggregate Layers have no settable properties.") ); - vik_layer_properties ( VIK_LAYER( vik_treeview_item_get_pointer ( vlp->vt, &iter ) ), vlp->vvp ); + VikLayer *layer = VIK_LAYER( vik_treeview_item_get_pointer ( vlp->vt, &iter ) ); + if (vik_layer_properties ( layer, vlp->vvp )) + vik_layer_emit_update ( layer ); return TRUE; } else diff --git a/src/vikwindow.c b/src/vikwindow.c index 3cf4216f..3193c03d 100644 --- a/src/vikwindow.c +++ b/src/vikwindow.c @@ -395,9 +395,7 @@ static void draw_status ( VikWindow *vw ) void vik_window_set_redraw_trigger(VikLayer *vl) { - VikWindow *vw = NULL; - if (NULL != VIK_LAYER(vl)->vt) - VIK_WINDOW(VIK_GTK_WINDOW_FROM_LAYER(vl)); + VikWindow *vw = VIK_WINDOW(VIK_GTK_WINDOW_FROM_LAYER(vl)); if (NULL != vw) vw->trigger = vl; } -- 2.39.5