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.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/src/window_list.c b/src/window_list.c
index 35f49fdd..5fab7ba0 100644
--- a/src/window_list.c
+++ b/src/window_list.c
@@ -389,6 +389,11 @@ wins_get_by_string(char *str)
         return (ProfWin*)privwin;
     }
 
+    ProfPluginWin *pluginwin = wins_get_plugin(str);
+    if (pluginwin) {
+        return (ProfWin*)pluginwin;
+    }
+
     return NULL;
 }
 
@@ -539,6 +544,13 @@ wins_close_by_num(int i)
                 autocomplete_remove(wins_close_ac, "xmlconsole");
                 break;
             }
+            case WIN_PLUGIN:
+            {
+                ProfPluginWin *pluginwin = (ProfPluginWin*)window;
+                autocomplete_remove(wins_ac, pluginwin->tag);
+                autocomplete_remove(wins_close_ac, pluginwin->tag);
+                break;
+            }
             case WIN_MUC_CONFIG:
             default:
                 break;
@@ -640,10 +652,12 @@ wins_new_plugin(const char * const tag)
 {
     GList *keys = g_hash_table_get_keys(windows);
     int result = get_next_available_win_num(keys);
-    ProfWin *new = win_create_plugin(tag);
-    g_hash_table_insert(windows, GINT_TO_POINTER(result), new);
     g_list_free(keys);
-    return new;
+    ProfWin *newwin = win_create_plugin(tag);
+    g_hash_table_insert(windows, GINT_TO_POINTER(result), newwin);
+    autocomplete_add(wins_ac, tag);
+    autocomplete_add(wins_close_ac, tag);
+    return newwin;
 }
 
 gboolean