mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2025-01-12 13:30:19 +00:00
text: Make editable API irreversible
Programmatic changes to the entry contents should not become part of the undo history. Sadly, the editable implementations are also used in the code paths that we use for user-initiated changes, so we have to be careful to only set them as irreversible if we are not already in a user action. Fixes: #5622
This commit is contained in:
parent
61e4eadbce
commit
73ba043b02
@ -3402,11 +3402,15 @@ gtk_text_insert_text (GtkText *self,
|
||||
* The incoming text may a password or other secret. We make sure
|
||||
* not to copy it into temporary buffers.
|
||||
*/
|
||||
if (priv->change_count == 0)
|
||||
gtk_text_history_begin_irreversible_action (priv->history);
|
||||
begin_change (self);
|
||||
|
||||
n_inserted = gtk_entry_buffer_insert_text (get_buffer (self), *position, text, n_chars);
|
||||
|
||||
end_change (self);
|
||||
if (priv->change_count == 0)
|
||||
gtk_text_history_end_irreversible_action (priv->history);
|
||||
|
||||
if (n_inserted != n_chars)
|
||||
gtk_widget_error_bell (GTK_WIDGET (self));
|
||||
@ -3428,11 +3432,16 @@ gtk_text_delete_text (GtkText *self,
|
||||
if (start_pos == end_pos)
|
||||
return;
|
||||
|
||||
if (priv->change_count == 0)
|
||||
gtk_text_history_begin_irreversible_action (priv->history);
|
||||
begin_change (self);
|
||||
|
||||
gtk_entry_buffer_delete_text (get_buffer (self), start_pos, end_pos - start_pos);
|
||||
|
||||
end_change (self);
|
||||
if (priv->change_count == 0)
|
||||
gtk_text_history_end_irreversible_action (priv->history);
|
||||
|
||||
update_placeholder_visibility (self);
|
||||
if (priv->propagate_text_width)
|
||||
gtk_widget_queue_resize (GTK_WIDGET (self));
|
||||
|
Loading…
Reference in New Issue
Block a user