From 518f5f458f16f54c5c3af4b6c49d11d9dec65db0 Mon Sep 17 00:00:00 2001 From: Dentomologist Date: Mon, 13 Apr 2026 13:34:38 -0700 Subject: [PATCH] HacksWidget: Merge BoundingBox disabled tooltip into BalloonTip When a backend doesn't support BoundingBox, show that information in the BalloonTip instead of spawning a separate tooltip. --- .../DolphinQt/Config/Graphics/HacksWidget.cpp | 38 ++++++++++++------- .../DolphinQt/Config/Graphics/HacksWidget.h | 1 + 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp b/Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp index 274c789c90..c2e04a8d4b 100644 --- a/Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp +++ b/Source/Core/DolphinQt/Config/Graphics/HacksWidget.cpp @@ -128,15 +128,8 @@ void HacksWidget::CreateWidgets() void HacksWidget::OnBackendChanged(const QString& backend_name) { - const bool bbox = g_backend_info.bSupportsBBox; - 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_disable_bounding_box->setToolTip(!bbox ? tooltip : QString{}); - UpdateGPUTextureDecodingEnabled(backend_name); + UpdateBoundingBoxEnabled(backend_name); } void HacksWidget::ConnectWidgets() @@ -216,10 +209,6 @@ void HacksWidget::AddDescriptions() "Uses a less accurate algorithm to calculate depth values.

Causes issues in a few " "games, but can result in a decent speed increase depending on the game and/or " "GPU.

If unsure, leave this checked."); - static const char TR_DISABLE_BOUNDINGBOX_DESCRIPTION[] = - QT_TR_NOOP("Disables bounding box emulation.

This may improve GPU performance " - "significantly, but some games will break.

If " - "unsure, leave this checked."); 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 " @@ -249,7 +238,6 @@ void HacksWidget::AddDescriptions() m_immediate_xfb->SetDescription(tr(TR_IMMEDIATE_XFB_DESCRIPTION)); m_skip_duplicate_xfbs->SetDescription(tr(TR_SKIP_DUPLICATE_XFBS_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)); @@ -291,6 +279,30 @@ void HacksWidget::UpdateGPUTextureDecodingEnabled(const QString& backend_name) } } +void HacksWidget::UpdateBoundingBoxEnabled(const QString& backend_name) +{ + static const char TR_DISABLE_BOUNDINGBOX_DESCRIPTION[] = + QT_TR_NOOP("Disables bounding box emulation.

This may improve GPU performance " + "significantly, but some games will break.

"); + + 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("If unsure, leave this checked.")); + } + else + { + m_disable_bounding_box->SetDescription(tr(TR_DISABLE_BOUNDINGBOX_DESCRIPTION) + + tr("The %1 backend doesn't support " + "Bounding Box emulation.") + .arg(backend_name)); + } +} + void HacksWidget::UpdateDeferEFBCopiesEnabled() { // We disable the checkbox for defer EFB copies when both EFB and XFB copies to texture are diff --git a/Source/Core/DolphinQt/Config/Graphics/HacksWidget.h b/Source/Core/DolphinQt/Config/Graphics/HacksWidget.h index 8dd16192a7..5569e14abf 100644 --- a/Source/Core/DolphinQt/Config/Graphics/HacksWidget.h +++ b/Source/Core/DolphinQt/Config/Graphics/HacksWidget.h @@ -28,6 +28,7 @@ private: void AddDescriptions(); void UpdateGPUTextureDecodingEnabled(const QString& backend_name); + void UpdateBoundingBoxEnabled(const QString& backend_name); void UpdateDeferEFBCopiesEnabled(); void UpdateSkipPresentingDuplicateFramesEnabled();