Subject: Re: bug#15281: 24.3.50; Some tool-bar buttons disappear in GTK3 Emacs

From: Jan Djärv <[email-masked]>
Date: Fri, 6 Sep 2013 07:03:03 +0200

Hello.

Gtk+ does its own enable/disable/selected modifications of images, and Emacs can't/shouldn't  override that.  So for Gtk+ item 1 to 3 are ignored.  Documentation should be updated though.

	Jan D.

6 sep 2013 kl. 02:02 skrev Katsumi Yamaoka <[email-masked]>:

> Hi,
> 
> The Info manual describes as follows:
> 
> ,---- (info "(Elisp)Tool Bar")
> |`:image IMAGE'
> |     IMAGES is either a single image specification or a vector of four
> |     image specifications.  If you use a vector of four, one of them is
> |     used, depending on circumstances:
> |
> |    item 0
> |          Used when the item is enabled and selected.
> |
> |    item 1
> |          Used when the item is enabled and deselected.
> |
> |    item 2
> |          Used when the item is disabled and selected.
> |
> |    item 3
> |          Used when the item is disabled and deselected.
> |
> |   If IMAGE is a single image specification, Emacs draws the tool bar
> |button in disabled state by applying an edge-detection algorithm to the
> |image.
> `----
> 
> However, a tool-bar button that has such images is not shown in
> GTK3 Emacs.  Moreover, LUCID Emacs (i.e. --with-x-toolkit=lucid)
> shows such a button, however only the `item 1' image is used no
> matter what circumstance is.
> 
> This works:
> 
> (let* ((enable t)
>       (icon (find-image '((:type xpm :file "cancel.xpm"))))
>       (keymap
> 	`(keymap
> 	  (tool-bar
> 	   keymap
> 	   (ignore menu-item "IGNORE" ignore
> 		   :enable ,enable :image ,icon)))))
>  (pop-to-buffer (get-buffer-create "*testing*"))
>  (use-local-map keymap))
> 
> This doesn't work as expected:
> 
> (let* ((enable t)
>       (icon (vector
> 	      (find-image '((:type xpm :file "right-arrow.xpm")))
> 	      (find-image '((:type xpm :file "left-arrow.xpm")))
> 	      (find-image '((:type xpm :file "cancel.xpm")))
> 	      (find-image '((:type xpm :file "close.xpm")))))
>       (keymap
> 	`(keymap
> 	  (tool-bar
> 	   keymap
> 	   (ignore menu-item "IGNORE" ignore
> 		   :enable ,enable :image ,icon)))))
>  (pop-to-buffer (get-buffer-create "*testing*"))
>  (use-local-map keymap))
> 
> Thanks.
> 
> In GNU Emacs 24.3.50.1 (i686-pc-cygwin, GTK+ Version 3.8.2)
> of 2013-09-06 on localhost
> Bzr revision: 114147 [email-masked]
> Windowing system distributor `The Cygwin/X Project', version 11.0.11402000
> Configured using:
> `configure --verbose --with-x-toolkit=gtk3 --without-imagemagick
> --without-dbus --without-gconf --without-gsettings'
> 
> In GNU Emacs 24.3.50.1 (i686-pc-cygwin, X toolkit, Xaw3d scroll bars)
> of 2013-09-06 on localhost
> Bzr revision: 114147 [email-masked]
> Windowing system distributor `The Cygwin/X Project', version 11.0.11402000
> Configured using:
> `configure --verbose --with-x-toolkit=lucid --without-imagemagick
> --without-dbus --without-gconf --without-gsettings'
> 
>