about summary refs log tree commit diff stats
path: root/src/ui
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2014-04-06 21:06:50 +0100
committerJames Booth <boothj5@gmail.com>2014-04-06 21:06:50 +0100
commitccfea12674d8af24f896b38f193b98c1e830339e (patch)
treeecf015073037198a9a93aa7a8fcb064659ad2bb0 /src/ui
parent6b2d2fd8e40503085ad26e63e048df2e60eba30f (diff)
downloadprofani-tty-ccfea12674d8af24f896b38f193b98c1e830339e.tar.gz
Inlined wins_update_virtual_console and wins_update_virtual_current
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/console.c181
-rw-r--r--src/ui/core.c78
-rw-r--r--src/ui/windows.c26
-rw-r--r--src/ui/windows.h2
4 files changed, 191 insertions, 96 deletions
diff --git a/src/ui/console.c b/src/ui/console.c
index 073f7791..7732a177 100644
--- a/src/ui/console.c
+++ b/src/ui/console.c
@@ -52,7 +52,10 @@ _cons_show_time(void)
 {
     ProfWin *console = wins_get_console();
     win_print_time(console, '-');
-    wins_update_virtual_console();
+
+    if (wins_is_current(console)) {
+        win_update_virtual(console);
+    }
 }
 
 static void
@@ -60,7 +63,10 @@ _cons_show_word(const char * const word)
 {
     ProfWin *console = wins_get_console();
     wprintw(console->win, "%s", word);
-    wins_update_virtual_console();
+
+    if (wins_is_current(console)) {
+        win_update_virtual(console);
+    }
 }
 
 static void
@@ -77,7 +83,9 @@ _cons_debug(const char * const msg, ...)
         g_string_free(fmt_msg, TRUE);
         va_end(arg);
 
-        wins_update_virtual_console();
+        if (wins_is_current(console)) {
+            win_update_virtual(console);
+        }
         cons_alert();
 
         ui_current_page_off();
@@ -97,7 +105,10 @@ _cons_show(const char * const msg, ...)
     wprintw(console->win, "%s\n", fmt_msg->str);
     g_string_free(fmt_msg, TRUE);
     va_end(arg);
-    wins_update_virtual_console();
+
+    if (wins_is_current(console)) {
+        win_update_virtual(console);
+    }
 }
 
 static void
@@ -115,7 +126,10 @@ _cons_show_error(const char * const msg, ...)
     g_string_free(fmt_msg, TRUE);
     va_end(arg);
 
-    wins_update_virtual_console();
+    if (wins_is_current(console)) {
+        win_update_virtual(console);
+    }
+
     cons_alert();
 }
 
@@ -133,7 +147,10 @@ _cons_show_typing(const char * const barejid)
 
     win_vprint_line(console, '-', COLOUR_TYPING, "!! %s is typing a message...", display_usr);
 
-    wins_update_virtual_console();
+    if (wins_is_current(console)) {
+        win_update_virtual(console);
+    }
+
     cons_alert();
 }
 
@@ -151,7 +168,10 @@ _cons_show_incoming_message(const char * const short_from, const int win_index)
     wprintw(console->win, "<< incoming from %s (%d)\n", short_from, ui_index);
     wattroff(console->win, COLOUR_INCOMING);
 
-    wins_update_virtual_console();
+    if (wins_is_current(console)) {
+        win_update_virtual(console);
+    }
+
     cons_alert();
 }
 
@@ -203,7 +223,10 @@ _cons_about(void)
 
     pnoutrefresh(console->win, 0, 0, 1, 0, rows-3, cols-1);
 
-    wins_update_virtual_console();
+    if (wins_is_current(console)) {
+        win_update_virtual(console);
+    }
+
     cons_alert();
 }
 
@@ -232,7 +255,10 @@ _cons_check_version(gboolean not_available_msg)
                 }
             }
 
-            wins_update_virtual_console();
+            if (wins_is_current(console)) {
+                win_update_virtual(console);
+            }
+
             cons_alert();
         }
     }
@@ -254,7 +280,9 @@ _cons_show_login_success(ProfAccount *account)
     wprintw(console->win, " (priority %d)",
         accounts_get_priority_for_presence_type(account->name, presence));
     wprintw(console->win, ".\n");
