Departure boards: Fix windows not being refreshed when changing settings
This commit is contained in:
@@ -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
|
||||
|
Reference in New Issue
Block a user