gesture: Add GTK_PHASE_TARGET
This phase is meant to run in the default widget handlers, as opposed to externally as in the bubble/capture phase. This will be most usually the expected phase for every controller replacing code in event handlers in GTK+, just so invocation and triggering order is kept unaltered.
This commit is contained in:
parent
3d34f26a6a
commit
1c48cc253d
@ -1060,8 +1060,11 @@ typedef enum
|
|||||||
* to the event widget. This option should only be used on containers that
|
* to the event widget. This option should only be used on containers that
|
||||||
* might possibly handle events before their children do.
|
* might possibly handle events before their children do.
|
||||||
* @GTK_PHASE_BUBBLE: Events are delivered in the bubble phase. The bubble
|
* @GTK_PHASE_BUBBLE: Events are delivered in the bubble phase. The bubble
|
||||||
* phase happens after the capture phase, runs from the event widget, up to
|
* phase happens after the capture phase, and before the default handlers
|
||||||
* the toplevel.
|
* are run. This phase runs from the event widget, up to the toplevel.
|
||||||
|
* @GTK_PHASE_TARGET: Events are delivered in the default widget event handlers,
|
||||||
|
* note that widget implementations must chain up on button, motion, touch and
|
||||||
|
* grab broken handlers for controllers in this phase to be run.
|
||||||
*
|
*
|
||||||
* Describes the stage at which events are fed into a #GtkEventController.
|
* Describes the stage at which events are fed into a #GtkEventController.
|
||||||
*
|
*
|
||||||
@ -1071,7 +1074,8 @@ typedef enum
|
|||||||
{
|
{
|
||||||
GTK_PHASE_NONE,
|
GTK_PHASE_NONE,
|
||||||
GTK_PHASE_CAPTURE,
|
GTK_PHASE_CAPTURE,
|
||||||
GTK_PHASE_BUBBLE
|
GTK_PHASE_BUBBLE,
|
||||||
|
GTK_PHASE_TARGET
|
||||||
} GtkPropagationPhase;
|
} GtkPropagationPhase;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1530,7 +1530,7 @@ gtk_gesture_attach (GtkGesture *gesture,
|
|||||||
GtkWidget *widget;
|
GtkWidget *widget;
|
||||||
|
|
||||||
g_return_if_fail (GTK_IS_GESTURE (gesture));
|
g_return_if_fail (GTK_IS_GESTURE (gesture));
|
||||||
g_return_if_fail (phase >= GTK_PHASE_NONE && phase <= GTK_PHASE_BUBBLE);
|
g_return_if_fail (phase >= GTK_PHASE_NONE && phase <= GTK_PHASE_TARGET);
|
||||||
|
|
||||||
widget = gtk_event_controller_get_widget (GTK_EVENT_CONTROLLER (gesture));
|
widget = gtk_event_controller_get_widget (GTK_EVENT_CONTROLLER (gesture));
|
||||||
_gtk_widget_add_controller (widget, GTK_EVENT_CONTROLLER (gesture), phase);
|
_gtk_widget_add_controller (widget, GTK_EVENT_CONTROLLER (gesture), phase);
|
||||||
|
@ -16700,8 +16700,7 @@ event_controller_grab_notify (GtkWidget *widget,
|
|||||||
if (!grab_widget || grab_widget == widget)
|
if (!grab_widget || grab_widget == widget)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (((data->phase == GTK_PHASE_NONE ||
|
if ((data->phase != GTK_PHASE_CAPTURE &&
|
||||||
data->phase == GTK_PHASE_BUBBLE) &&
|
|
||||||
!gtk_widget_is_ancestor (widget, grab_widget)) ||
|
!gtk_widget_is_ancestor (widget, grab_widget)) ||
|
||||||
(data->phase == GTK_PHASE_CAPTURE &&
|
(data->phase == GTK_PHASE_CAPTURE &&
|
||||||
!gtk_widget_is_ancestor (widget, grab_widget) &&
|
!gtk_widget_is_ancestor (widget, grab_widget) &&
|
||||||
@ -16802,7 +16801,7 @@ _gtk_widget_add_controller (GtkWidget *widget,
|
|||||||
g_return_if_fail (GTK_IS_EVENT_CONTROLLER (controller));
|
g_return_if_fail (GTK_IS_EVENT_CONTROLLER (controller));
|
||||||
g_return_if_fail (widget == gtk_event_controller_get_widget (controller));
|
g_return_if_fail (widget == gtk_event_controller_get_widget (controller));
|
||||||
g_return_if_fail (!_gtk_widget_has_controller (widget, controller));
|
g_return_if_fail (!_gtk_widget_has_controller (widget, controller));
|
||||||
g_return_if_fail (phase >= GTK_PHASE_NONE && phase <= GTK_PHASE_BUBBLE);
|
g_return_if_fail (phase >= GTK_PHASE_NONE && phase <= GTK_PHASE_TARGET);
|
||||||
|
|
||||||
priv = widget->priv;
|
priv = widget->priv;
|
||||||
data = _gtk_widget_has_controller (widget, controller);
|
data = _gtk_widget_has_controller (widget, controller);
|
||||||
|
Loading…
Reference in New Issue
Block a user