204 lines
6.3 KiB
Diff
204 lines
6.3 KiB
Diff
|
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 \
|