From b90ce66d32ede14a9191008096e596f6dfb9a48b Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Thu, 3 May 2018 20:54:25 -0400 Subject: [PATCH] Handle selected_window change in prepare_menu_bars (Bug#31312) * src/xdisp.c (redisplay_internal): Check selected_window after calling prepare_menu_bars, since it can call lisp hooks. --- src/xdisp.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/xdisp.c b/src/xdisp.c index fb6729c36aa..d6aabd06189 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -13924,11 +13924,6 @@ redisplay_internal (void) /* Notice any pending interrupt request to change frame size. */ do_pending_window_change (true); - /* do_pending_window_change could change the selected_window due to - frame resizing which makes the selected window too small. */ - if (WINDOWP (selected_window) && (w = XWINDOW (selected_window)) != sw) - sw = w; - /* Clear frames marked as garbaged. */ clear_garbaged_frames (); @@ -13936,6 +13931,13 @@ redisplay_internal (void) if (NILP (Vmemory_full)) prepare_menu_bars (); + /* do_pending_window_change could change the selected_window due to + frame resizing which makes the selected window too small. + prepare_menu_bars may call lisp hooks and hence also change the + selected_window. */ + if (WINDOWP (selected_window) && (w = XWINDOW (selected_window)) != sw) + sw = w; + reconsider_clip_changes (w); /* In most cases selected window displays current buffer. */ -- 2.39.2