[gtksourceview/wip/chergert/gsv-gtk4: 207/259] tests: implement display and activate for test-completion
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtksourceview/wip/chergert/gsv-gtk4: 207/259] tests: implement display and activate for test-completion
- Date: Mon, 21 Sep 2020 23:27:48 +0000 (UTC)
commit 9d771b301c52cd38b0e92ad96d9196ee6c6e028b
Author: Christian Hergert <chergert redhat com>
Date: Sun Aug 30 14:39:38 2020 -0700
tests: implement display and activate for test-completion
tests/test-completion.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 50 insertions(+), 1 deletion(-)
---
diff --git a/tests/test-completion.c b/tests/test-completion.c
index fcf74aaf..7ea2fa67 100644
--- a/tests/test-completion.c
+++ b/tests/test-completion.c
@@ -172,8 +172,12 @@ test_provider_populate_async (GtkSourceCompletionProvider *completion_provider,
g_list_store_append (results, iter->data);
}
- g_list_free_full (proposals, g_object_unref);
g_task_return_pointer (task, results, g_object_unref);
+
+ if (provider->is_random)
+ {
+ g_list_free (proposals);
+ }
}
static GListModel *
@@ -184,6 +188,48 @@ test_provider_populate_finish (GtkSourceCompletionProvider *provider,
return g_task_propagate_pointer (G_TASK (result), error);
}
+static void
+test_provider_display (GtkSourceCompletionProvider *provider,
+ GtkSourceCompletionContext *context,
+ GtkSourceCompletionProposal *proposal,
+ GtkSourceCompletionCell *cell)
+{
+ if (TEST_IS_PROPOSAL (proposal))
+ {
+ TestProposal *p = TEST_PROPOSAL (proposal);
+
+ if (gtk_source_completion_cell_get_column (cell) == GTK_SOURCE_COMPLETION_COLUMN_TYPED_TEXT)
+ {
+ if (p->markup)
+ gtk_source_completion_cell_set_markup (cell, p->markup);
+ else if (p->label)
+ gtk_source_completion_cell_set_text (cell, p->label);
+ else if (p->text)
+ gtk_source_completion_cell_set_text (cell, p->text);
+ }
+ }
+}
+
+static void
+test_provider_activate (GtkSourceCompletionProvider *provider,
+ GtkSourceCompletionContext *context,
+ GtkSourceCompletionProposal *proposal)
+{
+ GtkTextBuffer *buffer;
+ GtkTextIter begin, end;
+
+ gtk_source_completion_context_get_bounds (context, &begin, &end);
+ buffer = gtk_text_iter_get_buffer (&begin);
+
+ if (TEST_IS_PROPOSAL (proposal))
+ {
+ gtk_text_buffer_begin_user_action (buffer);
+ gtk_text_buffer_delete (buffer, &begin, &end);
+ gtk_text_buffer_insert (buffer, &begin, TEST_PROPOSAL (proposal)->text, -1);
+ gtk_text_buffer_end_user_action (buffer);
+ }
+}
+
static void
test_provider_iface_init (GtkSourceCompletionProviderInterface *iface)
{
@@ -191,6 +237,8 @@ test_provider_iface_init (GtkSourceCompletionProviderInterface *iface)
iface->populate_async = test_provider_populate_async;
iface->populate_finish = test_provider_populate_finish;
iface->get_priority = test_provider_get_priority;
+ iface->display = test_provider_display;
+ iface->activate = test_provider_activate;
}
static void
@@ -510,6 +558,7 @@ main (int argc,
main_loop = g_main_loop_new (NULL, FALSE);
gtk_init ();
+ gtk_source_init ();
create_window ();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]