[gtk+] GtkEntry: Recompute in text-inserted/text-deleted



commit ecc5342b0d21b2dc9d4b3ed441107897332ca431
Author: Timm Bäder <mail baedert org>
Date:   Fri Dec 4 20:38:31 2015 +0100

    GtkEntry: Recompute in text-inserted/text-deleted
    
    The text-inserted/text-deleted handlers rely on the cursor positions
    being unadjusted after the text change, so we can't do it in
    buffer_notify_text.

 gtk/gtkentry.c |   13 ++-----------
 1 files changed, 2 insertions(+), 11 deletions(-)
---
diff --git a/gtk/gtkentry.c b/gtk/gtkentry.c
index 803f0e5..78f73a2 100644
--- a/gtk/gtkentry.c
+++ b/gtk/gtkentry.c
@@ -5425,6 +5425,7 @@ buffer_inserted_text (GtkEntryBuffer *buffer,
     selection_bound += n_chars;
 
   gtk_entry_set_positions (entry, current_pos, selection_bound);
+  gtk_entry_recompute (entry);
 
   /* Calculate the password hint if it needs to be displayed. */
   if (n_chars == 1 && !priv->visible)
@@ -5474,6 +5475,7 @@ buffer_deleted_text (GtkEntryBuffer *buffer,
     selection_bound -= MIN (selection_bound, end_pos) - position;
 
   gtk_entry_set_positions (entry, current_pos, selection_bound);
+  gtk_entry_recompute (entry);
 
   /* We might have deleted the selection */
   gtk_entry_update_primary_selection (entry);
@@ -5498,20 +5500,9 @@ buffer_notify_text (GtkEntryBuffer *buffer,
                     GParamSpec     *spec,
                     GtkEntry       *entry)
 {
-  int new_current_pos, new_selection_bound;
-  guint buffer_length;
-
   if (entry->priv->handling_key_event)
     gtk_entry_obscure_mouse_cursor (entry);
 
-  /* Make sure the cursor/selection stays in the new text length */
-  buffer_length = gtk_entry_buffer_get_length (buffer);
-  new_current_pos = MIN (entry->priv->current_pos, buffer_length);
-  new_selection_bound = MIN (entry->priv->selection_bound, buffer_length);
-
-  gtk_entry_set_positions (entry, new_current_pos, new_selection_bound);
-
-  gtk_entry_recompute (entry);
   emit_changed (entry);
   g_object_notify_by_pspec (G_OBJECT (entry), entry_props[PROP_TEXT]);
 }


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