Subject: bug#75018: 30.0.93; Dired icon missing in tool-bar

From: john muhl <[email-masked]>
Date: Sun, 22 Dec 2024 13:52:22 -0600

Confirmation it’s not just me:

https://discussion.fedoraproject.org/t/the-gdb-toolbar-icons-are-displayed-incorrectly-in-emacs-on-fedora-41-with-gnome/136650

john muhl <[email-masked]> writes:

> Eli Zaretskii <[email-masked]> writes:
>
>>> Date: Sun, 22 Dec 2024 09:32:23 -0600
>>> From: "john muhl" <[email-masked]>
>>> Cc: [email-masked]
>>> 
>>> On Sun, Dec 22, 2024, at 12:43 AM, Eli Zaretskii wrote:
>>> >> From: john muhl <[email-masked]>
>>> >> Date: Sat, 21 Dec 2024 18:19:57 -0600
>>> >> 
>>> >> The usual Dired icon is missing and instead shows up as a couple
>>> >> of tiny triangles in the normal state and as a very generic file
>>> >> icon on hover. Happens on emacs-30 and master and X11 and PGTK
>>> >> builds. Lucid and Motif builds are unaffected.
>>> >
>>> > Where do the tool-bar icons come from in that build?  They are not
>>> > from the Emacs's etc/images/ directory, AFAICT.
>>> 
>>> They are the stock GTK icons. On this system they are located in
>>> /usr/share/icons/. The option x-gtk-stock-map is responsible for
>>> the mapping between Emacs' etc/images/* and the system's
>>> icons. The attached patch fixes it here.
>>
>> Can you explain the rationale for the patch and how it solves the
>> problem?
>
> Honestly I don’t understand how x-gtk-stock-map does its thing. I
> was just trying to get an icon to appear.
>
> My first idea was to remove mapping for etc/images/diropen hoping
> it would fall back on the included image but that didn’t work. In
> fact setting x-g-s-m to nil (PROBLEMS suggests this should cause
> Emacs’ included icons to be used) causes all the icons to fail to
> be found and end up looking the same way as the broken Dired icon.
>
>>> > Can you post the Dired icon file from where your build takes them?
>>> 
>>> Unfortunately I can't find those particular icons among the ~7000
>>> icons in the /usr/share/icons/ directory but they're probably in
>>> there somewhere.
>>
>> If you run Emacs under GDB with a breakpoint in lookup_image, you
>> should see all the tool-bar icons being loaded during startup.  You
>> can use the following GDB commands for the breakpoint, to see when the
>> icon you are interested in gets loaded:
>>
>>   pp spec
>>
>> This should show you the full absolute file name of the icon file
>> Emacs is loading.
>>
>> The command "pp" is defined in src/.gdbinit, so if you don't start GDB
>> from that directory, you will need to say
>>
>>   (gdb) source /path/to/emacs/src/.gdbinit
>>
>> before running Emacs, to be able to use this useful command.
>
> With the breakpoint in place I see:
>
>   (image :type xpm
>          :file "/home/jm/tmp/emacs-30/etc/images/diropen.xpm"
>          :scale default)
>
> All the others icons similarly claim to be loaded from an XMP file
> in the Emacs source directory. Of course those XMP files look
> nothing like those that actually appear in the tool-bar. The icons
> that are actually used are all somewhere under
> /usr/share/icons/Adwaita/symbolic/.
>
>>> > Also, is this problem new in the last pretest, or did previous
>>> > pretests behave the same?
>>> 
>>> I tried 30.0.90 and 29.4 and they too are using the incorrect
>>> icons. I suspect upgrading to Fedora 41 is what causes the
>>> issue.
>>
>> Yes, that's usually the first suspect in such cases.
>>
>> Thanks.
>
> Actually now that I’m paying attention I see missing icons all
> over the place. This message-mode buffer is missing icons for
> “File this draft message and exit” and “Preview”. Info mode is
> missing “Goto previous node”, “Goto next node” and “Go up the info
> tree”. A VC-log buffer is missing another handful...