about 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) {
021-02-07 22:24:20 -0500'>2021-02-07Adjust brightness by smaller incrementsJune McEnroe 2021-02-07Fix cwm window cycling, move big by defaultJune McEnroe 2021-02-07Use class names for Foreground, Background, BorderColorJune McEnroe 2021-02-07Add simple battery status and clock to xsessionJune McEnroe 2021-02-07Set cursor theme and sizeJune McEnroe 2021-02-07Use scrot for up -s if no screencaptureJune McEnroe 2021-02-07Enable mouse acceleration in XJune McEnroe 2021-02-07Set colours for Xt and cwmJune McEnroe 2021-02-07Set urgency on bell in xtermJune McEnroe 2021-02-07Add bindings for brightness controlJune McEnroe 2021-02-07Set X key repeat rateJune McEnroe 2021-02-07Bump font size to 12June McEnroe 2021-02-07Fully configure and rebind cwmJune McEnroe 2021-02-07Add BintiJune McEnroe 2021-02-07Finish configuring xtermJune McEnroe 2021-02-06Enable tapping, reverse scroll, set scaling in wsconsctlJune McEnroe 2021-02-06Set root window to black on purple snowJune McEnroe 2021-02-06Add xmodmap configurationJune McEnroe 2021-02-06Add initial OpenBSD X configurationJune McEnroe 2021-02-06Add xterm output to schemeJune McEnroe