textview: Match entry behavior for backspace
authorMatthias Clasen <mclasen@redhat.com>
Sat, 22 Jul 2023 13:40:17 +0000 (09:40 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 22 Jul 2023 13:40:17 +0000 (09:40 -0400)
As pointed out in #3417, there is a long-standing
difference in how GtkEntry and GtkTextView treat
Ctrl-Shift-Backspace (and other variations): GtkEntry
always operates on the selection first, if it exists.
GtkTextView only handled plain Backspace that way, and
ignores the selection for other variations.

There is no good reason for this difference, so just
remove it and make GtkTextView behave the same as
GtkEntry.

Fixes: #3417
gtk/gtktextview.c

index b0a68f85044d87cb6c928a34fd3ba51f500f0c70..961ceb4963e32bf80a4076b8471549e48bb4ee05 100644 (file)
@@ -6885,16 +6885,13 @@ gtk_text_view_delete_from_cursor (GtkTextView   *text_view,
 
   priv = text_view->priv;
 
-  if (type == GTK_DELETE_CHARS)
+  /* If a selection exists, we operate on it first */
+  if (gtk_text_buffer_delete_selection (get_buffer (text_view), TRUE,
+                                        priv->editable))
     {
-      /* Char delete deletes the selection, if one exists */
-      if (gtk_text_buffer_delete_selection (get_buffer (text_view), TRUE,
-                                            priv->editable))
-        {
-          priv->need_im_reset = TRUE;
-          gtk_text_view_reset_im_context (text_view);
-          return;
-        }
+      priv->need_im_reset = TRUE;
+      gtk_text_view_reset_im_context (text_view);
+      return;
     }
 
   gtk_text_buffer_get_iter_at_mark (get_buffer (text_view), &insert,