Author: jannis
Date: 2009-07-18 16:55:47 +0000 (Sat, 18 Jul 2009)
New Revision: 30346

Modified:
   thunar/branches/migration-to-gio/ChangeLog
   thunar/branches/migration-to-gio/thunar/thunar-file.c
   thunar/branches/migration-to-gio/thunar/thunar-file.h
   thunar/branches/migration-to-gio/thunarx/thunarx-file-info.h
Log:
        * thunar/thunar-file.{c,h}: Introduce new function
          thunar_file_same_filesystem() which uses
          G_FILE_ATTRIBUTE_ID_FILESYSTEM to check whether two files reside on
          the same device/filesystem. Use this to fix the copy/move decision
          in thunar_file_accepts_drop().
        * thunarx/thunarx-file-info.h: Add the "id" namespace to
          THUNARX_FILE_INFO_NAMESPACE.

Modified: thunar/branches/migration-to-gio/ChangeLog
===================================================================
--- thunar/branches/migration-to-gio/ChangeLog  2009-07-18 15:30:19 UTC (rev 
30345)
+++ thunar/branches/migration-to-gio/ChangeLog  2009-07-18 16:55:47 UTC (rev 
30346)
@@ -1,5 +1,15 @@
 2009-07-18     Jannis Pohlmann <jan...@xfce.org>
 
+       * thunar/thunar-file.{c,h}: Introduce new function
+         thunar_file_same_filesystem() which uses
+         G_FILE_ATTRIBUTE_ID_FILESYSTEM to check whether two files reside on
+         the same device/filesystem. Use this to fix the copy/move decision
+         in thunar_file_accepts_drop().
+       * thunarx/thunarx-file-info.h: Add the "id" namespace to
+         THUNARX_FILE_INFO_NAMESPACE.
+
+2009-07-18     Jannis Pohlmann <jan...@xfce.org>
+
        * thunar/thunar-launcher.c: Make executing files work again. Note that
          this only works for one selected file right now. Poking/launching 
          multiple files/directories still have to be worked on anyway.

Modified: thunar/branches/migration-to-gio/thunar/thunar-file.c
===================================================================
--- thunar/branches/migration-to-gio/thunar/thunar-file.c       2009-07-18 
15:30:19 UTC (rev 30345)
+++ thunar/branches/migration-to-gio/thunar/thunar-file.c       2009-07-18 
16:55:47 UTC (rev 30346)
@@ -329,10 +329,6 @@
   if (file->filesystem_info != NULL)
     g_object_unref (file->filesystem_info);
 
-  /* release the mount */
-  if (file->mount != NULL)
-    g_object_unref (file->mount);
-
   /* free the custom icon name */
   g_free (file->custom_icon_name);
   
@@ -661,7 +657,6 @@
       file = g_object_new (THUNAR_TYPE_FILE, NULL);
       file->gfile = g_object_ref (gfile);
       file->info = NULL;
-      file->mount = NULL;
       file->filesystem_info = NULL;
       file->custom_icon_name = NULL;
       file->display_name = NULL;
@@ -767,13 +762,6 @@
       file->filesystem_info = NULL;
     }
 
-  /* release the current mount */
-  if (file->mount != NULL)
-    {
-      g_object_unref (file->mount);
-      file->mount = NULL;
-    }
-
   /* free the custom icon name */
   g_free (file->custom_icon_name);
 
@@ -817,9 +805,6 @@
                                                         cancellable,
                                                         NULL);
 
-  /* try to detect the corresponding mount */
-  file->mount = g_file_find_enclosing_mount (file->gfile, cancellable, NULL);
-
   /* determine the basename */
   file->basename = g_file_get_basename (file->gfile);
   _thunar_assert (file->basename != NULL);
@@ -1431,7 +1416,7 @@
                * are on the same disk, and the source file is owned by the 
current user.
                */
               if (ofile == NULL 
-                  || (!g_mount_is_same_drive (ofile->mount, file->mount))
+                  || !thunar_file_same_filesystem (file, ofile)
                   || (ofile->info != NULL 
                       && g_file_info_get_attribute_uint32 (ofile->info, 
                                                            
G_FILE_ATTRIBUTE_UNIX_UID) != effective_user_id))
@@ -3139,6 +3124,33 @@
 
 
 
+gboolean
+thunar_file_same_filesystem (const ThunarFile *file_a,
+                             const ThunarFile *file_b)
+{
+  const gchar *filesystem_id_a;
+  const gchar *filesystem_id_b;
+
+  _thunar_return_val_if_fail (THUNAR_IS_FILE (file_a), FALSE);
+  _thunar_return_val_if_fail (THUNAR_IS_FILE (file_b), FALSE);
+
+  /* return false if we have no information about one of the files */
+  if (file_a->info == NULL || file_b->info == NULL)
+    return FALSE;
+
+  /* determine the filesystem IDs */
+  filesystem_id_a = g_file_info_get_attribute_string (file_a->info, 
+                                                      
G_FILE_ATTRIBUTE_ID_FILESYSTEM);
+
+  filesystem_id_b = g_file_info_get_attribute_string (file_b->info, 
+                                                      
G_FILE_ATTRIBUTE_ID_FILESYSTEM);
+
+  /* compare the filesystem IDs */
+  return exo_str_is_equal (filesystem_id_a, filesystem_id_b);
+}
+
+
+
 /**
  * thunar_file_cache_lookup:
  * @file : a #GFile.

Modified: thunar/branches/migration-to-gio/thunar/thunar-file.h
===================================================================
--- thunar/branches/migration-to-gio/thunar/thunar-file.h       2009-07-18 
15:30:19 UTC (rev 30345)
+++ thunar/branches/migration-to-gio/thunar/thunar-file.h       2009-07-18 
16:55:47 UTC (rev 30346)
@@ -115,7 +115,6 @@
   GFileMonitor  *monitor;
   GFileInfo     *info;
   GFileInfo     *filesystem_info;
-  GMount        *mount;
   GFile         *gfile;
   gchar         *custom_icon_name;
   gchar         *display_name;
@@ -249,6 +248,9 @@
                                                     const ThunarFile       
*file_b,
                                                     gboolean                
case_sensitive);
 
+gboolean          thunar_file_same_filesystem      (const ThunarFile       
*file_a,
+                                                    const ThunarFile       
*file_b);
+
 ThunarFile       *thunar_file_cache_lookup         (const GFile            
*file);
 
 

Modified: thunar/branches/migration-to-gio/thunarx/thunarx-file-info.h
===================================================================
--- thunar/branches/migration-to-gio/thunarx/thunarx-file-info.h        
2009-07-18 15:30:19 UTC (rev 30345)
+++ thunar/branches/migration-to-gio/thunarx/thunarx-file-info.h        
2009-07-18 16:55:47 UTC (rev 30346)
@@ -38,6 +38,7 @@
  **/
 #define THUNARX_FILE_INFO_NAMESPACE \
   "access::*," \
+  "id::*," \
   "mountable::*," \
   "preview::*," \
   "standard::*," \

_______________________________________________
Xfce4-commits mailing list
Xfce4-commits@xfce.org
http://foo-projects.org/mailman/listinfo/xfce4-commits

Reply via email to