diff --git a/src/frontend/qt_sdl/Config.cpp b/src/frontend/qt_sdl/Config.cpp index 707b4ca549..1d29e8963a 100644 --- a/src/frontend/qt_sdl/Config.cpp +++ b/src/frontend/qt_sdl/Config.cpp @@ -162,6 +162,7 @@ LegacyEntry LegacyFile[] = {"HKKey_FastForward", 0, "Keyboard.HK_FastForward", true}, {"HKKey_FastForwardToggle", 0, "Keyboard.HK_FrameLimitToggle", true}, {"HKKey_FullscreenToggle", 0, "Keyboard.HK_FullscreenToggle", true}, + {"HKKey_MenuBarToggle", 0, "Keyboard.HK_MenuBarToggle", true}, {"HKKey_SwapScreens", 0, "Keyboard.HK_SwapScreens", true}, {"HKKey_SwapScreenEmphasis", 0, "Keyboard.HK_SwapScreenEmphasis", true}, {"HKKey_SolarSensorDecrease", 0, "Keyboard.HK_SolarSensorDecrease", true}, @@ -182,6 +183,7 @@ LegacyEntry LegacyFile[] = {"HKJoy_FastForward", 0, "Joystick.HK_FastForward", true}, {"HKJoy_FastForwardToggle", 0, "Joystick.HK_FrameLimitToggle", true}, {"HKJoy_FullscreenToggle", 0, "Joystick.HK_FullscreenToggle", true}, + {"HKJoy_MenuBarToggle", 0, "Joystick.HK_MenuBarToggle", true}, {"HKJoy_SwapScreens", 0, "Joystick.HK_SwapScreens", true}, {"HKJoy_SwapScreenEmphasis", 0, "Joystick.HK_SwapScreenEmphasis", true}, {"HKJoy_SolarSensorDecrease", 0, "Joystick.HK_SolarSensorDecrease", true}, diff --git a/src/frontend/qt_sdl/EmuInstance.h b/src/frontend/qt_sdl/EmuInstance.h index 5cdae0870f..aa1399b120 100755 --- a/src/frontend/qt_sdl/EmuInstance.h +++ b/src/frontend/qt_sdl/EmuInstance.h @@ -56,6 +56,7 @@ enum HK_GuitarGripRed, HK_GuitarGripYellow, HK_GuitarGripBlue, + HK_MenuBarToggle, HK_MAX }; diff --git a/src/frontend/qt_sdl/EmuInstanceInput.cpp b/src/frontend/qt_sdl/EmuInstanceInput.cpp index 5f8e7478da..446bd12da4 100644 --- a/src/frontend/qt_sdl/EmuInstanceInput.cpp +++ b/src/frontend/qt_sdl/EmuInstanceInput.cpp @@ -52,6 +52,7 @@ const char* EmuInstance::hotkeyNames[HK_MAX] = "HK_FastForward", "HK_FrameLimitToggle", "HK_FullscreenToggle", + "HK_MenuBarToggle", "HK_SwapScreens", "HK_SwapScreenEmphasis", "HK_SolarSensorDecrease", diff --git a/src/frontend/qt_sdl/EmuThread.cpp b/src/frontend/qt_sdl/EmuThread.cpp index df690a88f1..adbc2c140e 100755 --- a/src/frontend/qt_sdl/EmuThread.cpp +++ b/src/frontend/qt_sdl/EmuThread.cpp @@ -76,6 +76,7 @@ void EmuThread::attachWindow(MainWindow* window) connect(this, SIGNAL(windowEmuReset()), window, SLOT(onEmuReset())); connect(this, SIGNAL(autoScreenSizingChange(int)), window->panel, SLOT(onAutoScreenSizingChanged(int))); connect(this, SIGNAL(windowFullscreenToggle()), window, SLOT(onFullscreenToggled())); + connect(this, SIGNAL(windowMenuBarToggle()), window, SLOT(onMenuBarToggled())); connect(this, SIGNAL(screenEmphasisToggle()), window, SLOT(onScreenEmphasisToggled())); if (window->winHasMenu()) @@ -94,6 +95,7 @@ void EmuThread::detachWindow(MainWindow* window) disconnect(this, SIGNAL(windowEmuReset()), window, SLOT(onEmuReset())); disconnect(this, SIGNAL(autoScreenSizingChange(int)), window->panel, SLOT(onAutoScreenSizingChanged(int))); disconnect(this, SIGNAL(windowFullscreenToggle()), window, SLOT(onFullscreenToggled())); + disconnect(this, SIGNAL(windowMenuBarToggle()), window, SLOT(onMenuBarToggled())); disconnect(this, SIGNAL(screenEmphasisToggle()), window, SLOT(onScreenEmphasisToggled())); if (window->winHasMenu()) @@ -164,6 +166,7 @@ void EmuThread::run() if (emuInstance->hotkeyPressed(HK_FrameStep)) emuFrameStep(); if (emuInstance->hotkeyPressed(HK_FullscreenToggle)) emit windowFullscreenToggle(); + if (emuInstance->hotkeyPressed(HK_MenuBarToggle)) emit windowMenuBarToggle(); if (emuInstance->hotkeyPressed(HK_SwapScreens)) emit swapScreensToggle(); if (emuInstance->hotkeyPressed(HK_SwapScreenEmphasis)) emit screenEmphasisToggle(); diff --git a/src/frontend/qt_sdl/EmuThread.h b/src/frontend/qt_sdl/EmuThread.h index db9fe06be6..ee89e77f6b 100755 --- a/src/frontend/qt_sdl/EmuThread.h +++ b/src/frontend/qt_sdl/EmuThread.h @@ -154,6 +154,7 @@ class EmuThread : public QThread void autoScreenSizingChange(int sizing); void windowFullscreenToggle(); + void windowMenuBarToggle(); void swapScreensToggle(); void screenEmphasisToggle(); diff --git a/src/frontend/qt_sdl/InputConfig/InputConfigDialog.h b/src/frontend/qt_sdl/InputConfig/InputConfigDialog.h index 462cdd6cbb..f20cf88312 100644 --- a/src/frontend/qt_sdl/InputConfig/InputConfigDialog.h +++ b/src/frontend/qt_sdl/InputConfig/InputConfigDialog.h @@ -61,6 +61,7 @@ static constexpr std::initializer_list hk_general = HK_SlowMoToggle, HK_FrameLimitToggle, HK_FullscreenToggle, + HK_MenuBarToggle, HK_Lid, HK_Mic, HK_SwapScreens, @@ -82,6 +83,7 @@ static constexpr std::initializer_list hk_general_labels = "Toggle slow mo", "Toggle FPS limit", "Toggle fullscreen", + "Toggle menu bar", "Close/open lid", "Microphone", "Swap screens", diff --git a/src/frontend/qt_sdl/Window.cpp b/src/frontend/qt_sdl/Window.cpp index 73069d2eb8..152e26661f 100755 --- a/src/frontend/qt_sdl/Window.cpp +++ b/src/frontend/qt_sdl/Window.cpp @@ -2210,6 +2210,20 @@ void MainWindow::onFullscreenToggled() toggleFullscreen(); } +void MainWindow::onMenuBarToggled() +{ + if (!hasMenu) return; + if (menuBar()->maximumHeight() != 0) + { + menuBar()->setFixedHeight(0); + } + else + { + int menuBarHeight = menuBar()->sizeHint().height(); + menuBar()->setFixedHeight(menuBarHeight); + } +} + void MainWindow::onScreenEmphasisToggled() { int currentSizing = windowCfg.GetInt("ScreenSizing"); diff --git a/src/frontend/qt_sdl/Window.h b/src/frontend/qt_sdl/Window.h index 818d4db7e6..b5a4a77bed 100755 --- a/src/frontend/qt_sdl/Window.h +++ b/src/frontend/qt_sdl/Window.h @@ -182,6 +182,7 @@ private slots: void onUpdateVideoSettings(bool glchange); void onFullscreenToggled(); + void onMenuBarToggled(); void onScreenEmphasisToggled(); private: