Subject: bug#19482: Changing to big font cause display problem

From: 张海君 <[email-masked]>
Date: Sun, 22 Feb 2015 10:57:05 +0800

> 在 2015年2月21日，19:44，martin rudalics <[email-masked]> 写道：
> 
> `frame-inhibit-implied-resize' is defined only in Emacs 25 so you would
> have to test this with the "nightlies" I mentioned earlier.
> 
> Two more questions:
> 
> - After doing your `set-frame-font' how much of the frame do you see?
>  Do you see the upper left corner, the frame's title?  Do you notice
>  that the frame is larger than your display?  For example, if you can
>  see the frame's title, you should not see the frame's echo area.
> 
> - When you "maximize the frame and then restore its normal size" does
>  the frame have the size it had after the `set-frame-font' or did it
>  change in some way?  What does (window--dump-frame) give here?
> 
> martin

I see the doc of the variable 'frame-inhibit-implied-resize'. The new behavior is not what I want.

I like the following behavior:
When setting font, emacs changes frame's size, but the new size is adjusted to keep the whole frame visible.
This is more useful.  

- After setting font:
There's one frame. Frame's height didn't exceed height of display. So I could see both the frame' title and the echo area.
Frame' width exceeded width of display. I could see the upper left corner, but not the right border of the frame.

- When "maximize the frame and then restore its normal size":
Frame's width changed too much. Frame's height changed slightly(less than height of one text line).

Dumped results:
------------------- maximized -------------------------------
frame pixel: 1392 x 840   cols/lines: 77 x 24   units: 18 x 34
frame text pixel: 1370 x 836   cols/lines: 76 x 24
tool: 0  scroll: 0  fringe: 18  border: 2  right: 0  bottom: 0

#<window 3 on *scratch*>   parent: nil
pixel left: 0   top: 0   size: 1388 x 802   new: 802
char left: 0   top: 0   size: 77 x 23   new: 21
normal: 1.0 x 1.0   new: nil
body pixel: 1370 x 769   char: 76 x 22
width left fringe: 9  left margin: 0  right margin: 0
width right fringe: 9  scroll-bar: 0  divider: 0
height header-line: 0  mode-line: 33  divider: 0

#<window 4 on  *Minibuf-0*>   parent: nil
pixel left: 0   top: 802   size: 1388 x 34   new: 0
char left: 0   top: 23   size: 1388 x 1   new: 1
normal: 1.0 x 1.0   new: ignore
body pixel: 1370 x 34   char: 76 x 1
width left fringe: 9  left margin: 0  right margin: 0
width right fringe: 9  scroll-bar: 0  divider: 0
height header-line: 0  mode-line: 0  divider: 0

------------------- restored ----------------------------
frame pixel: 1554 x 840   cols/lines: 86 x 24   units: 18 x 34
frame text pixel: 1532 x 836   cols/lines: 85 x 24
tool: 0  scroll: 0  fringe: 18  border: 2  right: 0  bottom: 0

#<window 3 on *scratch*>   parent: nil
pixel left: 0   top: 0   size: 1550 x 802   new: 646
char left: 0   top: 0   size: 86 x 23   new: 33
normal: 1.0 x 1.0   new: nil
body pixel: 1532 x 769   char: 85 x 22
width left fringe: 9  left margin: 0  right margin: 0
width right fringe: 9  scroll-bar: 0  divider: 0
height header-line: 0  mode-line: 33  divider: 0

#<window 4 on  *Minibuf-0*>   parent: nil
pixel left: 0   top: 802   size: 1550 x 34   new: 0
char left: 0   top: 23   size: 1550 x 1   new: 1
normal: 1.0 x 1.0   new: ignore
body pixel: 1532 x 34   char: 85 x 1
width left fringe: 9  left margin: 0  right margin: 0
width right fringe: 9  scroll-bar: 0  divider: 0
height header-line: 0  mode-line: 0  divider: 0
---------------------------------------------------------------------

Emacs changes its frame size when setting font, but the frame size may be limited by window manager or something else.
So the frame's real size is not expected as emacs. Here emacs may get the real size and use the real size.