Bug fix for menu visibility toggle.

This commit is contained in:
Matthew Budd 2020-06-13 12:51:57 -04:00
parent 6de7a68149
commit b4b2cca9ec
3 changed files with 42 additions and 38 deletions

View File

@ -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);

View File

@ -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);

View File

@ -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