From e2abe6dd2986ac30953a2c8564b3daa9fb5de6c7 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 3 May 2020 09:51:09 -0400 Subject: [PATCH] searchbar: Add a child property --- docs/reference/gtk/gtk4-sections.txt | 2 ++ gtk/gtksearchbar.c | 46 ++++++++++++++++++++++++++++ gtk/gtksearchbar.h | 7 +++++ 3 files changed, 55 insertions(+) diff --git a/docs/reference/gtk/gtk4-sections.txt b/docs/reference/gtk/gtk4-sections.txt index cd27f991af..0f2bcbb77e 100644 --- a/docs/reference/gtk/gtk4-sections.txt +++ b/docs/reference/gtk/gtk4-sections.txt @@ -2259,6 +2259,8 @@ GtkScrolledWindowPrivate GtkSearchBar GtkSearchBar gtk_search_bar_new +gtk_search_bar_set_child +gtk_search_bar_get_child gtk_search_bar_connect_entry gtk_search_bar_get_search_mode gtk_search_bar_set_search_mode diff --git a/gtk/gtksearchbar.c b/gtk/gtksearchbar.c index 7a2e6178f3..90e342234c 100644 --- a/gtk/gtksearchbar.c +++ b/gtk/gtksearchbar.c @@ -112,6 +112,7 @@ enum { PROP_0, PROP_SEARCH_MODE_ENABLED, PROP_SHOW_CLOSE_BUTTON, + PROP_CHILD, LAST_PROPERTY }; @@ -209,6 +210,9 @@ gtk_search_bar_set_property (GObject *object, case PROP_SHOW_CLOSE_BUTTON: gtk_search_bar_set_show_close_button (bar, g_value_get_boolean (value)); break; + case PROP_CHILD: + gtk_search_bar_set_child (bar, g_value_get_object (value)); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -231,6 +235,9 @@ gtk_search_bar_get_property (GObject *object, case PROP_SHOW_CLOSE_BUTTON: g_value_set_boolean (value, gtk_search_bar_get_show_close_button (bar)); break; + case PROP_CHILD: + g_value_set_object (value, gtk_search_bar_get_child (bar)); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -332,6 +339,12 @@ gtk_search_bar_class_init (GtkSearchBarClass *klass) FALSE, GTK_PARAM_READWRITE|G_PARAM_CONSTRUCT|G_PARAM_EXPLICIT_NOTIFY); + widget_props[PROP_CHILD] = g_param_spec_object ("child", + P_("Child"), + P_("The child widget"), + GTK_TYPE_WIDGET, + GTK_PARAM_READWRITE|G_PARAM_CONSTRUCT|G_PARAM_EXPLICIT_NOTIFY); + g_object_class_install_properties (object_class, LAST_PROPERTY, widget_props); gtk_widget_class_set_css_name (widget_class, I_("searchbar")); @@ -657,3 +670,36 @@ gtk_search_bar_get_key_capture_widget (GtkSearchBar *bar) return priv->capture_widget; } + +/** + * gtk_search_bar_set_child: + * @bar: a #GtkSearchBar + * @child: (allow-none): the child widget + * + * Sets the child widget of @bar. + */ +void +gtk_search_bar_set_child (GtkSearchBar *bar, + GtkWidget *child) +{ + if (gtk_bin_get_child (GTK_BIN (bar))) + gtk_search_bar_remove (GTK_CONTAINER (bar), gtk_bin_get_child (GTK_BIN (bar))); + if (child) + gtk_search_bar_add (GTK_CONTAINER (bar), child); + g_object_notify_by_pspec (G_OBJECT (bar), widget_props[PROP_CHILD]); +} + +/** + * gtk_search_bar_get_child: + * @bar: a #GtkSearchBar + * + * Gets the child widget of @bar. + * + * Returns: (nullable) (transfer none): the child widget of @bar + */ +GtkWidget * +gtk_search_bar_get_child (GtkSearchBar *bar) +{ + return gtk_bin_get_child (GTK_BIN (bar)); +} + diff --git a/gtk/gtksearchbar.h b/gtk/gtksearchbar.h index febfb1e975..7f7275c59b 100644 --- a/gtk/gtksearchbar.h +++ b/gtk/gtksearchbar.h @@ -71,6 +71,13 @@ void gtk_search_bar_set_key_capture_widget (GtkSearchBar *bar, GDK_AVAILABLE_IN_ALL GtkWidget * gtk_search_bar_get_key_capture_widget (GtkSearchBar *bar); +GDK_AVAILABLE_IN_ALL +void gtk_search_bar_set_child (GtkSearchBar *bar, + GtkWidget *child); +GDK_AVAILABLE_IN_ALL +GtkWidget * gtk_search_bar_get_child (GtkSearchBar *bar); + + G_END_DECLS #endif /* __GTK_SEARCH_BAR_H__ */