summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
authorJavier Jardón <jjardon@gnome.org>2010-11-27 04:38:17 +0100
committerJavier Jardón <jjardon@gnome.org>2010-12-04 22:06:02 -0500
commitd351b40a0bd9ee247c5f64858c377378a1eccdbe (patch)
tree281f93a2ae04b4df90337d7c1fded6c633bfe8f9 /gtk
parent5fdc140dd8f86bdcd25ec6b596b6c92ddfe661ed (diff)
downloadgtk+-d351b40a0bd9ee247c5f64858c377378a1eccdbe.tar.gz
Add internal accessor for GtkEntry->is_cell_renderer
This fixes commit fb3429e5072508570d78dcc7cccb6ef425586bb2
Diffstat (limited to 'gtk')
-rw-r--r--gtk/gtkcombobox.c6
-rw-r--r--gtk/gtkentry.c18
-rw-r--r--gtk/gtkentryprivate.h4
3 files changed, 28 insertions, 0 deletions
diff --git a/gtk/gtkcombobox.c b/gtk/gtkcombobox.c
index 0cf07377b0..4775fe930d 100644
--- a/gtk/gtkcombobox.c
+++ b/gtk/gtkcombobox.c
@@ -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);
}
}
diff --git a/gtk/gtkentry.c b/gtk/gtkentry.c
index 2e584762e0..4eb96a34e8 100644
--- a/gtk/gtkentry.c
+++ b/gtk/gtkentry.c
@@ -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;
+}
diff --git a/gtk/gtkentryprivate.h b/gtk/gtkentryprivate.h
index 63a5cd02c2..01c2c7d014 100644
--- a/gtk/gtkentryprivate.h
+++ b/gtk/gtkentryprivate.h
@@ -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__ */