From 5f33e08e2a02eb4311b7453dea88614267823220 Mon Sep 17 00:00:00 2001 From: ck Date: Fri, 16 Oct 2009 15:50:52 +0200 Subject: [PATCH] When we hide the action, also hide its toolbutton. Originally-By: kh1 --- src/plugins/coreplugin/fancyactionbar.cpp | 10 ++++++++++ src/plugins/coreplugin/fancyactionbar.h | 5 +++++ 2 files changed, 15 insertions(+) diff --git a/src/plugins/coreplugin/fancyactionbar.cpp b/src/plugins/coreplugin/fancyactionbar.cpp index be053c171f9..bcb75b6dc7c 100644 --- a/src/plugins/coreplugin/fancyactionbar.cpp +++ b/src/plugins/coreplugin/fancyactionbar.cpp @@ -136,6 +136,14 @@ QSize FancyToolButton::minimumSizeHint() const return QSize(8, 8); } +void FancyToolButton::actionChanged() +{ + // the default action changed in some way, e.g. it might got hidden + // since we inherit a tool button we won't get invisible, so do this here + if (QAction* action = defaultAction()) + setVisible(action->isVisible()); +} + FancyActionBar::FancyActionBar(QWidget *parent) : QWidget(parent) { @@ -152,6 +160,8 @@ void FancyActionBar::insertAction(int index, QAction *action, QMenu *menu) { FancyToolButton *toolButton = new FancyToolButton(this); toolButton->setDefaultAction(action); + connect(action, SIGNAL(changed()), toolButton, SLOT(actionChanged())); + if (menu) { toolButton->setMenu(menu); toolButton->setPopupMode(QToolButton::DelayedPopup); diff --git a/src/plugins/coreplugin/fancyactionbar.h b/src/plugins/coreplugin/fancyactionbar.h index 4c49f61c5b9..0f4f853e3a6 100644 --- a/src/plugins/coreplugin/fancyactionbar.h +++ b/src/plugins/coreplugin/fancyactionbar.h @@ -43,6 +43,8 @@ namespace Internal { class FancyToolButton : public QToolButton { + Q_OBJECT + public: FancyToolButton(QWidget *parent = 0); @@ -50,6 +52,9 @@ public: QSize sizeHint() const; QSize minimumSizeHint() const; +private slots: + void actionChanged(); + private: const QMap &m_buttonElements; };