changeset 20595:84bd8634e4ba draft

(svn r25539) -Codechange: Setup object GUI matrix before restoring selected object, so that the matrix state can be properly set. (sbr)
author frosch <frosch@openttd.org>
date Sun, 30 Jun 2013 14:37:24 +0000
parents 9974785d83f2
children c5c75cddf411
files src/object_gui.cpp
diffstat 1 files changed, 5 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/object_gui.cpp
+++ b/src/object_gui.cpp
@@ -81,6 +81,10 @@
 		this->vscroll->SetPosition(0);
 		this->vscroll->SetCount(ObjectClass::GetUIClassCount());
 
+		NWidgetMatrix *matrix = this->GetWidget<NWidgetMatrix>(WID_BO_SELECT_MATRIX);
+		matrix->SetScrollbar(this->GetScrollbar(WID_BO_SELECT_SCROLL));
+		matrix->SetCount(ObjectClass::Get(_selected_object_class)->GetUISpecCount());
+
 		if (this->CanRestoreSelectedObject()) {
 			this->SelectOtherObject(_selected_object_index);
 		} else {
@@ -90,10 +94,6 @@
 		this->EnsureSelectedObjectClassIsVisible();
 		this->GetWidget<NWidgetMatrix>(WID_BO_OBJECT_MATRIX)->SetCount(4);
 
-		NWidgetMatrix *matrix = this->GetWidget<NWidgetMatrix>(WID_BO_SELECT_MATRIX);
-		matrix->SetScrollbar(this->GetScrollbar(WID_BO_SELECT_SCROLL));
-		matrix->SetCount(ObjectClass::Get(_selected_object_class)->GetUISpecCount());
-
 		/* If needed restore the window previous size with the stored values.*/
 		uint default_num_cols = this->GetMatrixColumnCount();
 		uint default_num_rows = this->vscroll->GetCapacity();
@@ -106,8 +106,6 @@
 			 * matrix columns are visible. */
 			this->FindWindowPlacementAndResize(this->width, this->height);
 		}
-
-		if (_selected_object_index != -1) matrix->SetClicked(ObjectClass::Get(_selected_object_class)->GetUIFromIndex(_selected_object_index));
 	}
 
 	virtual ~BuildObjectWindow()
@@ -424,6 +422,7 @@
 					const ObjectSpec *spec = objclass->GetSpec(i);
 					if (spec->IsAvailable()) {
 						_selected_object_class = j;
+						this->GetWidget<NWidgetMatrix>(WID_BO_SELECT_MATRIX)->SetCount(ObjectClass::Get(_selected_object_class)->GetUISpecCount());
 						this->SelectOtherObject(i);
 						return;
 					}