diff options
author | Eike Ziller <eike.ziller@theqtcompany.com> | 2014-12-04 13:07:01 +0100 |
---|---|---|
committer | Eike Ziller <eike.ziller@theqtcompany.com> | 2014-12-08 08:30:24 +0100 |
commit | a1f8be447103d8c4887aea3ae8794f0937daa45b (patch) | |
tree | d8c729eda1a6cd759adaa70b645a92765ef2f324 /src/plugins/coreplugin/navigationsubwidget.cpp | |
parent | 95c13a230e7d291e82210f086bd8d9bc16d796e1 (diff) | |
download | qt-creator-a1f8be447103d8c4887aea3ae8794f0937daa45b.tar.gz |
NavigationWidget: Add menu to split button
This is more consistent with the split button that we have for the
editors, and the default split behavior, which duplicated the current
view, seldomly resulted in what was wanted anyhow.
Change-Id: Iaba62151edbf11f6bbfaf45d68371532bff48dd5
Reviewed-by: Daniel Teske <daniel.teske@theqtcompany.com>
Diffstat (limited to 'src/plugins/coreplugin/navigationsubwidget.cpp')
-rw-r--r-- | src/plugins/coreplugin/navigationsubwidget.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/plugins/coreplugin/navigationsubwidget.cpp b/src/plugins/coreplugin/navigationsubwidget.cpp index 354c7810e3..0087980f04 100644 --- a/src/plugins/coreplugin/navigationsubwidget.cpp +++ b/src/plugins/coreplugin/navigationsubwidget.cpp @@ -41,6 +41,7 @@ #include <QDebug> #include <QHBoxLayout> +#include <QMenu> #include <QResizeEvent> #include <QToolButton> @@ -75,6 +76,12 @@ NavigationSubWidget::NavigationSubWidget(NavigationWidget *parentWidget, int pos QToolButton *splitAction = new QToolButton(); splitAction->setIcon(QIcon(QLatin1String(Constants::ICON_SPLIT_HORIZONTAL))); splitAction->setToolTip(tr("Split")); + splitAction->setPopupMode(QToolButton::InstantPopup); + splitAction->setProperty("noArrow", true); + m_splitMenu = new QMenu(splitAction); + splitAction->setMenu(m_splitMenu); + connect(m_splitMenu, &QMenu::aboutToShow, this, &NavigationSubWidget::populateSplitMenu); + QToolButton *close = new QToolButton(); close->setIcon(QIcon(QLatin1String(Constants::ICON_BUTTON_CLOSE))); close->setToolTip(tr("Close")); @@ -88,7 +95,6 @@ NavigationSubWidget::NavigationSubWidget(NavigationWidget *parentWidget, int pos setLayout(lay); lay->addWidget(m_toolBar); - connect(splitAction, SIGNAL(clicked()), this, SIGNAL(splitMe())); connect(close, SIGNAL(clicked()), this, SIGNAL(closeMe())); setFactoryIndex(factoryIndex); @@ -136,6 +142,18 @@ void NavigationSubWidget::comboBoxIndexChanged(int factoryIndex) restoreSettings(); } +void NavigationSubWidget::populateSplitMenu() +{ + m_splitMenu->clear(); + QAbstractItemModel *factoryModel = m_parentWidget->factoryModel(); + int count = factoryModel->rowCount(); + for (int i = 0; i < count; ++i) { + QModelIndex index = factoryModel->index(i, 0); + QAction *action = m_splitMenu->addAction(factoryModel->data(index).toString()); + connect(action, &QAction::triggered, this, [this, i]() { emit splitMe(i); }); + } +} + void NavigationSubWidget::setFocusWidget() { if (m_navigationWidget) |