about summary refs log tree commit diff stats
path: root/src/command/commands.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/command/commands.c')
-rw-r--r--src/command/commands.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/src/command/commands.c b/src/command/commands.c
index ada5c114..150ee364 100644
--- a/src/command/commands.c
+++ b/src/command/commands.c
@@ -1342,7 +1342,9 @@ cmd_msg(gchar **args, struct cmd_help_t help)
         if (!chatwin) {
             chatwin = ui_ev_new_chat_win(barejid);
         }
-        ui_ev_focus_win((ProfWin*)chatwin);
+        if (!wins_is_current((ProfWin*)chatwin)) {
+            ui_ev_focus_win((ProfWin*)chatwin);
+        }
 
         if (msg) {
             cl_ev_send_msg(chatwin, msg);
@@ -3191,7 +3193,7 @@ cmd_close(gchar **args, struct cmd_help_t help)
     int count = 0;
 
     if (args[0] == NULL) {
-        index = ui_current_win_index();
+        index = wins_get_current_num();
     } else if (strcmp(args[0], "all") == 0) {
         count = ui_close_all_wins();
         if (count == 0) {
@@ -3226,19 +3228,15 @@ cmd_close(gchar **args, struct cmd_help_t help)
         return TRUE;
     }
 
-    if (!ui_win_exists(index)) {
+    ProfWin *window = wins_get_by_num(index);
+    if (!window) {
         cons_show("Window is not open.");
         return TRUE;
     }
 
     // check for unsaved form
     if (ui_win_has_unsaved_form(index)) {
-        ProfWin *window = wins_get_current();
-        if (wins_is_current(window)) {
-            ui_current_print_line("You have unsaved changes, use /form submit or /form cancel");
-        } else {
-            cons_show("Cannot close form window with unsaved changes, use /form submit or /form cancel");
-        }
+        ui_current_print_line("You have unsaved changes, use /form submit or /form cancel");
         return TRUE;
     }
 
@@ -3259,7 +3257,7 @@ cmd_leave(gchar **args, struct cmd_help_t help)
 {
     jabber_conn_status_t conn_status = jabber_get_connection_status();
     win_type_t win_type = ui_current_win_type();
-    int index = ui_current_win_index();
+    int index = wins_get_current_num();
 
     if (win_type != WIN_MUC) {
         cons_show("You can only use the /leave command in a chat room.");
@@ -4239,7 +4237,9 @@ cmd_otr(gchar **args, struct cmd_help_t help)
             if (!chatwin) {
                 chatwin = ui_ev_new_chat_win(barejid);
             }
-            ui_ev_focus_win((ProfWin*)chatwin);
+            if (!wins_is_current((ProfWin*)chatwin)) {
+                ui_ev_focus_win((ProfWin*)chatwin);
+            }
 
             if (ui_current_win_is_otr()) {
                 ui_current_print_formatted_line('!', 0, "You are already in an OTR session.");