# HG changeset patch # User truelight # Date 2007-08-23 11:08:59 # Node ID e57bd91228a290d02925e3fcae7cd767333b4733 # Parent 838c9d05e2293ca18546418de034092c753ffe31 (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) diff --git a/src/window.cpp b/src/window.cpp --- 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);