summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/build_vehicle_gui.cpp18
-rw-r--r--src/window.h1
2 files changed, 13 insertions, 6 deletions
diff --git a/src/build_vehicle_gui.cpp b/src/build_vehicle_gui.cpp
index 2b00aea00..c7fee0bcc 100644
--- a/src/build_vehicle_gui.cpp
+++ b/src/build_vehicle_gui.cpp
@@ -654,7 +654,7 @@ static void BuildVehicleClickEvent(Window *w, WindowEvent *e)
case VEH_Train: _last_sort_order_train = bv->descending_sort_order; break;
case VEH_Aircraft: _last_sort_order_aircraft = bv->descending_sort_order; break;
}
- GenerateBuildList(w);
+ bv->regenerate_list = true;
SetWindowDirty(w);
break;
@@ -716,7 +716,8 @@ static void NewVehicleWndProc(Window *w, WindowEvent *e)
switch (e->event) {
case WE_INVALIDATE_DATA:
- GenerateBuildList(w);
+ bv->regenerate_list = true;
+ SetWindowDirty(w);
break;
case WE_DESTROY:
@@ -724,6 +725,10 @@ static void NewVehicleWndProc(Window *w, WindowEvent *e)
break;
case WE_PAINT:
+ if (bv->regenerate_list) {
+ bv->regenerate_list = false;
+ GenerateBuildList(w);
+ }
DrawBuildVehicleWindow(w);
break;
@@ -751,7 +756,7 @@ static void NewVehicleWndProc(Window *w, WindowEvent *e)
case VEH_Train: _last_sort_criteria_train = bv->sort_criteria; break;
case VEH_Aircraft: _last_sort_criteria_aircraft = bv->sort_criteria; break;
}
- GenerateBuildList(w);
+ bv->regenerate_list = true;
}
SetWindowDirty(w);
break;
@@ -793,9 +798,10 @@ void ShowBuildVehicleWindow(TileIndex tile, byte type)
bv = &WP(w, buildvehicle_d);
EngList_Create(&bv->eng_list);
- bv->sel_engine = INVALID_ENGINE;
+ bv->sel_engine = INVALID_ENGINE;
- bv->vehicle_type = type;
+ bv->vehicle_type = type;
+ bv->regenerate_list = false;
switch (type) {
case VEH_Train:
@@ -818,7 +824,7 @@ void ShowBuildVehicleWindow(TileIndex tile, byte type)
w->resize.width = w->width;
w->resize.height = w->height;
- GenerateBuildList(w);
+ GenerateBuildList(w); // generate the list, since we need it in the next line
/* Select the first engine in the list as default when opening the window */
if (EngList_Count(&bv->eng_list) > 0) bv->sel_engine = bv->eng_list[0];
}
diff --git a/src/window.h b/src/window.h
index 8a4eaa93e..be3edae9d 100644
--- a/src/window.h
+++ b/src/window.h
@@ -326,6 +326,7 @@ typedef struct {
byte sel_index; // deprecated value, used for 'unified' ship and road
bool descending_sort_order;
byte sort_criteria;
+ bool regenerate_list;
EngineID sel_engine;
EngineID rename_engine;
EngineList eng_list;