nautilus r14599 - in trunk: . libnautilus-private



Author: cneumair
Date: Mon Sep  8 13:35:04 2008
New Revision: 14599
URL: http://svn.gnome.org/viewvc/nautilus?rev=14599&view=rev

Log:
2008-09-08  Christian Neumair  <cneumair gnome org>

	* libnautilus-private/nautilus-icon-container.c (select_range),
	(keyboard_move_to), (handle_icon_button_press):
	Allow to select range additively when pressing ctrl and shift, i.e.
	don't unselect the old selection. Fixes #410497, at least for icon
	view.


Modified:
   trunk/ChangeLog
   trunk/libnautilus-private/nautilus-icon-container.c

Modified: trunk/libnautilus-private/nautilus-icon-container.c
==============================================================================
--- trunk/libnautilus-private/nautilus-icon-container.c	(original)
+++ trunk/libnautilus-private/nautilus-icon-container.c	Mon Sep  8 13:35:04 2008
@@ -2297,7 +2297,8 @@
 static gboolean
 select_range (NautilusIconContainer *container,
 	      NautilusIcon *icon1,
-	      NautilusIcon *icon2)
+	      NautilusIcon *icon2,
+	      gboolean unselect_outside_range)
 {
 	gboolean selection_changed;
 	GList *p;
@@ -2322,8 +2323,10 @@
 			}
 		}
 		
-		selection_changed |= icon_set_selected
-			(container, icon, select);
+		if (select || unselect_outside_range) {
+			selection_changed |= icon_set_selected
+				(container, icon, select);
+		}
 
 		if (unmatched_icon != NULL && icon == unmatched_icon) {
 			select = FALSE;
@@ -3517,7 +3520,7 @@
 
 		set_keyboard_focus (container, icon);
 
-		if (select_range (container, start_icon, icon)) {
+		if (select_range (container, start_icon, icon, TRUE)) {
 			g_signal_emit (container,
 				       signals[SELECTION_CHANGED], 0);
 		}
@@ -6303,7 +6306,6 @@
 	details->icon_selected_on_button_down = icon->is_selected;
 	
 	if ((event->button == DRAG_BUTTON || event->button == MIDDLE_BUTTON) &&
-	    (event->state & GDK_CONTROL_MASK) == 0 &&
 	    (event->state & GDK_SHIFT_MASK) != 0) {
 		NautilusIcon *start_icon;
 
@@ -6312,7 +6314,8 @@
 			start_icon = icon;
 			details->range_selection_base_icon = icon;
 		} 
-		if (select_range (container, start_icon, icon)) {
+		if (select_range (container, start_icon, icon,
+				  (event->state & GDK_CONTROL_MASK) == 0)) {
 			g_signal_emit (container,
 				       signals[SELECTION_CHANGED], 0);
 		}



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