aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/advanceddockingsystem/dockareatitlebar.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/advanceddockingsystem/dockareatitlebar.cpp')
-rw-r--r--src/libs/advanceddockingsystem/dockareatitlebar.cpp85
1 files changed, 72 insertions, 13 deletions
diff --git a/src/libs/advanceddockingsystem/dockareatitlebar.cpp b/src/libs/advanceddockingsystem/dockareatitlebar.cpp
index 7a2e677062..54f97307da 100644
--- a/src/libs/advanceddockingsystem/dockareatitlebar.cpp
+++ b/src/libs/advanceddockingsystem/dockareatitlebar.cpp
@@ -48,10 +48,11 @@ public:
QPointer<TitleBarButton> m_autoHideButton;
QPointer<TitleBarButton> m_undockButton;
QPointer<TitleBarButton> m_closeButton;
+ QPointer<TitleBarButton> m_minimizeButton;
QBoxLayout *m_layout = nullptr;
DockAreaWidget *m_dockArea = nullptr;
DockAreaTabBar *m_tabBar = nullptr;
- ElidingLabel *m_autoHideTitleLabel;
+ ElidingLabel *m_autoHideTitleLabel = nullptr;
bool m_menuOutdated = true;
QMenu *m_tabsMenu;
QList<TitleBarButtonType *> m_dockWidgetActionsButtons;
@@ -202,6 +203,23 @@ void DockAreaTitleBarPrivate::createButtons()
q,
&DockAreaTitleBar::onAutoHideButtonClicked);
+ // Minimize button
+ m_minimizeButton = new TitleBarButton(
+ testAutoHideConfigFlag(DockManager::AutoHideHasMinimizeButton));
+ m_minimizeButton->setObjectName("dockAreaMinimizeButton");
+ //m_minimizeButton->setAutoRaise(true);
+ m_minimizeButton->setVisible(false);
+ internal::setButtonIcon(m_minimizeButton,
+ QStyle::SP_TitleBarMinButton,
+ ADS::DockAreaMinimizeIcon);
+ internal::setToolTip(m_minimizeButton, QObject::tr("Minimize"));
+ m_minimizeButton->setSizePolicy(sizePolicy);
+ m_layout->addWidget(m_minimizeButton, 0);
+ QObject::connect(m_minimizeButton,
+ &QToolButton::clicked,
+ q,
+ &DockAreaTitleBar::minimizeAutoHideContainer);
+
// Close button
m_closeButton = new TitleBarButton(testConfigFlag(DockManager::DockAreaHasCloseButton));
m_closeButton->setObjectName("dockAreaCloseButton");
@@ -228,7 +246,10 @@ void DockAreaTitleBarPrivate::createAutoHideTitleLabel()
{
m_autoHideTitleLabel = new ElidingLabel("");
m_autoHideTitleLabel->setObjectName("autoHideTitleLabel");
- m_layout->addWidget(m_autoHideTitleLabel);
+ // At position 0 is the tab bar - insert behind tab bar
+ m_layout->insertWidget(1, m_autoHideTitleLabel);
+ m_autoHideTitleLabel->setVisible(false); // Default hidden
+ m_layout->insertWidget(2, new SpacerWidget(q));
}
void DockAreaTitleBarPrivate::createTabBar()
{
@@ -370,10 +391,8 @@ DockAreaTitleBar::DockAreaTitleBar(DockAreaWidget *parent)
setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
d->createTabBar();
- d->createAutoHideTitleLabel();
- d->m_autoHideTitleLabel->setVisible(false); // Default hidden
- d->m_layout->addWidget(new SpacerWidget(this));
d->createButtons();
+ d->createAutoHideTitleLabel();
setFocusPolicy(Qt::NoFocus);
}
@@ -452,6 +471,18 @@ void DockAreaTitleBar::onCloseButtonClicked()
d->m_dockArea->closeArea();
}
+void DockAreaTitleBar::onAutoHideCloseActionTriggered()
+{
+ d->m_dockArea->closeArea();
+}
+
+void DockAreaTitleBar::minimizeAutoHideContainer()
+{
+ auto autoHideContainer = d->m_dockArea->autoHideDockContainer();
+ if (autoHideContainer)
+ autoHideContainer->collapseView(true);
+}
+
void DockAreaTitleBar::onUndockButtonClicked()
{
if (d->m_dockArea->features().testFlag(DockWidget::DockWidgetFloatable))
@@ -543,6 +574,8 @@ TitleBarButton *DockAreaTitleBar::button(eTitleBarButton which) const
return d->m_closeButton;
case TitleBarButtonAutoHide:
return d->m_autoHideButton;
+ case TitleBarButtonMinimize:
+ return d->m_minimizeButton;
}
return nullptr;
}
@@ -686,12 +719,28 @@ void DockAreaTitleBar::contextMenuEvent(QContextMenuEvent *event)
}
menu.addSeparator();
}
- QAction *closeAction = menu.addAction(isAutoHide ? Tr::tr("Close") : Tr::tr("Close Group"));
- closeAction->connect(closeAction,
- &QAction::triggered,
- this,
- &DockAreaTitleBar::onCloseButtonClicked);
- closeAction->setEnabled(d->m_dockArea->features().testFlag(DockWidget::DockWidgetClosable));
+
+ if (isAutoHide) {
+ QAction *minimizeAction = menu.addAction(Tr::tr("Minimize"));
+ minimizeAction->connect(minimizeAction,
+ &QAction::triggered,
+ this,
+ &DockAreaTitleBar::minimizeAutoHideContainer);
+
+ QAction *closeAction = menu.addAction(Tr::tr("Close"));
+ closeAction->connect(closeAction,
+ &QAction::triggered,
+ this,
+ &DockAreaTitleBar::onAutoHideCloseActionTriggered);
+ closeAction->setEnabled(d->m_dockArea->features().testFlag(DockWidget::DockWidgetClosable));
+ } else {
+ QAction *closeAction = menu.addAction(Tr::tr("Close Group"));
+ closeAction->connect(closeAction,
+ &QAction::triggered,
+ this,
+ &DockAreaTitleBar::onCloseButtonClicked);
+ closeAction->setEnabled(d->m_dockArea->features().testFlag(DockWidget::DockWidgetClosable));
+ }
if (!isAutoHide && !isTopLevelArea) {
QAction *closeOthersAction = menu.addAction(Tr::tr("Close Other Groups"));
@@ -728,8 +777,11 @@ QString DockAreaTitleBar::titleBarButtonToolTip(eTitleBarButton button) const
break;
case TitleBarButtonClose:
- if (d->m_dockArea->isAutoHide())
- return Tr::tr("Close");
+ if (d->m_dockArea->isAutoHide()) {
+ bool minimize = DockManager::testAutoHideConfigFlag(
+ DockManager::AutoHideCloseButtonCollapsesDock);
+ return minimize ? Tr::tr("Minimize") : Tr::tr("Close");
+ }
if (DockManager::testConfigFlag(DockManager::DockAreaCloseButtonClosesTab))
return Tr::tr("Close Active Tab");
@@ -758,4 +810,11 @@ void DockAreaTitleBar::setAreaFloating()
d->makeAreaFloating(mapFromGlobal(QCursor::pos()), DraggingInactive);
}
+void DockAreaTitleBar::showAutoHideControls(bool show)
+{
+ d->m_tabBar->setVisible(!show); // Auto hide toolbar never has tabs
+ d->m_minimizeButton->setVisible(show);
+ d->m_autoHideTitleLabel->setVisible(show);
+}
+
} // namespace ADS