diff options
| -rw-r--r-- | src/frame.c | 3 | ||||
| -rw-r--r-- | src/xdisp.c | 18 |
2 files changed, 11 insertions, 10 deletions
diff --git a/src/frame.c b/src/frame.c index d0f653fc762..5e1e2f19906 100644 --- a/src/frame.c +++ b/src/frame.c @@ -2156,9 +2156,6 @@ If omitted, FRAME defaults to the currently selected frame. */) #endif } - /* Make menu bar update for the Buffers and Frames menus. */ - windows_or_buffers_changed = 17; - return Qnil; } diff --git a/src/xdisp.c b/src/xdisp.c index e59934d2d5a..b0ff627c70e 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -13336,7 +13336,7 @@ overlay_arrow_in_current_buffer_p (void) has changed. */ static bool -overlay_arrows_changed_p (void) +overlay_arrows_changed_p (bool set_redisplay) { Lisp_Object vlist; @@ -13356,7 +13356,12 @@ overlay_arrows_changed_p (void) Fget (var, Qlast_arrow_position)) || ! (pstr = overlay_arrow_string_or_property (var), EQ (pstr, Fget (var, Qlast_arrow_string)))) - return true; + { + if (set_redisplay) + bset_redisplay (XMARKER (val)->buffer); + else + return true; + } } return false; } @@ -13781,10 +13786,9 @@ redisplay_internal (void) /* If specs for an arrow have changed, do thorough redisplay to ensure we remove any arrow that should no longer exist. */ - if (overlay_arrows_changed_p ()) - /* Apparently, this is the only case where we update other windows, - without updating other mode-lines. */ - windows_or_buffers_changed = 49; + /* Apparently, this is the only case where we update other windows, + without updating other mode-lines. */ + overlay_arrows_changed_p (true); consider_all_windows_p = (update_mode_lines || windows_or_buffers_changed); @@ -18282,7 +18286,7 @@ try_window_id (struct window *w) /* Can't use this if overlay arrow position and/or string have changed. */ - if (overlay_arrows_changed_p ()) + if (overlay_arrows_changed_p (false)) GIVE_UP (12); /* When word-wrap is on, adding a space to the first word of a |
