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

From: martin rudalics <[email-masked]>
Date: Thu, 05 Mar 2015 19:15:36 +0100

> It keeps track of what resize it has done, and when the
 > ConfigureNotify event arrives, it checks to see if it matches its
 > constraints.  See code in Gtk+, gtkwindow.c (it is a mess).
 >
 >> Why does a first resize with an odd size
 >> apparently get through at all?
 >
 > Why shouldn't it?
 >
 >>  Can't Gtk+ intercept thet first request?
 >> And how comes that Gtk+ is apparently not able to intercept the focus in
 >> reqest in the same way?
 >
 > What do you mean by intercept?  Intercept from who?

I have no idea how a resize request issued by the window manager is
handled.  I initially thought that a configure event is issued by the
window manager and passed on to us via Gtk.  Apparently, this is not the
case and the window manager only informs Gtk about the resize request
and Gtk takes the appropriate measures.  As far as focus requests are
concerned I don't understand why Gtk doesn't treat them like resize
requests.

 >> BTW, I never understood the following two comments in gtkutil.c:
 >>
 >>    /* Must use GTK routines here, otherwise GTK resets the size hints
 >>       to its own defaults.  */
 >>
 >> and
 >>
 >>        /* Don't set hints when maximized or fullscreen.  Apparently KWin
 >> and
 >>           Gtk3 don't get along and the frame shrinks (!).
 >>
 >> How could that possibly work?
 >

 > Fine so far.  The hints specify things like resize increments which
 > are the character size, i.e. you can only resize one full row at the
 > time (at least when that comment was made).  If you have a fullscreen
 > frame, and the font changes, in principle the hints should change.
 > But a change leads to a war between KWin and Gtk+ regarding who shall
 > control the size of the frame.  So we don't change hints, we leave the
 > old in place.

So if Emacs starts with a maximized frame we don't set any hints?

Apparently no such measure is needed for fullheight/-width frames.

 > I.e. make sure the window manager and Gtk+ have the same hints, but
 > don't change them when fullscreen because Gtk+ and KWin implements
 > enforcements of hints differently.  Gtk+ and the window manager still
 > has our last non-fullscreen hints.

With the according base height and width.  I always thought these should
reflect our current sizes.  Does the fullscreen status suspend that
temporarily?

martin