[nautilus-actions] nact_menubar_instance_dispose(): disconnect signal handler



commit 521d59c84145e8d7d2aaa1fb67052c75e4134a14
Author: Pierre Wieser <pwieser trychlos org>
Date:   Wed Feb 15 21:43:16 2012 +0100

    nact_menubar_instance_dispose(): disconnect signal handler

 ChangeLog                    |    3 +++
 src/nact/nact-menubar-priv.h |    1 +
 src/nact/nact-menubar.c      |   40 ++++++++++++++++++++++++----------------
 3 files changed, 28 insertions(+), 16 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 817079f..9397eb2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2012-02-15 Pierre Wieser <pwieser trychlos org>
 
+	* src/nact/nact-menubar-priv.h:
+	* src/nact/nact-menubar.c (instance_dispose): Disconnect signal handler.
+
 	* src/nact/base-window.c (instance_dispose): Improve debug message.
 
 	* src/nact/nact-menubar-edit.c
diff --git a/src/nact/nact-menubar-priv.h b/src/nact/nact-menubar-priv.h
index a120be7..0fc2fd0 100644
--- a/src/nact/nact-menubar-priv.h
+++ b/src/nact/nact-menubar-priv.h
@@ -54,6 +54,7 @@ struct _NactMenubarPrivate {
 	/* set at instanciation time
 	 */
 	BaseWindow      *window;
+	gulong			 update_sensitivities_handler_id;
 
 	/* set at initialization time
 	 */
diff --git a/src/nact/nact-menubar.c b/src/nact/nact-menubar.c
index 22657e9..799a4bc 100644
--- a/src/nact/nact-menubar.c
+++ b/src/nact/nact-menubar.c
@@ -341,24 +341,31 @@ static void
 instance_dispose( GObject *object )
 {
 	static const gchar *thisfn = "nact_menubar_instance_dispose";
-	NactMenubar *self;
+	NactMenubarPrivate *priv;
 
 	g_return_if_fail( NACT_IS_MENUBAR( object ));
 
-	self = NACT_MENUBAR( object );
+	priv = NACT_MENUBAR( object )->private;
+
+	if( !priv->dispose_has_run ){
+
+		g_debug( "%s: object=%p (%s)",
+				thisfn,
+				( void * ) object, G_OBJECT_TYPE_NAME( object ));
 
-	if( !self->private->dispose_has_run ){
-		g_debug( "%s: object=%p (%s)", thisfn, ( void * ) object, G_OBJECT_TYPE_NAME( object ));
+		priv->dispose_has_run = TRUE;
 
-		self->private->dispose_has_run = TRUE;
+		base_window_signal_disconnect(
+				priv->window,
+				priv->update_sensitivities_handler_id );
 
-		g_object_unref( self->private->action_group );
-		g_object_unref( self->private->notebook_group );
-		g_object_unref( self->private->ui_manager );
-		g_object_unref( self->private->sort_buttons );
+		g_object_unref( priv->action_group );
+		g_object_unref( priv->notebook_group );
+		g_object_unref( priv->ui_manager );
+		g_object_unref( priv->sort_buttons );
 
-		if( self->private->selected_items ){
-			g_list_free( self->private->selected_items );
+		if( priv->selected_items ){
+			g_list_free( priv->selected_items );
 		}
 
 		/* chain up to the parent class */
@@ -556,11 +563,12 @@ on_base_initialize_window( BaseWindow *window, gpointer user_data )
 				MAIN_SIGNAL_SELECTION_CHANGED,
 				G_CALLBACK( on_tree_view_selection_changed ));
 
-		base_window_signal_connect(
-				window,
-				G_OBJECT( bar ),
-				MENUBAR_SIGNAL_UPDATE_SENSITIVITIES,
-				G_CALLBACK( on_update_sensitivities ));
+		bar->private->update_sensitivities_handler_id =
+				base_window_signal_connect(
+						window,
+						G_OBJECT( bar ),
+						MENUBAR_SIGNAL_UPDATE_SENSITIVITIES,
+						G_CALLBACK( on_update_sensitivities ));
 
 		nact_menubar_file_initialize( bar );
 		nact_main_toolbar_init( window, bar->private->action_group );



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]