From ebb7d2cd7d7c4b52dd2ba36a1e702d15b4eb1e16 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 14 Jan 2013 10:18:55 +0100 Subject: 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 Reviewed-by: Andy Nichols --- src/plugins/platforms/wayland/qwaylandcursor.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'src') 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()) { -- cgit v1.2.3