-    wins_update_virtual_console();
+    if (wins_is_current(console)) {
+        win_update_virtual(console);
+    }
     cons_alert();
 }
 
@@ -275,13 +303,16 @@ _cons_show_wins(void)
     }
 
     cons_show("");
-    wins_update_virtual_console();
+    if (wins_is_current(console)) {
+        win_update_virtual(console);
+    }
     cons_alert();
 }
 
 static void
 _cons_show_room_invites(GSList *invites)
 {
+    ProfWin *console = wins_get_console();
     cons_show("");
     if (invites == NULL) {
         cons_show("No outstanding chat room invites.");
@@ -293,7 +324,9 @@ _cons_show_room_invites(GSList *invites)
         }
     }
 
-    wins_update_virtual_console();
+    if (wins_is_current(console)) {
+        win_update_virtual(console);
+    }
     cons_alert();
 }
 
@@ -426,7 +459,9 @@ _cons_show_info(PContact pcontact)
         ordered_resources = g_list_next(ordered_resources);
     }
 
-    wins_update_virtual_console();
+    if (wins_is_current(console)) {
+        win_update_virtual(console);
+    }
     cons_alert();
 }
 
@@ -501,7 +536,9 @@ _cons_show_caps(const char * const contact, Resource *resource)
         }
     }
 
-    wins_update_virtual_console();
+    if (wins_is_current(console)) {
+        win_update_virtual(console);
+    }
     cons_alert();
 }
 
@@ -528,7 +565,9 @@ _cons_show_software_version(const char * const jid, const char * const  presence
         cons_show("OS      : %s", os);
     }
 
-    wins_update_virtual_console();
+    if (wins_is_current(console)) {
+        win_update_virtual(console);
+    }
     cons_alert();
 }
 
@@ -592,13 +631,16 @@ _cons_show_room_list(GSList *rooms, const char * const conference_node)
         cons_show("No chat rooms at %s", conference_node);
     }
 
-    wins_update_virtual_console();
+    if (wins_is_current(console)) {
+        win_update_virtual(console);
+    }
     cons_alert();
 }
 
 static void
 _cons_show_bookmarks(const GList *list)
 {
+    ProfWin *console = wins_get_console();
     Bookmark *item;
 
     cons_show("");
@@ -608,8 +650,6 @@ _cons_show_bookmarks(const GList *list)
     while (list != NULL) {
         item = list->data;
 
-        ProfWin *console = wins_get_console();
-
         win_print_time(console, '-');
         wprintw(console->win, "  %s", item->jid);
         if (item->nick != NULL) {
@@ -622,13 +662,16 @@ _cons_show_bookmarks(const GList *list)
         list = g_list_next(list);
     }
 
-    wins_update_virtual_console();
+    if (wins_is_current(console)) {
+        win_update_virtual(console);
+    }
     cons_alert();
 }
 
 static void
 _cons_show_disco_info(const char *jid, GSList *identities, GSList *features)
 {
+    ProfWin *console = wins_get_console();
     if (((identities != NULL) && (g_slist_length(identities) > 0)) ||
         ((features != NULL) && (g_slist_length(features) > 0))) {
         cons_show("");
@@ -664,7 +707,9 @@ _cons_show_disco_info(const char *jid, GSList *identities, GSList *features)
             features = g_slist_next(features);
         }
 
-        wins_update_virtual_console();
+        if (wins_is_current(console)) {
+            win_update_virtual(console);
+        }
         cons_alert();
     }
 }
@@ -690,7 +735,10 @@ _cons_show_disco_items(GSList *items, const char * const jid)
         cons_show("");
         cons_show("No service discovery items for %s", jid);
     }
-    wins_update_virtual_console();
+
+    if (wins_is_current(console)) {
+        win_update_virtual(console);
+    }
     cons_alert();
 }
 
@@ -705,7 +753,10 @@ _cons_show_status(const char * const barejid)
     } else {
         cons_show("No such contact \"%s\" in roster.", barejid);
     }
-    wins_update_virtual_console();
+
+    if (wins_is_current(console)) {
+        win_update_virtual(console);
+    }
     cons_alert();
 }
 
