mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r10967) -Fix: in case of moving the window on create (because it doesn't fit in the screen), make sure to move the viewport too if we are an extra viewport (spotted by Maedhros)
This commit is contained in:
parent
043e502d14
commit
da8d778622
|
@ -693,11 +693,21 @@ static Window *LocalAllocateWindow(
|
|||
w->wndproc(w, &e);
|
||||
}
|
||||
|
||||
if (w->left + w->width > _screen.width) w->left -= (w->left + w->width - _screen.width);
|
||||
int nx = w->left;
|
||||
int ny = w->top;
|
||||
|
||||
if (nx + w->width > _screen.width) nx -= (nx + w->width - _screen.width);
|
||||
|
||||
const Window *wt = FindWindowById(WC_MAIN_TOOLBAR, 0);
|
||||
w->top = max(w->top, (wt == NULL || w == wt || y == 0) ? 0 : wt->height);
|
||||
w->left = max(w->left, 0);
|
||||
ny = max(ny, (wt == NULL || w == wt || y == 0) ? 0 : wt->height);
|
||||
nx = max(nx, 0);
|
||||
|
||||
if (w->viewport != NULL) {
|
||||
w->viewport->left += nx - w->left;
|
||||
w->viewport->top += ny - w->top;
|
||||
}
|
||||
w->left = nx;
|
||||
w->top = ny;
|
||||
|
||||
SetWindowDirty(w);
|
||||
|
||||
|
|
Loading…
Reference in New Issue