aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIsaac Freund <ifreund@ifreund.xyz>2021-06-14 22:37:14 +0000
committerIsaac Freund <ifreund@ifreund.xyz>2021-06-14 22:37:14 +0000
commit6f61ea07db8c5c3a00bb195bfde04d0546fc87cb (patch)
treeb829d44814e01d8502c276cbd5e4c06e3bad22df
parent37251c8758f8f51e66f4ffd5fd4a8aa945d0ea92 (diff)
downloadriver-6f61ea07db8c5c3a00bb195bfde04d0546fc87cb.tar.gz
river-6f61ea07db8c5c3a00bb195bfde04d0546fc87cb.tar.xz
view: ensure surface_box is initailized before use
-rw-r--r--river/XdgToplevel.zig5
-rw-r--r--river/XwaylandView.zig13
2 files changed, 13 insertions, 5 deletions
diff --git a/river/XdgToplevel.zig b/river/XdgToplevel.zig
index 91664d8..bd05465 100644
--- a/river/XdgToplevel.zig
+++ b/river/XdgToplevel.zig
@@ -185,8 +185,6 @@ fn handleMap(listener: *wl.Listener(*wlr.XdgSurface), xdg_surface: *wlr.XdgSurfa
toplevel.events.set_title.add(&self.set_title);
toplevel.events.set_app_id.add(&self.set_app_id);
- view.surface = self.xdg_surface.surface;
-
// Use the view's initial size centered on the output as the default
// floating dimensions
var initial_box: wlr.Box = undefined;
@@ -203,6 +201,9 @@ fn handleMap(listener: *wl.Listener(*wlr.XdgSurface), xdg_surface: *wlr.XdgSurfa
toplevel.server_pending.width = @intCast(u32, initial_box.width);
toplevel.server_pending.height = @intCast(u32, initial_box.height);
+ view.surface = self.xdg_surface.surface;
+ view.surface_box = Box.fromWlrBox(initial_box);
+
// Also use the view's "natural" size as the initial regular dimensions,
// for the case that it does not get arranged by a lyaout.
view.pending.box = view.float_box;
diff --git a/river/XwaylandView.zig b/river/XwaylandView.zig
index c474be6..ecd1747 100644
--- a/river/XwaylandView.zig
+++ b/river/XwaylandView.zig
@@ -163,11 +163,18 @@ fn handleMap(listener: *wl.Listener(*wlr.XwaylandSurface), xwayland_surface: *wl
const view = self.view;
// Add listeners that are only active while mapped
- xwayland_surface.surface.?.events.commit.add(&self.commit);
+ const surface = xwayland_surface.surface.?;
+ surface.events.commit.add(&self.commit);
xwayland_surface.events.set_title.add(&self.set_title);
xwayland_surface.events.set_class.add(&self.set_class);
- view.surface = self.xwayland_surface.surface;
+ view.surface = surface;
+ self.view.surface_box = .{
+ .x = 0,
+ .y = 0,
+ .width = @intCast(u32, surface.current.width),
+ .height = @intCast(u32, surface.current.height),
+ };
// Use the view's "natural" size centered on the output as the default
// floating dimensions
@@ -240,7 +247,7 @@ fn handleCommit(listener: *wl.Listener(*wlr.Surface), surface: *wlr.Surface) voi
self.view.output.damage.addWhole();
- self.view.surface_box = Box{
+ self.view.surface_box = .{
.x = 0,
.y = 0,
.width = @intCast(u32, surface.current.width),