diff options
author | Kristian Rietveld <kris@gtk.org> | 2003-07-12 13:44:31 +0000 |
---|---|---|
committer | Kristian Rietveld <kristian@src.gnome.org> | 2003-07-12 13:44:31 +0000 |
commit | 97ddec66d63007dad350dfe3b8ca97e3f29eb2b1 (patch) | |
tree | 893230b1c27db126120f4f6fa45b85cdb6416de5 /gtk | |
parent | e680d2f5648e732d3f5bf2459e4f076e214d49dd (diff) | |
download | gdk-pixbuf-97ddec66d63007dad350dfe3b8ca97e3f29eb2b1.tar.gz |
Merged from stable.
Sat Jul 12 15:51:18 2003 Kristian Rietveld <kris@gtk.org>
Merged from stable.
* gtk/gtktreeview.c (gtk_tree_view_real_collapse_row): use
gdk_window_get_pointer instead of gdk_display_get_window_at_pointer
to avoid a roundtrip (#110272, Owen Taylor).
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/gtktreeview.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c index c09717a8c..fda9f095f 100644 --- a/gtk/gtktreeview.c +++ b/gtk/gtktreeview.c @@ -9509,6 +9509,7 @@ gtk_tree_view_real_collapse_row (GtkTreeView *tree_view, gint x, y; GList *list; GdkDisplay *display; + GdkWindow *child, *parent; if (node->children == NULL) return FALSE; @@ -9655,12 +9656,19 @@ gtk_tree_view_real_collapse_row (GtkTreeView *tree_view, * again. To do this, we fake a motion event and send it to ourselves. */ display = gdk_drawable_get_display (tree_view->priv->bin_window); - if (gdk_display_get_window_at_pointer (display, &x, &y) == tree_view->priv->bin_window) + child = tree_view->priv->bin_window; + parent = gdk_window_get_parent (child); + + if (gdk_window_get_pointer (parent, &x, &y, NULL) == child) { GdkEventMotion event; + gint child_x, child_y; + + gdk_window_get_position (child, &child_x, &child_y); + event.window = tree_view->priv->bin_window; - event.x = x; - event.y = y; + event.x = x - child_x; + event.y = y - child_y; /* despite the fact this isn't a real event, I'm almost positive it will * never trigger a drag event. maybe_drag is the only function that uses |