X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fjexer%2FTApplication.java;h=b4c53ec3a5ea8899db40c6dbdda283abe85153f7;hb=499fdccfad144aa58869d839d50edb898670626a;hp=4457197caeec733fbea251085b9105e1ec4e9940;hpb=1978ad505e3e45fdff495a6a0869c1c5caddf118;p=nikiroo-utils.git diff --git a/src/jexer/TApplication.java b/src/jexer/TApplication.java index 4457197..b4c53ec 100644 --- a/src/jexer/TApplication.java +++ b/src/jexer/TApplication.java @@ -1431,9 +1431,15 @@ public class TApplication implements Runnable { if (activeWindow != null) { assert (activeWindow.getZ() == 0); - activeWindow.onUnfocus(); activeWindow.setActive(false); activeWindow.setZ(window.getZ()); + + // Unset activeWindow now before unfocus, so that a window + // lifecycle change inside onUnfocus() doesn't call + // switchWindow() and lead to a stack overflow. + TWindow oldActiveWindow = activeWindow; + activeWindow = null; + oldActiveWindow.onUnfocus(); } activeWindow = window; activeWindow.setZ(0);