file: use emblems for files that use default icon

Files that fall back on the statically-allocated default GIcon will not
have emblems drawn on them. Create a new GIcon with emblems on it if
needed, and document the circumstances that lead to this case being hit.

Fixes https://gitlab.gnome.org/GNOME/nautilus/issues/1189
This commit is contained in:
Colin Atkinson 2019-08-07 13:36:43 -04:00 committed by António Fernandes
parent 4a8ff42c82
commit 8efe356653

View file

@ -5327,10 +5327,31 @@ nautilus_file_get_icon (NautilusFile *file,
icon = nautilus_icon_info_lookup (gicon, size, scale);
g_object_unref (gicon);
/* Files for which the MIME type cannot be determined will result in
* the icon being detected as a fallback. This is because the default
* theme does not have icons for the names corresponding to these file
* types. */
if (nautilus_icon_info_is_fallback (icon))
{
g_object_unref (icon);
icon = nautilus_icon_info_lookup (get_default_file_icon (), size, scale);
gicon = get_default_file_icon ();
/* Increase ref count on gicon, even though it is statically
* allocated. This is needed because apply_emblems_to_icon
* decreases the ref count on the original icon it is given. */
g_object_ref (gicon);
if (flags & NAUTILUS_FILE_ICON_FLAGS_USE_EMBLEMS)
{
apply_emblems_to_icon (file, &gicon, flags);
}
icon = nautilus_icon_info_lookup (gicon, size, scale);
/* Decrease ref count on either the static default icon, or on the
* newly-created emblemed icon. */
g_object_unref (gicon);
}
}