X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Feditor.c;h=98c25977c1e0b3ea09bdf7bf26297a76eb4b9f6b;hb=d4e2f71eb7c6a7488d1c13d351adca9ffbea87ed;hp=1b72d69b4a9514921e37e88a2f21d25e06a825ee;hpb=60e1ff3b2d74383ed9975a185a3c56fb3c2acad0;p=rocksndiamonds.git diff --git a/src/editor.c b/src/editor.c index 1b72d69b..98c25977 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) @@ -7669,7 +7669,9 @@ void DrawLevelEd() BlitBitmap(graphic_info[IMG_BACKGROUND_PALETTE].bitmap, drawto, graphic_info[IMG_BACKGROUND_PALETTE].src_x, graphic_info[IMG_BACKGROUND_PALETTE].src_y, - DXSIZE, DYSIZE, DX, DY); + MIN(DXSIZE, graphic_info[IMG_BACKGROUND_PALETTE].width), + MIN(DYSIZE, graphic_info[IMG_BACKGROUND_PALETTE].height), + DX, DY); /* draw bigger door */ DrawSpecialEditorDoor(); @@ -7678,7 +7680,9 @@ void DrawLevelEd() BlitBitmap(graphic_info[IMG_BACKGROUND_TOOLBOX].bitmap, drawto, graphic_info[IMG_BACKGROUND_TOOLBOX].src_x, graphic_info[IMG_BACKGROUND_TOOLBOX].src_y, - EXSIZE, EYSIZE, EX, EY); + MIN(EXSIZE, graphic_info[IMG_BACKGROUND_TOOLBOX].width), + MIN(EYSIZE, graphic_info[IMG_BACKGROUND_TOOLBOX].height), + EX, EY); // redraw_mask |= REDRAW_ALL; @@ -11885,6 +11889,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 +11906,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: