diff --git a/src/company_cmd.cpp b/src/company_cmd.cpp index 9af71ff835..30f5dba288 100644 --- a/src/company_cmd.cpp +++ b/src/company_cmd.cpp @@ -184,7 +184,7 @@ void InvalidateCompanyWindows(const Company *company) { CompanyID cid = company->index; - if (cid == _local_company) SetWindowDirty(WC_STATUS_BAR, 0); + if (cid == _local_company) SetWindowWidgetDirty(WC_STATUS_BAR, 0, 2); SetWindowDirty(WC_FINANCES, cid); } diff --git a/src/date.cpp b/src/date.cpp index 40c8802420..29c36dcb21 100644 --- a/src/date.cpp +++ b/src/date.cpp @@ -276,7 +276,9 @@ static void OnNewDay() DisasterDailyLoop(); IndustryDailyLoop(); - SetWindowWidgetDirty(WC_STATUS_BAR, 0, 0); + if (!_settings_client.gui.time_in_minutes || _settings_client.gui.date_with_time > 0) { + SetWindowWidgetDirty(WC_STATUS_BAR, 0, 0); + } EnginesDailyLoop(); /* Refresh after possible snowline change */ diff --git a/src/statusbar_gui.cpp b/src/statusbar_gui.cpp index b60ba7ec9c..7581f25e7e 100644 --- a/src/statusbar_gui.cpp +++ b/src/statusbar_gui.cpp @@ -81,6 +81,7 @@ struct StatusBarWindow : Window { int ticker_scroll; GUITimer ticker_timer; GUITimer reminder_timeout; + int64 last_minute = 0; static const int TICKER_STOP = 1640; ///< scrolling is finished when counter reaches this value static const int REMINDER_START = 1350; ///< time in ms for reminder notification (red dot on the right) to stay @@ -223,7 +224,8 @@ struct StatusBarWindow : Window { { if (_pause_mode != PM_UNPAUSED) return; - if (_settings_client.gui.time_in_minutes) { + if (_settings_client.gui.time_in_minutes && this->last_minute != CURRENT_MINUTE) { + this->last_minute = CURRENT_MINUTE; this->SetWidgetDirty(WID_S_LEFT); }