Bug 652629 - GnomeCanvas: Disregard synthesized crossing events
synth_crossing() in gtkwidget.c does not set valid pointer coordinates, but GnomeCanvas relies on these coordinates to figure out what canvas item the event applies to. Detect these synthesized GDK_ENTER_NOTIFY and GDK_LEAVE_NOTIFY events and disregard them. This was breaking drag-and-drop of EMinicards and probably elsewhere.
This commit is contained in:
committed by
Rodrigo Moya
parent
3f74670d94
commit
1282a20dbf
@ -2736,6 +2736,13 @@ gnome_canvas_crossing (GtkWidget *widget, GdkEventCrossing *event)
|
||||
if (event->window != bin_window)
|
||||
return FALSE;
|
||||
|
||||
/* XXX Detect and disregard synthesized crossing events generated
|
||||
* by synth_crossing() in gtkwidget.c. The pointer coordinates
|
||||
* are invalid and pick_current_item() relies on them. */
|
||||
if (event->x == 0 && event->y == 0 &&
|
||||
event->x_root == 0 && event->y_root == 0)
|
||||
return FALSE;
|
||||
|
||||
canvas->state = event->state;
|
||||
return pick_current_item (canvas, (GdkEvent *) event);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user