rnd-20040205-1-src
[rocksndiamonds.git] / src / editor.c
index 2ac0b1fbe699580c05b627d6f2eca02fa1da7c06..6ca13b17aef7bc78edf0ed2b6b2e82401a947fdc 100644 (file)
@@ -1146,13 +1146,13 @@ static struct ValueTextInfo options_move_pattern[] =
 
 static struct ValueTextInfo options_move_direction[] =
 {
-  { MV_AUTOMATIC,              "automatic"                     },
-  { MV_LEFT,                   "left"                          },
-  { MV_RIGHT,                  "right"                         },
-  { MV_UP,                     "up"                            },
-  { MV_DOWN,                   "down"                          },
-  { MV_RANDOM,                 "random"                        },
-  { MV_PREVIOUS,               "previous"                      },
+  { MV_START_AUTOMATIC,                "automatic"                     },
+  { MV_START_LEFT,             "left"                          },
+  { MV_START_RIGHT,            "right"                         },
+  { MV_START_UP,               "up"                            },
+  { MV_START_DOWN,             "down"                          },
+  { MV_START_RANDOM,           "random"                        },
+  { MV_START_PREVIOUS,         "previous"                      },
   { -1,                                NULL                            }
 };
 
@@ -6858,12 +6858,19 @@ static void DrawPropertiesWindow()
 
 static void UpdateCustomElementGraphicGadgets()
 {
+  int i;
+
   ModifyEditorElementList();
   RedrawDrawingElements();
 
-  if (edit_mode == ED_MODE_PROPERTIES &&
-      edit_mode_properties == ED_MODE_PROPERTIES_CHANGE)
-    DrawPropertiesChangeDrawingAreas();
+  /* force redraw of all mapped drawing area gadgets */
+  for (i = 0; i < ED_NUM_DRAWING_AREAS; i++)
+  {
+    struct GadgetInfo *gi = level_editor_gadget[drawingarea_info[i].gadget_id];
+
+    if (gi->mapped)
+      MapDrawingArea(i);
+  }
 }
 
 static void DrawLineElement(int sx, int sy, int element, boolean change_level)
@@ -8049,6 +8056,17 @@ static void HandleCheckbuttons(struct GadgetInfo *gi)
 
   *checkbutton_info[type_id].value ^= TRUE;
 
+  if (((type_id >= ED_CHECKBUTTON_ID_CUSTOM1_FIRST &&
+       type_id <= ED_CHECKBUTTON_ID_CUSTOM1_LAST) ||
+       (type_id >= ED_CHECKBUTTON_ID_CUSTOM2_FIRST &&
+       type_id <= ED_CHECKBUTTON_ID_CUSTOM2_LAST) ||
+       (type_id >= ED_CHECKBUTTON_ID_CHANGE_FIRST &&
+       type_id <= ED_CHECKBUTTON_ID_CHANGE_LAST)) &&
+      type_id != ED_CHECKBUTTON_ID_CUSTOM_USE_TEMPLATE)
+  {
+    CopyElementPropertiesToGame(properties_element);
+  }
+
   if (type_id == ED_CHECKBUTTON_ID_CUSTOM_USE_GRAPHIC)
   {
     UpdateCustomElementGraphicGadgets();
@@ -8071,15 +8089,6 @@ static void HandleCheckbuttons(struct GadgetInfo *gi)
 
     DrawEditModeWindow();
   }
-  else if ((type_id >= ED_CHECKBUTTON_ID_CUSTOM1_FIRST &&
-           type_id <= ED_CHECKBUTTON_ID_CUSTOM1_LAST) ||
-          (type_id >= ED_CHECKBUTTON_ID_CUSTOM2_FIRST &&
-           type_id <= ED_CHECKBUTTON_ID_CUSTOM2_LAST) ||
-          (type_id >= ED_CHECKBUTTON_ID_CHANGE_FIRST &&
-           type_id <= ED_CHECKBUTTON_ID_CHANGE_LAST))
-  {
-    CopyElementPropertiesToGame(properties_element);
-  }
 }
 
 static void HandleControlButtons(struct GadgetInfo *gi)