fixed bug with not updating element list after copy or exchange of CE
[rocksndiamonds.git] / src / editor.c
index 351818540394017ad7b7cdb725ed3cce722d19d6..6aa8b8d67222e6ede4a6641b5fc1eaac425fe987 100644 (file)
@@ -9309,11 +9309,9 @@ static void DrawPaletteWindow()
 
 static void UpdateCustomElementGraphicGadgets()
 {
-  struct ElementInfo *ei = &element_info[properties_element];
   int i;
 
-  ei->gfx_element = (ei->use_gfx_element ? ei->gfx_element_initial :
-                    properties_element);
+  InitElementPropertiesGfxElement();
 
   ModifyEditorElementList();
   RedrawDrawingElements();
@@ -11376,8 +11374,7 @@ static void HandleTextbuttonGadgets(struct GadgetInfo *gi)
   }
   else if (type_id == ED_TEXTBUTTON_ID_SAVE_AS_TEMPLATE)
   {
-    char *template_filename = getDefaultLevelFilename(-1);
-    boolean new_template = !fileExists(template_filename);
+    boolean new_template = !fileExists(getLocalLevelTemplateFilename());
 
     /* backup original "level.field" (needed to track playfield changes) */
     CopyPlayfield(level.field, FieldBackup);
@@ -11502,13 +11499,23 @@ static void HandleCheckbuttons(struct GadgetInfo *gi)
   }
   else if (type_id == ED_CHECKBUTTON_ID_CUSTOM_USE_TEMPLATE)
   {
-    char *template_filename = getDefaultLevelFilename(-1);
-
-    if (level.use_custom_template && !fileExists(template_filename))
+    if (level.use_custom_template &&
+       !fileExists(getGlobalLevelTemplateFilename()))
     {
       Request("No level template found!", REQ_CONFIRM);
 
       level.use_custom_template = FALSE;
+
+      ModifyGadget(gi, GDI_CHECKED, FALSE, GDI_END);
+
+      return;
+    }
+
+    if (level.use_custom_template &&
+       !Request("Discard changes and use level template?", REQ_ASK))
+    {
+      level.use_custom_template = FALSE;
+
       ModifyGadget(gi, GDI_CHECKED, FALSE, GDI_END);
 
       return;