summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Neumair <cneumair@gnome.org>2008-04-27 08:08:30 +0000
committerChristian Neumair <cneumair@src.gnome.org>2008-04-27 08:08:30 +0000
commitbb89a8ec8cd279ae604c06371e8ed1fae226ccda (patch)
treebbf0da45210e3005eabc3dee1327d00ab67690c0
parent94ba669e3ff3aa22d103ca41faeb83d85e030ccb (diff)
downloadnautilus-bb89a8ec8cd279ae604c06371e8ed1fae226ccda.tar.gz
Do not activate twice if the activated paths are already selected. Always
2008-04-27 Christian Neumair <cneumair@gnome.org> * src/file-manager/fm-list-view.c (button_press_callback): Do not activate twice if the activated paths are already selected. Always expand when an expander is clicked, even when the activation paths are already selected. Add 4 to the GtkTreeView's claimed expander size, which accounts for hard coded internal GtkTreeView expander padding. Fixes #448562. Thanks to Paweł Paprota. svn path=/branches/gnome-2-22/; revision=14096
-rw-r--r--ChangeLog9
-rw-r--r--src/file-manager/fm-list-view.c27
2 files changed, 25 insertions, 11 deletions
diff --git a/ChangeLog b/ChangeLog
index c451cafe5..21960416e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
2008-04-27 Christian Neumair <cneumair@gnome.org>
+ * src/file-manager/fm-list-view.c (button_press_callback):
+ Do not activate twice if the activated paths are already selected.
+ Always expand when an expander is clicked, even when the activation
+ paths are already selected. Add 4 to the GtkTreeView's claimed
+ expander size, which accounts for hard coded internal GtkTreeView
+ expander padding. Fixes #448562. Thanks to Paweł Paprota.
+
+2008-04-27 Christian Neumair <cneumair@gnome.org>
+
* libnautilus-private/nautilus-icon-container.c
(emit_atk_focus_tracker_notify), (set_keyboard_focus),
(select_range), (select_one_unselect_others), (rubberband_select),
diff --git a/src/file-manager/fm-list-view.c b/src/file-manager/fm-list-view.c
index 939132b20..e77302f63 100644
--- a/src/file-manager/fm-list-view.c
+++ b/src/file-manager/fm-list-view.c
@@ -629,6 +629,17 @@ button_press_callback (GtkWidget *widget, GdkEventButton *event, gpointer callba
allow_drag = FALSE;
if (gtk_tree_view_get_path_at_pos (tree_view, event->x, event->y,
&path, NULL, NULL, NULL)) {
+ gtk_widget_style_get (widget,
+ "expander-size", &expander_size,
+ "horizontal-separator", &horizontal_separator,
+ NULL);
+ /* TODO we should not hardcode this extra padding. It is
+ * EXPANDER_EXTRA_PADDING from GtkTreeView.
+ */
+ expander_size += 4;
+ on_expander = (event->x <= horizontal_separator / 2 +
+ gtk_tree_path_get_depth (path) * expander_size);
+
/* Keep track of path of last click so double clicks only happen
* on the same item */
if ((event->button == 1 || event->button == 2) &&
@@ -643,7 +654,8 @@ button_press_callback (GtkWidget *widget, GdkEventButton *event, gpointer callba
/* Double clicking does not trigger a D&D action. */
view->details->drag_button = 0;
if (view->details->double_click_path[1] &&
- gtk_tree_path_compare (view->details->double_click_path[0], view->details->double_click_path[1]) == 0) {
+ gtk_tree_path_compare (view->details->double_click_path[0], view->details->double_click_path[1]) == 0 &&
+ !on_expander) {
/* NOTE: Activation can actually destroy the view if we're switching */
if (!button_event_modifies_selection (event)) {
if ((event->button == 1 || event->button == 3)) {
@@ -660,8 +672,9 @@ button_press_callback (GtkWidget *widget, GdkEventButton *event, gpointer callba
nautilus_file_unref (file);
}
}
+ } else {
+ tree_view_class->button_press_event (widget, event);
}
- tree_view_class->button_press_event (widget, event);
} else {
/* We're going to filter out some situations where
@@ -676,15 +689,7 @@ button_press_callback (GtkWidget *widget, GdkEventButton *event, gpointer callba
if ((event->button == 1 || event->button == 2) &&
((event->state & GDK_CONTROL_MASK) != 0 ||
- (event->state & GDK_SHIFT_MASK) == 0)) {
- gtk_widget_style_get (widget,
- "expander-size", &expander_size,
- "horizontal-separator", &horizontal_separator,
- NULL);
- on_expander = (event->x <= horizontal_separator / 2 +
- gtk_tree_path_get_depth (path) * expander_size);
-
-
+ (event->state & GDK_SHIFT_MASK) == 0)) {
view->details->row_selected_on_button_down = gtk_tree_selection_path_is_selected (selection, path);
if (view->details->row_selected_on_button_down) {
call_parent = on_expander;