diff options
author | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2017-08-13 15:19:20 +0200 |
---|---|---|
committer | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2017-08-18 13:10:23 +0000 |
commit | 23697466cae8f1a49537fed1e60db8cea79207b4 (patch) | |
tree | de527385caf854ddd810b39369370c8730c5306e /src/widgets/kernel/qdesktopwidget.cpp | |
parent | 52ad5afe1c1d8f8d47fccbdf474f8c6119b94608 (diff) |
Reduce usage of QDesktopWidget to resolve screen properties in QtWidgets
Removes the need to initialize QDesktopWidget, just to look up which
screen a widget would map to, the geometry of a screen, number of
screens, etc.
Change-Id: Ieb153b9ff6d3fba645fc528d6e430e8392f990bf
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Diffstat (limited to 'src/widgets/kernel/qdesktopwidget.cpp')
-rw-r--r-- | src/widgets/kernel/qdesktopwidget.cpp | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/src/widgets/kernel/qdesktopwidget.cpp b/src/widgets/kernel/qdesktopwidget.cpp index 1e6fbfd239..6077ac38db 100644 --- a/src/widgets/kernel/qdesktopwidget.cpp +++ b/src/widgets/kernel/qdesktopwidget.cpp @@ -73,6 +73,11 @@ int QDesktopScreenWidget::screenNumber() const const QRect QDesktopWidget::screenGeometry(const QWidget *widget) const { + return QDesktopWidgetPrivate::screenGeometry(widget); +} + +const QRect QDesktopWidgetPrivate::screenGeometry(const QWidget *widget) +{ if (Q_UNLIKELY(!widget)) { qWarning("QDesktopWidget::screenGeometry(): Attempt " "to get the screen geometry of a null widget"); @@ -86,6 +91,11 @@ const QRect QDesktopWidget::screenGeometry(const QWidget *widget) const const QRect QDesktopWidget::availableGeometry(const QWidget *widget) const { + return QDesktopWidgetPrivate::availableGeometry(widget); +} + +const QRect QDesktopWidgetPrivate::availableGeometry(const QWidget *widget) +{ if (Q_UNLIKELY(!widget)) { qWarning("QDesktopWidget::availableGeometry(): Attempt " "to get the available geometry of a null widget"); @@ -195,16 +205,51 @@ QDesktopWidget::~QDesktopWidget() bool QDesktopWidget::isVirtualDesktop() const { + return QDesktopWidgetPrivate::isVirtualDesktop(); +} + +bool QDesktopWidgetPrivate::isVirtualDesktop() +{ return QGuiApplication::primaryScreen()->virtualSiblings().size() > 1; } +QRect QDesktopWidgetPrivate::geometry() +{ + return QGuiApplication::primaryScreen()->virtualGeometry(); +} + +QSize QDesktopWidgetPrivate::size() +{ + return geometry().size(); +} + +int QDesktopWidgetPrivate::width() +{ + return geometry().width(); +} + +int QDesktopWidgetPrivate::height() +{ + return geometry().height(); +} + int QDesktopWidget::primaryScreen() const { + return QDesktopWidgetPrivate::primaryScreen(); +} + +int QDesktopWidgetPrivate::primaryScreen() +{ return 0; } int QDesktopWidget::numScreens() const { + return QDesktopWidgetPrivate::numScreens(); +} + +int QDesktopWidgetPrivate::numScreens() +{ return qMax(QGuiApplication::screens().size(), 1); } @@ -218,6 +263,11 @@ QWidget *QDesktopWidget::screen(int screen) const QRect QDesktopWidget::availableGeometry(int screenNo) const { + return QDesktopWidgetPrivate::availableGeometry(screenNo); +} + +const QRect QDesktopWidgetPrivate::availableGeometry(int screenNo) +{ QList<QScreen *> screens = QGuiApplication::screens(); if (screenNo == -1) screenNo = 0; @@ -229,6 +279,11 @@ const QRect QDesktopWidget::availableGeometry(int screenNo) const const QRect QDesktopWidget::screenGeometry(int screenNo) const { + return QDesktopWidgetPrivate::screenGeometry(screenNo); +} + +const QRect QDesktopWidgetPrivate::screenGeometry(int screenNo) +{ QList<QScreen *> screens = QGuiApplication::screens(); if (screenNo == -1) screenNo = 0; @@ -240,6 +295,11 @@ const QRect QDesktopWidget::screenGeometry(int screenNo) const int QDesktopWidget::screenNumber(const QWidget *w) const { + return QDesktopWidgetPrivate::screenNumber(w); +} + +int QDesktopWidgetPrivate::screenNumber(const QWidget *w) +{ if (!w) return primaryScreen(); @@ -287,6 +347,11 @@ int QDesktopWidget::screenNumber(const QWidget *w) const int QDesktopWidget::screenNumber(const QPoint &p) const { + return QDesktopWidgetPrivate::screenNumber(p); +} + +int QDesktopWidgetPrivate::screenNumber(const QPoint &p) +{ const QList<QScreen *> screens = QGuiApplication::screens(); if (!screens.isEmpty()) { const QList<QScreen *> primaryScreens = screens.first()->virtualSiblings(); |