From c876e3e1b29dd5c89454a14e8ef8ea6c17929d1a Mon Sep 17 00:00:00 2001 From: rubidium Date: Mon, 23 Feb 2009 20:45:34 +0000 Subject: (svn r15561) -Fix [FS#2646]: segfault when saving a preset with unknown NewGRFs --- src/newgrf_gui.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src') 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(); -- cgit v1.2.3-70-g09d2