From 6333b632240cddaa9d59bfc0722d68b045e827d0 Mon Sep 17 00:00:00 2001 From: "C. McEnroe" Date: Thu, 2 Apr 2020 10:47:17 -0400 Subject: [PATCH] Switch to windows with ascending unread counts on M-a --- ui.c | 29 ++++++++++++++++++++--------- 1 file 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 #include #include +#include #include #include #include @@ -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) {