QWindowsCursor: Add API for determining the cursor state.

Detect the 'suppressed' state new in Windows 8.

Change-Id: I0faa994aa7b91869cedba36b777b1784818efcce
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
This commit is contained in:
Friedemann Kleint 2014-01-27 13:19:22 +01:00 committed by The Qt Project
parent 245e630cfd
commit 97bc287782
2 changed files with 23 additions and 0 deletions

View File

@ -465,6 +465,22 @@ QPoint QWindowsCursor::mousePosition()
return QPoint(p.x, p.y);
}
QWindowsCursor::CursorState QWindowsCursor::cursorState()
{
#ifndef Q_OS_WINCE
enum { cursorShowing = 0x1, cursorSuppressed = 0x2 }; // Windows 8: CURSOR_SUPPRESSED
CURSORINFO cursorInfo;
cursorInfo.cbSize = sizeof(CURSORINFO);
if (GetCursorInfo(&cursorInfo)) {
if (cursorInfo.flags & CursorShowing)
return CursorShowing;
if (cursorInfo.flags & cursorSuppressed)
return CursorSuppressed;
}
#endif // !Q_OS_WINCE
return CursorHidden;
}
void QWindowsCursor::setPos(const QPoint &pos)
{
SetCursorPos(pos.x(), pos.y());

View File

@ -93,6 +93,12 @@ private:
class QWindowsCursor : public QPlatformCursor
{
public:
enum CursorState {
CursorShowing,
CursorHidden,
CursorSuppressed // Cursor suppressed by touch interaction (Windows 8).
};
QWindowsCursor() {}
virtual void changeCursor(QCursor * widgetCursor, QWindow * widget);
@ -102,6 +108,7 @@ public:
static HCURSOR createPixmapCursor(const QPixmap &pixmap, int hotX, int hotY);
static HCURSOR createSystemCursor(const QCursor &c);
static QPoint mousePosition();
static CursorState cursorState();
QWindowsWindowCursor standardWindowCursor(Qt::CursorShape s = Qt::ArrowCursor);
QWindowsWindowCursor pixmapWindowCursor(const QCursor &c);