diff options
author | Samu <dj_samu@hotmail.com> | 2019-01-24 17:00:20 +0000 |
---|---|---|
committer | Charles Pigott <charlespigott@googlemail.com> | 2020-02-06 20:58:11 +0000 |
commit | 3089c625e403e59dec4d88707792551e567e6f89 (patch) | |
tree | c89d8a9be2b876dc95cffc45040066b2847e7222 /src | |
parent | 492d2704f1503303b7eaea15559649c71b747c87 (diff) | |
download | openttd-3089c625e403e59dec4d88707792551e567e6f89.tar.xz |
Fix #7088: close AI/GS textfile window when their data are invalid
Diffstat (limited to 'src')
-rw-r--r-- | src/ai/ai_gui.cpp | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/ai/ai_gui.cpp b/src/ai/ai_gui.cpp index a684e4a35..a0552628c 100644 --- a/src/ai/ai_gui.cpp +++ b/src/ai/ai_gui.cpp @@ -179,6 +179,7 @@ struct AIListWindow : public Window { InvalidateWindowData(WC_GAME_OPTIONS, WN_GAME_OPTIONS_AI); InvalidateWindowClassesData(WC_AI_SETTINGS); DeleteWindowByClass(WC_QUERY_STRING); + InvalidateWindowClassesData(WC_TEXTFILE); } void OnClick(Point pt, int widget, int click_count) override @@ -640,15 +641,24 @@ struct ScriptTextfileWindow : public TextfileWindow { ScriptTextfileWindow(TextfileType file_type, CompanyID slot) : TextfileWindow(file_type), slot(slot) { - const char *textfile = GetConfig(slot)->GetTextfile(file_type, slot); - this->LoadTextfile(textfile, (slot == OWNER_DEITY) ? GAME_DIR : AI_DIR); + this->OnInvalidateData(); } void SetStringParameters(int widget) const override { if (widget == WID_TF_CAPTION) { SetDParam(0, (slot == OWNER_DEITY) ? STR_CONTENT_TYPE_GAME_SCRIPT : STR_CONTENT_TYPE_AI); - SetDParamStr(1, GetConfig(slot)->GetName()); + SetDParamStr(1, GetConfig(slot)->GetInfo()->GetName()); + } + } + + void OnInvalidateData(int data = 0, bool gui_scope = true) override + { + const char *textfile = GetConfig(slot)->GetTextfile(file_type, slot); + if (textfile == nullptr) { + delete this; + } else { + this->LoadTextfile(textfile, (slot == OWNER_DEITY) ? GAME_DIR : AI_DIR); } } }; |