changeset 13494:f7985f7614d2 draft

(svn r18013) -Codechange: Add possibility to change window size during ReInit().
author alberth <alberth@openttd.org>
date Sun, 08 Nov 2009 15:22:04 +0000
parents dec4ce746e13
children 5bbbc2bb866e
files src/window.cpp src/window_gui.h
diffstat 2 files changed, 10 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/window.cpp
+++ b/src/window.cpp
@@ -599,8 +599,12 @@
 	SetDirtyBlocks(this->left, this->top, this->left + this->width, this->top + this->height);
 }
 
-/** Re-initialize a window. */
-void Window::ReInit()
+/** Re-initialize a window, and optionally change its size.
+ * @param rx Horizontal resize of the window.
+ * @param ry Vertical resize of the window.
+ * @note For just resizing the window, use #ResizeWindow instead.
+ */
+void Window::ReInit(int rx, int ry)
 {
 	if (this->nested_root == NULL) return; // Only nested widget windows can re-initialize.
 
@@ -620,9 +624,9 @@
 	this->resize.step_width  = this->nested_root->resize_x;
 	this->resize.step_height = this->nested_root->resize_y;
 
-	/* Resize as close to the original size as possible. */
-	window_width  = max(window_width,  this->width);
-	window_height = max(window_height, this->height);
+	/* Resize as close to the original size + requested resize as possible. */
+	window_width  = max(window_width  + rx, this->width);
+	window_height = max(window_height + ry, this->height);
 	int dx = (this->resize.step_width  == 0) ? 0 : window_width  - this->width;
 	int dy = (this->resize.step_height == 0) ? 0 : window_height - this->height;
 	/* dx and dy has to go by step.. calculate it.
--- a/src/window_gui.h
+++ b/src/window_gui.h
@@ -598,7 +598,7 @@
 	void DeleteChildWindows(WindowClass wc = WC_INVALID) const;
 
 	void SetDirty() const;
-	void ReInit();
+	void ReInit(int rx = 0, int ry = 0);
 
 	/**
 	 * Mark this window's data as invalid (in need of re-computing)