From 6fa1084bc8c0cb155a957df06ae757481c36b912 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