Subject: Re: bug#46827: Broken initial size of GTK3 frame

From: Juri Linkov <[email-masked]>
Date: Mon, 03 May 2021 20:01:47 +0300

> Please try it and tell me whether the frame size history (hoperemains empty
> now.

Tried it, and no flashes anymore, thanks!

Here is the frame size history:

  Frame size history of #<frame  *Minibuf-1* 0x55555f0f7a58>
  x_make_frame_visible
  set_window_configuration (4), MS=80x85 IH IV

> What apparently happens is the following: x_set_tab_bar_lines (why?)
> gets called all the time with a VALUE of 1 and translates that to
> FRAME_LINE_HEIGHT (f) when calling x_change_tab_bar_height.  So the
> latter sets FRAME_TAB_BAR_HEIGHT (f) to FRAME_LINE_HEIGHT (f) which is
> two pixels less than the height needed to display the tab bar.  This
> means we enlarge and move upwards the root window by two pixels and
> later shrink and move it down when redisplay has calculated the new
> size.
>
> The attached patch tries to fix that.  Note that a simple
>
> nlines != olines
>
> is not sufficient since the tab bar occupies 2 lines while VALUE is 1.
>
> Maybe we should do a similar thing for the tool and/or menu bars (but I
> recall that some builds do process a VALUE > 1 specially for them).