diff --git a/demos/gtk-demo/Makefile.am b/demos/gtk-demo/Makefile.am
index 3396a99cc9..4b38fe6689 100644
--- a/demos/gtk-demo/Makefile.am
+++ b/demos/gtk-demo/Makefile.am
@@ -70,12 +70,13 @@ bin_PROGRAMS = gtk3-demo gtk3-demo-application
BUILT_SOURCES = demos.h application_resources.c
-EXTRA_DIST += \
- $(IMAGEFILES) \
- demo.ui \
- application.gresource.xml \
- application.ui \
- gtk-logo-24.png \
+EXTRA_DIST += \
+ $(IMAGEFILES) \
+ demo.ui \
+ application.gresource.xml \
+ application.ui \
+ menus.ui \
+ gtk-logo-24.png \
gtk-logo-48.png
demos.h: @REBUILD@ $(demos) geninclude.pl
@@ -97,8 +98,8 @@ gtk3_demo_application_SOURCES = \
gtk3_demo_application_LDADD = $(LDADDS)
-application_resources.c: application.gresource.xml gtk-logo-24.png gtk-logo-48.png application.ui
- glib-compile-resources --target=$@ --sourcedir=$(srcdir) --generate-source $(srcdir)/application.gresource.xml
+application_resources.c: application.gresource.xml gtk-logo-24.png gtk-logo-48.png application.ui menus.ui
+ $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --generate-source $(srcdir)/application.gresource.xml
IMAGEFILES= alphatest.png \
apple-red.png \
diff --git a/demos/gtk-demo/application.c b/demos/gtk-demo/application.c
index fc27dec686..27c70e29a9 100644
--- a/demos/gtk-demo/application.c
+++ b/demos/gtk-demo/application.c
@@ -293,6 +293,25 @@ clicked_cb (GtkWidget *widget, GtkWidget *info)
gtk_widget_hide (info);
}
+static void
+startup (GApplication *app)
+{
+ GtkBuilder *builder;
+ GMenuModel *appmenu;
+ GMenuModel *menubar;
+
+ builder = gtk_builder_new ();
+ gtk_builder_add_from_resource (builder, "/ui/menus.ui", NULL);
+
+ appmenu = (GMenuModel *)gtk_builder_get_object (builder, "appmenu");
+ menubar = (GMenuModel *)gtk_builder_get_object (builder, "menubar");
+
+ gtk_application_set_app_menu (GTK_APPLICATION (app), appmenu);
+ gtk_application_set_menubar (GTK_APPLICATION (app), menubar);
+
+ g_object_unref (builder);
+}
+
static void
activate (GApplication *app)
{
@@ -305,10 +324,6 @@ activate (GApplication *app)
GtkWidget *button;
GtkWidget *infobar;
GtkTextBuffer *buffer;
- GMenuModel *appmenu, *menubar;
- GBytes *bytes;
- const gchar *data;
- gsize size;
window = gtk_application_window_new (GTK_APPLICATION (app));
gtk_window_set_title (GTK_WINDOW (window), "Application Class");
@@ -320,15 +335,9 @@ activate (GApplication *app)
window);
builder = gtk_builder_new ();
-
- bytes = g_resources_lookup_data ("/ui/application.ui", 0, NULL);
- data = g_bytes_get_data (bytes, &size);
- gtk_builder_add_from_string (builder, data, size, NULL);
- g_bytes_unref (bytes);
+ gtk_builder_add_from_resource (builder, "/ui/application.ui", NULL);
grid = (GtkWidget *)gtk_builder_get_object (builder, "grid");
- appmenu = (GMenuModel *)gtk_builder_get_object (builder, "appmenu");
- menubar = (GMenuModel *)gtk_builder_get_object (builder, "menubar");
contents = (GtkWidget *)gtk_builder_get_object (builder, "contents");
status = (GtkWidget *)gtk_builder_get_object (builder, "status");
message = (GtkWidget *)gtk_builder_get_object (builder, "message");
@@ -339,8 +348,6 @@ activate (GApplication *app)
g_object_set_data (G_OBJECT (window), "infobar", infobar);
gtk_container_add (GTK_CONTAINER (window), grid);
- gtk_application_set_app_menu (GTK_APPLICATION (app), appmenu);
- gtk_application_set_menubar (GTK_APPLICATION (app), menubar);
gtk_widget_grab_focus (contents);
g_signal_connect (button, "clicked", G_CALLBACK (clicked_cb), infobar);
@@ -355,6 +362,8 @@ activate (GApplication *app)
update_statusbar (buffer, GTK_STATUSBAR (status));
gtk_widget_show_all (window);
+
+ g_object_unref (builder);
}
int
@@ -372,6 +381,7 @@ main (int argc, char *argv[])
app_entries, G_N_ELEMENTS (app_entries),
app);
+ g_signal_connect (app, "startup", G_CALLBACK (startup), NULL);
g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
g_application_run (G_APPLICATION (app), 0, NULL);
diff --git a/demos/gtk-demo/application.gresource.xml b/demos/gtk-demo/application.gresource.xml
index 80fcc47d46..ed5c81e9ad 100644
--- a/demos/gtk-demo/application.gresource.xml
+++ b/demos/gtk-demo/application.gresource.xml
@@ -6,5 +6,6 @@