diff --git a/src/drivers/sdl/gui.cpp b/src/drivers/sdl/gui.cpp index 286e12b5..48bb3b6b 100644 --- a/src/drivers/sdl/gui.cpp +++ b/src/drivers/sdl/gui.cpp @@ -2698,7 +2698,7 @@ static GtkWidget *CreateMenubar (GtkWidget * window) gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); //-Options --> Toggle Menubar --------------------- - item = gtk_check_menu_item_new_with_label ("Toggle Menubar (alt)"); + item = gtk_check_menu_item_new_with_label ("Toggle Menubar (Alt+M)"); //gtk_check_menu_item_set_active( GTK_CHECK_MENU_ITEM(item), FALSE); @@ -3039,27 +3039,19 @@ void showGui (bool b) } } -gint handleKeyRelease (GtkWidget * w, GdkEvent * event, gpointer cb_data) +void toggleMenuVis(void) { if (menuTogglingEnabled) { - static bool menuShown = true; - if (((GdkEventKey *) event)->keyval == GDK_KEY_Alt_L - || ((GdkEventKey *) event)->keyval == GDK_KEY_Alt_R) + if ( gtk_widget_get_visible(Menubar) ) { - if (menuShown) - { - gtk_widget_hide (Menubar); - menuShown = false; - } - else - { - gtk_widget_show (Menubar); - menuShown = true; - } + gtk_widget_hide (Menubar); + } + else + { + gtk_widget_show (Menubar); } } - return 0; }; int GtkMouseData[3] = { 0, 0, 0 }; @@ -3685,9 +3677,6 @@ int InitGTKSubsystem (int argc, char **argv) g_signal_connect (G_OBJECT (evbox), "button-release-event", G_CALLBACK (handleMouseClick), NULL); - // TODO Menu Bar Toggle Needs Work - //g_signal_connect(G_OBJECT(MainWindow), "key-release-event", G_CALLBACK(handleKeyRelease), NULL); - // signal handlers g_signal_connect (MainWindow, "delete-event", quit, NULL); g_signal_connect (MainWindow, "destroy-event", quit, NULL); diff --git a/src/drivers/sdl/gui.h b/src/drivers/sdl/gui.h index b3313bb6..e824d4a2 100644 --- a/src/drivers/sdl/gui.h +++ b/src/drivers/sdl/gui.h @@ -33,6 +33,7 @@ extern bool gtkIsStarted; int InitGTKSubsystem(int argc, char** argv); void pushOutputToGTK(const char* str); void showGui(bool b); +void toggleMenuVis(void); bool checkGTKVersion(int major_required, int minor_required); diff --git a/src/drivers/sdl/input.cpp b/src/drivers/sdl/input.cpp index 897508af..3943f35f 100644 --- a/src/drivers/sdl/input.cpp +++ b/src/drivers/sdl/input.cpp @@ -501,31 +501,45 @@ static void KeyboardCommands (void) //{ // ToggleFS (); //} + // + + // Alt-M to toggle Main Menu Visibility + if ( is_alt ) + { + if (keyonly (M)) + { + toggleMenuVis(); + } + } // Toggle Movie auto-backup - if (keyonly (M) && is_shift) + if ( is_shift ) { - autoMovieBackup ^= 1; - FCEUI_DispMessage ("Automatic movie backup %sabled.", 0, - autoMovieBackup ? "en" : "dis"); + if (keyonly (M)) + { + autoMovieBackup ^= 1; + FCEUI_DispMessage ("Automatic movie backup %sabled.", 0, + autoMovieBackup ? "en" : "dis"); + } } - // Start recording an FM2 movie on Alt+R - if (keyonly (R) && is_alt) + if ( is_alt ) { - FCEUD_MovieRecordTo (); - } - - // Save a state from a file - if (keyonly (S) && is_alt) - { - FCEUD_SaveStateAs (); - } - - // Load a state from a file - if (keyonly (L) && is_alt) - { - FCEUD_LoadStateFrom (); + // Start recording an FM2 movie on Alt+R + if (keyonly (R)) + { + FCEUD_MovieRecordTo (); + } + // Save a state from a file + if (keyonly (S)) + { + FCEUD_SaveStateAs (); + } + // Load a state from a file + if (keyonly (L)) + { + FCEUD_LoadStateFrom (); + } } // Famicom disk-system games