diff --git a/src/scenedit/scen.core.cpp b/src/scenedit/scen.core.cpp index cef35686..543b8078 100644 --- a/src/scenedit/scen.core.cpp +++ b/src/scenedit/scen.core.cpp @@ -3590,6 +3590,15 @@ static bool set_custom_pic_type(cDialog& me, std::string hit, std::vector& pics) { if(!me.toast(true)) return true; + + // I could check the size, but it should always match, right? + for(int i = 0; i < scenario.custom_graphics.size(); ++i){ + if(scenario.custom_graphics[i] != pics[i]){ + undo_list.add(action_ptr(new aClassifyGraphics(scenario.custom_graphics, pics))); + update_edit_menu(); + break; + } + } scenario.custom_graphics = pics; return true; } diff --git a/src/scenedit/scen.undo.cpp b/src/scenedit/scen.undo.cpp index 90547dfc..5fba78c9 100644 --- a/src/scenedit/scen.undo.cpp +++ b/src/scenedit/scen.undo.cpp @@ -878,4 +878,14 @@ bool aEditIntro::undo_me() { bool aEditIntro::redo_me() { scen_set_intro(scenario, new_intro); return true; +} + +bool aClassifyGraphics::undo_me() { + scenario.custom_graphics = old_types; + return true; +} + +bool aClassifyGraphics::redo_me() { + scenario.custom_graphics = new_types; + return true; } \ No newline at end of file diff --git a/src/scenedit/scen.undo.hpp b/src/scenedit/scen.undo.hpp index 57d01952..6db261d5 100644 --- a/src/scenedit/scen.undo.hpp +++ b/src/scenedit/scen.undo.hpp @@ -532,4 +532,14 @@ public: cAction("Edit Scenario Intro/Picture"), old_intro(old_intro), new_intro(new_intro) {} }; +class aClassifyGraphics : public cAction { + std::vector old_types; + std::vector new_types; + bool undo_me() override; + bool redo_me() override; +public: + aClassifyGraphics(std::vector old_types, std::vector new_types) : + cAction("Classify Custom Graphics"), old_types(old_types), new_types(new_types) {} +}; + #endif \ No newline at end of file