diff --git a/rsrc/dialogs/edit-scenario-advanced.xml b/rsrc/dialogs/edit-scenario-advanced.xml index 251fd676..3d688483 100644 --- a/rsrc/dialogs/edit-scenario-advanced.xml +++ b/rsrc/dialogs/edit-scenario-advanced.xml @@ -1,7 +1,7 @@ - + Scenario Advanced Details @@ -32,4 +32,5 @@ + \ No newline at end of file diff --git a/src/scenedit/scen.core.cpp b/src/scenedit/scen.core.cpp index 08d51cfe..07577ab7 100644 --- a/src/scenedit/scen.core.cpp +++ b/src/scenedit/scen.core.cpp @@ -2819,21 +2819,11 @@ static void put_scen_details_in_dlog(cDialog& me) { me["contact"].setText(scenario.contact_info[1]); } -static bool save_scen_adv_details(cDialog& me, std::string, eKeyMod) { - if(!me.toast(true)) return true; - - scenario.adjust_diff = dynamic_cast(me["adjust"]).getState() != led_red; - - scenario.campaign_id = me["cpnid"].getText(); - scenario.bg_out = boost::lexical_cast(me["bg-out"].getText().substr(10)); - scenario.bg_town = boost::lexical_cast(me["bg-town"].getText().substr(10)); - scenario.bg_dungeon = boost::lexical_cast(me["bg-dungeon"].getText().substr(13)); - scenario.bg_fight = boost::lexical_cast(me["bg-fight"].getText().substr(11)); - scenario.init_spec = me["oninit"].getTextAsNum(); +static bool save_scen_adv_details(cDialog& me, std::string item_hit, eKeyMod) { + me.toast(item_hit == "okay"); return true; } - static void put_scen_adv_details_in_dlog(cDialog& me) { dynamic_cast(me["adjust"]).setState(scenario.adjust_diff ? led_red : led_off); me["cpnid"].setText(scenario.campaign_id); @@ -2887,12 +2877,23 @@ void edit_scen_details() { void edit_scen_adv_details() { cDialog info_dlg(*ResMgr::dialogs.get("edit-scenario-advanced")); - info_dlg["okay"].attachClickHandler(save_scen_adv_details); + info_dlg.attachClickHandlers(save_scen_adv_details, {"okay", "cancel"}); info_dlg.attachClickHandlers(edit_scen_default_bgs, {"bg-out", "bg-town", "bg-dungeon", "bg-fight"}); info_dlg["pickinit"].attachClickHandler(edit_scen_init_spec); put_scen_adv_details_in_dlog(info_dlg); info_dlg.run(); + + if(info_dlg.accepted()){ + scenario.adjust_diff = dynamic_cast(info_dlg["adjust"]).getState() != led_red; + + scenario.campaign_id = info_dlg["cpnid"].getText(); + scenario.bg_out = boost::lexical_cast(info_dlg["bg-out"].getText().substr(10)); + scenario.bg_town = boost::lexical_cast(info_dlg["bg-town"].getText().substr(10)); + scenario.bg_dungeon = boost::lexical_cast(info_dlg["bg-dungeon"].getText().substr(13)); + scenario.bg_fight = boost::lexical_cast(info_dlg["bg-fight"].getText().substr(11)); + scenario.init_spec = info_dlg["oninit"].getTextAsNum(); + } } bool edit_make_scen_1(std::string& author,std::string& title,bool& grass) {