| [Freeciv-Dev] (PR#15850) 1, 2, 3, and 4 keys don't move unit[Top] [All Lists][Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
 
 
<URL: http://bugs.freeciv.org/Ticket/Display.html?id=15850 >
> [joseph@xxxxxxxxx - Sa 11. Mär 2006, 05:46:16]:
> 
> hmm - i see that the arrow keys now work as expected - could perhaps
> home, end, pgup, and pgdn be used to round out the diagonal direction
> keys and then we wouldn't need to use the number keys at all for movement?
> 
> joe
Here's a patch which implements this. PgUp and PgDown were previously
used to scroll the message window. With this patch that functionality
moves to Shift+PgUp and Shift+PgDown.
 Index: client/gui-gtk-2.0/gui_main.c
===================================================================
--- client/gui-gtk-2.0/gui_main.c       (Revision 11992)
+++ client/gui-gtk-2.0/gui_main.c       (Arbeitskopie)
@@ -452,17 +452,6 @@
     return FALSE;
   }
 
-  if (ev->keyval == GDK_Page_Up) {
-    g_signal_emit_by_name(main_message_area, "move_cursor",
-                         GTK_MOVEMENT_PAGES, -1, FALSE);
-    return TRUE;
-  }
-  if (ev->keyval == GDK_Page_Down) {
-    g_signal_emit_by_name(main_message_area, "move_cursor",
-                         GTK_MOVEMENT_PAGES, 1, FALSE);
-    return TRUE;
-  }
-
   if (!client_is_observer()) { /* FIXME: is this check right? */
     if ((ev->state & GDK_SHIFT_MASK)) {
       switch (ev->keyval) {
@@ -490,6 +479,16 @@
        case GDK_KP_Enter:
          key_end_turn();
          return TRUE;
+
+        case GDK_Page_Up:
+          g_signal_emit_by_name(main_message_area, "move_cursor",
+                         GTK_MOVEMENT_PAGES, -1, FALSE);
+          return TRUE;
+
+        case GDK_Page_Down:
+          g_signal_emit_by_name(main_message_area, "move_cursor",
+                         GTK_MOVEMENT_PAGES, 1, FALSE);
+          return TRUE;
   
        default:
          break;
@@ -498,20 +497,36 @@
 
     if (GTK_WIDGET_HAS_FOCUS(map_canvas)) {
       switch (ev->keyval) {
-       case GDK_Left:
-         key_unit_move(DIR8_WEST);
-         return TRUE;
+        case GDK_Up:
+          key_unit_move(DIR8_NORTH);
+          return TRUE;
 
-       case GDK_Right:
-         key_unit_move(DIR8_EAST);
-         return TRUE;
+        case GDK_Page_Up:
+          key_unit_move(DIR8_NORTHEAST);
+          return TRUE;
 
-       case GDK_Up:
-         key_unit_move(DIR8_NORTH);
-         return TRUE;
+        case GDK_Right:
+          key_unit_move(DIR8_EAST);
+          return TRUE;
 
-       case GDK_Down:
-         key_unit_move(DIR8_SOUTH);
+        case GDK_Page_Down:
+          key_unit_move(DIR8_SOUTHEAST);
+          return TRUE;
+
+        case GDK_Down:
+          key_unit_move(DIR8_SOUTH);
+          return TRUE;
+
+        case GDK_End:
+          key_unit_move(DIR8_SOUTHWEST);
+          return TRUE;
+      
+        case GDK_Left:
+          key_unit_move(DIR8_WEST);
+          return TRUE;
+
+        case GDK_Home:         
+          key_unit_move(DIR8_NORTHWEST);
          return TRUE;
 
        default:
 
| [Prev in Thread] | Current Thread | [Next in Thread] |  
[Freeciv-Dev] (PR#15850) 1, 2, 3, and 4 keys don't move unit,
Christian Prochaska <=
 
 |  |