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()
|
void FlushDeparturesWindowTextCaches()
|
||||||
{
|
{
|
||||||
cached_date_width = cached_status_width = cached_date_arrow_width = cached_veh_type_width = 0;
|
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>
|
template<bool Twaypoint = false>
|
||||||
@@ -217,11 +217,11 @@ public:
|
|||||||
arrivals(new DepartureList()),
|
arrivals(new DepartureList()),
|
||||||
departures_invalid(true),
|
departures_invalid(true),
|
||||||
vehicles_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),
|
tick_count(0),
|
||||||
calc_tick_countdown(0),
|
calc_tick_countdown(0),
|
||||||
min_width(400)
|
min_width(400)
|
||||||
{
|
{
|
||||||
|
this->SetupValues();
|
||||||
this->CreateNestedTree();
|
this->CreateNestedTree();
|
||||||
this->vscroll = this->GetScrollbar(WID_DB_SCROLLBAR);
|
this->vscroll = this->GetScrollbar(WID_DB_SCROLLBAR);
|
||||||
this->FinishInitNested(window_number);
|
this->FinishInitNested(window_number);
|
||||||
@@ -260,10 +260,6 @@ public:
|
|||||||
this->LowerWidget(WID_DB_SHOW_VIA);
|
this->LowerWidget(WID_DB_SHOW_VIA);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cached_veh_type_width == 0) {
|
|
||||||
cached_veh_type_width = GetStringBoundingBox(STR_DEPARTURES_TYPE_PLANE).width;
|
|
||||||
}
|
|
||||||
|
|
||||||
this->RefreshVehicleList();
|
this->RefreshVehicleList();
|
||||||
|
|
||||||
if (_pause_mode != PM_UNPAUSED) this->OnGameTick();
|
if (_pause_mode != PM_UNPAUSED) this->OnGameTick();
|
||||||
@@ -275,6 +271,15 @@ public:
|
|||||||
this->DeleteDeparturesList(this->arrivals);
|
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
|
virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
@@ -535,6 +540,11 @@ public:
|
|||||||
{
|
{
|
||||||
this->vehicles_invalid = true;
|
this->vehicles_invalid = true;
|
||||||
this->departures_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
|
interval = 1
|
||||||
str = STR_CONFIG_MAX_DEPARTURES
|
str = STR_CONFIG_MAX_DEPARTURES
|
||||||
strhelp = STR_CONFIG_MAX_DEPARTURES_HELPTEXT
|
strhelp = STR_CONFIG_MAX_DEPARTURES_HELPTEXT
|
||||||
|
post_cb = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }
|
||||||
|
|
||||||
[SDTC_VAR]
|
[SDTC_VAR]
|
||||||
var = gui.max_departure_time
|
var = gui.max_departure_time
|
||||||
@@ -4925,6 +4926,7 @@ max = 240
|
|||||||
interval = 1
|
interval = 1
|
||||||
str = STR_CONFIG_MAX_DEPARTURE_TIME
|
str = STR_CONFIG_MAX_DEPARTURE_TIME
|
||||||
strhelp = STR_CONFIG_MAX_DEPARTURE_TIME_HELPTEXT
|
strhelp = STR_CONFIG_MAX_DEPARTURE_TIME_HELPTEXT
|
||||||
|
post_cb = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }
|
||||||
|
|
||||||
[SDTC_VAR]
|
[SDTC_VAR]
|
||||||
var = gui.departure_calc_frequency
|
var = gui.departure_calc_frequency
|
||||||
@@ -4944,6 +4946,7 @@ flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
|
|||||||
def = false
|
def = false
|
||||||
str = STR_CONFIG_DEPARTURE_VEHICLE_NAME
|
str = STR_CONFIG_DEPARTURE_VEHICLE_NAME
|
||||||
strhelp = STR_CONFIG_DEPARTURE_VEHICLE_NAME_HELPTEXT
|
strhelp = STR_CONFIG_DEPARTURE_VEHICLE_NAME_HELPTEXT
|
||||||
|
post_cb = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }
|
||||||
|
|
||||||
[SDTC_BOOL]
|
[SDTC_BOOL]
|
||||||
var = gui.departure_show_group
|
var = gui.departure_show_group
|
||||||
@@ -4951,6 +4954,7 @@ flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
|
|||||||
def = false
|
def = false
|
||||||
str = STR_CONFIG_DEPARTURE_GROUP_NAME
|
str = STR_CONFIG_DEPARTURE_GROUP_NAME
|
||||||
strhelp = STR_CONFIG_DEPARTURE_GROUP_NAME_HELPTEXT
|
strhelp = STR_CONFIG_DEPARTURE_GROUP_NAME_HELPTEXT
|
||||||
|
post_cb = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }
|
||||||
|
|
||||||
[SDTC_BOOL]
|
[SDTC_BOOL]
|
||||||
var = gui.departure_show_company
|
var = gui.departure_show_company
|
||||||
@@ -4958,6 +4962,7 @@ flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
|
|||||||
def = false
|
def = false
|
||||||
str = STR_CONFIG_DEPARTURE_COMPANY_NAME
|
str = STR_CONFIG_DEPARTURE_COMPANY_NAME
|
||||||
strhelp = STR_CONFIG_DEPARTURE_COMPANY_NAME_HELPTEXT
|
strhelp = STR_CONFIG_DEPARTURE_COMPANY_NAME_HELPTEXT
|
||||||
|
post_cb = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }
|
||||||
|
|
||||||
[SDTC_BOOL]
|
[SDTC_BOOL]
|
||||||
var = gui.departure_show_vehicle_type
|
var = gui.departure_show_vehicle_type
|
||||||
@@ -4965,6 +4970,7 @@ flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
|
|||||||
def = false
|
def = false
|
||||||
str = STR_CONFIG_DEPARTURE_VEHICLE_TYPE
|
str = STR_CONFIG_DEPARTURE_VEHICLE_TYPE
|
||||||
strhelp = STR_CONFIG_DEPARTURE_VEHICLE_TYPE_HELPTEXT
|
strhelp = STR_CONFIG_DEPARTURE_VEHICLE_TYPE_HELPTEXT
|
||||||
|
post_cb = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }
|
||||||
|
|
||||||
[SDTC_BOOL]
|
[SDTC_BOOL]
|
||||||
var = gui.departure_show_vehicle_color
|
var = gui.departure_show_vehicle_color
|
||||||
@@ -4972,6 +4978,7 @@ flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
|
|||||||
def = false
|
def = false
|
||||||
str = STR_CONFIG_DEPARTURE_VEHICLE_COLOR
|
str = STR_CONFIG_DEPARTURE_VEHICLE_COLOR
|
||||||
strhelp = STR_CONFIG_DEPARTURE_VEHICLE_COLOR_HELPTEXT
|
strhelp = STR_CONFIG_DEPARTURE_VEHICLE_COLOR_HELPTEXT
|
||||||
|
post_cb = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }
|
||||||
|
|
||||||
[SDTC_BOOL]
|
[SDTC_BOOL]
|
||||||
var = gui.departure_larger_font
|
var = gui.departure_larger_font
|
||||||
@@ -4979,6 +4986,7 @@ flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
|
|||||||
def = false
|
def = false
|
||||||
str = STR_CONFIG_DEPARTURE_LARGER_FONT
|
str = STR_CONFIG_DEPARTURE_LARGER_FONT
|
||||||
strhelp = STR_CONFIG_DEPARTURE_LARGER_FONT_HELPTEXT
|
strhelp = STR_CONFIG_DEPARTURE_LARGER_FONT_HELPTEXT
|
||||||
|
post_cb = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }
|
||||||
|
|
||||||
[SDTC_BOOL]
|
[SDTC_BOOL]
|
||||||
var = gui.departure_destination_type
|
var = gui.departure_destination_type
|
||||||
@@ -4986,6 +4994,7 @@ flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
|
|||||||
def = false
|
def = false
|
||||||
str = STR_CONFIG_DEPARTURE_DESTINATION_TYPE
|
str = STR_CONFIG_DEPARTURE_DESTINATION_TYPE
|
||||||
strhelp = STR_CONFIG_DEPARTURE_DESTINATION_TYPE_HELPTEXT
|
strhelp = STR_CONFIG_DEPARTURE_DESTINATION_TYPE_HELPTEXT
|
||||||
|
post_cb = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }
|
||||||
|
|
||||||
[SDTC_BOOL]
|
[SDTC_BOOL]
|
||||||
var = gui.departure_show_both
|
var = gui.departure_show_both
|
||||||
@@ -4993,6 +5002,7 @@ flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
|
|||||||
def = false
|
def = false
|
||||||
str = STR_CONFIG_DEPARTURE_SHOW_BOTH
|
str = STR_CONFIG_DEPARTURE_SHOW_BOTH
|
||||||
strhelp = STR_CONFIG_DEPARTURE_SHOW_BOTH_HELPTEXT
|
strhelp = STR_CONFIG_DEPARTURE_SHOW_BOTH_HELPTEXT
|
||||||
|
post_cb = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }
|
||||||
|
|
||||||
[SDTC_BOOL]
|
[SDTC_BOOL]
|
||||||
var = gui.departure_only_passengers
|
var = gui.departure_only_passengers
|
||||||
@@ -5000,6 +5010,7 @@ flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
|
|||||||
def = false
|
def = false
|
||||||
str = STR_CONFIG_DEPARTURE_ONLY_PASSENGERS
|
str = STR_CONFIG_DEPARTURE_ONLY_PASSENGERS
|
||||||
strhelp = STR_CONFIG_DEPARTURE_ONLY_PASSENGERS_HELPTEXT
|
strhelp = STR_CONFIG_DEPARTURE_ONLY_PASSENGERS_HELPTEXT
|
||||||
|
post_cb = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }
|
||||||
|
|
||||||
[SDTC_BOOL]
|
[SDTC_BOOL]
|
||||||
var = gui.departure_smart_terminus
|
var = gui.departure_smart_terminus
|
||||||
@@ -5007,6 +5018,7 @@ flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
|
|||||||
def = false
|
def = false
|
||||||
str = STR_CONFIG_DEPARTURE_SMART_TERMINUS
|
str = STR_CONFIG_DEPARTURE_SMART_TERMINUS
|
||||||
strhelp = STR_CONFIG_DEPARTURE_SMART_TERMINUS_HELPTEXT
|
strhelp = STR_CONFIG_DEPARTURE_SMART_TERMINUS_HELPTEXT
|
||||||
|
post_cb = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }
|
||||||
|
|
||||||
[SDTC_BOOL]
|
[SDTC_BOOL]
|
||||||
var = gui.departure_show_all_stops
|
var = gui.departure_show_all_stops
|
||||||
@@ -5014,6 +5026,7 @@ flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
|
|||||||
def = false
|
def = false
|
||||||
str = STR_CONFIG_DEPARTURE_SHOW_ALL_STOPS
|
str = STR_CONFIG_DEPARTURE_SHOW_ALL_STOPS
|
||||||
strhelp = STR_CONFIG_DEPARTURE_SHOW_ALL_STOPS_HELPTEXT
|
strhelp = STR_CONFIG_DEPARTURE_SHOW_ALL_STOPS_HELPTEXT
|
||||||
|
post_cb = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }
|
||||||
|
|
||||||
[SDTC_BOOL]
|
[SDTC_BOOL]
|
||||||
var = gui.departure_merge_identical
|
var = gui.departure_merge_identical
|
||||||
@@ -5021,6 +5034,7 @@ flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
|
|||||||
def = false
|
def = false
|
||||||
str = STR_CONFIG_DEPARTURE_MERGE_IDENTICAL
|
str = STR_CONFIG_DEPARTURE_MERGE_IDENTICAL
|
||||||
strhelp = STR_CONFIG_DEPARTURE_MERGE_IDENTICAL_HELPTEXT
|
strhelp = STR_CONFIG_DEPARTURE_MERGE_IDENTICAL_HELPTEXT
|
||||||
|
post_cb = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }
|
||||||
|
|
||||||
[SDTC_VAR]
|
[SDTC_VAR]
|
||||||
var = gui.departure_conditionals
|
var = gui.departure_conditionals
|
||||||
@@ -5032,7 +5046,7 @@ max = 2
|
|||||||
str = STR_CONFIG_DEPARTURE_CONDITIONALS
|
str = STR_CONFIG_DEPARTURE_CONDITIONALS
|
||||||
strval = STR_CONFIG_DEPARTURE_CONDITIONALS_1
|
strval = STR_CONFIG_DEPARTURE_CONDITIONALS_1
|
||||||
strhelp = STR_CONFIG_DEPARTURE_CONDITIONALS_HELPTEXT
|
strhelp = STR_CONFIG_DEPARTURE_CONDITIONALS_HELPTEXT
|
||||||
post_cb = [](auto) { MarkWholeScreenDirty(); }
|
post_cb = [](auto) { InvalidateWindowClassesData(WC_DEPARTURES_BOARD, 1); }
|
||||||
|
|
||||||
[SDTC_BOOL]
|
[SDTC_BOOL]
|
||||||
var = gui.quick_goto
|
var = gui.quick_goto
|
||||||
|
Reference in New Issue
Block a user