fixed bug with not marking level as changed when drawing into element drawing areas
[rocksndiamonds.git] / src / editor.c
index b5aa6fb3c900f905c0a13b9d3c48f88ebcd75e9a..6f750d3b1df0f3ba0199ecea1b2b89209bd2e639 100644 (file)
@@ -11208,11 +11208,14 @@ static void HandleDrawingAreas(struct GadgetInfo *gi)
        PickDrawingElement(button, drawingarea_info[type_id].value[pos]);
       }
 
-      break;
+      /* do not mark level as changed when picking element from drawing area */
+      return;
 
     default:
       break;
   }
+
+  level.changed = TRUE;
 }
 
 static void HandleCounterButtons(struct GadgetInfo *gi)
@@ -11534,6 +11537,15 @@ static void HandleCheckbuttons(struct GadgetInfo *gi)
   }
   else if (type_id == ED_CHECKBUTTON_ID_CUSTOM_USE_TEMPLATE)
   {
+    boolean template_related_changes_found = FALSE;
+    int i;
+
+    /* check if any custom or group elements have been changed */
+    for (i = 0; i < NUM_FILE_ELEMENTS; i++)
+      if ((IS_CUSTOM_ELEMENT(i) || IS_GROUP_ELEMENT(i)) &&
+         element_info[i].modified_settings)
+       template_related_changes_found = TRUE;
+
     if (level.use_custom_template &&
        !fileExists(getGlobalLevelTemplateFilename()))
     {
@@ -11547,6 +11559,7 @@ static void HandleCheckbuttons(struct GadgetInfo *gi)
     }
 
     if (level.use_custom_template &&
+       template_related_changes_found &&
        !Request("Discard changes and use level template?", REQ_ASK))
     {
       level.use_custom_template = FALSE;