mirror of
https://github.com/tmux/tmux.git
synced 2025-09-02 13:33:27 +00:00
Merge branch 'obsd-master'
This commit is contained in:
50
server-fn.c
50
server-fn.c
@ -181,7 +181,7 @@ server_kill_pane(struct window_pane *wp)
|
||||
struct window *w = wp->window;
|
||||
|
||||
if (window_count_panes(w) == 1) {
|
||||
server_kill_window(w);
|
||||
server_kill_window(w, 1);
|
||||
recalculate_sizes();
|
||||
} else {
|
||||
server_unzoom_window(w);
|
||||
@ -193,19 +193,15 @@ server_kill_pane(struct window_pane *wp)
|
||||
}
|
||||
|
||||
void
|
||||
server_kill_window(struct window *w)
|
||||
server_kill_window(struct window *w, int renumber)
|
||||
{
|
||||
struct session *s, *next_s, *target_s;
|
||||
struct session_group *sg;
|
||||
struct winlink *wl;
|
||||
|
||||
next_s = RB_MIN(sessions, &sessions);
|
||||
while (next_s != NULL) {
|
||||
s = next_s;
|
||||
next_s = RB_NEXT(sessions, &sessions, s);
|
||||
struct session *s, *s1;
|
||||
struct winlink *wl;
|
||||
|
||||
RB_FOREACH_SAFE(s, sessions, &sessions, s1) {
|
||||
if (!session_has(s, w))
|
||||
continue;
|
||||
|
||||
server_unzoom_window(w);
|
||||
while ((wl = winlink_find_by_window(&s->windows, w)) != NULL) {
|
||||
if (session_detach(s, wl)) {
|
||||
@ -215,17 +211,35 @@ server_kill_window(struct window *w)
|
||||
server_redraw_session_group(s);
|
||||
}
|
||||
|
||||
if (options_get_number(s->options, "renumber-windows")) {
|
||||
if ((sg = session_group_contains(s)) != NULL) {
|
||||
TAILQ_FOREACH(target_s, &sg->sessions, gentry)
|
||||
session_renumber_windows(target_s);
|
||||
} else
|
||||
session_renumber_windows(s);
|
||||
}
|
||||
if (renumber)
|
||||
server_renumber_session(s);
|
||||
}
|
||||
recalculate_sizes();
|
||||
}
|
||||
|
||||
void
|
||||
server_renumber_session(struct session *s)
|
||||
{
|
||||
struct session_group *sg;
|
||||
|
||||
if (options_get_number(s->options, "renumber-windows")) {
|
||||
if ((sg = session_group_contains(s)) != NULL) {
|
||||
TAILQ_FOREACH(s, &sg->sessions, gentry)
|
||||
session_renumber_windows(s);
|
||||
} else
|
||||
session_renumber_windows(s);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
server_renumber_all(void)
|
||||
{
|
||||
struct session *s;
|
||||
|
||||
RB_FOREACH(s, sessions, &sessions)
|
||||
server_renumber_session(s);
|
||||
}
|
||||
|
||||
int
|
||||
server_link_window(struct session *src, struct winlink *srcwl,
|
||||
struct session *dst, int dstidx, int killflag, int selectflag,
|
||||
@ -355,7 +369,7 @@ server_destroy_pane(struct window_pane *wp, int notify)
|
||||
window_remove_pane(w, wp);
|
||||
|
||||
if (TAILQ_EMPTY(&w->panes))
|
||||
server_kill_window(w);
|
||||
server_kill_window(w, 1);
|
||||
else
|
||||
server_redraw_window(w);
|
||||
}
|
||||
|
Reference in New Issue
Block a user