From 8ecba01ff659abf75dff876f3487b12ad31d8b03 Mon Sep 17 00:00:00 2001 From: Caball009 <82909616+Caball009@users.noreply.github.com> Date: Mon, 5 Jan 2026 11:57:26 +0100 Subject: [PATCH 1/2] bugfix(WorldBuilder): Avoid taking action on cancel button for script conditions and actions. --- .../WorldBuilder/src/ScriptActionsFalse.cpp | 12 ++++++---- .../WorldBuilder/src/ScriptConditions.cpp | 24 ++++++++++--------- .../WorldBuilder/src/ScriptActionsFalse.cpp | 12 ++++++---- .../WorldBuilder/src/ScriptConditions.cpp | 24 ++++++++++--------- 4 files changed, 40 insertions(+), 32 deletions(-) diff --git a/Generals/Code/Tools/WorldBuilder/src/ScriptActionsFalse.cpp b/Generals/Code/Tools/WorldBuilder/src/ScriptActionsFalse.cpp index 8c226f8bf58..336773df565 100644 --- a/Generals/Code/Tools/WorldBuilder/src/ScriptActionsFalse.cpp +++ b/Generals/Code/Tools/WorldBuilder/src/ScriptActionsFalse.cpp @@ -116,11 +116,13 @@ void ScriptActionsFalse::OnEditAction() } EditAction cDlg; cDlg.setAction(m_falseAction); - cDlg.DoModal(); - ScriptDialog::updateScriptWarning(m_script); - pList->DeleteString(m_index); - pList->InsertString(m_index, m_falseAction->getUiText().str()); - pList->SetCurSel(m_index); + if (cDlg.DoModal() == IDOK) + { + ScriptDialog::updateScriptWarning(m_script); + pList->DeleteString(m_index); + pList->InsertString(m_index, m_falseAction->getUiText().str()); + pList->SetCurSel(m_index); + } } void ScriptActionsFalse::enableUI() diff --git a/Generals/Code/Tools/WorldBuilder/src/ScriptConditions.cpp b/Generals/Code/Tools/WorldBuilder/src/ScriptConditions.cpp index ab2d3abed18..639fb1aac32 100644 --- a/Generals/Code/Tools/WorldBuilder/src/ScriptConditions.cpp +++ b/Generals/Code/Tools/WorldBuilder/src/ScriptConditions.cpp @@ -126,18 +126,20 @@ void ScriptConditionsDlg::OnEditCondition() } EditCondition cDlg; cDlg.setCondition(m_condition); - cDlg.DoModal(); - ScriptDialog::updateScriptWarning(m_script); - pList->DeleteString(m_index); - AsciiString label; - Bool first; - if (m_orCondition && m_orCondition->getFirstAndCondition() == m_condition) { - first = true; + if (cDlg.DoModal() == IDOK) + { + ScriptDialog::updateScriptWarning(m_script); + pList->DeleteString(m_index); + AsciiString label; + Bool first = false; + if (m_orCondition && m_orCondition->getFirstAndCondition() == m_condition) { + first = true; + } + if (first) label = " "; + else label = " AND "; + label.concat(m_condition->getUiText()); + pList->InsertString(m_index, label.str()); } - if (first) label = " "; - else label = " AND "; - label.concat(m_condition->getUiText()); - pList->InsertString(m_index, label.str()); } void ScriptConditionsDlg::enableUI() diff --git a/GeneralsMD/Code/Tools/WorldBuilder/src/ScriptActionsFalse.cpp b/GeneralsMD/Code/Tools/WorldBuilder/src/ScriptActionsFalse.cpp index f57862fcbfc..e0189ef2c72 100644 --- a/GeneralsMD/Code/Tools/WorldBuilder/src/ScriptActionsFalse.cpp +++ b/GeneralsMD/Code/Tools/WorldBuilder/src/ScriptActionsFalse.cpp @@ -116,11 +116,13 @@ void ScriptActionsFalse::OnEditAction() } EditAction cDlg; cDlg.setAction(m_falseAction); - cDlg.DoModal(); - ScriptDialog::updateScriptWarning(m_script); - pList->DeleteString(m_index); - pList->InsertString(m_index, m_falseAction->getUiText().str()); - pList->SetCurSel(m_index); + if (cDlg.DoModal() == IDOK) + { + ScriptDialog::updateScriptWarning(m_script); + pList->DeleteString(m_index); + pList->InsertString(m_index, m_falseAction->getUiText().str()); + pList->SetCurSel(m_index); + } } void ScriptActionsFalse::enableUI() diff --git a/GeneralsMD/Code/Tools/WorldBuilder/src/ScriptConditions.cpp b/GeneralsMD/Code/Tools/WorldBuilder/src/ScriptConditions.cpp index 95888335164..43259ab28fe 100644 --- a/GeneralsMD/Code/Tools/WorldBuilder/src/ScriptConditions.cpp +++ b/GeneralsMD/Code/Tools/WorldBuilder/src/ScriptConditions.cpp @@ -126,18 +126,20 @@ void ScriptConditionsDlg::OnEditCondition() } EditCondition cDlg; cDlg.setCondition(m_condition); - cDlg.DoModal(); - ScriptDialog::updateScriptWarning(m_script); - pList->DeleteString(m_index); - AsciiString label; - Bool first; - if (m_orCondition && m_orCondition->getFirstAndCondition() == m_condition) { - first = true; + if (cDlg.DoModal() == IDOK) + { + ScriptDialog::updateScriptWarning(m_script); + pList->DeleteString(m_index); + AsciiString label; + Bool first = false; + if (m_orCondition && m_orCondition->getFirstAndCondition() == m_condition) { + first = true; + } + if (first) label = " "; + else label = " AND "; + label.concat(m_condition->getUiText()); + pList->InsertString(m_index, label.str()); } - if (first) label = " "; - else label = " AND "; - label.concat(m_condition->getUiText()); - pList->InsertString(m_index, label.str()); } void ScriptConditionsDlg::enableUI() From 52418f393856774bb0581721eb01f0a3b0cf1115 Mon Sep 17 00:00:00 2001 From: Caball009 <82909616+Caball009@users.noreply.github.com> Date: Mon, 5 Jan 2026 14:13:07 +0100 Subject: [PATCH 2/2] Included script action 'true'. --- .../Tools/WorldBuilder/src/ScriptActionsTrue.cpp | 12 +++++++----- .../Tools/WorldBuilder/src/ScriptActionsTrue.cpp | 12 +++++++----- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/Generals/Code/Tools/WorldBuilder/src/ScriptActionsTrue.cpp b/Generals/Code/Tools/WorldBuilder/src/ScriptActionsTrue.cpp index 7513d0f669d..b81e71d3c3f 100644 --- a/Generals/Code/Tools/WorldBuilder/src/ScriptActionsTrue.cpp +++ b/Generals/Code/Tools/WorldBuilder/src/ScriptActionsTrue.cpp @@ -116,11 +116,13 @@ void ScriptActionsTrue::OnEditAction() } EditAction cDlg; cDlg.setAction(m_action); - cDlg.DoModal(); - ScriptDialog::updateScriptWarning(m_script); - pList->DeleteString(m_index); - pList->InsertString(m_index, m_action->getUiText().str()); - pList->SetCurSel(m_index); + if (cDlg.DoModal() == IDOK) + { + ScriptDialog::updateScriptWarning(m_script); + pList->DeleteString(m_index); + pList->InsertString(m_index, m_action->getUiText().str()); + pList->SetCurSel(m_index); + } } void ScriptActionsTrue::enableUI() diff --git a/GeneralsMD/Code/Tools/WorldBuilder/src/ScriptActionsTrue.cpp b/GeneralsMD/Code/Tools/WorldBuilder/src/ScriptActionsTrue.cpp index 250f6d5815a..bef32638438 100644 --- a/GeneralsMD/Code/Tools/WorldBuilder/src/ScriptActionsTrue.cpp +++ b/GeneralsMD/Code/Tools/WorldBuilder/src/ScriptActionsTrue.cpp @@ -116,11 +116,13 @@ void ScriptActionsTrue::OnEditAction() } EditAction cDlg; cDlg.setAction(m_action); - cDlg.DoModal(); - ScriptDialog::updateScriptWarning(m_script); - pList->DeleteString(m_index); - pList->InsertString(m_index, m_action->getUiText().str()); - pList->SetCurSel(m_index); + if (cDlg.DoModal() == IDOK) + { + ScriptDialog::updateScriptWarning(m_script); + pList->DeleteString(m_index); + pList->InsertString(m_index, m_action->getUiText().str()); + pList->SetCurSel(m_index); + } } void ScriptActionsTrue::enableUI()