version 1.92, 2022/02/22 13:31:18 |
version 1.93, 2022/10/17 10:59:42 |
|
|
struct winlink *wl, *wl1, *wl_new; |
struct winlink *wl, *wl1, *wl_new; |
struct winlinks old_wins; |
struct winlinks old_wins; |
struct winlink_stack old_lastw; |
struct winlink_stack old_lastw; |
int new_idx, new_curw_idx; |
int new_idx, new_curw_idx, marked_idx = -1; |
|
|
/* Save and replace old window list. */ |
/* Save and replace old window list. */ |
memcpy(&old_wins, &s->windows, sizeof old_wins); |
memcpy(&old_wins, &s->windows, sizeof old_wins); |
|
|
winlink_set_window(wl_new, wl->window); |
winlink_set_window(wl_new, wl->window); |
wl_new->flags |= wl->flags & WINLINK_ALERTFLAGS; |
wl_new->flags |= wl->flags & WINLINK_ALERTFLAGS; |
|
|
|
if (wl == marked_pane.wl) |
|
marked_idx = wl_new->idx; |
if (wl == s->curw) |
if (wl == s->curw) |
new_curw_idx = wl_new->idx; |
new_curw_idx = wl_new->idx; |
|
|
|
|
} |
} |
|
|
/* Set the current window. */ |
/* Set the current window. */ |
|
if (marked_idx != -1) { |
|
marked_pane.wl = winlink_find_by_index(&s->windows, marked_idx); |
|
if (marked_pane.wl == NULL) |
|
server_clear_marked(); |
|
} |
s->curw = winlink_find_by_index(&s->windows, new_curw_idx); |
s->curw = winlink_find_by_index(&s->windows, new_curw_idx); |
|
|
/* Free the old winlinks (reducing window references too). */ |
/* Free the old winlinks (reducing window references too). */ |