]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkcellrenderertext.c
Fix DND with frame sync
[~andy/gtk] / gtk / gtkcellrenderertext.c
index e6e663a08b82179a9375eac91f0672493f8fd989..3399bb2be0450e7f63164e1200b3fb9b4a7e9a00 100644 (file)
@@ -731,7 +731,7 @@ gtk_cell_renderer_text_class_init (GtkCellRendererTextClass *class)
 
   g_type_class_add_private (object_class, sizeof (GtkCellRendererTextPrivate));
 
-  _gtk_cell_renderer_class_set_accessible_type (cell_class, GTK_TYPE_TEXT_CELL_ACCESSIBLE);
+  gtk_cell_renderer_class_set_accessible_type (cell_class, GTK_TYPE_TEXT_CELL_ACCESSIBLE);
 }
 
 static void
@@ -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);
 }
 
@@ -1768,7 +1770,7 @@ get_size (GtkCellRenderer    *cell,
       style_context = gtk_widget_get_style_context (widget);
       state = gtk_widget_get_state_flags (widget);
 
-      font_desc = pango_font_description_copy_static (gtk_style_context_get_font (style_context, state));
+      gtk_style_context_get (style_context, state, "font", &font_desc, NULL);
       pango_font_description_merge_static (font_desc, priv->font, TRUE);
 
       if (priv->scale_set)
@@ -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);