[Xfce4-commits] <thunar:master> Use Name field as display name of desktop entries (bug #6860).

Jannis Pohlmann noreply at xfce.org
Sun Nov 21 13:08:01 CET 2010


Updating branch refs/heads/master
         to dc4dc713ed71b8efa22e6b69fccc17eaf56336b1 (commit)
       from 7f36fdf8f76bd771bc0400267985b57608d4d95a (commit)

commit dc4dc713ed71b8efa22e6b69fccc17eaf56336b1
Author: Jannis Pohlmann <jannis at xfce.org>
Date:   Sun Nov 21 13:05:50 2010 +0100

    Use Name field as display name of desktop entries (bug #6860).

 NEWS                 |    1 +
 thunar/thunar-file.c |   60 +++++++++++++++++++++++++++++++++++---------------
 2 files changed, 43 insertions(+), 18 deletions(-)

diff --git a/NEWS b/NEWS
index 6407753..3bf9944 100644
--- a/NEWS
+++ b/NEWS
@@ -13,6 +13,7 @@
   (bug #6748).
 - Fix a typo in configure.in.in (bug #6724).
 - Use GTK_STOCK_FILE as the fallback icon for files (bug #6662).
+- Use Name field as display name of desktop entries (bug #6860).
 
 1.1.4
 =====
diff --git a/thunar/thunar-file.c b/thunar/thunar-file.c
index b5544d1..6a341ba 100644
--- a/thunar/thunar-file.c
+++ b/thunar/thunar-file.c
@@ -778,9 +778,11 @@ thunar_file_load (ThunarFile   *file,
       /* use the filename as custom icon name for thumbnails */
       file->custom_icon_name = g_file_get_path (file->gfile);
     }
-  else if (thunar_file_is_desktop_file (file))
+
+  /* check if this file is a desktop entry */
+  if (thunar_file_is_desktop_file (file))
     {
-      /* determine the custom icon name for .desktop files */
+      /* determine the custom icon and display name for .desktop files */
 
       /* query a key file for the .desktop file */
       key_file = thunar_g_file_query_key_file (file->gfile, cancellable, NULL);
@@ -810,6 +812,25 @@ thunar_file_load (ThunarFile   *file,
                 }
             }
 
+          /* read the display name from the .desktop file (will be overwritten later
+           * if it's undefined here) */
+          file->display_name = g_key_file_get_string (key_file,
+                                                      G_KEY_FILE_DESKTOP_GROUP,
+                                                      G_KEY_FILE_DESKTOP_KEY_NAME,
+                                                      NULL);
+          
+          /* check if we have a display name now */
+          if (file->display_name != NULL)
+            {
+              /* drop the name if it's empty or has invalid encoding */
+              if (*file->display_name == '\0' 
+                  || !g_utf8_validate (file->display_name, -1, NULL))
+                {
+                  g_free (file->display_name);
+                  file->display_name = NULL;
+                }
+            }
+
           /* free the key file */
           g_key_file_free (key_file);
         }
@@ -830,28 +851,31 @@ thunar_file_load (ThunarFile   *file,
   g_free (thumbnail_dir_path);
 
   /* determine the display name */
-  if (file->info != NULL)
+  if (file->display_name == NULL)
     {
-      if (g_strcmp0 (g_file_info_get_display_name (file->info), "/") == 0)
-        file->display_name = g_strdup (_("File System"));
-      else
-        file->display_name = g_strdup (g_file_info_get_display_name (file->info));
-    }
-  else
-    {
-      if (g_file_is_native (file->gfile))
+      if (file->info != NULL)
         {
-          uri = g_file_get_path (file->gfile);
-          if (uri == NULL)
-            uri = g_file_get_uri (file->gfile);
+          if (g_strcmp0 (g_file_info_get_display_name (file->info), "/") == 0)
+            file->display_name = g_strdup (_("File System"));
+          else
+            file->display_name = g_strdup (g_file_info_get_display_name (file->info));
         }
       else
         {
-          uri = g_file_get_uri (file->gfile);
-        }
+          if (g_file_is_native (file->gfile))
+            {
+              uri = g_file_get_path (file->gfile);
+              if (uri == NULL)
+                uri = g_file_get_uri (file->gfile);
+            }
+          else
+            {
+              uri = g_file_get_uri (file->gfile);
+            }
 
-      file->display_name = g_filename_display_name (uri);
-      g_free (uri);
+          file->display_name = g_filename_display_name (uri);
+          g_free (uri);
+        }
     }
 
   /* set thumb state to unknown */



More information about the Xfce4-commits mailing list