summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorJordan Woyak <jordan.woyak@gmail.com>2025-05-13 14:45:06 -0500
committerJordan Woyak <jordan.woyak@gmail.com>2025-06-14 16:26:09 -0500
commit89b8edea03bb77629de663c82b6dc070e3ca0442 (patch)
tree9984855d30102f3eabef452955f447b757d00229 /Source/Core
parent2047eaf1d86839b53bb92cf79cfae8be2a568ed6 (diff)
DolphinQt: Move graphics config to main Settings window.
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/DolphinQt/CMakeLists.txt4
-rw-r--r--Source/Core/DolphinQt/Config/GameConfigWidget.cpp20
-rw-r--r--Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp23
-rw-r--r--Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.h6
-rw-r--r--Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp26
-rw-r--r--Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.h9
-rw-r--r--Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp13
-rw-r--r--Source/Core/DolphinQt/Config/Graphics/GeneralWidget.h10
-rw-r--r--Source/Core/DolphinQt/Config/Graphics/GraphicsPane.cpp (renamed from Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.cpp)35
-rw-r--r--Source/Core/DolphinQt/Config/Graphics/GraphicsPane.h (renamed from Source/Core/DolphinQt/Config/Graphics/GraphicsWindow.h)23
-rw-r--r--Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp15
-rw-r--r--Source/Core/DolphinQt/Config/Graphics/HacksWidget.h8
-rw-r--r--Source/Core/DolphinQt/Config/SettingsWindow.cpp6
-rw-r--r--Source/Core/DolphinQt/Config/SettingsWindow.h4
-rw-r--r--Source/Core/DolphinQt/DolphinQt.vcxproj4
-rw-r--r--Source/Core/DolphinQt/MainWindow.cpp30
-rw-r--r--Source/Core/DolphinQt/MainWindow.h2
17 files changed, 77 insertions, 161 deletions
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 <cmath>
-
#include <QGridLayout>
#include <QGroupBox>
#include <QLabel>
@@ -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 <array>
-
#include <QWidget>
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 <typename T>
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
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 <QDialogButtonBox>
#include <QEvent>
@@ -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
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 <QDialog>
-#include <QHash>
+#include <QWidget>
-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 <QHBoxLayout>
#include <QListWidget>
#include <QStackedWidget>
+#include <QTabWidget>
#include <QVBoxLayout>
#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 @@
<ClCompile Include="Config\Graphics\AdvancedWidget.cpp" />
<ClCompile Include="Config\Graphics\EnhancementsWidget.cpp" />
<ClCompile Include="Config\Graphics\GeneralWidget.cpp" />
- <ClCompile Include="Config\Graphics\GraphicsWindow.cpp" />
+ <ClCompile Include="Config\Graphics\GraphicsPane.cpp" />
<ClCompile Include="Config\Graphics\HacksWidget.cpp" />
<ClCompile Include="Config\Graphics\ColorCorrectionConfigWindow.cpp" />
<ClCompile Include="Config\Graphics\PostProcessingConfigWindow.cpp" />
@@ -304,7 +304,7 @@
<QtMoc Include="Config\Graphics\AdvancedWidget.h" />
<QtMoc Include="Config\Graphics\EnhancementsWidget.h" />
<QtMoc Include="Config\Graphics\GeneralWidget.h" />
- <QtMoc Include="Config\Graphics\GraphicsWindow.h" />
+ <QtMoc Include="Config\Graphics\GraphicsPane.h" />
<QtMoc Include="Config\Graphics\HacksWidget.h" />
<QtMoc Include="Config\Graphics\ColorCorrectionConfigWindow.h" />
<QtMoc Include="Config\Graphics\PostProcessingConfigWindow.h" />
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<X11Utils::XRRConfiguration>(
+ static_cast<Display*>(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<X11Utils::XRRConfiguration>(
- static_cast<Display*>(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<BootParameters> 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;