[Goodies-commits] r3891 - ristretto/trunk/src

Stephan Arts stephan at xfce.org
Sun Jan 27 22:48:37 CET 2008


Author: stephan
Date: 2008-01-27 21:48:37 +0000 (Sun, 27 Jan 2008)
New Revision: 3891

Modified:
   ristretto/trunk/src/navigator.c
Log:
Implement directory_handle



Modified: ristretto/trunk/src/navigator.c
===================================================================
--- ristretto/trunk/src/navigator.c	2008-01-27 21:36:45 UTC (rev 3890)
+++ ristretto/trunk/src/navigator.c	2008-01-27 21:48:37 UTC (rev 3891)
@@ -64,6 +64,8 @@
                              ThunarVfsPath *event_path,
                              RsttoNavigator *nav);
 
+static gint
+cb_rstto_navigator_entry_path_compare_func(RsttoNavigatorEntry *entry, ThunarVfsPath *path);
 
 enum
 {
@@ -1229,13 +1231,44 @@
                              RsttoNavigator *nav)
 {
     RsttoNavigatorEntry *entry = NULL;
+    GList *iter = g_list_find_custom(nav->file_list, event_path, (GCompareFunc)cb_rstto_navigator_entry_path_compare_func);
+    if (iter != NULL)
+        entry = iter->data;
+
     switch (event)
     {
         case THUNAR_VFS_MONITOR_EVENT_CHANGED:
+            if(entry)
+            {
+                rstto_navigator_entry_load_image (entry, TRUE);
+            }
             break;
         case THUNAR_VFS_MONITOR_EVENT_CREATED:
+            if (entry)
+            {
+                g_critical("File created... yet it is already here");
+                rstto_navigator_remove(entry->navigator, entry);
+                rstto_navigator_entry_free(entry);
+            }
+
+            ThunarVfsInfo *info = thunar_vfs_info_new_for_path(event_path, NULL);
+            if (info)
+            {
+                gchar *file_media = thunar_vfs_mime_info_get_media(info->mime_info);
+                if(!strcmp(file_media, "image"))
+                {
+                    entry = rstto_navigator_entry_new(nav, info);
+                    rstto_navigator_add (nav, entry, FALSE);
+                }
+                g_free(file_media);
+            }
             break;
         case THUNAR_VFS_MONITOR_EVENT_DELETED:
+            if(entry)
+            {
+                rstto_navigator_remove(entry->navigator, entry);
+                rstto_navigator_entry_free(entry);
+            }
             break;
         default:
             break;
@@ -1307,3 +1340,13 @@
         nav->monitor_handle = thunar_vfs_monitor_add_directory(nav->monitor, dir_path, (ThunarVfsMonitorCallback)cb_rstto_navigator_fs_event, nav);
     }
 }
+
+static gint
+cb_rstto_navigator_entry_path_compare_func(RsttoNavigatorEntry *entry, ThunarVfsPath *path)
+{
+    if (thunar_vfs_path_equal(entry->info->path, path) == TRUE)
+    {
+        return 0;
+    }
+    return 1;
+}




More information about the Goodies-commits mailing list