|
|
@ -71,12 +71,7 @@ public:
|
|
|
|
|
|
|
|
|
|
|
|
Point pt;
|
|
|
|
Point pt;
|
|
|
|
if (tile == INVALID_TILE) {
|
|
|
|
if (tile == INVALID_TILE) {
|
|
|
|
/* Use tile under mouse as center for new viewport */
|
|
|
|
/* No tile? Use center of main viewport. */
|
|
|
|
Point pt = GetTileBelowCursor();
|
|
|
|
|
|
|
|
if (pt.x != -1) tile = TileVirtXY(pt.x, pt.y);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (tile == INVALID_TILE) {
|
|
|
|
|
|
|
|
/* Still no tile? Use center of main viewport. */
|
|
|
|
|
|
|
|
const Window *w = FindWindowById(WC_MAIN_WINDOW, 0);
|
|
|
|
const Window *w = FindWindowById(WC_MAIN_WINDOW, 0);
|
|
|
|
|
|
|
|
|
|
|
|
/* center on same place as main window (zoom is maximum, no adjustment needed) */
|
|
|
|
/* center on same place as main window (zoom is maximum, no adjustment needed) */
|
|
|
@ -175,6 +170,10 @@ static const WindowDesc _extra_view_port_desc(
|
|
|
|
_nested_extra_view_port_widgets, lengthof(_nested_extra_view_port_widgets)
|
|
|
|
_nested_extra_view_port_widgets, lengthof(_nested_extra_view_port_widgets)
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* Show a new Extra Viewport window.
|
|
|
|
|
|
|
|
* @param tile Tile to center the view on. INVALID_TILE means to use the center of main viewport.
|
|
|
|
|
|
|
|
*/
|
|
|
|
void ShowExtraViewPortWindow(TileIndex tile)
|
|
|
|
void ShowExtraViewPortWindow(TileIndex tile)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
int i = 0;
|
|
|
|
int i = 0;
|
|
|
@ -184,3 +183,16 @@ void ShowExtraViewPortWindow(TileIndex tile)
|
|
|
|
|
|
|
|
|
|
|
|
new ExtraViewportWindow(&_extra_view_port_desc, i, tile);
|
|
|
|
new ExtraViewportWindow(&_extra_view_port_desc, i, tile);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* Show a new Extra Viewport window.
|
|
|
|
|
|
|
|
* Center it on the tile under the cursor, if the cursor is inside a viewport.
|
|
|
|
|
|
|
|
* If that fails, center it on main viewport center.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
void ShowExtraViewPortWindowForTileUnderCursor()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
/* Use tile under mouse as center for new viewport.
|
|
|
|
|
|
|
|
* Do this before creating the window, it might appear just below the mouse. */
|
|
|
|
|
|
|
|
Point pt = GetTileBelowCursor();
|
|
|
|
|
|
|
|
ShowExtraViewPortWindow(pt.x != -1 ? TileVirtXY(pt.x, pt.y) : INVALID_TILE);
|
|
|
|
|
|
|
|
}
|
|
|
|