diff options
author | alberth <alberth@openttd.org> | 2009-10-31 11:34:43 +0000 |
---|---|---|
committer | alberth <alberth@openttd.org> | 2009-10-31 11:34:43 +0000 |
commit | 82e21df3a48cc20b8df71a197e1f634eb611240e (patch) | |
tree | c63b1aabbec3a2f11d41e380f48aaa27c808b8b2 /src | |
parent | 52b2d67200e489f017d520b408cf9509f459e222 (diff) | |
download | openttd-82e21df3a48cc20b8df71a197e1f634eb611240e.tar.xz |
(svn r17915) -Codechange: Allow windows to compute their own initial position.
Diffstat (limited to 'src')
-rw-r--r-- | src/window.cpp | 7 | ||||
-rw-r--r-- | src/window_gui.h | 12 |
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. */ |