XdgToplevel: validate move/resize request serial
Currently we only support interactive move/resize with the pointer, touch and tablet tool support are TODO. Validate the serial here to ensure we don't start a pointer move/resize in response to the client attempting to start a move/resize with touch/tablet tool. This fixes an assertion failure that the pointer's cursor is not hidden during move/resize, which is how the issue was discovered. Another win for assertions :)
This commit is contained in:
parent
1b63c463a7
commit
0e7a692831
@ -427,9 +427,12 @@ fn handleRequestMove(
|
||||
if (view.pending.fullscreen) return;
|
||||
if (!(view.pending.float or view.pending.output.?.layout == null)) return;
|
||||
|
||||
switch (seat.cursor.mode) {
|
||||
.passthrough, .down => seat.cursor.startMove(view),
|
||||
.move, .resize => {},
|
||||
// Moving windows with touch or tablet tool is not yet supported.
|
||||
if (seat.wlr_seat.validatePointerGrabSerial(null, event.serial)) {
|
||||
switch (seat.cursor.mode) {
|
||||
.passthrough, .down => seat.cursor.startMove(view),
|
||||
.move, .resize => {},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -443,9 +446,12 @@ fn handleRequestResize(listener: *wl.Listener(*wlr.XdgToplevel.event.Resize), ev
|
||||
if (view.pending.fullscreen) return;
|
||||
if (!(view.pending.float or view.pending.output.?.layout == null)) return;
|
||||
|
||||
switch (seat.cursor.mode) {
|
||||
.passthrough, .down => seat.cursor.startResize(view, event.edges),
|
||||
.move, .resize => {},
|
||||
// Resizing windows with touch or tablet tool is not yet supported.
|
||||
if (seat.wlr_seat.validatePointerGrabSerial(null, event.serial)) {
|
||||
switch (seat.cursor.mode) {
|
||||
.passthrough, .down => seat.cursor.startResize(view, event.edges),
|
||||
.move, .resize => {},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user