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:
@ -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();
|
||||
|
Reference in New Issue
Block a user