Index: src/gtk.c =================================================================== --- src/gtk.c (revision 22) +++ src/gtk.c (working copy) @@ -28,6 +28,8 @@ #include #include +#include + #include #include @@ -1237,6 +1239,7 @@ } } +#if 0 static void add_widget (GtkUIManager *merge, GtkWidget *widget, @@ -1247,10 +1250,11 @@ gtk_box_pack_start (box, widget, FALSE, FALSE, 0); toplevel = gtk_widget_get_toplevel (GTK_WIDGET (box)); - gtk_widget_show_all (toplevel); } +#endif static GtkActionEntry toplevel_actions[] = { + { "Top", NULL, "" }, { "Game", NULL, N_("Game") }, { "Settings", NULL, N_("Settings") }, { "Help", NULL, N_("Help") }, @@ -1303,11 +1307,13 @@ frontend *fe) { GString *xml; + GError *error = NULL; gboolean presets = FALSE; GSList *radio_group = NULL; int i; - xml = g_string_new ("" + xml = g_string_new ("" + "" ""); for (i = 0; i < midend_num_presets(fe->me); i++) { @@ -1359,8 +1365,14 @@ ""); } - g_string_append (xml, ""); - gtk_ui_manager_add_ui_from_string (merge, xml->str, -1, NULL); + g_string_append (xml, ""); + + gtk_ui_manager_add_ui_from_string (merge, xml->str, -1, &error); + if (error != NULL) { + g_warning ("Error adding custom: %s", error->message); + g_error_free (error); + } + g_string_free (xml, TRUE); } @@ -1434,6 +1446,7 @@ new_window(char *arg, char **error) { frontend *fe; + GError *err = NULL; GtkBox *vbox; GtkUIManager *merge; GtkActionGroup *actions; @@ -1496,8 +1509,6 @@ gtk_window_add_accel_group(GTK_WINDOW(fe->window), fe->accelgroup); merge = gtk_ui_manager_new (); - g_signal_connect (G_OBJECT (merge), "add_widget", - G_CALLBACK (add_widget), vbox); actions = gtk_action_group_new ("PuzzleActions"); gtk_action_group_add_actions (actions, toplevel_actions, @@ -1509,22 +1520,39 @@ gtk_ui_manager_insert_action_group (merge, actions, 0); - gtk_ui_manager_add_ui_from_file (merge, DATADIR "/oh-puzzles/ui/menu.xml", NULL); + gtk_ui_manager_add_ui_from_file (merge, DATADIR "/oh-puzzles/ui/menu.xml", + &err); + if (err != NULL) { + g_warning ("Error making UI: %s", err->message); + g_error_free (err); + err = NULL; + } if (thegame.can_solve) { - char *str = "" + char *str = "" + "" "" "" "" - ""; + ""; - gtk_ui_manager_add_ui_from_string (merge, str, -1, NULL); + gtk_ui_manager_add_ui_from_string (merge, str, -1, &err); + if (err != NULL) { + g_warning ("Error adding solve. %s", err->message); + g_error_free (err); + } } if ((n = midend_num_presets(fe->me)) > 0 || thegame.can_configure) { generate_settings_menu (merge, actions, fe); } + /* Do this so that the menu is packed now instead of in the idle loop */ + gtk_ui_manager_ensure_update (merge); + + owl_set_window_menu_item (GTK_WINDOW (fe->window), + GTK_MENU_ITEM (gtk_ui_manager_get_widget (merge, "/menubar/TopMenu"))); + setup_colours (fe); setup_pixbufs (fe); @@ -1572,7 +1600,7 @@ GDK_BUTTON_RELEASE_MASK | GDK_BUTTON_MOTION_MASK); - /* The window is shown once the menubar has been added */ + gtk_widget_show_all (fe->window); return fe; } Index: src/menu.xml =================================================================== --- src/menu.xml (revision 22) +++ src/menu.xml (working copy) @@ -1,26 +1,25 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - + + + Index: src/Makefile.am =================================================================== --- src/Makefile.am (revision 22) +++ src/Makefile.am (working copy) @@ -10,7 +10,7 @@ lightup loopy map mines net netslide pattern pegs rect samegame \ sixteen slant solo tents twiddle untangle -libpuzzles_la_LIBADD = $(PUZZLES_LIBS) +libpuzzles_la_LIBADD = $(PUZZLES_LIBS) -lowl libpuzzles_la_SOURCES = combi.c \ configuration.c \ drawing.c \