nautilus r14326 - in branches/multiview: . src src/file-manager



Author: cneumair
Date: Mon Jul  7 18:24:28 2008
New Revision: 14326
URL: http://svn.gnome.org/viewvc/nautilus?rev=14326&view=rev

Log:
2008-07-07  Christian Neumair  <cneumair gnome org>

	* src/file-manager/fm-tree-view.c (got_activation_uri_callback),
	(button_pressed_callback), (fm_tree_view_activate_file):
	* src/nautilus-places-sidebar.c (open_selected_bookmark),
	(bookmarks_button_press_event_cb):
	Open in new tab on middle-click. Fix middle-click selection
	interaction.


Modified:
   branches/multiview/ChangeLog
   branches/multiview/src/file-manager/fm-tree-view.c
   branches/multiview/src/nautilus-places-sidebar.c

Modified: branches/multiview/src/file-manager/fm-tree-view.c
==============================================================================
--- branches/multiview/src/file-manager/fm-tree-view.c	(original)
+++ branches/multiview/src/file-manager/fm-tree-view.c	Mon Jul  7 18:24:28 2008
@@ -338,18 +338,20 @@
         char *uri, *file_uri;
         FMTreeView *view;
 	GdkScreen *screen;
-	NautilusWindowOpenMode mode;
 	GFile *location;
 	NautilusWindowSlotInfo *slot;
+	gboolean open_in_same_slot;
 	
         view = FM_TREE_VIEW (callback_data);
 
 	screen = gtk_widget_get_screen (GTK_WIDGET (view->details->tree_widget));
 
         g_assert (file == view->details->activation_file);
-        
-        mode = ((view->details->activation_flags & NAUTILUS_WINDOW_OPEN_FLAG_NEW_WINDOW) != 0)
-		? NAUTILUS_WINDOW_OPEN_IN_NAVIGATION : NAUTILUS_WINDOW_OPEN_ACCORDING_TO_MODE;
+
+	open_in_same_slot =
+		(view->details->activation_flags &
+		 (NAUTILUS_WINDOW_OPEN_FLAG_NEW_WINDOW |
+		  NAUTILUS_WINDOW_OPEN_FLAG_NEW_TAB)) == 0;
 
 	slot = nautilus_window_info_get_active_slot (view->details->window);
 
@@ -377,7 +379,7 @@
 			nautilus_window_slot_info_open_location
 				(slot,
 				 location, 
-				 mode,
+				 NAUTILUS_WINDOW_OPEN_ACCORDING_TO_MODE,
 				 view->details->activation_flags,
 				 NULL);
 			g_object_unref (location);
@@ -390,12 +392,16 @@
 		}
 		   
 	} else if (uri != NULL) {
-		if (view->details->selection_location == NULL ||
+		if (!open_in_same_slot ||
+		    view->details->selection_location == NULL ||
 		    strcmp (uri, view->details->selection_location) != 0) {
-			if (view->details->selection_location != NULL) {
-				g_free (view->details->selection_location);
+			if (open_in_same_slot) {
+				if (view->details->selection_location != NULL) {
+					g_free (view->details->selection_location);
+				}
+				view->details->selection_location = g_strdup (uri);
 			}
-			view->details->selection_location = g_strdup (uri);
+
 			nautilus_debug_log (FALSE, NAUTILUS_DEBUG_LOG_DOMAIN_USER,
 					    "tree view window_info_open_location window=%p: %s",
 					    view->details->window, uri);
@@ -403,7 +409,7 @@
 			nautilus_window_slot_info_open_location
 				(slot,
 				 location,
-				 mode,
+				 NAUTILUS_WINDOW_OPEN_ACCORDING_TO_MODE,
 				 view->details->activation_flags,
 				 NULL);
 			g_object_unref (location);
@@ -783,6 +789,8 @@
 		file = sort_model_path_to_file (view, path);
 		if (file) {
 			fm_tree_view_activate_file (view, file, 
+						    (event->state & GDK_CONTROL_MASK) != 0 ?
+						    NAUTILUS_WINDOW_OPEN_FLAG_NEW_WINDOW :
 						    NAUTILUS_WINDOW_OPEN_FLAG_NEW_TAB);
 			nautilus_file_unref (file);
 		}
@@ -804,6 +812,13 @@
 
 	cancel_activation (view);
 
+	if (view->details->activation_flags & NAUTILUS_WINDOW_OPEN_FLAG_NEW_TAB &&
+	    !eel_preferences_get_boolean (NAUTILUS_PREFERENCES_ENABLE_TABS)) {
+		view->details->activation_flags &= ~NAUTILUS_WINDOW_OPEN_FLAG_NEW_TAB;
+		view->details->activation_flags |= NAUTILUS_WINDOW_OPEN_FLAG_NEW_WINDOW;
+	}
+
+
 	view->details->activation_file = nautilus_file_ref (file);
 	view->details->activation_flags = flags;
 		

Modified: branches/multiview/src/nautilus-places-sidebar.c
==============================================================================
--- branches/multiview/src/nautilus-places-sidebar.c	(original)
+++ branches/multiview/src/nautilus-places-sidebar.c	Mon Jul  7 18:24:28 2008
@@ -1292,6 +1292,12 @@
 		return;
 	}
 
+	if (flags & NAUTILUS_WINDOW_OPEN_FLAG_NEW_TAB &&
+	    !eel_preferences_get_boolean (NAUTILUS_PREFERENCES_ENABLE_TABS)) {
+		flags &= ~NAUTILUS_WINDOW_OPEN_FLAG_NEW_TAB;
+		flags |= NAUTILUS_WINDOW_OPEN_FLAG_NEW_WINDOW;
+	}
+
 	gtk_tree_model_get (model, &iter, PLACES_SIDEBAR_COLUMN_URI, &uri, -1);
 
 	if (uri != NULL) {
@@ -1825,10 +1831,14 @@
 		gtk_tree_view_get_path_at_pos (tree_view, (int) event->x, (int) event->y, 
 					       &path, NULL, NULL, NULL);
 
-		open_selected_bookmark (sidebar, model, path, NAUTILUS_WINDOW_OPEN_FLAG_NEW_TAB);
+		open_selected_bookmark (sidebar, model, path,
+					event->state & GDK_CONTROL_MASK ?
+					NAUTILUS_WINDOW_OPEN_FLAG_NEW_WINDOW :
+					NAUTILUS_WINDOW_OPEN_FLAG_NEW_TAB);
 
 		if (path != NULL) {
 			gtk_tree_path_free (path);
+			return TRUE;
 		}
 	}
 	return FALSE;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]