about summary refs log tree commit diff stats
path: root/src/window_list.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/window_list.c')
-rw-r--r--src/window_list.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/window_list.c b/src/window_list.c
index f2cd2062..5147db84 100644
--- a/src/window_list.c
+++ b/src/window_list.c
@@ -50,6 +50,7 @@
 static GHashTable *windows;
 static int current;
 static Autocomplete wins_ac;
+static Autocomplete wins_close_ac;
 
 void
 wins_init(void)
@@ -64,6 +65,10 @@ wins_init(void)
 
     wins_ac = autocomplete_new();
     autocomplete_add(wins_ac, "console");
+
+    wins_close_ac = autocomplete_new();
+    autocomplete_add(wins_close_ac, "all");
+    autocomplete_add(wins_close_ac, "read");
 }
 
 ProfWin*
@@ -374,6 +379,7 @@ wins_close_by_num(int i)
             {
                 ProfChatWin *chatwin = (ProfChatWin*)window;
                 autocomplete_remove(wins_ac, chatwin->barejid);
+                autocomplete_remove(wins_close_ac, chatwin->barejid);
 
                 jabber_conn_status_t conn_status = jabber_get_connection_status();
                 if (conn_status == JABBER_CONNECTED) {
@@ -382,6 +388,7 @@ wins_close_by_num(int i)
                         const char* nick = p_contact_name(contact);
                         if (nick) {
                             autocomplete_remove(wins_ac, nick);
+                            autocomplete_remove(wins_close_ac, nick);
                         }
                     }
                 }
@@ -392,17 +399,20 @@ wins_close_by_num(int i)
             {
                 ProfMucWin *mucwin = (ProfMucWin*)window;
                 autocomplete_remove(wins_ac, mucwin->roomjid);
+                autocomplete_remove(wins_close_ac, mucwin->roomjid);
                 break;
             }
             case WIN_PRIVATE:
             {
                 ProfPrivateWin *privwin = (ProfPrivateWin*)window;
                 autocomplete_remove(wins_ac, privwin->fulljid);
+                autocomplete_remove(wins_close_ac, privwin->fulljid);
                 break;
             }
             case WIN_XML:
             {
                 autocomplete_remove(wins_ac, "xmlconsole");
+                autocomplete_remove(wins_close_ac, "xmlconsole");
                 break;
             }
             case WIN_MUC_CONFIG:
@@ -437,6 +447,7 @@ wins_new_xmlconsole(void)
     ProfWin *newwin = win_create_xmlconsole();
     g_hash_table_insert(windows, GINT_TO_POINTER(result), newwin);
     autocomplete_add(wins_ac, "xmlconsole");
+    autocomplete_add(wins_close_ac, "xmlconsole");
     return newwin;
 }
 
@@ -450,11 +461,13 @@ wins_new_chat(const char *const barejid)
     g_hash_table_insert(windows, GINT_TO_POINTER(result), newwin);
 
     autocomplete_add(wins_ac, barejid);
+    autocomplete_add(wins_close_ac, barejid);
     PContact contact = roster_get_contact(barejid);
     if (contact) {
         const char* nick = p_contact_name(contact);
         if (nick) {
             autocomplete_add(wins_ac, nick);
+            autocomplete_add(wins_close_ac, nick);
         }
     }
 
@@ -470,6 +483,7 @@ wins_new_muc(const char *const roomjid)
     ProfWin *newwin = win_create_muc(roomjid);
     g_hash_table_insert(windows, GINT_TO_POINTER(result), newwin);
     autocomplete_add(wins_ac, roomjid);
+    autocomplete_add(wins_close_ac, roomjid);
     return newwin;
 }
 
@@ -493,6 +507,7 @@ wins_new_private(const char *const fulljid)
     ProfWin *newwin = win_create_private(fulljid);
     g_hash_table_insert(windows, GINT_TO_POINTER(result), newwin);
     autocomplete_add(wins_ac, fulljid);
+    autocomplete_add(wins_close_ac, fulljid);
     return newwin;
 }
 
@@ -803,6 +818,12 @@ win_autocomplete(const char *const search_str)
     return autocomplete_complete(wins_ac, search_str, TRUE);
 }
 
+char*
+win_close_autocomplete(const char *const search_str)
+{
+    return autocomplete_complete(wins_close_ac, search_str, TRUE);
+}
+
 void
 win_reset_search_attempts(void)
 {
@@ -810,8 +831,15 @@ win_reset_search_attempts(void)
 }
 
 void
+win_close_reset_search_attempts(void)
+{
+    autocomplete_reset(wins_close_ac);
+}
+
+void
 wins_destroy(void)
 {
     g_hash_table_destroy(windows);
     autocomplete_free(wins_ac);
+    autocomplete_free(wins_close_ac);
 }