fixed bug with clickable mirrors not disabled when game paused (MM engine)
[rocksndiamonds.git] / src / editor.c
index 16d7d61c73bda9248731d3c2e83040d6a6dc8b72..504feba9855f18f5957ea3e2f92975ff3b5f902c 100644 (file)
@@ -5659,7 +5659,7 @@ static void ReinitializeElementList()
 
 void PrintEditorElementList()
 {
-  boolean *stop = &setup.editor.el_user_defined;
+  boolean *stop = &setup_editor_el_user_defined;
   int i, j;
 
   for (i = 0; editor_elements_info[i].setup_value != stop; i++)
@@ -8148,8 +8148,16 @@ static int getMaxEdFieldY(boolean has_scrollbar)
   return max_ed_fieldy;
 }
 
-void InitZoomLevelSettings()
+void InitZoomLevelSettings(int zoom_tilesize)
 {
+  if (zoom_tilesize == -1)
+    zoom_tilesize = setup.auto_setup.editor_zoom_tilesize;
+
+  // limit zoom tilesize by upper and lower bound
+  zoom_tilesize = MIN(MAX(MICRO_TILESIZE, zoom_tilesize), TILESIZE);
+
+  ed_tilesize = setup.auto_setup.editor_zoom_tilesize = zoom_tilesize;
+
   MAX_ED_FIELDX = getMaxEdFieldX(FALSE);
   MAX_ED_FIELDY = getMaxEdFieldY(FALSE);
 }
@@ -8170,7 +8178,7 @@ void DrawLevelEd()
 
   ClearField();
 
-  InitZoomLevelSettings();
+  InitZoomLevelSettings(-1);
 
   OpenDoor(DOOR_OPEN_1 | DOOR_OPEN_2 | DOOR_NO_DELAY);
 
@@ -11928,13 +11936,13 @@ static void HandleDrawingAreas(struct GadgetInfo *gi)
   /* also correct MM wall-sized (double) drawing area positions accordingly */
   if (sx2 / 2 < sx || sx2 / 2 > sx)
   {
-    sx2 = sx * 2;
     dx = (sx2 / 2 < sx ? 0 : 1);
+    sx2 = sx * 2 + dx;
   }
   if (sy2 / 2 < sy || sy2 / 2 > sy)
   {
-    sy2 = sy * 2;
     dy = (sy2 / 2 < sy ? 0 : 1);
+    sy2 = sy * 2 + dy;
   }
 
   if (button_release_event)
@@ -12881,7 +12889,7 @@ static void HandleControlButtons(struct GadgetInfo *gi)
       // limit zoom level by upper and lower bound
       ed_tilesize = MIN(MAX(MICRO_TILESIZE, ed_tilesize), TILESIZE);
 
-      InitZoomLevelSettings();
+      InitZoomLevelSettings(ed_tilesize);
 
       if (edit_mode == ED_MODE_DRAWING)
       {
@@ -12891,6 +12899,9 @@ static void HandleControlButtons(struct GadgetInfo *gi)
        PrintEditorGadgetInfoText(level_editor_gadget[id]);
       }
 
+      /* save current editor zoom tilesize */
+      SaveSetup_AutoSetup();
+
       break;
 
     case GADGET_ID_CUSTOM_COPY_FROM: