From 95fe9256305bad92697bf1043efcbd61238cf94b Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Tue, 14 Sep 2010 13:38:47 -0400 Subject: Fix a crapload of run-time warnings. EConfig and EMAccountEditor are very, very brittle. --- e-util/e-util.c | 38 ++++++++++++++++++++++++++++++++++++++ e-util/e-util.h | 7 ++----- 2 files changed, 40 insertions(+), 5 deletions(-) (limited to 'e-util') diff --git a/e-util/e-util.c b/e-util/e-util.c index c5360f94a1..68662bd3d4 100644 --- a/e-util/e-util.c +++ b/e-util/e-util.c @@ -284,6 +284,44 @@ e_lookup_action_group (GtkUIManager *ui_manager, return NULL; } +/** + * e_builder_get_widget: + * @builder: a #GtkBuilder + * @widget_name: name of a widget in @builder + * + * Gets the widget named @widget_name. Note that this function does not + * increment the reference count of the returned widget. If @widget_name + * could not be found in the @builder's object tree, a run-time + * warning is emitted since this usually indicates a programming error. + * + * This is a convenience function to work around the awkwardness of + * #GtkBuilder returning #GObject pointers, when the vast majority of + * the time you want a #GtkWidget pointer. + * + * If you need something from @builder other than a #GtkWidget, or you + * want to test for the existence of some widget name without incurring + * a run-time warning, use gtk_builder_get_object(). + * + * Returns: the widget named @widget_name, or %NULL + **/ +GtkWidget * +e_builder_get_widget (GtkBuilder *builder, + const gchar *widget_name) +{ + GObject *object; + + g_return_val_if_fail (GTK_IS_BUILDER (builder), NULL); + g_return_val_if_fail (widget_name != NULL, NULL); + + object = gtk_builder_get_object (builder, widget_name); + if (object == NULL) { + g_warning ("Could not find widget '%s'", widget_name); + return NULL; + } + + return GTK_WIDGET (object); +} + /** * e_load_ui_builder_definition: * @builder: a #GtkBuilder diff --git a/e-util/e-util.h b/e-util/e-util.h index 42749c1c25..71fc12f431 100644 --- a/e-util/e-util.h +++ b/e-util/e-util.h @@ -34,11 +34,6 @@ * for backward-compatibility (not that we really care about that). */ #include -/* Convenience macro to help migrate from libglade to GtkBuilder. - * Use it as a direct replacement for glade_xml_get_widget(). */ -#define e_builder_get_widget(builder, name) \ - GTK_WIDGET (gtk_builder_get_object ((builder), (name))) - G_BEGIN_DECLS typedef enum { @@ -60,6 +55,8 @@ GtkAction * e_lookup_action (GtkUIManager *ui_manager, const gchar *action_name); GtkActionGroup *e_lookup_action_group (GtkUIManager *ui_manager, const gchar *group_name); +GtkWidget * e_builder_get_widget (GtkBuilder *builder, + const gchar *widget_name); void e_load_ui_builder_definition (GtkBuilder *builder, const gchar *basename); gint e_action_compare_by_label (GtkAction *action1, -- cgit