unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: David McCracken <davidm@ixont.com>
Cc: 71162@debbugs.gnu.org
Subject: bug#71162: bug-gnu-emacs@gnu.org
Date: Sat, 25 May 2024 09:09:23 +0300	[thread overview]
Message-ID: <86msoe1kz0.fsf@gnu.org> (raw)
In-Reply-To: <9002e131-3466-4a73-a88c-bad260e5b886@ixont.com> (message from David McCracken on Fri, 24 May 2024 12:29:49 -0700)

[-- Attachment #1: Type: text/plain, Size: 4306 bytes --]

[Please use Reply All to reply, to keep the bug tracker CC'ed.]

> Date: Fri, 24 May 2024 12:29:49 -0700
> From: David McCracken <davidm@ixont.com>
> 
> I use the same icons and emacs code on Windows and Linux. In Windows it 
> works in Emacs 29.1 and 26.1 (the two I currently use but it worked in 
> older versions as well). In Ubuntu-Mate (20.54 and 22.04) it works in 
> Emacs 26.3 but not 27.1. The code I use for this particular example is
> 
> (define-key-after (default-value 'tool-bar-map)
>    [separator-4] menu-bar-separator)
> ; Linux-Emacs v25 includes pseudo-key name in the toolbar unless it is too
> ; long, which is the only way to stop this unwanted behavior.
> (tool-bar-add-item "~/icons/lxa-next"
>    'lxa-next
>    'lxa-next-reference
>    :help "LXA next reference")
> 
> In all cases except Emacs 27.1 in Linux the user icons directory is not 
> a problem. However, it is an additional problem in 27.1 under Linux. The 
> same native lock-broken.xpm that works when in the images directory and 
> referenced simply as "lock-broken" fails when moved to the user icons 
> directory and referenced as "~/icons/lock-broken". 27.1 also ignores my 
> lxa-next.xpm when moved to the images directory and referenced simply as 
> "lxa-next". Somebody hard-wired all flexibility out of this mechanism 
> after 26.3 but only in the Linux version. I initially suspected the 
> changes related to B/W pbm images, which is described in the images 
> README but I found the same README in 26.3.

If you visit (with C-x C-f) the lxa-next.xpm file in Emacs 27.1 on
Ubuntu, does it display correctly as an image?  If not, your Emacs
27.1 on Ubuntu is for some reason unable to display XPM images.

If lxa-next.xpm does display correctly on Ubuntu, then you need to
find out why adding a tool-bar button with an XPM image doesn't work
for you.  I just tried the below in "emacs-Q" (using Emacs 27.1), and
it did show the additional tool-bar button:

  (defun lxa-next ()
    (interactive)
    (message "lxa-next"))

  (tool-bar-add-item "~/icons/lxa-next"
   'lxa-next
   'lxa-next-reference
   :help "LXA next reference")

Does the above work for you in "emacs -Q" on Ubuntu?

If it works in "emacs -Q", but not in your regular sessions, then
there are some customizations, perhaps site-wide and possibly by the
Ubuntu distro, which somehow prevent this.  In the upstream sources, I
see no changes in this area.  tool-bar-add-item still ends up calling
tool-bar--image-expression, which calls find-image like this:

  (let* ((fg (face-attribute 'tool-bar :foreground))
	 (bg (face-attribute 'tool-bar :background))
	 (colors (nconc (if (eq fg 'unspecified) nil (list :foreground fg))
			(if (eq bg 'unspecified) nil (list :background bg))))
	 (xpm-spec (list :type 'xpm :file (concat icon ".xpm")))
	 (xpm-lo-spec (list :type 'xpm :file
			    (concat "low-color/" icon ".xpm")))
	 (pbm-spec (append (list :type 'pbm :file
                                 (concat icon ".pbm")) colors))
	 (xbm-spec (append (list :type 'xbm :file
                                 (concat icon ".xbm")) colors)))
    `(find-image (cond ((not (display-color-p))
			',(list pbm-spec xbm-spec xpm-lo-spec xpm-spec))
		       ((< (display-color-cells) 256)
			',(list xpm-lo-spec xpm-spec pbm-spec xbm-spec))
		       (t
			',(list xpm-spec pbm-spec xbm-spec))))))

As you see here, if your display can support at least 256 colors, the
XPM image gets preference over the other possibilities.  And
find-image searches for the image file via image-search-load-path,
which searches image-load-path, and for absolute file names like
"~/images/lxa-next" should find the file immediately regardless of the
value of image-load-path.

So if your Emacs does not have some customizations, it should find the
images without any problem.

If the problem is some Ubuntu customizations, you should take that up
with the Ubuntu distro maintainers; we here are only responsible for
the original Emacs 27.1 tarball.

> In case you are interested I have attached my complete code.

I attach it below, because you sent the response only to me in private
email (please use Reply All or "wide reply" in your future responses
to this discussion).


[-- Attachment #2: linkxall.el --]
[-- Type: application/emacs-lisp, Size: 38273 bytes --]

  parent reply	other threads:[~2024-05-25  6:09 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-24  4:08 bug#71162: bug-gnu-emacs@gnu.org David McCracken
2024-05-24  6:15 ` Eli Zaretskii
     [not found]   ` <9002e131-3466-4a73-a88c-bad260e5b886@ixont.com>
2024-05-25  6:09     ` Eli Zaretskii [this message]
2024-05-25 19:08       ` David McCracken
2024-05-26  4:44         ` Eli Zaretskii
2024-05-25 20:04   ` David McCracken
2024-05-27  4:16   ` David McCracken
2024-05-27 11:20     ` bug#71162: In Linux Emacs 27.1 rejects custom toolbar icons Eli Zaretskii
2024-05-25 10:42 ` bug#71162: bug-gnu-emacs@gnu.org Benjamin Riefenstahl
2024-05-26 20:54 ` bug#71162: In Linux Emacs 27.1 rejects custom toolbar icons David McCracken
2024-05-28  3:56 ` bug#71162: Linux-Emacs > 26 icons David McCracken

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=86msoe1kz0.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=71162@debbugs.gnu.org \
    --cc=davidm@ixont.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).