summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Hergert <chergert@redhat.com>2023-02-02 22:55:47 -0800
committerChristian Hergert <chergert@redhat.com>2023-02-02 22:55:47 -0800
commitf071cb73c7d23e9f54c86fb5f3462ffa543e81cc (patch)
tree8b816f26fe0cd0aa13fe6af412a703d7af8c3149
parent90ef5d4e20f6d7cdf18d375c387097e65525ab64 (diff)
downloadgtksourceview-f071cb73c7d23e9f54c86fb5f3462ffa543e81cc.tar.gz
snippets: dismiss completion when switching focus locations
-rw-r--r--gtksourceview/gtksourceview-private.h1
-rw-r--r--gtksourceview/gtksourceview-snippets.c4
-rw-r--r--gtksourceview/gtksourceview.c13
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);
+ }
+}