about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--src/command/commands.c12
-rw-r--r--src/event/ui_events.c5
-rw-r--r--src/ui/core.c77
-rw-r--r--src/ui/inputwin.c14
-rw-r--r--src/ui/ui.h2
-rw-r--r--src/ui/windows.c7
-rw-r--r--tests/ui/stub_ui.c3
7 files changed, 30 insertions, 90 deletions
diff --git a/src/command/commands.c b/src/command/commands.c
index 51c6ceb4..f3a247e8 100644
--- a/src/command/commands.c
+++ b/src/command/commands.c
@@ -738,9 +738,7 @@ cmd_win(gchar **args, struct cmd_help_t help)
     if (!window) {
         cons_show("Window %d does not exist.", num);
     } else {
-        if (!wins_is_current(window)) {
-            ui_ev_focus_win(window);
-        }
+        ui_ev_focus_win(window);
     }
 
     return TRUE;
@@ -1348,9 +1346,7 @@ cmd_msg(gchar **args, struct cmd_help_t help)
         if (!chatwin) {
             chatwin = ui_ev_new_chat_win(barejid);
         }
-        if (!wins_is_current((ProfWin*)chatwin)) {
-            ui_ev_focus_win((ProfWin*)chatwin);
-        }
+        ui_ev_focus_win((ProfWin*)chatwin);
 
         if (msg) {
             cl_ev_send_msg(chatwin, msg);
@@ -4241,9 +4237,7 @@ cmd_otr(gchar **args, struct cmd_help_t help)
             if (!chatwin) {
                 chatwin = ui_ev_new_chat_win(barejid);
             }
-            if (!wins_is_current((ProfWin*)chatwin)) {
-                ui_ev_focus_win((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/event/ui_events.c b/src/event/ui_events.c
index 2ad7562d..bebffc07 100644
--- a/src/event/ui_events.c
+++ b/src/event/ui_events.c
@@ -33,11 +33,14 @@
  */
 
 #include "ui/ui.h"
+#include "ui/windows.h"
 
 void
 ui_ev_focus_win(ProfWin *win)
 {
-    ui_switch_win(win);
+    if (!wins_is_current(win)) {
+        ui_switch_win(win);
+    }
 }
 
 ProfChatWin*
diff --git a/src/ui/core.c b/src/ui/core.c
index 22cf1168..946e3eaf 100644
--- a/src/ui/core.c
+++ b/src/ui/core.c
@@ -74,6 +74,7 @@
 #include "ui/window.h"
 #include "ui/windows.h"
 #include "xmpp/xmpp.h"
+#include "event/ui_events.h"
 
 static char *win_title;
 
@@ -894,64 +895,6 @@ ui_switch_win(ProfWin *window)
 }
 
 void
-ui_previous_win(void)
-{
-    ProfWin *old_current = wins_get_current();
-    if (old_current->type == WIN_MUC_CONFIG) {
-        ProfMucConfWin *confwin = (ProfMucConfWin*)old_current;
-        cmd_autocomplete_remove_form_fields(confwin->form);
-    }
-
-    ProfWin *new_current = wins_get_previous();
-    if (new_current->type == WIN_MUC_CONFIG) {
-        ProfMucConfWin *confwin = (ProfMucConfWin*)new_current;
-        cmd_autocomplete_add_form_fields(confwin->form);
-    }
-
-    int i = wins_get_num(new_current);
-    wins_set_current_by_num(i);
-
-    if (i == 1) {
-        title_bar_console();
-        status_bar_current(1);
-        status_bar_active(1);
-    } else {
-        title_bar_switch();
-        status_bar_current(i);
-        status_bar_active(i);
-    }
-}
-
-void
-ui_next_win(void)
-{
-    ProfWin *old_current = wins_get_current();
-    if (old_current->type == WIN_MUC_CONFIG) {
-        ProfMucConfWin *confwin = (ProfMucConfWin*)old_current;
-        cmd_autocomplete_remove_form_fields(confwin->form);
-    }
-
-    ProfWin *new_current = wins_get_next();
-    if (new_current->type == WIN_MUC_CONFIG) {
-        ProfMucConfWin *confwin = (ProfMucConfWin*)new_current;
-        cmd_autocomplete_add_form_fields(confwin->form);
-    }
-
-    int i = wins_get_num(new_current);
-    wins_set_current_by_num(i);
-
-    if (i == 1) {
-        title_bar_console();
-        status_bar_current(1);
-        status_bar_active(1);
-    } else {
-        title_bar_switch();
-        status_bar_current(i);
-        status_bar_active(i);
-    }
-}
-
-void
 ui_gone_secure(const char * const barejid, gboolean trusted)
 {
     ProfWin *window = NULL;
@@ -1348,14 +1291,14 @@ ui_new_private_win(const char * const fulljid)
     if (!window) {
         window = wins_new_private(fulljid);
     }
-    ui_switch_win(window);
+    ui_ev_focus_win(window);
 }
 
 void
 ui_create_xmlconsole_win(void)
 {
     ProfWin *window = wins_new_xmlconsole();
-    ui_switch_win(window);
+    ui_ev_focus_win(window);
 }
 
 void
@@ -1363,7 +1306,7 @@ ui_open_xmlconsole_win(void)
 {
     ProfXMLWin *xmlwin = wins_get_xmlconsole();
     if (xmlwin) {
-        ui_switch_win((ProfWin*)xmlwin);
+        ui_ev_focus_win((ProfWin*)xmlwin);
     }
 }
 
@@ -1435,7 +1378,7 @@ ui_outgoing_private_msg(const char * const fulljid, const char * const message)
     }
 
     win_print(window, '-', NULL, 0, THEME_TEXT_ME, "me", message);
-    ui_switch_win(window);
+    ui_ev_focus_win(window);
 }
 
 void
@@ -1462,7 +1405,7 @@ ui_room_join(const char * const roomjid, gboolean focus)
 
 
     if (focus) {
-        ui_switch_win(window);
+        ui_ev_focus_win(window);
     } else {
         int num = wins_get_num(window);
         status_bar_active(num);
@@ -1476,7 +1419,7 @@ void
 ui_switch_to_room(const char * const roomjid)
 {
     ProfWin *window = (ProfWin*)wins_get_muc(roomjid);
-    ui_switch_win(window);
+    ui_ev_focus_win(window);
 }
 
 void
@@ -2648,7 +2591,7 @@ ui_handle_room_configuration(const char * const roomjid, DataForm *form)
     ProfMucConfWin *confwin = (ProfMucConfWin*)window;
     assert(confwin->memcheck == PROFCONFWIN_MEMCHECK);
 
-    ui_switch_win(window);
+    ui_ev_focus_win(window);
     ui_show_form(confwin);
 
     win_print(window, '-', NULL, 0, 0, "", "");
@@ -2703,11 +2646,11 @@ ui_handle_room_config_submit_result(const char * const roomjid)
         }
 
         if (muc_window) {
-            ui_switch_win((ProfWin*)muc_window);
+            ui_ev_focus_win((ProfWin*)muc_window);
             win_print(muc_window, '!', NULL, 0, THEME_ROOMINFO, "", "Room configuration successful");
         } else {
             ProfWin *console = wins_get_console();
-            ui_switch_win(console);
+            ui_ev_focus_win(console);
             cons_show("Room configuration successful: %s", roomjid);
         }
     } else {
diff --git a/src/ui/inputwin.c b/src/ui/inputwin.c
index 6cfbde47..caea8ea9 100644
--- a/src/ui/inputwin.c
+++ b/src/ui/inputwin.c
@@ -455,9 +455,7 @@ _go_to_win(int i)
 {
     ProfWin *window = wins_get_by_num(i);
     if (window) {
-        if (!wins_is_current(window)) {
-            ui_ev_focus_win(window);
-        }
+        ui_ev_focus_win(window);
     }
 }
 
@@ -534,14 +532,20 @@ _inp_rl_win0_handler(int count, int key)
 static int
 _inp_rl_altleft_handler(int count, int key)
 {
-    ui_previous_win();
+    ProfWin *window = wins_get_previous();
+    if (window) {
+        ui_ev_focus_win(window);
+    }
     return 0;
 }
 
 static int
 _inp_rl_altright_handler(int count, int key)
 {
-    ui_next_win();
+    ProfWin *window = wins_get_next();
+    if (window) {
+        ui_ev_focus_win(window);
+    }
     return 0;
 }
 
diff --git a/src/ui/ui.h b/src/ui/ui.h
index 529e0f92..6d85c9e8 100644
--- a/src/ui/ui.h
+++ b/src/ui/ui.h
@@ -60,8 +60,6 @@ void ui_redraw(void);
 void ui_resize(void);
 GSList* ui_get_chat_recipients(void);
 void ui_switch_win(ProfWin *window);
-void ui_next_win(void);
-void ui_previous_win(void);
 void ui_sigwinch_handler(int sig);
 
 void ui_gone_secure(const char * const barejid, gboolean trusted);
diff --git a/src/ui/windows.c b/src/ui/windows.c
index 4cc0fef7..7a86403b 100644
--- a/src/ui/windows.c
+++ b/src/ui/windows.c
@@ -53,6 +53,7 @@
 #include "ui/statusbar.h"
 #include "ui/window.h"
 #include "ui/windows.h"
+#include "event/ui_events.h"
 
 static GHashTable *windows;
 static int current;
@@ -661,7 +662,7 @@ wins_swap(int source_win, int target_win)
             }
             if (wins_get_current_num() == source_win) {
                 wins_set_current_by_num(target_win);
-                ui_switch_win(console);
+                ui_ev_focus_win(console);
             }
             return TRUE;
 
@@ -682,7 +683,7 @@ wins_swap(int source_win, int target_win)
                 status_bar_active(source_win);
             }
             if ((wins_get_current_num() == source_win) || (wins_get_current_num() == target_win)) {
-                ui_switch_win(console);
+                ui_ev_focus_win(console);
             }
             return TRUE;
         }
@@ -742,7 +743,7 @@ wins_tidy(void)
         windows = new_windows;
         current = 1;
         ProfWin *console = wins_get_console();
-        ui_switch_win(console);
+        ui_ev_focus_win(console);
         g_list_free(keys);
         return TRUE;
     } else {
diff --git a/tests/ui/stub_ui.c b/tests/ui/stub_ui.c
index 1f812781..cee81872 100644
--- a/tests/ui/stub_ui.c
+++ b/tests/ui/stub_ui.c
@@ -66,9 +66,6 @@ GSList* ui_get_chat_recipients(void)
 
 void ui_switch_win(ProfWin *win) {}
 
-void ui_next_win(void) {}
-void ui_previous_win(void) {}
-
 void ui_gone_secure(const char * const barejid, gboolean trusted) {}
 void ui_gone_insecure(const char * const barejid) {}
 void ui_trust(const char * const barejid) {}