about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2015-11-02 00:29:35 +0000
committerJames Booth <boothj5@gmail.com>2015-11-02 00:29:35 +0000
commit23ada0d38b11b263e6634481ed8877b70939a7f1 (patch)
treeffffcba9fd0252c4d552ae4299425d096fde738f /src
parent0592c7f9e95d2db6dd76c48ebe0f3411267f8191 (diff)
downloadprofani-tty-23ada0d38b11b263e6634481ed8877b70939a7f1.tar.gz
mucwin_subject takes ProfMucWin
Diffstat (limited to 'src')
-rw-r--r--src/event/server_events.c9
-rw-r--r--src/ui/mucwin.c50
-rw-r--r--src/ui/ui.h2
3 files changed, 30 insertions, 31 deletions
diff --git a/src/event/server_events.c b/src/event/server_events.c
index ce0da5b8..8ceb9f22 100644
--- a/src/event/server_events.c
+++ b/src/event/server_events.c
@@ -146,8 +146,9 @@ void
 sv_ev_room_subject(const char *const room, const char *const nick, const char *const subject)
 {
     muc_set_subject(room, subject);
-    if (muc_roster_complete(room)) {
-        mucwin_subject(room, nick, subject);
+    ProfMucWin *mucwin = wins_get_muc(room);
+    if (mucwin && muc_roster_complete(room)) {
+        mucwin_subject(mucwin, nick, subject);
     }
 }
 
@@ -581,8 +582,8 @@ sv_ev_muc_self_online(const char *const room, const char *const nick, gboolean c
         }
 
         char *subject = muc_subject(room);
-        if (subject) {
-            mucwin_subject(room, NULL, subject);
+        if (mucwin && subject) {
+            mucwin_subject(mucwin, NULL, subject);
         }
 
         GList *pending_broadcasts = muc_pending_broadcasts(room);
diff --git a/src/ui/mucwin.c b/src/ui/mucwin.c
index 9b77cf7d..238db218 100644
--- a/src/ui/mucwin.c
+++ b/src/ui/mucwin.c
@@ -463,39 +463,37 @@ mucwin_requires_config(ProfMucWin *mucwin)
 }
 
 void
-mucwin_subject(const char *const roomjid, const char *const nick, const char *const subject)
+mucwin_subject(ProfMucWin *mucwin, const char *const nick, const char *const subject)
 {
-    ProfWin *window = (ProfWin*)wins_get_muc(roomjid);
-    if (window == NULL) {
-        log_error("Received room subject, but no window open for %s.", roomjid);
-    } else {
-        int num = wins_get_num(window);
+    assert(mucwin != NULL);
 
-        if (subject) {
-            if (nick) {
-                win_vprint(window, '!', 0, NULL, NO_EOL, THEME_ROOMINFO, "", "*%s has set the room subject: ", nick);
-                win_vprint(window, '!', 0, NULL, NO_DATE, 0, "", "%s", subject);
-            } else {
-                win_vprint(window, '!', 0, NULL, NO_EOL, THEME_ROOMINFO, "", "Room subject: ");
-                win_vprint(window, '!', 0, NULL, NO_DATE, 0, "", "%s", subject);
-            }
+    ProfWin *window = (ProfWin*)mucwin;
+    int num = wins_get_num(window);
+
+    if (subject) {
+        if (nick) {
+            win_vprint(window, '!', 0, NULL, NO_EOL, THEME_ROOMINFO, "", "*%s has set the room subject: ", nick);
+            win_vprint(window, '!', 0, NULL, NO_DATE, 0, "", "%s", subject);
         } else {
-            if (nick) {
-                win_vprint(window, '!', 0, NULL, 0, THEME_ROOMINFO, "", "*%s has cleared the room subject.", nick);
-            } else {
-                win_vprint(window, '!', 0, NULL, 0, THEME_ROOMINFO, "", "Room subject cleared");
-            }
+            win_vprint(window, '!', 0, NULL, NO_EOL, THEME_ROOMINFO, "", "Room subject: ");
+            win_vprint(window, '!', 0, NULL, NO_DATE, 0, "", "%s", subject);
         }
-
-        // currently in groupchat window
-        if (wins_is_current(window)) {
-            status_bar_active(num);
-
-        // not currently on groupchat window
+    } else {
+        if (nick) {
+            win_vprint(window, '!', 0, NULL, 0, THEME_ROOMINFO, "", "*%s has cleared the room subject.", nick);
         } else {
-            status_bar_active(num);
+            win_vprint(window, '!', 0, NULL, 0, THEME_ROOMINFO, "", "Room subject cleared");
         }
     }
+
+    // currently in groupchat window
+    if (wins_is_current(window)) {
+        status_bar_active(num);
+
+    // not currently on groupchat window
+    } else {
+        status_bar_active(num);
+    }
 }
 
 void
diff --git a/src/ui/ui.h b/src/ui/ui.h
index a85e429f..3ce0fea7 100644
--- a/src/ui/ui.h
+++ b/src/ui/ui.h
@@ -175,7 +175,7 @@ void mucwin_occupant_role_and_affiliation_change(ProfMucWin *mucwin, const char
 void mucwin_roster(ProfMucWin *mucwin, GList *occupants, const char *const presence);
 void mucwin_history(ProfMucWin *mucwin, const char *const nick, GDateTime *timestamp, const char *const message);
 void mucwin_message(ProfMucWin *mucwin, const char *const nick, const char *const message);
-void mucwin_subject(const char *const roomjid, const char *const nick, const char *const subject);
+void mucwin_subject(ProfMucWin *mucwin, const char *const nick, const char *const subject);
 void mucwin_requires_config(ProfMucWin *mucwin);
 void mucwin_info(ProfMucWin *mucwin);
 void mucwin_show_role_list(ProfMucWin *mucwin, muc_role_t role);