diff --git a/src/frontend/qt_sdl/Config.cpp b/src/frontend/qt_sdl/Config.cpp index 707b4ca549..f4917ada8d 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_WindowBorderToggle", 0, "Keyboard.HK_WindowBorderToggle", 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_WindowBorderToggle", 0, "Joystick.HK_WindowBorderToggle", 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..d86e96d749 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_WindowBorderToggle, HK_MAX }; diff --git a/src/frontend/qt_sdl/EmuInstanceInput.cpp b/src/frontend/qt_sdl/EmuInstanceInput.cpp index 5f8e7478da..6b0ebf6b1b 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_WindowBorderToggle", "HK_SwapScreens", "HK_SwapScreenEmphasis", "HK_SolarSensorDecrease", diff --git a/src/frontend/qt_sdl/EmuThread.cpp b/src/frontend/qt_sdl/EmuThread.cpp index df690a88f1..d2f4ad5486 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(windowBorderToggle()), window, SLOT(onWindowBorderToggled())); 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(windowBorderToggle()), window, SLOT(onWindowBorderToggled())); 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_WindowBorderToggle)) emit windowBorderToggle(); 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..687ebe37f5 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 windowBorderToggle(); void swapScreensToggle(); void screenEmphasisToggle(); diff --git a/src/frontend/qt_sdl/InputConfig/InputConfigDialog.h b/src/frontend/qt_sdl/InputConfig/InputConfigDialog.h index 462cdd6cbb..70610e6791 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_WindowBorderToggle, 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 window border", "Close/open lid", "Microphone", "Swap screens", diff --git a/src/frontend/qt_sdl/Window.cpp b/src/frontend/qt_sdl/Window.cpp index 73069d2eb8..ec4970689a 100755 --- a/src/frontend/qt_sdl/Window.cpp +++ b/src/frontend/qt_sdl/Window.cpp @@ -2210,6 +2210,24 @@ void MainWindow::onFullscreenToggled() toggleFullscreen(); } +void MainWindow::onWindowBorderToggled() +{ +#ifdef _WIN32 + HWND hwnd = (HWND)winId(); + LONG style = GetWindowLong(hwnd, GWL_STYLE); + + if (style & WS_CAPTION) { + style &= ~(WS_CAPTION | WS_THICKFRAME); + } else { + style |= WS_CAPTION | WS_THICKFRAME; + } + + SetWindowLong(hwnd, GWL_STYLE, style); + SetWindowPos(hwnd, nullptr, 0, 0, 0, 0, + SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED); +#endif +} + 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..08378de4f3 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 onWindowBorderToggled(); void onScreenEmphasisToggled(); private: