summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2023-12-19 13:46:29 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2024-01-08 10:54:05 +0000
commitaa73dd040f3d3d3484ee0dbb2c94607689b61d51 (patch)
tree0ebc6e09c78feac83b0fd2985e1ac092ccd1806b
parent98fbaa4110d848451594422441b0e930c3f1ada5 (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.cpp43
-rw-r--r--src/designer/src/designer/qdesigner_workbench.h6
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;