diff options
author | Friedemann Kleint <Friedemann.Kleint@nokia.com> | 2012-03-05 14:42:42 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-03-07 22:43:43 +0100 |
commit | b319d44798fe4c5aa8b859966d64f28b08be28dd (patch) | |
tree | fc24d20ebff32b89f02e0390950fc33f38f7e972 /src/gui/kernel/qplatformcursor_qpa.cpp | |
parent | b7915a4d0d97a60fc30e55eb4cc1b10e7fe9ce2f (diff) |
QCursor: Associate cursor with screen.
- Introduce cursor() accessor to QPlatformScreen.
- Remove screen member of QPlatformCursor (a
cursor can be shared by multiple screens
of a virtual desktop).
- Add QCursor::pos()/ QCursor::setPos() taking
a QScreen-parameter, use primaryScreen() for
old overloads. QCursor::pos() can then query
the platform cursor for the position and return
the position even if the mouse position is outside
the windows owned by the Qt application.
- Fix tests
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
Task-number: QTBUG-22457
Task-number: QTBUG-22565
Task-number: QTBUG-20753
Change-Id: Ia69f37343f95772e934eab1cd806bd54cbdbbe51
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Diffstat (limited to 'src/gui/kernel/qplatformcursor_qpa.cpp')
-rw-r--r-- | src/gui/kernel/qplatformcursor_qpa.cpp | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/gui/kernel/qplatformcursor_qpa.cpp b/src/gui/kernel/qplatformcursor_qpa.cpp index fd7bcdcf18..a4e998ddbc 100644 --- a/src/gui/kernel/qplatformcursor_qpa.cpp +++ b/src/gui/kernel/qplatformcursor_qpa.cpp @@ -43,13 +43,22 @@ #include <QPainter> #include <QBitmap> #include <QGuiApplication> +#include <QScreen> +#include <QPlatformScreen> #include <private/qguiapplication_p.h> #include <QDebug> QT_BEGIN_NAMESPACE -QList <QWeakPointer<QPlatformCursor> > QPlatformCursorPrivate::instances; +QList<QPlatformCursor *> QPlatformCursorPrivate::getInstances() +{ + QList<QPlatformCursor *> result; + foreach (const QScreen *screen, QGuiApplicationPrivate::screen_list) + if (QPlatformCursor *cursor = screen->handle()->cursor()) + result.push_back(cursor); + return result; +} /*! \class QPlatformCursor @@ -93,10 +102,8 @@ QList <QWeakPointer<QPlatformCursor> > QPlatformCursorPrivate::instances; Constructs a QPlatformCursor for the given \a screen. */ -QPlatformCursor::QPlatformCursor(QPlatformScreen *scr ) - : screen(scr) +QPlatformCursor::QPlatformCursor() { - QPlatformCursorPrivate::instances.append(this); } QPoint QPlatformCursor::pos() const |