From fb7d50a019a8fccb0576189ff60e80436e760aa3 Mon Sep 17 00:00:00 2001 From: Isaac Freund Date: Sun, 14 Feb 2021 16:55:24 +0100 Subject: [PATCH] xdg shell: use XdgSurface.getGeometry() This is important to use instead of direct access as clients are not strictly required to set a geometry, in which caese the dimensions of the wl_surface are used instead. --- river/XdgToplevel.zig | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/river/XdgToplevel.zig b/river/XdgToplevel.zig index f80e480..fa20f08 100644 --- a/river/XdgToplevel.zig +++ b/river/XdgToplevel.zig @@ -171,10 +171,12 @@ fn handleMap(listener: *wl.Listener(*wlr.XdgSurface), xdg_surface: *wlr.XdgSurfa view.surface = self.xdg_surface.surface; - // Use the view's "natural" size centered on the output as the default + // Use the view's initial size centered on the output as the default // floating dimensions - view.float_box.width = @intCast(u32, self.xdg_surface.geometry.width); - view.float_box.height = @intCast(u32, self.xdg_surface.geometry.height); + var initial_box: wlr.Box = undefined; + self.xdg_surface.getGeometry(&initial_box); + view.float_box.width = @intCast(u32, initial_box.width); + view.float_box.height = @intCast(u32, initial_box.height); view.float_box.x = std.math.max(0, @divTrunc(@intCast(i32, view.output.usable_box.width) - @intCast(i32, view.float_box.width), 2)); view.float_box.y = std.math.max(0, @divTrunc(@intCast(i32, view.output.usable_box.height) -