mirror of
https://github.com/tmux/tmux.git
synced 2025-01-07 16:28:48 +00:00
Use notifys for alerts too.
This commit is contained in:
parent
41e633acf5
commit
fe106842c8
11
alerts.c
11
alerts.c
@ -75,17 +75,12 @@ alerts_callback(__unused int fd, __unused short events, __unused void *arg)
|
|||||||
static void
|
static void
|
||||||
alerts_run_hook(struct session *s, struct winlink *wl, int flags)
|
alerts_run_hook(struct session *s, struct winlink *wl, int flags)
|
||||||
{
|
{
|
||||||
struct cmd_find_state fs;
|
|
||||||
|
|
||||||
if (cmd_find_from_winlink(&fs, s, wl) != 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (flags & WINDOW_BELL)
|
if (flags & WINDOW_BELL)
|
||||||
hooks_run(s->hooks, NULL, &fs, "alert-bell");
|
notify_winlink("alert-bell", s, wl);
|
||||||
if (flags & WINDOW_SILENCE)
|
if (flags & WINDOW_SILENCE)
|
||||||
hooks_run(s->hooks, NULL, &fs, "alert-silence");
|
notify_winlink("alert-silence", s, wl);
|
||||||
if (flags & WINDOW_ACTIVITY)
|
if (flags & WINDOW_ACTIVITY)
|
||||||
hooks_run(s->hooks, NULL, &fs, "alert-activity");
|
notify_winlink("alert-activity", s, wl);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
56
notify.c
56
notify.c
@ -113,8 +113,8 @@ notify_callback(struct cmdq_item *item, void *data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
notify_add(const char *name, struct client *c, struct session *s,
|
notify_add(const char *name, struct cmd_find_state *fs, struct client *c,
|
||||||
struct window *w, struct window_pane *wp)
|
struct session *s, struct window *w, struct window_pane *wp)
|
||||||
{
|
{
|
||||||
struct notify_entry *ne;
|
struct notify_entry *ne;
|
||||||
struct cmdq_item *new_item;
|
struct cmdq_item *new_item;
|
||||||
@ -138,17 +138,7 @@ notify_add(const char *name, struct client *c, struct session *s,
|
|||||||
if (w != NULL)
|
if (w != NULL)
|
||||||
w->references++;
|
w->references++;
|
||||||
|
|
||||||
cmd_find_clear_state(&ne->fs, NULL, 0);
|
cmd_find_copy_state(&ne->fs, fs);
|
||||||
if (s != NULL && w != NULL)
|
|
||||||
cmd_find_from_session_window(&ne->fs, s, w);
|
|
||||||
else if (w != NULL)
|
|
||||||
cmd_find_from_window(&ne->fs, w);
|
|
||||||
else if (s != NULL && session_alive(s))
|
|
||||||
cmd_find_from_session(&ne->fs, s);
|
|
||||||
else if (wp != NULL)
|
|
||||||
cmd_find_from_pane(&ne->fs, wp);
|
|
||||||
else
|
|
||||||
cmd_find_current(&ne->fs, NULL, CMD_FIND_QUIET);
|
|
||||||
if (ne->fs.s != NULL)
|
if (ne->fs.s != NULL)
|
||||||
ne->fs.s->references++; /* cmd_find_valid_state need session */
|
ne->fs.s->references++; /* cmd_find_valid_state need session */
|
||||||
|
|
||||||
@ -170,29 +160,59 @@ notify_input(struct window_pane *wp, struct evbuffer *input)
|
|||||||
void
|
void
|
||||||
notify_client(const char *name, struct client *c)
|
notify_client(const char *name, struct client *c)
|
||||||
{
|
{
|
||||||
notify_add(name, c, NULL, NULL, NULL);
|
struct cmd_find_state fs;
|
||||||
|
|
||||||
|
if (c->session != NULL)
|
||||||
|
cmd_find_from_session(&fs, c->session);
|
||||||
|
else
|
||||||
|
cmd_find_current(&fs, NULL, CMD_FIND_QUIET);
|
||||||
|
notify_add(name, &fs, c, NULL, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
notify_session(const char *name, struct session *s)
|
notify_session(const char *name, struct session *s)
|
||||||
{
|
{
|
||||||
notify_add(name, NULL, s, NULL, NULL);
|
struct cmd_find_state fs;
|
||||||
|
|
||||||
|
if (session_alive(s))
|
||||||
|
cmd_find_from_session(&fs, s);
|
||||||
|
else
|
||||||
|
cmd_find_current(&fs, NULL, CMD_FIND_QUIET);
|
||||||
|
notify_add(name, &fs, NULL, s, NULL, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
notify_winlink(const char *name, struct session *s, struct winlink *wl)
|
||||||
|
{
|
||||||
|
struct cmd_find_state fs;
|
||||||
|
|
||||||
|
cmd_find_from_winlink(&fs, s, wl);
|
||||||
|
notify_add(name, &fs, NULL, s, wl->window, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
notify_session_window(const char *name, struct session *s, struct window *w)
|
notify_session_window(const char *name, struct session *s, struct window *w)
|
||||||
{
|
{
|
||||||
notify_add(name, NULL, s, w, NULL);
|
struct cmd_find_state fs;
|
||||||
|
|
||||||
|
cmd_find_from_session_window(&fs, s, w);
|
||||||
|
notify_add(name, &fs, NULL, s, w, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
notify_window(const char *name, struct window *w)
|
notify_window(const char *name, struct window *w)
|
||||||
{
|
{
|
||||||
notify_add(name, NULL, NULL, w, NULL);
|
struct cmd_find_state fs;
|
||||||
|
|
||||||
|
cmd_find_from_window(&fs, w);
|
||||||
|
notify_add(name, &fs, NULL, NULL, w, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
notify_pane(const char *name, struct window_pane *wp)
|
notify_pane(const char *name, struct window_pane *wp)
|
||||||
{
|
{
|
||||||
notify_add(name, NULL, NULL, NULL, wp);
|
struct cmd_find_state fs;
|
||||||
|
|
||||||
|
cmd_find_from_pane(&fs, wp);
|
||||||
|
notify_add(name, &fs, NULL, NULL, NULL, wp);
|
||||||
}
|
}
|
||||||
|
1
tmux.h
1
tmux.h
@ -1585,6 +1585,7 @@ enum mode_key_cmd mode_key_lookup(struct mode_key_data *, key_code);
|
|||||||
void notify_input(struct window_pane *, struct evbuffer *);
|
void notify_input(struct window_pane *, struct evbuffer *);
|
||||||
void notify_client(const char *, struct client *);
|
void notify_client(const char *, struct client *);
|
||||||
void notify_session(const char *, struct session *);
|
void notify_session(const char *, struct session *);
|
||||||
|
void notify_winlink(const char *, struct session *, struct winlink *);
|
||||||
void notify_session_window(const char *, struct session *, struct window *);
|
void notify_session_window(const char *, struct session *, struct window *);
|
||||||
void notify_window(const char *, struct window *);
|
void notify_window(const char *, struct window *);
|
||||||
void notify_pane(const char *, struct window_pane *);
|
void notify_pane(const char *, struct window_pane *);
|
||||||
|
Loading…
Reference in New Issue
Block a user