diff -rupN -x Makefile -x .deps nautilus-2.30.0-original/src/nautilus-location-bar.c nautilus-2.30.0-patched/src/nautilus-location-bar.c
--- nautilus-2.30.0-original/src/nautilus-location-bar.c	2010-06-03 14:50:32.000000000 +0200
+++ nautilus-2.30.0-patched/src/nautilus-location-bar.c	2010-06-03 14:47:35.000000000 +0200
@@ -309,11 +309,22 @@ editable_activate_callback (GtkEntry *en
 {
 	NautilusNavigationBar *bar;
 	const char *entry_text;
+	char *path_root, *full_path;
 
 	bar = NAUTILUS_NAVIGATION_BAR (user_data);
 
 	entry_text = gtk_entry_get_text (entry);
+		
 	if (entry_text != NULL && *entry_text != '\0') {
+		if (!g_path_is_absolute (entry_text)) {
+			/* Fix non absolute paths */
+			path_root = nautilus_location_entry_get_current_directory (NAUTILUS_LOCATION_ENTRY (entry));
+			if (path_root != NULL) {
+				full_path = g_strconcat (path_root, entry_text, NULL);
+				gtk_entry_set_text (entry, full_path);
+				g_free (full_path);
+			}
+		}
 		nautilus_navigation_bar_location_changed (bar);
 	}
 }
@@ -507,6 +518,7 @@ nautilus_location_bar_set_location (Naut
 		g_object_unref (file);
 		nautilus_entry_set_text (NAUTILUS_ENTRY (bar->details->entry),
 					 formatted_location);
+		nautilus_location_entry_update_current_directory (NAUTILUS_LOCATION_ENTRY (bar->details->entry), formatted_location);
 		set_position_and_selection_to_end (GTK_EDITABLE (bar->details->entry));
 		g_free (formatted_location);
 	}
@@ -571,6 +583,7 @@ nautilus_location_bar_update_label (Naut
 	}
 
 	current_text = gtk_entry_get_text (GTK_ENTRY (bar->details->entry));
+	
 	location = g_file_parse_name (current_text);
 	last_location = g_file_parse_name (bar->details->last_location);
 	
diff -rupN -x Makefile -x .deps nautilus-2.30.0-original/src/nautilus-location-entry.c nautilus-2.30.0-patched/src/nautilus-location-entry.c
--- nautilus-2.30.0-original/src/nautilus-location-entry.c	2010-06-03 14:50:32.000000000 +0200
+++ nautilus-2.30.0-patched/src/nautilus-location-entry.c	2010-06-03 14:19:45.000000000 +0200
@@ -80,8 +80,9 @@ try_to_expand_path (gpointer callback_da
 {
 	NautilusLocationEntry *entry;
 	GtkEditable *editable;
-	char *suffix, *user_location;
+	char *suffix, *user_location, *absolute_location;
 	int user_location_length, pos;
+	gboolean is_relative_path;
 
 	entry = NAUTILUS_LOCATION_ENTRY (callback_data);
 	editable = GTK_EDITABLE (entry);
@@ -89,9 +90,16 @@ try_to_expand_path (gpointer callback_da
 	user_location_length = g_utf8_strlen (user_location, -1);
 	entry->details->idle_id = 0;
 	
-	suffix = g_filename_completer_get_completion_suffix (entry->details->completer,
+	if (!g_path_is_absolute (user_location)) {
+		absolute_location = g_strconcat (entry->details->current_directory, user_location, NULL);
+		suffix = g_filename_completer_get_completion_suffix (entry->details->completer,
+							     absolute_location);
+		g_free (absolute_location);
+	} else {
+		suffix = g_filename_completer_get_completion_suffix (entry->details->completer,
 							     user_location);
-	g_free (user_location);
+		g_free (user_location);
+	}
 
 	/* if we've got something, add it to the entry */
 	if (suffix != NULL) {
@@ -334,6 +342,23 @@ nautilus_location_entry_class_init (Naut
 	object_class->destroy = destroy;
 }
 
+gchar*
+nautilus_location_entry_get_current_directory (NautilusLocationEntry *entry)
+{
+	return entry->details->current_directory;
+}
+
+void
+nautilus_location_entry_update_current_directory (NautilusLocationEntry *entry,
+							 const char            *path)
+ {
+	 if (entry->details->current_directory != NULL) {
+		 g_free (entry->details->current_directory);
+	 }
+	 
+	 entry->details->current_directory = g_strconcat(path, G_DIR_SEPARATOR_S, NULL);
+ }
+
 void
 nautilus_location_entry_set_secondary_action (NautilusLocationEntry *entry,
 					      NautilusLocationEntryAction secondary_action)
diff -rupN -x Makefile -x .deps nautilus-2.30.0-original/src/nautilus-location-entry.h nautilus-2.30.0-patched/src/nautilus-location-entry.h
--- nautilus-2.30.0-original/src/nautilus-location-entry.h	2010-06-03 14:50:32.000000000 +0200
+++ nautilus-2.30.0-patched/src/nautilus-location-entry.h	2010-06-03 14:08:28.000000000 +0200
@@ -63,5 +63,8 @@ void       nautilus_location_entry_set_s
 							 const char            *special_text);
 void       nautilus_location_entry_set_secondary_action (NautilusLocationEntry *entry,
 							 NautilusLocationEntryAction secondary_action);
+void       nautilus_location_entry_update_current_directory (NautilusLocationEntry *entry,
+							 const char            *path);
+gchar*     nautilus_location_entry_get_current_directory (NautilusLocationEntry *entry);
 
 #endif /* NAUTILUS_LOCATION_ENTRY_H */
