summaryrefslogtreecommitdiff
path: root/src/xfns.c
diff options
context:
space:
mode:
authorPo Lu <luangruo@yahoo.com>2022-11-16 11:19:20 +0800
committerPo Lu <luangruo@yahoo.com>2022-11-16 11:19:20 +0800
commit690f7ac86ad9a9d714b1107d05c5e856a43bb18d (patch)
tree0d10531953e9a3cffb92f1312fb4905a8fd0f897 /src/xfns.c
parent0600065ff276d5c55c3ff2f466dfbce74586164f (diff)
downloademacs-690f7ac86ad9a9d714b1107d05c5e856a43bb18d.tar.gz
Fix calculation of tab bar lines during automatic height adjustment
* src/haikufns.c (haiku_change_tab_bar_height): * src/nsfns.m (ns_change_tab_bar_height): * src/pgtkfns.c (pgtk_change_tab_bar_height): * src/w32fns.c (w32_change_tab_bar_height): * src/xfns.c (x_change_tab_bar_height): Do not round tab bar height up. (bug#59285, bug#59271)
Diffstat (limited to 'src/xfns.c')
-rw-r--r--src/xfns.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/xfns.c b/src/xfns.c
index 6bd613ba692..8ee26d713aa 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -1750,10 +1750,19 @@ x_set_tab_bar_lines (struct frame *f, Lisp_Object value, Lisp_Object oldval)
void
x_change_tab_bar_height (struct frame *f, int height)
{
- int unit = FRAME_LINE_HEIGHT (f);
- int old_height = FRAME_TAB_BAR_HEIGHT (f);
- int lines = (height + unit - 1) / unit;
- Lisp_Object fullscreen = get_frame_param (f, Qfullscreen);
+ int unit, old_height, lines;
+ Lisp_Object fullscreen;
+
+ unit = FRAME_LINE_HEIGHT (f);
+ old_height = FRAME_TAB_BAR_HEIGHT (f);
+ fullscreen = get_frame_param (f, Qfullscreen);
+
+ /* This differs from the tool bar code in that the tab bar height is
+ not rounded up. Otherwise, if redisplay_tab_bar decides to grow
+ the tab bar by even 1 pixel, FRAME_TAB_BAR_LINES will be changed,
+ leading to the tab bar height being incorrectly set upon the next
+ call to x_set_font. (bug#59285) */
+ lines = height / unit;
/* Make sure we redisplay all windows in this frame. */
fset_redisplay (f);