aboutsummaryrefslogtreecommitdiff
path: root/src/layer_surface.zig
diff options
context:
space:
mode:
authorIsaac Freund <ifreund@ifreund.xyz>2020-04-26 01:59:54 +0200
committerIsaac Freund <ifreund@ifreund.xyz>2020-04-26 01:59:54 +0200
commitf133d0b391b93df6ef90e5f6db51ee36ec47c938 (patch)
tree85af9c699d9d6dfcba8dc18155b2b2f22d36d6b5 /src/layer_surface.zig
parent5baa9f58e72dd100ff54bc1b8c047943c99f6229 (diff)
downloadriver-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.zig14
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();