river: remove wlroots 0.14 workarounds

Since updating to wlroots 0.15 we can remove several workarounds we had
in place due to wlroots improvements.
This commit is contained in:
Isaac Freund
2021-12-22 20:15:57 +00:00
parent 90aee02b70
commit 6a093fecee
6 changed files with 6 additions and 35 deletions

View File

@ -84,7 +84,6 @@ status_trackers: std.SinglyLinkedList(SeatStatus) = .{},
/// True if a pointer drag is currently in progress
pointer_drag: bool = false,
pointer_drag_idle_source: ?*wl.EventSource = null,
request_set_selection: wl.Listener(*wlr.Seat.event.RequestSetSelection) =
wl.Listener(*wlr.Seat.event.RequestSetSelection).init(handleRequestSetSelection),
@ -129,8 +128,6 @@ pub fn deinit(self: *Self) void {
self.focus_stack.remove(node);
util.gpa.destroy(node);
}
if (self.pointer_drag_idle_source) |idle_source| idle_source.remove();
}
/// Set the current focus. If a visible view is passed it will be focused.
@ -460,7 +457,6 @@ fn handleRequestStartDrag(
if (self.pointer_drag) {
log.debug("ignoring request to start pointer drag, " ++
"another pointer drag is already in progress", .{});
if (event.drag.source) |source| source.destroy();
return;
}
@ -492,22 +488,6 @@ fn handlePointerDragDestroy(listener: *wl.Listener(*wlr.Drag), wlr_drag: *wlr.Dr
const self = @fieldParentPtr(Self, "pointer_drag_destroy", listener);
self.pointer_drag_destroy.link.remove();
// TODO(wlroots): wlroots 0.14 doesn't send the wl_data_device.leave event
// until after this signal has been emitted. Triggering a wl_pointer.enter
// before the wl_data_device.leave breaks clients, so use an idle event
// source as a workaround. This has been fixed on the wlroots master branch
// in commit c9ba9e82.
const event_loop = server.wl_server.getEventLoop();
assert(self.pointer_drag_idle_source == null);
self.pointer_drag_idle_source = event_loop.addIdle(*Self, finishPointerDragDestroy, self) catch {
log.crit("out of memory", .{});
wlr_drag.seat_client.client.postNoMemory();
return;
};
}
fn finishPointerDragDestroy(self: *Self) callconv(.C) void {
self.pointer_drag_idle_source = null;
self.pointer_drag = false;
self.cursor.checkFocusFollowsCursor();
self.cursor.updateState();