mirror of https://github.com/OpenTTD/OpenTTD
(svn r11988) -Codechange: Add a generic way of changing a widget's size and adjust the widgets around it to suit.
parent
d3990083d3
commit
c99eb9e456
|
@ -958,23 +958,6 @@ void DrawEngineList(VehicleType type, int x, int y, const EngineList eng_list, u
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ExpandPurchaseInfoWidget(Window *w, int expand_by)
|
|
||||||
{
|
|
||||||
Widget *wi = &w->widget[BUILD_VEHICLE_WIDGET_PANEL];
|
|
||||||
|
|
||||||
SetWindowDirty(w);
|
|
||||||
wi->bottom += expand_by;
|
|
||||||
|
|
||||||
for (uint i = BUILD_VEHICLE_WIDGET_BUILD; i < BUILD_VEHICLE_WIDGET_END; i++) {
|
|
||||||
wi = &w->widget[i];
|
|
||||||
wi->top += expand_by;
|
|
||||||
wi->bottom += expand_by;
|
|
||||||
}
|
|
||||||
|
|
||||||
w->height += expand_by;
|
|
||||||
SetWindowDirty(w);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void DrawBuildVehicleWindow(Window *w)
|
static void DrawBuildVehicleWindow(Window *w)
|
||||||
{
|
{
|
||||||
const buildvehicle_d *bv = &WP(w, buildvehicle_d);
|
const buildvehicle_d *bv = &WP(w, buildvehicle_d);
|
||||||
|
@ -996,7 +979,11 @@ static void DrawBuildVehicleWindow(Window *w)
|
||||||
const Widget *wi = &w->widget[BUILD_VEHICLE_WIDGET_PANEL];
|
const Widget *wi = &w->widget[BUILD_VEHICLE_WIDGET_PANEL];
|
||||||
int text_end = DrawVehiclePurchaseInfo(2, wi->top + 1, wi->right - wi->left - 2, bv->sel_engine);
|
int text_end = DrawVehiclePurchaseInfo(2, wi->top + 1, wi->right - wi->left - 2, bv->sel_engine);
|
||||||
|
|
||||||
if (text_end > wi->bottom) ExpandPurchaseInfoWidget(w, text_end - wi->bottom);
|
if (text_end > wi->bottom) {
|
||||||
|
SetWindowDirty(w);
|
||||||
|
ResizeWindowForWidget(w, BUILD_VEHICLE_WIDGET_PANEL, 0, text_end - wi->bottom);
|
||||||
|
SetWindowDirty(w);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DrawSortButtonState(w, BUILD_VEHICLE_WIDGET_SORT_ASSENDING_DESCENDING, bv->descending_sort_order ? SBS_DOWN : SBS_UP);
|
DrawSortButtonState(w, BUILD_VEHICLE_WIDGET_SORT_ASSENDING_DESCENDING, bv->descending_sort_order ? SBS_DOWN : SBS_UP);
|
||||||
|
|
|
@ -583,6 +583,24 @@ void ResizeButtons(Window *w, byte left, byte right)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ResizeWindowForWidget(Window *w, int widget, int delta_x, int delta_y)
|
||||||
|
{
|
||||||
|
int right = w->widget[widget].right;
|
||||||
|
int bottom = w->widget[widget].bottom;
|
||||||
|
|
||||||
|
for (uint i = 0; i < w->widget_count; i++) {
|
||||||
|
if (w->widget[i].left >= right) w->widget[i].left += delta_x;
|
||||||
|
if (w->widget[i].right >= right) w->widget[i].right += delta_x;
|
||||||
|
if (w->widget[i].top >= bottom) w->widget[i].top += delta_y;
|
||||||
|
if (w->widget[i].bottom >= bottom) w->widget[i].bottom += delta_y;
|
||||||
|
}
|
||||||
|
|
||||||
|
w->width += delta_x;
|
||||||
|
w->height += delta_y;
|
||||||
|
w->resize.width += delta_x;
|
||||||
|
w->resize.height += delta_y;
|
||||||
|
}
|
||||||
|
|
||||||
/** Draw a sort button's up or down arrow symbol.
|
/** Draw a sort button's up or down arrow symbol.
|
||||||
* @param w Window of widget
|
* @param w Window of widget
|
||||||
* @param widget Sort button widget
|
* @param widget Sort button widget
|
||||||
|
|
|
@ -630,6 +630,10 @@ void ScrollbarClickHandler(Window *w, const Widget *wi, int x, int y);
|
||||||
*/
|
*/
|
||||||
void ResizeButtons(Window *w, byte left, byte right);
|
void ResizeButtons(Window *w, byte left, byte right);
|
||||||
|
|
||||||
|
/** Resize a widget an shuffle other widgets around to fit.
|
||||||
|
*/
|
||||||
|
void ResizeWindowForWidget(Window *w, int widget, int delta_x, int delta_y);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the enabled/disabled status of a widget.
|
* Sets the enabled/disabled status of a widget.
|
||||||
|
|
Loading…
Reference in New Issue