]> Pileus Git - ~andy/gtk/commitdiff
Ensure the insertion handle stays on fake events (eg from IM)
authorCarlos Garnacho <carlos@lanedo.com>
Wed, 21 Nov 2012 15:49:37 +0000 (16:49 +0100)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 5 Mar 2013 21:47:58 +0000 (16:47 -0500)
Don't set handles mode to none if the event has send_event set.
For consistency with GtkEntry, also make GtkTextView keep the
handle mode on buffer changes.

gtk/gtkentry.c
gtk/gtktextview.c

index 6e34ab5be2018662af049d9cbe4dd5c287a65558..de85158482632cb1e3b12c762a50bcbe808ac724 100644 (file)
@@ -4492,8 +4492,10 @@ gtk_entry_key_press (GtkWidget   *widget,
 
   gtk_entry_reset_blink_time (entry);
   gtk_entry_pend_cursor_blink (entry);
-  _gtk_text_handle_set_mode (priv->text_handle,
-                             GTK_TEXT_HANDLE_MODE_NONE);
+
+  if (!event->send_event)
+    _gtk_text_handle_set_mode (priv->text_handle,
+                               GTK_TEXT_HANDLE_MODE_NONE);
 
   if (priv->editable)
     {
index 48b6441a33a6a8b7041a630ff724909a86414330..494f1004f18883229105d00b8166ba80a07e4477 100644 (file)
@@ -4755,8 +4755,9 @@ gtk_text_view_key_press_event (GtkWidget *widget, GdkEventKey *event)
   gtk_text_view_reset_blink_time (text_view);
   gtk_text_view_pend_cursor_blink (text_view);
 
-  _gtk_text_handle_set_mode (priv->text_handle,
-                             GTK_TEXT_HANDLE_MODE_NONE);
+  if (!event->send_event)
+    _gtk_text_handle_set_mode (priv->text_handle,
+                               GTK_TEXT_HANDLE_MODE_NONE);
 
   return retval;
 }
@@ -6376,7 +6377,10 @@ gtk_text_view_buffer_changed_handler (GtkTextBuffer *buffer,
                                       gpointer       data)
 {
   GtkTextView *text_view = data;
-  gtk_text_view_update_handles (text_view, GTK_TEXT_HANDLE_MODE_NONE);
+  GtkTextViewPrivate *priv = text_view->priv;
+
+  gtk_text_view_update_handles (text_view,
+                                _gtk_text_handle_get_mode (priv->text_handle));
 }
 
 static void