[gtksourceview] Completion: block interactive completion during paste-clipboard



commit 7b2d8183205beb8a1713be61f3a72a0750f8e8a0
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Sat Feb 23 17:37:31 2013 +0100

    Completion: block interactive completion during paste-clipboard

 gtksourceview/gtksourcecompletion.c |   31 ++++++++++++-------------------
 1 files changed, 12 insertions(+), 19 deletions(-)
---
diff --git a/gtksourceview/gtksourcecompletion.c b/gtksourceview/gtksourcecompletion.c
index 8519892..5c2a41e 100644
--- a/gtksourceview/gtksourcecompletion.c
+++ b/gtksourceview/gtksourcecompletion.c
@@ -1494,19 +1494,6 @@ buffer_mark_set_cb (GtkTextBuffer       *buffer,
 }
 
 static void
-buffer_paste_done_cb (GtkTextBuffer       *buffer,
-                      GtkClipboard        *clipboard,
-                      GtkSourceCompletion *completion)
-{
-       /* Cancel any interactive completion in progress after a paste */
-       if (completion->priv->show_timed_out_id)
-       {
-               g_source_remove (completion->priv->show_timed_out_id);
-               completion->priv->show_timed_out_id = 0;
-       }
-}
-
-static void
 connect_view (GtkSourceCompletion *completion)
 {
        GtkTextBuffer *buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (completion->priv->view));
@@ -1529,6 +1516,18 @@ connect_view (GtkSourceCompletion *completion)
                                 completion,
                                 0);
 
+       g_signal_connect_object (completion->priv->view,
+                                "paste-clipboard",
+                                G_CALLBACK (gtk_source_completion_block_interactive),
+                                completion,
+                                G_CONNECT_SWAPPED);
+
+       g_signal_connect_object (completion->priv->view,
+                                "paste-clipboard",
+                                G_CALLBACK (gtk_source_completion_unblock_interactive),
+                                completion,
+                                G_CONNECT_SWAPPED | G_CONNECT_AFTER);
+
        g_signal_connect_object (buffer,
                                 "mark-set",
                                 G_CALLBACK (buffer_mark_set_cb),
@@ -1559,12 +1558,6 @@ connect_view (GtkSourceCompletion *completion)
                                 completion,
                                 G_CONNECT_SWAPPED | G_CONNECT_AFTER);
 
-       g_signal_connect_object (buffer,
-                                "paste-done",
-                                G_CALLBACK (buffer_paste_done_cb),
-                                completion,
-                                0);
-
        completion->priv->signals_ids[TEXT_BUFFER_DELETE_RANGE] =
                g_signal_connect_object (buffer,
                                         "delete-range",


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]