Subject: Re: bug#38497: 27.0.50; Frame is not rendered when frame-resize-pixelwise it 't

From: Ihor Radchenko <[email-masked]>
Date: Mon, 16 Dec 2019 10:29:56 +0800

> With 'frame-resize-pixelwise' non-nil?

No, frame-resize-pixelwise had its default value (nil).

To avoid confusion, let me recall what I did to reproduce the redrawing issue:

1. Compile emacs with xft cairo and lucid
2. emacs -Q (frame-resize-pixelwise is nil by default)
3. Maximise emacs frame (without this, there is an artefact in the title
   bar, but emacs frame itself is redrawing)
4. M-x menu-bar-mode

> Why should removing the menu bar maximize the frame?  If anything, I'd
> expect the opposite.

I tested several more times. It's not really maximising, but the frame
size definitely changes (sometimes increases, sometimes decreases).
See the attached illustration.

> The title bar there looks normal to me, not doubled.  And how would
> you know in the first place that the title bar was not redrawn?

See the illustration.

>  >> And what happens when you remove the entire
>  >>
>  >>     XtVaSetValues (wmshell,
>  >> 		 XtNbaseWidth, (XtArgVal) base_width,
>  >> 		 XtNbaseHeight, (XtArgVal) base_height,
>  >> 		 XtNwidthInc, (XtArgVal) (frame_resize_pixelwise ? 1 : cw),
>  >> 		 XtNheightInc, (XtArgVal) (frame_resize_pixelwise ? 1 : ch),
>  >> 		 XtNminWidth, (XtArgVal) base_width,
>  >> 		 XtNminHeight, (XtArgVal) base_height,
>  >> 		 NULL);
>  >>
>  >> call?
>  >
>  > When I remove the call, there is still no redrawing. Moreover, without
>  > maximising the frame, when emacs frame is a single frame in a tile
>  > layout, the frame occupies all the space as if frame-resize-pixelwise
>  > was nil
> This must be a misunderstanding.  Among others, it's one purpose of
> 'frame-resize-pixelwise' _non-nil_ to make the frame occupy all the
> space.

Note that in all the tests in that message I had frame-resize-pixelwise
nil. The frame occupied all the space in that scenario because I removed
the code responsible for setting the calculated frame size. 

Best,
Ihor

martin rudalics <[email-masked]> writes:

>  >> You say yours is a tiling window manager: What happens when you manage
>  >> to remove all windows but the Emacs window from display?  This should
>  >> implicitly maximise the frame.  Does it redraw then?
>  >
>  > If I do this, there is a gap below the emacs frame.
>
> With 'frame-resize-pixelwise' non-nil?
>
>  > Invoking M-x menu-bar-mode resizes the frame to actual maximised state
>  > without the gap and the redrawing works.
>
> Why should removing the menu bar maximize the frame?  If anything, I'd
> expect the opposite.
>
>  > However, the very bottom part
>  > of the frame (that's where by title bar is located) is not being
>  > redrawn. It's like all the frame canvas before resizing is shifted up as
>  > much as the height of the menu-bar was without redrawing whatever was
>  > below that size (see the attached).
>
> The title bar there looks normal to me, not doubled.  And how would
> you know in the first place that the title bar was not redrawn?
>
>  >> And what happens when you remove the entire
>  >>
>  >>     XtVaSetValues (wmshell,
>  >> 		 XtNbaseWidth, (XtArgVal) base_width,
>  >> 		 XtNbaseHeight, (XtArgVal) base_height,
>  >> 		 XtNwidthInc, (XtArgVal) (frame_resize_pixelwise ? 1 : cw),
>  >> 		 XtNheightInc, (XtArgVal) (frame_resize_pixelwise ? 1 : ch),
>  >> 		 XtNminWidth, (XtArgVal) base_width,
>  >> 		 XtNminHeight, (XtArgVal) base_height,
>  >> 		 NULL);
>  >>
>  >> call?
>  >
>  > When I remove the call, there is still no redrawing. Moreover, without
>  > maximising the frame, when emacs frame is a single frame in a tile
>  > layout, the frame occupies all the space as if frame-resize-pixelwise
>  > was nil
>
> This must be a misunderstanding.  Among others, it's one purpose of
> 'frame-resize-pixelwise' _non-nil_ to make the frame occupy all the
> space.
>
>  > and M-x menu-bar-mode results in no redrawing.
>
> martin