version 1.126, 2020/05/16 16:20:59 |
version 1.127, 2020/07/04 14:24:02 |
|
|
struct window *w = wp->window; |
struct window *w = wp->window; |
|
|
if (window_count_panes(w) == 1) { |
if (window_count_panes(w) == 1) { |
server_kill_window(w); |
server_kill_window(w, 1); |
recalculate_sizes(); |
recalculate_sizes(); |
} else { |
} else { |
server_unzoom_window(w); |
server_unzoom_window(w); |
|
|
} |
} |
|
|
void |
void |
server_kill_window(struct window *w) |
server_kill_window(struct window *w, int renumber) |
{ |
{ |
struct session *s, *next_s, *target_s; |
struct session *s, *s1; |
struct session_group *sg; |
struct winlink *wl; |
struct winlink *wl; |
|
|
|
next_s = RB_MIN(sessions, &sessions); |
RB_FOREACH_SAFE(s, sessions, &sessions, s1) { |
while (next_s != NULL) { |
|
s = next_s; |
|
next_s = RB_NEXT(sessions, &sessions, s); |
|
|
|
if (!session_has(s, w)) |
if (!session_has(s, w)) |
continue; |
continue; |
|
|
server_unzoom_window(w); |
server_unzoom_window(w); |
while ((wl = winlink_find_by_window(&s->windows, w)) != NULL) { |
while ((wl = winlink_find_by_window(&s->windows, w)) != NULL) { |
if (session_detach(s, wl)) { |
if (session_detach(s, wl)) { |
|
|
server_redraw_session_group(s); |
server_redraw_session_group(s); |
} |
} |
|
|
if (options_get_number(s->options, "renumber-windows")) { |
if (renumber) |
if ((sg = session_group_contains(s)) != NULL) { |
server_renumber_session(s); |
TAILQ_FOREACH(target_s, &sg->sessions, gentry) |
|
session_renumber_windows(target_s); |
|
} else |
|
session_renumber_windows(s); |
|
} |
|
} |
} |
recalculate_sizes(); |
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 |
int |
server_link_window(struct session *src, struct winlink *srcwl, |
server_link_window(struct session *src, struct winlink *srcwl, |
struct session *dst, int dstidx, int killflag, int selectflag, |
struct session *dst, int dstidx, int killflag, int selectflag, |
|
|
window_remove_pane(w, wp); |
window_remove_pane(w, wp); |
|
|
if (TAILQ_EMPTY(&w->panes)) |
if (TAILQ_EMPTY(&w->panes)) |
server_kill_window(w); |
server_kill_window(w, 1); |
else |
else |
server_redraw_window(w); |
server_redraw_window(w); |
} |
} |