summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2014-08-11 18:02:12 +0200
committerCarlos Garnacho <carlosg@gnome.org>2014-08-11 18:09:16 +0200
commitb56f5cec3e2c6b421b57919b25457f452a2192b0 (patch)
tree4cb511a9e7cd63eb7e76f9efdd4ba4a766bc3b76
parent13b8c2ec289394083f03ea94d70cc4830874fdfb (diff)
downloadgtk+-b56f5cec3e2c6b421b57919b25457f452a2192b0.tar.gz
treeview: Check the selected node active flag before maybe starting rubberband
This check used to be present in the pre-gestures code, but was unintentionally removed when splitting code into drag/multiclick gestures. The policy used to be that if clicking happened on an already selected node, DnD would happen instead of rubberband selection, so this behavior is resuscitated. https://bugzilla.gnome.org/show_bug.cgi?id=734143
-rw-r--r--gtk/gtktreeview.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c
index 76a290d01d..e7b60d9c6b 100644
--- a/gtk/gtktreeview.c
+++ b/gtk/gtktreeview.c
@@ -3328,13 +3328,18 @@ gtk_tree_view_drag_gesture_begin (GtkGestureDrag *gesture,
GtkTreeView *tree_view)
{
gint bin_x, bin_y;
+ GtkRBTree *tree;
+ GtkRBNode *node;
gtk_tree_view_convert_widget_to_bin_window_coords (tree_view, start_x, start_y,
&bin_x, &bin_y);
tree_view->priv->press_start_x = tree_view->priv->rubber_band_x = bin_x;
tree_view->priv->press_start_y = tree_view->priv->rubber_band_y = bin_y;
+ _gtk_rbtree_find_offset (tree_view->priv->tree, bin_y + tree_view->priv->dy,
+ &tree, &node);
if (tree_view->priv->rubber_banding_enable
+ && !GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_SELECTED)
&& gtk_tree_selection_get_mode (tree_view->priv->selection) == GTK_SELECTION_MULTIPLE)
{
gboolean modify, extend;