Subject: bug#37667: 27.0.50; Tab Bar display problems with more than 5 tabs

From: Eli Zaretskii <[email-masked]>
Date: Tue, 29 Oct 2019 14:01:05 +0200

> From: Juri Linkov <[email-masked]>
> Cc: [email-masked]
> Date: Tue, 29 Oct 2019 00:38:19 +0200
> 
> I'm still trying to understand why truncation flags are not set in the tab-line.
> Test case:
> 
> 0. emacs -Q
> 1. M-x global-tab-line-mode RET
> 2. C-x b 01234567890123456789012345678901234567890123456789 RET
>    more buffers with long names might be needed
>    to cause the tab-line truncation
> 
> 3. M-x dump-glyph-row RET
> 
> shows no truncation:
> 
> Row     Start       End Used oE><\CTZFesm     X    Y    W    H    V    A    P
> ==============================================================================
>   0         0         0  111 110000000000     0    0  677   16    0   12    9
> 
> i.e. the columns '>' ('row->truncated_on_right_p')
> and '<' ('row->truncated_on_right_p') both have values '0'.
> 
> Is this a bug?  Or maybe there is another way to detect tab-line truncation
> in the glyph matrix?

These flags are reset because display_mode_line forcibly resets them:

  it.glyph_row->full_width_p = true;
  it.glyph_row->continued_p = false;
  it.glyph_row->truncated_on_left_p = false;
  it.glyph_row->truncated_on_right_p = false;

I think you will find that before the last two lines are executed, the
truncated_on_right_p flag is set for the tab-line in your example.

I think we need to make a change there to not reset the last 2 flags
when we are displaying the tab-line.  (The full_width_p flag should
still be set, because we don't want margin areas on the tab-line.)