From c85145d73c87d7db264d7a9176f4b0d6531060ad Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Fri, 15 Nov 2013 11:08:29 -0500 Subject: [PATCH] entry: Make sure we chain up in enter/leave handlers To ensure that the focus tracking executes correctly. https://bugzilla.gnome.org/show_bug.cgi?id=706749 --- src/st/st-entry.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/st/st-entry.c b/src/st/st-entry.c index 0ddd1ff26..3cc61aabf 100644 --- a/src/st/st-entry.c +++ b/src/st/st-entry.c @@ -700,13 +700,23 @@ st_entry_set_cursor (StEntry *entry, } static gboolean -st_entry_crossing_event (ClutterActor *actor, - ClutterCrossingEvent *event) +st_entry_enter_event (ClutterActor *actor, + ClutterCrossingEvent *event) { if (event->source == ST_ENTRY (actor)->priv->entry && event->related != NULL) - st_entry_set_cursor (ST_ENTRY (actor), (event->type == CLUTTER_ENTER)); + st_entry_set_cursor (ST_ENTRY (actor), TRUE); - return FALSE; + return CLUTTER_ACTOR_CLASS (st_entry_parent_class)->enter_event (actor, event); +} + +static gboolean +st_entry_leave_event (ClutterActor *actor, + ClutterCrossingEvent *event) +{ + if (event->source == ST_ENTRY (actor)->priv->entry && event->related != NULL) + st_entry_set_cursor (ST_ENTRY (actor), FALSE); + + return CLUTTER_ACTOR_CLASS (st_entry_parent_class)->leave_event (actor, event); } static void @@ -741,8 +751,8 @@ st_entry_class_init (StEntryClass *klass) actor_class->key_press_event = st_entry_key_press_event; actor_class->key_focus_in = st_entry_key_focus_in; - actor_class->enter_event = st_entry_crossing_event; - actor_class->leave_event = st_entry_crossing_event; + actor_class->enter_event = st_entry_enter_event; + actor_class->leave_event = st_entry_leave_event; widget_class->style_changed = st_entry_style_changed; widget_class->navigate_focus = st_entry_navigate_focus;