Skip to content

Update input transformation matrix when buffer geometry changes

Currently, the input transformation matrix for the focused pointer surface gets updated only when the frameGeometryChanged() signal is emitted. However, this is not really accurate because the input transformation matrix is computed based on the buffer geometry, i.e. the rect on the screen occupied by the main surface.

If a client updates its window geometry so only the position of the upper left corner of the main surface changes, for example this can happen when user switches to a GTK theme that has bigger drop shadows than the current one, user may notice that pointer events are slightly "shifted."

In order to ensure that pointer events never become shifted, this change introduces a new signal in the Toplevel class that input components in kwin can connect in order to keep input transformation matrices in SeatInterface in sync.

Edited by Vlad Zahorodnii

Merge request reports