@@ -713,6 +764,7 @@ static void
 _cons_show_room_invite(const char * const invitor, const char * const room,
     const char * const reason)
 {
+    ProfWin *console = wins_get_console();
     char *display_from = NULL;
     PContact contact = roster_get_contact(invitor);
     if (contact != NULL) {
@@ -742,7 +794,9 @@ _cons_show_room_invite(const char * const invitor, const char * const room,
 
     free(display_from);
 
-    wins_update_virtual_console();
+    if (wins_is_current(console)) {
+        win_update_virtual(console);
+    }
     cons_alert();
 }
 
@@ -772,7 +826,9 @@ _cons_show_account_list(gchar **accounts)
         cons_show("");
     }
 
-    wins_update_virtual_console();
+    if (wins_is_current(console)) {
+        win_update_virtual(console);
+    }
     cons_alert();
 }
 
@@ -898,7 +954,9 @@ _cons_show_account(ProfAccount *account)
         }
     }
 
-    wins_update_virtual_console();
+    if (wins_is_current(console)) {
+        win_update_virtual(console);
+    }
     cons_alert();
 }
 
@@ -1022,6 +1080,7 @@ _cons_otrwarn_setting(void)
 static void
 _cons_show_ui_prefs(void)
 {
+    ProfWin *console = wins_get_console();
     cons_show("UI preferences:");
     cons_show("");
     cons_theme_setting();
@@ -1034,7 +1093,9 @@ _cons_show_ui_prefs(void)
     cons_titlebar_setting();
     cons_otrwarn_setting();
 
-    wins_update_virtual_console();
+    if (wins_is_current(console)) {
+        win_update_virtual(console);
+    }
     cons_alert();
 }
 
@@ -1074,11 +1135,14 @@ _cons_notify_setting(void)
 static void
 _cons_show_desktop_prefs(void)
 {
+    ProfWin *console = wins_get_console();
     cons_show("Desktop notification preferences:");
     cons_show("");
     cons_notify_setting();
 
-    wins_update_virtual_console();
+    if (wins_is_current(console)) {
+        win_update_virtual(console);
+    }
     cons_alert();
 }
 
@@ -1134,6 +1198,7 @@ _cons_history_setting(void)
 static void
 _cons_show_chat_prefs(void)
 {
+    ProfWin *console = wins_get_console();
     cons_show("Chat preferences:");
     cons_show("");
     cons_states_setting();
@@ -1142,7 +1207,9 @@ _cons_show_chat_prefs(void)
     cons_gone_setting();
     cons_history_setting();
 
-    wins_update_virtual_console();
+    if (wins_is_current(console)) {
+        win_update_virtual(console);
+    }
     cons_alert();
 }
 
@@ -1187,6 +1254,7 @@ _cons_otr_log_setting(void)
 static void
 _cons_show_log_prefs(void)
 {
+    ProfWin *console = wins_get_console();
     cons_show("Logging preferences:");
     cons_show("");
     cons_log_setting();
@@ -1194,7 +1262,9 @@ _cons_show_log_prefs(void)
     cons_grlog_setting();
     cons_otr_log_setting();
 
-    wins_update_virtual_console();
+    if (wins_is_current(console)) {
+        win_update_virtual(console);
+    }
     cons_alert();
 }
 
@@ -1226,11 +1296,14 @@ _cons_autoaway_setting(void)
 static void
 _cons_show_presence_prefs(void)
 {
+    ProfWin *console = wins_get_console();
     cons_show("Presence preferences:");
     cons_show("");
     cons_autoaway_setting();
 
-    wins_update_virtual_console();
+    if (wins_is_current(console)) {
+        win_update_virtual(console);
+    }
     cons_alert();
 }
 
@@ -1270,19 +1343,23 @@ _cons_priority_setting(void)
 static void
 _cons_show_connection_prefs(void)
 {
+    ProfWin *console = wins_get_console();
     cons_show("Connection preferences:");
     cons_show("");
     cons_reconnect_setting();
     cons_autoping_setting();
     cons_autoconnect_setting();
 
-    wins_update_virtual_console();
+    if (wins_is_current(console)) {
+        win_update_virtual(console);
+    }
     cons_alert();
 }
 
 static void
 _cons_show_themes(GSList *themes)
 {
+    ProfWin *console = wins_get_console();
     cons_show("");
 
     if (themes == NULL) {
@@ -1295,13 +1372,16 @@ _cons_show_themes(GSList *themes)
         }
     }
 
