diff options
-rw-r--r-- | src/designer/src/designer/qdesigner_workbench.cpp | 18 | ||||
-rw-r--r-- | src/designer/src/designer/qdesigner_workbench.h | 6 |
2 files changed, 11 insertions, 13 deletions
diff --git a/src/designer/src/designer/qdesigner_workbench.cpp b/src/designer/src/designer/qdesigner_workbench.cpp index 03ce2c96c..f66e27856 100644 --- a/src/designer/src/designer/qdesigner_workbench.cpp +++ b/src/designer/src/designer/qdesigner_workbench.cpp @@ -73,9 +73,9 @@ static QDockWidget *dockWidgetOf(const QWidget *w) } // ------------ QDesignerWorkbench::Position -QDesignerWorkbench::Position::Position(const QMdiSubWindow *mdiSubWindow, const QPoint &mdiAreaOffset) : +QDesignerWorkbench::Position::Position(const QMdiSubWindow *mdiSubWindow) : m_minimized(mdiSubWindow->isShaded()), - m_position(mdiSubWindow->pos() + mdiAreaOffset) + m_position(mdiSubWindow->pos() + mdiSubWindow->mdiArea()->pos()) { } @@ -85,12 +85,12 @@ QDesignerWorkbench::Position::Position(const QDockWidget *dockWidget) : { } -QDesignerWorkbench::Position::Position(const QWidget *topLevelWindow, const QPoint &desktopTopLeft) +QDesignerWorkbench::Position::Position(const QWidget *topLevelWindow) { - const QWidget *window =topLevelWindow->window (); + const QWidget *window = topLevelWindow->window(); Q_ASSERT(window); m_minimized = window->isMinimized(); - m_position = window->pos() - desktopTopLeft; + m_position = window->pos() - window->screen()->availableGeometry().topLeft(); } void QDesignerWorkbench::Position::applyTo(QMdiSubWindow *mdiSubWindow, @@ -247,19 +247,17 @@ void QDesignerWorkbench::saveGeometriesForModeChange() case NeutralMode: break; case TopLevelMode: { - const QPoint desktopOffset = QGuiApplication::primaryScreen()->availableGeometry().topLeft(); for (QDesignerToolWindow *tw : std::as_const(m_toolWindows)) - m_Positions.insert(tw, Position(tw, desktopOffset)); + m_Positions.insert(tw, Position(tw)); for (QDesignerFormWindow *fw : std::as_const(m_formWindows)) - m_Positions.insert(fw, Position(fw, desktopOffset)); + m_Positions.insert(fw, Position(fw)); } break; case DockedMode: { - const QPoint mdiAreaOffset = m_dockedMainWindow->mdiArea()->pos(); for (QDesignerToolWindow *tw : std::as_const(m_toolWindows)) m_Positions.insert(tw, Position(dockWidgetOf(tw))); for (QDesignerFormWindow *fw : std::as_const(m_formWindows)) - m_Positions.insert(fw, Position(mdiSubWindowOf(fw), mdiAreaOffset)); + m_Positions.insert(fw, Position(mdiSubWindowOf(fw))); } break; } diff --git a/src/designer/src/designer/qdesigner_workbench.h b/src/designer/src/designer/qdesigner_workbench.h index 304ea3254..82f18d0ab 100644 --- a/src/designer/src/designer/qdesigner_workbench.h +++ b/src/designer/src/designer/qdesigner_workbench.h @@ -148,9 +148,9 @@ private: // interface modes. class Position { public: - Position(const QDockWidget *dockWidget); - Position(const QMdiSubWindow *mdiSubWindow, const QPoint &mdiAreaOffset); - Position(const QWidget *topLevelWindow, const QPoint &desktopTopLeft); + explicit Position(const QDockWidget *dockWidget); + explicit Position(const QMdiSubWindow *mdiSubWindow); + explicit Position(const QWidget *topLevelWindow); void applyTo(QMdiSubWindow *mdiSubWindow, const QPoint &mdiAreaOffset) const; void applyTo(QWidget *topLevelWindow, const QPoint &desktopTopLeft) const; |