gtk+ r21103 - in trunk: . gtk



Author: pborelli
Date: Tue Aug 12 17:21:13 2008
New Revision: 21103
URL: http://svn.gnome.org/viewvc/gtk+?rev=21103&view=rev

Log:
2008-08-12  Paolo Borelli  <pborelli katamail com>

	Bug 526234 - make shift+ctrl+del delete till the end of line

	* gtk/gtktextview.c: add shift+ctrl+del and shift+ctrl+backspace
	keyboard shortcuts to delete to the end/start of the current line.



Modified:
   trunk/ChangeLog
   trunk/gtk/gtktextview.c

Modified: trunk/gtk/gtktextview.c
==============================================================================
--- trunk/gtk/gtktextview.c	(original)
+++ trunk/gtk/gtktextview.c	Tue Aug 12 17:21:13 2008
@@ -1130,6 +1130,21 @@
 				G_TYPE_ENUM, GTK_DELETE_WORD_ENDS,
 				G_TYPE_INT, -1);
 
+  gtk_binding_entry_add_signal (binding_set, GDK_Delete, GDK_SHIFT_MASK | GDK_CONTROL_MASK,
+				"delete_from_cursor", 2,
+				G_TYPE_ENUM, GTK_DELETE_PARAGRAPH_ENDS,
+				G_TYPE_INT, 1);
+
+  gtk_binding_entry_add_signal (binding_set, GDK_KP_Delete, GDK_SHIFT_MASK | GDK_CONTROL_MASK,
+				"delete_from_cursor", 2,
+				G_TYPE_ENUM, GTK_DELETE_PARAGRAPH_ENDS,
+				G_TYPE_INT, 1);
+
+  gtk_binding_entry_add_signal (binding_set, GDK_BackSpace, GDK_SHIFT_MASK | GDK_CONTROL_MASK,
+				"delete_from_cursor", 2,
+				G_TYPE_ENUM, GTK_DELETE_PARAGRAPH_ENDS,
+				G_TYPE_INT, -1);
+
   /* Cut/copy/paste */
 
   gtk_binding_entry_add_signal (binding_set, GDK_x, GDK_CONTROL_MASK,
@@ -5480,26 +5495,42 @@
       break;
 
     case GTK_DELETE_PARAGRAPH_ENDS:
-      /* If we're already at a newline, we need to
-       * simply delete that newline, instead of
-       * moving to the next one.
-       */
-      if (gtk_text_iter_ends_line (&end))
+      if (count > 0)
         {
-          gtk_text_iter_forward_line (&end);
-          --count;
-        }
+          /* If we're already at a newline, we need to
+           * simply delete that newline, instead of
+           * moving to the next one.
+           */
+          if (gtk_text_iter_ends_line (&end))
+            {
+              gtk_text_iter_forward_line (&end);
+              --count;
+            }
 
-      while (count > 0)
-        {
-          if (!gtk_text_iter_forward_to_line_end (&end))
-            break;
+          while (count > 0)
+            {
+              if (!gtk_text_iter_forward_to_line_end (&end))
+                break;
 
-          --count;
+              --count;
+            }
         }
+      else if (count < 0)
+        {
+          if (gtk_text_iter_starts_line (&start))
+            {
+              gtk_text_iter_backward_line (&start);
+              if (!gtk_text_iter_ends_line (&end))
+                gtk_text_iter_forward_to_line_end (&start);
+            }
+          else
+            {
+              gtk_text_iter_set_line_offset (&start, 0);
+            }
+          ++count;
 
-      /* FIXME figure out what a negative count means
-         and support that */
+          gtk_text_iter_backward_lines (&start, -count);
+        }
       break;
 
     case GTK_DELETE_PARAGRAPHS:



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