From: "Luis R. Rodriguez" <[email protected]> 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 <[email protected]> --- 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 bf9d715..be44ab7 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 613f15f..28ac671 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 a975fe5..aa791da 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); -- 2.0.3
