When we hide the action, also hide its toolbutton.

Originally-By: kh1
This commit is contained in:
ck
2009-10-16 15:50:52 +02:00
parent 0d3709c350
commit 5f33e08e2a
2 changed files with 15 additions and 0 deletions

View File

@@ -136,6 +136,14 @@ QSize FancyToolButton::minimumSizeHint() const
return QSize(8, 8); 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) FancyActionBar::FancyActionBar(QWidget *parent)
: QWidget(parent) : QWidget(parent)
{ {
@@ -152,6 +160,8 @@ void FancyActionBar::insertAction(int index, QAction *action, QMenu *menu)
{ {
FancyToolButton *toolButton = new FancyToolButton(this); FancyToolButton *toolButton = new FancyToolButton(this);
toolButton->setDefaultAction(action); toolButton->setDefaultAction(action);
connect(action, SIGNAL(changed()), toolButton, SLOT(actionChanged()));
if (menu) { if (menu) {
toolButton->setMenu(menu); toolButton->setMenu(menu);
toolButton->setPopupMode(QToolButton::DelayedPopup); toolButton->setPopupMode(QToolButton::DelayedPopup);

View File

@@ -43,6 +43,8 @@ namespace Internal {
class FancyToolButton : public QToolButton class FancyToolButton : public QToolButton
{ {
Q_OBJECT
public: public:
FancyToolButton(QWidget *parent = 0); FancyToolButton(QWidget *parent = 0);
@@ -50,6 +52,9 @@ public:
QSize sizeHint() const; QSize sizeHint() const;
QSize minimumSizeHint() const; QSize minimumSizeHint() const;
private slots:
void actionChanged();
private: private:
const QMap<QString, QPicture> &m_buttonElements; const QMap<QString, QPicture> &m_buttonElements;
}; };