Use a stack for last panes line windows, from Thomas Bertschinger in

GitHub issue 3588.
This commit is contained in:
nicm
2023-07-10 09:24:53 +00:00
parent b7e22d00b4
commit 8b3e2eab5a
7 changed files with 59 additions and 26 deletions

12
tmux.h
View File

@ -1038,7 +1038,7 @@ struct window_pane {
#define PANE_REDRAW 0x1
#define PANE_DROP 0x2
#define PANE_FOCUSED 0x4
/* 0x8 unused */
#define PANE_VISITED 0x8
/* 0x10 unused */
/* 0x20 unused */
#define PANE_INPUTOFF 0x40
@ -1093,7 +1093,8 @@ struct window_pane {
int border_gc_set;
struct grid_cell border_gc;
TAILQ_ENTRY(window_pane) entry;
TAILQ_ENTRY(window_pane) entry; /* link in list of all panes */
TAILQ_ENTRY(window_pane) sentry; /* link in list of last visited */
RB_ENTRY(window_pane) tree_entry;
};
TAILQ_HEAD(window_panes, window_pane);
@ -1114,7 +1115,7 @@ struct window {
struct timeval activity_time;
struct window_pane *active;
struct window_pane *last;
struct window_panes last_panes;
struct window_panes panes;
int lastlayout;
@ -1167,6 +1168,7 @@ struct winlink {
#define WINLINK_ACTIVITY 0x2
#define WINLINK_SILENCE 0x4
#define WINLINK_ALERTFLAGS (WINLINK_BELL|WINLINK_ACTIVITY|WINLINK_SILENCE)
#define WINLINK_VISITED 0x8
RB_ENTRY(winlink) entry;
TAILQ_ENTRY(winlink) wentry;
@ -3041,6 +3043,10 @@ struct window_pane *window_pane_find_up(struct window_pane *);
struct window_pane *window_pane_find_down(struct window_pane *);
struct window_pane *window_pane_find_left(struct window_pane *);
struct window_pane *window_pane_find_right(struct window_pane *);
void window_pane_stack_push(struct window_panes *,
struct window_pane *);
void window_pane_stack_remove(struct window_panes *,
struct window_pane *);
void window_set_name(struct window *, const char *);
void window_add_ref(struct window *, const char *);
void window_remove_ref(struct window *, const char *);