Do not unset cursor image when cursor enters a surface

Authored by graesslin on May 1 2018, 1:42 PM.



From Wayland documentation:
"When a seat's focus enters a surface, the pointer image is undefined and
a client should respond to this event by setting an appropriate pointer
image with the set_cursor request."

KWin's interpretation so far for the undefined pointer image was to
remove the pointer image when entering a surface waiting for the client
to set a cursor image. This can result in a short flicker as there might
be a frame without a cursor image.

This patch changes the behavior by keeping the previous image till the
application set a new one. This brings some advantages:

  • if the application is not responding a cursor is still shown
  • if the same cursor is used as in the previous window we don't have a


BUG: 393639
FIXED-IN: 5.12.X

Test Plan

I cannot see the flicker, so only tested with the adjusted tests

Diff Detail

R108 KWin
Automatic diff as part of commit; lint not applicable.
Automatic diff as part of commit; unit tests not applicable.
graesslin created this revision.May 1 2018, 1:42 PM
Restricted Application added a project: KWin. · View Herald TranscriptMay 1 2018, 1:42 PM
Restricted Application added a subscriber: kwin. · View Herald Transcript
graesslin requested review of this revision.May 1 2018, 1:42 PM
mart accepted this revision.May 2 2018, 9:02 AM
This revision is now accepted and ready to land.May 2 2018, 9:02 AM
graesslin updated this revision to Diff 33668.May 5 2018, 5:47 AM

Updates based on feedback in bug report. We still have issues when going from decoration to window, but from window to window is fixed

This revision was automatically updated to reflect the committed changes.