diff options
| author | Isaac Freund <ifreund@ifreund.xyz> | 2020-05-18 19:29:12 +0200 |
|---|---|---|
| committer | Isaac Freund <ifreund@ifreund.xyz> | 2020-05-18 19:29:12 +0200 |
| commit | f818ce7e389e4bcf5edcd467a8f59576dff25189 (patch) | |
| tree | 5df7e661097d9456fb3b8c313ff89b4b3cf6fcc1 | |
| parent | bbfe3bfd603687604a74a08db152381ab80d2bc3 (diff) | |
| download | river-f818ce7e389e4bcf5edcd467a8f59576dff25189.tar.gz river-f818ce7e389e4bcf5edcd467a8f59576dff25189.tar.xz | |
Implement popups for layer shell
| -rw-r--r-- | src/LayerSurface.zig | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/LayerSurface.zig b/src/LayerSurface.zig index a90917c..088dd97 100644 --- a/src/LayerSurface.zig +++ b/src/LayerSurface.zig @@ -24,6 +24,7 @@ const c = @import("c.zig"); const Box = @import("Box.zig"); const Log = @import("log.zig").Log; const Output = @import("Output.zig"); +const XdgPopup = @import("XdgPopup.zig"); output: *Output, wlr_layer_surface: *c.wlr_layer_surface_v1, @@ -186,7 +187,10 @@ fn handleCommit(listener: ?*c.wl_listener, data: ?*c_void) callconv(.C) void { fn handleNewPopup(listener: ?*c.wl_listener, data: ?*c_void) callconv(.C) void { const self = @fieldParentPtr(Self, "listen_new_popup", listener.?); - Log.Debug.log("new layer surface popup.", .{}); - // TODO: handle popups - unreachable; + const wlr_xdg_popup = @ptrCast(*c.wlr_xdg_popup, @alignCast(@alignOf(*c.wlr_xdg_popup), data)); + const allocator = self.output.root.server.allocator; + + // This will free itself on destroy + var xdg_popup = allocator.create(XdgPopup) catch unreachable; + xdg_popup.init(self.output, &self.box, wlr_xdg_popup); } |
