Hi,
I've posted a patch to solve long-standing issue
http://bugs.gnome.org/94618 , please see my attachment comment at the
bug, I took care of nested elements and also made a suggestion about
improving on them..

Thanks!
From b00458d9586854adb2bb834c6a11e111e20f09b4 Mon Sep 17 00:00:00 2001
From: Nelson Benitez Leon <nbenit...@gmail.com>
Date: Mon, 12 Dec 2011 17:36:20 +0100
Subject: [PATCH] [List view] Show background contextual menu when clicking on
 blank space

Ignore it for blank space on nested elements because the contextual
menu shown is only for the current view folder.

Fixes bug 94618
---
 src/nautilus-list-view.c |   10 +++++++++-
 1 files changed, 9 insertions(+), 1 deletions(-)

diff --git a/src/nautilus-list-view.c b/src/nautilus-list-view.c
index 969197c..167d51a 100644
--- a/src/nautilus-list-view.c
+++ b/src/nautilus-list-view.c
@@ -642,11 +642,13 @@ button_press_callback (GtkWidget *widget, GdkEventButton *event, gpointer callba
 	int double_click_time;
 	int expander_size, horizontal_separator;
 	gboolean on_expander;
+	gboolean blank_click;
 
 	view = NAUTILUS_LIST_VIEW (callback_data);
 	tree_view = GTK_TREE_VIEW (widget);
 	tree_view_class = GTK_WIDGET_GET_CLASS (tree_view);
 	selection = gtk_tree_view_get_selection (tree_view);
+	blank_click = FALSE;
 
 	if (event->window != gtk_tree_view_get_bin_window (tree_view)) {
 		return FALSE;
@@ -736,7 +738,10 @@ button_press_callback (GtkWidget *widget, GdkEventButton *event, gpointer callba
 			 * want that; we want the right click menu or single
 			 * click to apply to everything that's currently selected. */
 			
-			if (event->button == 3 && gtk_tree_selection_path_is_selected (selection, path)) {
+			if (event->button == 3 && 
+			    (gtk_tree_selection_path_is_selected (selection, path)
+			      || ((blank_click = gtk_tree_view_is_blank_at_pos (tree_view, event->x, event->y, NULL, NULL, NULL, NULL))
+				&& gtk_tree_path_get_depth (path) == 1))) {
 				call_parent = FALSE;
 			} 
 			
@@ -805,6 +810,9 @@ button_press_callback (GtkWidget *widget, GdkEventButton *event, gpointer callba
 			}
 			
 			if (event->button == 3) {
+				if (blank_click && gtk_tree_path_get_depth (path) == 1) {
+					gtk_tree_selection_unselect_all (gtk_tree_view_get_selection (tree_view));
+				}
 				do_popup_menu (widget, view, event);
 			}
 		}
-- 
1.7.7.3

-- 
nautilus-list mailing list
nautilus-list@gnome.org
http://mail.gnome.org/mailman/listinfo/nautilus-list

Reply via email to