projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixed potential crash bug with empty (padding) element buttons in editor
[rocksndiamonds.git]
/
src
/
editor.c
diff --git
a/src/editor.c
b/src/editor.c
index c993b6ea5803e052b90f3a1fb037dff3cf60e0e1..9396d5eff13053a7a27003c8b14be530745224c0 100644
(file)
--- a/
src/editor.c
+++ b/
src/editor.c
@@
-7146,7
+7146,10
@@
void CreateLevelEditorGadgets(void)
right_gadget_border =
checked_calloc(num_editor_gadgets * sizeof(int));
right_gadget_border =
checked_calloc(num_editor_gadgets * sizeof(int));
- editor_el_empty = checked_calloc(ED_NUM_ELEMENTLIST_BUTTONS * sizeof(int));
+ // set number of empty (padding) element buttons to maximum number of buttons
+ num_editor_el_empty = ED_NUM_ELEMENTLIST_BUTTONS;
+
+ editor_el_empty = checked_calloc(num_editor_el_empty * sizeof(int));
editor_el_empty_ptr = editor_el_empty;
use_permanent_palette = !editor.palette.show_as_separate_screen;
editor_el_empty_ptr = editor_el_empty;
use_permanent_palette = !editor.palette.show_as_separate_screen;
@@
-12376,6
+12379,8
@@
static int DrawLevelText(int sx, int sy, char letter, int mode)
case TEXT_SETCURSOR:
DrawEditorElement(last_sx, last_sy, Feld[lx][ly]);
DrawAreaBorder(sx, sy, sx, sy);
case TEXT_SETCURSOR:
DrawEditorElement(last_sx, last_sy, Feld[lx][ly]);
DrawAreaBorder(sx, sy, sx, sy);
+ StartTextInput(SX + sx * ed_tilesize, SY + sy * ed_tilesize,
+ ed_tilesize, ed_tilesize);
last_sx = sx;
last_sy = sy;
break;
last_sx = sx;
last_sy = sy;
break;
@@
-12411,7
+12416,7
@@
static int DrawLevelText(int sx, int sy, char letter, int mode)
break;
case TEXT_NEWLINE:
break;
case TEXT_NEWLINE:
- if (sy + 1 < ed_fieldy
- 1 && ly + 1 < lev_fieldy - 1
)
+ if (sy + 1 < ed_fieldy
&& ly + 1 < lev_fieldy
)
DrawLevelText(start_sx, sy + 1, 0, TEXT_SETCURSOR);
else
DrawLevelText(0, 0, 0, TEXT_END);
DrawLevelText(start_sx, sy + 1, 0, TEXT_SETCURSOR);
else
DrawLevelText(0, 0, 0, TEXT_END);
@@
-12420,6
+12425,7
@@
static int DrawLevelText(int sx, int sy, char letter, int mode)
case TEXT_END:
CopyLevelToUndoBuffer(UNDO_IMMEDIATE);
DrawEditorElement(sx, sy, Feld[lx][ly]);
case TEXT_END:
CopyLevelToUndoBuffer(UNDO_IMMEDIATE);
DrawEditorElement(sx, sy, Feld[lx][ly]);
+ StopTextInput();
typing = FALSE;
break;
typing = FALSE;
break;