Explorar o código

main: Add option to reset window size to 900p

ameerj %!s(int64=4) %!d(string=hai) anos
pai
achega
5c829c7e4e
Modificáronse 3 ficheiros con 53 adicións e 36 borrados
  1. 21 18
      src/yuzu/main.cpp
  2. 2 0
      src/yuzu/main.h
  3. 30 18
      src/yuzu/main.ui

+ 21 - 18
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<Layout::AspectRatio>(Settings::values.aspect_ratio.GetValue()),
-        static_cast<float>(Layout::ScreenUndocked::Height) / Layout::ScreenUndocked::Width);
+        static_cast<float>(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<Layout::AspectRatio>(Settings::values.aspect_ratio.GetValue()),
-        static_cast<float>(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() {

+ 2 - 0
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);

+ 30 - 18
src/yuzu/main.ui

@@ -78,6 +78,35 @@
     <property name="title">
      <string>&amp;View</string>
     </property>
+    <widget class="QMenu" name="menu_Reset_Window_Size">
+      <property name="title">
+        <string>&amp;Reset Window Size</string>
+      </property>
+    </widget>
+    <action name="action_Reset_Window_Size_720">
+      <property name="text">
+        <string>Reset Window Size to &amp;720p</string>
+      </property>
+      <property name="iconText">
+        <string>Reset Window Size to 720p</string>
+      </property>
+    </action>
+    <action name="action_Reset_Window_Size_900">
+      <property name="text">
+        <string>Reset Window Size to &amp;900p</string>
+      </property>
+      <property name="iconText">
+        <string>Reset Window Size to 900p</string>
+      </property>
+    </action>
+    <action name="action_Reset_Window_Size_1080">
+      <property name="text">
+        <string>Reset Window Size to &amp;1080p</string>
+      </property>
+      <property name="iconText">
+        <string>Reset Window Size to 1080p</string>
+      </property>
+    </action>
     <widget class="QMenu" name="menu_View_Debugging">
      <property name="title">
       <string>&amp;Debugging</string>
@@ -88,9 +117,8 @@
     <addaction name="action_Display_Dock_Widget_Headers"/>
     <addaction name="action_Show_Filter_Bar"/>
     <addaction name="action_Show_Status_Bar"/>
-    <addaction name="action_Reset_Window_Size_720"/>
-    <addaction name="action_Reset_Window_Size_1080"/>
     <addaction name="separator"/>
+    <addaction name="menu_Reset_Window_Size"/>
     <addaction name="menu_View_Debugging"/>
    </widget>
    <widget class="QMenu" name="menu_Tools">
@@ -216,22 +244,6 @@
     <string>Show Status Bar</string>
    </property>
   </action>
-  <action name="action_Reset_Window_Size_720">
-   <property name="text">
-    <string>Reset Window Size to &amp;720p</string>
-   </property>
-   <property name="iconText">
-    <string>Reset Window Size to 720p</string>
-   </property>
-  </action>
-  <action name="action_Reset_Window_Size_1080">
-   <property name="text">
-    <string>Reset Window Size to &amp;1080p</string>
-   </property>
-   <property name="iconText">
-    <string>Reset Window Size to 1080p</string>
-   </property>
-  </action>
   <action name="action_Fullscreen">
    <property name="checkable">
     <bool>true</bool>