# HG changeset patch # Parent 184c81dc60d195e949ec63f5ac86209fc690a292 # User sbr # Date 1348904621 -7200 Don't test cargo spec validity. Don't insert empty widgets for invalid cargoes. diff -r 184c81dc60d1 src/station_gui.cpp --- a/src/station_gui.cpp Sat Sep 29 08:40:29 2012 +0200 +++ b/src/station_gui.cpp Sat Sep 29 12:28:55 2012 +0200 @@ -296,7 +296,7 @@ const CargoSpec *cs; FOR_ALL_SORTED_STANDARD_CARGOSPECS(cs) { if (!HasBit(this->cargo_filter, cs->Index())) continue; - if (cs->IsValid()) this->LowerWidget(WID_STL_CARGOSTART + index); + this->LowerWidget(WID_STL_CARGOSTART + index); } if (this->cargo_filter == this->cargo_filter_max) this->cargo_filter = _cargo_mask; @@ -361,13 +361,10 @@ default: if (widget >= WID_STL_CARGOSTART) { - const CargoSpec *cs = _sorted_cargo_specs[widget - WID_STL_CARGOSTART]; - if (cs->IsValid()) { - Dimension d = GetStringBoundingBox(cs->abbrev); - d.width += padding.width + 2; - d.height += padding.height; - *size = maxdim(*size, d); - } + Dimension d = GetStringBoundingBox(_sorted_cargo_specs[widget - WID_STL_CARGOSTART]->abbrev); + d.width += padding.width + 2; + d.height += padding.height; + *size = maxdim(*size, d); } break; } @@ -457,11 +454,9 @@ default: if (widget >= WID_STL_CARGOSTART) { const CargoSpec *cs = _sorted_cargo_specs[widget - WID_STL_CARGOSTART]; - if (cs->IsValid()) { - int cg_ofst = HasBit(this->cargo_filter, cs->Index()) ? 2 : 1; - GfxFillRect(r.left + cg_ofst, r.top + cg_ofst, r.right - 2 + cg_ofst, r.bottom - 2 + cg_ofst, cs->rating_colour); - DrawString(r.left + cg_ofst, r.right + cg_ofst, r.top + cg_ofst, cs->abbrev, TC_BLACK, SA_HOR_CENTER); - } + int cg_ofst = HasBit(this->cargo_filter, cs->Index()) ? 2 : 1; + GfxFillRect(r.left + cg_ofst, r.top + cg_ofst, r.right - 2 + cg_ofst, r.bottom - 2 + cg_ofst, cs->rating_colour); + DrawString(r.left + cg_ofst, r.right + cg_ofst, r.top + cg_ofst, cs->abbrev, TC_BLACK, SA_HOR_CENTER); } break; } @@ -526,8 +521,7 @@ case WID_STL_CARGOALL: { for (uint i = 0; i < _sorted_standard_cargo_specs_size; i++) { - const CargoSpec *cs = _sorted_cargo_specs[i]; - if (cs->IsValid()) this->LowerWidget(WID_STL_CARGOSTART + i); + this->LowerWidget(WID_STL_CARGOSTART + i); } this->LowerWidget(WID_STL_NOCARGOWAITING); @@ -555,8 +549,7 @@ this->ToggleWidgetLoweredState(WID_STL_NOCARGOWAITING); } else { for (uint i = 0; i < _sorted_standard_cargo_specs_size; i++) { - const CargoSpec *cs = _sorted_cargo_specs[i]; - if (cs->IsValid()) this->RaiseWidget(WID_STL_CARGOSTART + i); + this->RaiseWidget(WID_STL_CARGOSTART + i); } this->cargo_filter = 0; @@ -572,15 +565,13 @@ if (widget >= WID_STL_CARGOSTART) { // change cargo_filter /* Determine the selected cargo type */ const CargoSpec *cs = _sorted_cargo_specs[widget - WID_STL_CARGOSTART]; - if (!cs->IsValid()) break; if (_ctrl_pressed) { ToggleBit(this->cargo_filter, cs->Index()); this->ToggleWidgetLoweredState(widget); } else { for (uint i = 0; i < _sorted_standard_cargo_specs_size; i++) { - const CargoSpec *cs = _sorted_cargo_specs[i]; - if (cs->IsValid()) this->RaiseWidget(WID_STL_CARGOSTART + i); + this->RaiseWidget(WID_STL_CARGOSTART + i); } this->RaiseWidget(WID_STL_NOCARGOWAITING); @@ -681,21 +672,12 @@ NWidgetHorizontal *container = new NWidgetHorizontal(); for (uint i = 0; i < _sorted_standard_cargo_specs_size; i++) { - const CargoSpec *cs = _sorted_cargo_specs[i]; - if (cs->IsValid()) { - NWidgetBackground *panel = new NWidgetBackground(WWT_PANEL, COLOUR_GREY, WID_STL_CARGOSTART + i); - panel->SetMinimalSize(14, 11); - panel->SetResize(0, 0); - panel->SetFill(0, 1); - panel->SetDataTip(0, STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE); - container->Add(panel); - } else { - NWidgetLeaf *nwi = new NWidgetLeaf(WWT_EMPTY, COLOUR_GREY, WID_STL_CARGOSTART + i, 0x0, STR_NULL); - nwi->SetMinimalSize(0, 11); - nwi->SetResize(0, 0); - nwi->SetFill(0, 1); - container->Add(nwi); - } + NWidgetBackground *panel = new NWidgetBackground(WWT_PANEL, COLOUR_GREY, WID_STL_CARGOSTART + i); + panel->SetMinimalSize(14, 11); + panel->SetResize(0, 0); + panel->SetFill(0, 1); + panel->SetDataTip(0, STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE); + container->Add(panel); } *biggest_index = WID_STL_CARGOSTART + _sorted_standard_cargo_specs_size; return container;