summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Davenport <qball@gmpclient.org>2020-10-18 20:54:03 +0200
committerDave Davenport <qball@gmpclient.org>2020-10-18 20:54:03 +0200
commitd8a420c95275117b0efd32b6e3b61847f58ad37c (patch)
tree91fb9bb24f9a7a3a5f9d630ae05d77195dc6e88d
parent08a40d13ce2e7b733251bc0f2b09f615ab50f8d8 (diff)
[FileBrowser] Small restructure.
-rw-r--r--source/dialogs/filebrowser.c23
1 files changed, 21 insertions, 2 deletions
diff --git a/source/dialogs/filebrowser.c b/source/dialogs/filebrowser.c
index 22c94cf5..201d1ac7 100644
--- a/source/dialogs/filebrowser.c
+++ b/source/dialogs/filebrowser.c
@@ -340,6 +340,26 @@ static int file_browser_token_match ( const Mode *sw, rofi_int_matcher **tokens,
return helper_token_match ( tokens, pd->array[index].name);
}
+
+const char * const image_exts[] = {".png",".PNG",".jpg",".JPG",".jpeg",".JPEG",".svg",".SVG"};
+static gboolean file_browser_is_image ( const char * const path )
+{
+ if ( path == NULL ) {
+ return FALSE;
+ }
+ const char *suf = strrchr(path, '.');
+ if ( suf == NULL ) {
+ return FALSE;
+ }
+ for ( uint32_t i = 0; i < (sizeof (image_exts)/sizeof(char*)); i++ ) {
+ if ( g_strcmp0(suf,image_exts[i]) == 0 ) {
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+
static cairo_surface_t *_get_icon ( const Mode *sw, unsigned int selected_line, int height )
{
FileBrowserModePrivateData *pd = (FileBrowserModePrivateData *) mode_get_private_data ( sw );
@@ -348,8 +368,7 @@ static cairo_surface_t *_get_icon ( const Mode *sw, unsigned int selected_line,
if ( dr->icon_fetch_uid > 0 ) {
return rofi_icon_fetcher_get ( dr->icon_fetch_uid );
}
- if ( dr->path && (g_str_has_suffix(dr->path, ".png") || g_str_has_suffix(dr->path, ".jpeg") || g_str_has_suffix(dr->path, ".jpg") || g_str_has_suffix(dr->path, ".svg") ||
- g_str_has_suffix(dr->path, ".PNG") || g_str_has_suffix(dr->path, ".JPEG") || g_str_has_suffix(dr->path, ".JPG") || g_str_has_suffix(dr->path, ".SVG") )){
+ if ( file_browser_is_image ( dr->path ) ){
dr->icon_fetch_uid = rofi_icon_fetcher_query ( dr->path, height );
} else {
dr->icon_fetch_uid = rofi_icon_fetcher_query ( icon_name[dr->type], height );