diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2023-12-19 13:46:29 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2024-01-08 10:54:05 +0000 |
commit | aa73dd040f3d3d3484ee0dbb2c94607689b61d51 (patch) | |
tree | 0ebc6e09c78feac83b0fd2985e1ac092ccd1806b | |
parent | 98fbaa4110d848451594422441b0e930c3f1ada5 (diff) |
Qt Designer/QDesignerWorkbench: Refactor functions for geometries
Replace desktopGeometry() by a screen() helper function and rename
availableGeometry() to availableFormGeometry() for clarity.
Task-number: QTBUG-120236
Change-Id: I1756df68de0960ea92bcaa0e51ea1a7980da727e
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
(cherry picked from commit ffffeedf9ab1d537dab3b95969ee6b6681cb14ff)
(cherry picked from commit ba5e7f413c6d40638a9e6d8df8a9634d9e1a830f)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | src/designer/src/designer/qdesigner_workbench.cpp | 43 | ||||
-rw-r--r-- | src/designer/src/designer/qdesigner_workbench.h | 6 |
2 files changed, 20 insertions, 29 deletions
diff --git a/src/designer/src/designer/qdesigner_workbench.cpp b/src/designer/src/designer/qdesigner_workbench.cpp index 3de355750..ed454ee49 100644 --- a/src/designer/src/designer/qdesigner_workbench.cpp +++ b/src/designer/src/designer/qdesigner_workbench.cpp @@ -405,7 +405,9 @@ void QDesignerWorkbench::switchToDockedMode() this, &QDesignerWorkbench::slotFileDropped); connect(m_dockedMainWindow, &DockedMainWindow::formWindowActivated, this, &QDesignerWorkbench::slotFormWindowActivated); - m_dockedMainWindow->restoreSettings(settings, m_dockedMainWindow->addToolWindows(m_toolWindows), desktopGeometry()); + m_dockedMainWindow->restoreSettings(settings, + m_dockedMainWindow->addToolWindows(m_toolWindows), + screen()->availableGeometry()); m_core->setTopLevel(m_dockedMainWindow); @@ -452,9 +454,10 @@ void QDesignerWorkbench::switchToTopLevelMode() Q_ASSERT(widgetBoxWrapper); switchToNeutralMode(); - const QRect availableGeometry = desktopGeometry(); + m_mode = TopLevelMode; // Set new mode before calling screen() + const auto *currentScreen = screen(); + const QRect availableGeometry = currentScreen->availableGeometry(); const QPoint desktopOffset = availableGeometry.topLeft(); - m_mode = TopLevelMode; // The widget box is special, it gets the menubar and gets to be the main widget. @@ -545,32 +548,20 @@ QDesignerFormWindow *QDesignerWorkbench::formWindow(int index) const return m_formWindows.at(index); } -QRect QDesignerWorkbench::desktopGeometry() const +QScreen *QDesignerWorkbench::screen() const { - // Return geometry of the desktop designer is running in. - QWidget *widget = nullptr; - switch (m_mode) { - case DockedMode: - widget = m_dockedMainWindow; - break; - case TopLevelMode: - widget = widgetBoxToolWindow(); - break; - case NeutralMode: - break; - } - const auto screen = widget ? widget->screen() : QGuiApplication::primaryScreen(); - return screen ? screen->availableGeometry() - : QGuiApplication::primaryScreen()->availableGeometry(); + auto *widget = m_mode == DockedMode + ? static_cast<QWidget *>(m_dockedMainWindow.data()) + : static_cast<QWidget *>(widgetBoxToolWindow()); + return widget != nullptr + ? widget->screen() : QGuiApplication::primaryScreen(); } -QRect QDesignerWorkbench::availableGeometry() const +QRect QDesignerWorkbench::availableFormGeometry() const { - if (m_mode == DockedMode) - return m_dockedMainWindow->mdiArea()->geometry(); - - const auto screen = widgetBoxToolWindow()->screen(); - return screen ? screen->availableGeometry() : QGuiApplication::primaryScreen()->availableGeometry() ; + // Return available geometry for forms + return m_mode == DockedMode + ? m_dockedMainWindow->mdiArea()->geometry() : screen()->availableGeometry(); } void QDesignerWorkbench::slotFormWindowActivated(QDesignerFormWindow* fw) @@ -937,7 +928,7 @@ QDesignerFormWindow * QDesignerWorkbench::loadForm(const QString &fileName, formWindow->setAttribute(Qt::WA_DeleteOnClose, true); formWindow->setParent(magicalParent(formWindow), magicalWindowFlags(formWindow)); formWindow->resize(formWindowGeometryHint.size()); - formWindow->move(availableGeometry().center() - formWindowGeometryHint.center()); + formWindow->move(availableFormGeometry().center() - formWindowGeometryHint.center()); } break; case NeutralMode: diff --git a/src/designer/src/designer/qdesigner_workbench.h b/src/designer/src/designer/qdesigner_workbench.h index 7c10ed227..304ea3254 100644 --- a/src/designer/src/designer/qdesigner_workbench.h +++ b/src/designer/src/designer/qdesigner_workbench.h @@ -29,6 +29,7 @@ class QMenuBar; class QToolBar; class QMdiSubWindow; class QCloseEvent; +class QScreen; class ToolBarManager; class QDesignerFormEditorInterface; @@ -64,9 +65,6 @@ public: QActionGroup *modeActionGroup() const; - QRect availableGeometry() const; - QRect desktopGeometry() const; - bool readInForm(const QString &fileName) const; bool writeOutForm(QDesignerFormWindowInterface *formWindow, const QString &fileName) const; bool saveForm(QDesignerFormWindowInterface *fw); @@ -106,6 +104,8 @@ private slots: void slotFileDropped(const QString &f); private: + QScreen *screen() const; + QRect availableFormGeometry() const; QWidget *magicalParent(const QWidget *w) const; Qt::WindowFlags magicalWindowFlags(const QWidget *widgetForFlags) const; QDesignerFormWindowManagerInterface *formWindowManager() const; |