|
@@ -973,49 +973,49 @@ struct MessageHistoryWindow : Window {
|
|
|
size->height = 4 * resize->height + this->top_spacing + this->bottom_spacing; // At least 4 lines are visible.
|
|
|
size->width = max(200u, size->width); // At least 200 pixels wide.
|
|
|
}
|
|
|
}
|
|
|
|
|
|
virtual void OnPaint()
|
|
|
{
|
|
|
this->OnInvalidateData(0);
|
|
|
this->DrawWidgets();
|
|
|
}
|
|
|
|
|
|
virtual void DrawWidget(const Rect &r, int widget) const
|
|
|
{
|
|
|
if (widget != MHW_BACKGROUND || _total_news == 0) return;
|
|
|
|
|
|
/* Find the first news item to display. */
|
|
|
NewsItem *ni = _latest_news;
|
|
|
for (int n = this->vscroll->GetPosition(); n > 0; n--) {
|
|
|
ni = ni->prev;
|
|
|
if (ni == NULL) return;
|
|
|
}
|
|
|
|
|
|
/* Fill the widget with news items. */
|
|
|
int y = r.top + this->top_spacing;
|
|
|
bool rtl = _dynlang.text_dir == TD_RTL;
|
|
|
bool rtl = _current_text_dir == TD_RTL;
|
|
|
uint date_left = rtl ? r.right - WD_FRAMERECT_RIGHT - this->date_width : r.left + WD_FRAMERECT_LEFT;
|
|
|
uint date_right = rtl ? r.right - WD_FRAMERECT_RIGHT : r.left + WD_FRAMERECT_LEFT + this->date_width;
|
|
|
uint news_left = rtl ? r.left + WD_FRAMERECT_LEFT : r.left + WD_FRAMERECT_LEFT + this->date_width + WD_FRAMERECT_RIGHT;
|
|
|
uint news_right = rtl ? r.right - WD_FRAMERECT_RIGHT - this->date_width - WD_FRAMERECT_RIGHT : r.right - WD_FRAMERECT_RIGHT;
|
|
|
for (int n = this->vscroll->GetCapacity(); n > 0; n--) {
|
|
|
SetDParam(0, ni->date);
|
|
|
DrawString(date_left, date_right, y, STR_SHORT_DATE);
|
|
|
|
|
|
DrawNewsString(news_left, news_right, y, TC_WHITE, ni);
|
|
|
y += this->line_height;
|
|
|
|
|
|
ni = ni->prev;
|
|
|
if (ni == NULL) return;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
virtual void OnInvalidateData(int data)
|
|
|
{
|
|
|
this->vscroll->SetCount(_total_news);
|
|
|
}
|
|
|
|
|
|
virtual void OnClick(Point pt, int widget, int click_count)
|
|
|
{
|
|
|
if (widget == MHW_BACKGROUND) {
|