[nautilus] general: Clean up signal handler disconnection



commit d275c8bde184ca1fa71292e2f2ed5e911b731531
Author: Joshua Lee <lee son wai gmail com>
Date:   Tue Jun 16 18:46:53 2020 +0100

    general: Clean up signal handler disconnection
    
    Make use of GLib's new g_clear_signal_handler() function to simplify nautilus'
    signal handler disconnection and reduce unneccessary code.
    
    Fixes: #1522

 eel/eel-canvas.c                              |  6 +-----
 eel/eel-canvas.h                              |  2 +-
 src/animation/egg-animation.c                 |  5 ++---
 src/animation/ide-box-theatric.c              |  9 +++------
 src/nautilus-compress-dialog-controller.c     |  9 ++-------
 src/nautilus-file-undo-manager.c              |  7 +------
 src/nautilus-files-view.c                     | 18 ++++--------------
 src/nautilus-new-folder-dialog-controller.c   |  9 ++-------
 src/nautilus-pathbar.c                        | 14 +++++---------
 src/nautilus-rename-file-popover-controller.c | 26 ++++++--------------------
 src/nautilus-trash-bar.c                      |  6 +-----
 src/nautilus-tree-view-drag-dest.c            |  8 +++-----
 src/nautilus-window-slot.c                    | 24 ++++--------------------
 src/nautilus-window.c                         | 11 +++--------
 14 files changed, 38 insertions(+), 116 deletions(-)
---
diff --git a/eel/eel-canvas.c b/eel/eel-canvas.c
index e3ccfbd5d..de3902f6b 100644
--- a/eel/eel-canvas.c
+++ b/eel/eel-canvas.c
@@ -2248,11 +2248,7 @@ eel_canvas_destroy (GtkWidget *object)
 
     canvas = EEL_CANVAS (object);
 
