about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2014-04-13 02:52:25 +0100
committerJames Booth <boothj5@gmail.com>2014-04-13 02:52:25 +0100
commit71180f66d77fdd7db9dc0048fe2993bcbe044c6e (patch)
treee11ae7dbfe095876eb02500d8aa24114c75797c0
parentf332b6681ee245dc781798e12ec0efe6effa34a4 (diff)
downloadprofani-tty-71180f66d77fdd7db9dc0048fe2993bcbe044c6e.tar.gz
Added focus param to ui_room_join, not set for bookmark autojoin
Issue #194
-rw-r--r--src/command/commands.c2
-rw-r--r--src/server_events.c3
-rw-r--r--src/ui/core.c9
-rw-r--r--src/ui/ui.h2
-rw-r--r--tests/test_cmd_join.c8
-rw-r--r--tests/ui/mock_ui.c6
-rw-r--r--tests/ui/mock_ui.h2
7 files changed, 20 insertions, 12 deletions
diff --git a/src/command/commands.c b/src/command/commands.c
index a7deb17a..fd7523fa 100644
--- a/src/command/commands.c
+++ b/src/command/commands.c
@@ -1663,7 +1663,7 @@ cmd_join(gchar **args, struct cmd_help_t help)
     if (!muc_room_is_active(room)) {
         presence_join_room(room, nick, passwd);
     }
-    ui_room_join(room);
+    ui_room_join(room, TRUE);
     muc_remove_invite(room);
 
     jid_destroy(room_arg);
diff --git a/src/server_events.c b/src/server_events.c
index 566d460b..93481b9a 100644
--- a/src/server_events.c
+++ b/src/server_events.c
@@ -502,5 +502,6 @@ handle_autoping_cancel(void)
 void
 handle_bookmark_autojoin(char *jid)
 {
-    ui_room_join(jid);
+    ui_room_join(jid, FALSE);
+    muc_remove_invite(jid);
 }
diff --git a/src/ui/core.c b/src/ui/core.c
index 569425f9..9c7d321f 100644
--- a/src/ui/core.c
+++ b/src/ui/core.c
@@ -1219,7 +1219,7 @@ _ui_outgoing_msg(const char * const from, const char * const to,
 }
 
 static void
-_ui_room_join(char *room)
+_ui_room_join(char *room, gboolean focus)
 {
     ProfWin *window = wins_get_by_recipient(room);
     int num = 0;
@@ -1230,7 +1230,12 @@ _ui_room_join(char *room)
     }
 
     num = wins_get_num(window);
-    ui_switch_win(num);
+
+    if (focus) {
+        ui_switch_win(num);
+    } else {
+        status_bar_active(num);
+    }
 }
 
 static void
diff --git a/src/ui/ui.h b/src/ui/ui.h
index a528b390..e1cbc28f 100644
--- a/src/ui/ui.h
+++ b/src/ui/ui.h
@@ -100,7 +100,7 @@ void (*ui_disconnected)(void);
 void (*ui_recipient_gone)(const char * const barejid);
 void (*ui_outgoing_msg)(const char * const from, const char * const to,
     const char * const message);
-void (*ui_room_join)(char *room);
+void (*ui_room_join)(char *room, gboolean focus);
 void (*ui_room_roster)(const char * const room, GList *roster, const char * const presence);
 void (*ui_room_history)(const char * const room_jid, const char * const nick,
     GTimeVal tv_stamp, const char * const message);
diff --git a/tests/test_cmd_join.c b/tests/test_cmd_join.c
index d07cd5f0..b23515ba 100644
--- a/tests/test_cmd_join.c
+++ b/tests/test_cmd_join.c
@@ -109,7 +109,7 @@ void cmd_join_uses_account_mucservice_when_no_service_specified(void **state)
 
     mock_presence_join_room();
     presence_join_room_expect(expected_room, nick, NULL);
-    ui_room_join_expect(expected_room);
+    ui_room_join_expect(expected_room, TRUE);
 
     gboolean result = cmd_join(args, *help);
     assert_true(result);
@@ -136,7 +136,7 @@ void cmd_join_uses_supplied_nick(void **state)
 
     mock_presence_join_room();
     presence_join_room_expect(room, nick, NULL);
-    ui_room_join_expect(room);
+    ui_room_join_expect(room, TRUE);
 
     gboolean result = cmd_join(args, *help);
     assert_true(result);
@@ -163,7 +163,7 @@ void cmd_join_uses_account_nick_when_not_supplied(void **state)
 
     mock_presence_join_room();
     presence_join_room_expect(room, account_nick, NULL);
-    ui_room_join_expect(room);
+    ui_room_join_expect(room, TRUE);
 
     gboolean result = cmd_join(args, *help);
     assert_true(result);
@@ -193,7 +193,7 @@ void cmd_join_uses_password_when_supplied(void **state)
 
     mock_presence_join_room();
     presence_join_room_expect(expected_room, account_nick, password);
-    ui_room_join_expect(expected_room);
+    ui_room_join_expect(expected_room, TRUE);
 
     gboolean result = cmd_join(args, *help);
     assert_true(result);
diff --git a/tests/ui/mock_ui.c b/tests/ui/mock_ui.c
index 94f8e3c3..16e66436 100644
--- a/tests/ui/mock_ui.c
+++ b/tests/ui/mock_ui.c
@@ -166,9 +166,10 @@ gboolean _mock_ui_current_win_is_otr(void)
 }
 
 static
-void _mock_ui_room_join(char *room)
+void _mock_ui_room_join(char *room, gboolean focus)
 {
     check_expected(room);
+    check_expected(focus);
 }
 
 static
@@ -433,10 +434,11 @@ ui_current_win_is_otr_returns(gboolean result)
 }
 
 void
-ui_room_join_expect(char *room)
+ui_room_join_expect(char *room, gboolean focus)
 {
     ui_room_join = _mock_ui_room_join;
     expect_string(_mock_ui_room_join, room, room);
+    expect_value(_mock_ui_room_join, focus, focus);
 }
 
 void
diff --git a/tests/ui/mock_ui.h b/tests/ui/mock_ui.h
index 5b984615..d16fad48 100644
--- a/tests/ui/mock_ui.h
+++ b/tests/ui/mock_ui.h
@@ -59,7 +59,7 @@ void ui_current_print_line_expect(char *message);
 
 void ui_current_win_is_otr_returns(gboolean result);
 
-void ui_room_join_expect(char *room);
+void ui_room_join_expect(char *room, gboolean focus);
 
 void mock_cons_show_roster(void);
 void cons_show_roster_expect(GSList *list);