Subject: Re: bug#1077: bug#670: bug#1077: 23.0.60; x-create-frame: (wrong-type-argument number-or-marker-p nil)

From: martin rudalics <[email-masked]>
Date: Sun, 28 Nov 2010 15:12:53 +0100

>> The menu-bar-lines indications appear inconsistent for stand-alone
 >> minibuffer frames.  If I do
 >>
 >> (let ((frame (make-frame '((minibuffer . only)))))
 >>    (frame-parameter frame 'menu-bar-lines))
 >>
 >> the frame I create doesn't have a menubar but the frame parameter says
 >> there's one such line.
 >
 > Can you see how this inconsistency could explain the (> nil 0) thing
 > that burps?  When there's no menubar, the menu-bar-lines parameter
 > should be zero, not nil, right?

Not from this observation whose purpose was only to point at the
inconsistency.  But from Nick's fix cited earlier I deduce that
(frame-parameter ... 'menu-bar-lines) apparently can return nil.

Looking at dframe.el I find

		(let* ((mh (dframe-frame-parameter dframe-attached-frame
						   'menu-bar-lines))
		       ...
			   (list (cons 'height (+ (or mh 0) (frame-height)))))))

so somehow mh can be nil - IIUC the value returned by
`dframe-frame-parameter' is that of `frame-parameter'.

So one would have to look at things like

(define-key menu-bar-showhide-menu [menu-bar-mode]
   `(menu-item ,(purecopy "Menu-bar") toggle-menu-bar-mode-from-frame
	      :help ,(purecopy "Turn menu-bar on/off")
	      :button (:toggle . (> (frame-parameter nil 'menu-bar-lines) 0))))

and friends whether they could be the culprits.  But it's also
possible that Drew's code calls `frame-parameter'.

martin