diff options
author | alberth <alberth@openttd.org> | 2010-04-04 11:21:56 +0000 |
---|---|---|
committer | alberth <alberth@openttd.org> | 2010-04-04 11:21:56 +0000 |
commit | 6934e6fe7d5940c36b8542b340e2566a95939e9c (patch) | |
tree | d6c6476059bcad82354d70d62bb19b1a176148b3 | |
parent | 4441fee0f5a6d5396605b8f787367827b3edcc62 (diff) | |
download | openttd-6934e6fe7d5940c36b8542b340e2566a95939e9c.tar.xz |
(svn r19558) -Fix [FS#3730]: Window::OnResize() was not always called while resizing a window.
-rw-r--r-- | src/window.cpp | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/src/window.cpp b/src/window.cpp index 602759189..ba3d7f0eb 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -548,8 +548,7 @@ void Window::ReInit(int rx, int ry) if (this->resize.step_height > 1) dy -= dy % (int)this->resize.step_height; ResizeWindow(this, dx, dy); - this->OnResize(); - this->SetDirty(); + /* ResizeWindow() does this->SetDirty() already, no need to do it again here. */ } /** Set the shaded state of the window to \a make_shaded. @@ -962,11 +961,12 @@ void Window::FindWindowPlacementAndResize(int def_width, int def_height) if (this->resize.step_height > 1) enlarge_y -= enlarge_y % (int)this->resize.step_height; ResizeWindow(this, enlarge_x, enlarge_y); + /* ResizeWindow() calls this->OnResize(). */ + } else { + /* Always call OnResize; that way the scrollbars and matrices get initialized. */ + this->OnResize(); } - /* Always call OnResize; that way the scrollbars and matrices get initialized */ - this->OnResize(); - int nx = this->left; int ny = this->top; @@ -1425,6 +1425,7 @@ void ResizeWindow(Window *w, int delta_x, int delta_y) w->nested_root->AssignSizePosition(ST_RESIZE, 0, 0, w->nested_root->smallest_x + new_xinc, w->nested_root->smallest_y + new_yinc, _dynlang.text_dir == TD_RTL); w->width = w->nested_root->current_x; w->height = w->nested_root->current_y; + w->OnResize(); w->SetDirty(); } @@ -1679,7 +1680,6 @@ static bool HandleWindowDragging() /* ResizeWindow sets both pre- and after-size to dirty for redrawal */ ResizeWindow(w, x, y); - w->OnResize(); return false; } } @@ -2548,10 +2548,7 @@ void RelocateAllWindows(int neww, int newh) * in a 'backup'-desc that the window should always be centred. */ switch (w->window_class) { case WC_MAIN_TOOLBAR: - if (neww - w->width != 0) { - ResizeWindow(w, min(neww, 640) - w->width, 0); - w->OnResize(); - } + if (neww - w->width != 0) ResizeWindow(w, min(neww, 640) - w->width, 0); top = w->top; left = PositionMainToolbar(w); // changes toolbar orientation |