From c39ad3e29d85b01931ffc8c6e5e99098b0b9c2f6 Mon Sep 17 00:00:00 2001 From: Matthew Brush Date: Wed, 21 Sep 2011 21:30:11 -0700 Subject: [PATCH] Update ui_lookup_widget() and ui_hookup_widget() to use new interface.c/h code. --- src/ui_utils.c | 35 +++++++++++++++++++---------------- src/ui_utils.h | 6 ++++-- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/src/ui_utils.c b/src/ui_utils.c index 1930457d6..900e907de 100644 --- a/src/ui_utils.c +++ b/src/ui_utils.c @@ -2214,6 +2214,22 @@ void ui_widget_set_tooltip_text(GtkWidget *widget, const gchar *text) } +/** Sets a name to lookup @a widget from @a owner. + * @param owner Usually a window, dialog or popup menu. + * @param widget Widget. + * @param widget_name Name. + * @see ui_lookup_widget(). + * + * @since 0.16 + **/ +void ui_hookup_widget_real(GtkWidget *owner, GObject *widget, const gchar *widget_name) +{ + g_return_if_fail(GTK_IS_WIDGET(widget)); + g_return_if_fail(widget_name != NULL); + interface_set_object(G_OBJECT(widget), widget_name); +} + + /** Returns a widget from a name in a component, usually created by Glade. * Call it with the toplevel widget in the component (i.e. a window/dialog), * or alternatively any widget in the component, and the name of the widget @@ -2227,27 +2243,14 @@ void ui_widget_set_tooltip_text(GtkWidget *widget, const gchar *text) */ GtkWidget *ui_lookup_widget(GtkWidget *widget, const gchar *widget_name) { - GtkWidget *parent, *found_widget; + GtkWidget *found_widget; - g_return_val_if_fail(widget != NULL, NULL); g_return_val_if_fail(widget_name != NULL, NULL); - for (;;) - { - if (GTK_IS_MENU(widget)) - parent = gtk_menu_get_attach_widget(GTK_MENU(widget)); - else - parent = widget->parent; - if (parent == NULL) - parent = (GtkWidget*) g_object_get_data(G_OBJECT(widget), "GladeParentKey"); - if (parent == NULL) - break; - widget = parent; - } - - found_widget = (GtkWidget*) g_object_get_data(G_OBJECT(widget), widget_name); + found_widget = GTK_WIDGET(interface_get_object(widget_name)); if (G_UNLIKELY(found_widget == NULL)) g_warning("Widget not found: %s", widget_name); + return found_widget; } diff --git a/src/ui_utils.h b/src/ui_utils.h index 9d5da4d36..b92fd76d4 100644 --- a/src/ui_utils.h +++ b/src/ui_utils.h @@ -22,6 +22,7 @@ #ifndef GEANY_UI_UTILS_H #define GEANY_UI_UTILS_H 1 + /** Sets a name to lookup @a widget from @a owner. * @param owner Usually a window, dialog or popup menu. * @param widget Widget. @@ -31,8 +32,7 @@ * @since 0.16 **/ #define ui_hookup_widget(owner, widget, widget_name) \ - g_object_set_data_full(G_OBJECT(owner), widget_name, \ - g_object_ref(widget), (GDestroyNotify)g_object_unref); + ui_hookup_widget_real(owner, G_OBJECT(widget), widget_name) /** Interface preferences */ @@ -205,6 +205,8 @@ void ui_auto_separator_add_ref(GeanyAutoSeparator *autosep, GtkWidget *item); void ui_widget_set_tooltip_text(GtkWidget *widget, const gchar *text); +void ui_hookup_widget_real(GtkWidget *owner, GObject *widget, const gchar *widget_name); + GtkWidget *ui_lookup_widget(GtkWidget *widget, const gchar *widget_name); void ui_widget_set_sensitive(GtkWidget *widget, gboolean set); -- 2.11.4.GIT