diff options
author | Christian Hergert <chergert@redhat.com> | 2022-07-11 10:55:57 -0700 |
---|---|---|
committer | Christian Hergert <chergert@redhat.com> | 2022-07-11 10:55:57 -0700 |
commit | 858b04ea54e0b79406d473f6b74d4af40f884f8d (patch) | |
tree | ba08c320f6d4e53614e2c989b8c4c5d522a62a91 | |
parent | 22a29ad746882fe11ce3d908fb2945b96d19c3ab (diff) | |
download | gtksourceview-858b04ea54e0b79406d473f6b74d4af40f884f8d.tar.gz |
hover: return focus to view when dismissing
But only if the hover assistant contains the current focus.
-rw-r--r-- | gtksourceview/gtksourcehoverassistant.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/gtksourceview/gtksourcehoverassistant.c b/gtksourceview/gtksourcehoverassistant.c index 75acf952..5e9a32b1 100644 --- a/gtksourceview/gtksourcehoverassistant.c +++ b/gtksourceview/gtksourcehoverassistant.c @@ -90,7 +90,20 @@ gtk_source_hover_assistant_motion_cb (GtkSourceHoverAssistant *self, y < -GRACE_Y || y > height + GRACE_Y) { + GtkWidget *focus = gtk_root_get_focus (root); + GtkWidget *view = gtk_widget_get_ancestor (GTK_WIDGET (self), GTK_SOURCE_TYPE_VIEW); + gboolean return_focus; + + return_focus = focus != NULL && + (focus == GTK_WIDGET (self) || + gtk_widget_is_ancestor (focus, GTK_WIDGET (self))); + gtk_widget_hide (GTK_WIDGET (self)); + + if (return_focus && view != NULL) + { + gtk_widget_grab_focus (GTK_WIDGET (view)); + } } } |