Subject: Re: bug#36250: Allow Emacs to be resized arbitrarily

From: Konstantin Kharlamov <[email-masked]>
Date: Mon, 17 Jun 2019 11:27:42 +0300

On Пн, июн 17, 2019 at 10:21, martin rudalics <[email-masked]> 
wrote:
>  > Unconstrained resize of Emacs is widely tested, e.g. I've been 
> using
> > for years Emacs on i3wm, which just ignores the property, thus
> > resizes Emacs arbitrarily. Also: I don't touch in this patch
> > `frame_resize_pixelwise` variable, because it's used for something
> > else; in particular, setting this variable had no influence on the
> > problem.
> 
> Why do you think that 'frame_resize_pixelwise' is used for something
> else?  gtkutil.c uses it to assign the increments as
> 
>   size_hints.width_inc = frame_resize_pixelwise ? 1 : 
> FRAME_COLUMN_WIDTH (f);
>   size_hints.height_inc = frame_resize_pixelwise ? 1 : 
> FRAME_LINE_HEIGHT (f);
> 
> > 1: https://bugs.kde.org/show_bug.cgi?id=408746#c8
> > 2: https://github.com/kwin-scripts/kwin-tiling/issues/161
> 
> There Martin Flöser says on 2019-06-16
> 
> > Given the resize increment provided by emacs (8x17) it is impossible
> > to fullscreens the window with the used resolution. 1326 doesn't
> > divide by 8 and 681 doesn't divide by 17.
> 
> so it appears that you did _not_ set 'frame-resize-pixelwise' since
> otherwise the 8 x 17 wouldn't be there.  Can you please clarify.
> 
> If setting 'frame-resize-pixelwise' does not work as intended, we
> apparently fail to set the increments in due time.  But then this is
> to my knowledge the first time this happens since we introduced that
> variable and we certainly have to fix that.  So if it does not work
> for some reason, please use GDB with a checkpoint at these assignments
> and tell us whether frame_resize_pixelwise really wasn't set properly.

 From cursory reading of the code, frame_resize_pixelwise is only used 
on window creation. Either way, you can easily reproduce it the 
following way:

1. Evaluate in Emacs (setq frame-resize-pixelwise t)
2. Execute `xprop | grep "program specified resize increment"`

You will see something like "program specified resize increment: 7 by 
15"; both 7 and 15 are certainly bigger than 1 :)