diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp index 552c2cc631..3eea613540 100644 --- a/src/yuzu/main.cpp +++ b/src/yuzu/main.cpp @@ -1172,10 +1172,16 @@ void GMainWindow::ConnectMenuEvents() { &GMainWindow::OnDisplayTitleBars); connect(ui.action_Show_Filter_Bar, &QAction::triggered, this, &GMainWindow::OnToggleFilterBar); connect(ui.action_Show_Status_Bar, &QAction::triggered, statusBar(), &QStatusBar::setVisible); + connect(ui.action_Reset_Window_Size_720, &QAction::triggered, this, &GMainWindow::ResetWindowSize720); + connect(ui.action_Reset_Window_Size_900, &QAction::triggered, this, + &GMainWindow::ResetWindowSize900); connect(ui.action_Reset_Window_Size_1080, &QAction::triggered, this, &GMainWindow::ResetWindowSize1080); + ui.menu_Reset_Window_Size->addAction(ui.action_Reset_Window_Size_720); + ui.menu_Reset_Window_Size->addAction(ui.action_Reset_Window_Size_900); + ui.menu_Reset_Window_Size->addAction(ui.action_Reset_Window_Size_1080); // Fullscreen connect(ui.action_Fullscreen, &QAction::triggered, this, &GMainWindow::ToggleFullscreen); @@ -2621,32 +2627,29 @@ void GMainWindow::ToggleWindowMode() { } } -void GMainWindow::ResetWindowSize720() { +void GMainWindow::ResetWindowSize(u32 width, u32 height) { const auto aspect_ratio = Layout::EmulationAspectRatio( static_cast(Settings::values.aspect_ratio.GetValue()), - static_cast(Layout::ScreenUndocked::Height) / Layout::ScreenUndocked::Width); + static_cast(height) / width); if (!ui.action_Single_Window_Mode->isChecked()) { - render_window->resize(Layout::ScreenUndocked::Height / aspect_ratio, - Layout::ScreenUndocked::Height); + render_window->resize(height / aspect_ratio, height); } else { - resize(Layout::ScreenUndocked::Height / aspect_ratio, - Layout::ScreenUndocked::Height + menuBar()->height() + - (ui.action_Show_Status_Bar->isChecked() ? statusBar()->height() : 0)); + const bool show_status_bar = ui.action_Show_Status_Bar->isChecked(); + const auto status_bar_height = show_status_bar ? statusBar()->height() : 0; + resize(height / aspect_ratio, height + menuBar()->height() + status_bar_height); } } +void GMainWindow::ResetWindowSize720() { + ResetWindowSize(Layout::ScreenUndocked::Width, Layout::ScreenUndocked::Height); +} + +void GMainWindow::ResetWindowSize900() { + ResetWindowSize(1600U, 900U); +} + void GMainWindow::ResetWindowSize1080() { - const auto aspect_ratio = Layout::EmulationAspectRatio( - static_cast(Settings::values.aspect_ratio.GetValue()), - static_cast(Layout::ScreenDocked::Height) / Layout::ScreenDocked::Width); - if (!ui.action_Single_Window_Mode->isChecked()) { - render_window->resize(Layout::ScreenDocked::Height / aspect_ratio, - Layout::ScreenDocked::Height); - } else { - resize(Layout::ScreenDocked::Height / aspect_ratio, - Layout::ScreenDocked::Height + menuBar()->height() + - (ui.action_Show_Status_Bar->isChecked() ? statusBar()->height() : 0)); - } + ResetWindowSize(Layout::ScreenDocked::Width, Layout::ScreenDocked::Height); } void GMainWindow::OnConfigure() { diff --git a/src/yuzu/main.h b/src/yuzu/main.h index 60ce014718..5df2c94225 100644 --- a/src/yuzu/main.h +++ b/src/yuzu/main.h @@ -272,7 +272,9 @@ private slots: void ShowFullscreen(); void HideFullscreen(); void ToggleWindowMode(); + void ResetWindowSize(u32 width, u32 height); void ResetWindowSize720(); + void ResetWindowSize900(); void ResetWindowSize1080(); void OnCaptureScreenshot(); void OnCoreError(Core::System::ResultStatus, std::string); diff --git a/src/yuzu/main.ui b/src/yuzu/main.ui index 653c010d82..a62e39a061 100644 --- a/src/yuzu/main.ui +++ b/src/yuzu/main.ui @@ -78,6 +78,35 @@ &View + + + &Reset Window Size + + + + + Reset Window Size to &720p + + + Reset Window Size to 720p + + + + + Reset Window Size to &900p + + + Reset Window Size to 900p + + + + + Reset Window Size to &1080p + + + Reset Window Size to 1080p + + &Debugging @@ -88,9 +117,8 @@ - - + @@ -216,22 +244,6 @@ Show Status Bar - - - Reset Window Size to &720p - - - Reset Window Size to 720p - - - - - Reset Window Size to &1080p - - - Reset Window Size to 1080p - - true