aboutsummaryrefslogtreecommitdiff
path: root/src/xdg_shell.zig
diff options
context:
space:
mode:
authorIsaac Freund <ifreund@ifreund.xyz>2020-03-23 14:04:54 +0100
committerIsaac Freund <ifreund@ifreund.xyz>2020-03-23 14:04:54 +0100
commit50494add408bda394d71d6f0a830ca1a34771ba2 (patch)
tree8bdb8ab69a4ec618d52f23ad2c50ed531301ff03 /src/xdg_shell.zig
parent8260b55a791ae7199d2652c6a6a9a7b3a59c1692 (diff)
downloadriver-50494add408bda394d71d6f0a830ca1a34771ba2.tar.gz
river-50494add408bda394d71d6f0a830ca1a34771ba2.tar.xz
Refactor xdg_shell handling
Diffstat (limited to 'src/xdg_shell.zig')
-rw-r--r--src/xdg_shell.zig68
1 files changed, 0 insertions, 68 deletions
diff --git a/src/xdg_shell.zig b/src/xdg_shell.zig
deleted file mode 100644
index 3bcc736..0000000
--- a/src/xdg_shell.zig
+++ /dev/null
@@ -1,68 +0,0 @@
-const std = @import("std");
-const c = @import("c.zig").c;
-
-fn xdg_surface_map(listener: [*c]c.wl_listener, data: ?*c_void) callconv(.C) void {
- // Called when the surface is mapped, or ready to display on-screen.
- var view = @fieldParentPtr(View, "map", listener);
- view.*.mapped = true;
- focus_view(view, view.*.xdg_surface.*.surface);
-}
-
-fn xdg_surface_unmap(listener: [*c]c.wl_listener, data: ?*c_void) callconv(.C) void {
- var view = @fieldParentPtr(View, "unmap", listener);
- view.*.mapped = false;
-}
-
-fn xdg_surface_destroy(listener: [*c]c.wl_listener, data: ?*c_void) callconv(.C) void {
- var view = @fieldParentPtr(View, "destroy", listener);
- var server = view.*.server;
- const idx = for (server.*.views.span()) |*v, i| {
- if (v == view) {
- break i;
- }
- } else return;
- _ = server.*.views.orderedRemove(idx);
-}
-
-fn xdg_toplevel_request_move(listener: [*c]c.wl_listener, data: ?*c_void) callconv(.C) void {
- // ignore for now
-}
-
-fn xdg_toplevel_request_resize(listener: [*c]c.wl_listener, data: ?*c_void) callconv(.C) void {
- // ignore for now
-}
-
-fn server_new_xdg_surface(listener: [*c]c.wl_listener, data: ?*c_void) callconv(.C) void {
- // This event is raised when wlr_xdg_shell receives a new xdg surface from a
- // client, either a toplevel (application window) or popup.
- var server = @fieldParentPtr(Server, "new_xdg_surface", listener);
- var xdg_surface = @ptrCast(*c.wlr_xdg_surface, @alignCast(@alignOf(*c.wlr_xdg_surface), data));
-
- if (xdg_surface.*.role != c.enum_wlr_xdg_surface_role.WLR_XDG_SURFACE_ROLE_TOPLEVEL) {
- return;
- }
-
- // Allocate a View for this surface
- server.*.views.append(undefined) catch unreachable;
- var view = &server.*.views.span()[server.*.views.span().len - 1];
-
- view.*.server = server;
- view.*.xdg_surface = xdg_surface;
-
- // Listen to the various events it can emit
- view.*.map.notify = xdg_surface_map;
- c.wl_signal_add(&xdg_surface.*.events.map, &view.*.map);
-
- view.*.unmap.notify = xdg_surface_unmap;
- c.wl_signal_add(&xdg_surface.*.events.unmap, &view.*.unmap);
-
- view.*.destroy.notify = xdg_surface_destroy;
- c.wl_signal_add(&xdg_surface.*.events.destroy, &view.*.destroy);
-
- var toplevel = xdg_surface.*.unnamed_160.toplevel;
- view.*.request_move.notify = xdg_toplevel_request_move;
- c.wl_signal_add(&toplevel.*.events.request_move, &view.*.request_move);
-
- view.*.request_resize.notify = xdg_toplevel_request_resize;
- c.wl_signal_add(&toplevel.*.events.request_resize, &view.*.request_resize);
-}