-    wins_update_virtual_console();
+    if (wins_is_current(console)) {
+        win_update_virtual(console);
+    }
     cons_alert();
 }
 
 static void
 _cons_prefs(void)
 {
+    ProfWin *console = wins_get_console();
     cons_show("");
     cons_show_ui_prefs();
     cons_show("");
@@ -1316,13 +1396,16 @@ _cons_prefs(void)
     cons_show_connection_prefs();
     cons_show("");
 
-    wins_update_virtual_console();
+    if (wins_is_current(console)) {
+        win_update_virtual(console);
+    }
     cons_alert();
 }
 
 static void
 _cons_help(void)
 {
+    ProfWin *console = wins_get_console();
     cons_show("");
     cons_show("Choose a help option:");
     cons_show("");
@@ -1339,13 +1422,16 @@ _cons_help(void)
     cons_show("/help [command]  - Detailed help on a specific command.");
     cons_show("");
 
-    wins_update_virtual_console();
+    if (wins_is_current(console)) {
+        win_update_virtual(console);
+    }
     cons_alert();
 }
 
 static void
 _cons_navigation_help(void)
 {
+    ProfWin *console = wins_get_console();
     cons_show("");
     cons_show("Navigation:");
     cons_show("");
@@ -1361,13 +1447,16 @@ _cons_navigation_help(void)
     cons_show("PAGE UP, PAGE DOWN       : Page the main window.");
     cons_show("");
 
-    wins_update_virtual_console();
+    if (wins_is_current(console)) {
+        win_update_virtual(console);
+    }
     cons_alert();
 }
 
 static void
 _cons_show_roster_group(const char * const group, GSList *list)
 {
+    ProfWin *console = wins_get_console();
     cons_show("");
 
     if (list != NULL) {
@@ -1377,18 +1466,23 @@ _cons_show_roster_group(const char * const group, GSList *list)
     }
 
     _show_roster_contacts(list, FALSE);
-    wins_update_virtual_console();
+    if (wins_is_current(console)) {
+        win_update_virtual(console);
+    }
     cons_alert();
 }
 
 static void
 _cons_show_roster(GSList *list)
 {
+    ProfWin *console = wins_get_console();
     cons_show("");
     cons_show("Roster:");
 
     _show_roster_contacts(list, TRUE);
-    wins_update_virtual_console();
+    if (wins_is_current(console)) {
+        win_update_virtual(console);
+    }
     cons_alert();
 }
 
@@ -1407,7 +1501,9 @@ _cons_show_contact_online(PContact contact, Resource *resource, GDateTime *last_
     if (wins_is_current(console)) {
         ui_current_page_off();
     }
-    wins_update_virtual_console();
+    if (wins_is_current(console)) {
+        win_update_virtual(console);
+    }
 }
 
 static void
@@ -1423,7 +1519,9 @@ _cons_show_contact_offline(PContact contact, char *resource, char *status)
     if (wins_is_current(console)) {
         ui_current_page_off();
     }
-    wins_update_virtual_console();
+    if (wins_is_current(console)) {
+        win_update_virtual(console);
+    }
 }
 
 static void
@@ -1441,7 +1539,9 @@ _cons_show_contacts(GSList *list)
         curr = g_slist_next(curr);
     }
 
-    wins_update_virtual_console();
+    if (wins_is_current(console)) {
+        win_update_virtual(console);
+    }
     cons_alert();
 }
 
@@ -1582,7 +1682,6 @@ _show_roster_contacts(GSList *list, gboolean show_groups)
 
         curr = g_slist_next(curr);
     }
-
 }
 
 void
diff --git a/src/ui/core.c b/src/ui/core.c
index a12d281f..41cdfe0c 100644
--- a/src/ui/core.c
+++ b/src/ui/core.c
@@ -94,7 +94,8 @@ _ui_init(void)
     display = XOpenDisplay(0);
 #endif
     ui_idle_time = g_timer_new();
-    wins_update_virtual_current();
+    ProfWin *window = wins_get_current();
+    win_update_virtual(window);
 }
 
 static void
