changeset 329:7c53bf62a2a2

scr_RosterUnreadMessage() uses set_current_buddy()
author Mikael Berthe <mikael@lilotux.net>
date Sun, 17 Jul 2005 21:16:15 +0100
parents 83d129adde03
children a9013124ede6
files mcabber/src/screen.c
diffstat 1 files changed, 22 insertions(+), 34 deletions(-) [+]
line wrap: on
line diff
--- a/mcabber/src/screen.c	Sun Jul 17 19:06:32 2005 +0100
+++ b/mcabber/src/screen.c	Sun Jul 17 21:16:15 2005 +0100
@@ -818,7 +818,8 @@
    * buddy_getstatus() call.
    */
 
-  if (!current_buddy || !newbuddy) return;
+  if (!current_buddy || !newbuddy)  return;
+  if (newbuddy == current_buddy)    return;
 
   prev_st = buddy_getstatus(BUDDATA(current_buddy));
   buddy_setflags(BUDDATA(current_buddy), ROSTER_FLAG_LOCK, FALSE);
@@ -885,44 +886,31 @@
 // message from unread_list.
 void scr_RosterUnreadMessage(int next)
 {
-  enum imstatus prev_st = imstatus_size; // undef
+  gpointer unread_ptr;
+  gpointer refbuddata;
+  gpointer ngroup;
+  GList *nbuddy;
 
-  if (current_buddy) {
-    gpointer unread_ptr;
-    gpointer refbuddata;
-    gpointer ngroup;
-    GList *nbuddy;
+  if (!current_buddy) return;
 
-    if (next) refbuddata = BUDDATA(current_buddy);
-    else      refbuddata = NULL;
+  if (next) refbuddata = BUDDATA(current_buddy);
+  else      refbuddata = NULL;
 
-    unread_ptr = unread_msg(refbuddata);
-    if (!unread_ptr) return;
+  unread_ptr = unread_msg(refbuddata);
+  if (!unread_ptr) return;
 
-    // If buddy is in a folded group, we need to expand it
-    ngroup = buddy_getgroup(unread_ptr);
-    if (buddy_getflags(ngroup) & ROSTER_FLAG_HIDE) {
-      buddy_setflags(ngroup, ROSTER_FLAG_HIDE, FALSE);
-      buddylist_build();
-    }
+  // If buddy is in a folded group, we need to expand it
+  ngroup = buddy_getgroup(unread_ptr);
+  if (buddy_getflags(ngroup) & ROSTER_FLAG_HIDE) {
+    buddy_setflags(ngroup, ROSTER_FLAG_HIDE, FALSE);
+    buddylist_build();
+  }
 
-    nbuddy = g_list_find(buddylist, unread_ptr);
-    if (nbuddy) {
-      prev_st = buddy_getstatus(BUDDATA(current_buddy));
-      buddy_setflags(BUDDATA(current_buddy), ROSTER_FLAG_LOCK, FALSE);
-      current_buddy = nbuddy;
-      if (chatmode)
-        buddy_setflags(BUDDATA(current_buddy), ROSTER_FLAG_LOCK, TRUE);
-      // We should rebuild the buddylist but not everytime
-      // Here we check if we were locking a buddy who is actually offline,
-      // and hide_offline_buddies is TRUE.  In which case we need to rebuild.
-      if (prev_st == offline && buddylist_get_hide_offline_buddies())
-        buddylist_build();
-      update_roster = TRUE;
-
-      if (chatmode) scr_ShowBuddyWindow();
-    } else scr_LogPrint("Error: nbuddy == NULL");
-  }
+  nbuddy = g_list_find(buddylist, unread_ptr);
+  if (nbuddy) {
+    set_current_buddy(nbuddy);
+    if (chatmode) scr_ShowBuddyWindow();
+  } else scr_LogPrint("Error: nbuddy == NULL");
 }
 
 //  scr_ScrollUp()