summaryrefslogtreecommitdiff
path: root/src/newgrf_gui.cpp
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2009-02-23 20:45:34 +0000
committerrubidium <rubidium@openttd.org>2009-02-23 20:45:34 +0000
commitc876e3e1b29dd5c89454a14e8ef8ea6c17929d1a (patch)
tree854398fd12ee98ee9fa72023fde71650a3d49aa1 /src/newgrf_gui.cpp
parentcfc233e2ab8a8acacc57996e103e353b27d87194 (diff)
downloadopenttd-c876e3e1b29dd5c89454a14e8ef8ea6c17929d1a.tar.xz
(svn r15561) -Fix [FS#2646]: segfault when saving a preset with unknown NewGRFs
Diffstat (limited to 'src/newgrf_gui.cpp')
-rw-r--r--src/newgrf_gui.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/newgrf_gui.cpp b/src/newgrf_gui.cpp
index 249fa0e0e..1f0617f53 100644
--- a/src/newgrf_gui.cpp
+++ b/src/newgrf_gui.cpp
@@ -394,18 +394,22 @@ struct NewGRFWindow : public Window {
SetDParamStr(0, _grf_preset_list[this->preset]);
this->widget[SNGRFS_PRESET_LIST].data = STR_JUST_RAW_STRING;
}
+ this->SetWidgetDisabledState(SNGRFS_PRESET_DELETE, this->preset == -1);
bool has_missing = false;
+ bool has_compatible = false;
for (const GRFConfig *c = this->list; !has_missing && c != NULL; c = c->next) {
- has_missing = c->status == GCS_NOT_FOUND || HasBit(c->flags, GCF_COMPATIBLE);
+ has_missing |= c->status == GCS_NOT_FOUND;
+ has_compatible |= HasBit(c->flags, GCF_COMPATIBLE);
}
- if (has_missing) {
+ if (has_missing || has_compatible) {
this->widget[SNGRFS_CONTENT_DOWNLOAD].data = STR_CONTENT_INTRO_MISSING_BUTTON;
this->widget[SNGRFS_CONTENT_DOWNLOAD].tooltips = STR_CONTENT_INTRO_MISSING_BUTTON_TIP;
} else {
this->widget[SNGRFS_CONTENT_DOWNLOAD].data = STR_CONTENT_INTRO_BUTTON;
this->widget[SNGRFS_CONTENT_DOWNLOAD].tooltips = STR_CONTENT_INTRO_BUTTON_TIP;
}
+ this->SetWidgetDisabledState(SNGRFS_PRESET_SAVE, has_missing);
this->DrawWidgets();