summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoralberth <alberth@openttd.org>2009-11-29 21:14:34 +0000
committeralberth <alberth@openttd.org>2009-11-29 21:14:34 +0000
commit5187a5980bcda6b37e30b755efed8aa3bbe936f0 (patch)
treef1ebfb274cfdf4ccb59bb632b6ea4d0e75d21e94 /src
parent8a8bf6c53dfd4dcf0515526c5f9f4d0b7dcfa839 (diff)
downloadopenttd-5187a5980bcda6b37e30b755efed8aa3bbe936f0.tar.xz
(svn r18345) -Codechange: Warn the window that it gets initialized, so it can do some work ahead.
Diffstat (limited to 'src')
-rw-r--r--src/window.cpp4
-rw-r--r--src/window_gui.h6
2 files changed, 9 insertions, 1 deletions
diff --git a/src/window.cpp b/src/window.cpp
index 95dcce7a0..5e9d22e1b 100644
--- a/src/window.cpp
+++ b/src/window.cpp
@@ -491,6 +491,7 @@ void Window::ReInit(int rx, int ry)
int window_width = this->width;
int window_height = this->height;
+ this->OnInit();
/* Re-initialize the window from the ground up. No need to change the nested_array, as all widgets stay where they are. */
this->nested_root->SetupSmallestSize(this, false);
this->nested_root->AssignSizePosition(ST_SMALLEST, 0, 0, this->nested_root->smallest_x, this->nested_root->smallest_y, _dynlang.text_dir == TD_RTL);
@@ -786,7 +787,8 @@ void Window::InitializeData(WindowClass cls, int window_number, uint32 desc_flag
this->window_number = window_number;
this->desc_flags = desc_flags;
- /* If available, initialize nested widget tree. */
+ this->OnInit();
+ /* Initialize nested widget tree. */
if (this->nested_array == NULL) {
this->nested_array = CallocT<NWidgetBase *>(this->nested_array_size);
this->nested_root->SetupSmallestSize(this, true);
diff --git a/src/window_gui.h b/src/window_gui.h
index c72b99569..4e327a3c4 100644
--- a/src/window_gui.h
+++ b/src/window_gui.h
@@ -535,6 +535,12 @@ public:
/*** Event handling ***/
/**
+ * Notification that the nested widget tree gets initialized. The event can be used to perform general computations.
+ * @note #nested_root and/or #nested_array (normally accessed via #GetWidget()) may not exist during this call.
+ */
+ virtual void OnInit() { }
+
+ /**
* 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.