Differentiate between linked and unlinked window closes and renames,

like we already do for adds. From Andre Masella.
pull/1/head
nicm 2014-04-23 10:14:29 +00:00
parent 64613b9d41
commit 7ab2690be8
1 changed files with 15 additions and 2 deletions

View File

@ -99,14 +99,19 @@ void
control_notify_window_unlinked(unused struct session *s, struct window *w) control_notify_window_unlinked(unused struct session *s, struct window *w)
{ {
struct client *c; struct client *c;
struct session *cs;
u_int i; u_int i;
for (i = 0; i < ARRAY_LENGTH(&clients); i++) { for (i = 0; i < ARRAY_LENGTH(&clients); i++) {
c = ARRAY_ITEM(&clients, i); c = ARRAY_ITEM(&clients, i);
if (!CONTROL_SHOULD_NOTIFY_CLIENT(c) || c->session == NULL) if (!CONTROL_SHOULD_NOTIFY_CLIENT(c) || c->session == NULL)
continue; continue;
cs = c->session;
control_write(c, "%%window-close @%u", w->id); if (winlink_find_by_window_id(&cs->windows, w->id) != NULL)
control_write(c, "%%window-close @%u", w->id);
else
control_write(c, "%%unlinked-window-close @%u", w->id);
} }
} }
@ -134,14 +139,22 @@ void
control_notify_window_renamed(struct window *w) control_notify_window_renamed(struct window *w)
{ {
struct client *c; struct client *c;
struct session *cs;
u_int i; u_int i;
for (i = 0; i < ARRAY_LENGTH(&clients); i++) { for (i = 0; i < ARRAY_LENGTH(&clients); i++) {
c = ARRAY_ITEM(&clients, i); c = ARRAY_ITEM(&clients, i);
if (!CONTROL_SHOULD_NOTIFY_CLIENT(c) || c->session == NULL) if (!CONTROL_SHOULD_NOTIFY_CLIENT(c) || c->session == NULL)
continue; continue;
cs = c->session;
control_write(c, "%%window-renamed @%u %s", w->id, w->name); if (winlink_find_by_window_id(&cs->windows, w->id) != NULL) {
control_write(c, "%%window-renamed @%u %s", w->id,
w->name);
} else {
control_write(c, "%%unlinked-window-renamed @%u %s",
w->id, w->name);
}
} }
} }