Skip to content

Gtk.EventController

class — extends GObject.Object

The base class for event controllers.

These are ancillary objects associated to widgets, which react to GdkEvents, and possibly trigger actions as a consequence.

Event controllers are added to a widget with Widget.add_controller. It is rarely necessary to explicitly remove a controller with Widget.remove_controller.

See the chapter on input handling for an overview of the basic concepts, such as the capture and bubble phases of event propagation.

Methods

get_current_event

def get_current_event(self) -> Gdk.Event | None

Returns the event that is currently being handled by the controller.

At other times, None is returned.

get_current_event_device

def get_current_event_device(self) -> Gdk.Device | None

Returns the device of the event that is currently being handled by the controller.

At other times, None is returned.

get_current_event_state

def get_current_event_state(self) -> Gdk.ModifierType

Returns the modifier state of the event that is currently being handled by the controller.

At other times, 0 is returned.

get_current_event_time

def get_current_event_time(self) -> int

Returns the timestamp of the event that is currently being handled by the controller.

At other times, 0 is returned.

get_name

def get_name(self) -> str | None

Gets the name of controller.

get_propagation_limit

def get_propagation_limit(self) -> PropagationLimit

Gets the propagation limit of the event controller.

get_propagation_phase

def get_propagation_phase(self) -> PropagationPhase

Gets the propagation phase at which controller handles events.

get_widget

def get_widget(self) -> Widget | None

Returns the GtkWidget this controller relates to.

reset

def reset(self) -> None

Resets the controller to a clean state.

set_name

def set_name(self, name: str | None = ...) -> None

Sets a name on the controller that can be used for debugging.

Parameters:

  • name — a name for controller

set_propagation_limit

def set_propagation_limit(self, limit: PropagationLimit | int) -> None

Sets the event propagation limit on the event controller.

If the limit is set to PropagationLimit.SAME_NATIVE, the controller won't handle events that are targeted at widgets on a different surface, such as popovers.

Parameters:

  • limit — the propagation limit

set_propagation_phase

def set_propagation_phase(self, phase: PropagationPhase | int) -> None

Sets the propagation phase at which a controller handles events.

If phase is PropagationPhase.NONE, no automatic event handling will be performed, but other additional gesture maintenance will.

Parameters:

  • phase — a propagation phase

set_static_name

def set_static_name(self, name: str | None = ...) -> None

Sets a name on the controller that can be used for debugging.

Parameters:

  • name — a name for controller, must be a static string

Properties

name

name: str  # read/write

The name for this controller, typically used for debugging purposes.

propagation_limit

propagation_limit: PropagationLimit | int  # read/write

The limit for which events this controller will handle.

propagation_phase

propagation_phase: PropagationPhase | int  # read/write

The propagation phase at which this controller will handle events.

widget

widget: Widget  # read-only

The widget receiving the GdkEvents that the controller will handle.