diff options
Diffstat (limited to 'src/libs/advanceddockingsystem/dockareatitlebar.cpp')
-rw-r--r-- | src/libs/advanceddockingsystem/dockareatitlebar.cpp | 47 |
1 files changed, 25 insertions, 22 deletions
diff --git a/src/libs/advanceddockingsystem/dockareatitlebar.cpp b/src/libs/advanceddockingsystem/dockareatitlebar.cpp index 9ee647265d..4430f93672 100644 --- a/src/libs/advanceddockingsystem/dockareatitlebar.cpp +++ b/src/libs/advanceddockingsystem/dockareatitlebar.cpp @@ -103,10 +103,11 @@ namespace ADS /** * Returns true if the given config flag is set + * Convenience function to ease config flag testing */ static bool testConfigFlag(DockManager::eConfigFlag flag) { - return DockManager::configFlags().testFlag(flag); + return DockManager::testConfigFlag(flag); } /** @@ -132,6 +133,7 @@ namespace ADS void DockAreaTitleBarPrivate::createButtons() { + const QSize iconSize(14, 14); QSizePolicy sizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); // Tabs menu button m_tabsMenuButton = new TitleBarButton(testConfigFlag(DockManager::DockAreaHasTabsMenuButton)); @@ -149,6 +151,7 @@ namespace ADS m_tabsMenuButton->setMenu(tabsMenu); internal::setToolTip(m_tabsMenuButton, QObject::tr("List All Tabs")); m_tabsMenuButton->setSizePolicy(sizePolicy); + m_tabsMenuButton->setIconSize(iconSize); m_layout->addWidget(m_tabsMenuButton, 0); QObject::connect(m_tabsMenuButton->menu(), &QMenu::triggered, @@ -157,13 +160,14 @@ namespace ADS // Undock button m_undockButton = new TitleBarButton(testConfigFlag(DockManager::DockAreaHasUndockButton)); - m_undockButton->setObjectName("undockButton"); + m_undockButton->setObjectName("detachGroupButton"); m_undockButton->setAutoRaise(true); internal::setToolTip(m_undockButton, QObject::tr("Detach Group")); internal::setButtonIcon(m_undockButton, QStyle::SP_TitleBarNormalButton, ADS::DockAreaUndockIcon); m_undockButton->setSizePolicy(sizePolicy); + m_undockButton->setIconSize(iconSize); m_layout->addWidget(m_undockButton, 0); QObject::connect(m_undockButton, &QToolButton::clicked, @@ -172,18 +176,18 @@ namespace ADS // Close button m_closeButton = new TitleBarButton(testConfigFlag(DockManager::DockAreaHasCloseButton)); - m_closeButton->setObjectName("closeButton"); + m_closeButton->setObjectName("dockAreaCloseButton"); m_closeButton->setAutoRaise(true); internal::setButtonIcon(m_closeButton, QStyle::SP_TitleBarCloseButton, ADS::DockAreaCloseIcon); - if (testConfigFlag(DockManager::DockAreaCloseButtonClosesTab)) { + if (testConfigFlag(DockManager::DockAreaCloseButtonClosesTab)) internal::setToolTip(m_closeButton, QObject::tr("Close Active Tab")); - } else { + else internal::setToolTip(m_closeButton, QObject::tr("Close Group")); - } + m_closeButton->setSizePolicy(sizePolicy); - m_closeButton->setIconSize(QSize(16, 16)); + m_closeButton->setIconSize(iconSize); m_layout->addWidget(m_closeButton, 0); QObject::connect(m_closeButton, &QToolButton::clicked, @@ -235,7 +239,7 @@ namespace ADS { QSize size = m_dockArea->size(); m_dragState = dragState; - bool opaqueUndocking = DockManager::configFlags().testFlag(DockManager::OpaqueUndocking) + bool opaqueUndocking = DockManager::testConfigFlag(DockManager::OpaqueUndocking) || (DraggingFloatingWidget != dragState); FloatingDockContainer *floatingDockContainer = nullptr; AbstractFloatingWidget *floatingWidget; @@ -266,9 +270,9 @@ namespace ADS } TitleBarButton::TitleBarButton(bool visible, QWidget *parent) - : TitleBarButtonType(parent), - m_visible(visible), - m_hideWhenDisabled(DockAreaTitleBarPrivate::testConfigFlag(DockManager::DockAreaHideDisabledButtons)) + : TitleBarButtonType(parent) + , m_visible(visible) + , m_hideWhenDisabled(DockAreaTitleBarPrivate::testConfigFlag(DockManager::DockAreaHideDisabledButtons)) {} void TitleBarButton::setVisible(bool visible) @@ -278,9 +282,8 @@ namespace ADS // 'visible' can stay 'true' unless: this button is configured to be invisible when it // is disabled and it is currently disabled: - if (visible && m_hideWhenDisabled) { + if (visible && m_hideWhenDisabled) visible = isEnabled(); - } Super::setVisible(visible); } @@ -357,9 +360,8 @@ namespace ADS void DockAreaTitleBar::onTabsMenuAboutToShow() { - if (!d->m_menuOutdated) { + if (!d->m_menuOutdated) return; - } QMenu *menu = d->m_tabsMenuButton->menu(); menu->clear(); @@ -379,18 +381,16 @@ namespace ADS void DockAreaTitleBar::onCloseButtonClicked() { qCInfo(adsLog) << Q_FUNC_INFO; - if (d->testConfigFlag(DockManager::DockAreaCloseButtonClosesTab)) { + if (d->testConfigFlag(DockManager::DockAreaCloseButtonClosesTab)) d->m_tabBar->closeTab(d->m_tabBar->currentIndex()); - } else { + else d->m_dockArea->closeArea(); - } } void DockAreaTitleBar::onUndockButtonClicked() { - if (d->m_dockArea->features().testFlag(DockWidget::DockWidgetFloatable)) { + if (d->m_dockArea->features().testFlag(DockWidget::DockWidgetFloatable)) d->makeAreaFloating(mapFromGlobal(QCursor::pos()), DraggingInactive); - } } void DockAreaTitleBar::onTabsMenuActionTriggered(QAction *action) @@ -467,6 +467,9 @@ namespace ADS event->accept(); d->m_dragStartMousePos = event->pos(); d->m_dragState = DraggingMousePressed; + if (DockManager::testConfigFlag(DockManager::FocusHighlighting)) + d->m_tabBar->currentTab()->setFocus(Qt::OtherFocusReason); + return; } Super::mousePressEvent(event); @@ -502,7 +505,7 @@ namespace ADS return; } - // If this is the last dock area in a dock container it does not make + // If this is the last dock area in a floating dock container it does not make // sense to move it to a new floating widget and leave this one empty if (d->m_dockArea->dockContainer()->isFloating() && d->m_dockArea->dockContainer()->visibleDockAreaCount() == 1) { @@ -522,7 +525,7 @@ namespace ADS int dragDistance = (d->m_dragStartMousePos - event->pos()).manhattanLength(); if (dragDistance >= DockManager::startDragDistance()) { - qCInfo(adsLog) << "TabsScrollArea::startFloating"; + qCInfo(adsLog) << "DockAreaTitlBar::startFloating"; d->startFloating(d->m_dragStartMousePos); auto overlay = d->m_dockArea->dockManager()->containerOverlay(); overlay->setAllowedAreas(OuterDockAreas); |