2009-05-12 Claudio Saavedra <csaavedra@igalia.com>
authorClaudio Saavedra <csaavedra@igalia.com>
Tue, 12 May 2009 15:55:36 +0000 (18:55 +0300)
committerClaudio Saavedra <csaavedra@igalia.com>
Tue, 12 May 2009 15:55:36 +0000 (18:55 +0300)
* hildon/hildon-touch-selector.c (disconnect_model_handlers),
(hildon_touch_selector_remove): Disconnect model's signal handler
on column removal.

Fixes: NB#116289 (Hildon home crashes while adding task
shortcuts.)

ChangeLog
hildon/hildon-touch-selector.c

index 06ba41d..810268e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2009-05-12  Claudio Saavedra  <csaavedra@igalia.com>
+
+       * hildon/hildon-touch-selector.c (disconnect_model_handlers),
+       (hildon_touch_selector_remove): Disconnect model's signal handler
+       on column removal.
+
+       Fixes: NB#116289 (Hildon home crashes while adding task
+       shortcuts.)
+
 2009-05-11  Alberto Garcia  <agarcia@igalia.com>
 
        * hildon/hildon-button.c
index 7d4c859..896f3b7 100644 (file)
@@ -485,6 +485,13 @@ hildon_touch_selector_dispose (GObject * object)
     (* gobject_class->dispose) (object);
 }
 
+static void
+disconnect_model_handlers (HildonTouchSelectorColumn *col, HildonTouchSelector *selector)
+{
+  g_signal_handlers_disconnect_by_func (col->priv->model,
+                                       on_row_changed, selector);
+}
+
 /*
  * IMPLEMENTATION NOTES:
  * Some people sent questions regarding a missing dispose/finalize function on
@@ -516,6 +523,7 @@ hildon_touch_selector_remove (GtkContainer * container, GtkWidget * widget)
 
   /* Remove the extra data related to the columns, if required. */
   if (widget == selector->priv->hbox) {
+    g_slist_foreach (selector->priv->columns, (GFunc) disconnect_model_handlers, selector);
     g_slist_foreach (selector->priv->columns, (GFunc) g_object_unref, NULL);
 
     g_slist_free (selector->priv->columns);