From 9684a5f269bdbece727893747dc28d455faf4c0f Mon Sep 17 00:00:00 2001 From: Henning Gruendl Date: Tue, 25 Feb 2020 11:22:36 +0100 Subject: [PATCH] QmlDesigner: Integrate upstream commits - Integrate the newest commits from the base repository dec170ed24679fd49f9fb54af91f61146838f852 34cb2ae91790fc65ca5c0f7b81bb928de22a32e5 - Cleanup a few if statements - Cleanup a comment Change-Id: I158bff610f701e7a30680cfb8383f64475199bbe Reviewed-by: Thomas Hartmann --- src/libs/advanceddockingsystem/dockoverlay.h | 14 +-- src/libs/advanceddockingsystem/dockwidget.cpp | 110 +++++++----------- .../floatingdockcontainer.cpp | 6 +- .../floatingdragpreview.cpp | 37 +++--- 4 files changed, 68 insertions(+), 99 deletions(-) diff --git a/src/libs/advanceddockingsystem/dockoverlay.h b/src/libs/advanceddockingsystem/dockoverlay.h index b7243c29a63..04f9d627510 100644 --- a/src/libs/advanceddockingsystem/dockoverlay.h +++ b/src/libs/advanceddockingsystem/dockoverlay.h @@ -138,13 +138,13 @@ struct DockOverlayCrossPrivate; * You can style the cross icon using the property system. * \code * ADS--DockOverlayCross - { - qproperty-iconFrameColor: palette(highlight); - qproperty-iconBackgroundColor: palette(base); - qproperty-iconOverlayColor: palette(highlight); - qproperty-iconArrowColor: rgb(227, 227, 227); - qproperty-iconShadowColor: rgb(0, 0, 0); - } + * { + * qproperty-iconFrameColor: palette(highlight); + * qproperty-iconBackgroundColor: palette(base); + * qproperty-iconOverlayColor: palette(highlight); + * qproperty-iconArrowColor: rgb(227, 227, 227); + * qproperty-iconShadowColor: rgb(0, 0, 0); + * } * \endcode * Or you can use the iconColors property to pass in AARRGGBB values as * hex string like shown in the example below. diff --git a/src/libs/advanceddockingsystem/dockwidget.cpp b/src/libs/advanceddockingsystem/dockwidget.cpp index 08857994b5e..5b4ff87265d 100644 --- a/src/libs/advanceddockingsystem/dockwidget.cpp +++ b/src/libs/advanceddockingsystem/dockwidget.cpp @@ -154,16 +154,18 @@ namespace ADS void DockWidgetPrivate::updateParentDockArea() { - if (!m_dockArea) { + if (!m_dockArea) + return; + + // we don't need to change the current tab if the current DockWidget is not the one being closed + if (m_dockArea->currentDockWidget() != q) return; - } auto nextDockWidget = m_dockArea->nextOpenDockWidget(q); - if (nextDockWidget) { + if (nextDockWidget) m_dockArea->setCurrentDockWidget(nextDockWidget); - } else { + else m_dockArea->hideAreaWithNoVisibleContent(); - } } void DockWidgetPrivate::setupToolBar() @@ -222,9 +224,8 @@ namespace ADS QScrollArea *scrollAreaWidget = qobject_cast(widget); if (scrollAreaWidget || ForceNoScrollArea == insertMode) { d->m_layout->addWidget(widget); - if (scrollAreaWidget && scrollAreaWidget->viewport()) { + if (scrollAreaWidget && scrollAreaWidget->viewport()) scrollAreaWidget->viewport()->setProperty("dockWidgetContent", true); - } } else { d->setupScrollArea(); d->m_scrollArea->setWidget(widget); @@ -283,9 +284,8 @@ namespace ADS bool DockWidget::isFloating() const { - if (!isInFloatingContainer()) { + if (!isInFloatingContainer()) return false; - } return dockContainer()->topLevelDockWidget() == this; } @@ -293,13 +293,11 @@ namespace ADS bool DockWidget::isInFloatingContainer() const { auto container = dockContainer(); - if (!container) { + if (!container) return false; - } - if (!container->isFloating()) { + if (!container->isFloating()) return false; - } return true; } @@ -324,17 +322,16 @@ namespace ADS // If the toggle view action mode is ActionModeShow, then Open is always // true if the sender is the toggle view action QAction *action = qobject_cast(sender()); - if (action == d->m_toggleViewAction && !d->m_toggleViewAction->isCheckable()) { + if (action == d->m_toggleViewAction && !d->m_toggleViewAction->isCheckable()) open = true; - } + // If the dock widget state is different, then we really need to toggle // the state. If we are in the right state, then we simply make this // dock widget the current dock widget - if (d->m_closed != !open) { + if (d->m_closed != !open) toggleViewInternal(open); - } else if (open && d->m_dockArea) { + else if (open && d->m_dockArea) d->m_dockArea->setCurrentDockWidget(this); - } } void DockWidget::toggleViewInternal(bool open) @@ -353,13 +350,11 @@ namespace ADS //d->m_toggleViewAction->blockSignals(true); d->m_toggleViewAction->setChecked(open); //d->m_toggleViewAction->blockSignals(false); - if (d->m_dockArea) { + if (d->m_dockArea) d->m_dockArea->toggleDockWidgetView(this, open); - } - if (open && topLevelDockWidgetBefore) { + if (open && topLevelDockWidgetBefore) DockWidget::emitTopLevelEventForWidget(topLevelDockWidgetBefore, false); - } // Here we need to call the dockContainer() function again, because if // this dock widget was unassigned before the call to showDockWidget() then @@ -370,13 +365,12 @@ namespace ADS : nullptr; DockWidget::emitTopLevelEventForWidget(topLevelDockWidgetAfter, true); FloatingDockContainer *floatingContainer = dockContainerWidget->floatingWidget(); - if (floatingContainer) { + if (floatingContainer) floatingContainer->updateWindowTitle(); - } - if (!open) { + if (!open) emit closed(); - } + emit viewToggled(open); } @@ -440,24 +434,22 @@ namespace ADS #ifndef QT_NO_TOOLTIP void DockWidget::setTabToolTip(const QString &text) { - if (d->m_tabWidget) { + if (d->m_tabWidget) d->m_tabWidget->setToolTip(text); - } - if (d->m_toggleViewAction) { + + if (d->m_toggleViewAction) d->m_toggleViewAction->setToolTip(text); - } - if (d->m_dockArea) { + + if (d->m_dockArea) d->m_dockArea->markTitleBarMenuOutdated(); //update tabs menu - } } #endif void DockWidget::setIcon(const QIcon &icon) { d->m_tabWidget->setIcon(icon); - if (!d->m_toggleViewAction->isCheckable()) { + if (!d->m_toggleViewAction->isCheckable()) d->m_toggleViewAction->setIcon(icon); - } } QIcon DockWidget::icon() const { return d->m_tabWidget->icon(); } @@ -466,18 +458,16 @@ namespace ADS QToolBar *DockWidget::createDefaultToolBar() { - if (!d->m_toolBar) { + if (!d->m_toolBar) d->setupToolBar(); - } return d->m_toolBar; } void DockWidget::setToolBar(QToolBar *toolBar) { - if (d->m_toolBar) { + if (d->m_toolBar) delete d->m_toolBar; - } d->m_toolBar = toolBar; d->m_layout->insertWidget(0, d->m_toolBar); @@ -487,59 +477,52 @@ namespace ADS void DockWidget::setToolBarStyle(Qt::ToolButtonStyle style, eState state) { - if (StateFloating == state) { + if (StateFloating == state) d->m_toolBarStyleFloating = style; - } else { + else d->m_toolBarStyleDocked = style; - } setToolbarFloatingStyle(isFloating()); } Qt::ToolButtonStyle DockWidget::toolBarStyle(eState state) const { - if (StateFloating == state) { + if (StateFloating == state) return d->m_toolBarStyleFloating; - } else { + else return d->m_toolBarStyleDocked; - } } void DockWidget::setToolBarIconSize(const QSize &iconSize, eState state) { - if (StateFloating == state) { + if (StateFloating == state) d->m_toolBarIconSizeFloating = iconSize; - } else { + else d->m_toolBarIconSizeDocked = iconSize; - } setToolbarFloatingStyle(isFloating()); } QSize DockWidget::toolBarIconSize(eState state) const { - if (StateFloating == state) { + if (StateFloating == state) return d->m_toolBarIconSizeFloating; - } else { + else return d->m_toolBarIconSizeDocked; - } } void DockWidget::setToolbarFloatingStyle(bool floating) { - if (!d->m_toolBar) { + if (!d->m_toolBar) return; - } auto iconSize = floating ? d->m_toolBarIconSizeFloating : d->m_toolBarIconSizeDocked; - if (iconSize != d->m_toolBar->iconSize()) { + if (iconSize != d->m_toolBar->iconSize()) d->m_toolBar->setIconSize(iconSize); - } auto buttonStyle = floating ? d->m_toolBarStyleFloating : d->m_toolBarStyleDocked; - if (buttonStyle != d->m_toolBar->toolButtonStyle()) { + if (buttonStyle != d->m_toolBar->toolButtonStyle()) d->m_toolBar->setToolButtonStyle(buttonStyle); - } } void DockWidget::emitTopLevelEventForWidget(DockWidget *topLevelDockWidget, bool floating) @@ -564,9 +547,9 @@ namespace ADS void DockWidget::setFloating() { - if (isClosed()) { + if (isClosed()) return; - } + d->m_tabWidget->detachDockWidget(); } @@ -584,13 +567,11 @@ namespace ADS bool DockWidget::closeDockWidgetInternal(bool forceClose) { - if (!forceClose) { + if (!forceClose) emit closeRequested(); - } - if (!forceClose && features().testFlag(DockWidget::CustomCloseHandling)) { + if (!forceClose && features().testFlag(DockWidget::CustomCloseHandling)) return false; - } if (features().testFlag(DockWidget::DockWidgetDeleteOnClose)) { // If the dock widget is floating, then we check if we also need to @@ -598,11 +579,10 @@ namespace ADS if (isFloating()) { FloatingDockContainer* floatingWidget = internal::findParent< FloatingDockContainer *>(this); - if (floatingWidget->dockWidgets().count() == 1) { + if (floatingWidget->dockWidgets().count() == 1) floatingWidget->deleteLater(); - } else { + else floatingWidget->hide(); - } } deleteDockWidget(); } else { diff --git a/src/libs/advanceddockingsystem/floatingdockcontainer.cpp b/src/libs/advanceddockingsystem/floatingdockcontainer.cpp index 2fbe879f471..6bf2d9efbdc 100644 --- a/src/libs/advanceddockingsystem/floatingdockcontainer.cpp +++ b/src/libs/advanceddockingsystem/floatingdockcontainer.cpp @@ -112,7 +112,7 @@ namespace ADS if (testConfigFlag(DockManager::FloatingContainerHasWidgetTitle)) { setWindowTitle(currentWidget->windowTitle()); } else { - setWindowTitle(qApp->applicationDisplayName()); + setWindowTitle(QApplication::applicationDisplayName()); } // reflect CurrentWidget's icon if configured to do so, otherwise display application icon as window icon @@ -495,7 +495,7 @@ namespace ADS &FloatingDockContainer::onDockAreaCurrentChanged); d->m_singleDockArea = nullptr; } - d->setWindowTitle(qApp->applicationDisplayName()); + d->setWindowTitle(QApplication::applicationDisplayName()); setWindowIcon(QApplication::windowIcon()); } } @@ -507,7 +507,7 @@ namespace ADS DockWidget *currentWidget = topLevelDockArea->currentDockWidget(); d->reflectCurrentWidget(currentWidget); } else { - d->setWindowTitle(qApp->applicationDisplayName()); + d->setWindowTitle(QApplication::applicationDisplayName()); setWindowIcon(QApplication::windowIcon()); } } diff --git a/src/libs/advanceddockingsystem/floatingdragpreview.cpp b/src/libs/advanceddockingsystem/floatingdragpreview.cpp index 41dadfc9790..b54b6bfbf06 100644 --- a/src/libs/advanceddockingsystem/floatingdragpreview.cpp +++ b/src/libs/advanceddockingsystem/floatingdragpreview.cpp @@ -96,22 +96,19 @@ namespace ADS void FloatingDragPreviewPrivate::updateDropOverlays(const QPoint &globalPosition) { - if (!q->isVisible() || !m_dockManager) { + if (!q->isVisible() || !m_dockManager) return; - } auto containers = m_dockManager->dockContainers(); DockContainerWidget *topContainer = nullptr; for (auto containerWidget : containers) { - if (!containerWidget->isVisible()) { + if (!containerWidget->isVisible()) continue; - } QPoint mappedPosition = containerWidget->mapFromGlobal(globalPosition); if (containerWidget->rect().contains(mappedPosition)) { - if (!topContainer || containerWidget->isInFrontOf(topContainer)) { + if (!topContainer || containerWidget->isInFrontOf(topContainer)) topContainer = containerWidget; - } } } @@ -124,9 +121,9 @@ namespace ADS if (!topContainer) { containerOverlay->hideOverlay(); dockAreaOverlay->hideOverlay(); - if (DockManager::configFlags().testFlag(DockManager::DragPreviewIsDynamic)) { + if (DockManager::configFlags().testFlag(DockManager::DragPreviewIsDynamic)) setHidden(false); - } + return; } @@ -153,9 +150,8 @@ namespace ADS } } else { dockAreaOverlay->hideOverlay(); - if (dockArea == m_contentSourceArea && InvalidDockWidgetArea == containerDropArea) { + if (dockArea == m_contentSourceArea && InvalidDockWidgetArea == containerDropArea) m_dropContainer = nullptr; - } } if (DockManager::configFlags().testFlag(DockManager::DragPreviewIsDynamic)) { @@ -199,7 +195,10 @@ namespace ADS connect(qApp, &QApplication::applicationStateChanged, this, - &FloatingDragPreview::onApplicationStateChanged); // TODO + &FloatingDragPreview::onApplicationStateChanged); + // The focused object will receive key press events and therefore we install + // the event filter on it to receive escape key press for drag canceling + QApplication::focusObject()->installEventFilter(this); } FloatingDragPreview::FloatingDragPreview(DockWidget *content) @@ -212,9 +211,6 @@ namespace ADS d->m_contenSourceContainer = content->dockContainer(); } setWindowTitle(content->windowTitle()); - // We need to install an event filter for the given content - // widget to receive the escape key press - content->dockAreaWidget()->installEventFilter(this); } FloatingDragPreview::FloatingDragPreview(DockAreaWidget *content) @@ -225,10 +221,6 @@ namespace ADS d->m_contentSourceArea = content; d->m_contenSourceContainer = content->dockContainer(); setWindowTitle(content->currentDockWidget()->windowTitle()); - - // We need to install an event filter for the given Content - // widget to receive the escape key press - content->installEventFilter(this); } FloatingDragPreview::~FloatingDragPreview() { delete d; } @@ -277,9 +269,8 @@ namespace ADS floatingWidget = new FloatingDockContainer(dockWidget); } else { DockAreaWidget *dockArea = qobject_cast(d->m_content); - if (dockArea->features().testFlag(DockWidget::DockWidgetFloatable)) { + if (dockArea->features().testFlag(DockWidget::DockWidgetFloatable)) floatingWidget = new FloatingDockContainer(dockArea); - } } if (floatingWidget) { @@ -303,14 +294,12 @@ namespace ADS void FloatingDragPreview::paintEvent(QPaintEvent *event) { Q_UNUSED(event) - if (d->m_hidden) { + if (d->m_hidden) return; - } QPainter painter(this); - if (DockManager::configFlags().testFlag(DockManager::DragPreviewShowsContentPixmap)) { + if (DockManager::configFlags().testFlag(DockManager::DragPreviewShowsContentPixmap)) painter.drawPixmap(QPoint(0, 0), d->m_contentPreviewPixmap); - } // If we do not have a window frame then we paint a QRubberBand like frameless window if (!DockManager::configFlags().testFlag(DockManager::DragPreviewHasWindowFrame)) {