# HG changeset patch # Date 1363331396 0 # User sbr # Parent a93c9f19827dff081ecd9042f9efefbe05d979af When opening the BuildObjectWindow, ensure the selected object class is visible in the class selector. diff --git a/src/object_gui.cpp b/src/object_gui.cpp --- a/src/object_gui.cpp +++ b/src/object_gui.cpp @@ -48,6 +48,7 @@ this->SelectFirstAvailableObject(true); assert(ObjectClass::Get(_selected_object_class)->GetUISpecCount() > 0); // object GUI should be disables elsewise + this->EnsureSelectedObjectClassIsVisible(); this->GetWidget(WID_BO_OBJECT_MATRIX)->SetCount(4); NWidgetMatrix *matrix = this->GetWidget(WID_BO_SELECT_MATRIX); @@ -384,6 +385,19 @@ } this->SelectOtherObject(-1); } + + /** + * Scrolls \c WID_BO_CLASS_LIST so that the selected object class is visible + */ + void EnsureSelectedObjectClassIsVisible() + { + uint pos = 0; + for (uint i = 0; i < _selected_object_class; i++) { + if (ObjectClass::Get((ObjectClassID) i)->GetUISpecCount() == 0) continue; + pos++; + } + this->vscroll->ScrollTowards(pos); + } }; static const NWidgetPart _nested_build_object_widgets[] = {