summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2020-04-02 10:47:17 -0400
committerJune McEnroe <june@causal.agency>2020-04-02 10:47:17 -0400
commit6333b632240cddaa9d59bfc0722d68b045e827d0 (patch)
treed6fb68c10763142da0696fb2baf8167237347d6a
parentMention running ldconfig after editing /etc/ld.so.conf (diff)
downloadcatgirl-6333b632240cddaa9d59bfc0722d68b045e827d0.tar.gz
catgirl-6333b632240cddaa9d59bfc0722d68b045e827d0.zip
Switch to windows with ascending unread counts on M-a
Diffstat (limited to '')
-rw-r--r--ui.c29
1 files changed, 20 insertions, 9 deletions
diff --git a/ui.c b/ui.c
index 3e9b95d..023de21 100644
--- a/ui.c
+++ b/ui.c
@@ -21,6 +21,7 @@
 #include <curses.h>
 #include <err.h>
 #include <errno.h>
+#include <limits.h>
 #include <signal.h>
 #include <stdarg.h>
 #include <stdbool.h>
@@ -848,19 +849,29 @@ static void showAuto(void) {
 	if (windows.swap != swap) {
 		swap = windows.show;
 	}
+	uint minHot = UINT_MAX, numHot;
+	uint minWarm = UINT_MAX, numWarm;
 	for (uint num = 0; num < windows.len; ++num) {
-		if (windows.ptrs[num]->heat < Hot) continue;
-		windowShow(num);
-		windows.swap = swap;
-		return;
+		if (windows.ptrs[num]->heat >= Hot) {
+			if (windows.ptrs[num]->unreadWarm >= minHot) continue;
+			minHot = windows.ptrs[num]->unreadWarm;
+			numHot = num;
+		}
+		if (windows.ptrs[num]->heat >= Warm) {
+			if (windows.ptrs[num]->unreadWarm >= minWarm) continue;
+			minWarm = windows.ptrs[num]->unreadWarm;
+			numWarm = num;
+		}
 	}
-	for (uint num = 0; num < windows.len; ++num) {
-		if (windows.ptrs[num]->heat < Warm) continue;
-		windowShow(num);
+	if (minHot < UINT_MAX) {
+		windowShow(numHot);
 		windows.swap = swap;
-		return;
+	} else if (minWarm < UINT_MAX) {
+		windowShow(numWarm);
+		windows.swap = swap;
+	} else {
+		windowShow(windows.swap);
 	}
-	windowShow(windows.swap);
 }
 
 static void keyCode(int code) {
6&follow=1'>Undef COLOR_ constants in torus.hJune McEnroe 2018-03-05Generate tagsJune McEnroe 2017-10-03Simplify Makefile with pattern ruleJune McEnroe 2017-09-27Remove leading blank linesJune McEnroe 2017-09-27Add merge.c to READMEJune McEnroe 2017-09-03Assert client coords are valid after movementJune McEnroe 2017-09-03Relicense AGPLJune McEnroe 2017-09-01Revert "Add client readOnly mode"June McEnroe 2017-09-01Remove clientRemove call from clientCastJune McEnroe 2017-09-01Add client readOnly modeJune McEnroe 2017-08-31Clean up merge toolJune McEnroe 2017-08-31Choose B for tiles with equal modify timesJune McEnroe 2017-08-31Add quick data file merge toolJune McEnroe 2017-08-30Use only foreground color for selecting spawnJune McEnroe 2017-08-29Add four additional spawnsJune McEnroe 2017-08-28Add respawningJune McEnroe 2017-08-26Move license above includesJune McEnroe 2017-08-26Snapshot metadataJune McEnroe 2017-08-26Add meta.c to READMEJune McEnroe 2017-08-26Use MakefileJune McEnroe