+ case KSYM_Home:
+ case KSYM_End:
+ element_shift = (key == KSYM_Home ? 0 :
+ num_editor_elements - ED_NUM_ELEMENTLIST_BUTTONS);
+
+ ModifyGadget(level_editor_gadget[GADGET_ID_SCROLL_LIST_VERTICAL],
+ GDI_SCROLLBAR_ITEM_POSITION,
+ element_shift / ED_ELEMENTLIST_BUTTONS_HORIZ, GDI_END);
+
+ ModifyEditorElementList();
+
+ break;
+
+ case KSYM_Insert:
+ case KSYM_Delete:
+#if 1
+ /* IS_EDITOR_CASCADE */
+ for (i = 0; i < num_editor_elements; i++)
+ {
+ if ((key == KSYM_Insert && i == element_shift) ||
+ (key == KSYM_Delete && new_element_shift > element_shift))
+ break;
+
+ /* jump to next cascade block (or to start of element list) */
+ if (i == 0 || IS_EDITOR_CASCADE(editor_elements[i]))
+ new_element_shift = i;
+ }
+
+ if (i < num_editor_elements)
+ element_shift = new_element_shift;
+
+ if (element_shift > num_editor_elements - ED_NUM_ELEMENTLIST_BUTTONS)
+ element_shift = num_editor_elements - ED_NUM_ELEMENTLIST_BUTTONS;
+
+ ModifyGadget(level_editor_gadget[GADGET_ID_SCROLL_LIST_VERTICAL],
+ GDI_SCROLLBAR_ITEM_POSITION,
+ element_shift / ED_ELEMENTLIST_BUTTONS_HORIZ, GDI_END);
+
+ ModifyEditorElementList();
+
+#else
+
+ for (i = 0; i < num_editor_elements; i++)
+ {
+ int e = editor_elements[i];
+
+ if ((key == KSYM_Insert &&
+ (e == EL_INTERNAL_CASCADE_CE ||
+ e == EL_INTERNAL_CASCADE_CE_ACTIVE)) ||
+ (key == KSYM_Delete &&
+ (e == EL_INTERNAL_CASCADE_GE ||
+ e == EL_INTERNAL_CASCADE_GE_ACTIVE)))
+ break;
+ }
+
+ if (i < num_editor_elements)
+ {
+ element_shift = i;
+
+ if (element_shift > num_editor_elements - ED_NUM_ELEMENTLIST_BUTTONS)
+ element_shift = num_editor_elements - ED_NUM_ELEMENTLIST_BUTTONS;
+
+ ModifyGadget(level_editor_gadget[GADGET_ID_SCROLL_LIST_VERTICAL],
+ GDI_SCROLLBAR_ITEM_POSITION,
+ element_shift / ED_ELEMENTLIST_BUTTONS_HORIZ, GDI_END);
+
+ ModifyEditorElementList();
+ }
+#endif
+
+ break;
+