From ea7476addfb71eaa06897a440950eb8f59658dd8 Mon Sep 17 00:00:00 2001 From: "Luis R. Rodriguez" Date: Fri, 15 Aug 2014 16:01:35 -0400 Subject: [PATCH] irssi core: add window console set active support We can't go to the console window easily right now, we'll want this in case irssi needs to prompt the user for something sensitive such as a password. Signed-off-by: Luis R. Rodriguez --- src/fe-common/core/fe-windows.c | 16 ++++++++++++++++ src/fe-common/core/fe-windows.h | 2 ++ src/fe-common/core/window-commands.c | 10 ++++++++++ 3 files changed, 28 insertions(+) diff --git a/src/fe-common/core/fe-windows.c b/src/fe-common/core/fe-windows.c index bf9d7154..be44ab7d 100644 --- a/src/fe-common/core/fe-windows.c +++ b/src/fe-common/core/fe-windows.c @@ -70,6 +70,8 @@ WINDOW_REC *window_create(WI_ITEM_REC *item, int automatic) rec = g_new0(WINDOW_REC, 1); rec->refnum = window_get_new_refnum(); + if (rec->refnum == 1) + rec->console = 1; rec->level = settings_get_level("window_default_level"); windows = g_slist_prepend(windows, rec); @@ -353,6 +355,20 @@ WINDOW_REC *window_find_refnum(int refnum) return NULL; } +WINDOW_REC *window_find_console(void) +{ + GSList *tmp; + + for (tmp = windows; tmp != NULL; tmp = tmp->next) { + WINDOW_REC *rec = tmp->data; + + if (rec->console) + return rec; + } + + return NULL; +} + WINDOW_REC *window_find_name(const char *name) { GSList *tmp; diff --git a/src/fe-common/core/fe-windows.h b/src/fe-common/core/fe-windows.h index 613f15f8..28ac671c 100644 --- a/src/fe-common/core/fe-windows.h +++ b/src/fe-common/core/fe-windows.h @@ -35,6 +35,7 @@ struct _WINDOW_REC { unsigned int immortal:1; unsigned int sticky_refnum:1; unsigned int destroying:1; + unsigned int console:1; /* window-specific command line history */ HISTORY_REC *history; @@ -75,6 +76,7 @@ const char *window_get_active_name(WINDOW_REC *window); WINDOW_REC *window_find_level(void *server, int level); WINDOW_REC *window_find_closest(void *server, const char *name, int level); WINDOW_REC *window_find_refnum(int refnum); +WINDOW_REC *window_find_console(void); WINDOW_REC *window_find_name(const char *name); WINDOW_REC *window_find_item(SERVER_REC *server, const char *name); diff --git a/src/fe-common/core/window-commands.c b/src/fe-common/core/window-commands.c index a975fe5c..aa791da1 100644 --- a/src/fe-common/core/window-commands.c +++ b/src/fe-common/core/window-commands.c @@ -842,6 +842,16 @@ static void cmd_foreach_window(const char *data) active_win = old; } +void window_console(void) +{ + WINDOW_REC *window; + + window = window_find_console(); + if (!window) + return; + window_set_active(window); +} + void window_commands_init(void) { settings_add_bool("lookandfeel", "active_window_ignore_refnum", TRUE);