From 717225ce034db06b80fac703b9272a3b418751d5 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Thu, 18 Jan 2024 18:16:03 +0200 Subject: [PATCH] Fix issue with translation of tool groups. --- src/libs/vwidgets/vtoolbuttonpopup.cpp | 40 ++++++++++++++++++++------ src/libs/vwidgets/vtoolbuttonpopup.h | 12 ++++---- 2 files changed, 37 insertions(+), 15 deletions(-) diff --git a/src/libs/vwidgets/vtoolbuttonpopup.cpp b/src/libs/vwidgets/vtoolbuttonpopup.cpp index 314dde82d..bc91b52d8 100644 --- a/src/libs/vwidgets/vtoolbuttonpopup.cpp +++ b/src/libs/vwidgets/vtoolbuttonpopup.cpp @@ -28,19 +28,41 @@ #include "vtoolbuttonpopup.h" #include +#include //--------------------------------------------------------------------------------------------------------------------- VToolButtonPopup::VToolButtonPopup(QWidget *parent) : QToolButton(parent) { setPopupMode(QToolButton::MenuButtonPopup); - QObject::connect(this, &QToolButton::triggered, this, - [this](QAction *action) - { - setDefaultAction(action); - if (!m_toolGroupTooltip.isEmpty()) - { - setToolTip(m_toolGroupTooltip); - } - }); + QObject::connect(this, &QToolButton::triggered, this, [this](QAction *action) { setDefaultAction(action); }); +} + +//--------------------------------------------------------------------------------------------------------------------- +void VToolButtonPopup::SetToolGroupTooltip(const QString &toolGroupTooltip) +{ + m_toolGroupTooltip = toolGroupTooltip; + CorrectToolTip(); +} + +//--------------------------------------------------------------------------------------------------------------------- +auto VToolButtonPopup::event(QEvent *event) -> bool +{ + if (event->type() == QEvent::ToolTipChange && !handlingToolTipChange) + { + handlingToolTipChange = true; + CorrectToolTip(); + handlingToolTipChange = false; + } + + return QToolButton::event(event); +} + +//--------------------------------------------------------------------------------------------------------------------- +void VToolButtonPopup::CorrectToolTip() +{ + if (!m_toolGroupTooltip.isEmpty()) + { + setToolTip(QStringLiteral("%1:
%2").arg(m_toolGroupTooltip, toolTip())); + } } diff --git a/src/libs/vwidgets/vtoolbuttonpopup.h b/src/libs/vwidgets/vtoolbuttonpopup.h index 3c0216b6c..d4fb7b8aa 100644 --- a/src/libs/vwidgets/vtoolbuttonpopup.h +++ b/src/libs/vwidgets/vtoolbuttonpopup.h @@ -45,10 +45,16 @@ public: auto GetToolGroupTooltip() const -> QString; void SetToolGroupTooltip(const QString &toolGroupTooltip); +protected: + auto event(QEvent *event) -> bool override; + private: Q_DISABLE_COPY_MOVE(VToolButtonPopup) // NOLINT QString m_toolGroupTooltip{}; + bool handlingToolTipChange{false}; + + void CorrectToolTip(); }; //--------------------------------------------------------------------------------------------------------------------- @@ -57,10 +63,4 @@ inline auto VToolButtonPopup::GetToolGroupTooltip() const -> QString return m_toolGroupTooltip; } -//--------------------------------------------------------------------------------------------------------------------- -inline void VToolButtonPopup::SetToolGroupTooltip(const QString &toolGroupTooltip) -{ - m_toolGroupTooltip = toolGroupTooltip; -} - #endif // VTOOLBUTTONPOPUP_H