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

From: john muhl <[email-masked]>
Date: Sun, 22 Dec 2024 17:57:04 -0600

The following gets all the icons working:

  dnf install gdk-pixbuf2-modules-extra

Maybe something to mention PROBLEMS? Feel free to close unless you
think there anything else to investigate.

john muhl <[email-masked]> writes:

> 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...