fixed using 'PageUp' and 'PageDown' keys for element list in editor
[rocksndiamonds.git] / src / editor.c
index 1d868b7185bb505aaf6ea09587331294d3e66b4f..81d189decd0a7b1ba08ddddd291c4441abac2e59 100644 (file)
 #define ED_MODE_PROPERTIES_CHANGE      ED_TEXTBUTTON_ID_PROPERTIES_CHANGE
 
 /* how many steps can be cancelled */
-#define NUM_UNDO_STEPS                 (10 + 1)
+#define NUM_UNDO_STEPS                 (64 + 1)
 
 /* values for elements with score for certain actions */
 #define MIN_SCORE                      0
@@ -1047,7 +1047,7 @@ static struct
   {
     IMG_EDITOR_BUTTON_GFX_UNDO,                        GADGET_ID_UNDO,
     &editor.button.undo,                       GD_TYPE_NORMAL_BUTTON,
-    "undo/redo last operation",                        'U'
+    "undo/redo last operation",                        'u'
   },
   {
     IMG_EDITOR_BUTTON_GFX_CONF,                        GADGET_ID_INFO,
@@ -3351,7 +3351,10 @@ static int new_element3 = EL_SAND;
 #define BUTTON_ELEMENT(button) ((button) == 1 ? new_element1 : \
                                (button) == 2 ? new_element2 : \
                                (button) == 3 ? new_element3 : EL_EMPTY)
-#define BUTTON_STEPSIZE(button) ((button) == 1 ? 1 : (button) == 2 ? 5 : 10)
+#define BUTTON_STEPSIZE(button) ((button) == 1 ?  1 : \
+                                (button) == 2 ?  5 : \
+                                (button) == 3 ? 10 : \
+                                (button))
 
 /* forward declaration for internal use */
 static void ModifyEditorCounterValue(int, int);
@@ -11747,11 +11750,11 @@ void HandleLevelEditorKeyInput(Key key)
        break;
       case KSYM_Page_Up:
        id = GADGET_ID_SCROLL_LIST_UP;
-       button = MB_RIGHTBUTTON;
+       button = ED_ELEMENTLIST_BUTTONS_VERT - 1;
        break;
       case KSYM_Page_Down:
        id = GADGET_ID_SCROLL_LIST_DOWN;
-       button = MB_RIGHTBUTTON;
+       button = ED_ELEMENTLIST_BUTTONS_VERT - 1;
        break;
 
       case KSYM_Home:
@@ -11833,11 +11836,13 @@ void HandleLevelEditorKeyInput(Key key)
       ClickOnGadget(level_editor_gadget[GADGET_ID_PROPERTIES], button);
     else if (letter == '.')
       ClickOnGadget(level_editor_gadget[GADGET_ID_SINGLE_ITEMS], button);
-    else if (letter == 'R')
+    else if (letter == 'U')
       ClickOnGadget(level_editor_gadget[GADGET_ID_UNDO], 3);
-    else if (letter == '0')
+    else if (key == KSYM_KP_Subtract)
+      ClickOnGadget(level_editor_gadget[GADGET_ID_ZOOM], 1);
+    else if (key == KSYM_KP_0 || letter == '0')
       ClickOnGadget(level_editor_gadget[GADGET_ID_ZOOM], 2);
-    else if (letter == '+')
+    else if (key == KSYM_KP_Add || letter == '+')
       ClickOnGadget(level_editor_gadget[GADGET_ID_ZOOM], 3);
     else if (key == KSYM_Return ||
             key == KSYM_space ||
@@ -11911,7 +11916,7 @@ void PrintEditorGadgetInfoText(struct GadgetInfo *gi)
       else if (gi->custom_id == GADGET_ID_TEST)
        sprintf(shortcut, " ('Enter' or 'Shift-%c')", key);
       else if (gi->custom_id == GADGET_ID_UNDO)
-       sprintf(shortcut, " ('Shift-%c/R')", key);
+       sprintf(shortcut, " ('%c/Shift-U')", key);
       else if (gi->custom_id == GADGET_ID_ZOOM)
        sprintf(shortcut, " ('%c', '0', '+')", key);
       else