aboutsummaryrefslogtreecommitdiff
path: root/libdino
diff options
context:
space:
mode:
Diffstat (limited to 'libdino')
-rw-r--r--libdino/src/service/sfs_metadata.vala3
-rw-r--r--libdino/src/service/util.vala11
2 files changed, 13 insertions, 1 deletions
diff --git a/libdino/src/service/sfs_metadata.vala b/libdino/src/service/sfs_metadata.vala
index ff2a57b4..dff6f7bf 100644
--- a/libdino/src/service/sfs_metadata.vala
+++ b/libdino/src/service/sfs_metadata.vala
@@ -36,7 +36,8 @@ namespace Dino {
public class ImageFileMetadataProvider: Dino.FileMetadataProvider, Object {
public bool supports_file(File file) {
- return file.query_info("*", FileQueryInfoFlags.NONE).get_content_type().has_prefix("image");
+ string mime_type = file.query_info("*", FileQueryInfoFlags.NONE).get_content_type();
+ return Dino.Util.is_pixbuf_supported_mime_type(mime_type);
}
private const int[] THUMBNAIL_DIMS = { 1, 2, 3, 4, 8 };
diff --git a/libdino/src/service/util.vala b/libdino/src/service/util.vala
index 1d04ffcf..6eacdd33 100644
--- a/libdino/src/service/util.vala
+++ b/libdino/src/service/util.vala
@@ -29,6 +29,17 @@ public class Util {
assert_not_reached();
}
}
+
+ public static bool is_pixbuf_supported_mime_type(string mime_type) {
+ if (mime_type == null) return false;
+
+ foreach (Gdk.PixbufFormat pixbuf_format in Gdk.Pixbuf.get_formats()) {
+ foreach (string pixbuf_mime in pixbuf_format.get_mime_types()) {
+ if (pixbuf_mime == mime_type) return true;
+ }
+ }
+ return false;
+ }
}
}