Fix a problem with x_set_tab_bar_lines (Bug#46827)

* src/xfns.c (x_set_tab_bar_lines): Call
x_change_tab_bar_height only if the number of tab bar lines
changed from or to zero (Bug#46827).
* src/xterm.c (x_make_frame_visible): Make frame_size_history
update less noisy by doing it only if the frame wasn't visible
before.
This commit is contained in:
Martin Rudalics 2021-05-04 09:17:11 +02:00
parent 131e874d14
commit 8a4bb6b056
2 changed files with 13 additions and 8 deletions

View file

@ -1608,13 +1608,15 @@ x_set_menu_bar_lines (struct frame *f, Lisp_Object value, Lisp_Object oldval)
/* Set the number of lines used for the tab bar of frame F to VALUE.
VALUE not an integer, or < 0 means set the lines to zero. OLDVAL
is the old number of tab bar lines. This function changes the
is the old number of tab bar lines. This function may change the
height of all windows on frame F to match the new tab bar height.
The frame's height doesn't change. */
The frame's height may change if frame_inhibit_implied_resize was
set accordingly. */
static void
x_set_tab_bar_lines (struct frame *f, Lisp_Object value, Lisp_Object oldval)
{
int olines = FRAME_TAB_BAR_LINES (f);
int nlines;
/* Treat tab bars like menu bars. */
@ -1627,7 +1629,8 @@ x_set_tab_bar_lines (struct frame *f, Lisp_Object value, Lisp_Object oldval)
else
nlines = 0;
x_change_tab_bar_height (f, nlines * FRAME_LINE_HEIGHT (f));
if (nlines != olines && (olines == 0 || nlines == 0))
x_change_tab_bar_height (f, nlines * FRAME_LINE_HEIGHT (f));
}

View file

@ -11823,12 +11823,14 @@ x_make_frame_visible (struct frame *f)
poll_suppress_count = old_poll_suppress_count;
#endif
if (CONSP (frame_size_history))
frame_size_history_plain
(f, build_string ("x_make_frame_visible"));
if (!FRAME_VISIBLE_P (f))
{
if (CONSP (frame_size_history))
frame_size_history_plain
(f, build_string ("x_make_frame_visible"));
if (! FRAME_VISIBLE_P (f))
x_wait_for_event (f, MapNotify);
x_wait_for_event (f, MapNotify);
}
}
}