]> Pileus Git - ~andy/gtk/commitdiff
Add internal accessor for GtkEntry->is_cell_renderer
authorJavier Jardón <jjardon@gnome.org>
Sat, 27 Nov 2010 03:38:17 +0000 (04:38 +0100)
committerJavier Jardón <jjardon@gnome.org>
Sun, 5 Dec 2010 03:06:02 +0000 (22:06 -0500)
This fixes commit fb3429e5072508570d78dcc7cccb6ef425586bb2

gtk/gtkcombobox.c
gtk/gtkentry.c
gtk/gtkentryprivate.h

index 0cf07377b001977bd5093e8786db3972b2ad87c7..4775fe930d01ad81dbc0308d081dc714af4d8c6d 100644 (file)
@@ -50,6 +50,7 @@
 #include "gtkmarshalers.h"
 #include "gtkintl.h"
 
+#include "gtkentryprivate.h"
 #include "gtktreeprivate.h"
 
 
@@ -1495,6 +1496,10 @@ gtk_combo_box_add (GtkContainer *container,
 
   if (priv->has_entry)
     {
+      /* this flag is a hack to tell the entry to fill its allocation.
+       */
+      _gtk_entry_set_is_cell_renderer (GTK_ENTRY (widget), TRUE);
+
       g_signal_connect (widget, "changed",
                        G_CALLBACK (gtk_combo_box_entry_contents_changed),
                        combo_box);
@@ -1522,6 +1527,7 @@ gtk_combo_box_remove (GtkContainer *container,
          g_signal_handlers_disconnect_by_func (widget,
                                                gtk_combo_box_entry_contents_changed,
                                                container);
+          _gtk_entry_set_is_cell_renderer (GTK_ENTRY (widget), FALSE);
        }
     }
 
index 2e584762e0a665de663fa78b903ae3ffb30648d9..4eb96a34e8c35a767f10044480e7ea112f807b8b 100644 (file)
@@ -10216,3 +10216,21 @@ keymap_state_changed (GdkKeymap *keymap,
   else
     remove_capslock_feedback (entry);
 }
+
+/*
+ * _gtk_entry_set_is_cell_renderer:
+ * @entry: a #GtkEntry
+ * @is_cell_renderer: new value
+ *
+ * This is a helper function for GtkComboBox. A GtkEntry in a GtkComboBox
+ * is supposed to behave like a GtkCellEditable when placed in a combo box.
+ *
+ * I.e take up it's allocation and get GtkEntry->is_cell_renderer = TRUE.
+ *
+ */
+void
+_gtk_entry_set_is_cell_renderer (GtkEntry *entry,
+                                 gboolean  is_cell_renderer)
+{
+  entry->priv->is_cell_renderer = is_cell_renderer;
+}
index 63a5cd02c248c7ce1b7ac6aad4beda3323ac145e..01c2c7d014173885badef06a1be914188905ea5a 100644 (file)
@@ -85,6 +85,10 @@ void     _gtk_entry_effective_inner_border (GtkEntry  *entry,
                                            GtkBorder *border);
 void     _gtk_entry_reset_im_context       (GtkEntry  *entry);
 GtkIMContext* _gtk_entry_get_im_context    (GtkEntry  *entry);
+void     _gtk_entry_set_is_cell_renderer   (GtkEntry  *entry,
+                                            gboolean   is_cell_renderer);
+
+
 G_END_DECLS
 
 #endif /* __GTK_ENTRY_PRIVATE_H__ */