forked from AuroraMiddleware/gtk
listbase: Don't start rubberband on ::drag-end
GtkGestrureDrag::drag-end can be emitted when the pointer has just crossed the drag threshold and we have not started the rubberband yet. This happens if another gesture has claimed the event sequence earlier in the current event propagation chain. In such situation, our ::drag-end calls gtk_list_base_drag_update(), which proceeds to start the rubberband. That's obviously wrong. Additionally, it also tries to get modifiers from an event it we are already denied, which obviously fails with criticals: `gdk_event_get_modifier_state: assertion 'GDK_IS_EVENT (event)' failed` Thus, if there is no rubberband when we receive ::drag-end, do nothing.
This commit is contained in:
parent
31da5f7e2a
commit
dc4540fae9
@ -1721,8 +1721,12 @@ gtk_list_base_drag_end (GtkGestureDrag *gesture,
|
||||
double offset_y,
|
||||
GtkListBase *self)
|
||||
{
|
||||
GtkListBasePrivate *priv = gtk_list_base_get_instance_private (self);
|
||||
gboolean modify, extend;
|
||||
|
||||
if (!priv->rubberband)
|
||||
return;
|
||||
|
||||
gtk_list_base_drag_update (gesture, offset_x, offset_y, self);
|
||||
get_selection_modifiers (GTK_GESTURE (gesture), &modify, &extend);
|
||||
gtk_list_base_stop_rubberband (self, modify, extend);
|
||||
|
Loading…
Reference in New Issue
Block a user