fixed bug not using special editor graphics in editor
[rocksndiamonds.git] / src / editor.c
index 3512218ee6bbb0fd3c4d1372c5b3d5fa53810bab..dc7fdc82ce8e760028335d404cbe00f4b5ac3987 100644 (file)
@@ -7612,25 +7612,23 @@ void InitZoomLevelSettings()
   MAX_ED_FIELDY = getMaxEdFieldY(FALSE);
 }
 
-static boolean playfield_area_changed = FALSE;
-
 void DrawLevelEd()
 {
-  StopAnimation();
+  int fade_mask = REDRAW_FIELD;
 
   CloseDoor(DOOR_CLOSE_ALL);
 
-  FadeOut(REDRAW_FIELD);
-
-  /* needed after playing if editor playfield area has different size */
-  ClearRectangle(drawto, REAL_SX, REAL_SY, FULL_SXSIZE, FULL_SYSIZE);
-
   /* needed if different viewport properties defined for editor */
   ChangeViewportPropertiesIfNeeded();
 
-  InitZoomLevelSettings();
+  if (CheckIfGlobalBorderHasChanged())
+    fade_mask = REDRAW_ALL;
 
-  playfield_area_changed = DrawingAreaChanged();
+  FadeOut(fade_mask);
+
+  ClearField();
+
+  InitZoomLevelSettings();
 
   OpenDoor(DOOR_OPEN_1 | DOOR_OPEN_2 | DOOR_NO_DELAY);
 
@@ -7690,7 +7688,9 @@ void DrawLevelEd()
 
   DrawEditModeWindow();
 
-  FadeIn(playfield_area_changed ? REDRAW_ALL : REDRAW_FIELD);
+  DrawMaskedBorder(fade_mask);
+
+  FadeIn(fade_mask);
 
   /* copy actual editor door content to door double buffer for OpenDoor() */
   BlitBitmap(drawto, bitmap_db_door_1, DX, DY, DXSIZE, DYSIZE, 0, 0);
@@ -10921,7 +10921,7 @@ static void HandleDrawingAreas(struct GadgetInfo *gi)
          DrawFixedGraphicExt(drawto,
                              gi->x + sx * TILEX,
                              gi->y + sy * TILEY,
-                             el2img(new_element), 0);
+                             el2edimg(new_element), 0);
 
        if (id == GADGET_ID_CUSTOM_GRAPHIC)
          new_element = GFX_ELEMENT(new_element);
@@ -12264,7 +12264,7 @@ void RequestExitLevelEditor(boolean ask_if_level_has_changed,
 
     game_status = GAME_MODE_MAIN;
 
-    DrawAndFadeInMainMenu(playfield_area_changed ? REDRAW_ALL : REDRAW_FIELD);
+    DrawMainMenu();
   }
   else
   {