@@ -150,7 +151,8 @@ _ui_resize(const int ch, const char * const input, const int size)
     status_bar_resize();
     wins_resize_all();
     inp_win_resize(input, size);
-    wins_update_virtual_current();
+    ProfWin *window = wins_get_current();
+    win_update_virtual(window);
 }
 
 static void
@@ -180,6 +182,7 @@ static void
 _ui_contact_typing(const char * const barejid)
 {
     ProfWin *window = wins_get_by_recipient(barejid);
+    ProfWin *current = wins_get_current();
 
     if (prefs_get_boolean(PREF_INTYPE)) {
         // no chat window for user
@@ -189,7 +192,7 @@ _ui_contact_typing(const char * const barejid)
         // have chat window but not currently in it
         } else if (!wins_is_current(window)) {
             cons_show_typing(barejid);
-            wins_update_virtual_current();
+            win_update_virtual(current);
 
         // in chat window with user
         } else {
@@ -197,7 +200,7 @@ _ui_contact_typing(const char * const barejid)
 
             int num = wins_get_num(window);
             status_bar_active(num);
-            wins_update_virtual_current();
+            win_update_virtual(current);
        }
     }
 
@@ -263,7 +266,7 @@ _ui_incoming_msg(const char * const from, const char * const message,
         win_print_incoming_message(window, tv_stamp, display_from, message);
         title_bar_set_typing(FALSE);
         status_bar_active(num);
-        wins_update_virtual_current();
+        win_update_virtual(window);
 
     // not currently viewing chat window with sender
     } else {
@@ -371,7 +374,8 @@ _ui_handle_recipient_not_found(const char * const recipient, const char * const
         win_print_line(win, '!', COLOUR_ERROR, msg->str);
     }
 
-    wins_update_virtual_current();
+    ProfWin *current = wins_get_current();
+    win_update_virtual(current);
 
     g_string_free(msg, TRUE);
 }
@@ -391,7 +395,8 @@ _ui_handle_recipient_error(const char * const recipient, const char * const err_
         win_print_line(win, '!', COLOUR_ERROR, msg->str);
     }
 
-    wins_update_virtual_current();
+    ProfWin *current = wins_get_current();
+    win_update_virtual(current);
 
     g_string_free(msg, TRUE);
 }
@@ -404,7 +409,8 @@ _ui_handle_error(const char * const err_msg)
 
     cons_show_error(msg->str);
 
-    wins_update_virtual_current();
+    ProfWin *current = wins_get_current();
+    win_update_virtual(current);
 
     g_string_free(msg, TRUE);
 }
@@ -551,7 +557,7 @@ _ui_switch_win(const int i)
             status_bar_current(i);
             status_bar_active(i);
         }
-        wins_update_virtual_current();
+        win_update_virtual(new_current);
         return TRUE;
     } else {
         return FALSE;
@@ -586,7 +592,7 @@ _ui_next_win(void)
         status_bar_current(i);
         status_bar_active(i);
     }
-    wins_update_virtual_current();
+    win_update_virtual(new_current);
 }
 
 static void
@@ -606,7 +612,7 @@ _ui_gone_secure(const char * const recipient, gboolean trusted)
             GString *recipient_str = _get_recipient_string(window);
             title_bar_set_recipient(recipient_str->str);
             g_string_free(recipient_str, TRUE);
-            wins_update_virtual_current();
+            win_update_virtual(window);
         }
     }
 }
@@ -624,7 +630,7 @@ _ui_gone_insecure(const char * const recipient)
             GString *recipient_str = _get_recipient_string(window);
             title_bar_set_recipient(recipient_str->str);
             g_string_free(recipient_str, TRUE);
-            wins_update_virtual_current();
+            win_update_virtual(window);
         }
     }
 }
@@ -642,7 +648,7 @@ _ui_trust(const char * const recipient)
             GString *recipient_str = _get_recipient_string(window);
             title_bar_set_recipient(recipient_str->str);
             g_string_free(recipient_str, TRUE);
-            wins_update_virtual_current();
+            win_update_virtual(window);
         }
     }
 }
@@ -660,7 +666,7 @@ _ui_untrust(const char * const recipient)
             GString *recipient_str = _get_recipient_string(window);
             title_bar_set_recipient(recipient_str->str);
             g_string_free(recipient_str, TRUE);
