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)
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();
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();
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;
{
int id = GADGET_ID_NONE;
int new_element_shift = element_shift;
+ int step = ED_ELEMENTLIST_BUTTONS_VERT - 1;
int i;
switch (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:
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 ||
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);