From 74f45f6028196aa63f30785747e6e7ed5870764e Mon Sep 17 00:00:00 2001 From: David Rosca Date: Fri, 5 Jan 2018 21:15:03 +0100 Subject: [PATCH] NavigationBarToolButton: Add support for inactive state --- src/lib/navigation/navigationbartoolbutton.cpp | 14 +++++++++++--- src/lib/navigation/navigationbartoolbutton.h | 1 + 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/lib/navigation/navigationbartoolbutton.cpp b/src/lib/navigation/navigationbartoolbutton.cpp index 635cd93a2..86f65ef60 100644 --- a/src/lib/navigation/navigationbartoolbutton.cpp +++ b/src/lib/navigation/navigationbartoolbutton.cpp @@ -29,10 +29,11 @@ NavigationBarToolButton::NavigationBarToolButton(AbstractButtonInterface *button setFocusPolicy(Qt::NoFocus); setToolTip(button->toolTip()); - setIcon(button->icon()); + updateIcon(); - connect(button, &AbstractButtonInterface::iconChanged, this, &ToolButton::setIcon); - connect(button, &AbstractButtonInterface::toolTipChanged, this, &ToolButton::setToolTip); + connect(button, &AbstractButtonInterface::iconChanged, this, &NavigationBarToolButton::updateIcon); + connect(button, &AbstractButtonInterface::activeChanged, this, &NavigationBarToolButton::updateIcon); + connect(button, &AbstractButtonInterface::toolTipChanged, this, &NavigationBarToolButton::setToolTip); connect(this, &ToolButton::clicked, this, &NavigationBarToolButton::clicked); } @@ -53,3 +54,10 @@ void NavigationBarToolButton::clicked() emit m_button->clicked(&c); setDown(false); } + +void NavigationBarToolButton::updateIcon() +{ + const QIcon::Mode mode = m_button->isActive() ? QIcon::Normal : QIcon::Disabled; + const QImage img = m_button->icon().pixmap(iconSize(), mode).toImage(); + setIcon(QPixmap::fromImage(img, Qt::MonoOnly)); +} diff --git a/src/lib/navigation/navigationbartoolbutton.h b/src/lib/navigation/navigationbartoolbutton.h index b3628ad30..f2ccdb7ad 100644 --- a/src/lib/navigation/navigationbartoolbutton.h +++ b/src/lib/navigation/navigationbartoolbutton.h @@ -29,6 +29,7 @@ public: private: void clicked(); + void updateIcon(); AbstractButtonInterface *m_button; };