diff --git a/src/gtkcompat.h b/src/gtkcompat.h index 30f503f392..536f447d71 100644 --- a/src/gtkcompat.h +++ b/src/gtkcompat.h @@ -98,6 +98,26 @@ G_BEGIN_DECLS #endif +#if !GTK_CHECK_VERSION(3, 4, 0) +static inline guint gtkcompat_builder_add_from_resource(GtkBuilder *builder, + const gchar *resource_path, GError **error) +{ + GBytes *bytes = g_resources_lookup_data(resource_path, + G_RESOURCE_LOOKUP_FLAGS_NONE, error); + if (bytes == NULL) + return 0; + gsize data_len = 0; + gconstpointer data = g_bytes_get_data(bytes, &data_len); + g_assert(data_len > 0); + g_assert(data != NULL); + guint id = gtk_builder_add_from_string(builder, data, data_len, error); + g_bytes_unref(bytes); + return id; +} +#define gtk_builder_add_from_resource gtkcompat_builder_add_from_resource +#endif + + G_END_DECLS #endif /* GTK_COMPAT_H */ diff --git a/src/ui_utils.c b/src/ui_utils.c index a2258b34b3..a0093174aa 100644 --- a/src/ui_utils.c +++ b/src/ui_utils.c @@ -2441,33 +2441,16 @@ void ui_init_builder(void) gtk_builder_set_translation_domain(builder, GETTEXT_PACKAGE); error = NULL; - ui_data = g_resource_lookup_data(geany_get_resource(), - "/org/geany/Geany/geany.glade", G_RESOURCE_LOOKUP_FLAGS_NONE, &error); - if (ui_data == NULL) + if (gtk_builder_add_from_resource(builder, "/org/geany/Geany/geany.glade", &error) == 0) { dialogs_show_msgbox_with_secondary(GTK_MESSAGE_ERROR, _("Geany cannot start!"), error->message); - g_error("Cannot load user-interface: %s", error->message); + g_error(_("Cannot load user-interface: %s"), error->message); g_error_free(error); g_object_unref(builder); return; } - error = NULL; - if (gtk_builder_add_from_string(builder, g_bytes_get_data(ui_data, NULL), - g_bytes_get_size(ui_data), &error) == 0) - { - dialogs_show_msgbox_with_secondary(GTK_MESSAGE_ERROR, - _("Geany cannot start!"), error->message); - g_error("Cannot create user-interface: %s", error->message); - g_error_free(error); - g_bytes_unref(ui_data); - g_object_unref(builder); - return; - } - - g_bytes_unref(ui_data); - callbacks_connect(builder); edit_menu1 = GTK_WIDGET(gtk_builder_get_object(builder, "edit_menu1"));