mirror of
https://github.com/tmux/tmux.git
synced 2024-12-13 01:48:47 +00:00
Clear flags across all sessions, from Thomas Adam.
This commit is contained in:
parent
67b926cf3c
commit
63f5c38023
@ -56,9 +56,6 @@ server_window_loop(void)
|
|||||||
server_status_session(s);
|
server_status_session(s);
|
||||||
TAILQ_FOREACH(wp, &w->panes, entry)
|
TAILQ_FOREACH(wp, &w->panes, entry)
|
||||||
server_window_check_content(s, wl, wp);
|
server_window_check_content(s, wl, wp);
|
||||||
|
|
||||||
if (!(s->flags & SESSION_UNATTACHED))
|
|
||||||
w->flags &= ~(WINDOW_BELL|WINDOW_ACTIVITY);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -78,6 +75,8 @@ server_window_check_bell(struct session *s, struct winlink *wl)
|
|||||||
wl->flags |= WINLINK_BELL;
|
wl->flags |= WINLINK_BELL;
|
||||||
if (s->flags & SESSION_UNATTACHED)
|
if (s->flags & SESSION_UNATTACHED)
|
||||||
return (1);
|
return (1);
|
||||||
|
if (s->curw->window == wl->window)
|
||||||
|
w->flags &= ~WINDOW_BELL;
|
||||||
|
|
||||||
visual = options_get_number(&s->options, "visual-bell");
|
visual = options_get_number(&s->options, "visual-bell");
|
||||||
action = options_get_number(&s->options, "bell-action");
|
action = options_get_number(&s->options, "bell-action");
|
||||||
@ -108,6 +107,9 @@ server_window_check_activity(struct session *s, struct winlink *wl)
|
|||||||
struct window *w = wl->window;
|
struct window *w = wl->window;
|
||||||
u_int i;
|
u_int i;
|
||||||
|
|
||||||
|
if (s->curw->window == wl->window)
|
||||||
|
w->flags &= ~WINDOW_ACTIVITY;
|
||||||
|
|
||||||
if (!(w->flags & WINDOW_ACTIVITY) || wl->flags & WINLINK_ACTIVITY)
|
if (!(w->flags & WINDOW_ACTIVITY) || wl->flags & WINLINK_ACTIVITY)
|
||||||
return (0);
|
return (0);
|
||||||
if (s->curw == wl && !(s->flags & SESSION_UNATTACHED))
|
if (s->curw == wl && !(s->flags & SESSION_UNATTACHED))
|
||||||
@ -196,6 +198,9 @@ server_window_check_content(
|
|||||||
char *found, *ptr;
|
char *found, *ptr;
|
||||||
|
|
||||||
/* Activity flag must be set for new content. */
|
/* Activity flag must be set for new content. */
|
||||||
|
if (s->curw->window == w)
|
||||||
|
w->flags &= ~WINDOW_ACTIVITY;
|
||||||
|
|
||||||
if (!(w->flags & WINDOW_ACTIVITY) || wl->flags & WINLINK_CONTENT)
|
if (!(w->flags & WINDOW_ACTIVITY) || wl->flags & WINLINK_CONTENT)
|
||||||
return (0);
|
return (0);
|
||||||
if (s->curw == wl && !(s->flags & SESSION_UNATTACHED))
|
if (s->curw == wl && !(s->flags & SESSION_UNATTACHED))
|
||||||
|
@ -353,7 +353,7 @@ session_next(struct session *s, int alert)
|
|||||||
winlink_stack_remove(&s->lastw, wl);
|
winlink_stack_remove(&s->lastw, wl);
|
||||||
winlink_stack_push(&s->lastw, s->curw);
|
winlink_stack_push(&s->lastw, s->curw);
|
||||||
s->curw = wl;
|
s->curw = wl;
|
||||||
wl->flags &= ~WINLINK_ALERTFLAGS;
|
winlink_clear_flags(wl);
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -390,7 +390,7 @@ session_previous(struct session *s, int alert)
|
|||||||
winlink_stack_remove(&s->lastw, wl);
|
winlink_stack_remove(&s->lastw, wl);
|
||||||
winlink_stack_push(&s->lastw, s->curw);
|
winlink_stack_push(&s->lastw, s->curw);
|
||||||
s->curw = wl;
|
s->curw = wl;
|
||||||
wl->flags &= ~WINLINK_ALERTFLAGS;
|
winlink_clear_flags(wl);
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -408,7 +408,7 @@ session_select(struct session *s, int idx)
|
|||||||
winlink_stack_remove(&s->lastw, wl);
|
winlink_stack_remove(&s->lastw, wl);
|
||||||
winlink_stack_push(&s->lastw, s->curw);
|
winlink_stack_push(&s->lastw, s->curw);
|
||||||
s->curw = wl;
|
s->curw = wl;
|
||||||
wl->flags &= ~WINLINK_ALERTFLAGS;
|
winlink_clear_flags(wl);
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -427,7 +427,7 @@ session_last(struct session *s)
|
|||||||
winlink_stack_remove(&s->lastw, wl);
|
winlink_stack_remove(&s->lastw, wl);
|
||||||
winlink_stack_push(&s->lastw, s->curw);
|
winlink_stack_push(&s->lastw, s->curw);
|
||||||
s->curw = wl;
|
s->curw = wl;
|
||||||
wl->flags &= ~WINLINK_ALERTFLAGS;
|
winlink_clear_flags(wl);
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
1
tmux.h
1
tmux.h
@ -2076,6 +2076,7 @@ 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_left(struct window_pane *);
|
||||||
struct window_pane *window_pane_find_right(struct window_pane *);
|
struct window_pane *window_pane_find_right(struct window_pane *);
|
||||||
void window_set_name(struct window *, const char *);
|
void window_set_name(struct window *, const char *);
|
||||||
|
void winlink_clear_flags(struct winlink *);
|
||||||
|
|
||||||
/* layout.c */
|
/* layout.c */
|
||||||
u_int layout_count_cells(struct layout_cell *);
|
u_int layout_count_cells(struct layout_cell *);
|
||||||
|
28
window.c
28
window.c
@ -1164,3 +1164,31 @@ window_pane_find_right(struct window_pane *wp)
|
|||||||
}
|
}
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Clear alert flags for a winlink */
|
||||||
|
void
|
||||||
|
winlink_clear_flags(struct winlink *wl)
|
||||||
|
{
|
||||||
|
struct winlink *wm;
|
||||||
|
struct session *s;
|
||||||
|
struct window *w;
|
||||||
|
u_int i;
|
||||||
|
|
||||||
|
for (i = 0; i < ARRAY_LENGTH(&windows); i++) {
|
||||||
|
if ((w = ARRAY_ITEM(&windows, i)) == NULL)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
RB_FOREACH(s, sessions, &sessions) {
|
||||||
|
if ((wm = session_has(s, w)) == NULL)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (wm->window != wl->window)
|
||||||
|
continue;
|
||||||
|
if ((wm->flags & WINLINK_ALERTFLAGS) == 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
wm->flags &= ~WINLINK_ALERTFLAGS;
|
||||||
|
server_status_session(s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user