gtk3: Fix enter and leave signals in EventControllerMotion
The Gtk.EventMotionController implementation in Gtk3 doesn't emit the enter or leave signals when the mouse cursor enters or leaves the associated widget. After doing several tests, I discovered that the gtk_event_controller_handle_event() method never receives any of the events from the Gtk core, although they are generated inside the core and enter-notify-event and leave-notify-event signals are correctly emited. This patch fixes it by adding the missing gtk_widget_real_XXXXX_event handlers for enter and leave event notifications. Fix #7225
This commit is contained in:
parent
222eb83904
commit
e71a817fff
@ -683,6 +683,8 @@ static gboolean gtk_widget_real_button_event (GtkWidget
|
||||
GdkEventButton *event);
|
||||
static gboolean gtk_widget_real_motion_event (GtkWidget *widget,
|
||||
GdkEventMotion *event);
|
||||
static gboolean gtk_widget_real_crossing_event (GtkWidget *widget,
|
||||
GdkEventCrossing *event);
|
||||
static gboolean gtk_widget_real_key_press_event (GtkWidget *widget,
|
||||
GdkEventKey *event);
|
||||
static gboolean gtk_widget_real_key_release_event (GtkWidget *widget,
|
||||
@ -1076,8 +1078,8 @@ gtk_widget_class_init (GtkWidgetClass *klass)
|
||||
klass->destroy_event = NULL;
|
||||
klass->key_press_event = gtk_widget_real_key_press_event;
|
||||
klass->key_release_event = gtk_widget_real_key_release_event;
|
||||
klass->enter_notify_event = NULL;
|
||||
klass->leave_notify_event = NULL;
|
||||
klass->enter_notify_event = gtk_widget_real_crossing_event;
|
||||
klass->leave_notify_event = gtk_widget_real_crossing_event;
|
||||
klass->configure_event = NULL;
|
||||
klass->focus_in_event = gtk_widget_real_focus_in_event;
|
||||
klass->focus_out_event = gtk_widget_real_focus_out_event;
|
||||
@ -7217,6 +7219,14 @@ gtk_widget_real_motion_event (GtkWidget *widget,
|
||||
GTK_PHASE_BUBBLE);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gtk_widget_real_crossing_event (GtkWidget *widget,
|
||||
GdkEventCrossing *event)
|
||||
{
|
||||
return _gtk_widget_run_controllers (widget, (GdkEvent *) event,
|
||||
GTK_PHASE_BUBBLE);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gtk_widget_real_key_press_event (GtkWidget *widget,
|
||||
GdkEventKey *event)
|
||||
|
Loading…
Reference in New Issue
Block a user