(svn r26962) -Fix: Set up scrollbar size at the correct time (where it can be changed). Also ensure scrollbar is long enough to at least contain its buttons.

replace/41b28d7194a279bdc17475d4fbe2ea6ec885a466
peter1138 10 years ago
parent a573b94867
commit ad287d2a2c

@ -1989,17 +1989,27 @@ NWidgetScrollbar::NWidgetScrollbar(WidgetType tp, Colours colour, int index) : N
{
assert(tp == NWID_HSCROLLBAR || tp == NWID_VSCROLLBAR);
this->SetIndex(index);
}
void NWidgetScrollbar::SetupSmallestSize(Window *w, bool init_array)
{
if (init_array && this->index >= 0) {
assert(w->nested_array_size > (uint)this->index);
w->nested_array[this->index] = this;
}
this->min_x = 0;
this->min_y = 0;
switch (this->type) {
case NWID_HSCROLLBAR:
this->SetMinimalSize(0, NWidgetScrollbar::GetHorizontalDimension().height);
this->SetMinimalSize(NWidgetScrollbar::GetHorizontalDimension().width * 3, NWidgetScrollbar::GetHorizontalDimension().height);
this->SetResize(1, 0);
this->SetFill(1, 0);
this->SetDataTip(0x0, STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST);
break;
case NWID_VSCROLLBAR:
this->SetMinimalSize(NWidgetScrollbar::GetVerticalDimension().width, 0);
this->SetMinimalSize(NWidgetScrollbar::GetVerticalDimension().width, NWidgetScrollbar::GetVerticalDimension().height * 3);
this->SetResize(0, 1);
this->SetFill(0, 1);
this->SetDataTip(0x0, STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST);
@ -2007,14 +2017,7 @@ NWidgetScrollbar::NWidgetScrollbar(WidgetType tp, Colours colour, int index) : N
default: NOT_REACHED();
}
}
void NWidgetScrollbar::SetupSmallestSize(Window *w, bool init_array)
{
if (init_array && this->index >= 0) {
assert(w->nested_array_size > (uint)this->index);
w->nested_array[this->index] = this;
}
this->smallest_x = this->min_x;
this->smallest_y = this->min_y;
}

Loading…
Cancel
Save