Subject: bug#16052: 24.3.50; `set-frame-parameter` broken for `tool-bar-lines`

From: martin rudalics <[email-masked]>
Date: Sat, 04 Jan 2014 14:44:38 +0100

> emacs -Q
>
> M-x set-variable RET pop-up-frames RET t
> M-x tool-bar-mode ; turn it off, to start from zero
> M-x pp-eval-expression RET (frame-parameters)
>
> In frame *Pp Eval Output* search for `tool-bar-lines' => 0 (good).
>
> In original frame (do all of the commands here, except isearch):
>
> M-x tool-bar-mode ; turn it on
> M-x pp-eval-expression RET (frame-parameters)
>
> In frame *Pp Eval Output* search for `tool-bar-lines' => 2 (wrong).
>
> In original frame (do all of the commands here, except isearch):
>
> M-x pp-eval-expression RET (set-frame-parameter nil 'tool-bar-lines 1)
> M-x pp-eval-expression RET (frame-parameters)
>
> In frame *Pp Eval Output* search for `tool-bar-lines' => 2 (wrong).
>
> In original frame (do all of the commands here, except isearch):
>
> M-x pp-eval-expression RET (set-frame-parameter nil 'tool-bar-lines 3)
> M-x pp-eval-expression RET (frame-parameters)
>
> In frame *Pp Eval Output* search for `tool-bar-lines' => 2 (wrong).
>
> etc.  It seems that the `tool-bar-lines' is always either 0 or 2.

Before using terms like "wrong" in bug reports please consult the Elisp
manual:

    On each frame, the frame parameter `tool-bar-lines' controls how
many lines' worth of height to reserve for the tool bar.

What you see is either 0 when `tool-bar-mode' is turned off or 2 which
probably comes from the actual toolbar pixel height divided by the
frame's default line height.  Explicitly setting the `tool-bar-lines'
parameter has no effect when `auto-resize-tool-bars' is non-nil (which
it is with emacs -Q).

martin