aboutsummaryrefslogtreecommitdiff
path: root/src/seat.zig
diff options
context:
space:
mode:
authorIsaac Freund <ifreund@ifreund.xyz>2020-04-25 01:04:12 +0200
committerIsaac Freund <ifreund@ifreund.xyz>2020-04-25 01:04:12 +0200
commit96c20f26fc06ca2b670b22563c27d303e9df1e45 (patch)
tree85af9c699d9d6dfcba8dc18155b2b2f22d36d6b5 /src/seat.zig
parent1829ca46b413e2f0bf71c232c7a66db19312495e (diff)
downloadriver-96c20f26fc06ca2b670b22563c27d303e9df1e45.tar.gz
river-96c20f26fc06ca2b670b22563c27d303e9df1e45.tar.xz
Handle set selection for clipboard support
Diffstat (limited to 'src/seat.zig')
-rw-r--r--src/seat.zig14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/seat.zig b/src/seat.zig
index 19d61fb..a60454e 100644
--- a/src/seat.zig
+++ b/src/seat.zig
@@ -41,6 +41,8 @@ pub const Seat = struct {
/// recieve focus.
focused_layer: ?*LayerSurface,
+ listen_request_set_selection: c.wl_listener,
+
pub fn init(self: *Self, input_manager: *InputManager, name: []const u8) !void {
self.input_manager = input_manager;
@@ -60,6 +62,9 @@ pub const Seat = struct {
self.focus_stack.init();
self.focused_layer = null;
+
+ self.listen_request_set_selection.notify = handleRequestSetSelection;
+ c.wl_signal_add(&self.wlr_seat.events.request_set_selection, &self.listen_request_set_selection);
}
pub fn deinit(self: *Self) void {
@@ -265,4 +270,13 @@ pub const Seat = struct {
// acceleration, etc.
c.wlr_cursor_attach_input_device(self.cursor.wlr_cursor, device);
}
+
+ fn handleRequestSetSelection(listener: ?*c.wl_listener, data: ?*c_void) callconv(.C) void {
+ const self = @fieldParentPtr(Self, "listen_request_set_selection", listener.?);
+ const event = @ptrCast(
+ *c.wlr_seat_request_set_selection_event,
+ @alignCast(@alignOf(*c.wlr_seat_request_set_selection_event), data),
+ );
+ c.wlr_seat_set_selection(self.wlr_seat, event.source, event.serial);
+ }
};