Subject: bug#16923: 24.3.50; reression: `set-frame-size' loses mode line

From: martin rudalics <[email-masked]>
Date: Fri, 07 Mar 2014 08:39:30 +0100

>>  > height header-line: 0  mode-line: 14  divider: 0
 >>
 >> Is this in a frame without mode line?
 >
 > This is the frame that I tested the mode-line disappearance for.
 > Isn't that what you had in mind?
 >
 > The frame had a mode line.  I used M-: (fit-frame) twice, which
 > removed the mode line.  I used (window--dump-frame), then reported
 > the contents of buffer *window-frame-dump*.

So the window code calculated 14 pixels for the mode line which
subsequently either got lost in the display engine or was cut off by the
window manager.  It would be still interesting to see a high resolution
screenshot of the lower part of your frame.

A list of things you can try:

(1) You have set frame parameters for right and bottom dividers.  Maybe
     they interfere, so try without them.

(2) Set the `border-width' and/or `internal-border-width' parameter of
     your frame to some number and look whether a border stays visible at
     the bottom of a frame whose window lost its mode line.

(3) Try to enhance `window--dump-frame' in a way that it does not erase
     its buffer and call it several times, immediately before and after
     you ask for a frame size change in `fit-frame'.  Moreover, you could
     add two lines to it with a suitable informatory text to display the
     values returned by

     (w32-frame-rect frame)
     (w32-frame-rect frame t)

     These are Windows specific so I can't include them in the
     `window--dump-frame' version that comes with Emacs.

In any case, if setting `w32-enable-frame-resize-hack' does make a
difference, I doubt that we can really do anything about this.  It looks
like a timing error where Emacs and Windows have different conceptions
about the size of the Emacs frame.  Maybe locally binding
`w32-enable-frame-resize-hack' to nil around the `fit-frame' calls would
help.

martin