-    if (canvas->root_destroy_id)
-    {
-        g_signal_handler_disconnect (G_OBJECT (canvas->root), canvas->root_destroy_id);
-        canvas->root_destroy_id = 0;
-    }
+    g_clear_signal_handler (&canvas->root_destroy_id, G_OBJECT (canvas->root));
     if (canvas->root)
     {
         EelCanvasItem *root = canvas->root;
diff --git a/eel/eel-canvas.h b/eel/eel-canvas.h
index 62e50a857..f406ca0a4 100644
--- a/eel/eel-canvas.h
+++ b/eel/eel-canvas.h
@@ -355,7 +355,7 @@ struct _EelCanvas {
        guint idle_id;
 
        /* Signal handler ID for destruction of the root item */
-       guint root_destroy_id;
+       gulong root_destroy_id;
 
        /* Internal pixel offsets when zoomed out */
        int zoom_xofs, zoom_yofs;
diff --git a/src/animation/egg-animation.c b/src/animation/egg-animation.c
index c8b025874..7ceba88c4 100644
--- a/src/animation/egg-animation.c
+++ b/src/animation/egg-animation.c
@@ -675,9 +675,8 @@ egg_animation_stop (EggAnimation *animation)
       if (animation->frame_clock)
         {
           gdk_frame_clock_end_updating (animation->frame_clock);
-          g_signal_handler_disconnect (animation->frame_clock, animation->tween_handler);
-          g_signal_handler_disconnect (animation->frame_clock, animation->after_paint_handler);
-          animation->tween_handler = 0;
+          g_clear_signal_handler (&animation->tween_handler, animation->frame_clock);
+          g_clear_signal_handler (&animation->after_paint_handler, animation->frame_clock);
         }
       else
         {
diff --git a/src/animation/ide-box-theatric.c b/src/animation/ide-box-theatric.c
index cad8d4a44..1e882eae8 100644
--- a/src/animation/ide-box-theatric.c
+++ b/src/animation/ide-box-theatric.c
@@ -40,7 +40,7 @@ struct _IdeBoxTheatric
   GdkRGBA          background_rgba;
   gdouble          alpha;
 
-  guint            draw_handler;
+  gulong           draw_handler;
 
   guint            background_set : 1;
   guint            pixbuf_failed : 1;
@@ -194,11 +194,8 @@ ide_box_theatric_dispose (GObject *object)
 
   if (self->target)
     {
-      if (self->draw_handler && self->toplevel)
-        {
-          g_signal_handler_disconnect (self->toplevel, self->draw_handler);
-          self->draw_handler = 0;
-        }
+      if (self->toplevel)
+        g_clear_signal_handler (&self->draw_handler, self->toplevel);
       g_object_remove_weak_pointer (G_OBJECT (self->target),
                                     (gpointer *) &self->target);
       self->target = NULL;
diff --git a/src/nautilus-compress-dialog-controller.c b/src/nautilus-compress-dialog-controller.c
index 34caaf013..d8aa792ee 100644
--- a/src/nautilus-compress-dialog-controller.c
+++ b/src/nautilus-compress-dialog-controller.c
@@ -39,7 +39,7 @@ struct _NautilusCompressDialogController
 
     const char *extension;
 
-    gint response_handler_id;
+    gulong response_handler_id;
 };
 
 G_DEFINE_TYPE (NautilusCompressDialogController, nautilus_compress_dialog_controller, 
NAUTILUS_TYPE_FILE_NAME_WIDGET_CONTROLLER);
@@ -329,12 +329,7 @@ nautilus_compress_dialog_controller_finalize (GObject *object)
 
     if (self->compress_dialog != NULL)
     {
-        if (self->response_handler_id > 0)
-        {
-            g_signal_handler_disconnect (self->compress_dialog,
-                                         self->response_handler_id);
-            self->response_handler_id = 0;
-        }
+        g_clear_signal_handler (&self->response_handler_id, self->compress_dialog);
         gtk_widget_destroy (self->compress_dialog);
         self->compress_dialog = NULL;
     }
diff --git a/src/nautilus-file-undo-manager.c b/src/nautilus-file-undo-manager.c
index 9ef6b1d79..2a886176f 100644
--- a/src/nautilus-file-undo-manager.c
+++ b/src/nautilus-file-undo-manager.c
@@ -109,12 +109,7 @@ nautilus_file_undo_manager_finalize (GObject *object)
 {
     NautilusFileUndoManager *self = NAUTILUS_FILE_UNDO_MANAGER (object);
 
-    if (self->trash_signal_id != 0)
-    {
-        g_signal_handler_disconnect (nautilus_trash_monitor_get (),
-                                     self->trash_signal_id);
-        self->trash_signal_id = 0;
-    }
+    g_clear_signal_handler (&self->trash_signal_id, nautilus_trash_monitor_get ());
 
     file_undo_manager_clear (self);
 
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
index 5be047781..75ed250b8 100644
--- a/src/nautilus-files-view.c
+++ b/src/nautilus-files-view.c
@@ -277,8 +277,8 @@ typedef struct
     GCancellable *starred_cancellable;
     NautilusTagManager *tag_manager;
 
-    gint name_accepted_handler_id;
-    gint cancelled_handler_id;
+    gulong name_accepted_handler_id;
+    gulong cancelled_handler_id;
 } NautilusFilesViewPrivate;
 
 /**
@@ -1969,18 +1969,8 @@ disconnect_rename_controller_signals (NautilusFilesView *self)
 
     priv = nautilus_files_view_get_instance_private (self);
 
-    if (priv->name_accepted_handler_id != 0)
-    {
-        g_signal_handler_disconnect (priv->rename_file_controller, priv->name_accepted_handler_id);
-        priv->name_accepted_handler_id = 0;
-    }
-
-    if (priv->cancelled_handler_id != 0)
-    {
-        g_signal_handler_disconnect (priv->rename_file_controller,
-                                     priv->cancelled_handler_id);
-        priv->cancelled_handler_id = 0;
-    }
+    g_clear_signal_handler (&priv->name_accepted_handler_id, priv->rename_file_controller);
+    g_clear_signal_handler (&priv->cancelled_handler_id, priv->rename_file_controller);
 }
 
 static void
diff --git a/src/nautilus-new-folder-dialog-controller.c b/src/nautilus-new-folder-dialog-controller.c
index 99dcc2f23..17406a016 100644
--- a/src/nautilus-new-folder-dialog-controller.c
+++ b/src/nautilus-new-folder-dialog-controller.c
@@ -32,7 +32,7 @@ struct _NautilusNewFolderDialogController
 
     gboolean with_selection;
 
-    gint response_handler_id;
+    gulong response_handler_id;
 };
 
 G_DEFINE_TYPE (NautilusNewFolderDialogController, nautilus_new_folder_dialog_controller, 
NAUTILUS_TYPE_FILE_NAME_WIDGET_CONTROLLER)
@@ -171,12 +171,7 @@ nautilus_new_folder_dialog_controller_finalize (GObject *object)
 
     if (self->new_folder_dialog != NULL)
     {
-        if (self->response_handler_id)
-        {
-            g_signal_handler_disconnect (self->new_folder_dialog,
-                                         self->response_handler_id);
-            self->response_handler_id = 0;
-        }
+        g_clear_signal_handler (&self->response_handler_id, self->new_folder_dialog);
         gtk_widget_destroy (self->new_folder_dialog);
         self->new_folder_dialog = NULL;
     }
diff --git a/src/nautilus-pathbar.c b/src/nautilus-pathbar.c
index d59bb0d34..edc0fff56 100644
--- a/src/nautilus-pathbar.c
+++ b/src/nautilus-pathbar.c
@@ -93,7 +93,7 @@ struct _NautilusPathBar
     gpointer current_button_data;
 
     GList *button_list;
-    guint settings_signal_id;
+    gulong settings_signal_id;
 
     GActionGroup *action_group;
 
@@ -285,15 +285,11 @@ static void
 remove_settings_signal (NautilusPathBar *self,
                         GdkScreen       *screen)
 {
-    if (self->settings_signal_id != 0)
-    {
-        GtkSettings *settings;
+    GtkSettings *settings;
 
-        settings = gtk_settings_get_for_screen (screen);
-        g_signal_handler_disconnect (settings,
-                                     self->settings_signal_id);
-        self->settings_signal_id = 0;
-    }
+    settings = gtk_settings_get_for_screen (screen);
+
+    g_clear_signal_handler (&self->settings_signal_id, settings);
 }
 
 static void
diff --git a/src/nautilus-rename-file-popover-controller.c b/src/nautilus-rename-file-popover-controller.c
index c1c049dab..903b54ff4 100644
--- a/src/nautilus-rename-file-popover-controller.c
+++ b/src/nautilus-rename-file-popover-controller.c
@@ -41,9 +41,9 @@ struct _NautilusRenameFilePopoverController
     GtkWidget *name_entry;
     GtkWidget *name_label;
 
-    gint closed_handler_id;
-    gint file_changed_handler_id;
-    gint key_press_event_handler_id;
+    gulong closed_handler_id;
+    gulong file_changed_handler_id;
+    gulong key_press_event_handler_id;
 };
 
 G_DEFINE_TYPE (NautilusRenameFilePopoverController, nautilus_rename_file_popover_controller, 
NAUTILUS_TYPE_FILE_NAME_WIDGET_CONTROLLER)
@@ -53,23 +53,9 @@ disconnect_signal_handlers (NautilusRenameFilePopoverController *self)
 {
     g_assert (NAUTILUS_IS_RENAME_FILE_POPOVER_CONTROLLER (self));
 
-    if (self->closed_handler_id != 0)
-    {
-        g_signal_handler_disconnect (self->rename_file_popover, self->closed_handler_id);
-        self->closed_handler_id = 0;
-    }
-
-    if (self->file_changed_handler_id != 0)
-    {
-        g_signal_handler_disconnect (self->target_file, self->file_changed_handler_id);
-        self->file_changed_handler_id = 0;
-    }
-
-    if (self->key_press_event_handler_id != 0)
-    {
-        g_signal_handler_disconnect (self->name_entry, self->key_press_event_handler_id);
-        self->key_press_event_handler_id = 0;
-    }
+    g_clear_signal_handler (&self->closed_handler_id, self->rename_file_popover);
+    g_clear_signal_handler (&self->file_changed_handler_id, self->target_file);
+    g_clear_signal_handler (&self->key_press_event_handler_id, self->name_entry);
 }
 
 static void
diff --git a/src/nautilus-trash-bar.c b/src/nautilus-trash-bar.c
index 8c63333d2..fefb05cc5 100644
--- a/src/nautilus-trash-bar.c
+++ b/src/nautilus-trash-bar.c
@@ -109,11 +109,7 @@ nautilus_trash_bar_dispose (GObject *obj)
 {
     NautilusTrashBar *bar = NAUTILUS_TRASH_BAR (obj);
 
-    if (bar->selection_handler_id)
-    {
-        g_signal_handler_disconnect (bar->view, bar->selection_handler_id);
-        bar->selection_handler_id = 0;
-    }
+    g_clear_signal_handler (&bar->selection_handler_id, bar->view);
 
     G_OBJECT_CLASS (nautilus_trash_bar_parent_class)->dispose (obj);
 }
diff --git a/src/nautilus-tree-view-drag-dest.c b/src/nautilus-tree-view-drag-dest.c
index c32f86568..379693ffd 100644
--- a/src/nautilus-tree-view-drag-dest.c
+++ b/src/nautilus-tree-view-drag-dest.c
@@ -55,7 +55,7 @@ struct _NautilusTreeViewDragDestDetails
     GList *drag_list;
 
     guint hover_id;
-    guint highlight_id;
+    gulong highlight_id;
     guint scroll_id;
     guint expand_id;
 
@@ -216,11 +216,9 @@ static void
 set_widget_highlight (NautilusTreeViewDragDest *dest,
                       gboolean                  highlight)
 {
-    if (!highlight && dest->details->highlight_id)
+    if (!highlight)
     {
-        g_signal_handler_disconnect (dest->details->tree_view,
-                                     dest->details->highlight_id);
-        dest->details->highlight_id = 0;
+        g_clear_signal_handler (&dest->details->highlight_id, dest->details->tree_view);
         gtk_widget_queue_draw (GTK_WIDGET (dest->details->tree_view));
     }
 
diff --git a/src/nautilus-window-slot.c b/src/nautilus-window-slot.c
index 0808496d2..3bf011519 100644
--- a/src/nautilus-window-slot.c
+++ b/src/nautilus-window-slot.c
@@ -477,26 +477,10 @@ hide_query_editor (NautilusWindowSlot *self)
     priv = nautilus_window_slot_get_instance_private (self);
     view = nautilus_window_slot_get_current_view (self);
 
-    if (priv->qe_changed_id > 0)
-    {
-        g_signal_handler_disconnect (priv->query_editor, priv->qe_changed_id);
-        priv->qe_changed_id = 0;
-    }
-    if (priv->qe_cancel_id > 0)
-    {
-        g_signal_handler_disconnect (priv->query_editor, priv->qe_cancel_id);
-        priv->qe_cancel_id = 0;
-    }
-    if (priv->qe_activated_id > 0)
-    {
-        g_signal_handler_disconnect (priv->query_editor, priv->qe_activated_id);
-        priv->qe_activated_id = 0;
-    }
-    if (priv->qe_focus_view_id > 0)
-    {
-        g_signal_handler_disconnect (priv->query_editor, priv->qe_focus_view_id);
-        priv->qe_focus_view_id = 0;
-    }
+    g_clear_signal_handler (&priv->qe_changed_id, priv->query_editor);
+    g_clear_signal_handler (&priv->qe_cancel_id, priv->query_editor);
+    g_clear_signal_handler (&priv->qe_activated_id, priv->query_editor);
+    g_clear_signal_handler (&priv->qe_focus_view_id, priv->query_editor);
 
     nautilus_query_editor_set_query (priv->query_editor, NULL);
 
diff --git a/src/nautilus-window.c b/src/nautilus-window.c
index b1685b5b0..1723d8a81 100644
--- a/src/nautilus-window.c
+++ b/src/nautilus-window.c
@@ -146,7 +146,7 @@ struct _NautilusWindow
     gchar *export_handle;
 
     guint sidebar_width_handler_id;
-    guint bookmarks_id;
+    gulong bookmarks_id;
 
     GQueue *tab_data_queue;
 
@@ -2293,6 +2293,7 @@ nautilus_window_destroy (GtkWidget *object)
     GList *slots_copy;
 
     window = NAUTILUS_WINDOW (object);
+    application = NAUTILUS_APPLICATION (gtk_window_get_application (GTK_WINDOW (window)));
 
     DEBUG ("Destroying window");
 
@@ -2312,13 +2313,7 @@ nautilus_window_destroy (GtkWidget *object)
 
     window->active_slot = NULL;
 
-    if (window->bookmarks_id != 0)
-    {
-        application = NAUTILUS_APPLICATION (gtk_window_get_application (GTK_WINDOW (window)));
-        g_signal_handler_disconnect (nautilus_application_get_bookmarks (application),
-                                     window->bookmarks_id);
-        window->bookmarks_id = 0;
-    }
+    g_clear_signal_handler (&window->bookmarks_id, nautilus_application_get_bookmarks (application));
 
     g_clear_handle_id (&window->in_app_notification_undo_timeout_id, g_source_remove);
 


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