summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandru Pandelea <alexandru.pandelea@gmail.com>2016-03-03 07:30:43 +0200
committerCarlos Soriano <csoriano@gnome.org>2016-03-07 12:24:01 +0100
commit6ed964542df4208050b22aac1b7ca2c0901ab4ef (patch)
tree2a9c072f5771faf3ba60b4b8a249435ea6436a10
parent1d968db1f2e18245c3f0b767d71a13a59b0aaa99 (diff)
downloadnautilus-6ed964542df4208050b22aac1b7ca2c0901ab4ef.tar.gz
Don't show thumbnails for small zoom levels
When the zoom level is too small, thumbnails become useless, as they are so small that they don't give any information. The solution to this problem is to use mimetype icons when the zoom level is too small In order to achieve this, there was added a function that returns false if the zoom is too small, nautilus_thumbnail_is_limited_by_zoom. Therefore, if it returns false, the mimetype icon will be used. https://bugzilla.gnome.org/show_bug.cgi?id=752805
-rw-r--r--libnautilus-private/nautilus-file.c21
-rw-r--r--libnautilus-private/nautilus-file.h3
2 files changed, 23 insertions, 1 deletions
diff --git a/libnautilus-private/nautilus-file.c b/libnautilus-private/nautilus-file.c
index 22e29ddd8..8bdfcfd96 100644
--- a/libnautilus-private/nautilus-file.c
+++ b/libnautilus-private/nautilus-file.c
@@ -4581,6 +4581,24 @@ nautilus_file_get_thumbnail_icon (NautilusFile *file,
return icon;
}
+gboolean nautilus_thumbnail_is_limited_by_zoom (int size, int scale,
+ NautilusFileIconFlags flags)
+{
+ int zoom_level;
+
+ if (flags & NAUTILUS_FILE_ICON_FLAGS_FORCE_THUMBNAIL_SIZE) {
+ zoom_level = size * scale;
+ } else {
+ zoom_level = size * scale *
+ cached_thumbnail_size / NAUTILUS_CANVAS_ICON_SIZE_SMALL;
+ }
+
+ if (zoom_level <= NAUTILUS_LIST_ICON_SIZE_SMALL)
+ return FALSE;
+
+ return TRUE;
+}
+
NautilusIconInfo *
nautilus_file_get_icon (NautilusFile *file,
int size,
@@ -4608,7 +4626,8 @@ nautilus_file_get_icon (NautilusFile *file,
flags & NAUTILUS_FILE_ICON_FLAGS_FORCE_THUMBNAIL_SIZE);
if (flags & NAUTILUS_FILE_ICON_FLAGS_USE_THUMBNAILS &&
- nautilus_file_should_show_thumbnail (file)) {
+ nautilus_file_should_show_thumbnail (file) &&
+ nautilus_thumbnail_is_limited_by_zoom (size, scale, flags)) {
icon = nautilus_file_get_thumbnail_icon (file, size, scale, flags);
}
diff --git a/libnautilus-private/nautilus-file.h b/libnautilus-private/nautilus-file.h
index 363fbff38..a6a657ed2 100644
--- a/libnautilus-private/nautilus-file.h
+++ b/libnautilus-private/nautilus-file.h
@@ -210,6 +210,9 @@ NautilusRequestStatus nautilus_file_get_deep_counts (Nautilu
gboolean force);
gboolean nautilus_file_should_show_thumbnail (NautilusFile *file);
gboolean nautilus_file_should_show_directory_item_count (NautilusFile *file);
+gboolean nautilus_thumbnail_is_limited_by_zoom (int size,
+ int scale,
+ NautilusFileIconFlags flags);
void nautilus_file_set_search_relevance (NautilusFile *file,
gdouble relevance);