[gtk+] gtkcellrenderertext: Sink floating entry before using as signal argument



commit 283c9746808fed7b219e57b056cad8cc5fc7bb88
Author: Simon Feltman <sfeltman src gnome org>
Date:   Thu Feb 7 23:03:52 2013 -0800

    gtkcellrenderertext: Sink floating entry before using as signal argument
    
    Sink the GtkEntry assigned to the private structure of GtkCellRendererText
    before signals containing it as an argument are sent out. This keeps
    language bindings from sinking the reference and then destroying the entry
    when the signal closure is finished.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=693400

 gtk/gtkcellrenderertext.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)
---
diff --git a/gtk/gtkcellrenderertext.c b/gtk/gtkcellrenderertext.c
index fcb3f1b..31b0413 100644
--- a/gtk/gtkcellrenderertext.c
+++ b/gtk/gtkcellrenderertext.c
@@ -751,6 +751,8 @@ gtk_cell_renderer_text_finalize (GObject *object)
   if (priv->language)
     g_object_unref (priv->language);
 
+  g_clear_object (&priv->entry);
+
   G_OBJECT_CLASS (gtk_cell_renderer_text_parent_class)->finalize (object);
 }
 
@@ -1915,7 +1917,7 @@ gtk_cell_renderer_text_editing_done (GtkCellEditable *entry,
 
   priv = GTK_CELL_RENDERER_TEXT (data)->priv;
 
-  priv->entry = NULL;
+  g_clear_object (&priv->entry);
 
   if (priv->focus_out_id > 0)
     {
@@ -2047,6 +2049,8 @@ gtk_cell_renderer_text_start_editing (GtkCellRenderer      *cell,
   gtk_cell_renderer_get_alignment (cell, &xalign, &yalign);
 
   priv->entry = gtk_entry_new ();
+  g_object_ref_sink (G_OBJECT (priv->entry));
+
   gtk_entry_set_has_frame (GTK_ENTRY (priv->entry), FALSE);
   gtk_entry_set_alignment (GTK_ENTRY (priv->entry), xalign);
 


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