mirror of https://github.com/OpenTTD/OpenTTD
(svn r12937) -Codechange: split allocating and finding the spot to place a window. Patch by Alberth.
parent
72eb1f100b
commit
5b44c68b19
|
@ -916,15 +916,14 @@ restart:
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the x and y coordinates of a new window.
|
* Compute the position of the top-left corner of a new window that is opened.
|
||||||
*
|
*
|
||||||
* @param *desc The pointer to the WindowDesc to be created
|
* @param *desc The pointer to the WindowDesc to be created
|
||||||
* @param window_number the window number of the new window
|
* @param window_number the window number of the new window
|
||||||
* @param data arbitrary data that is send with the WE_CREATE message
|
|
||||||
*
|
*
|
||||||
* @return see Window pointer of the newly created window
|
* @return Coordinate of the top-left corner of the new window
|
||||||
*/
|
*/
|
||||||
static Window *LocalAllocateWindowDesc(const WindowDesc *desc, int window_number, void *data)
|
static Point LocalGetWindowPlacement(const WindowDesc *desc, int window_number)
|
||||||
{
|
{
|
||||||
Point pt;
|
Point pt;
|
||||||
Window *w;
|
Window *w;
|
||||||
|
@ -954,8 +953,7 @@ static Window *LocalAllocateWindowDesc(const WindowDesc *desc, int window_number
|
||||||
pt.x = FindWindowById(WC_MAIN_TOOLBAR, 0)->left;
|
pt.x = FindWindowById(WC_MAIN_TOOLBAR, 0)->left;
|
||||||
break;
|
break;
|
||||||
case WDP_AUTO: /* Find a good automatic position for the window */
|
case WDP_AUTO: /* Find a good automatic position for the window */
|
||||||
pt = GetAutoPlacePosition(desc->default_width, desc->default_height);
|
return GetAutoPlacePosition(desc->default_width, desc->default_height);
|
||||||
goto allocate_window;
|
|
||||||
case WDP_CENTER: /* Centre the window horizontally */
|
case WDP_CENTER: /* Centre the window horizontally */
|
||||||
pt.x = (_screen.width - desc->default_width) / 2;
|
pt.x = (_screen.width - desc->default_width) / 2;
|
||||||
break;
|
break;
|
||||||
|
@ -981,9 +979,24 @@ static Window *LocalAllocateWindowDesc(const WindowDesc *desc, int window_number
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
allocate_window:
|
return pt;
|
||||||
w = LocalAllocateWindow(pt.x, pt.y, desc->minimum_width, desc->minimum_height, desc->default_width, desc->default_height, desc->proc, desc->cls, desc->widgets, window_number, data);
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the positions of a new window from a WindowDesc and open it.
|
||||||
|
*
|
||||||
|
* @param *desc The pointer to the WindowDesc to be created
|
||||||
|
* @param window_number the window number of the new window
|
||||||
|
* @param data arbitrary data that is send with the WE_CREATE message
|
||||||
|
*
|
||||||
|
* @return Window pointer of the newly created window
|
||||||
|
*/
|
||||||
|
static Window *LocalAllocateWindowDesc(const WindowDesc *desc, int window_number, void *data)
|
||||||
|
{
|
||||||
|
Point pt = LocalGetWindowPlacement(desc, window_number);
|
||||||
|
Window *w = LocalAllocateWindow(pt.x, pt.y, desc->minimum_width, desc->minimum_height, desc->default_width, desc->default_height, desc->proc, desc->cls, desc->widgets, window_number, data);
|
||||||
w->desc_flags = desc->flags;
|
w->desc_flags = desc->flags;
|
||||||
|
|
||||||
return w;
|
return w;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue