Departure boards: Fix windows not being refreshed when changing settings

pull/453/head
Jonathan G Rennison 2 years ago
parent 73efbc7bdd
commit a42557fed7

@ -82,7 +82,7 @@ static bool cached_arr_dep_display_method; ///< Whether to show departures and a
void FlushDeparturesWindowTextCaches()
{
cached_date_width = cached_status_width = cached_date_arrow_width = cached_veh_type_width = 0;
InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 0);
InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1);
}
template<bool Twaypoint = false>
@ -217,11 +217,11 @@ public:
arrivals(new DepartureList()),
departures_invalid(true),
vehicles_invalid(true),
entry_height(1 + FONT_HEIGHT_NORMAL + 1 + (_settings_client.gui.departure_larger_font ? FONT_HEIGHT_NORMAL : FONT_HEIGHT_SMALL) + 1 + 1),
tick_count(0),
calc_tick_countdown(0),
min_width(400)
{
this->SetupValues();
this->CreateNestedTree();
this->vscroll = this->GetScrollbar(WID_DB_SCROLLBAR);
this->FinishInitNested(window_number);
@ -260,10 +260,6 @@ public:
this->LowerWidget(WID_DB_SHOW_VIA);
}
if (cached_veh_type_width == 0) {
cached_veh_type_width = GetStringBoundingBox(STR_DEPARTURES_TYPE_PLANE).width;
}
this->RefreshVehicleList();
if (_pause_mode != PM_UNPAUSED) this->OnGameTick();
@ -275,6 +271,15 @@ public:
this->DeleteDeparturesList(this->arrivals);
}
void SetupValues()
{
this->entry_height = 1 + FONT_HEIGHT_NORMAL + 1 + (_settings_client.gui.departure_larger_font ? FONT_HEIGHT_NORMAL : FONT_HEIGHT_SMALL) + 1 + 1;
if (cached_veh_type_width == 0) {
cached_veh_type_width = GetStringBoundingBox(STR_DEPARTURES_TYPE_PLANE).width;
}
}
virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
{
switch (widget) {
@ -535,6 +540,11 @@ public:
{
this->vehicles_invalid = true;
this->departures_invalid = true;
if (data > 0) {
this->SetupValues();
this->ReInit();
if (_pause_mode != PM_UNPAUSED) this->OnGameTick();
}
}
};

@ -4913,6 +4913,7 @@ max = 30
interval = 1
str = STR_CONFIG_MAX_DEPARTURES
strhelp = STR_CONFIG_MAX_DEPARTURES_HELPTEXT
post_cb = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }
[SDTC_VAR]
var = gui.max_departure_time
@ -4925,6 +4926,7 @@ max = 240
interval = 1
str = STR_CONFIG_MAX_DEPARTURE_TIME
strhelp = STR_CONFIG_MAX_DEPARTURE_TIME_HELPTEXT
post_cb = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }
[SDTC_VAR]
var = gui.departure_calc_frequency
@ -4944,6 +4946,7 @@ flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def = false
str = STR_CONFIG_DEPARTURE_VEHICLE_NAME
strhelp = STR_CONFIG_DEPARTURE_VEHICLE_NAME_HELPTEXT
post_cb = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }
[SDTC_BOOL]
var = gui.departure_show_group
@ -4951,6 +4954,7 @@ flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def = false
str = STR_CONFIG_DEPARTURE_GROUP_NAME
strhelp = STR_CONFIG_DEPARTURE_GROUP_NAME_HELPTEXT
post_cb = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }
[SDTC_BOOL]
var = gui.departure_show_company
@ -4958,6 +4962,7 @@ flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def = false
str = STR_CONFIG_DEPARTURE_COMPANY_NAME
strhelp = STR_CONFIG_DEPARTURE_COMPANY_NAME_HELPTEXT
post_cb = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }
[SDTC_BOOL]
var = gui.departure_show_vehicle_type
@ -4965,6 +4970,7 @@ flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def = false
str = STR_CONFIG_DEPARTURE_VEHICLE_TYPE
strhelp = STR_CONFIG_DEPARTURE_VEHICLE_TYPE_HELPTEXT
post_cb = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }
[SDTC_BOOL]
var = gui.departure_show_vehicle_color
@ -4972,6 +4978,7 @@ flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def = false
str = STR_CONFIG_DEPARTURE_VEHICLE_COLOR
strhelp = STR_CONFIG_DEPARTURE_VEHICLE_COLOR_HELPTEXT
post_cb = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }
[SDTC_BOOL]
var = gui.departure_larger_font
@ -4979,6 +4986,7 @@ flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def = false
str = STR_CONFIG_DEPARTURE_LARGER_FONT
strhelp = STR_CONFIG_DEPARTURE_LARGER_FONT_HELPTEXT
post_cb = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }
[SDTC_BOOL]
var = gui.departure_destination_type
@ -4986,6 +4994,7 @@ flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def = false
str = STR_CONFIG_DEPARTURE_DESTINATION_TYPE
strhelp = STR_CONFIG_DEPARTURE_DESTINATION_TYPE_HELPTEXT
post_cb = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }
[SDTC_BOOL]
var = gui.departure_show_both
@ -4993,6 +5002,7 @@ flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def = false
str = STR_CONFIG_DEPARTURE_SHOW_BOTH
strhelp = STR_CONFIG_DEPARTURE_SHOW_BOTH_HELPTEXT
post_cb = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }
[SDTC_BOOL]
var = gui.departure_only_passengers
@ -5000,6 +5010,7 @@ flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def = false
str = STR_CONFIG_DEPARTURE_ONLY_PASSENGERS
strhelp = STR_CONFIG_DEPARTURE_ONLY_PASSENGERS_HELPTEXT
post_cb = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }
[SDTC_BOOL]
var = gui.departure_smart_terminus
@ -5007,6 +5018,7 @@ flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def = false
str = STR_CONFIG_DEPARTURE_SMART_TERMINUS
strhelp = STR_CONFIG_DEPARTURE_SMART_TERMINUS_HELPTEXT
post_cb = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }
[SDTC_BOOL]
var = gui.departure_show_all_stops
@ -5014,6 +5026,7 @@ flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def = false
str = STR_CONFIG_DEPARTURE_SHOW_ALL_STOPS
strhelp = STR_CONFIG_DEPARTURE_SHOW_ALL_STOPS_HELPTEXT
post_cb = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }
[SDTC_BOOL]
var = gui.departure_merge_identical
@ -5021,6 +5034,7 @@ flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def = false
str = STR_CONFIG_DEPARTURE_MERGE_IDENTICAL
strhelp = STR_CONFIG_DEPARTURE_MERGE_IDENTICAL_HELPTEXT
post_cb = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }
[SDTC_VAR]
var = gui.departure_conditionals
@ -5032,7 +5046,7 @@ max = 2
str = STR_CONFIG_DEPARTURE_CONDITIONALS
strval = STR_CONFIG_DEPARTURE_CONDITIONALS_1
strhelp = STR_CONFIG_DEPARTURE_CONDITIONALS_HELPTEXT
post_cb = [](auto) { MarkWholeScreenDirty(); }
post_cb = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }
[SDTC_BOOL]
var = gui.quick_goto

Loading…
Cancel
Save