--- 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()