diff options
author | Christian Hergert <chergert@redhat.com> | 2023-02-02 22:55:47 -0800 |
---|---|---|
committer | Christian Hergert <chergert@redhat.com> | 2023-02-02 22:55:47 -0800 |
commit | f071cb73c7d23e9f54c86fb5f3462ffa543e81cc (patch) | |
tree | 8b816f26fe0cd0aa13fe6af412a703d7af8c3149 | |
parent | 90ef5d4e20f6d7cdf18d375c387097e65525ab64 (diff) | |
download | gtksourceview-f071cb73c7d23e9f54c86fb5f3462ffa543e81cc.tar.gz |
snippets: dismiss completion when switching focus locations
-rw-r--r-- | gtksourceview/gtksourceview-private.h | 1 | ||||
-rw-r--r-- | gtksourceview/gtksourceview-snippets.c | 4 | ||||
-rw-r--r-- | gtksourceview/gtksourceview.c | 13 |
3 files changed, 18 insertions, 0 deletions
diff --git a/gtksourceview/gtksourceview-private.h b/gtksourceview/gtksourceview-private.h index 1f5ad0b2..b1653697 100644 --- a/gtksourceview/gtksourceview-private.h +++ b/gtksourceview/gtksourceview-private.h @@ -86,6 +86,7 @@ gboolean _gtk_source_view_snippets_key_pressed (GtkSourceViewSnippets *snippets, guint keycode, GdkModifierType state); +void _gtk_source_view_hide_completion (GtkSourceView *view); gboolean _gtk_source_view_get_current_line_background (GtkSourceView *view, GdkRGBA *rgba); gboolean _gtk_source_view_get_current_line_number_background (GtkSourceView *view, diff --git a/gtksourceview/gtksourceview-snippets.c b/gtksourceview/gtksourceview-snippets.c index 36711278..e538ddba 100644 --- a/gtksourceview/gtksourceview-snippets.c +++ b/gtksourceview/gtksourceview-snippets.c @@ -593,6 +593,8 @@ _gtk_source_view_snippets_key_pressed (GtkSourceViewSnippets *snippets, */ if (snippet != NULL) { + _gtk_source_view_hide_completion (snippets->view); + if ((state & modifiers) == 0) { if (!_gtk_source_snippet_move_next (snippet)) @@ -629,6 +631,8 @@ _gtk_source_view_snippets_key_pressed (GtkSourceViewSnippets *snippets, !has_selection && gtk_source_view_snippets_try_expand (snippets, &end)) { + _gtk_source_view_hide_completion (snippets->view); + gtk_source_view_snippets_scroll_to_insert (snippets); ret = GDK_EVENT_STOP; diff --git a/gtksourceview/gtksourceview.c b/gtksourceview/gtksourceview.c index f8f51835..70382569 100644 --- a/gtksourceview/gtksourceview.c +++ b/gtksourceview/gtksourceview.c @@ -5563,3 +5563,16 @@ _gtk_source_view_has_snippet (GtkSourceView *view) return priv->snippets.queue.length > 0; } + +void +_gtk_source_view_hide_completion (GtkSourceView *view) +{ + GtkSourceViewPrivate *priv = gtk_source_view_get_instance_private (view); + + g_return_if_fail (GTK_SOURCE_IS_VIEW (view)); + + if (priv->completion != NULL) + { + gtk_source_completion_hide (priv->completion); + } +} |