Issue #6165: crash when the system icon theme does not contain image-missing icon.

The bug is in fact in GTK. "image-missing" is supposed to never missing since
GTK embeds an icon as GResource. But it turns out that the code is buggy. So if
an icon is missing from GIMP theme, then system theme, then "icon-missing" icon
as well, GIMP crashes.

See: https://gitlab.gnome.org/GNOME/gtk/-/issues/3526

As a workaround for now, let's at least add our own "image-missing", at least in
our main themes (Color and Symbolic, not Legacy). This will make GIMP not
crashing at least by default when another icon is missing.
Of course a crash could still happen if one use Legacy or a third-party theme
and if their system theme doesn't contain "image-missing" as well, until GTK is
fixed.
This commit is contained in:
Jehan 2023-09-27 21:28:09 +02:00
parent 5b78437328
commit 196f1d6e95
2 changed files with 19 additions and 0 deletions

View File

@ -36,6 +36,13 @@ foreach install : install_icons
endforeach
install_data(icons, install_dir: gimpiconsdir / theme / outdir / 'apps')
wilber_eek = '@0@/gimp-wilber-eek@1@'.format(indir, suffix)
if wilber_eek in icons
install_data(wilber_eek,
rename: 'image-missing@0@'.format(suffix),
install_dir: gimpiconsdir / theme / outdir / 'apps')
endif
endforeach
icons_core = [ '64/dialog-question.png', ]

View File

@ -41,6 +41,18 @@ foreach install : install_icons
endforeach
install_data(icons, install_dir: gimpiconsdir / theme / outdir / 'apps')
wilber_eek = '@0@/gimp-wilber-eek@1@'.format(indir, suffix)
if wilber_eek in icons
# Note: since this is just a copy of gimp-wilber-week, we could just do a
# symlink with install_symlink(), but this is only available in meson 0.61.0
# and looking at its code, it would apparently fail if symlinks are not
# available in the target OS (instead of silently and intelligently falling
# back to doing a copy).
install_data(wilber_eek,
rename: 'image-missing@0@'.format(suffix),
install_dir: gimpiconsdir / theme / outdir / 'apps')
endif
endforeach
icons_core = [ '64/gimp-question.png', ]