diff --git a/src/departures_gui.cpp b/src/departures_gui.cpp index 199d003e8c..fb64250ff3 100644 --- a/src/departures_gui.cpp +++ b/src/departures_gui.cpp @@ -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 @@ -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(); + } } }; diff --git a/src/table/settings/settings.ini b/src/table/settings/settings.ini index 7066bcf054..073a6c41d5 100644 --- a/src/table/settings/settings.ini +++ b/src/table/settings/settings.ini @@ -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