From 89b8edea03bb77629de663c82b6dc070e3ca0442 Mon Sep 17 00:00:00 2001 From: Jordan Woyak Date: Tue, 13 May 2025 14:45:06 -0500 Subject: [PATCH] DolphinQt: Move graphics config to main Settings window. --- Source/Core/DolphinQt/CMakeLists.txt | 4 +-- .../DolphinQt/Config/GameConfigWidget.cpp | 20 ++--------- .../Config/Graphics/AdvancedWidget.cpp | 23 +++--------- .../Config/Graphics/AdvancedWidget.h | 6 ++-- .../Config/Graphics/EnhancementsWidget.cpp | 26 ++++---------- .../Config/Graphics/EnhancementsWidget.h | 9 ++--- .../Config/Graphics/GeneralWidget.cpp | 13 ++----- .../DolphinQt/Config/Graphics/GeneralWidget.h | 10 ++---- .../{GraphicsWindow.cpp => GraphicsPane.cpp} | 35 ++++++++----------- .../{GraphicsWindow.h => GraphicsPane.h} | 23 ++++++------ .../DolphinQt/Config/Graphics/HacksWidget.cpp | 15 +++----- .../DolphinQt/Config/Graphics/HacksWidget.h | 8 ++--- .../Core/DolphinQt/Config/SettingsWindow.cpp | 6 +++- Source/Core/DolphinQt/Config/SettingsWindow.h | 4 ++- Source/Core/DolphinQt/DolphinQt.vcxproj | 4 +-- Source/Core/DolphinQt/MainWindow.cpp | 30 ++++++---------- Source/Core/DolphinQt/MainWindow.h | 2 -- 17 files changed, 77 insertions(+), 161 deletions(-) rename Source/Core/DolphinQt/Config/Graphics/{GraphicsWindow.cpp => GraphicsPane.cpp} (66%) rename Source/Core/DolphinQt/Config/Graphics/{GraphicsWindow.h => GraphicsPane.h} (57%) diff --git a/Source/Core/DolphinQt/CMakeLists.txt b/Source/Core/DolphinQt/CMakeLists.txt index a86b41cd68..344a8eb8a0 100644 --- a/Source/Core/DolphinQt/CMakeLists.txt +++ b/Source/Core/DolphinQt/CMakeLists.txt @@ -93,8 +93,8 @@ add_executable(dolphin-emu Config/Graphics/EnhancementsWidget.h Config/Graphics/GeneralWidget.cpp Config/Graphics/GeneralWidget.h - Config/Graphics/GraphicsWindow.cpp - Config/Graphics/GraphicsWindow.h + Config/Graphics/GraphicsPane.cpp + Config/Graphics/GraphicsPane.h Config/Graphics/HacksWidget.cpp Config/Graphics/HacksWidget.h Config/Graphics/ColorCorrectionConfigWindow.cpp diff --git a/Source/Core/DolphinQt/Config/GameConfigWidget.cpp b/Source/Core/DolphinQt/Config/GameConfigWidget.cpp index bdddc1b879..1fa2a50292 100644 --- a/Source/Core/DolphinQt/Config/GameConfigWidget.cpp +++ b/Source/Core/DolphinQt/Config/GameConfigWidget.cpp @@ -28,10 +28,7 @@ #include "DolphinQt/Config/ConfigControls/ConfigRadio.h" #include "DolphinQt/Config/ConfigControls/ConfigSlider.h" #include "DolphinQt/Config/GameConfigEdit.h" -#include "DolphinQt/Config/Graphics/AdvancedWidget.h" -#include "DolphinQt/Config/Graphics/EnhancementsWidget.h" -#include "DolphinQt/Config/Graphics/GeneralWidget.h" -#include "DolphinQt/Config/Graphics/HacksWidget.h" +#include "DolphinQt/Config/Graphics/GraphicsPane.h" #include "DolphinQt/QtUtils/QtUtils.h" #include "DolphinQt/QtUtils/WrapInScrollArea.h" @@ -197,21 +194,10 @@ void GameConfigWidget::CreateWidgets() auto* tab_widget = new QTabWidget; tab_widget->addTab(general_widget, tr("General")); - // GFX settings tabs. Placed in a QWidget for consistent margins. - auto* gfx_tab_holder = new QWidget; - auto* gfx_layout = new QVBoxLayout; - gfx_tab_holder->setLayout(gfx_layout); - tab_widget->addTab(gfx_tab_holder, tr("Graphics")); + auto* const gfx_widget = new GraphicsPane{nullptr, m_layer.get()}; + tab_widget->addTab(gfx_widget, tr("Graphics")); - auto* gfx_tabs = new QTabWidget; - - gfx_tabs->addTab(GetWrappedWidget(new GeneralWidget(this, m_layer.get())), tr("General")); - gfx_tabs->addTab(GetWrappedWidget(new EnhancementsWidget(this, m_layer.get())), - tr("Enhancements")); - gfx_tabs->addTab(GetWrappedWidget(new HacksWidget(this, m_layer.get())), tr("Hacks")); - gfx_tabs->addTab(GetWrappedWidget(new AdvancedWidget(this, m_layer.get())), tr("Advanced")); const int editor_index = tab_widget->addTab(advanced_widget, tr("Editor")); - gfx_layout->addWidget(gfx_tabs); connect(tab_widget, &QTabWidget::currentChanged, this, [this, editor_index](int index) { // Update the ini editor after editing other tabs. diff --git a/Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp b/Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp index ff14b26ad2..cfac1358b9 100644 --- a/Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp +++ b/Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp @@ -18,43 +18,28 @@ #include "DolphinQt/Config/ConfigControls/ConfigChoice.h" #include "DolphinQt/Config/ConfigControls/ConfigInteger.h" #include "DolphinQt/Config/GameConfigWidget.h" -#include "DolphinQt/Config/Graphics/GraphicsWindow.h" -#include "DolphinQt/Config/ToolTipControls/ToolTipCheckBox.h" -#include "DolphinQt/QtUtils/SignalBlocking.h" +#include "DolphinQt/Config/Graphics/GraphicsPane.h" #include "DolphinQt/Settings.h" #include "VideoCommon/VideoConfig.h" -AdvancedWidget::AdvancedWidget(GraphicsWindow* parent) +AdvancedWidget::AdvancedWidget(GraphicsPane* gfx_pane) : m_game_layer{gfx_pane->GetConfigLayer()} { CreateWidgets(); ConnectWidgets(); AddDescriptions(); - connect(parent, &GraphicsWindow::BackendChanged, this, &AdvancedWidget::OnBackendChanged); + connect(gfx_pane, &GraphicsPane::BackendChanged, this, &AdvancedWidget::OnBackendChanged); connect(&Settings::Instance(), &Settings::EmulationStateChanged, this, [this](Core::State state) { OnEmulationStateChanged(state != Core::State::Uninitialized); }); connect(m_manual_texture_sampling, &QCheckBox::toggled, - [parent] { emit parent->UseFastTextureSamplingChanged(); }); + [gfx_pane] { emit gfx_pane->UseFastTextureSamplingChanged(); }); OnBackendChanged(); OnEmulationStateChanged(!Core::IsUninitialized(Core::System::GetInstance())); } -AdvancedWidget::AdvancedWidget(GameConfigWidget* parent, Config::Layer* layer) : m_game_layer(layer) -{ - CreateWidgets(); - ConnectWidgets(); - AddDescriptions(); - - connect(&Settings::Instance(), &Settings::EmulationStateChanged, this, [this](Core::State state) { - OnEmulationStateChanged(state != Core::State::Uninitialized); - }); - OnEmulationStateChanged(Core::GetState(Core::System::GetInstance()) != - Core::State::Uninitialized); -} - void AdvancedWidget::CreateWidgets() { const bool local_edit = m_game_layer != nullptr; diff --git a/Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.h b/Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.h index d6cd8e975e..73fb5c3943 100644 --- a/Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.h +++ b/Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.h @@ -8,8 +8,7 @@ class ConfigBool; class ConfigChoice; class ConfigInteger; -class GameConfigWidget; -class GraphicsWindow; +class GraphicsPane; namespace Config { @@ -20,8 +19,7 @@ class AdvancedWidget final : public QWidget { Q_OBJECT public: - explicit AdvancedWidget(GraphicsWindow* parent); - AdvancedWidget(GameConfigWidget* parent, Config::Layer* layer); + explicit AdvancedWidget(GraphicsPane* gfx_pane); private: void CreateWidgets(); diff --git a/Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp b/Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp index 7d89d9238a..a80f9a7fcf 100644 --- a/Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp +++ b/Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp @@ -3,8 +3,6 @@ #include "DolphinQt/Config/Graphics/EnhancementsWidget.h" -#include - #include #include #include @@ -21,18 +19,18 @@ #include "DolphinQt/Config/ConfigControls/ConfigSlider.h" #include "DolphinQt/Config/GameConfigWidget.h" #include "DolphinQt/Config/Graphics/ColorCorrectionConfigWindow.h" -#include "DolphinQt/Config/Graphics/GraphicsWindow.h" +#include "DolphinQt/Config/Graphics/GraphicsPane.h" #include "DolphinQt/Config/Graphics/PostProcessingConfigWindow.h" #include "DolphinQt/Config/ToolTipControls/ToolTipPushButton.h" #include "DolphinQt/QtUtils/NonDefaultQPushButton.h" -#include "DolphinQt/Settings.h" #include "VideoCommon/PostProcessing.h" #include "VideoCommon/VideoBackendBase.h" #include "VideoCommon/VideoCommon.h" #include "VideoCommon/VideoConfig.h" -EnhancementsWidget::EnhancementsWidget(GraphicsWindow* parent) +EnhancementsWidget::EnhancementsWidget(GraphicsPane* gfx_pane) + : m_game_layer{gfx_pane->GetConfigLayer()} { CreateWidgets(); LoadPPShaders(); @@ -40,27 +38,15 @@ EnhancementsWidget::EnhancementsWidget(GraphicsWindow* parent) AddDescriptions(); // BackendChanged is called by parent on window creation. - connect(parent, &GraphicsWindow::BackendChanged, this, &EnhancementsWidget::OnBackendChanged); - connect(parent, &GraphicsWindow::UseFastTextureSamplingChanged, this, [this] { + connect(gfx_pane, &GraphicsPane::BackendChanged, this, &EnhancementsWidget::OnBackendChanged); + connect(gfx_pane, &GraphicsPane::UseFastTextureSamplingChanged, this, [this] { m_texture_filtering_combo->setEnabled(ReadSetting(Config::GFX_HACK_FAST_TEXTURE_SAMPLING)); }); - connect(parent, &GraphicsWindow::UseGPUTextureDecodingChanged, this, [this] { + connect(gfx_pane, &GraphicsPane::UseGPUTextureDecodingChanged, this, [this] { m_arbitrary_mipmap_detection->setEnabled(!ReadSetting(Config::GFX_ENABLE_GPU_TEXTURE_DECODING)); }); } -EnhancementsWidget::EnhancementsWidget(GameConfigWidget* parent, Config::Layer* layer) - : m_game_layer(layer) -{ - CreateWidgets(); - LoadPPShaders(); - ConnectWidgets(); - AddDescriptions(); - - connect(&Settings::Instance(), &Settings::ConfigChanged, this, - &EnhancementsWidget::OnConfigChanged); -} - constexpr int ANISO_1x = Common::ToUnderlying(AnisotropicFilteringMode::Force1x); constexpr int ANISO_2X = Common::ToUnderlying(AnisotropicFilteringMode::Force2x); constexpr int ANISO_4X = Common::ToUnderlying(AnisotropicFilteringMode::Force4x); diff --git a/Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.h b/Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.h index b3eeca785b..51fa23f61d 100644 --- a/Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.h +++ b/Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.h @@ -3,8 +3,6 @@ #pragma once -#include - #include class ConfigBool; @@ -12,11 +10,9 @@ class ConfigChoice; class ConfigComplexChoice; class ConfigStringChoice; class ConfigSlider; -class GameConfigWidget; -class GraphicsWindow; +class GraphicsPane; class QPushButton; class ToolTipPushButton; -enum class StereoMode : int; namespace Config { @@ -29,8 +25,7 @@ class EnhancementsWidget final : public QWidget { Q_OBJECT public: - explicit EnhancementsWidget(GraphicsWindow* parent); - EnhancementsWidget(GameConfigWidget* parent, Config::Layer* layer); + explicit EnhancementsWidget(GraphicsPane* gfx_pane); private: template diff --git a/Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp b/Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp index 5a08767572..0ffc29cda9 100644 --- a/Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp +++ b/Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp @@ -24,7 +24,7 @@ #include "DolphinQt/Config/ConfigControls/ConfigInteger.h" #include "DolphinQt/Config/ConfigControls/ConfigRadio.h" #include "DolphinQt/Config/GameConfigWidget.h" -#include "DolphinQt/Config/Graphics/GraphicsWindow.h" +#include "DolphinQt/Config/Graphics/GraphicsPane.h" #include "DolphinQt/Config/ToolTipControls/ToolTipComboBox.h" #include "DolphinQt/QtUtils/ModalMessageBox.h" #include "DolphinQt/Settings.h" @@ -32,26 +32,19 @@ #include "VideoCommon/VideoBackendBase.h" #include "VideoCommon/VideoConfig.h" -GeneralWidget::GeneralWidget(GraphicsWindow* parent) +GeneralWidget::GeneralWidget(GraphicsPane* gfx_pane) : m_game_layer{gfx_pane->GetConfigLayer()} { CreateWidgets(); ConnectWidgets(); AddDescriptions(); - connect(parent, &GraphicsWindow::BackendChanged, this, &GeneralWidget::OnBackendChanged); + connect(gfx_pane, &GraphicsPane::BackendChanged, this, &GeneralWidget::OnBackendChanged); connect(&Settings::Instance(), &Settings::EmulationStateChanged, this, [this](Core::State state) { OnEmulationStateChanged(state != Core::State::Uninitialized); }); OnEmulationStateChanged(!Core::IsUninitialized(Core::System::GetInstance())); } -GeneralWidget::GeneralWidget(GameConfigWidget* parent, Config::Layer* layer) : m_game_layer(layer) -{ - CreateWidgets(); - ConnectWidgets(); - AddDescriptions(); -} - void GeneralWidget::CreateWidgets() { auto* main_layout = new QVBoxLayout; diff --git a/Source/Core/DolphinQt/Config/Graphics/GeneralWidget.h b/Source/Core/DolphinQt/Config/Graphics/GeneralWidget.h index 30849234f3..e96b39d04e 100644 --- a/Source/Core/DolphinQt/Config/Graphics/GeneralWidget.h +++ b/Source/Core/DolphinQt/Config/Graphics/GeneralWidget.h @@ -12,13 +12,8 @@ class ConfigChoice; class ConfigInteger; class ConfigRadioInt; class ConfigStringChoice; -class GameConfigWidget; -class GraphicsWindow; -class QCheckBox; -class QComboBox; +class GraphicsPane; class QLabel; -class QRadioButton; -class QGridLayout; class ToolTipComboBox; namespace Config @@ -30,8 +25,7 @@ class GeneralWidget final : public QWidget { Q_OBJECT public: - explicit GeneralWidget(GraphicsWindow* parent); - GeneralWidget(GameConfigWidget* parent, Config::Layer* layer); + explicit GeneralWidget(GraphicsPane* gfx_pane); signals: void BackendChanged(const QString& backend); diff --git a/Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp b/Source/Core/DolphinQt/Config/Graphics/GraphicsPane.cpp similarity index 66% rename from Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp rename to Source/Core/DolphinQt/Config/Graphics/GraphicsPane.cpp index f6f80cb4c7..799ea326f1 100644 --- a/Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp +++ b/Source/Core/DolphinQt/Config/Graphics/GraphicsPane.cpp @@ -1,7 +1,7 @@ // Copyright 2017 Dolphin Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -#include "DolphinQt/Config/Graphics/GraphicsWindow.h" +#include "DolphinQt/Config/Graphics/GraphicsPane.h" #include #include @@ -23,34 +23,32 @@ #include "VideoCommon/VideoBackendBase.h" -GraphicsWindow::GraphicsWindow(MainWindow* parent) : QDialog(parent), m_main_window(parent) +GraphicsPane::GraphicsPane(MainWindow* main_window, Config::Layer* config_layer) + : m_main_window(main_window), m_config_layer{config_layer} { CreateMainLayout(); - setWindowTitle(tr("Graphics")); - OnBackendChanged(QString::fromStdString(Config::Get(Config::MAIN_GFX_BACKEND))); - - QtUtils::AdjustSizeWithinScreen(this); } -void GraphicsWindow::CreateMainLayout() +Config::Layer* GraphicsPane::GetConfigLayer() { - auto* const main_layout = new QVBoxLayout(); - auto* const tab_widget = new QTabWidget(); - auto* const button_box = new QDialogButtonBox(QDialogButtonBox::Close); + return m_config_layer; +} - connect(button_box, &QDialogButtonBox::rejected, this, &QDialog::reject); +void GraphicsPane::CreateMainLayout() +{ + auto* const main_layout = new QVBoxLayout{this}; + auto* const tab_widget = new QTabWidget; main_layout->addWidget(tab_widget); - main_layout->addWidget(button_box); auto* const general_widget = new GeneralWidget(this); auto* const enhancements_widget = new EnhancementsWidget(this); auto* const hacks_widget = new HacksWidget(this); auto* const advanced_widget = new AdvancedWidget(this); - connect(general_widget, &GeneralWidget::BackendChanged, this, &GraphicsWindow::OnBackendChanged); + connect(general_widget, &GeneralWidget::BackendChanged, this, &GraphicsPane::OnBackendChanged); QWidget* const wrapped_general = GetWrappedWidget(general_widget); QWidget* const wrapped_enhancements = GetWrappedWidget(enhancements_widget); @@ -61,16 +59,13 @@ void GraphicsWindow::CreateMainLayout() tab_widget->addTab(wrapped_enhancements, tr("Enhancements")); tab_widget->addTab(wrapped_hacks, tr("Hacks")); tab_widget->addTab(wrapped_advanced, tr("Advanced")); - - setLayout(main_layout); } -void GraphicsWindow::OnBackendChanged(const QString& backend_name) +void GraphicsPane::OnBackendChanged(const QString& backend_name) { - VideoBackendBase::PopulateBackendInfo(m_main_window->GetWindowSystemInfo()); - - setWindowTitle( - tr("%1 Graphics Configuration").arg(tr(g_video_backend->GetDisplayName().c_str()))); + // TODO: Game properties graphics config does not properly handle backend info. + if (m_main_window != nullptr) + VideoBackendBase::PopulateBackendInfo(m_main_window->GetWindowSystemInfo()); emit BackendChanged(backend_name); } diff --git a/Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.h b/Source/Core/DolphinQt/Config/Graphics/GraphicsPane.h similarity index 57% rename from Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.h rename to Source/Core/DolphinQt/Config/Graphics/GraphicsPane.h index 97673563b5..ffc55600ca 100644 --- a/Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.h +++ b/Source/Core/DolphinQt/Config/Graphics/GraphicsPane.h @@ -3,24 +3,22 @@ #pragma once -#include -#include +#include -class AdvancedWidget; -class EnhancementsWidget; -class HacksWidget; -class GeneralWidget; class MainWindow; -class QLabel; -class QTabWidget; -class QDialogButtonBox; -class SoftwareRendererWidget; -class GraphicsWindow final : public QDialog +namespace Config +{ +class Layer; +} // namespace Config + +class GraphicsPane final : public QWidget { Q_OBJECT public: - explicit GraphicsWindow(MainWindow* parent); + explicit GraphicsPane(MainWindow* main_window, Config::Layer* config_layer); + + Config::Layer* GetConfigLayer(); signals: void BackendChanged(const QString& backend); @@ -32,4 +30,5 @@ private: void OnBackendChanged(const QString& backend); MainWindow* const m_main_window; + Config::Layer* const m_config_layer; }; diff --git a/Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp b/Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp index 21825a0687..0ac50ac38d 100644 --- a/Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp +++ b/Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp @@ -15,27 +15,20 @@ #include "DolphinQt/Config/ConfigControls/ConfigBool.h" #include "DolphinQt/Config/ConfigControls/ConfigSlider.h" #include "DolphinQt/Config/GameConfigWidget.h" -#include "DolphinQt/Config/Graphics/GraphicsWindow.h" +#include "DolphinQt/Config/Graphics/GraphicsPane.h" #include "VideoCommon/VideoConfig.h" -HacksWidget::HacksWidget(GraphicsWindow* parent) +HacksWidget::HacksWidget(GraphicsPane* gfx_pane) : m_game_layer{gfx_pane->GetConfigLayer()} { CreateWidgets(); ConnectWidgets(); AddDescriptions(); - connect(parent, &GraphicsWindow::BackendChanged, this, &HacksWidget::OnBackendChanged); + connect(gfx_pane, &GraphicsPane::BackendChanged, this, &HacksWidget::OnBackendChanged); OnBackendChanged(QString::fromStdString(Config::Get(Config::MAIN_GFX_BACKEND))); connect(m_gpu_texture_decoding, &QCheckBox::toggled, - [parent] { emit parent->UseGPUTextureDecodingChanged(); }); -} - -HacksWidget::HacksWidget(GameConfigWidget* parent, Config::Layer* layer) : m_game_layer(layer) -{ - CreateWidgets(); - ConnectWidgets(); - AddDescriptions(); + [gfx_pane] { emit gfx_pane->UseGPUTextureDecodingChanged(); }); } void HacksWidget::CreateWidgets() diff --git a/Source/Core/DolphinQt/Config/Graphics/HacksWidget.h b/Source/Core/DolphinQt/Config/Graphics/HacksWidget.h index 3683c36075..f944941dbb 100644 --- a/Source/Core/DolphinQt/Config/Graphics/HacksWidget.h +++ b/Source/Core/DolphinQt/Config/Graphics/HacksWidget.h @@ -8,10 +8,7 @@ class ConfigBool; class ConfigSlider; class ConfigSliderLabel; -class GameConfigWidget; -class GraphicsWindow; -class QLabel; -class ToolTipSlider; +class GraphicsPane; namespace Config { @@ -22,8 +19,7 @@ class HacksWidget final : public QWidget { Q_OBJECT public: - explicit HacksWidget(GraphicsWindow* parent); - HacksWidget(GameConfigWidget* parent, Config::Layer* layer); + explicit HacksWidget(GraphicsPane* gfx_pane); private: void OnBackendChanged(const QString& backend_name); diff --git a/Source/Core/DolphinQt/Config/SettingsWindow.cpp b/Source/Core/DolphinQt/Config/SettingsWindow.cpp index 35bda6d93f..af7b68445e 100644 --- a/Source/Core/DolphinQt/Config/SettingsWindow.cpp +++ b/Source/Core/DolphinQt/Config/SettingsWindow.cpp @@ -7,11 +7,14 @@ #include #include #include +#include #include #include "Common/EnumUtils.h" #include "DolphinQt/Config/ControllersPane.h" +#include "DolphinQt/Config/Graphics/GraphicsPane.h" +#include "DolphinQt/MainWindow.h" #include "DolphinQt/QtUtils/QtUtils.h" #include "DolphinQt/QtUtils/WrapInScrollArea.h" #include "DolphinQt/Settings/AdvancedPane.h" @@ -130,12 +133,13 @@ void StackedSettingsWindow::ActivatePane(int index) m_navigation_list->setCurrentRow(index); } -SettingsWindow::SettingsWindow(QWidget* parent) : StackedSettingsWindow{parent} +SettingsWindow::SettingsWindow(MainWindow* parent) : StackedSettingsWindow{parent} { setWindowTitle(tr("Settings")); // If you change the order, don't forget to update the SettingsWindowPaneIndex enum. AddWrappedPane(new GeneralPane, tr("General")); + AddPane(new GraphicsPane{parent, nullptr}, tr("Graphics")); AddWrappedPane(new ControllersPane, tr("Controllers")); AddWrappedPane(new InterfacePane, tr("Interface")); AddWrappedPane(new AudioPane, tr("Audio")); diff --git a/Source/Core/DolphinQt/Config/SettingsWindow.h b/Source/Core/DolphinQt/Config/SettingsWindow.h index 6bccda70b1..3ee0785fe4 100644 --- a/Source/Core/DolphinQt/Config/SettingsWindow.h +++ b/Source/Core/DolphinQt/Config/SettingsWindow.h @@ -7,6 +7,7 @@ class QStackedWidget; class QListWidget; +class MainWindow; // A settings window with a QListWidget to switch between panes of a QStackedWidget. class StackedSettingsWindow : public QDialog @@ -34,6 +35,7 @@ private: enum class SettingsWindowPaneIndex : int { General = 0, + Graphics, Controllers, Interface, Audio, @@ -47,7 +49,7 @@ class SettingsWindow final : public StackedSettingsWindow { Q_OBJECT public: - explicit SettingsWindow(QWidget* parent = nullptr); + explicit SettingsWindow(MainWindow* parent); void SelectPane(SettingsWindowPaneIndex); }; diff --git a/Source/Core/DolphinQt/DolphinQt.vcxproj b/Source/Core/DolphinQt/DolphinQt.vcxproj index dc67819d75..075ccb90c3 100644 --- a/Source/Core/DolphinQt/DolphinQt.vcxproj +++ b/Source/Core/DolphinQt/DolphinQt.vcxproj @@ -80,7 +80,7 @@ - + @@ -304,7 +304,7 @@ - + diff --git a/Source/Core/DolphinQt/MainWindow.cpp b/Source/Core/DolphinQt/MainWindow.cpp index c26c6a3f6f..a175860260 100644 --- a/Source/Core/DolphinQt/MainWindow.cpp +++ b/Source/Core/DolphinQt/MainWindow.cpp @@ -78,7 +78,6 @@ #include "DolphinQt/Achievements/AchievementsWindow.h" #include "DolphinQt/CheatsManager.h" #include "DolphinQt/Config/FreeLookWindow.h" -#include "DolphinQt/Config/Graphics/GraphicsWindow.h" #include "DolphinQt/Config/LogConfigWidget.h" #include "DolphinQt/Config/LogWidget.h" #include "DolphinQt/Config/Mapping/MappingWindow.h" @@ -1306,6 +1305,15 @@ void MainWindow::ShowSettingsWindow() { if (!m_settings_window) { +#ifdef HAVE_XRANDR + if (GetWindowSystemType() == WindowSystemType::X11) + { + m_xrr_config = std::make_unique( + static_cast(QGuiApplication::platformNativeInterface()->nativeResourceForWindow( + "display", windowHandle())), + winId()); + } +#endif m_settings_window = new SettingsWindow(this); InstallHotkeyFilter(m_settings_window); } @@ -1348,24 +1356,8 @@ void MainWindow::ShowHotkeyDialog() void MainWindow::ShowGraphicsWindow() { - if (!m_graphics_window) - { -#ifdef HAVE_XRANDR - if (GetWindowSystemType() == WindowSystemType::X11) - { - m_xrr_config = std::make_unique( - static_cast(QGuiApplication::platformNativeInterface()->nativeResourceForWindow( - "display", windowHandle())), - winId()); - } -#endif - m_graphics_window = new GraphicsWindow(this); - InstallHotkeyFilter(m_graphics_window); - } - - m_graphics_window->show(); - m_graphics_window->raise(); - m_graphics_window->activateWindow(); + ShowSettingsWindow(); + m_settings_window->SelectPane(SettingsWindowPaneIndex::Graphics); } void MainWindow::ShowNetPlaySetupDialog() diff --git a/Source/Core/DolphinQt/MainWindow.h b/Source/Core/DolphinQt/MainWindow.h index afb44f4608..d648e6189c 100644 --- a/Source/Core/DolphinQt/MainWindow.h +++ b/Source/Core/DolphinQt/MainWindow.h @@ -34,7 +34,6 @@ class FreeLookWindow; class GameList; class GBATASInputWindow; class GCTASInputWindow; -class GraphicsWindow; class HotkeyScheduler; class InfinityBaseWindow; class JITWidget; @@ -246,7 +245,6 @@ private: std::unique_ptr m_pending_boot; SettingsWindow* m_settings_window = nullptr; - GraphicsWindow* m_graphics_window = nullptr; FIFOPlayerWindow* m_fifo_window = nullptr; SkylanderPortalWindow* m_skylander_window = nullptr; InfinityBaseWindow* m_infinity_window = nullptr;