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

Previous Next

Package: emacs;

Reported by: Drew Adams <drew.adams <at> oracle.com>

Date: Sun, 2 Mar 2014 20:06:02 UTC

Severity: normal

Tags: moreinfo

Found in version 24.3.50

Done: Lars Ingebrigtsen <larsi <at> gnus.org>

Bug is archived. No further changes may be made.

Full log


Message #77 received at 16923 <at> debbugs.gnu.org (full text, mbox):

From: martin rudalics <rudalics <at> gmx.at>
To: Drew Adams <drew.adams <at> oracle.com>
Cc: 16923 <at> debbugs.gnu.org
Subject: Re: bug#16923: 24.3.50; reression: `set-frame-size' loses mode line
Date: Thu, 06 Mar 2014 18:26:49 +0100
> Looking again, I realize I must have been mistaken in what I said
> earlier today.  It seems now that the mode line disappears only when
> the node does not change (fit-frame is called anyway).  So yes, the
> node text size is the same.
>
> I was pretty sure that the mode line also disappears in some cases
> when moving to a different node.  But I definitely do not see that
> now, so I guess I was mistaken about that.
>
> And yes, the frame always has its borders, including the bottom border.

Once more:

(1) The mode line disappears only when the frame size remains the same.
    Check this please via the arguments you pass (to `set-frame-size' or
    whatever you use).

(2) Everything else is drawn correctly, there's no area with background
    space only, as you claimed earlier.

Is that correct (from your experience, so far)?  You might want to
attach a screenshot.

> Actually, now I can repro it more simply, without using Info.  In my
> setup, if I do M-: (fit-frame) more than once in the same frame, the
> mode line sometimes disappears.  For most buffers/frames, it disappears.
> But not always.  It does not disappear for `list-faces-display', for
> some reason.  (It does disappear for `list-colors-display'.)

Add the following function to your .emacs ...

(defun window--resize-root-window (window delta horizontal ignore pixelwise)
  "Resize root window WINDOW vertically by DELTA lines.
HORIZONTAL non-nil means resize root window WINDOW horizontally
by DELTA columns.

IGNORE non-nil means ignore any restrictions imposed by fixed
size windows, `window-min-height' or `window-min-width' settings.

This function is only called by the frame resizing routines.  It
resizes windows proportionally and never deletes any windows."
  (when (and (windowp window) (numberp delta))
    (let ((pixel-delta
	   (if pixelwise
	       delta
	     (window--size-to-pixel window delta horizontal))))
      (when (window-sizable-p window pixel-delta horizontal ignore t)
	(window--resize-reset (window-frame window) horizontal)
	(window--resize-this-window
	 window pixel-delta horizontal ignore t)
	(window--dump-frame (window-frame window))))))

... and post the contents of the buffer *window-frame-dump* after a
fatal resize operation here (but make sure to not resize any frame again
_before_ getting hold of that buffer's contents!!!).

martin




This bug report was last modified 5 years and 340 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.