Add layout variable to Output class

This variable in controls which layout is chosen when
arrangeViews() is called. The default is LeftMaster
This commit is contained in:
Leon Henrik Plickat 2020-05-20 18:04:42 +02:00 committed by Isaac Freund
parent fd3f48c1a7
commit 3c5eaec50b

View File

@ -52,11 +52,23 @@ master_count: u32,
/// Percentage of the total screen that the master section takes up.
master_factor: f64,
/// Current layout of the output.
layout: Layouts,
// All listeners for this output, in alphabetical order
listen_destroy: c.wl_listener,
listen_frame: c.wl_listener,
listen_mode: c.wl_listener,
// All possible layouts.
pub const Layouts = enum {
TopMaster,
RightMaster,
BottomMaster,
LeftMaster,
Full,
};
pub fn init(self: *Self, root: *Root, wlr_output: *c.wlr_output) !void {
// Some backends don't have modes. DRM+KMS does, and we need to set a mode
// before we can use the output. The mode is a tuple of (width, height,
@ -92,6 +104,9 @@ pub fn init(self: *Self, root: *Root, wlr_output: *c.wlr_output) !void {
self.master_factor = 0.6;
// LeftMaster is the default layout for all outputs
self.layout = Layout.LeftMaster;
// Set up listeners
self.listen_destroy.notify = handleDestroy;
c.wl_signal_add(&wlr_output.events.destroy, &self.listen_destroy);
@ -393,13 +408,13 @@ pub fn arrangeViews(self: *Self) void {
return;
}
// TODO layout switching mechanism
//layoutFull(self, visible_count, output_tags);
//layoutTopMaster(self, visible_count, output_tags);
//layoutRightMaster(self, visible_count, output_tags);
//layoutBottomMaster(self, visible_count, output_tags);
//layoutLeftMaster(self, visible_count, output_tags);
layoutFull(self, visible_count, output_tags);
switch (self.layout) {
.Full => layoutFull(self, visible_count, output_tags),
.TopMaster => layoutTopMaster(self, visible_count, output_tags),
.RightMaster => layoutRightMaster(self, visible_count, output_tags),
.BottomMaster => layoutBottomMaster(self, visible_count, output_tags),
.LeftMaster => layoutLeftMaster(self, visible_count, output_tags),
}
}
/// Arrange all layer surfaces of this output and addjust the usable aread