From b254b03dc3b1cfcfc5f17158d2470e0a9a946a0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Fri, 8 Sep 2017 18:21:03 +0200 Subject: Deprecate QDesktopWidget in favor of QScreen [ChangeLog][QtWidgets] QDesktopWidget has been deprecated. Use the corresponding QScreen functions instead. Task-number: QTBUG-62094 Change-Id: I0941d2aa27a06ec650ca52d6467e5bfb0ad43459 Reviewed-by: Gatis Paeglis --- src/widgets/kernel/qdesktopwidget.cpp | 37 ++++++++++++++-------- src/widgets/kernel/qdesktopwidget.h | 58 ++++++++++++++++++++++------------ src/widgets/kernel/qdesktopwidget.qdoc | 56 +++++++++++++++++++++++++++++++- src/widgets/kernel/qdesktopwidget_p.h | 2 ++ 4 files changed, 118 insertions(+), 35 deletions(-) (limited to 'src/widgets/kernel') diff --git a/src/widgets/kernel/qdesktopwidget.cpp b/src/widgets/kernel/qdesktopwidget.cpp index 09e39c7cff..5fb7882932 100644 --- a/src/widgets/kernel/qdesktopwidget.cpp +++ b/src/widgets/kernel/qdesktopwidget.cpp @@ -176,17 +176,26 @@ void QDesktopWidgetPrivate::_q_updateScreens() // Notice that we trigger screenCountChanged even if a screen was removed and another one added, // in which case the total number of screens did not change. This is the only way for applications // to notice that a screen was swapped out against another one. +QT_WARNING_PUSH +QT_WARNING_DISABLE_DEPRECATED emit q->screenCountChanged(targetLength); +QT_WARNING_POP } foreach (int changedScreen, changedScreens) +QT_WARNING_PUSH +QT_WARNING_DISABLE_DEPRECATED emit q->resized(changedScreen); +QT_WARNING_POP } void QDesktopWidgetPrivate::_q_availableGeometryChanged() { Q_Q(QDesktopWidget); if (QScreen *screen = qobject_cast(q->sender())) +QT_WARNING_PUSH +QT_WARNING_DISABLE_DEPRECATED emit q->workAreaResized(QGuiApplication::screens().indexOf(screen)); +QT_WARNING_POP } QDesktopWidget::QDesktopWidget() @@ -268,13 +277,8 @@ const QRect QDesktopWidget::availableGeometry(int screenNo) const const QRect QDesktopWidgetPrivate::availableGeometry(int screenNo) { - QList screens = QGuiApplication::screens(); - if (screenNo == -1) - screenNo = 0; - if (screenNo < 0 || screenNo >= screens.size()) - return QRect(); - else - return screens.at(screenNo)->availableGeometry(); + const QScreen *screen = QDesktopWidgetPrivate::screen(screenNo); + return screen ? screen->availableGeometry() : QRect(); } const QRect QDesktopWidget::screenGeometry(int screenNo) const @@ -284,13 +288,8 @@ const QRect QDesktopWidget::screenGeometry(int screenNo) const const QRect QDesktopWidgetPrivate::screenGeometry(int screenNo) { - QList screens = QGuiApplication::screens(); - if (screenNo == -1) - screenNo = 0; - if (screenNo < 0 || screenNo >= screens.size()) - return QRect(); - else - return screens.at(screenNo)->geometry(); + const QScreen *screen = QDesktopWidgetPrivate::screen(screenNo); + return screen ? screen->geometry() : QRect(); } int QDesktopWidget::screenNumber(const QWidget *w) const @@ -356,6 +355,16 @@ int QDesktopWidgetPrivate::screenNumber(const QPoint &p) return screen ? QGuiApplication::screens().indexOf(screen) : primaryScreen(); } +QScreen *QDesktopWidgetPrivate::screen(int screenNo) +{ + QList screens = QGuiApplication::screens(); + if (screenNo == -1) + screenNo = 0; + if (screenNo < 0 || screenNo >= screens.size()) + return nullptr; + return screens.at(screenNo); +} + void QDesktopWidget::resizeEvent(QResizeEvent *) { } diff --git a/src/widgets/kernel/qdesktopwidget.h b/src/widgets/kernel/qdesktopwidget.h index 97eef70263..f53d0fe9bb 100644 --- a/src/widgets/kernel/qdesktopwidget.h +++ b/src/widgets/kernel/qdesktopwidget.h @@ -59,32 +59,45 @@ public: QDesktopWidget(); ~QDesktopWidget(); - bool isVirtualDesktop() const; + int screenNumber(const QWidget *widget = nullptr) const; + const QRect screenGeometry(const QWidget *widget) const; + const QRect availableGeometry(const QWidget *widget) const; - int numScreens() const; - int screenCount() const; - int primaryScreen() const; +#if QT_DEPRECATED_SINCE(5, 11) + QT_DEPRECATED_X("Use QScreen::virtualSiblings() of primary screen") bool isVirtualDesktop() const; - int screenNumber(const QWidget *widget = nullptr) const; - int screenNumber(const QPoint &) const; + QT_DEPRECATED_X("Use QGuiApplication::screens()") int numScreens() const; + QT_DEPRECATED_X("Use QGuiApplication::screens()") int screenCount() const; + QT_DEPRECATED_X("Use QGuiApplication::primaryScreen()") int primaryScreen() const; - QWidget *screen(int screen = -1); + QT_DEPRECATED_X("Use QGuiApplication::screenAt()") int screenNumber(const QPoint &) const; - const QRect screenGeometry(int screen = -1) const; - const QRect screenGeometry(const QWidget *widget) const; - const QRect screenGeometry(const QPoint &point) const - { return screenGeometry(screenNumber(point)); } + QT_DEPRECATED_X("Use QScreen") QWidget *screen(int screen = -1); - const QRect availableGeometry(int screen = -1) const; - const QRect availableGeometry(const QWidget *widget) const; - const QRect availableGeometry(const QPoint &point) const - { return availableGeometry(screenNumber(point)); } + QT_DEPRECATED_X("Use QGuiApplication::screens()") const QRect screenGeometry(int screen = -1) const; + QT_DEPRECATED_X("Use QGuiApplication::screenAt()") const QRect screenGeometry(const QPoint &point) const + { +QT_WARNING_PUSH +QT_WARNING_DISABLE_DEPRECATED + return screenGeometry(screenNumber(point)); +QT_WARNING_POP + } + + QT_DEPRECATED_X("Use QGuiApplication::screens()") const QRect availableGeometry(int screen = -1) const; + QT_DEPRECATED_X("Use QGuiApplication::screenAt()") const QRect availableGeometry(const QPoint &point) const + { +QT_WARNING_PUSH +QT_WARNING_DISABLE_DEPRECATED + return availableGeometry(screenNumber(point)); +QT_WARNING_POP + } Q_SIGNALS: - void resized(int); - void workAreaResized(int); - void screenCountChanged(int); - void primaryScreenChanged(); + QT_DEPRECATED_X("Use QScreen::geometryChanged()") void resized(int); + QT_DEPRECATED_X("Use QScreen::availableGeometryChanged()") void workAreaResized(int); + QT_DEPRECATED_X("Use QGuiApplication::screenAdded/Removed()") void screenCountChanged(int); + QT_DEPRECATED_X("Use QGuiApplication::primaryScreenChanged()") void primaryScreenChanged(); +#endif protected: void resizeEvent(QResizeEvent *e) override; @@ -100,7 +113,12 @@ private: }; inline int QDesktopWidget::screenCount() const -{ return numScreens(); } +{ +QT_WARNING_PUSH +QT_WARNING_DISABLE_DEPRECATED + return numScreens(); +QT_WARNING_POP +} QT_END_NAMESPACE diff --git a/src/widgets/kernel/qdesktopwidget.qdoc b/src/widgets/kernel/qdesktopwidget.qdoc index fdf6a27597..dd2d9535ae 100644 --- a/src/widgets/kernel/qdesktopwidget.qdoc +++ b/src/widgets/kernel/qdesktopwidget.qdoc @@ -32,6 +32,7 @@ \ingroup advanced \ingroup desktop \inmodule QtWidgets + \obsolete Systems with more than one graphics card and monitor can manage the physical screen space available either as multiple desktops, or as a @@ -125,7 +126,7 @@ \obsolete - This function is deprecated. Use screenCount instead. + Use QGuiApplication::screens() instead. \sa primaryScreen */ @@ -140,6 +141,10 @@ have the geometry of the entire virtual desktop; i.e., bounding every \a screen. + \obsolete + + Use QScreen instead. + \sa primaryScreen, screenCount, virtualDesktop */ @@ -152,6 +157,10 @@ on \macos, or the task bar on Windows). The default screen is used if \a screen is -1. + \obsolete + + Use QGuiApplication::screens() instead. + \sa screenNumber(), screenGeometry(), QScreen::availableGeometry() */ @@ -170,6 +179,10 @@ Returns the available geometry of the screen which contains \a p. + \obsolete + + Use QGuiApplication::screenAt() instead. + \sa screenGeometry() */ @@ -180,6 +193,10 @@ Returns the geometry of the screen with index \a screen. The default screen is used if \a screen is -1. + \obsolete + + Use QGuiApplication::screens() instead. + \sa screenNumber() */ @@ -195,6 +212,10 @@ \overload Returns the geometry of the screen which contains \a p. + + \obsolete + + Use QGuiApplication::screenAt() instead. */ @@ -214,30 +235,47 @@ Returns the index of the screen that contains the \a point, or the screen which is the shortest distance from the \a point. + \obsolete + + Use QGuiApplication::screenAt() instead. + \sa primaryScreen */ /*! \fn void QDesktopWidget::resizeEvent(QResizeEvent *event) \reimp + \internal */ /*! \fn void QDesktopWidget::resized(int screen) This signal is emitted when the size of \a screen changes. + + \obsolete + + Use QScreen::geometryChanged() instead. */ /*! \fn void QDesktopWidget::workAreaResized(int screen) This signal is emitted when the work area available on \a screen changes. + + \obsolete + + Use QScreen::availableGeometryChanged() instead. */ /*! \property QDesktopWidget::screenCount \brief the number of screens currently available on the system. + \obsolete + + Use QGuiApplication::screens() instead. + \since 4.6 */ @@ -245,6 +283,10 @@ \property QDesktopWidget::primaryScreen \brief the index of the screen that is configured to be the primary screen on the system. + + \obsolete + + Use QGuiApplication::primaryScreen() instead. */ /*! @@ -255,6 +297,10 @@ For virtual desktops, screen() will always return the same widget. The size of the virtual desktop is the size of this desktop widget. + + \obsolete + + Use QScreen::virtualSiblings() of primary screen instead. */ /*! @@ -264,6 +310,10 @@ This signal is emitted when the number of screens changes to \a newCount. + \obsolete + + Use QGuiApplication::screenAdded and QGuiApplication::screenRemoved() instead. + \sa screenCount */ @@ -278,5 +328,9 @@ \note This doesn't mean the QDesktopWidget::primaryScreen index will necessarily be different, but now it will refer to the new primary screen. + \obsolete + + Use QGuiApplication::primaryScreenChanged() instead. + \sa primaryScreen, screenGeometry() */ diff --git a/src/widgets/kernel/qdesktopwidget_p.h b/src/widgets/kernel/qdesktopwidget_p.h index 7a66661771..69f87337b3 100644 --- a/src/widgets/kernel/qdesktopwidget_p.h +++ b/src/widgets/kernel/qdesktopwidget_p.h @@ -100,6 +100,8 @@ public: static int screenNumber(const QWidget *widget = nullptr); static int screenNumber(const QPoint &); + static QScreen *screen(int screenNo = -1); + static const QRect screenGeometry(int screen = -1); static const QRect screenGeometry(const QWidget *widget); static const QRect screenGeometry(const QPoint &point) -- cgit v1.2.3