(svn r14940) -Fix: let the statusbar know the current news are invalid or bad things will happen

This commit is contained in:
smatz 2009-01-09 20:42:17 +00:00
parent 5c666fac14
commit 5fc7fe9648
3 changed files with 10 additions and 8 deletions

View File

@ -449,7 +449,8 @@ static bool ReadyForNextItem()
/** Move to the next news item */
static void MoveToNextItem()
{
DeleteWindowById(WC_NEWS_WINDOW, 0);
InvalidateWindowData(WC_STATUS_BAR, 0, SBI_NEWS_DELETED); // invalidate the statusbar
DeleteWindowById(WC_NEWS_WINDOW, 0); // close the newspapers window if shown
_forced_news = NULL;
/* if we're not at the last item, then move on */
@ -526,13 +527,9 @@ void AddNewsItem(StringID string, NewsSubtype subtype, uint data_a, uint data_b,
/** Delete a news item from the queue */
static void DeleteNewsItem(NewsItem *ni)
{
if (_forced_news == ni) {
/* about to remove the currently forced item; skip to next */
MoveToNextItem();
}
if ((_current_news == ni) && (FindWindowById(WC_NEWS_WINDOW, 0) != NULL)) {
/* about to remove the currently displayed item; also skip */
if (_forced_news == ni || _current_news == ni) {
/* about to remove the currently forced item (shown as newspapers) ||
* about to remove the currently displayed item (newspapers, ticker, or just a reminder) */
MoveToNextItem();
}

View File

@ -126,6 +126,10 @@ struct StatusBarWindow : Window {
case SBI_SAVELOAD_FINISH: this->saving = false; break;
case SBI_SHOW_TICKER: this->ticker_scroll = 360; break;
case SBI_SHOW_REMINDER: this->reminder_timeout = 91; break;
case SBI_NEWS_DELETED:
this->ticker_scroll = -1280; // reset ticker ...
this->reminder_timeout = 0; // ... and reminder
break;
}
}

View File

@ -11,6 +11,7 @@ enum StatusBarInvalidate
SBI_SAVELOAD_FINISH,
SBI_SHOW_TICKER,
SBI_SHOW_REMINDER,
SBI_NEWS_DELETED,
SBI_END
};