# HG changeset patch # User mikael # Date 1114462583 0 # Node ID cfd3df636d5fd95bab745defa7428a999560db56 # Parent d7fbd5293385cbd9b7b516333054a0d6d1c9692c [/trunk] Changeset 133 by mikael * Small optimization. diff -r d7fbd5293385 -r cfd3df636d5f mcabber/src/commands.c --- a/mcabber/src/commands.c Mon Apr 25 20:34:59 2005 +0000 +++ b/mcabber/src/commands.c Mon Apr 25 20:56:23 2005 +0000 @@ -209,12 +209,12 @@ scr_RosterBottom(); scr_DrawRoster(); } else if (!strcasecmp(arg, "hide_offline")) { - buddylist_hide_offline_buddies(TRUE); + buddylist_set_hide_offline_buddies(TRUE); if (current_buddy) buddylist_build(); scr_DrawRoster(); } else if (!strcasecmp(arg, "show_offline")) { - buddylist_hide_offline_buddies(FALSE); + buddylist_set_hide_offline_buddies(FALSE); if (current_buddy) buddylist_build(); scr_DrawRoster(); diff -r d7fbd5293385 -r cfd3df636d5f mcabber/src/hooks.c --- a/mcabber/src/hooks.c Mon Apr 25 20:34:59 2005 +0000 +++ b/mcabber/src/hooks.c Mon Apr 25 20:56:23 2005 +0000 @@ -48,6 +48,8 @@ scr_LogPrint("Buddy status has changed: [%c>%c] <%s>", imstatus2char[roster_getstatus(jid)], imstatus2char[status], jid); roster_setstatus(jid, status); + buddylist_build(); + scr_DrawRoster(); hlog_write_status(jid, 0, status); } diff -r d7fbd5293385 -r cfd3df636d5f mcabber/src/jabglue.c --- a/mcabber/src/jabglue.c Mon Apr 25 20:34:59 2005 +0000 +++ b/mcabber/src/jabglue.c Mon Apr 25 20:56:23 2005 +0000 @@ -677,8 +677,6 @@ if (ust != roster_getstatus(r)) hk_statuschange(r, 0, ust); free(r); - buddylist_build(); - scr_DrawRoster(); /* if (x = xmlnode_get_tag(packet->x, "status")) if (p = xmlnode_get_data(x)) diff -r d7fbd5293385 -r cfd3df636d5f mcabber/src/main.c --- a/mcabber/src/main.c Mon Apr 25 20:34:59 2005 +0000 +++ b/mcabber/src/main.c Mon Apr 25 20:56:23 2005 +0000 @@ -183,7 +183,7 @@ optstring = cfg_read("hide_offline_buddies"); if (optstring && (atoi(optstring) > 0)) - buddylist_hide_offline_buddies(TRUE); + buddylist_set_hide_offline_buddies(TRUE); /* Initialize commands system */ cmd_init(); diff -r d7fbd5293385 -r cfd3df636d5f mcabber/src/roster.c --- a/mcabber/src/roster.c Mon Apr 25 20:34:59 2005 +0000 +++ b/mcabber/src/roster.c Mon Apr 25 20:56:23 2005 +0000 @@ -273,9 +273,9 @@ /* ### BuddyList functions ### */ -// buddylist_hide_offline_buddies(hide) +// buddylist_set_hide_offline_buddies(hide) // "hide" values: 1=hide 0=show_all -1=invert -void buddylist_hide_offline_buddies(int hide) +void buddylist_set_hide_offline_buddies(int hide) { if (hide < 0) // NEG (invert) hide_offline_buddies = !hide_offline_buddies; @@ -285,6 +285,11 @@ hide_offline_buddies = 1; } +inline int buddylist_get_hide_offline_buddies(void) +{ + return hide_offline_buddies; +} + // buddylist_build() // Creates the buddylist from the roster entries. void buddylist_build(void) diff -r d7fbd5293385 -r cfd3df636d5f mcabber/src/roster.h --- a/mcabber/src/roster.h Mon Apr 25 20:34:59 2005 +0000 +++ b/mcabber/src/roster.h Mon Apr 25 20:56:23 2005 +0000 @@ -44,7 +44,8 @@ enum imstatus roster_getstatus(const char *jid); guint roster_gettype(const char *jid); -void buddylist_hide_offline_buddies(int hide); +void buddylist_set_hide_offline_buddies(int hide); +inline int buddylist_get_hide_offline_buddies(void); void buddy_hide_group(gpointer rosterdata, int hide); void buddylist_build(void); const char *buddy_getjid(gpointer rosterdata); diff -r d7fbd5293385 -r cfd3df636d5f mcabber/src/screen.c --- a/mcabber/src/screen.c Mon Apr 25 20:34:59 2005 +0000 +++ b/mcabber/src/screen.c Mon Apr 25 20:56:23 2005 +0000 @@ -577,7 +577,8 @@ buddy_setflags(BUDDATA(current_buddy), ROSTER_FLAG_LOCK, TRUE); // We should rebuild the buddylist but not everytime - if (current_buddy && prev_st == offline) + if (current_buddy && prev_st == offline && + buddylist_get_hide_offline_buddies()) buddylist_build(); if (chatmode) scr_ShowBuddyWindow(); @@ -597,7 +598,8 @@ buddy_setflags(BUDDATA(current_buddy), ROSTER_FLAG_LOCK, TRUE); // We should rebuild the buddylist but not everytime - if (current_buddy && prev_st == offline) + if (current_buddy && prev_st == offline && + buddylist_get_hide_offline_buddies()) buddylist_build(); if (chatmode) scr_ShowBuddyWindow(); @@ -608,14 +610,14 @@ enum imstatus prev_st; if (current_buddy) { - prev_st = buddy_getstatus(BUDDATA(current_buddy)); if (g_list_previous(current_buddy)) { + prev_st = buddy_getstatus(BUDDATA(current_buddy)); buddy_setflags(BUDDATA(current_buddy), ROSTER_FLAG_LOCK, FALSE); current_buddy = g_list_previous(current_buddy); if (chatmode) buddy_setflags(BUDDATA(current_buddy), ROSTER_FLAG_LOCK, TRUE); // We should rebuild the buddylist but not everytime - if (prev_st == offline) + if (prev_st == offline && buddylist_get_hide_offline_buddies()) buddylist_build(); scr_DrawRoster(); } @@ -630,14 +632,14 @@ enum imstatus prev_st; if (current_buddy) { - prev_st = buddy_getstatus(BUDDATA(current_buddy)); if (g_list_next(current_buddy)) { + prev_st = buddy_getstatus(BUDDATA(current_buddy)); buddy_setflags(BUDDATA(current_buddy), ROSTER_FLAG_LOCK, FALSE); current_buddy = g_list_next(current_buddy); if (chatmode) buddy_setflags(BUDDATA(current_buddy), ROSTER_FLAG_LOCK, TRUE); // We should rebuild the buddylist but not everytime - if (prev_st == offline) + if (prev_st == offline && buddylist_get_hide_offline_buddies()) buddylist_build(); scr_DrawRoster(); }