diff options
-rw-r--r-- | docs/reference/gtk/gtk-docs.sgml | 1 | ||||
-rw-r--r-- | docs/reference/gtk/gtk3-sections.txt | 27 | ||||
-rw-r--r-- | docs/reference/gtk/gtk3.types | 1 | ||||
-rw-r--r-- | gtk/Makefile.am | 2 | ||||
-rw-r--r-- | gtk/gtk.h | 1 | ||||
-rw-r--r-- | gtk/gtk.symbols | 19 | ||||
-rw-r--r-- | gtk/gtkbuilder.c | 1 | ||||
-rw-r--r-- | gtk/gtkcombobox.c | 239 | ||||
-rw-r--r-- | gtk/gtkcombobox.h | 20 | ||||
-rw-r--r-- | gtk/gtkcomboboxentry.c | 529 | ||||
-rw-r--r-- | gtk/gtkcomboboxentry.h | 81 |
11 files changed, 3 insertions, 918 deletions
diff --git a/docs/reference/gtk/gtk-docs.sgml b/docs/reference/gtk/gtk-docs.sgml index 146665e799..13d964de53 100644 --- a/docs/reference/gtk/gtk-docs.sgml +++ b/docs/reference/gtk/gtk-docs.sgml @@ -154,7 +154,6 @@ <title>Menus, Combo Box, Toolbar</title> <xi:include href="xml/gtkcombobox.xml" /> <xi:include href="xml/gtkcomboboxtext.xml" /> - <xi:include href="xml/gtkcomboboxentry.xml" /> <xi:include href="xml/gtkmenu.xml" /> <xi:include href="xml/gtkmenubar.xml" /> <xi:include href="xml/gtkmenuitem.xml" /> diff --git a/docs/reference/gtk/gtk3-sections.txt b/docs/reference/gtk/gtk3-sections.txt index c710838587..363e86afc8 100644 --- a/docs/reference/gtk/gtk3-sections.txt +++ b/docs/reference/gtk/gtk3-sections.txt @@ -781,12 +781,6 @@ gtk_combo_box_get_active_iter gtk_combo_box_set_active_iter gtk_combo_box_get_model gtk_combo_box_set_model -gtk_combo_box_new_text -gtk_combo_box_append_text -gtk_combo_box_insert_text -gtk_combo_box_prepend_text -gtk_combo_box_remove_text -gtk_combo_box_get_active_text gtk_combo_box_popup_for_device gtk_combo_box_popup gtk_combo_box_popdown @@ -817,27 +811,6 @@ gtk_combo_box_get_type </SECTION> <SECTION> -<FILE>gtkcomboboxentry</FILE> -<TITLE>GtkComboBoxEntry</TITLE> -GtkComboBoxEntry -gtk_combo_box_entry_new -gtk_combo_box_entry_new_with_model -gtk_combo_box_entry_new_text -gtk_combo_box_entry_set_text_column -gtk_combo_box_entry_get_text_column -<SUBSECTION Standard> -GTK_TYPE_COMBO_BOX_ENTRY -GTK_COMBO_BOX_ENTRY -GTK_COMBO_BOX_ENTRY_CLASS -GTK_IS_COMBO_BOX_ENTRY -GTK_IS_COMBO_BOX_ENTRY_CLASS -GTK_COMBO_BOX_ENTRY_GET_CLASS -<SUBSECTION Private> -GtkComboBoxEntryPrivate -gtk_combo_box_entry_get_type -</SECTION> - -<SECTION> <FILE>gtkcomboboxtext</FILE> <TITLE>GtkComboBoxText</TITLE> GtkComboBoxText diff --git a/docs/reference/gtk/gtk3.types b/docs/reference/gtk/gtk3.types index 2af1aaa7fc..5c78b15493 100644 --- a/docs/reference/gtk/gtk3.types +++ b/docs/reference/gtk/gtk3.types @@ -40,7 +40,6 @@ gtk_clipboard_get_type gtk_color_button_get_type gtk_color_selection_dialog_get_type gtk_color_selection_get_type -gtk_combo_box_entry_get_type gtk_combo_box_get_type gtk_combo_box_text_get_type gtk_container_get_type diff --git a/gtk/Makefile.am b/gtk/Makefile.am index 4943fb5041..05ee07b83f 100644 --- a/gtk/Makefile.am +++ b/gtk/Makefile.am @@ -187,7 +187,6 @@ gtk_public_h_sources = \ gtkcolorsel.h \ gtkcolorseldialog.h \ gtkcombobox.h \ - gtkcomboboxentry.h \ gtkcomboboxtext.h \ gtkcontainer.h \ gtkdebug.h \ @@ -446,7 +445,6 @@ gtk_base_c_sources = \ gtkcolorsel.c \ gtkcolorseldialog.c \ gtkcombobox.c \ - gtkcomboboxentry.c \ gtkcomboboxtext.c \ gtkcontainer.c \ gtkdialog.c \ @@ -71,7 +71,6 @@ #include <gtk/gtkcolorsel.h> #include <gtk/gtkcolorseldialog.h> #include <gtk/gtkcombobox.h> -#include <gtk/gtkcomboboxentry.h> #include <gtk/gtkcomboboxtext.h> #include <gtk/gtkcontainer.h> #include <gtk/gtkdebug.h> diff --git a/gtk/gtk.symbols b/gtk/gtk.symbols index b10ef1c53f..f9f0a22e4f 100644 --- a/gtk/gtk.symbols +++ b/gtk/gtk.symbols @@ -791,10 +791,8 @@ gtk_color_selection_dialog_get_color_selection #if IN_HEADER(__GTK_COMBO_BOX_H__) #if IN_FILE(__GTK_COMBO_BOX_C__) -gtk_combo_box_append_text gtk_combo_box_get_active gtk_combo_box_get_active_iter -gtk_combo_box_get_active_text gtk_combo_box_get_add_tearoffs gtk_combo_box_get_column_span_column gtk_combo_box_get_entry_text_column @@ -809,16 +807,12 @@ gtk_combo_box_get_button_sensitivity gtk_combo_box_get_title gtk_combo_box_get_type G_GNUC_CONST gtk_combo_box_get_wrap_width -gtk_combo_box_insert_text gtk_combo_box_new -gtk_combo_box_new_text gtk_combo_box_new_with_entry gtk_combo_box_new_with_model gtk_combo_box_popdown gtk_combo_box_popup gtk_combo_box_popup_for_device -gtk_combo_box_prepend_text -gtk_combo_box_remove_text gtk_combo_box_set_active gtk_combo_box_set_active_iter gtk_combo_box_set_add_tearoffs @@ -848,19 +842,6 @@ gtk_combo_box_text_remove #endif #endif -#if IN_HEADER(__GTK_COMBO_BOX_ENTRY_H__) -#if IN_FILE(__GTK_COMBO_BOX_ENTRY_C__) -#ifndef GTK_DISABLE_DEPRECATED -gtk_combo_box_entry_get_text_column -gtk_combo_box_entry_get_type G_GNUC_CONST -gtk_combo_box_entry_new -gtk_combo_box_entry_new_text -gtk_combo_box_entry_new_with_model -gtk_combo_box_entry_set_text_column -#endif -#endif -#endif - #if IN_HEADER(__GTK_CONTAINER_H__) #if IN_FILE(__GTK_CONTAINER_C__) gtk_container_add diff --git a/gtk/gtkbuilder.c b/gtk/gtkbuilder.c index 13c0f4b3c9..3a34fee99d 100644 --- a/gtk/gtkbuilder.c +++ b/gtk/gtkbuilder.c @@ -221,7 +221,6 @@ * <link linkend="GtkCellLayout-BUILDER-UI">GtkCellLayout</link>, * <link linkend="GtkColorSelectionDialog-BUILDER-UI">GtkColorSelectionDialog</link>, * <link linkend="GtkFontSelectionDialog-BUILDER-UI">GtkFontSelectionDialog</link>, - * <link linkend="GtkComboBoxEntry-BUILDER-UI">GtkComboBoxEntry</link>, * <link linkend="GtkExpander-BUILDER-UI">GtkExpander</link>, * <link linkend="GtkFrame-BUILDER-UI">GtkFrame</link>, * <link linkend="GtkListStore-BUILDER-UI">GtkListStore</link>, diff --git a/gtk/gtkcombobox.c b/gtk/gtkcombobox.c index 09e58999b0..69f6078f21 100644 --- a/gtk/gtkcombobox.c +++ b/gtk/gtkcombobox.c @@ -334,7 +334,6 @@ static void gtk_combo_box_set_active_internal (GtkComboBox *combo_box, GtkTreePath *path); static void gtk_combo_box_check_appearance (GtkComboBox *combo_box); -static gchar * gtk_combo_box_real_get_active_text (GtkComboBox *combo_box); static void gtk_combo_box_real_move_active (GtkComboBox *combo_box, GtkScrollType scroll); static void gtk_combo_box_real_popup (GtkComboBox *combo_box); @@ -552,8 +551,6 @@ gtk_combo_box_class_init (GtkComboBoxClass *klass) GtkWidgetClass *widget_class; GtkBindingSet *binding_set; - klass->get_active_text = gtk_combo_box_real_get_active_text; - container_class = (GtkContainerClass *)klass; container_class->forall = gtk_combo_box_forall; container_class->add = gtk_combo_box_add; @@ -587,10 +584,10 @@ gtk_combo_box_class_init (GtkComboBoxClass *klass) * * The changed signal is emitted when the active * item is changed. The can be due to the user selecting - * a different item from the list, or due to a + * a different item from the list, or due to a * call to gtk_combo_box_set_active_iter(). - * It will also be emitted while typing into a GtkComboBoxEntry, - * as well as when selecting an item from the GtkComboBoxEntry's list. + * It will also be emitted while typing into the entry of a combo box + * with an entry. * * Since: 2.4 */ @@ -5348,236 +5345,6 @@ gtk_combo_box_get_model (GtkComboBox *combo_box) return combo_box->priv->model; } - -/* convenience API for simple text combos */ - -/** - * gtk_combo_box_new_text: - * - * Convenience function which constructs a new text combo box, which is a - * #GtkComboBox just displaying strings. If you use this function to create - * a text combo box, you should only manipulate its data source with the - * following convenience functions: gtk_combo_box_append_text(), - * gtk_combo_box_insert_text(), gtk_combo_box_prepend_text() and - * gtk_combo_box_remove_text(). - * - * Return value: (transfer none): A new text combo box. - * - * Since: 2.4 - * - * Deprecated: 2.24: Use #GtkComboBoxText - */ -GtkWidget * -gtk_combo_box_new_text (void) -{ - GtkWidget *combo_box; - GtkCellRenderer *cell; - GtkListStore *store; - - store = gtk_list_store_new (1, G_TYPE_STRING); - combo_box = gtk_combo_box_new_with_model (GTK_TREE_MODEL (store)); - g_object_unref (store); - - cell = gtk_cell_renderer_text_new (); - gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_box), cell, TRUE); - gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo_box), cell, - "text", 0, - NULL); - - return combo_box; -} - -/** - * gtk_combo_box_append_text: - * @combo_box: A #GtkComboBox constructed using gtk_combo_box_new_text() - * @text: A string - * - * Appends @string to the list of strings stored in @combo_box. Note that - * you can only use this function with combo boxes constructed with - * gtk_combo_box_new_text(). - * - * Since: 2.4 - * - * Deprecated: 2.24: Use #GtkComboBoxText - */ -void -gtk_combo_box_append_text (GtkComboBox *combo_box, - const gchar *text) -{ - GtkTreeIter iter; - GtkListStore *store; - - g_return_if_fail (GTK_IS_COMBO_BOX (combo_box)); - g_return_if_fail (GTK_IS_LIST_STORE (combo_box->priv->model)); - g_return_if_fail (gtk_tree_model_get_column_type (combo_box->priv->model, 0) - == G_TYPE_STRING); - g_return_if_fail (text != NULL); - - store = GTK_LIST_STORE (combo_box->priv->model); - - gtk_list_store_append (store, &iter); - gtk_list_store_set (store, &iter, 0, text, -1); -} - -/** - * gtk_combo_box_insert_text: - * @combo_box: A #GtkComboBox constructed using gtk_combo_box_new_text() - * @position: An index to insert @text - * @text: A string - * - * Inserts @string at @position in the list of strings stored in @combo_box. - * Note that you can only use this function with combo boxes constructed - * with gtk_combo_box_new_text(). - * - * Since: 2.4 - * - * Deprecated: 2.24: Use #GtkComboBoxText - */ -void -gtk_combo_box_insert_text (GtkComboBox *combo_box, - gint position, - const gchar *text) -{ - GtkTreeIter iter; - GtkListStore *store; - - g_return_if_fail (GTK_IS_COMBO_BOX (combo_box)); - g_return_if_fail (GTK_IS_LIST_STORE (combo_box->priv->model)); - g_return_if_fail (position >= 0); - g_return_if_fail (gtk_tree_model_get_column_type (combo_box->priv->model, 0) - == G_TYPE_STRING); - g_return_if_fail (text != NULL); - - store = GTK_LIST_STORE (combo_box->priv->model); - - gtk_list_store_insert (store, &iter, position); - gtk_list_store_set (store, &iter, 0, text, -1); -} - -/** - * gtk_combo_box_prepend_text: - * @combo_box: A #GtkComboBox constructed with gtk_combo_box_new_text() - * @text: A string - * - * Prepends @string to the list of strings stored in @combo_box. Note that - * you can only use this function with combo boxes constructed with - * gtk_combo_box_new_text(). - * - * Since: 2.4 - * - * Deprecated: 2.24: Use #GtkComboBoxText - */ -void -gtk_combo_box_prepend_text (GtkComboBox *combo_box, - const gchar *text) -{ - GtkTreeIter iter; - GtkListStore *store; - - g_return_if_fail (GTK_IS_COMBO_BOX (combo_box)); - g_return_if_fail (GTK_IS_LIST_STORE (combo_box->priv->model)); - g_return_if_fail (gtk_tree_model_get_column_type (combo_box->priv->model, 0) - == G_TYPE_STRING); - g_return_if_fail (text != NULL); - - store = GTK_LIST_STORE (combo_box->priv->model); - - gtk_list_store_prepend (store, &iter); - gtk_list_store_set (store, &iter, 0, text, -1); -} - -/** - * gtk_combo_box_remove_text: - * @combo_box: A #GtkComboBox constructed with gtk_combo_box_new_text() - * @position: Index of the item to remove - * - * Removes the string at @position from @combo_box. Note that you can only use - * this function with combo boxes constructed with gtk_combo_box_new_text(). - * - * Since: 2.4 - * - * Deprecated: 2.24: Use #GtkComboBoxText - */ -void -gtk_combo_box_remove_text (GtkComboBox *combo_box, - gint position) -{ - GtkTreeIter iter; - GtkListStore *store; - - g_return_if_fail (GTK_IS_COMBO_BOX (combo_box)); - g_return_if_fail (GTK_IS_LIST_STORE (combo_box->priv->model)); - g_return_if_fail (gtk_tree_model_get_column_type (combo_box->priv->model, 0) - == G_TYPE_STRING); - g_return_if_fail (position >= 0); - - store = GTK_LIST_STORE (combo_box->priv->model); - - if (gtk_tree_model_iter_nth_child (combo_box->priv->model, &iter, - NULL, position)) - gtk_list_store_remove (store, &iter); -} - -/** - * gtk_combo_box_get_active_text: - * @combo_box: A #GtkComboBox constructed with gtk_combo_box_new_text() - * - * Returns the currently active string in @combo_box or %NULL if none - * is selected. - * - * Returns: a newly allocated string containing the currently active text. - * Must be freed with g_free(). - * - * Since: 2.6 - * - * Deprecated: 2.24: Use #GtkComboBoxText - */ -gchar * -gtk_combo_box_get_active_text (GtkComboBox *combo_box) -{ - GtkComboBoxClass *class; - - g_return_val_if_fail (GTK_IS_COMBO_BOX (combo_box), NULL); - - class = GTK_COMBO_BOX_GET_CLASS (combo_box); - - if (class->get_active_text) - return class->get_active_text (combo_box); - - return NULL; -} - -static gchar * -gtk_combo_box_real_get_active_text (GtkComboBox *combo_box) -{ - GtkTreeIter iter; - gchar *text = NULL; - - if (combo_box->priv->has_entry) - { - GtkBin *combo = GTK_BIN (combo_box); - GtkWidget *child; - - child = gtk_bin_get_child (combo); - if (child) - return g_strdup (gtk_entry_get_text (GTK_ENTRY (child))); - - return NULL; - } - else - { - g_return_val_if_fail (GTK_IS_LIST_STORE (combo_box->priv->model), NULL); - g_return_val_if_fail (gtk_tree_model_get_column_type (combo_box->priv->model, 0) - == G_TYPE_STRING, NULL); - - if (gtk_combo_box_get_active_iter (combo_box, &iter)) - gtk_tree_model_get (combo_box->priv->model, &iter, - 0, &text, -1); - - return text; - } -} - static void gtk_combo_box_real_move_active (GtkComboBox *combo_box, GtkScrollType scroll) diff --git a/gtk/gtkcombobox.h b/gtk/gtkcombobox.h index f5d64178e8..c5b6a3c1e0 100644 --- a/gtk/gtkcombobox.h +++ b/gtk/gtkcombobox.h @@ -56,9 +56,6 @@ struct _GtkComboBoxClass /* signals */ void (* changed) (GtkComboBox *combo_box); - /* vfuncs */ - gchar * (* get_active_text) (GtkComboBox *combo_box); - /* Padding for future expansion */ void (*_gtk_reserved1) (void); void (*_gtk_reserved2) (void); @@ -129,23 +126,6 @@ void gtk_combo_box_set_popup_fixed_width (GtkComboBox *combo gboolean fixed); gboolean gtk_combo_box_get_popup_fixed_width (GtkComboBox *combo_box); -#ifndef GTK_DISABLE_DEPRECATED - -/* convenience -- text */ -GtkWidget *gtk_combo_box_new_text (void); -void gtk_combo_box_append_text (GtkComboBox *combo_box, - const gchar *text); -void gtk_combo_box_insert_text (GtkComboBox *combo_box, - gint position, - const gchar *text); -void gtk_combo_box_prepend_text (GtkComboBox *combo_box, - const gchar *text); -void gtk_combo_box_remove_text (GtkComboBox *combo_box, - gint position); -gchar *gtk_combo_box_get_active_text (GtkComboBox *combo_box); - -#endif - /* programmatic control */ void gtk_combo_box_popup (GtkComboBox *combo_box); void gtk_combo_box_popup_for_device (GtkComboBox *combo_box, diff --git a/gtk/gtkcomboboxentry.c b/gtk/gtkcomboboxentry.c deleted file mode 100644 index f538c7274d..0000000000 --- a/gtk/gtkcomboboxentry.c +++ /dev/null @@ -1,529 +0,0 @@ -/* gtkcomboboxentry.c - * Copyright (C) 2002, 2003 Kristian Rietveld <kris@gtk.org> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#include "config.h" -#include <string.h> - -#undef GTK_DISABLE_DEPRECATED - -#include "gtkcomboboxentry.h" -#include "gtkcelllayout.h" - -#include "gtkentry.h" -#include "gtkcellrenderertext.h" - -#include "gtkprivate.h" -#include "gtkintl.h" -#include "gtkbuildable.h" - - -/** - * SECTION:gtkcomboboxentry - * @Short_description: A text entry field with a dropdown list - * @Title: GtkComboBoxEntry - * @See_also:#GtkComboBox - * - * A #GtkComboBoxEntry is a widget that allows the user to choose from a - * list of valid choices or enter a different value. It is very similar - * to a #GtkComboBox, but it displays the selected value in an entry to - * allow modifying it. - * - * In contrast to a #GtkComboBox, the underlying model of a #GtkComboBoxEntry - * must always have a text column (see gtk_combo_box_entry_set_text_column()), - * and the entry will show the content of the text column in the selected row. - * To get the text from the entry, use gtk_combo_box_get_active_text(). - * - * The changed signal will be emitted while typing into a GtkComboBoxEntry, - * as well as when selecting an item from the GtkComboBoxEntry's list. Use - * gtk_combo_box_get_active() or gtk_combo_box_get_active_iter() to discover - * whether an item was actually selected from the list. - * - * Connect to the activate signal of the GtkEntry (use gtk_bin_get_child()) - * to detect when the user actually finishes entering text. - * - * The convenience API to construct simple text-only #GtkComboBox<!-- -->es - * can also be used with #GtkComboBoxEntry<!-- -->s which have been constructed - * with gtk_combo_box_entry_new_text(). - * - * If you have special needs that go beyond a simple entry (e.g. input validation), - * it is possible to replace the child entry by a different widget using - * gtk_container_remove() and gtk_container_add(). - * - * <refsect2 id="GtkComboBoxEntry-BUILDER-UI"> - * <title>GtkComboBoxEntry as GtkBuildable</title> - * Beyond the <attributes> support that is shared by all - * <link linkend="GtkCellLayout-BUILDER-UI">GtkCellLayout</link> implementation, - * GtkComboBoxEntry makes the entry available in UI definitions as an internal - * child with name "entry". - * </refsect2> - */ - - -struct _GtkComboBoxEntryPrivate -{ - GtkCellRenderer *text_renderer; - gint text_column; -}; - -static void gtk_combo_box_entry_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec); -static void gtk_combo_box_entry_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec); -static void gtk_combo_box_entry_add (GtkContainer *container, - GtkWidget *child); -static void gtk_combo_box_entry_remove (GtkContainer *container, - GtkWidget *child); - -static gchar *gtk_combo_box_entry_get_active_text (GtkComboBox *combo_box); -static void gtk_combo_box_entry_active_changed (GtkComboBox *combo_box, - gpointer user_data); -static void gtk_combo_box_entry_contents_changed (GtkEntry *entry, - gpointer user_data); -static gboolean gtk_combo_box_entry_mnemonic_activate (GtkWidget *entry, - gboolean group_cycling); -static void gtk_combo_box_entry_grab_focus (GtkWidget *widget); -static void has_frame_changed (GtkComboBoxEntry *entry_box, - GParamSpec *pspec, - gpointer data); -static void gtk_combo_box_entry_buildable_interface_init (GtkBuildableIface *iface); -static GObject * gtk_combo_box_entry_buildable_get_internal_child (GtkBuildable *buildable, - GtkBuilder *builder, - const gchar *childname); - -enum -{ - PROP_0, - PROP_TEXT_COLUMN -}; - -G_DEFINE_TYPE_WITH_CODE (GtkComboBoxEntry, gtk_combo_box_entry, GTK_TYPE_COMBO_BOX, - G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE, - gtk_combo_box_entry_buildable_interface_init)) - -static void -gtk_combo_box_entry_class_init (GtkComboBoxEntryClass *klass) -{ - GObjectClass *object_class; - GtkWidgetClass *widget_class; - GtkContainerClass *container_class; - GtkComboBoxClass *combo_class; - - object_class = (GObjectClass *)klass; - object_class->set_property = gtk_combo_box_entry_set_property; - object_class->get_property = gtk_combo_box_entry_get_property; - - widget_class = (GtkWidgetClass *)klass; - widget_class->mnemonic_activate = gtk_combo_box_entry_mnemonic_activate; - widget_class->grab_focus = gtk_combo_box_entry_grab_focus; - - container_class = (GtkContainerClass *)klass; - container_class->add = gtk_combo_box_entry_add; - container_class->remove = gtk_combo_box_entry_remove; - - combo_class = (GtkComboBoxClass *)klass; - combo_class->get_active_text = gtk_combo_box_entry_get_active_text; - - g_object_class_install_property (object_class, - PROP_TEXT_COLUMN, - g_param_spec_int ("text-column", - P_("Text Column"), - P_("A column in the data source model to get the strings from"), - -1, - G_MAXINT, - -1, - GTK_PARAM_READWRITE)); - - g_type_class_add_private ((GObjectClass *) klass, - sizeof (GtkComboBoxEntryPrivate)); -} - -static void -gtk_combo_box_entry_init (GtkComboBoxEntry *entry_box) -{ - GtkWidget *entry; - - entry_box->priv = G_TYPE_INSTANCE_GET_PRIVATE (entry_box, - GTK_TYPE_COMBO_BOX_ENTRY, - GtkComboBoxEntryPrivate); - - entry_box->priv->text_column = -1; - - entry = gtk_entry_new (); - gtk_widget_show (entry); - gtk_container_add (GTK_CONTAINER (entry_box), entry); - - entry_box->priv->text_renderer = gtk_cell_renderer_text_new (); - gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (entry_box), - entry_box->priv->text_renderer, TRUE); - - gtk_combo_box_set_active (GTK_COMBO_BOX (entry_box), -1); - - g_signal_connect (entry_box, "changed", - G_CALLBACK (gtk_combo_box_entry_active_changed), NULL); - g_signal_connect (entry_box, "notify::has-frame", G_CALLBACK (has_frame_changed), NULL); -} - -static void -gtk_combo_box_entry_buildable_interface_init (GtkBuildableIface *iface) -{ - iface->get_internal_child = gtk_combo_box_entry_buildable_get_internal_child; -} - -static GObject * -gtk_combo_box_entry_buildable_get_internal_child (GtkBuildable *buildable, - GtkBuilder *builder, - const gchar *childname) -{ - if (strcmp (childname, "entry") == 0) - return G_OBJECT (gtk_bin_get_child (GTK_BIN (buildable))); - - return NULL; -} - -static void -gtk_combo_box_entry_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) -{ - GtkComboBoxEntry *entry_box = GTK_COMBO_BOX_ENTRY (object); - - switch (prop_id) - { - case PROP_TEXT_COLUMN: - gtk_combo_box_entry_set_text_column (entry_box, - g_value_get_int (value)); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -gtk_combo_box_entry_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) -{ - GtkComboBoxEntry *entry_box = GTK_COMBO_BOX_ENTRY (object); - - switch (prop_id) - { - case PROP_TEXT_COLUMN: - g_value_set_int (value, entry_box->priv->text_column); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -gtk_combo_box_entry_add (GtkContainer *container, - GtkWidget *child) -{ - GtkComboBoxEntry *entry_box = GTK_COMBO_BOX_ENTRY (container); - - if (!GTK_IS_ENTRY (child)) - { - g_warning ("Attempting to add a widget with type %s to a GtkComboBoxEntry " - "(need an instance of GtkEntry or of a subclass)", - G_OBJECT_TYPE_NAME (child)); - return; - } - - GTK_CONTAINER_CLASS (gtk_combo_box_entry_parent_class)->add (container, child); - - /* this flag is a hack to tell the entry to fill its allocation. - */ - GTK_ENTRY (child)->is_cell_renderer = TRUE; - - g_signal_connect (child, "changed", - G_CALLBACK (gtk_combo_box_entry_contents_changed), - entry_box); - has_frame_changed (entry_box, NULL, NULL); -} - -static void -gtk_combo_box_entry_remove (GtkContainer *container, - GtkWidget *child) -{ - GtkWidget *child_widget; - - child_widget = gtk_bin_get_child (GTK_BIN (container)); - if (child && child == child_widget) - { - g_signal_handlers_disconnect_by_func (child, - gtk_combo_box_entry_contents_changed, - container); - GTK_ENTRY (child)->is_cell_renderer = FALSE; - } - - GTK_CONTAINER_CLASS (gtk_combo_box_entry_parent_class)->remove (container, child); -} - -static void -gtk_combo_box_entry_active_changed (GtkComboBox *combo_box, - gpointer user_data) -{ - GtkComboBoxEntry *entry_box = GTK_COMBO_BOX_ENTRY (combo_box); - GtkTreeModel *model; - GtkTreeIter iter; - gchar *str = NULL; - - if (gtk_combo_box_get_active_iter (combo_box, &iter)) - { - GtkEntry *entry = GTK_ENTRY (gtk_bin_get_child (GTK_BIN (combo_box))); - - if (entry) - { - g_signal_handlers_block_by_func (entry, - gtk_combo_box_entry_contents_changed, - combo_box); - - model = gtk_combo_box_get_model (combo_box); - - gtk_tree_model_get (model, &iter, - entry_box->priv->text_column, &str, - -1); - gtk_entry_set_text (entry, str); - g_free (str); - - g_signal_handlers_unblock_by_func (entry, - gtk_combo_box_entry_contents_changed, - combo_box); - } - } -} - -static void -has_frame_changed (GtkComboBoxEntry *entry_box, - GParamSpec *pspec, - gpointer data) -{ - GtkWidget *child; - - child = gtk_bin_get_child (GTK_BIN (entry_box)); - if (child) - { - gboolean has_frame; - - g_object_get (entry_box, "has-frame", &has_frame, NULL); - - gtk_entry_set_has_frame (GTK_ENTRY (child), has_frame); - } -} - -static void -gtk_combo_box_entry_contents_changed (GtkEntry *entry, - gpointer user_data) -{ - GtkComboBox *combo_box = GTK_COMBO_BOX (user_data); - - /* - * Fixes regression reported in bug #574059. The old functionality relied on - * bug #572478. As a bugfix, we now emit the "changed" signal ourselves - * when the selection was already set to -1. - */ - if (gtk_combo_box_get_active(combo_box) == -1) - g_signal_emit_by_name (combo_box, "changed"); - else - gtk_combo_box_set_active (combo_box, -1); -} - -/* public API */ - -/** - * gtk_combo_box_entry_new: - * - * Creates a new #GtkComboBoxEntry which has a #GtkEntry as child. After - * construction, you should set a model using gtk_combo_box_set_model() and a - * text column using gtk_combo_box_entry_set_text_column(). - * - * Return value: A new #GtkComboBoxEntry. - * - * Since: 2.4 - * - * Deprecated: 2.24: Use gtk_combo_box_new_with_entry() instead - */ -GtkWidget * -gtk_combo_box_entry_new (void) -{ - return g_object_new (gtk_combo_box_entry_get_type (), NULL); -} - -/** - * gtk_combo_box_entry_new_with_model: - * @model: A #GtkTreeModel. - * @text_column: A column in @model to get the strings from. - * - * Creates a new #GtkComboBoxEntry which has a #GtkEntry as child and a list - * of strings as popup. You can get the #GtkEntry from a #GtkComboBoxEntry - * using GTK_ENTRY (GTK_BIN (combo_box_entry)->child). To add and remove - * strings from the list, just modify @model using its data manipulation - * API. - * - * Return value: A new #GtkComboBoxEntry. - * - * Since: 2.4 - * - * Deprecated: 2.24: Use gtk_combo_box_new_with_entry() instead - */ -GtkWidget * -gtk_combo_box_entry_new_with_model (GtkTreeModel *model, - gint text_column) -{ - GtkWidget *ret; - - g_return_val_if_fail (GTK_IS_TREE_MODEL (model), NULL); - g_return_val_if_fail (text_column >= 0, NULL); - g_return_val_if_fail (text_column < gtk_tree_model_get_n_columns (model), NULL); - - ret = g_object_new (gtk_combo_box_entry_get_type (), - "model", model, - "text-column", text_column, - NULL); - - return ret; -} - -/** - * gtk_combo_box_entry_set_text_column: - * @entry_box: A #GtkComboBoxEntry. - * @text_column: A column in @model to get the strings from. - * - * Sets the model column which @entry_box should use to get strings from - * to be @text_column. - * - * Since: 2.4 - * - * Deprecated: 2.24: Use gtk_combo_box_set_entry_text_column() instead - */ -void -gtk_combo_box_entry_set_text_column (GtkComboBoxEntry *entry_box, - gint text_column) -{ - GtkTreeModel *model = gtk_combo_box_get_model (GTK_COMBO_BOX (entry_box)); - - g_return_if_fail (text_column >= 0); - g_return_if_fail (model == NULL || text_column < gtk_tree_model_get_n_columns (model)); - - entry_box->priv->text_column = text_column; - - gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (entry_box), - entry_box->priv->text_renderer, - "text", text_column, - NULL); -} - -/** - * gtk_combo_box_entry_get_text_column: - * @entry_box: A #GtkComboBoxEntry. - * - * Returns the column which @entry_box is using to get the strings from. - * - * Return value: A column in the data source model of @entry_box. - * - * Since: 2.4 - * - * Deprecated: 2.24: Use gtk_combo_box_get_entry_text_column() instead - */ -gint -gtk_combo_box_entry_get_text_column (GtkComboBoxEntry *entry_box) -{ - g_return_val_if_fail (GTK_IS_COMBO_BOX_ENTRY (entry_box), 0); - - return entry_box->priv->text_column; -} - -static gboolean -gtk_combo_box_entry_mnemonic_activate (GtkWidget *widget, - gboolean group_cycling) -{ - GtkBin *entry_box = GTK_BIN (widget); - GtkWidget* child; - - child = gtk_bin_get_child (entry_box); - if (child) - gtk_widget_grab_focus (child); - - return TRUE; -} - -static void -gtk_combo_box_entry_grab_focus (GtkWidget *widget) -{ - GtkBin *entry_box = GTK_BIN (widget); - GtkWidget *child; - - child = gtk_bin_get_child (entry_box); - if (child) - gtk_widget_grab_focus (child); -} - - - -/* convenience API for simple text combos */ - -/** - * gtk_combo_box_entry_new_text: - * - * Convenience function which constructs a new editable text combo box, which - * is a #GtkComboBoxEntry just displaying strings. If you use this function to - * create a text combo box, you should only manipulate its data source with - * the following convenience functions: gtk_combo_box_append_text(), - * gtk_combo_box_insert_text(), gtk_combo_box_prepend_text() and - * gtk_combo_box_remove_text(). - * - * Return value: A new text #GtkComboBoxEntry. - * - * Since: 2.4 - */ -GtkWidget * -gtk_combo_box_entry_new_text (void) -{ - GtkWidget *entry_box; - GtkListStore *store; - - store = gtk_list_store_new (1, G_TYPE_STRING); - entry_box = gtk_combo_box_entry_new_with_model (GTK_TREE_MODEL (store), 0); - g_object_unref (store); - - return entry_box; -} - -static gchar * -gtk_combo_box_entry_get_active_text (GtkComboBox *combo_box) -{ - GtkBin *combo = GTK_BIN (combo_box); - GtkWidget *child; - - child = gtk_bin_get_child (combo); - if (child) - return g_strdup (gtk_entry_get_text (GTK_ENTRY (child))); - - return NULL; -} diff --git a/gtk/gtkcomboboxentry.h b/gtk/gtkcomboboxentry.h deleted file mode 100644 index ed289e57df..0000000000 --- a/gtk/gtkcomboboxentry.h +++ /dev/null @@ -1,81 +0,0 @@ -/* gtkcomboboxentry.h - * Copyright (C) 2002, 2003 Kristian Rietveld <kris@gtk.org> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) -#error "Only <gtk/gtk.h> can be included directly." -#endif - -#ifndef __GTK_COMBO_BOX_ENTRY_H__ -#define __GTK_COMBO_BOX_ENTRY_H__ - -#include <gtk/gtkcombobox.h> -#include <gtk/gtktreemodel.h> - -G_BEGIN_DECLS - -#ifndef GTK_DISABLE_DEPRECATED - -#define GTK_TYPE_COMBO_BOX_ENTRY (gtk_combo_box_entry_get_type ()) -#define GTK_COMBO_BOX_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_COMBO_BOX_ENTRY, GtkComboBoxEntry)) -#define GTK_COMBO_BOX_ENTRY_CLASS(vtable) (G_TYPE_CHECK_CLASS_CAST ((vtable), GTK_TYPE_COMBO_BOX_ENTRY, GtkComboBoxEntryClass)) -#define GTK_IS_COMBO_BOX_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_COMBO_BOX_ENTRY)) -#define GTK_IS_COMBO_BOX_ENTRY_CLASS(vtable) (G_TYPE_CHECK_CLASS_TYPE ((vtable), GTK_TYPE_COMBO_BOX_ENTRY)) -#define GTK_COMBO_BOX_ENTRY_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), GTK_TYPE_COMBO_BOX_ENTRY, GtkComboBoxEntryClass)) - -typedef struct _GtkComboBoxEntry GtkComboBoxEntry; -typedef struct _GtkComboBoxEntryClass GtkComboBoxEntryClass; -typedef struct _GtkComboBoxEntryPrivate GtkComboBoxEntryPrivate; - -struct _GtkComboBoxEntry -{ - GtkComboBox parent_instance; - - /*< private >*/ - GtkComboBoxEntryPrivate *priv; -}; - -struct _GtkComboBoxEntryClass -{ - GtkComboBoxClass parent_class; - - /* Padding for future expansion */ - void (*_gtk_reserved0) (void); - void (*_gtk_reserved1) (void); - void (*_gtk_reserved2) (void); - void (*_gtk_reserved3) (void); -}; - - -GType gtk_combo_box_entry_get_type (void) G_GNUC_CONST; -GtkWidget *gtk_combo_box_entry_new (void); -GtkWidget *gtk_combo_box_entry_new_with_model (GtkTreeModel *model, - gint text_column); - -void gtk_combo_box_entry_set_text_column (GtkComboBoxEntry *entry_box, - gint text_column); -gint gtk_combo_box_entry_get_text_column (GtkComboBoxEntry *entry_box); - -/* convenience -- text */ -GtkWidget *gtk_combo_box_entry_new_text (void); - -#endif - -G_END_DECLS - -#endif /* __GTK_COMBO_BOX_ENTRY_H__ */ |