X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Feditor.c;h=ffad0a5cb9a32bbfe1b75bca50c21a8fc9b40360;hb=6a4e096460bdde9baf30f95a4da109355ceb849f;hp=3338b0f8d2c5735ff722348b386ad8df7c5c3b12;hpb=f2ddf39ad776c01f9b8a57818fe3ea9777649778;p=rocksndiamonds.git diff --git a/src/editor.c b/src/editor.c index 3338b0f8..ffad0a5c 100644 --- a/src/editor.c +++ b/src/editor.c @@ -248,8 +248,8 @@ ED_AREA_YOFFSET_2(3)) /* values for scrolling gadgets for drawing area */ -#define ED_SCROLLBUTTON_XSIZE 16 -#define ED_SCROLLBUTTON_YSIZE 16 +#define ED_SCROLLBUTTON_XSIZE (graphic_info[IMG_EDITOR_PLAYFIELD_SCROLLBAR].width) +#define ED_SCROLLBUTTON_YSIZE (graphic_info[IMG_EDITOR_PLAYFIELD_SCROLLBAR].height) #define ED_SCROLL_UP_XPOS (SXSIZE - ED_SCROLLBUTTON_XSIZE) #define ED_SCROLL_UP_YPOS (0) @@ -7625,14 +7625,14 @@ void DrawLevelEd() FadeSoundsAndMusic(); - /* needed if different viewport properties defined for editor */ - ChangeViewportPropertiesIfNeeded(); - if (CheckIfGlobalBorderHasChanged()) fade_mask = REDRAW_ALL; FadeOut(fade_mask); + /* needed if different viewport properties defined for editor */ + ChangeViewportPropertiesIfNeeded(); + ClearField(); InitZoomLevelSettings(); @@ -11885,6 +11885,7 @@ void HandleLevelEditorKeyInput(Key key) { int id = GADGET_ID_NONE; int new_element_shift = element_shift; + int step = ED_ELEMENTLIST_BUTTONS_VERT - 1; int i; switch (key) @@ -11901,13 +11902,23 @@ void HandleLevelEditorKeyInput(Key key) case KSYM_Down: id = GADGET_ID_SCROLL_DOWN; break; + case KSYM_Page_Up: - id = GADGET_ID_SCROLL_LIST_UP; - button = ED_ELEMENTLIST_BUTTONS_VERT - 1; - break; case KSYM_Page_Down: - id = GADGET_ID_SCROLL_LIST_DOWN; - button = ED_ELEMENTLIST_BUTTONS_VERT - 1; + step *= (key == KSYM_Page_Up ? -1 : +1); + element_shift += step * ED_ELEMENTLIST_BUTTONS_HORIZ; + + if (element_shift < 0) + element_shift = 0; + 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(); + break; case KSYM_Home: @@ -11991,11 +12002,12 @@ void HandleLevelEditorKeyInput(Key key) ClickOnGadget(level_editor_gadget[GADGET_ID_SINGLE_ITEMS], button); else if (letter == 'U') ClickOnGadget(level_editor_gadget[GADGET_ID_UNDO], 3); - else if (key == KSYM_KP_Subtract || letter == '-') + else if (letter == '-' || key == KSYM_KP_Subtract) ClickOnGadget(level_editor_gadget[GADGET_ID_ZOOM], 3); - else if (key == KSYM_KP_0 || letter == '0') + else if (letter == '0' || key == KSYM_KP_0) ClickOnGadget(level_editor_gadget[GADGET_ID_ZOOM], 2); - else if (key == KSYM_KP_Add) + else if (letter == '+' || key == KSYM_KP_Add || + letter == '=') // ("Shift-=" is "+" on US keyboards) ClickOnGadget(level_editor_gadget[GADGET_ID_ZOOM], 1); else if (key == KSYM_Return || key == KSYM_space || @@ -12050,7 +12062,7 @@ void PrintEditorGadgetInfoText(struct GadgetInfo *gi) char shortcut[MAX_OUTPUT_LINESIZE + 1]; int max_infotext_len = getMaxInfoTextLength(); - if (gi == NULL || gi->info_text == NULL) + if (gi == NULL || strlen(gi->info_text) == 0) return; strncpy(infotext, gi->info_text, max_infotext_len);