pspp-sheet-view: Make Control+Left, Control+Right go to ends of lines. 20130204032125/pspp
authorBen Pfaff <blp@cs.stanford.edu>
Mon, 4 Feb 2013 08:03:56 +0000 (00:03 -0800)
committerBen Pfaff <blp@cs.stanford.edu>
Mon, 4 Feb 2013 08:03:56 +0000 (00:03 -0800)
John Darrington reported that, in Gnumeric, Control+Left goes to the first
column and Control+Right goes to the last column.  This commit changes
the data sheet to do the same

src/ui/gui/pspp-sheet-view.c

index a040954a407ebf6b665d604e8f13c5447a4efeb6..0b99df2b0289606b15cfa96d432a1cf1f6eb4597 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPPIRE - a graphical user interface for PSPP.
-   Copyright (C) 2011, 2012 Free Software Foundation, Inc.
+   Copyright (C) 2011, 2012, 2013 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -934,21 +934,21 @@ pspp_sheet_view_class_init (PsppSheetViewClass *class)
                                     G_TYPE_INT, -1);
 
       gtk_binding_entry_add_signal (binding_set[i], GDK_KP_Right, 0, "move-cursor", 2,
-                                    G_TYPE_ENUM, GTK_MOVEMENT_VISUAL_POSITIONS,
+                                    G_TYPE_ENUM, GTK_MOVEMENT_DISPLAY_LINE_ENDS,
                                     G_TYPE_INT, 1);
 
       gtk_binding_entry_add_signal (binding_set[i], GDK_KP_Left, 0, "move-cursor", 2,
-                                    G_TYPE_ENUM, GTK_MOVEMENT_VISUAL_POSITIONS,
+                                    G_TYPE_ENUM, GTK_MOVEMENT_DISPLAY_LINE_ENDS,
                                     G_TYPE_INT, -1);
 
       gtk_binding_entry_add_signal (binding_set[i], GDK_Right, GDK_CONTROL_MASK,
                                     "move-cursor", 2,
-                                    G_TYPE_ENUM, GTK_MOVEMENT_VISUAL_POSITIONS,
+                                    G_TYPE_ENUM, GTK_MOVEMENT_DISPLAY_LINE_ENDS,
                                     G_TYPE_INT, 1);
 
       gtk_binding_entry_add_signal (binding_set[i], GDK_Left, GDK_CONTROL_MASK,
                                     "move-cursor", 2,
-                                    G_TYPE_ENUM, GTK_MOVEMENT_VISUAL_POSITIONS,
+                                    G_TYPE_ENUM, GTK_MOVEMENT_DISPLAY_LINE_ENDS,
                                     G_TYPE_INT, -1);
 
       gtk_binding_entry_add_signal (binding_set[i], GDK_KP_Right, GDK_CONTROL_MASK,
@@ -12420,6 +12420,24 @@ pspp_sheet_view_event (GtkWidget *widget,
         }
       break;
 
+    case GDK_CONTROL_MASK:
+      switch (event->keyval)
+        {
+        case GDK_Left:      case GDK_KP_Left:
+          if (!is_all_selected (widget) && !is_at_left (widget))
+            return FALSE;
+          break;
+
+        case GDK_Right:     case GDK_KP_Right:
+          if (!is_all_selected (widget) && !is_at_right (widget))
+            return FALSE;
+          break;
+
+        default:
+          return FALSE;
+        }
+      break;
+
     default:
       return FALSE;
     }