marking.c
changeset 25 39d261f589d0
parent 24 5254ab4a5f24
child 26 24ed43268d29
--- a/marking.c	Sat Aug 04 13:35:52 2012 +0200
+++ b/marking.c	Sat Aug 04 14:05:19 2012 +0200
@@ -167,11 +167,23 @@
 	if (!strcmp (cmd, "list")) {
 
 		GSList *mel;
+		guint len = g_slist_length(marked_jids);
 
-		scr_log_print (LPRINT_NORMAL, "Marked jids:");
-		for (mel = marked_jids; mel; mel = mel->next) {
-			char *jid = (char *) mel->data;
-			scr_log_print (LPRINT_NORMAL, " * %s", jid);
+		if (!marked_jids) {
+			scr_log_print (LPRINT_NORMAL, "No marked JIDs.");
+		} else {
+			scr_log_print (LPRINT_NORMAL, "%d marked JIDs:", len);
+			for (mel = marked_jids; mel; mel = mel->next) {
+				char *jid = (char *) mel->data;
+				scr_log_print (LPRINT_NORMAL, " * %s", jid);
+			}
+			// Smartly set the status flag if we have more marks than the log
+			// window height.
+			if (len + 1 > 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);
+			}
 		}
 
 	} else if (!strcmp (cmd, "clear")) {
@@ -188,7 +200,7 @@
 		char *format = args[1];
 
 		if (!format)
-			scr_log_print (LPRINT_NORMAL, "You must specify action to do with marked jids");
+			scr_log_print (LPRINT_NORMAL, "You must specify action to do with marked JIDs");
 		else {
 			char     *pos   = format;
 			gboolean  found = FALSE;