# HG changeset patch # User Mikael Berthe # Date 1270300635 -7200 # Node ID a15aa7a218ec2e16c9f94f23e69453df3934be34 # Parent a98004eb58cdce36a19b85250b3338c89fbe0e55 [lastmsg] Add the status window message flag when /lastmsg output is long diff -r a98004eb58cd -r a15aa7a218ec lastmsg/lastmsg.c --- a/lastmsg/lastmsg.c Sat Apr 03 14:59:33 2010 +0200 +++ b/lastmsg/lastmsg.c Sat Apr 03 15:17:15 2010 +0200 @@ -26,7 +26,7 @@ #include #include #include -#include +#include static void lastmsg_init(void); static void lastmsg_uninit(void); @@ -56,6 +56,7 @@ static void do_lastmsg(char *args) { GSList *li; + guint count = 0; if (!lastmsg_list) { scr_log_print(LPRINT_NORMAL, "You have no new message."); @@ -70,9 +71,15 @@ g_free(lastm_item->mucname); g_free(lastm_item->nickname); g_free(lastm_item->msg); + count++; } g_slist_free(lastmsg_list); lastmsg_list = NULL; + if (count*2 > scr_getlogwinheight()) { + scr_setmsgflag_if_needed(SPECIAL_BUFFER_STATUS_ID, TRUE); + scr_setattentionflag_if_needed(SPECIAL_BUFFER_STATUS_ID, TRUE, + ROSTER_UI_PRIO_STATUS_WIN_MESSAGE, prio_max); + } } static guint last_message_hh(const gchar *hookname, hk_arg_t *args, @@ -148,6 +155,7 @@ /* Add command */ cmd_add("lastmsg", "Display last missed messages", 0, 0, do_lastmsg, NULL); + /* Add hook handlers */ last_message_hid = hk_add_handler(last_message_hh, HOOK_POST_MESSAGE_IN, G_PRIORITY_DEFAULT_IDLE, NULL); last_status_hid = hk_add_handler(last_status_hh, HOOK_MY_STATUS_CHANGE, @@ -161,9 +169,11 @@ /* Unregister command */ cmd_del("lastmsg"); + /* Unregister handlers */ hk_del_handler(HOOK_POST_MESSAGE_IN, last_message_hid); hk_del_handler(HOOK_MY_STATUS_CHANGE, last_status_hid); + /* Clean up data */ for (li = lastmsg_list; li ; li = g_slist_next(li)) { struct lastm_T *lastm_item = li->data; g_free(lastm_item->mucname);