summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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) {