diff --git a/src/nautilus-location-entry.c b/src/nautilus-location-entry.c
index 79270db..d2605cd 100644
--- a/src/nautilus-location-entry.c
+++ b/src/nautilus-location-entry.c
@@ -89,7 +89,11 @@ try_to_expand_path (gpointer callback_data)
 	user_location_length = g_utf8_strlen (user_location, -1);
 	entry->details->idle_id = 0;
 
-	if (!g_path_is_absolute (user_location)) {
+	if (!g_path_is_absolute (user_location) 
+#ifndef G_OS_WIN32
+            && user_location[0] != '~'
+#endif
+            ) {
 		absolute_location = g_build_filename (entry->details->current_directory, user_location, NULL);
 		suffix = g_filename_completer_get_completion_suffix (entry->details->completer,
 							     absolute_location);
@@ -336,7 +340,11 @@ nautilus_location_entry_activate (GtkEntry *entry)
 	if (entry_text != NULL && *entry_text != '\0') {
 		uri_scheme = g_uri_parse_scheme (entry_text);
 
-		if (!g_path_is_absolute (entry_text) && uri_scheme == NULL) {
+		if (!g_path_is_absolute (entry_text) && uri_scheme == NULL
+#ifndef G_OS_WIN32
+            && entry_text[0] != '~'
+#endif
+            ) {
 			/* Fix non absolute paths */
 			full_path = g_build_filename (loc_entry->details->current_directory, entry_text, NULL);
 			gtk_entry_set_text (entry, full_path);
