[maemo-commits] [maemo-commits] r11155 - in projects/haf/trunk/hildon-1: . src

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Thu Apr 19 15:38:29 EEST 2007
Author: mdk
Date: 2007-04-19 15:38:28 +0300 (Thu, 19 Apr 2007)
New Revision: 11155

Modified:
   projects/haf/trunk/hildon-1/ChangeLog
   projects/haf/trunk/hildon-1/src/hildon-banner.c
Log:
Fixing a problem with timed banners having their parrent destroyed before they are.


Modified: projects/haf/trunk/hildon-1/ChangeLog
===================================================================
--- projects/haf/trunk/hildon-1/ChangeLog	2007-04-19 12:26:08 UTC (rev 11154)
+++ projects/haf/trunk/hildon-1/ChangeLog	2007-04-19 12:38:28 UTC (rev 11155)
@@ -1,3 +1,8 @@
+2007-04-19  Michael Dominic Kostrzewa  <michael.kostrzewa at nokia.com> 
+
+	* src/hildon-banner.c: Fixing a problem with timed banners having
+	their parrent destroyed before they are.
+
 2007-04-17  Xan Lopez  <xan.lopez at nokia.com>
 
 	* src/hildon-bread-crumb.c:

Modified: projects/haf/trunk/hildon-1/src/hildon-banner.c
===================================================================
--- projects/haf/trunk/hildon-1/src/hildon-banner.c	2007-04-19 12:26:08 UTC (rev 11154)
+++ projects/haf/trunk/hildon-1/src/hildon-banner.c	2007-04-19 12:38:28 UTC (rev 11155)
@@ -130,6 +130,9 @@
                                                  guint n_construct_params,
                                                  GObjectConstructParam *construct_params);
 
+static void
+hildon_banner_finalize				(GObject *object);
+
 static gboolean 
 hildon_banner_map_event                         (GtkWidget *widget, 
                                                  GdkEventAny *event);
@@ -396,12 +399,17 @@
 
         case PROP_PARENT_WINDOW:
             window = g_value_get_object (value);         
+	    if (priv->parent) {
+		    g_object_remove_weak_pointer(G_OBJECT (priv->parent), (gpointer *)&priv->parent);
+	    }
 
             gtk_window_set_transient_for (GTK_WINDOW (object), (GtkWindow *) window);
             priv->parent = (GtkWindow *) window;
 
-            if (window)
+            if (window) {
                 gtk_window_set_destroy_with_parent (GTK_WINDOW (object), TRUE);
+		g_object_add_weak_pointer(G_OBJECT (window), (gpointer *)&priv->parent);
+	    }
 
             break;
 
@@ -547,6 +555,18 @@
     return banner;
 }
 
+static void
+hildon_banner_finalize				(GObject *object)
+{
+    HildonBannerPrivate *priv = HILDON_BANNER_GET_PRIVATE (object);
+
+    if (priv->parent) {
+	g_object_remove_weak_pointer(G_OBJECT (priv->parent), (gpointer *)&priv->parent);
+    }
+
+    G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
 /* We start the timer for timed notifications after the window appears on screen */
 static gboolean 
 hildon_banner_map_event                         (GtkWidget *widget, 
@@ -650,6 +670,7 @@
 
     /* Override virtual methods */
     object_class->constructor = hildon_banner_constructor;
+    object_class->finalize = hildon_banner_finalize;
     object_class->set_property = hildon_banner_set_property;
     object_class->get_property = hildon_banner_get_property;
     GTK_OBJECT_CLASS (klass)->destroy = hildon_banner_destroy;


More information about the maemo-commits mailing list