From a3cfb42888b3cc377ed1e1d0e5fe491fcc1b395d Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Fri, 4 Oct 2019 00:42:28 +0200 Subject: [PATCH] eventcontrollerkey: Change behavior of contains-focus contains-focus now returns TRUE when is-focus is TRUE instead of FALSE. Fixes #2184 --- gtk/gtkeventcontrollerkey.c | 11 ++++++----- gtk/gtktreeview.c | 1 - testsuite/gtk/focus.c | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/gtk/gtkeventcontrollerkey.c b/gtk/gtkeventcontrollerkey.c index d11f68b441..07c8b8150c 100644 --- a/gtk/gtkeventcontrollerkey.c +++ b/gtk/gtkeventcontrollerkey.c @@ -112,11 +112,11 @@ update_focus (GtkEventControllerKey *key, case GDK_NOTIFY_ANCESTOR: case GDK_NOTIFY_NONLINEAR: is_focus = focus_in; - contains_focus = FALSE; + contains_focus = is_focus; break; case GDK_NOTIFY_INFERIOR: is_focus = focus_in; - contains_focus = !focus_in; + contains_focus = TRUE; break; case GDK_NOTIFY_UNKNOWN: default: @@ -257,7 +257,7 @@ gtk_event_controller_key_class_init (GtkEventControllerKeyClass *klass) * GtkEventControllerKey:is-focus: * * Whether focus is in the controllers widget itself, - * as opposed to in a descendent widget. See + * opposed to in a descendent widget. See also * #GtkEventControllerKey:contains-focus. * * When handling focus events, this property is updated @@ -274,8 +274,9 @@ gtk_event_controller_key_class_init (GtkEventControllerKeyClass *klass) /** * GtkEventControllerKey:contains-focus: * - * Whether focus is in a descendant of the controllers widget. - * See #GtkEventControllerKey:is-focus. + * Whether focus is contain in the controllers widget. See + * See #GtkEventControllerKey:is-focus for whether the focus is in the widget itself + * or inside a descendent. * * When handling focus events, this property is updated * before #GtkEventControllerKey::focus-in or diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c index 9c2354450e..aa449479ae 100644 --- a/gtk/gtktreeview.c +++ b/gtk/gtktreeview.c @@ -5619,7 +5619,6 @@ gtk_tree_view_key_controller_focus_out (GtkEventControllerKey *key, /* destroy interactive search dialog */ if (tree_view->priv->search_window && - !gtk_event_controller_key_is_focus (key) && !gtk_event_controller_key_contains_focus (key)) gtk_tree_view_search_window_hide (tree_view->priv->search_window, tree_view, gtk_get_current_event_device ()); diff --git a/testsuite/gtk/focus.c b/testsuite/gtk/focus.c index a8f11e15de..73b777a05f 100644 --- a/testsuite/gtk/focus.c +++ b/testsuite/gtk/focus.c @@ -139,7 +139,7 @@ test_window_focus (void) g_assert_cmpstr (s->str, ==, "window: focus-in GDK_CROSSING_NORMAL GDK_NOTIFY_VIRTUAL is-focus: 0 contains-focus: 1\n" -"box: focus-in GDK_CROSSING_NORMAL GDK_NOTIFY_ANCESTOR is-focus: 1 contains-focus: 0\n"); +"box: focus-in GDK_CROSSING_NORMAL GDK_NOTIFY_ANCESTOR is-focus: 1 contains-focus: 1\n"); g_string_truncate (s, 0); gtk_widget_grab_focus (entry1); @@ -150,7 +150,7 @@ test_window_focus (void) g_assert_cmpstr (s->str, ==, "box: focus-out GDK_CROSSING_NORMAL GDK_NOTIFY_INFERIOR is-focus: 0 contains-focus: 1\n" "box1: focus-in GDK_CROSSING_NORMAL GDK_NOTIFY_VIRTUAL is-focus: 0 contains-focus: 1\n" -"entry1: focus-in GDK_CROSSING_NORMAL GDK_NOTIFY_ANCESTOR is-focus: 1 contains-focus: 0\n"); +"entry1: focus-in GDK_CROSSING_NORMAL GDK_NOTIFY_ANCESTOR is-focus: 1 contains-focus: 1\n"); g_string_truncate (s, 0); @@ -165,7 +165,7 @@ test_window_focus (void) "entry1: focus-out GDK_CROSSING_NORMAL GDK_NOTIFY_NONLINEAR is-focus: 0 contains-focus: 0\n" "box1: focus-out GDK_CROSSING_NORMAL GDK_NOTIFY_NONLINEAR_VIRTUAL is-focus: 0 contains-focus: 0\n" "box2: focus-in GDK_CROSSING_NORMAL GDK_NOTIFY_NONLINEAR_VIRTUAL is-focus: 0 contains-focus: 1\n" -"entry2: focus-in GDK_CROSSING_NORMAL GDK_NOTIFY_NONLINEAR is-focus: 1 contains-focus: 0\n"); +"entry2: focus-in GDK_CROSSING_NORMAL GDK_NOTIFY_NONLINEAR is-focus: 1 contains-focus: 1\n"); g_string_truncate (s, 0); @@ -179,7 +179,7 @@ test_window_focus (void) g_assert_cmpstr (s->str, ==, "entry2: focus-out GDK_CROSSING_NORMAL GDK_NOTIFY_ANCESTOR is-focus: 0 contains-focus: 0\n" "box2: focus-out GDK_CROSSING_NORMAL GDK_NOTIFY_VIRTUAL is-focus: 0 contains-focus: 0\n" -"box: focus-in GDK_CROSSING_NORMAL GDK_NOTIFY_INFERIOR is-focus: 1 contains-focus: 0\n"); +"box: focus-in GDK_CROSSING_NORMAL GDK_NOTIFY_INFERIOR is-focus: 1 contains-focus: 1\n"); g_string_truncate (s, 0); -- 2.30.2