diff src/window.cpp @ 14951:9437b4726bac draft

(svn r19558) -Fix [FS#3730]: Window::OnResize() was not always called while resizing a window.
author alberth <alberth@openttd.org>
date Sun, 04 Apr 2010 11:21:56 +0000 (2010-04-04)
parents 4e80238218ca
children ed91b4c7075f
line wrap: on
line diff
--- a/src/window.cpp
+++ b/src/window.cpp
@@ -548,8 +548,7 @@
 	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 @@
 		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 @@
 	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 @@
 
 			/* ResizeWindow sets both pre- and after-size to dirty for redrawal */
 			ResizeWindow(w, x, y);
-			w->OnResize();
 			return false;
 		}
 	}
@@ -2548,10 +2548,7 @@
 		 * 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