Compare commits

..

No commits in common. "41bd25e7115d0d2ece922ed0db35f64ef61aaede" and "919a55c90b645b8e0df83af02bb0a0e533869b0a" have entirely different histories.

2 changed files with 17 additions and 10 deletions

View File

@ -792,7 +792,8 @@ make_context_menu(GtkWidget *widget, GFile *file)
}
for (GList *iter = recommended; iter; iter = iter->next) {
if (!default_ || !g_app_info_equal(iter->data, default_))
if (g_app_info_should_show(iter->data) &&
(!default_ || !g_app_info_equal(iter->data, default_)))
append_opener(menu, iter->data, ctx);
else
g_object_unref(iter->data);
@ -804,7 +805,8 @@ make_context_menu(GtkWidget *widget, GFile *file)
}
for (GList *iter = fallback; iter; iter = iter->next) {
if (!default_ || !g_app_info_equal(iter->data, default_))
if (g_app_info_should_show(iter->data) &&
(!default_ || !g_app_info_equal(iter->data, default_)))
append_opener(menu, iter->data, ctx);
else
g_object_unref(iter->data);

View File

@ -230,7 +230,8 @@ save_thumbnail(cairo_surface_t *thumbnail, const char *path, GString *thum)
}
static cairo_surface_t *
render(GFile *target, GBytes *data, gboolean *color_managed, GError **error)
fiv_thumbnail_prepare(
GFile *target, GBytes *data, gboolean *color_managed, GError **error)
{
FivIoOpenContext ctx = {
.uri = g_file_get_uri(target),
@ -252,7 +253,7 @@ render(GFile *target, GBytes *data, gboolean *color_managed, GError **error)
}
static gboolean
produce_fallback(GFile *target, FivThumbnailSize size,
fiv_thumbnail_fallback(GFile *target, FivThumbnailSize size,
cairo_surface_t **surface, GError **error)
{
goffset filesize = 0;
@ -276,7 +277,8 @@ produce_fallback(GFile *target, FivThumbnailSize size,
return FALSE;
gboolean color_managed = FALSE;
cairo_surface_t *result = render(target, data, &color_managed, error);
cairo_surface_t *result =
fiv_thumbnail_prepare(target, data, &color_managed, error);
if (!result)
return FALSE;
@ -294,8 +296,10 @@ fiv_thumbnail_produce(GFile *target, FivThumbnailSize max_size,
max_size <= FIV_THUMBNAIL_SIZE_MAX, FALSE);
const gchar *path = g_file_peek_path(target);
if (!path || !g_file_is_native(target) /* Don't save sftp://. */)
return produce_fallback(target, max_size, max_size_surface, error);
if (!path || !g_file_is_native(target) /* Don't save sftp://. */) {
return fiv_thumbnail_fallback(
target, max_size, max_size_surface, error);
}
// Make the TOCTTOU issue favour unnecessary reloading.
GStatBuf st = {};
@ -309,13 +313,14 @@ fiv_thumbnail_produce(GFile *target, FivThumbnailSize max_size,
if (!mf) {
g_debug("%s: %s", path, e->message);
g_error_free(e);
return produce_fallback(target, max_size, max_size_surface, error);
return fiv_thumbnail_fallback(
target, max_size, max_size_surface, error);
}
gsize filesize = g_mapped_file_get_length(mf);
gboolean color_managed = FALSE;
cairo_surface_t *surface =
render(target, g_mapped_file_get_bytes(mf), &color_managed, error);
cairo_surface_t *surface = fiv_thumbnail_prepare(
target, g_mapped_file_get_bytes(mf), &color_managed, error);
g_mapped_file_unref(mf);
if (!surface)
return FALSE;