# HG changeset patch # User Jonathan G Rennison # Date 2020-01-06 20:19:50 # Node ID 244e2e7792f45a7aba4b73d662d754e9b84d8348 # Parent ec2c48f5c8f48ad529391ceb22e95c11cece5797 Change: Only resort town directory window on population change if necessary diff --git a/src/town.h b/src/town.h --- a/src/town.h +++ b/src/town.h @@ -161,6 +161,7 @@ enum TownRatingCheckType { /** Special values for town list window for the data parameter of #InvalidateWindowData. */ enum TownDirectoryInvalidateWindowData { TDIWD_FORCE_REBUILD, + TDIWD_POPULATION_CHANGE, TDIWD_FORCE_RESORT, }; diff --git a/src/town_cmd.cpp b/src/town_cmd.cpp --- a/src/town_cmd.cpp +++ b/src/town_cmd.cpp @@ -423,7 +423,7 @@ static void ChangePopulation(Town *t, in InvalidateWindowData(WC_TOWN_VIEW, t->index); // Cargo requirements may appear/vanish for small populations if (_settings_client.gui.population_in_label) t->UpdateVirtCoord(); - InvalidateWindowData(WC_TOWN_DIRECTORY, 0, TDIWD_FORCE_RESORT); + InvalidateWindowData(WC_TOWN_DIRECTORY, 0, TDIWD_POPULATION_CHANGE); } /** diff --git a/src/town_gui.cpp b/src/town_gui.cpp --- a/src/town_gui.cpp +++ b/src/town_gui.cpp @@ -994,6 +994,10 @@ public: this->towns.ForceRebuild(); break; + case TDIWD_POPULATION_CHANGE: + if (this->towns.SortType() == 1) this->towns.ForceResort(); + break; + default: this->towns.ForceResort(); }