-            wins_update_virtual_current();
+            win_update_virtual(window);
         }
     }
 }
@@ -687,7 +693,7 @@ _ui_previous_win(void)
         status_bar_current(i);
         status_bar_active(i);
     }
-    wins_update_virtual_current();
+    win_update_virtual(new_current);
 }
 
 static void
@@ -715,7 +721,8 @@ _ui_close_win(int index)
     status_bar_current(1);
     status_bar_active(1);
 
-    wins_update_virtual_current();
+    ProfWin *current = wins_get_current();
+    win_update_virtual(current);
 }
 
 static void
@@ -895,7 +902,7 @@ _ui_print_system_msg_from_recipient(const char * const from, const char *message
 
     // this is the current window
     if (wins_is_current(window)) {
-        wins_update_virtual_current();
+        win_update_virtual(window);
     }
 
     jid_destroy(jid);
@@ -919,7 +926,7 @@ _ui_recipient_gone(const char * const barejid)
     if (window != NULL) {
         win_vprint_line(window, '!', COLOUR_GONE, "<- %s has left the conversation.", display_usr);
         if (wins_is_current(window)) {
-            wins_update_virtual_current();
+            win_update_virtual(window);
         }
     }
 }
@@ -1154,7 +1161,7 @@ _ui_room_roster(const char * const room, GList *roster, const char * const prese
     }
 
     if (wins_is_current(window)) {
-        wins_update_virtual_current();
+        win_update_virtual(window);
     }
 }
 
@@ -1169,7 +1176,7 @@ _ui_room_member_offline(const char * const room, const char * const nick)
     wattroff(window->win, COLOUR_OFFLINE);
 
     if (wins_is_current(window)) {
-        wins_update_virtual_current();
+        win_update_virtual(window);
     }
 }
 
@@ -1185,7 +1192,7 @@ _ui_room_member_online(const char * const room, const char * const nick,
     wattroff(window->win, COLOUR_ONLINE);
 
     if (wins_is_current(window)) {
-        wins_update_virtual_current();
+        win_update_virtual(window);
     }
 }
 
@@ -1200,7 +1207,7 @@ _ui_room_member_presence(const char * const room, const char * const nick,
     }
 
     if (wins_is_current(window)) {
-        wins_update_virtual_current();
+        win_update_virtual(window);
     }
 }
 
@@ -1216,7 +1223,7 @@ _ui_room_member_nick_change(const char * const room,
     wattroff(window->win, COLOUR_THEM);
 
     if (wins_is_current(window)) {
-        wins_update_virtual_current();
+        win_update_virtual(window);
     }
 }
 
@@ -1231,7 +1238,7 @@ _ui_room_nick_change(const char * const room, const char * const nick)
     wattroff(window->win, COLOUR_ME);
 
     if (wins_is_current(window)) {
-        wins_update_virtual_current();
+        win_update_virtual(window);
     }
 }
 
@@ -1257,7 +1264,7 @@ _ui_room_history(const char * const room_jid, const char * const nick,
     }
 
     if (wins_is_current(window)) {
-        wins_update_virtual_current();
+        win_update_virtual(window);
     }
 }
 
