Switch to windows with ascending unread counts on M-a
parent
6e7613c1ce
commit
6333b63224
29
ui.c
29
ui.c
|
@ -21,6 +21,7 @@
|
||||||
#include <curses.h>
|
#include <curses.h>
|
||||||
#include <err.h>
|
#include <err.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
#include <limits.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
@ -848,19 +849,29 @@ static void showAuto(void) {
|
||||||
if (windows.swap != swap) {
|
if (windows.swap != swap) {
|
||||||
swap = windows.show;
|
swap = windows.show;
|
||||||
}
|
}
|
||||||
|
uint minHot = UINT_MAX, numHot;
|
||||||
|
uint minWarm = UINT_MAX, numWarm;
|
||||||
for (uint num = 0; num < windows.len; ++num) {
|
for (uint num = 0; num < windows.len; ++num) {
|
||||||
if (windows.ptrs[num]->heat < Hot) continue;
|
if (windows.ptrs[num]->heat >= Hot) {
|
||||||
windowShow(num);
|
if (windows.ptrs[num]->unreadWarm >= minHot) continue;
|
||||||
windows.swap = swap;
|
minHot = windows.ptrs[num]->unreadWarm;
|
||||||
return;
|
numHot = num;
|
||||||
}
|
}
|
||||||
for (uint num = 0; num < windows.len; ++num) {
|
if (windows.ptrs[num]->heat >= Warm) {
|
||||||
if (windows.ptrs[num]->heat < Warm) continue;
|
if (windows.ptrs[num]->unreadWarm >= minWarm) continue;
|
||||||
windowShow(num);
|
minWarm = windows.ptrs[num]->unreadWarm;
|
||||||
windows.swap = swap;
|
numWarm = num;
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if (minHot < UINT_MAX) {
|
||||||
|
windowShow(numHot);
|
||||||
|
windows.swap = swap;
|
||||||
|
} else if (minWarm < UINT_MAX) {
|
||||||
|
windowShow(numWarm);
|
||||||
|
windows.swap = swap;
|
||||||
|
} else {
|
||||||
windowShow(windows.swap);
|
windowShow(windows.swap);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void keyCode(int code) {
|
static void keyCode(int code) {
|
||||||
|
|
Loading…
Reference in New Issue