[gtk+/gtk-2-24] Properly use GContentType



commit 1fb9e0390efa4a3f71902fde900a08ced4cc3064
Author: TingPing <tingping tingping se>
Date:   Sun Aug 17 06:14:58 2014 -0400

    Properly use GContentType
    
    https://bugzilla.gnome.org/show_bug.cgi?id=734946

 gtk/gtkfilefilter.c   |   19 +++++++++++++++----
 gtk/gtkrecentfilter.c |   17 ++++++++++++++---
 2 files changed, 29 insertions(+), 7 deletions(-)
---
diff --git a/gtk/gtkfilefilter.c b/gtk/gtkfilefilter.c
index 5a6b411..f936a1c 100644
--- a/gtk/gtkfilefilter.c
+++ b/gtk/gtkfilefilter.c
@@ -372,13 +372,24 @@ gtk_file_filter_filter (GtkFileFilter           *filter,
 
       if ((filter_info->contains & rule->needed) != rule->needed)
        continue;
-      
+
       switch (rule->type)
        {
        case FILTER_RULE_MIME_TYPE:
-         if (filter_info->mime_type != NULL &&
-              g_content_type_is_a (filter_info->mime_type, rule->u.mime_type))
-           return TRUE;
+          if (filter_info->mime_type != NULL)
+            {
+              gchar *filter_content_type, *rule_content_type;
+              gboolean match;
+
+              filter_content_type = g_content_type_from_mime_type (filter_info->mime_type);
+              rule_content_type = g_content_type_from_mime_type (rule->u.mime_type);
+              match = g_content_type_is_a (filter_content_type, rule_content_type);
+              g_free (filter_content_type);
+              g_free (rule_content_type);
+
+              if (match)
+                return TRUE;
+            }
          break;
        case FILTER_RULE_PATTERN:
          if (filter_info->display_name != NULL &&
diff --git a/gtk/gtkrecentfilter.c b/gtk/gtkrecentfilter.c
index 9e87998..9eb901d 100644
--- a/gtk/gtkrecentfilter.c
+++ b/gtk/gtkrecentfilter.c
@@ -485,9 +485,20 @@ gtk_recent_filter_filter (GtkRecentFilter           *filter,
       switch (rule->type)
         {
         case FILTER_RULE_MIME_TYPE:
-          if (filter_info->mime_type != NULL &&
-              g_content_type_is_a (filter_info->mime_type, rule->u.mime_type))
-            return TRUE;
+          if (filter_info->mime_type != NULL)
+            {
+              gchar *filter_content_type, *rule_content_type;
+              gboolean match;
+
+              filter_content_type = g_content_type_from_mime_type (filter_info->mime_type);
+              rule_content_type = g_content_type_from_mime_type (rule->u.mime_type);
+              match = g_content_type_is_a (filter_content_type, rule_content_type);
+              g_free (filter_content_type);
+              g_free (rule_content_type);
+
+              if (match)
+                return TRUE;
+            }
           break;
         case FILTER_RULE_APPLICATION:
           if (filter_info->applications)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]