summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2026-06-28 12:10:54 +0200
committerGitHub <noreply@github.com>2026-06-28 12:10:54 +0200
commit8038496a07e95cb98a6e322844c0ae2efd4deb45 (patch)
treea9e5b61f3191ae7e9d40070c526c8c7d8e5f3831 /Source/Core
parent37d6f29e062437d1e1cd72afcd707b4afc30940a (diff)
parent518f5f458f16f54c5c3af4b6c49d11d9dec65db0 (diff)
Merge pull request #14589 from Dentomologist/merge_tooltips_for_disabled_settings_into_balloontips
HacksWidget: Merge tooltips for disabled settings into balloontips
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp93
-rw-r--r--Source/Core/DolphinQt/Config/Graphics/HacksWidget.h18
2 files changed, 74 insertions, 37 deletions
diff --git a/Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp b/Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp
index 66ca11f6af..c2e04a8d4b 100644
--- a/Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp
+++ b/Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp
@@ -25,10 +25,13 @@ HacksWidget::HacksWidget(GraphicsPane* gfx_pane) : m_game_layer{gfx_pane->GetCon
ConnectWidgets();
AddDescriptions();
+ const auto get_backend_name = []() { return tr(Config::Get(Config::MAIN_GFX_BACKEND).data()); };
+
connect(gfx_pane, &GraphicsPane::BackendChanged, this, &HacksWidget::OnBackendChanged);
- OnBackendChanged(QString::fromStdString(Config::Get(Config::MAIN_GFX_BACKEND)));
connect(gfx_pane, &GraphicsPane::UpdateGPUTextureDecoding, this,
- &HacksWidget::UpdateGPUTextureDecodingEnabled);
+ [this, get_backend_name] { UpdateGPUTextureDecodingEnabled(get_backend_name()); });
+
+ OnBackendChanged(get_backend_name());
}
void HacksWidget::CreateWidgets()
@@ -125,17 +128,8 @@ void HacksWidget::CreateWidgets()
void HacksWidget::OnBackendChanged(const QString& backend_name)
{
- const bool bbox = g_backend_info.bSupportsBBox;
- const bool gpu_texture_decoding = g_backend_info.bSupportsGPUTextureDecoding;
-
- UpdateGPUTextureDecodingEnabled();
- m_disable_bounding_box->setEnabled(bbox);
-
- const QString tooltip = tr("%1 doesn't support this feature on your system.")
- .arg(tr(backend_name.toStdString().c_str()));
-
- m_gpu_texture_decoding->setToolTip(!gpu_texture_decoding ? tooltip : QString{});
- m_disable_bounding_box->setToolTip(!bbox ? tooltip : QString{});
+ UpdateGPUTextureDecodingEnabled(backend_name);
+ UpdateBoundingBoxEnabled(backend_name);
}
void HacksWidget::ConnectWidgets()
@@ -211,20 +205,10 @@ void HacksWidget::AddDescriptions()
"<br><br>This setting is unavailable when Immediately Present XFB or VBI Skip is "
"enabled. In those cases, duplicate frames are never presented."
"<br><br><dolphin_emphasis>If unsure, leave this checked.</dolphin_emphasis>");
- static const char TR_GPU_DECODING_DESCRIPTION[] = QT_TR_NOOP(
- "Enables texture decoding using the GPU instead of the CPU.<br><br>This may result in "
- "performance gains in some scenarios, or on systems where the CPU is the "
- "bottleneck.<br><br>This setting is disabled when Arbitrary Mipmap Detection is "
- "enabled.<br><br>"
- "<dolphin_emphasis>If unsure, leave this unchecked.</dolphin_emphasis>");
static const char TR_FAST_DEPTH_CALC_DESCRIPTION[] = QT_TR_NOOP(
"Uses a less accurate algorithm to calculate depth values.<br><br>Causes issues in a few "
"games, but can result in a decent speed increase depending on the game and/or "
"GPU.<br><br><dolphin_emphasis>If unsure, leave this checked.</dolphin_emphasis>");
- static const char TR_DISABLE_BOUNDINGBOX_DESCRIPTION[] =
- QT_TR_NOOP("Disables bounding box emulation.<br><br>This may improve GPU performance "
- "significantly, but some games will break.<br><br><dolphin_emphasis>If "
- "unsure, leave this checked.</dolphin_emphasis>");
static const char TR_SAVE_TEXTURE_CACHE_TO_STATE_DESCRIPTION[] =
QT_TR_NOOP("Includes the contents of the embedded frame buffer (EFB) and upscaled EFB copies "
"in save states. Fixes missing and/or non-upscaled textures/objects when loading "
@@ -253,19 +237,70 @@ void HacksWidget::AddDescriptions()
m_store_xfb_copies->SetDescription(tr(TR_STORE_XFB_TO_TEXTURE_DESCRIPTION));
m_immediate_xfb->SetDescription(tr(TR_IMMEDIATE_XFB_DESCRIPTION));
m_skip_duplicate_xfbs->SetDescription(tr(TR_SKIP_DUPLICATE_XFBS_DESCRIPTION));
- m_gpu_texture_decoding->SetDescription(tr(TR_GPU_DECODING_DESCRIPTION));
m_fast_depth_calculation->SetDescription(tr(TR_FAST_DEPTH_CALC_DESCRIPTION));
- m_disable_bounding_box->SetDescription(tr(TR_DISABLE_BOUNDINGBOX_DESCRIPTION));
m_save_texture_cache_state->SetDescription(tr(TR_SAVE_TEXTURE_CACHE_TO_STATE_DESCRIPTION));
m_vertex_rounding->SetDescription(tr(TR_VERTEX_ROUNDING_DESCRIPTION));
m_vi_skip->SetDescription(tr(TR_VI_SKIP_DESCRIPTION));
}
-void HacksWidget::UpdateGPUTextureDecodingEnabled()
+void HacksWidget::UpdateGPUTextureDecodingEnabled(const QString& backend_name)
+{
+ static const char TR_GPU_DECODING_DESCRIPTION[] = QT_TR_NOOP(
+ "Enables texture decoding using the GPU instead of the CPU.<br><br>This may result in "
+ "performance gains in some scenarios, or on systems where the CPU is the bottleneck."
+ "<br><br>This setting is disabled when Arbitrary Mipmap Detection is enabled.<br><br>");
+
+ const bool gpu_texture_decoding_supported = g_backend_info.bSupportsGPUTextureDecoding;
+ const bool arbitrary_mipmap_detection_enabled =
+ Get(m_game_layer, Config::GFX_ENHANCE_ARBITRARY_MIPMAP_DETECTION);
+ const bool gpu_texture_decoding_enabled =
+ gpu_texture_decoding_supported && !arbitrary_mipmap_detection_enabled;
+ m_gpu_texture_decoding->setEnabled(gpu_texture_decoding_enabled);
+
+ if (!gpu_texture_decoding_supported)
+ {
+ m_gpu_texture_decoding->SetDescription(tr(TR_GPU_DECODING_DESCRIPTION) +
+ tr("<dolphin_emphasis>The %1 backend doesn't support "
+ "GPU Texture Decoding.</dolphin_emphasis>")
+ .arg(backend_name));
+ }
+ else if (arbitrary_mipmap_detection_enabled)
+ {
+ m_gpu_texture_decoding->SetDescription(
+ tr(TR_GPU_DECODING_DESCRIPTION) +
+ tr("<dolphin_emphasis>GPU Texture Decoding is currently disabled by Arbitrary Mipmap "
+ "Detection.</dolphin_emphasis>"));
+ }
+ else
+ {
+ m_gpu_texture_decoding->SetDescription(
+ tr(TR_GPU_DECODING_DESCRIPTION) +
+ tr("<dolphin_emphasis>If unsure, leave this unchecked.</dolphin_emphasis>"));
+ }
+}
+
+void HacksWidget::UpdateBoundingBoxEnabled(const QString& backend_name)
{
- const bool gpu_texture_decoding = g_backend_info.bSupportsGPUTextureDecoding;
- m_gpu_texture_decoding->setEnabled(
- gpu_texture_decoding && !Get(m_game_layer, Config::GFX_ENHANCE_ARBITRARY_MIPMAP_DETECTION));
+ static const char TR_DISABLE_BOUNDINGBOX_DESCRIPTION[] =
+ QT_TR_NOOP("Disables bounding box emulation.<br><br>This may improve GPU performance "
+ "significantly, but some games will break.<br><br>");
+
+ const bool bbox = g_backend_info.bSupportsBBox;
+ m_disable_bounding_box->setEnabled(bbox);
+
+ if (bbox)
+ {
+ m_disable_bounding_box->SetDescription(
+ tr(TR_DISABLE_BOUNDINGBOX_DESCRIPTION) +
+ tr("<dolphin_emphasis>If unsure, leave this checked.</dolphin_emphasis>"));
+ }
+ else
+ {
+ m_disable_bounding_box->SetDescription(tr(TR_DISABLE_BOUNDINGBOX_DESCRIPTION) +
+ tr("<dolphin_emphasis>The %1 backend doesn't support "
+ "Bounding Box emulation.</dolphin_emphasis>")
+ .arg(backend_name));
+ }
}
void HacksWidget::UpdateDeferEFBCopiesEnabled()
diff --git a/Source/Core/DolphinQt/Config/Graphics/HacksWidget.h b/Source/Core/DolphinQt/Config/Graphics/HacksWidget.h
index 58504e791e..5569e14abf 100644
--- a/Source/Core/DolphinQt/Config/Graphics/HacksWidget.h
+++ b/Source/Core/DolphinQt/Config/Graphics/HacksWidget.h
@@ -9,6 +9,7 @@ class ConfigBool;
class ConfigSlider;
class ConfigSliderLabel;
class GraphicsPane;
+class QString;
namespace Config
{
@@ -22,6 +23,15 @@ public:
explicit HacksWidget(GraphicsPane* gfx_pane);
private:
+ void CreateWidgets();
+ void ConnectWidgets();
+ void AddDescriptions();
+
+ void UpdateGPUTextureDecodingEnabled(const QString& backend_name);
+ void UpdateBoundingBoxEnabled(const QString& backend_name);
+ void UpdateDeferEFBCopiesEnabled();
+ void UpdateSkipPresentingDuplicateFramesEnabled();
+
void OnBackendChanged(const QString& backend_name);
// EFB
@@ -48,12 +58,4 @@ private:
ConfigBool* m_save_texture_cache_state;
Config::Layer* m_game_layer = nullptr;
-
- void CreateWidgets();
- void ConnectWidgets();
- void AddDescriptions();
-
- void UpdateGPUTextureDecodingEnabled();
- void UpdateDeferEFBCopiesEnabled();
- void UpdateSkipPresentingDuplicateFramesEnabled();
};