@@ -1297,14 +1304,15 @@ _ui_room_message(const char * const room_jid, const char * const nick,
     // currently in groupchat window
     if (wins_is_current(window)) {
         status_bar_active(num);
-        wins_update_virtual_current();
+        win_update_virtual(window);
 
     // not currenlty on groupchat window
     } else {
         status_bar_new(num);
         cons_show_incoming_message(nick, num);
         if (wins_get_current_num() == 0) {
-            wins_update_virtual_current();
+            ProfWin *current = wins_get_current();
+            win_update_virtual(current);
         }
 
         if (strcmp(nick, muc_get_room_nick(room_jid)) != 0) {
@@ -1354,7 +1362,7 @@ _ui_room_subject(const char * const room_jid, const char * const subject)
     // currently in groupchat window
     if (wins_is_current(window)) {
         status_bar_active(num);
-        wins_update_virtual_current();
+        win_update_virtual(window);
 
     // not currenlty on groupchat window
     } else {
@@ -1377,7 +1385,7 @@ _ui_room_broadcast(const char * const room_jid, const char * const message)
     // currently in groupchat window
     if (wins_is_current(window)) {
         status_bar_active(num);
-        wins_update_virtual_current();
+        win_update_virtual(window);
 
     // not currenlty on groupchat window
     } else {
@@ -1471,7 +1479,7 @@ _ui_chat_win_contact_online(PContact contact, Resource *resource, GDateTime *las
             last_activity, "++", "online");
 
         if (wins_is_current(window)) {
-            wins_update_virtual_current();
+            win_update_virtual(window);
             ui_current_page_off();
         }
     }
@@ -1491,7 +1499,7 @@ _ui_chat_win_contact_offline(PContact contact, char *resource, char *status)
             "offline");
 
         if (wins_is_current(window)) {
-            wins_update_virtual_current();
+            win_update_virtual(window);
             ui_current_page_off();
         }
     }
@@ -1618,7 +1626,7 @@ _win_handle_page(const wint_t * const ch)
                         *page_start = y - page_space;
 
                     current->paged = 1;
-                    wins_update_virtual_current();
+                    win_update_virtual(current);
                 } else if (mouse_event.bstate & BUTTON4_PRESSED) { // mouse wheel up
                     *page_start -= 4;
 
@@ -1627,7 +1635,7 @@ _win_handle_page(const wint_t * const ch)
                         *page_start = 0;
 
                     current->paged = 1;
-                    wins_update_virtual_current();
+                    win_update_virtual(current);
                 }
             }
         }
@@ -1642,7 +1650,7 @@ _win_handle_page(const wint_t * const ch)
             *page_start = 0;
 
         current->paged = 1;
-        wins_update_virtual_current();
+        win_update_virtual(current);
 
     // page down
     } else if (*ch == KEY_NPAGE) {
@@ -1657,7 +1665,7 @@ _win_handle_page(const wint_t * const ch)
             *page_start = y - page_space;
 
         current->paged = 1;
-        wins_update_virtual_current();
+        win_update_virtual(current);
     }
 
     // switch off page if last line visible
diff --git a/src/ui/windows.c b/src/ui/windows.c
index 80222f18..83841837 100644
--- a/src/ui/windows.c
+++ b/src/ui/windows.c
@@ -194,29 +194,27 @@ wins_close_current(void)
 void
 wins_close_by_num(int i)
 {
+    // console cannot be closed
     if (i != 1) {
+
+        // go to console if closing current window
         if (i == current) {
             current = 1;
-            wins_update_virtual_current();
+            ProfWin *window = wins_get_current();
+            win_update_virtual(window);
         }
+
         g_hash_table_remove(windows, GINT_TO_POINTER(i));
         status_bar_inactive(i);
     }
 }
 
 void
-wins_update_virtual_current(void)
-{
-    ProfWin *window = wins_get_current();
-    win_update_virtual(window);
-}
-
-void
 wins_clear_current(void)
 {
     ProfWin *window = wins_get_current();
     werase(window->win);
-    wins_update_virtual_current();
+    win_update_virtual(window);
 }
 
 gboolean
@@ -282,14 +280,6 @@ wins_resize_all(void)
     pnoutrefresh(current_win->win, current_win->y_pos, 0, 1, 0, rows-3, cols-1);
 }
 
-void
-wins_update_virtual_console(void)
-{
-    if (current == 0) {
-        wins_update_virtual_current();
-    }
-}
-
 gboolean
 wins_duck_exists(void)
 {
@@ -356,7 +346,7 @@ wins_lost_connection(void)
 
             // if current win, set current_win_dirty
             if (wins_is_current(window)) {
-                wins_update_virtual_current();
+                win_update_virtual(window);
             }
         }
         curr = g_list_next(curr);
diff --git a/src/ui/windows.h b/src/ui/windows.h
index 63b48622..f8dec429 100644
--- a/src/ui/windows.h
+++ b/src/ui/windows.h
@@ -35,8 +35,6 @@ int wins_get_num(ProfWin *window);
 int wins_get_current_num(void);
 void wins_close_current(void);
 void wins_close_by_num(int i);
-void wins_update_virtual_current(void);
-void wins_update_virtual_console(void);
 void wins_clear_current(void);
 gboolean wins_is_current(ProfWin *window);
 ProfWin * wins_new(const char * const from, win_type_t type);