From 9e0ca948bf767f225640a7745bab4603f0cfabe8 Mon Sep 17 00:00:00 2001 From: Dane Jensen Date: Mon, 29 Jun 2026 15:34:45 -0700 Subject: [PATCH] Fixed merge errors. --- layout.c | 131 ------------------------------------------------------- tmux.h | 13 +++--- 2 files changed, 7 insertions(+), 137 deletions(-) diff --git a/layout.c b/layout.c index 592805b3f..c1bb3c269 100644 --- a/layout.c +++ b/layout.c @@ -1234,73 +1234,6 @@ layout_resize_child_cells(struct window *w, struct layout_cell *lc) } } -/* Checks if there is enough space for two new panes. */ -int -layout_split_check_space(struct window_pane *wp, struct layout_cell *lc, - enum layout_type type) -{ - struct style *sb_style = &wp->scrollbar_style; - u_int minimum, sx = lc->sx, sy = lc->sy; - int scrollbars, status; - - status = options_get_number(wp->window->options, "pane-border-status"); - scrollbars = options_get_number(wp->window->options, "pane-scrollbars"); - - switch (type) { - case LAYOUT_LEFTRIGHT: - if (scrollbars) { - minimum = PANE_MINIMUM * 2 + sb_style->width + - sb_style->pad; - } else - minimum = PANE_MINIMUM * 2 + 1; - if (sx < minimum) - return (0); - break; - case LAYOUT_TOPBOTTOM: - if (layout_add_horizontal_border(wp->window, lc, status)) - minimum = PANE_MINIMUM * 2 + 2; - else - minimum = PANE_MINIMUM * 2 + 1; - if (sy < minimum) - return (0); - break; - default: - fatalx("bad layout type"); - } - - return (1); -} - -/* Calculates the new cell sizes when splitting a pane. */ -void -layout_split_sizes(struct layout_cell *lc, int size, int before, - enum layout_type type, u_int *size1, u_int *size2, u_int *saved_size) -{ - u_int s1, s2, ss; - u_int sx = lc->sx, sy = lc->sy; - - if (type == LAYOUT_LEFTRIGHT) - ss = sx; - else - ss = sy; - if (size < 0) - s2 = ((ss + 1) / 2) - 1; - else if (before) - s2 = ss - size - 1; - else - s2 = size; - if (s2 < PANE_MINIMUM) - s2 = PANE_MINIMUM; - else if (s2 > sx - 2) - s2 = ss - 2; - s1 = ss - 1 - s2; - - *size1 = s1; - *size2 = s2; - *saved_size = ss; -} - - /* * Replaces the provided layout cell with a new node of the specified type and * inserts the cell into it. Used when creating new cells requires a different @@ -1942,67 +1875,3 @@ layout_insert_tile(struct window *w, struct layout_cell *lc) return (1); } - -/* - * Inserts a cell back into the tiled layout by taking half the space from its - * nearest neighbour. - */ -int -layout_insert_tile(struct window *w, struct layout_cell *lc) -{ - struct layout_cell *lcneighbour, *lctiled, *lcparent = lc->parent; - enum layout_type type; - u_int size1, size2, saved_size; - - if (lc == NULL) - fatalx("layout cell cannot be null when tiling"); - - if (lc->flags & LAYOUT_CELL_FLOATING) - return (1); - - if (lcparent == NULL) { - /* Only pane in the layout. */ - layout_set_size(lc, w->sx, w->sy, 0, 0); - return (1); - } - - type = lcparent->type; - lcneighbour = layout_cell_get_neighbour(lc); - if (lcneighbour == NULL) { - /* - * This will become the only visible cell in the parent. - * Tile the parent, then set the child's 'split' size. - */ - layout_insert_tile(w, lcparent); - if (type == LAYOUT_LEFTRIGHT) - size1 = lcparent->sx; - else - size1 = lcparent->sy; - layout_resize_set_size(w, lc, type, size1); - } else { - /* - * If the neighbour is a node, a tiled child in the subtree of - * the neighbour is needed to check for space. - */ - lctiled = layout_cell_get_first_tiled(lcneighbour); - if (!layout_split_check_space(lctiled->wp, lcneighbour, type)) - return (0); - - layout_split_sizes(lcneighbour, -1, 0, type, &size1, &size2, - &saved_size); - layout_resize_set_size(w, lc, type, size1); - layout_resize_set_size(w, lcneighbour, type, size2); - } - - /* Setting opposite of the 'split' size to that of the parent. */ - if (lcparent->type == LAYOUT_LEFTRIGHT) { - size1 = lcparent->sy; - type = LAYOUT_TOPBOTTOM; - } else { - size1 = lcparent->sx; - type = LAYOUT_LEFTRIGHT; - } - layout_resize_set_size(w, lc, type, size1); - - return (1); -} diff --git a/tmux.h b/tmux.h index 28eede8d7..1175c3669 100644 --- a/tmux.h +++ b/tmux.h @@ -1517,11 +1517,11 @@ struct layout_cell { struct layout_cell *parent; - u_int sx, saved_sx; - u_int sy, saved_sy; + u_int sx; + u_int sy; - int xoff, saved_xoff; - int yoff, saved_yoff; + int xoff; + int yoff; u_int saved_sx; u_int saved_sy; @@ -3697,6 +3697,7 @@ void layout_save_size(struct layout_cell *); void layout_make_leaf(struct layout_cell *, struct window_pane *); void layout_make_node(struct layout_cell *, enum layout_type); void layout_fix_zindexes(struct window *, struct layout_cell *); +int layout_cell_is_tiled(struct layout_cell *); void layout_fix_offsets(struct window *); void layout_fix_panes(struct window *, struct window_pane *); void layout_resize_adjust(struct window *, struct layout_cell *, @@ -3730,8 +3731,8 @@ struct layout_cell *layout_floating_pane(struct window *, struct window_pane *, void layout_close_pane(struct window_pane *); int layout_spread_cell(struct window *, struct layout_cell *); void layout_spread_out(struct window_pane *); -void layout_cell_floating_args_parse(struct cmdq_item *, struct args *, - struct window *, u_int *, u_int *, int *, int *, char **); +struct layout_cell *layout_get_tiled_cell(struct cmdq_item *, struct args *, + struct window *, struct window_pane *, int, char **); struct layout_cell *layout_get_floating_cell(struct cmdq_item *, struct args *, enum pane_lines, struct window *, struct window_pane *, char **cause);