From 0359ff60f6c998c1e1863bb5a84ad5a12efc990a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= <thorbjorn.lindeijer@nokia.com> Date: Thu, 5 Feb 2009 12:44:46 +0100 Subject: [PATCH] Use QActions to fix toolbar extension Instead of directly adding QToolButtons to the tool bar of the navigation subwidget, use QActions. This allows the tool bar extension to show them in a menu when necessary. The icons are inappropriate for in a menu, however. --- src/plugins/coreplugin/navigationwidget.cpp | 35 +++++++++------------ src/plugins/coreplugin/navigationwidget.h | 2 +- 2 files changed, 16 insertions(+), 21 deletions(-) diff --git a/src/plugins/coreplugin/navigationwidget.cpp b/src/plugins/coreplugin/navigationwidget.cpp index 6329f70ed94..3d4607a9269 100644 --- a/src/plugins/coreplugin/navigationwidget.cpp +++ b/src/plugins/coreplugin/navigationwidget.cpp @@ -354,35 +354,30 @@ NavigationSubWidget::NavigationSubWidget(NavigationWidget *parentWidget) m_navigationComboBox->setMaximumWidth(130); #endif - m_toolbar = new QToolBar(this); - m_toolbar->setContentsMargins(0, 0, 0, 0); - m_toolbar->addWidget(m_navigationComboBox); + m_toolBar = new QToolBar(this); + m_toolBar->setContentsMargins(0, 0, 0, 0); + m_toolBar->addWidget(m_navigationComboBox); - QToolButton *split = new QToolButton; - split->setProperty("type", QLatin1String("dockbutton")); - split->setIcon(QIcon(":/core/images/splitbutton_horizontal.png")); - split->setToolTip(tr("Split")); - connect(split, SIGNAL(clicked(bool)), this, SIGNAL(split())); - - QToolButton *close = new QToolButton; - close->setProperty("type", QLatin1String("dockbutton")); - close->setIcon(QIcon(":/core/images/closebutton.png")); - close->setToolTip(tr("Close")); - - connect(close, SIGNAL(clicked(bool)), this, SIGNAL(close())); + m_splitAction = new QAction(QIcon(":/core/images/splitbutton_horizontal.png"), tr("Split"), this); + QAction *close = new QAction(QIcon(":/core/images/closebutton.png"), tr("Close"), this); QWidget *spacerItem = new QWidget(this); spacerItem->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum); - m_toolbar->addWidget(spacerItem); - m_splitAction = m_toolbar->addWidget(split); - m_toolbar->addWidget(close); + m_toolBar->addWidget(spacerItem); + m_toolBar->addAction(m_splitAction); + m_toolBar->addAction(close); + + m_toolBar->widgetForAction(m_splitAction)->setProperty("type", QLatin1String("dockbutton")); + m_toolBar->widgetForAction(close)->setProperty("type", QLatin1String("dockbutton")); QVBoxLayout *lay = new QVBoxLayout(); lay->setMargin(0); lay->setSpacing(0); setLayout(lay); - lay->addWidget(m_toolbar); + lay->addWidget(m_toolBar); + connect(m_splitAction, SIGNAL(triggered()), this, SIGNAL(split())); + connect(close, SIGNAL(triggered()), this, SIGNAL(close())); connect(m_navigationComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(setCurrentIndex(int))); @@ -417,7 +412,7 @@ void NavigationSubWidget::setCurrentIndex(int index) // Add Toolbutton m_additionalToolBarWidgets = n.doockToolBarWidgets; foreach (QToolButton *w, m_additionalToolBarWidgets) { - m_toolbar->insertWidget(m_splitAction, w); + m_toolBar->insertWidget(m_splitAction, w); } } diff --git a/src/plugins/coreplugin/navigationwidget.h b/src/plugins/coreplugin/navigationwidget.h index 016fbcd0bda..d4998181589 100644 --- a/src/plugins/coreplugin/navigationwidget.h +++ b/src/plugins/coreplugin/navigationwidget.h @@ -151,7 +151,7 @@ private: NavigationWidget *m_parentWidget; QComboBox *m_navigationComboBox; QWidget *m_navigationWidget; - QToolBar *m_toolbar; + QToolBar *m_toolBar; QAction *m_splitAction; QList<QToolButton *> m_additionalToolBarWidgets; }; -- GitLab