Mercurial > ~mikael > mcabber > hg
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 |