Index: gio/inotify/inotify-helper.c
===================================================================
--- gio/inotify/inotify-helper.c	(revision 7371)
+++ gio/inotify/inotify-helper.c	(working copy)
@@ -147,6 +147,7 @@ ih_event_callback (ik_event_t  *event, 
   GFileMonitorEvent eflags;
   GFile* parent;
   GFile* child;
+  GFile* other;
   
   eflags = ih_mask_to_EventFlags (event->mask);
   parent = g_file_new_for_path (sub->dirname);
@@ -158,8 +159,25 @@ ih_event_callback (ik_event_t  *event, 
   child = g_file_new_for_path (fullpath);
   g_free (fullpath);
 
+  if (event->pair)
+    {
+      const gchar *path;
+
+      path = _ip_get_path_from_wd (event->pair->wd);
+
+      if (event->pair->name)
+	fullpath = g_strdup_printf ("%s/%s", path, event->pair->name);
+      else
+	fullpath = g_strdup_printf ("%s/", path);
+      
+      other = g_file_new_for_path (fullpath);
+      g_free (fullpath);
+    }
+  else
+    other = NULL;
+
   g_file_monitor_emit_event (G_FILE_MONITOR (sub->user_data),
-			     child, NULL, eflags);
+			     child, other, eflags);
 
   g_object_unref (child);
   g_object_unref (parent);
Index: gio/inotify/inotify-path.c
===================================================================
--- gio/inotify/inotify-path.c	(revision 7371)
+++ gio/inotify/inotify-path.c	(working copy)
@@ -136,6 +136,24 @@ ip_map_wd_dir (gint32            wd, 
   g_hash_table_replace (wd_dir_hash, GINT_TO_POINTER (dir->wd), dir_list);
 }
 
+const gchar *
+_ip_get_path_from_wd (gint32 wd)
+{
+  GList *dir_list;
+  ip_watched_dir_t *dir;
+
+  g_assert (wd >= 0);
+  dir_list = g_hash_table_lookup (wd_dir_hash, GINT_TO_POINTER (wd));
+  if (dir_list)
+    {
+      dir = dir_list->data;
+      if (dir)
+	return dir->path;
+    }
+
+  return NULL;
+}
+
 gboolean
 _ip_start_watching (inotify_sub *sub)
 {
Index: gio/inotify/inotify-path.h
===================================================================
--- gio/inotify/inotify-path.h	(revision 7371)
+++ gio/inotify/inotify-path.h	(working copy)
@@ -29,5 +29,6 @@
 gboolean _ip_startup (void (*event_cb)(ik_event_t *event, inotify_sub *sub));
 gboolean _ip_start_watching (inotify_sub *sub);
 gboolean _ip_stop_watching  (inotify_sub *sub);
+const gchar *_ip_get_path_from_wd (gint32 wd);
 
 #endif
