diff options
| author | Isaac Freund <ifreund@ifreund.xyz> | 2020-04-26 01:59:54 +0200 |
|---|---|---|
| committer | Isaac Freund <ifreund@ifreund.xyz> | 2020-04-26 01:59:54 +0200 |
| commit | f133d0b391b93df6ef90e5f6db51ee36ec47c938 (patch) | |
| tree | 85af9c699d9d6dfcba8dc18155b2b2f22d36d6b5 /src/layer_surface.zig | |
| parent | 5baa9f58e72dd100ff54bc1b8c047943c99f6229 (diff) | |
| download | river-f133d0b391b93df6ef90e5f6db51ee36ec47c938.tar.gz river-f133d0b391b93df6ef90e5f6db51ee36ec47c938.tar.xz | |
Revert "Deduplicate some state"
I changed my mind, it's cleaner to keep things like this and will be
consistent with views.
Diffstat (limited to 'src/layer_surface.zig')
| -rw-r--r-- | src/layer_surface.zig | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/layer_surface.zig b/src/layer_surface.zig index aa73217..38af53a 100644 --- a/src/layer_surface.zig +++ b/src/layer_surface.zig @@ -11,6 +11,9 @@ pub const LayerSurface = struct { output: *Output, wlr_layer_surface: *c.wlr_layer_surface_v1, + /// True if the layer surface is currently mapped + mapped: bool, + box: Box, layer: c.zwlr_layer_shell_v1_layer, @@ -33,6 +36,8 @@ pub const LayerSurface = struct { self.wlr_layer_surface = wlr_layer_surface; wlr_layer_surface.data = self; + self.mapped = false; + self.box = undefined; self.layer = layer; @@ -74,6 +79,8 @@ pub const LayerSurface = struct { Log.Debug.log("Layer surface '{}' mapped.", .{wlr_layer_surface.namespace}); + self.mapped = true; + // Add listeners that are only active while mapped self.listen_commit.notify = handleCommit; c.wl_signal_add(&wlr_layer_surface.surface.*.events.commit, &self.listen_commit); @@ -94,6 +101,8 @@ pub const LayerSurface = struct { Log.Debug.log("Layer surface '{}' unmapped.", .{self.wlr_layer_surface.namespace}); + self.mapped = false; + // remove listeners only active while the layer surface is mapped c.wl_list_remove(&self.listen_commit.link); c.wl_list_remove(&self.listen_new_popup.link); @@ -109,11 +118,6 @@ pub const LayerSurface = struct { } } - // Slight hack: This is automatically set to false by wlroots after - // this callback is exited, but we need it set to false before calling - // arrangeLayers() to avoid a crash. - self.wlr_layer_surface.mapped = false; - // This gives exclusive focus to a keyboard interactive top or overlay layer // surface if there is one. self.output.arrangeLayers(); |
