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


Reply via email to