[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