Index: libnautilus-private/nautilus-icon-container.c
===================================================================
RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-icon-container.c,v
retrieving revision 1.383
diff -u -p -r1.383 nautilus-icon-container.c
--- libnautilus-private/nautilus-icon-container.c	25 Jan 2005 08:52:05 -0000	1.383
+++ libnautilus-private/nautilus-icon-container.c	17 Feb 2005 19:42:07 -0000
@@ -3867,17 +3867,13 @@ key_press_event (GtkWidget *widget,
 			handled = TRUE;
 			break;
 		case GDK_F10:
+			/* handle Ctrl+F10 because we want to display the
+			 * background popup even if something is selected.
+			 * The other cases are handled by popup_menu().
+			 */
 			if (event->state & GDK_CONTROL_MASK) {
 				handled = handle_popups (container, event,
 							 "context_click_background");
-			} else if (event->state & GDK_SHIFT_MASK) {
-				if (has_selection (container)) {
-					handled = handle_popups (container, event,
-								 "context_click_selection");
-				} else {
-					handled = handle_popups (container, event,
-								 "context_click_background");
-				}
 			}
 			break;
 		default:
@@ -3902,6 +3898,24 @@ key_press_event (GtkWidget *widget,
 	return handled;
 }
 
+static gboolean
+popup_menu (GtkWidget *widget)
+{
+	NautilusIconContainer *container;
+
+	container = NAUTILUS_ICON_CONTAINER (widget);
+
+	if (has_selection (container)) {
+		handle_popups (container, NULL,
+			       "context_click_selection");
+	} else {
+		handle_popups (container, NULL,
+			       "context_click_background");
+	}
+
+	return TRUE;
+}
+
 static void
 draw_canvas_background (EelCanvas *canvas,
 			int x, int y, int width, int height)
@@ -4242,6 +4256,7 @@ nautilus_icon_container_class_init (Naut
 	widget_class->button_release_event = button_release_event;
 	widget_class->motion_notify_event = motion_notify_event;
 	widget_class->key_press_event = key_press_event;
+	widget_class->popup_menu = popup_menu;
 	widget_class->get_accessible = get_accessible;
 	widget_class->style_set = style_set;
 	widget_class->expose_event = expose_event;
