Subject: bug#19990: 24.4; Bad resizing interaction when WM ignores size hints

From: Yuri D'Elia <[email-masked]>
Date: Wed, 4 Mar 2015 19:53:24 +0100

On 03/04/2015 07:45 PM, martin rudalics wrote:
>  > Using awesomewm you can set "size_hints_honor = false".
>  > With spectrwm there's no setting (the size hints are not honored if the
>  > window is tiled, but are if the window is floating).
>  > Xmonad is pretty similar to awesome in this sense (defaults to honor,
>  > but not honoring is common).
> 
> I still don't understand how you "force the emacs frame to take the
> height of the entire screen".  Do you set the fullscreen frame parameter
> to `fullheight'?

No, the window manager resizes the frame to the screen's height (or an
arbitrary height), ignoring WM size hints. I hope this clarifies. I
never use the fullscreen function (I use the WM own binding for this
purpose).

>  > It does work, but I was wondering if this could be fixed irregardless,
>  > since depending on the setting the hints might be honored or not.
> 
> Do you mean you want hints honored when the frame is floating and not
> honored when the frame is tiled?

Yes.

>  > When I put some debugging code in gtkutil.c:xg_frame_resized, it looks
>  > like two resize events are received when the frame is mapped: one with
>  > the real window size, and a second event with the size rounded-down to
>  > the text size.
> 
> And if you set `frame-resize-pixelwise' to t you get only one resize
> event?

I do.

>  > Again, when the frame is focused, a third resize event is
>  > received with the initial size, which causes the frame to render
>  > correctly. This feels odd.
> 
> What is the "initial size"?  Who sets it?

The first event is sent by the WM (probably with a reconfigure request).

> 
>  > GTK might be trying to resize the window after the first event. In
>  > xg_frame_resized itself it might be necessary to disable the size hints
>  > to prevent that (as done in xg_frame_set_char_size). But I don't have
>  > enough experience with GTK and/or low-level frame handling. I was hoping
>  > for somebody else to chime in.
> 
> In x_wm_set_size_hint we disable size hints for fullscreen and maximized
> frames.  Is it that what you mean with "as done in
> xg_frame_set_char_size"?

Yes. The second/third event I saw while debugging are not coming from
the window manager. I suspect it's GTK trying to reconfigure the window
according to the size hints (and failing).