diff --git a/src/DockWidgetBase.cpp b/src/DockWidgetBase.cpp index 1b07ecfb..7df8129c 100644 --- a/src/DockWidgetBase.cpp +++ b/src/DockWidgetBase.cpp @@ -204,7 +204,7 @@ bool DockWidgetBase::setFloating(bool floats) auto lastGeo = d->lastPositions().lastFloatingGeometry(); if (lastGeo.isValid()) { if (auto fw = floatingWindow()) - fw->setSuggestedGeometry(lastGeo, /*preserveCenter=*/true); + fw->setSuggestedGeometry(lastGeo, SuggestedGeometryHint_PreserveCenter); } return true; } else { diff --git a/src/KDDockWidgets.h b/src/KDDockWidgets.h index 328f7b27..c057602e 100644 --- a/src/KDDockWidgets.h +++ b/src/KDDockWidgets.h @@ -176,6 +176,13 @@ namespace KDDockWidgets None ///< Don't show any drop indicators while dragging }; + ///@internal + enum SuggestedGeometryHint { + SuggestedGeometryHint_None, + SuggestedGeometryHint_PreserveCenter = 1 + }; + Q_DECLARE_FLAGS(SuggestedGeometryHints, SuggestedGeometryHint) + ///@internal inline QString locationStr(Location loc) { diff --git a/src/private/FloatingWindow.cpp b/src/private/FloatingWindow.cpp index 4f5b67e3..d77e9d77 100644 --- a/src/private/FloatingWindow.cpp +++ b/src/private/FloatingWindow.cpp @@ -280,7 +280,7 @@ const Frame::List FloatingWindow::frames() const return m_dropArea->frames(); } -void FloatingWindow::setSuggestedGeometry(QRect suggestedRect, bool preserveCenter) +void FloatingWindow::setSuggestedGeometry(QRect suggestedRect, SuggestedGeometryHint hint) { const Frame::List frames = this->frames(); if (frames.size() == 1) { @@ -295,7 +295,7 @@ void FloatingWindow::setSuggestedGeometry(QRect suggestedRect, bool preserveCent // Resize to new size but preserve center const QPoint originalCenter = suggestedRect.center(); suggestedRect.setSize(size); - if (preserveCenter) + if (hint & SuggestedGeometryHint_PreserveCenter) suggestedRect.moveCenter(originalCenter); } diff --git a/src/private/FloatingWindow_p.h b/src/private/FloatingWindow_p.h index 0e3a1810..e39dbbef 100644 --- a/src/private/FloatingWindow_p.h +++ b/src/private/FloatingWindow_p.h @@ -76,7 +76,7 @@ public: * @param preserveCenter, if true, then the center is preserved * */ - void setSuggestedGeometry(QRect suggestedRect, bool preserveCenter = false); + void setSuggestedGeometry(QRect suggestedRect, SuggestedGeometryHint = SuggestedGeometryHint_None); bool anyNonClosable() const; bool anyNonDockable() const;