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/dialogs/qcolordialog.cpp | 3 +- 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 ++ src/widgets/util/qscroller.cpp | 7 ++-- src/widgets/widgets/qeffects.cpp | 3 ++ 7 files changed, 126 insertions(+), 40 deletions(-) diff --git a/src/widgets/dialogs/qcolordialog.cpp b/src/widgets/dialogs/qcolordialog.cpp index 03505e78c8..cd422297f1 100644 --- a/src/widgets/dialogs/qcolordialog.cpp +++ b/src/widgets/dialogs/qcolordialog.cpp @@ -1560,8 +1560,7 @@ bool QColorDialogPrivate::selectColor(const QColor &col) QColor QColorDialogPrivate::grabScreenColor(const QPoint &p) { const QDesktopWidget *desktop = QApplication::desktop(); - const QPixmap pixmap = QGuiApplication::screens().at(desktop->screenNumber())->grabWindow(desktop->winId(), - p.x(), p.y(), 1, 1); + const QPixmap pixmap = QGuiApplication::primaryScreen()->grabWindow(desktop->winId(), p.x(), p.y(), 1, 1); QImage i = pixmap.toImage(); return i.pixel(0, 0); } 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) diff --git a/src/widgets/util/qscroller.cpp b/src/widgets/util/qscroller.cpp index a49dbe427e..8a1bcdae05 100644 --- a/src/widgets/util/qscroller.cpp +++ b/src/widgets/util/qscroller.cpp @@ -58,6 +58,7 @@ #include #endif #include +#include #include #include #include @@ -1016,7 +1017,7 @@ bool QScroller::handleInput(Input input, const QPointF &position, qint64 timesta #if 1 // Used to be excluded in Qt4 for Q_WS_MAC // the Mac version is implemented in qscroller_mac.mm -QPointF QScrollerPrivate::realDpi(int screen) const +QPointF QScrollerPrivate::realDpi(int screenNumber) const { # if 0 /* Used to be included in Qt4 for Q_WS_X11 */ && !defined(QT_NO_XRANDR) if (X11 && X11->use_xrandr && X11->ptrXRRSizes && X11->ptrXRRRootToScreen) { @@ -1040,8 +1041,8 @@ QPointF QScrollerPrivate::realDpi(int screen) const } # endif - QWidget *w = QApplication::desktop()->screen(screen); - return QPointF(w->physicalDpiX(), w->physicalDpiY()); + const QScreen *screen = QDesktopWidgetPrivate::screen(screenNumber); + return QPointF(screen->physicalDotsPerInchX(), screen->physicalDotsPerInchY()); } #endif diff --git a/src/widgets/widgets/qeffects.cpp b/src/widgets/widgets/qeffects.cpp index 08ef795b07..bcc8d7815d 100644 --- a/src/widgets/widgets/qeffects.cpp +++ b/src/widgets/widgets/qeffects.cpp @@ -98,9 +98,12 @@ static QAlphaWidget* q_blend = 0; /* Constructs a QAlphaWidget. */ +QT_WARNING_PUSH +QT_WARNING_DISABLE_DEPRECATED // QDesktopWidget::screen() QAlphaWidget::QAlphaWidget(QWidget* w, Qt::WindowFlags f) : QWidget(QApplication::desktop()->screen(QDesktopWidgetPrivate::screenNumber(w)), f) { +QT_WARNING_POP #ifndef Q_OS_WIN setEnabled(false); #endif -- cgit v1.2.3