[gtk+] treeview: Check the selected node active flag before maybe starting rubberband



commit b56f5cec3e2c6b421b57919b25457f452a2192b0
Author: Carlos Garnacho <carlosg gnome org>
Date:   Mon Aug 11 18:02:12 2014 +0200

    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

 gtk/gtktreeview.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)
---
diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c
index 76a290d..e7b60d9 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;


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