From c33ee98dd3f0a0f193af9884e4ab98498b4ba42c Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Thu, 28 Dec 2017 05:07:18 +0100 Subject: [PATCH] Rename mimehandler_is_hidden() to mimehandler_is_deleted() This is one step further than the specification, and should help understand the true meaning of this key. While there, improve mimehandler_can_display() as well. --- include/Desktop/mimehandler.h | 2 +- src/mimehandler.c | 32 ++++++++++++++++++++++++-------- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/include/Desktop/mimehandler.h b/include/Desktop/mimehandler.h index 07e8c99..65a2071 100644 --- a/include/Desktop/mimehandler.h +++ b/include/Desktop/mimehandler.h @@ -72,7 +72,7 @@ MimeHandlerType mimehandler_get_type(MimeHandler * handler); String const ** mimehandler_get_types(MimeHandler * handler); String const * mimehandler_get_url(MimeHandler * handler); -int mimehandler_is_hidden(MimeHandler * handler); +int mimehandler_is_deleted(MimeHandler * handler); /* useful */ int mimehandler_open(MimeHandler * handler, String const * filename); diff --git a/src/mimehandler.c b/src/mimehandler.c index b2ba15c..84ca44d 100644 --- a/src/mimehandler.c +++ b/src/mimehandler.c @@ -144,9 +144,15 @@ int mimehandler_can_display(MimeHandler * handler) { String const * p; - if((p = config_get(handler->config, SECTION, "NoDisplay")) == NULL) - return 1; - return (string_compare(p, "true") == 0) ? 1 : 0; + if(mimehandler_is_deleted(handler)) + return 0; + /* XXX allow setting a value for the desktop environment */ + if(config_get(handler->config, SECTION, "OnlyShowIn") != NULL) + return 0; + if((p = config_get(handler->config, SECTION, "NoDisplay")) != NULL + && string_compare(p, "true") == 0) + return 0; + return 1; } @@ -463,14 +469,24 @@ String const * mimehandler_get_url(MimeHandler * handler) } -/* mimehandler_is_hidden */ -int mimehandler_is_hidden(MimeHandler * handler) +/* mimehandler_is_deleted */ +int mimehandler_is_deleted(MimeHandler * handler) { String const * p; - if((p = config_get(handler->config, SECTION, "Hidden")) == NULL) - return 0; - return (string_compare(p, "true") == 0) ? 1 : 0; + if((p = config_get(handler->config, SECTION, "Hidden")) != NULL + && string_compare(p, "true") == 0) + return 1; + switch(mimehandler_get_type(handler)) + { + case MIMEHANDLER_TYPE_APPLICATION: + if(mimehandler_can_execute(handler) == 0) + return 1; + break; + default: + break; + } + return 0; }