From bc6a03a41b885e5c590ba3a3447a8a675a281a93 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 17 May 2018 15:19:05 +0530 Subject: [PATCH] Implement resizing for the Fat layout --- kitty/layout.py | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/kitty/layout.py b/kitty/layout.py index 0be8ab7de..940d5a096 100644 --- a/kitty/layout.py +++ b/kitty/layout.py @@ -433,6 +433,28 @@ class Fat(Tall): name = 'fat' + def remove_all_biases(self): + self.y_bias = list(self.layout_opts['bias']) + self.biased_columns = {} + return True + + def apply_bias(self, idx, increment, num_windows, is_horizontal): + if not is_horizontal: + before = self.y_bias + if idx == 0: + self.y_bias = [safe_increment_bias(self.y_bias[0], increment), safe_increment_bias(self.y_bias[1], -increment)] + else: + self.y_bias = [safe_increment_bias(self.y_bias[0], -increment), safe_increment_bias(self.y_bias[1], increment)] + self.y_bias = normalize_biases(self.y_bias) + after = self.y_bias + else: + if idx == 0: + return False + idx -= 1 + before = self.biased_columns.get(idx, 0) + self.biased_columns[idx] = after = before + increment + return before != after + def do_layout(self, windows, active_window_idx): self.blank_rects = [] if len(windows) == 1: @@ -441,10 +463,14 @@ class Fat(Tall): self.blank_rects = blank_rects_for_window(windows[0]) return xstart, xnum = next(self.xlayout(1)) - ylayout = self.ylayout(2, bias=self.layout_opts['bias']) + ylayout = self.ylayout(2, bias=self.y_bias) ystart, ynum = next(ylayout) windows[0].set_geometry(0, window_geometry(xstart, xnum, ystart, ynum)) - xlayout = self.xlayout(len(windows) - 1) + if len(windows) > 2: + x_bias = distribute_indexed_bias(list(repeat(1/(len(windows) - 1), len(windows) - 1)), self.biased_columns) + else: + x_bias = None + xlayout = self.xlayout(len(windows) - 1, bias=x_bias) ystart, ynum = next(ylayout) for i, (w, (xstart, xnum)) in enumerate(zip(islice(windows, 1, None), xlayout)): w.set_geometry(i + 1, window_geometry(xstart, xnum, ystart, ynum))