summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralberth <alberth@openttd.org>2009-10-31 11:34:43 +0000
committeralberth <alberth@openttd.org>2009-10-31 11:34:43 +0000
commit82e21df3a48cc20b8df71a197e1f634eb611240e (patch)
treec63b1aabbec3a2f11d41e380f48aaa27c808b8b2
parent52b2d67200e489f017d520b408cf9509f459e222 (diff)
downloadopenttd-82e21df3a48cc20b8df71a197e1f634eb611240e.tar.xz
(svn r17915) -Codechange: Allow windows to compute their own initial position.
-rw-r--r--src/window.cpp7
-rw-r--r--src/window_gui.h12
2 files changed, 18 insertions, 1 deletions
diff --git a/src/window.cpp b/src/window.cpp
index 3ba3866e4..4c1b8d698 100644
--- a/src/window.cpp
+++ b/src/window.cpp
@@ -1310,6 +1310,11 @@ static Point LocalGetWindowPlacement(const WindowDesc *desc, int16 sm_width, int
return pt;
}
+/* virtual */ Point Window::OnInitialPosition(const WindowDesc *desc, int16 sm_width, int16 sm_height, int window_number)
+{
+ return LocalGetWindowPlacement(desc, sm_width, sm_height, window_number);
+}
+
/**
* Set the positions of a new window from a WindowDesc and open it.
*
@@ -1356,7 +1361,7 @@ void Window::FinishInitNested(const WindowDesc *desc, WindowNumber window_number
{
this->InitializeData(desc->cls, NULL, window_number);
this->desc_flags = desc->flags;
- Point pt = LocalGetWindowPlacement(desc, this->nested_root->smallest_x, this->nested_root->smallest_y, window_number);
+ Point pt = this->OnInitialPosition(desc, this->nested_root->smallest_x, this->nested_root->smallest_y, window_number);
this->InitializePositionSize(pt.x, pt.y, this->nested_root->smallest_x, this->nested_root->smallest_y);
this->FindWindowPlacementAndResize(desc->default_width, desc->default_height);
}
diff --git a/src/window_gui.h b/src/window_gui.h
index a78004f89..c31f7ae62 100644
--- a/src/window_gui.h
+++ b/src/window_gui.h
@@ -639,6 +639,18 @@ public:
/*** Event handling ***/
/**
+ * Compute the initial position of the window.
+ * @param *desc The pointer to the WindowDesc of the window to create.
+ * @param sm_width Smallest width of the window.
+ * @param sm_height Smallest height of the window.
+ * @param window_number The window number of the new window.
+ * @return Initial position of the top-left corner of the window.
+ *
+ * @note Due to the way C++ works, only windows with nested widgets can usefully override this function.
+ */
+ virtual Point OnInitialPosition(const WindowDesc *desc, int16 sm_width, int16 sm_height, int window_number);
+
+ /**
* The window must be repainted.
* @note This method should not change any state, it should only use drawing functions.
*/