Subject: Re: bug#19869: 25.0.50; default-frame-alist: width versus fullheight

From: martin rudalics <[email-masked]>
Date: Sun, 15 Feb 2015 12:35:52 +0100

> There is some inconsistent behavior when setting the with of new
 > frames depending on whether fullheight is specified:
 >
 >
 > (progn
 >    (set-face-attribute 'default nil :height 175)
 >    (setq default-frame-alist
 >          '((width . 100)
 >            ;; (fullscreen . fullheight)
 >            ))
 >    (frame-width (make-frame)))  ==> 100
 >
 >
 > OTOH:
 >
 > (progn
 >    (set-face-attribute 'default nil :height 175)
 >    (setq default-frame-alist
 >          '((width . 100)
 >            (fullscreen . fullheight)
 >            ))
 >    (frame-width (make-frame))) ==> 63
 >
 >
 > I would expect that the results are equal.

They are here (Gtk+, Lucid, Motif and Windows) so probably your window
manager interferes in some way.  I tried with your second form as my
.emacs and by evaluating it in *scratch* with emacs -Q.

 > A related bug was #1522, btw.

I'm not sure.  Doesn't your behavior depend on doing
`set-face-attribute' first?.

Anyway, this gives us a good case for doing some forensics.  Please
evaluate

(setq frame-size-history '(1000))

(defun window-display-history ()
   "..."
   (interactive)
   (with-current-buffer-window
    "*history*" nil nil
    (let ((history (cdr frame-size-history))
	 element sizes rest)
      (while history
        (setq element (car history))
        (when (eq (car element) (selected-frame))
	 (when (setq sizes (nth 2 element))
	   (insert (format "%sx%s -> %sx%s "
			   (nth 0 sizes) (nth 1 sizes)
			   (nth 2 sizes) (nth 3 sizes))))
	 (insert (format "%s" (nth 1 element)))
	 (when (setq rest (nth 3 element))
	   (while rest
	     (insert (format " %s" (car rest)))
	     (setq rest (cdr rest))))
	 (insert "\n"))
        (setq history (cdr history)))))
   'history)

in *scratch* and evaluate your second form (the one where you set
fullheight).  Go to the new frame you created this way, type

M-x: window-display-history

in it and post the contents of the *history* buffer here.

If you want to do the same when that form is in your .emacs we'll have
to proceed in a slightly different way.  Let's do that later.

Thanks, martin