diff options
Diffstat (limited to 'src/ui/core.c')
-rw-r--r-- | src/ui/core.c | 38 |
1 files changed, 29 insertions, 9 deletions
diff --git a/src/ui/core.c b/src/ui/core.c index 48999319..f80c6ad2 100644 --- a/src/ui/core.c +++ b/src/ui/core.c @@ -219,18 +219,28 @@ _ui_duck_exists(void) return wins_duck_exists(); } +static gboolean +_ui_xmlconsole_exists(void) +{ + return wins_xmlconsole_exists(); +} + static void _ui_handle_stanza(const char * const msg) { - ProfWin *console = wins_get_console(); - if (g_str_has_prefix(msg, "SENT:")) { - win_vprint_line(console, '!', COLOUR_ONLINE, "<- %s", &msg[6]); - } else if (g_str_has_prefix(msg, "RECV:")) { - win_vprint_line(console, '!', COLOUR_AWAY, "-> %s", &msg[6]); - } - win_update_virtual(console); - if (wins_is_current(console)) { - ui_current_page_off(); + if (ui_xmlconsole_exists()) { + ProfWin *xmlconsole = wins_get_xmlconsole(); + + if (g_str_has_prefix(msg, "SENT:")) { + win_vprint_line(xmlconsole, '!', COLOUR_ONLINE, "<- %s", &msg[6]); + } else if (g_str_has_prefix(msg, "RECV:")) { + win_vprint_line(xmlconsole, '!', COLOUR_AWAY, "-> %s", &msg[6]); + } + + win_update_virtual(xmlconsole); + if (wins_is_current(xmlconsole)) { + ui_current_page_off(); + } } } @@ -1118,6 +1128,14 @@ _ui_create_duck_win(void) } static void +_ui_create_xmlconsole_win(void) +{ + ProfWin *window = wins_new("XML Console", WIN_XML); + int num = wins_get_num(window); + ui_switch_win(num); +} + +static void _ui_open_duck_win(void) { ProfWin *window = wins_get_by_recipient("DuckDuckGo search"); @@ -1939,4 +1957,6 @@ ui_init_module(void) ui_replace_input = _ui_replace_input; ui_invalid_command_usage = _ui_invalid_command_usage; ui_handle_stanza = _ui_handle_stanza; + ui_create_xmlconsole_win = _ui_create_xmlconsole_win; + ui_xmlconsole_exists = _ui_xmlconsole_exists; } |