diff options
author | C. McEnroe | 2020-04-19 21:13:02 -0400 |
---|---|---|
committer | C. McEnroe | 2020-04-19 21:13:02 -0400 |
commit | 2f5ff45db0d7114524b579e8e0c8bf7e5752b185 (patch) | |
tree | 17f106e5fa70fc3a6c48c730ce511b5f59b1eedf | |
parent | 98cbb44c0ddd4ef83188ad4d1228b6d13aee83c7 (diff) |
Save last user-selected window to switch back to from M-a
-rw-r--r-- | ui.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/ui.c b/ui.c index 4435a52..53e4a19 100644 --- a/ui.c +++ b/ui.c @@ -102,6 +102,7 @@ static struct { uint len; uint show; uint swap; + uint user; } windows; static uint windowPush(struct Window *window) { @@ -825,6 +826,7 @@ static void windowShow(uint num) { touchwin(windows.ptrs[num]->pad); windows.swap = windows.show; windows.show = num; + windows.user = num; mark(windows.ptrs[windows.swap]); unmark(windows.ptrs[windows.show]); inputUpdate(); @@ -877,10 +879,6 @@ static void toggleIgnore(struct Window *window) { } static void showAuto(void) { - static uint swap; - 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) { @@ -896,14 +894,15 @@ static void showAuto(void) { numWarm = num; } } + uint user = windows.user; if (minHot < UINT_MAX) { windowShow(numHot); - windows.swap = swap; + windows.user = user; } else if (minWarm < UINT_MAX) { windowShow(numWarm); - windows.swap = swap; + windows.user = user; } else { - windowShow(windows.swap); + windowShow(user); } } |