mirror of
https://github.com/tmux/tmux.git
synced 2025-09-01 20:57:00 +00:00
Make pane/window wrapping more logical (so with 10 windows, +10 from
window 5 stays in the same place), and tidy the code. From Tiago Cunha.
This commit is contained in:
31
window.c
31
window.c
@ -173,22 +173,22 @@ winlink_previous(struct winlink *wl)
|
||||
}
|
||||
|
||||
struct winlink *
|
||||
winlink_next_by_number(struct winlink *wl, int n)
|
||||
winlink_next_by_number(struct winlink *wl, struct session *s, int n)
|
||||
{
|
||||
for (; n > 0; n--) {
|
||||
if ((wl = RB_NEXT(winlinks, wwl, wl)) == NULL)
|
||||
break;
|
||||
wl = RB_MIN(winlinks, &s->windows);
|
||||
}
|
||||
|
||||
return (wl);
|
||||
}
|
||||
|
||||
struct winlink *
|
||||
winlink_previous_by_number(struct winlink *wl, int n)
|
||||
winlink_previous_by_number(struct winlink *wl, struct session *s, int n)
|
||||
{
|
||||
for (; n > 0; n--) {
|
||||
if ((wl = RB_PREV(winlinks, wwl, wl)) == NULL)
|
||||
break;
|
||||
wl = RB_MAX(winlinks, &s->windows);
|
||||
}
|
||||
|
||||
return (wl);
|
||||
@ -391,6 +391,29 @@ window_pane_at_index(struct window *w, u_int idx)
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
struct window_pane *
|
||||
window_pane_next_by_number(struct window *w, struct window_pane *wp, u_int n)
|
||||
{
|
||||
for (; n > 0; n--) {
|
||||
if ((wp = TAILQ_NEXT(wp, entry)) == NULL)
|
||||
wp = TAILQ_FIRST(&w->panes);
|
||||
}
|
||||
|
||||
return (wp);
|
||||
}
|
||||
|
||||
struct window_pane *
|
||||
window_pane_previous_by_number(struct window *w, struct window_pane *wp,
|
||||
u_int n)
|
||||
{
|
||||
for (; n > 0; n--) {
|
||||
if ((wp = TAILQ_PREV(wp, window_panes, entry)) == NULL)
|
||||
wp = TAILQ_LAST(&w->panes, window_panes);
|
||||
}
|
||||
|
||||
return (wp);
|
||||
}
|
||||
|
||||
u_int
|
||||
window_pane_index(struct window *w, struct window_pane *wp)
|
||||
{
|
||||
|
Reference in New Issue
Block a user