blob: 7e2c3ab75dfadcb4cdbb87d48443b456e39d09bd [file] [log] [blame]
This patch enable owl menu, which is hidden in the title bar to save space on
small screen. It has not been used for a long time, rebase needed.
Upstream-Status: Inappropriate [enable feature]
Index: src/gtk.c
===================================================================
--- src/gtk.c (revision 22)
+++ src/gtk.c (working copy)
@@ -28,6 +28,8 @@
#include <gdk/gdkx.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
+#include <libowl/owlwindowmenu.h>
+
#include <librsvg/rsvg.h>
#include <X11/Xlib.h>
@@ -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 ("<ui><menubar><placeholder name=\"TypePlaceholder\">"
+ xml = g_string_new ("<ui><menubar><menu name=\"TopMenu\" action=\"Top\">"
+ "<placeholder name=\"TypePlaceholder\">"
"<menu name=\"SettingsMenu\" action=\"Settings\">");
for (i = 0; i < midend_num_presets(fe->me); i++) {
@@ -1359,8 +1365,14 @@
"<menuitem name=\"CustomMenu\" action=\"Custom\"/>");
}
- g_string_append (xml, "</menu></placeholder></menubar></ui>");
- gtk_ui_manager_add_ui_from_string (merge, xml->str, -1, NULL);
+ g_string_append (xml, "</menu></placeholder></menu></menubar></ui>");
+
+ 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 = "<ui><menubar><menu name=\"GameMenu\" action=\"Game\">"
+ char *str = "<ui><menubar><menu name=\"TopMenu\" action=\"Top\">"
+ "<menu name=\"GameMenu\" action=\"Game\">"
"<placeholder name=\"SolvePlaceholder\">"
"<separator name=\"SolveSep\"/>"
"<menuitem name=\"SolveMenu\" action=\"Solve\"/>"
- "</placeholder></menu></menubar></ui>";
+ "</placeholder></menu></menu></menubar></ui>";
- 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 @@
<ui>
<menubar>
-<menu name="GameMenu" action="Game">
- <menuitem name="NewMenu" action="New"/>
- <menuitem name="RestartMenu" action="Restart"/>
-<!-- <menuitem name="SpecificMenu" action="Specific"/> -->
- <menuitem name="RandomMenu" action="Random"/>
- <separator name="GameSep1"/>
- <menuitem name="LoadMenu" action="Load"/>
- <menuitem name="SaveMenu" action="Save"/>
- <separator name="GameSep2"/>
- <menuitem name="UndoMenu" action="Undo"/>
- <menuitem name="RedoMenu" action="Redo"/>
- <placeholder name="CopyPlaceholder"/>
- <placeholder name="SolvePlaceholder"/>
- <separator name="GameSep3"/>
- <menuitem name="QuitMenu" action="Quit"/>
-</menu>
+<menu name="TopMenu" action="Top">
+ <menu name="GameMenu" action="Game">
+ <menuitem name="NewMenu" action="New"/>
+ <menuitem name="RestartMenu" action="Restart"/>
+ <!-- <menuitem name="SpecificMenu" action="Specific"/> -->
+ <menuitem name="RandomMenu" action="Random"/>
+ <separator name="GameSep1"/>
+ <menuitem name="LoadMenu" action="Load"/>
+ <menuitem name="SaveMenu" action="Save"/>
+ <separator name="GameSep2"/>
+ <menuitem name="UndoMenu" action="Undo"/>
+ <menuitem name="RedoMenu" action="Redo"/>
+ <placeholder name="CopyPlaceholder"/>
+ <placeholder name="SolvePlaceholder"/>
+ </menu>
-<placeholder name="TypePlaceholder"/>
-
-<menu name="HelpMenu" action="Help">
+ <placeholder name="TypePlaceholder"/>
<menuitem name="AboutMenu" action="About"/>
+ <menuitem name="QuitMenu" action="Quit"/>
+
</menu>
</menubar>
</ui>
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 \