[gnome-photos] preview-nav-buttons: Hold references on internal widgets



commit 84f52a53ec0050f230b4d9abfd95a11278a63137
Author: Sparsh Paliwal <sparshpaliwal123 gmail com>
Date:   Mon Dec 14 20:16:22 2015 +0100

    preview-nav-buttons: Hold references on internal widgets
    
    Even though we keep the class alive across the timeout and idle
    sources, the widgets are destroyed as soon as their parent GtkOverlay
    is destroyed. Therefore, if fade_out_button is called just after the
    widgets have been destroyed during shutdown, we get a crash.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=746940

 src/photos-preview-nav-buttons.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)
---
diff --git a/src/photos-preview-nav-buttons.c b/src/photos-preview-nav-buttons.c
index f4ad411..f67a610 100644
--- a/src/photos-preview-nav-buttons.c
+++ b/src/photos-preview-nav-buttons.c
@@ -370,6 +370,8 @@ photos_preview_nav_buttons_dispose (GObject *object)
 
   g_clear_object (&priv->tap_gesture);
   g_clear_object (&priv->model);
+  g_clear_object (&priv->next_widget);
+  g_clear_object (&priv->prev_widget);
   g_clear_object (&priv->item_mngr);
   g_clear_object (&priv->mode_cntrlr);
 
@@ -400,7 +402,7 @@ photos_preview_nav_buttons_constructed (GObject *object)
 
   G_OBJECT_CLASS (photos_preview_nav_buttons_parent_class)->constructed (object);
 
-  priv->prev_widget = gtk_revealer_new ();
+  priv->prev_widget = g_object_ref_sink (gtk_revealer_new ());
   gtk_widget_set_halign (priv->prev_widget, GTK_ALIGN_START);
   gtk_widget_set_margin_start (priv->prev_widget, 30);
   gtk_widget_set_margin_end (priv->prev_widget, 30);
@@ -426,7 +428,7 @@ photos_preview_nav_buttons_constructed (GObject *object)
                             G_CALLBACK (photos_preview_nav_buttons_leave_notify),
                             self);
 
-  priv->next_widget = gtk_revealer_new ();
+  priv->next_widget = g_object_ref_sink (gtk_revealer_new ());
   gtk_widget_set_halign (priv->next_widget, GTK_ALIGN_END);
   gtk_widget_set_margin_start (priv->next_widget, 30);
   gtk_widget_set_margin_end (priv->next_widget, 30);


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