Harmonize icons a bit more (for plug-ins)

This commit is contained in:
Pierre Pronchery 2012-12-06 01:08:18 +01:00
parent a5da094aa3
commit 69d0e558bb
3 changed files with 16 additions and 8 deletions

View File

@ -35,8 +35,8 @@ typedef struct _BrowserPluginHelper
{ {
Browser * browser; Browser * browser;
int (*error)(Browser * browser, char const * message, int ret); int (*error)(Browser * browser, char const * message, int ret);
GdkPixbuf * (*get_icon)(Browser * browser, char const * type, GdkPixbuf * (*get_icon)(Browser * browser, char const * filename,
struct stat * st, int size); char const * type, struct stat * st, int size);
Mime * (*get_mime)(Browser * browser); Mime * (*get_mime)(Browser * browser);
int (*set_location)(Browser * browser, char const * path); int (*set_location)(Browser * browser, char const * path);
} BrowserPluginHelper; } BrowserPluginHelper;

View File

@ -224,8 +224,8 @@ unsigned int browser_cnt = 0;
/* accessors */ /* accessors */
static gboolean _browser_plugin_is_enabled(Browser * browser, static gboolean _browser_plugin_is_enabled(Browser * browser,
char const * plugin); char const * plugin);
static GdkPixbuf * _browser_get_icon(Browser * browser, char const * type, static GdkPixbuf * _browser_get_icon(Browser * browser, char const * filename,
struct stat * st, int size); char const * type, struct stat * st, int size);
static Mime * _browser_get_mime(Browser * browser); static Mime * _browser_get_mime(Browser * browser);
static void _browser_set_status(Browser * browser, char const * status); static void _browser_set_status(Browser * browser, char const * status);
@ -2773,9 +2773,17 @@ static gboolean _browser_plugin_is_enabled(Browser * browser,
/* browser_get_icon */ /* browser_get_icon */
static GdkPixbuf * _browser_get_icon(Browser * browser, char const * type, static GdkPixbuf * _browser_get_icon(Browser * browser, char const * filename,
struct stat * st, int size) char const * type, struct stat * st, int size)
{ {
struct stat s;
if(st == NULL && lstat(filename, &s) == 0)
st = &s;
if(st != NULL && S_ISDIR(st->st_mode))
return vfs_mime_folder_icon(browser->mime, filename, st, size);
if(filename != NULL && type == NULL)
type = mime_type(browser->mime, filename);
return vfs_mime_icon(browser->mime, type, st, size); return vfs_mime_icon(browser->mime, type, st, size);
} }

View File

@ -461,8 +461,8 @@ static void _refresh_type(Properties * properties, struct stat * st)
properties->filename)) == NULL properties->filename)) == NULL
&& st->st_mode & S_IXUSR) && st->st_mode & S_IXUSR)
type = "application/x-executable"; type = "application/x-executable";
if(type != NULL && pixbuf == NULL if(pixbuf == NULL && (pixbuf = helper->get_icon(helper->browser,
&& (pixbuf = helper->get_icon(helper->browser, type, st, properties->filename, type, st,
iconsize)) != NULL) iconsize)) != NULL)
image = gtk_image_new_from_pixbuf(pixbuf); image = gtk_image_new_from_pixbuf(pixbuf);
if(type == NULL) if(type == NULL)