diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2017-10-06 16:50:29 +0200 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2017-10-06 18:23:26 +0200 |
commit | 0724fa7f61cde5c3934587cc6d04e8922f0b0cbc (patch) | |
tree | d540e5f6f13cf7eb0cd2008f453923ed8b7606f6 | |
parent | d832e5b2dd6ae80af7a62507b4dc90eb6624d7e8 (diff) | |
download | gtk+-0724fa7f61cde5c3934587cc6d04e8922f0b0cbc.tar.gz |
treeview: Transform motion event coords to "bin window" coords
The operations rely there on bin window relative coordinates, but we
are receiving GtkTreeView relative coordinates there. Fixes clicking
on treeview expanders, which was offset by visible headers.
-rw-r--r-- | gtk/gtktreeview.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c index cc974a1653..315a5d7ade 100644 --- a/gtk/gtktreeview.c +++ b/gtk/gtktreeview.c @@ -4477,18 +4477,22 @@ gtk_tree_view_motion (GtkWidget *widget, if (tree_view->priv->tree) { + gint bin_x, bin_y; + /* If we are currently pressing down a button, we don't want to prelight anything else. */ if (gtk_gesture_is_active (tree_view->priv->drag_gesture) || gtk_gesture_is_active (tree_view->priv->multipress_gesture)) node = NULL; - new_y = MAX (0, TREE_WINDOW_Y_TO_RBTREE_Y (tree_view, y)); + gtk_tree_view_convert_widget_to_bin_window_coords (tree_view, x, y, + &bin_x, &bin_y); + new_y = MAX (0, TREE_WINDOW_Y_TO_RBTREE_Y (tree_view, bin_y)); _gtk_rbtree_find_offset (tree_view->priv->tree, new_y, &tree, &node); - tree_view->priv->event_last_x = x; - tree_view->priv->event_last_y = y; - prelight_or_select (tree_view, tree, node, x, y); + tree_view->priv->event_last_x = bin_x; + tree_view->priv->event_last_y = bin_y; + prelight_or_select (tree_view, tree, node, bin_x, bin_y); } for (list = tree_view->priv->columns; list; list = list->next) |