about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2015-04-30 21:24:06 +0100
committerJames Booth <boothj5@gmail.com>2015-04-30 21:24:06 +0100
commit7730674f457a490c89d9a607988889296c2f2d27 (patch)
treec132e7a15e6aac13d4d3a15546a2042c037e15ca /src
parentd5188a160e23235e84dcc4e4c8ee584dba4fab77 (diff)
parent0a6b76d6d36455a118d95b2815f1ab5f16707bff (diff)
downloadprofani-tty-7730674f457a490c89d9a607988889296c2f2d27.tar.gz
Merge branch 'master' into pgp
Diffstat (limited to 'src')
-rw-r--r--src/command/commands.c22
-rw-r--r--src/ui/core.c16
-rw-r--r--src/ui/ui.h2
3 files changed, 13 insertions, 27 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.");
diff --git a/src/ui/core.c b/src/ui/core.c
index b985e52b..59144223 100644
--- a/src/ui/core.c
+++ b/src/ui/core.c
@@ -282,13 +282,6 @@ ui_load_colours(void)
 }
 
 gboolean
-ui_win_exists(int index)
-{
-    ProfWin *window = wins_get_by_num(index);
-    return (window != NULL);
-}
-
-gboolean
 ui_xmlconsole_exists(void)
 {
     ProfXMLWin *xmlwin = wins_get_xmlconsole();
@@ -882,7 +875,8 @@ ui_switch_win(ProfWin *win)
 gboolean
 ui_switch_win_num(const int i)
 {
-    if (ui_win_exists(i)) {
+    ProfWin *window = wins_get_by_num(i);
+    if (window) {
         ProfWin *old_current = wins_get_current();
         if (old_current->type == WIN_MUC_CONFIG) {
             ProfMucConfWin *confwin = (ProfMucConfWin*)old_current;
@@ -1257,12 +1251,6 @@ ui_current_win_is_otr(void)
     }
 }
 
-int
-ui_current_win_index(void)
-{
-    return wins_get_current_num();
-}
-
 win_type_t
 ui_win_type(int index)
 {
diff --git a/src/ui/ui.h b/src/ui/ui.h
index e98a105e..e42505bc 100644
--- a/src/ui/ui.h
+++ b/src/ui/ui.h
@@ -98,7 +98,6 @@ int ui_close_read_wins(void);
 // current window actions
 void ui_clear_current(void);
 win_type_t ui_current_win_type(void);
-int ui_current_win_index(void);
 gboolean ui_current_win_is_otr(void);
 
 ProfChatWin *ui_get_current_chat(void);
@@ -110,7 +109,6 @@ void ui_win_error_line(ProfWin *window, const char * const msg);
 
 win_type_t ui_win_type(int index);
 void ui_close_win(int index);
-gboolean ui_win_exists(int index);
 int ui_win_unread(int index);
 char * ui_ask_password(void);