summaryrefslogtreecommitdiff
path: root/src/window.cpp
diff options
context:
space:
mode:
authortruelight <truelight@openttd.org>2007-08-23 11:08:59 +0000
committertruelight <truelight@openttd.org>2007-08-23 11:08:59 +0000
commitec1d0811a462bab853027d8d58bae626ad9a8523 (patch)
tree2606ba7144c5cdc58df88bd436f647a0327a90ac /src/window.cpp
parentdc52f2cb1bcce4a252f2d1b5c2bc471af15080ec (diff)
downloadopenttd-ec1d0811a462bab853027d8d58bae626ad9a8523.tar.xz
(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)
Diffstat (limited to 'src/window.cpp')
-rw-r--r--src/window.cpp16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/window.cpp b/src/window.cpp
index 9be96bf53..ba105839a 100644
--- a/src/window.cpp
+++ b/src/window.cpp
@@ -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);