mirror of
https://github.com/tmux/tmux.git
synced 2026-10-11 21:14:21 +00:00
Zoomed panes are now like full screen floating panes.
This commit is contained in:
@@ -68,7 +68,7 @@ cmd_swap_pane_exec(struct cmd *self, struct cmdq_item *item)
|
||||
struct window_pane *tmp_wp, *src_wp, *dst_wp;
|
||||
struct layout_cell *src_lc, *dst_lc;
|
||||
u_int sx, sy, xoff, yoff;
|
||||
int src_idx, dst_idx;
|
||||
int src_idx, dst_idx, src_zoomed, dst_zoomed;
|
||||
|
||||
dst_w = target->wl->window;
|
||||
dst_wp = target->wp;
|
||||
@@ -82,8 +82,7 @@ cmd_swap_pane_exec(struct cmd *self, struct cmdq_item *item)
|
||||
return (CMD_RETURN_ERROR);
|
||||
}
|
||||
|
||||
if (window_push_zoom(dst_w, 0, args_has(args, 'Z')))
|
||||
server_redraw_window(dst_w);
|
||||
dst_zoomed = (args_has(args, 'Z') && (dst_w->flags & WINDOW_ZOOMED));
|
||||
|
||||
if (args_has(args, 'D')) {
|
||||
if (window_pane_is_floating(dst_wp)) {
|
||||
@@ -111,8 +110,7 @@ cmd_swap_pane_exec(struct cmd *self, struct cmdq_item *item)
|
||||
}
|
||||
}
|
||||
|
||||
if (src_w != dst_w && window_push_zoom(src_w, 0, args_has(args, 'Z')))
|
||||
server_redraw_window(src_w);
|
||||
src_zoomed = (args_has(args, 'Z') && (src_w->flags & WINDOW_ZOOMED));
|
||||
|
||||
if (src_wp == dst_wp)
|
||||
goto out;
|
||||
@@ -140,6 +138,12 @@ cmd_swap_pane_exec(struct cmd *self, struct cmdq_item *item)
|
||||
else
|
||||
TAILQ_INSERT_AFTER(&dst_w->z_index, tmp_wp, src_wp, zentry);
|
||||
|
||||
/* Zoom belongs to the position in the window, like the cell. */
|
||||
if ((src_wp->flags ^ dst_wp->flags) & PANE_ZOOMED) {
|
||||
src_wp->flags ^= PANE_ZOOMED;
|
||||
dst_wp->flags ^= PANE_ZOOMED;
|
||||
}
|
||||
|
||||
src_lc = src_wp->layout_cell;
|
||||
dst_lc = dst_wp->layout_cell;
|
||||
src_lc->wp = dst_wp;
|
||||
@@ -197,9 +201,16 @@ cmd_swap_pane_exec(struct cmd *self, struct cmdq_item *item)
|
||||
events_fire_window("window-layout-changed", dst_w);
|
||||
|
||||
out:
|
||||
if (window_pop_zoom(src_w))
|
||||
server_redraw_window(src_w);
|
||||
if (src_w != dst_w && window_pop_zoom(dst_w))
|
||||
server_redraw_window(dst_w);
|
||||
/* With -Z, leave the active pane zoomed if the window was. */
|
||||
if (src_zoomed) {
|
||||
window_unzoom(src_w, 1);
|
||||
if (src_w->active != NULL)
|
||||
window_zoom(src_w->active);
|
||||
}
|
||||
if (src_w != dst_w && dst_zoomed) {
|
||||
window_unzoom(dst_w, 1);
|
||||
if (dst_w->active != NULL)
|
||||
window_zoom(dst_w->active);
|
||||
}
|
||||
return (CMD_RETURN_NORMAL);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user