diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2013-01-14 10:18:55 +0100 |
---|---|---|
committer | Andy Nichols <andy.nichols@digia.com> | 2013-01-15 10:47:02 +0100 |
commit | ebb7d2cd7d7c4b52dd2ba36a1e702d15b4eb1e16 (patch) | |
tree | b46b36600e0b8fa35d3bd271704bacdb6e050023 /src/plugins/platforms/wayland | |
parent | f7b58cccba239b16d18379afbd4117e4432790c4 (diff) |
Default to Qt::ArrowCursor when cursor = 0 in changeCursor().
The planned fix for the task introduces passing cursor = 0
meaning "no cursor set" for the window in question. Prevent
it from crashing by defaulting to Qt::ArrowCursor.
Task-number: QTBUG-28879
Change-Id: I3233c79d41ccf96cee237d93624b3ea740b7e772
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
Diffstat (limited to 'src/plugins/platforms/wayland')
-rw-r--r-- | src/plugins/platforms/wayland/qwaylandcursor.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/plugins/platforms/wayland/qwaylandcursor.cpp b/src/plugins/platforms/wayland/qwaylandcursor.cpp index b26f866f8..d966111c6 100644 --- a/src/plugins/platforms/wayland/qwaylandcursor.cpp +++ b/src/plugins/platforms/wayland/qwaylandcursor.cpp @@ -141,16 +141,17 @@ void QWaylandCursor::changeCursor(QCursor *cursor, QWindow *window) p = NULL; bool isBitmap = false; - switch (cursor->shape()) { + const Qt::CursorShape newShape = cursor ? cursor->shape() : Qt::ArrowCursor; + switch (newShape) { case Qt::ArrowCursor: - p = &pointer_images[cursor->shape()]; + p = &pointer_images[newShape]; break; case Qt::UpArrowCursor: case Qt::CrossCursor: case Qt::WaitCursor: break; case Qt::IBeamCursor: - p = &pointer_images[cursor->shape()]; + p = &pointer_images[newShape]; break; case Qt::SizeVerCursor: /* 5 */ case Qt::SizeHorCursor: @@ -162,7 +163,7 @@ void QWaylandCursor::changeCursor(QCursor *cursor, QWindow *window) case Qt::SplitVCursor: case Qt::SplitHCursor: case Qt::PointingHandCursor: - p = &pointer_images[cursor->shape()]; + p = &pointer_images[newShape]; break; case Qt::ForbiddenCursor: case Qt::WhatsThisCursor: /* 15 */ @@ -173,7 +174,7 @@ void QWaylandCursor::changeCursor(QCursor *cursor, QWindow *window) case Qt::DragCopyCursor: case Qt::DragMoveCursor: /* 20 */ case Qt::DragLinkCursor: - p = &pointer_images[cursor->shape()]; + p = &pointer_images[newShape]; break; case Qt::BitmapCursor: @@ -186,7 +187,7 @@ void QWaylandCursor::changeCursor(QCursor *cursor, QWindow *window) if (!p && !isBitmap) { p = &pointer_images[0]; - qWarning("unhandled cursor %d", cursor->shape()); + qWarning("unhandled cursor %d", newShape); } if (isBitmap && !cursor->pixmap().isNull()) { |