comparison mcabber/src/screen.c @ 236:72fd1273f2b7

[/trunk] Changeset 249 by mikael * Update TODO * Add /roster parameters "unread_first" and "unread_next" * Add Ctrl-q as a shortcut for "/roster unread_next" * Update Documentation (ctrl-q + unread_*) * Update ChangeLog
author mikael
date Fri, 10 Jun 2005 19:03:06 +0000
parents 9a6ba4b38e63
children 8e30b2bb380e
comparison
equal deleted inserted replaced
235:f7f07794d2df 236:72fd1273f2b7
839 839
840 if (chatmode) 840 if (chatmode)
841 scr_ShowBuddyWindow(); 841 scr_ShowBuddyWindow();
842 } 842 }
843 843
844 // scr_RosterUnreadMessage(next)
845 // Go to a new message. If next is not null, try to go to the next new
846 // message. If it is not possible or if next is NULL, go to the first new
847 // message from unread_list.
848 void scr_RosterUnreadMessage(int next)
849 {
850 enum imstatus prev_st = imstatus_size; // undef
851
852 if (current_buddy) {
853 gpointer unread_ptr;
854 gpointer refbuddata;
855 gpointer ngroup;
856 GList *nbuddy;
857
858 if (next) refbuddata = BUDDATA(current_buddy);
859 else refbuddata = NULL;
860
861 unread_ptr = unread_msg(refbuddata);
862 if (!unread_ptr) return;
863
864 // If buddy is in a folded group, we need to expand it
865 ngroup = buddy_getgroup(unread_ptr);
866 if (buddy_getflags(ngroup) & ROSTER_FLAG_HIDE) {
867 buddy_setflags(ngroup, ROSTER_FLAG_HIDE, FALSE);
868 buddylist_build();
869 }
870
871 nbuddy = g_list_find(buddylist, unread_ptr);
872 if (nbuddy) {
873 prev_st = buddy_getstatus(BUDDATA(current_buddy));
874 buddy_setflags(BUDDATA(current_buddy), ROSTER_FLAG_LOCK, FALSE);
875 current_buddy = nbuddy;
876 if (chatmode)
877 buddy_setflags(BUDDATA(current_buddy), ROSTER_FLAG_LOCK, TRUE);
878 // We should rebuild the buddylist but not everytime
879 // Here we check if we were locking a buddy who is actually offline,
880 // and hide_offline_buddies is TRUE. In which case we need to rebuild.
881 if (prev_st == offline && buddylist_get_hide_offline_buddies())
882 buddylist_build();
883 update_roster = TRUE;
884
885 if (chatmode) scr_ShowBuddyWindow();
886 } else scr_LogPrint("Error: nbuddy == NULL");
887 }
888 }
889
844 // scr_ScrollUp() 890 // scr_ScrollUp()
845 // Scroll up the current buddy window, half a screen. 891 // Scroll up the current buddy window, half a screen.
846 void scr_ScrollUp(void) 892 void scr_ScrollUp(void)
847 { 893 {
848 const gchar *jid; 894 const gchar *jid;
1408 break; 1454 break;
1409 case 14: // Ctrl-n 1455 case 14: // Ctrl-n
1410 scr_ScrollDown(); 1456 scr_ScrollDown();
1411 break; 1457 break;
1412 case 17: // Ctrl-q 1458 case 17: // Ctrl-q
1413 // scr_jump_next_new_message(); 1459 scr_RosterUnreadMessage(1); // next unread message
1414 break; 1460 break;
1415 case 20: // Ctrl-t 1461 case 20: // Ctrl-t
1416 readline_transpose_chars(); 1462 readline_transpose_chars();
1417 break; 1463 break;
1418 case 23: // Ctrl-w 1464 case 23: // Ctrl-w