summary refs log tree commit diff
diff options
context:
space:
mode:
authorC. McEnroe2020-04-19 21:13:02 -0400
committerC. McEnroe2020-04-19 21:13:02 -0400
commit2f5ff45db0d7114524b579e8e0c8bf7e5752b185 (patch)
tree17f106e5fa70fc3a6c48c730ce511b5f59b1eedf
parent98cbb44c0ddd4ef83188ad4d1228b6d13aee83c7 (diff)
Save last user-selected window to switch back to from M-a
-rw-r--r--ui.c13
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);
 	}
 }