Mercurial > hg > openttd
changeset 18584:8e0f5c31ae22 draft
(svn r23429) -Fix [FS#4842]: prevent windows to be resized beyond the bounds of the (main) window
author | rubidium <rubidium@openttd.org> |
---|---|
date | Sun, 04 Dec 2011 14:00:23 +0000 |
parents | d0fba6f5c87a |
children | d70925444635 |
files | src/window.cpp |
diffstat | 1 files changed, 7 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/window.cpp +++ b/src/window.cpp @@ -1671,6 +1671,13 @@ void ResizeWindow(Window *w, int delta_x, int delta_y) { if (delta_x != 0 || delta_y != 0) { + /* Determine the new right/bottom position. If that is outside of the bounds of + * the resolution clamp it in such a manner that it stays within the bounts. */ + int new_right = w->left + w->width + delta_x; + int new_bottom = w->top + w->height + delta_y; + if (new_right >= (int)_cur_resolution.width) delta_x -= new_right - _cur_resolution.width; + if (new_bottom >= (int)_cur_resolution.height) delta_y -= new_bottom - _cur_resolution.height; + w->SetDirty(); uint new_xinc = max(0, (w->nested_root->resize_x == 0) ? 0 : (int)(w->nested_root->current_x - w->nested_root->smallest_x) + delta_x);