summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk/gtkentrycompletion.c128
1 files changed, 12 insertions, 116 deletions
diff --git a/gtk/gtkentrycompletion.c b/gtk/gtkentrycompletion.c
index c81924a4be..96c4f5645b 100644
--- a/gtk/gtkentrycompletion.c
+++ b/gtk/gtkentrycompletion.c
@@ -117,14 +117,6 @@ enum
static void gtk_entry_completion_cell_layout_init (GtkCellLayoutIface *iface);
-static GList * gtk_entry_completion_get_cells (GtkCellLayout *cell_layout);
-static void gtk_entry_completion_clear (GtkCellLayout *cell_layout);
-static void gtk_entry_completion_pack_start (GtkCellLayout *cell_layout,
- GtkCellRenderer *cell,
- gboolean expand);
-static void gtk_entry_completion_pack_end (GtkCellLayout *cell_layout,
- GtkCellRenderer *cell,
- gboolean expand);
static GtkCellArea* gtk_entry_completion_get_area (GtkCellLayout *cell_layout);
static GObject *gtk_entry_completion_constructor (GType type,
@@ -485,10 +477,6 @@ gtk_entry_completion_buildable_init (GtkBuildableIface *iface)
static void
gtk_entry_completion_cell_layout_init (GtkCellLayoutIface *iface)
{
- iface->get_cells = gtk_entry_completion_get_cells;
- iface->clear = gtk_entry_completion_clear;
- iface->pack_start = gtk_entry_completion_pack_start;
- iface->pack_end = gtk_entry_completion_pack_end;
iface->get_area = gtk_entry_completion_get_area;
}
@@ -825,73 +813,7 @@ gtk_entry_completion_dispose (GObject *object)
G_OBJECT_CLASS (gtk_entry_completion_parent_class)->dispose (object);
}
-static void
-gtk_entry_completion_clear_text_column_renderer (GtkEntryCompletion *completion)
-{
- if (completion->priv->text_column != -1)
- {
- gtk_cell_layout_clear (GTK_CELL_LAYOUT (completion));
- completion->priv->text_column = -1;
- g_object_notify (G_OBJECT (completion), "text_column");
- }
-}
-
-static GList *
-gtk_entry_completion_get_cells (GtkCellLayout *cell_layout)
-{
- GtkEntryCompletion *completion = GTK_ENTRY_COMPLETION (cell_layout);
-
- if (completion->priv->text_column == -1)
- {
- GtkCellArea *area;
-
- area = gtk_entry_completion_get_area (cell_layout);
- return gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (area));
- }
- else
- {
- /* Don't expose the internally created cell renderer */
- return NULL;
- }
-}
-
-static void
-gtk_entry_completion_clear (GtkCellLayout *cell_layout)
-{
- GtkCellArea *area;
-
- gtk_entry_completion_clear_text_column_renderer (GTK_ENTRY_COMPLETION (cell_layout));
-
- area = gtk_entry_completion_get_area (cell_layout);
- gtk_cell_layout_clear (GTK_CELL_LAYOUT (area));
-}
-
-static void
-gtk_entry_completion_pack_start (GtkCellLayout *cell_layout,
- GtkCellRenderer *cell,
- gboolean expand)
-{
- GtkCellArea *area;
-
- gtk_entry_completion_clear_text_column_renderer (GTK_ENTRY_COMPLETION (cell_layout));
-
- area = gtk_entry_completion_get_area (cell_layout);
- gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (area), cell, expand);
-}
-
-static void
-gtk_entry_completion_pack_end (GtkCellLayout *cell_layout,
- GtkCellRenderer *cell,
- gboolean expand)
-{
- GtkCellArea *area;
-
- gtk_entry_completion_clear_text_column_renderer (GTK_ENTRY_COMPLETION (cell_layout));
-
- area = gtk_entry_completion_get_area (cell_layout);
- gtk_cell_layout_pack_end (GTK_CELL_LAYOUT (area), cell, expand);
-}
-
+/* implement cell layout interface (only need to return the underlying cell area) */
static GtkCellArea*
gtk_entry_completion_get_area (GtkCellLayout *cell_layout)
{
@@ -1470,12 +1392,10 @@ gtk_entry_completion_delete_action (GtkEntryCompletion *completion,
* to have a list displaying all (and just) strings in the completion list,
* and to get those strings from @column in the model of @completion.
*
- * Any cell renderers that were added to @completion before calling this
- * function will be removed.
- *
- * Conversely, the cell renderer created by this function will be
- * removed when new renderers are added to @completion with
- * gtk_cell_layout_pack_start() or gtk_cell_layout_pack_end().
+ * This functions creates and adds a #GtkCellRendererText for the selected
+ * column. If you need to set the text column, but don't want the cell
+ * renderer, use g_object_set() to set the #GtkEntryCompletion:text-column
+ * property directly.
*
* Since: 2.4
*/
@@ -1488,39 +1408,15 @@ gtk_entry_completion_set_text_column (GtkEntryCompletion *completion,
g_return_if_fail (GTK_IS_ENTRY_COMPLETION (completion));
g_return_if_fail (column >= 0);
- /* clear manually set cell renderers */
- if (completion->priv->text_column == -1)
- gtk_cell_layout_clear (GTK_CELL_LAYOUT (completion));
-
- if (completion->priv->text_column >= 0)
- {
- GtkCellArea *area;
- GList *cells;
-
- /* Call get_cells() on the internal area instead of on completion,
- * because completion returns NULL for when the renderer is
- * internal (i.e., was added by this function).
- */
- area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (completion));
- cells = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (area));
- g_assert (cells);
-
- cell = cells->data;
-
- g_list_free (cells);
- }
- else
- {
- cell = gtk_cell_renderer_text_new ();
- gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (completion),
- cell, TRUE);
- }
+ completion->priv->text_column = column;
- gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (completion), cell,
- "text", column,
- NULL);
+ cell = gtk_cell_renderer_text_new ();
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (completion),
+ cell, TRUE);
+ gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (completion),
+ cell,
+ "text", column);
- completion->priv->text_column = column;
g_object_notify (G_OBJECT (completion), "text-column");
}