From d20d01e596b82599865de0ad75b54002ee3f23ec Mon Sep 17 00:00:00 2001 From: Isaac Freund Date: Sat, 2 May 2020 16:25:04 +0200 Subject: [PATCH] Make Decoration a toplevel struct --- src/decoration.zig | 49 +++++++++++++++++++------------------- src/decoration_manager.zig | 2 +- 2 files changed, 25 insertions(+), 26 deletions(-) diff --git a/src/decoration.zig b/src/decoration.zig index aaf7129..a75929a 100644 --- a/src/decoration.zig +++ b/src/decoration.zig @@ -1,37 +1,36 @@ +const Self = @This(); + const std = @import("std"); + const c = @import("c.zig"); const DecorationManager = @import("decoration_manager.zig"); // TODO: this needs to listen for destroy and free nodes from the deco list -pub const Decoration = struct { - const Self = @This(); +decoration_manager: *DecorationManager, +wlr_xdg_toplevel_decoration: *c.wlr_xdg_toplevel_decoration_v1, +listen_request_mode: c.wl_listener, + +pub fn init( + self: *Self, decoration_manager: *DecorationManager, wlr_xdg_toplevel_decoration: *c.wlr_xdg_toplevel_decoration_v1, +) void { + self.decoration_manager = decoration_manager; + self.wlr_xdg_toplevel_decoration = wlr_xdg_toplevel_decoration; - listen_request_mode: c.wl_listener, + self.listen_request_mode.notify = handleRequestMode; + c.wl_signal_add(&self.wlr_xdg_toplevel_decoration.events.request_mode, &self.listen_request_mode); - pub fn init( - self: *Self, - decoration_manager: *DecorationManager, - wlr_xdg_toplevel_decoration: *c.wlr_xdg_toplevel_decoration_v1, - ) void { - self.decoration_manager = decoration_manager; - self.wlr_xdg_toplevel_decoration = wlr_xdg_toplevel_decoration; + handleRequestMode(&self.listen_request_mode, self.wlr_xdg_toplevel_decoration); +} - self.listen_request_mode.notify = handleRequestMode; - c.wl_signal_add(&self.wlr_xdg_toplevel_decoration.events.request_mode, &self.listen_request_mode); - - handleRequestMode(&self.listen_request_mode, self.wlr_xdg_toplevel_decoration); - } - - fn handleRequestMode(listener: ?*c.wl_listener, data: ?*c_void) callconv(.C) void { - const self = @fieldParentPtr(Self, "listen_request_mode", listener.?); - // TODO: we might need to take this configure serial and do a transaction - _ = c.wlr_xdg_toplevel_decoration_v1_set_mode( - self.wlr_xdg_toplevel_decoration, - c.wlr_xdg_toplevel_decoration_v1_mode.WLR_XDG_TOPLEVEL_DECORATION_V1_MODE_SERVER_SIDE, - ); - } -}; +fn handleRequestMode(listener: ?*c.wl_listener, data: ?*c_void) callconv(.C) void { + const self = @fieldParentPtr(Self, "listen_request_mode", listener.?); + // TODO: we might need to take this configure serial and do a transaction + _ = c.wlr_xdg_toplevel_decoration_v1_set_mode( + self.wlr_xdg_toplevel_decoration, + c.wlr_xdg_toplevel_decoration_v1_mode.WLR_XDG_TOPLEVEL_DECORATION_V1_MODE_SERVER_SIDE, + ); +} diff --git a/src/decoration_manager.zig b/src/decoration_manager.zig index 7106c3d..98ba696 100644 --- a/src/decoration_manager.zig +++ b/src/decoration_manager.zig @@ -4,7 +4,7 @@ const std = @import("std"); const c = @import("c.zig"); -const Decoration = @import("decoration.zig").Decoration; +const Decoration = @import("decoration.zig"); const Server = @import("server.zig"); server: *Server,