summaryrefslogtreecommitdiff
path: root/vcl/README.lifecycle
diff options
context:
space:
mode:
authorMichael Meeks <michael.meeks@collabora.com>2015-04-29 20:57:47 +0100
committerMichael Meeks <michael.meeks@collabora.com>2015-04-29 20:58:10 +0100
commit0c0569fb2a48a95d0c1f69234548ddd7ec32b59b (patch)
treee9f54528800f5368235e852e94f359649aac83cf /vcl/README.lifecycle
parent4eed8e53313827f51cd97dcac7d2d437f53a2dbb (diff)
More bits on event emission during dispose.
Change-Id: I89b6735bca19eec1ccc1d14cd3c35e88fd36d51f
Diffstat (limited to 'vcl/README.lifecycle')
-rw-r--r--vcl/README.lifecycle16
1 files changed, 16 insertions, 0 deletions
diff --git a/vcl/README.lifecycle b/vcl/README.lifecycle
index daa5fbb07eb2..7c2ceb218797 100644
--- a/vcl/README.lifecycle
+++ b/vcl/README.lifecycle
@@ -284,3 +284,19 @@ ways and often both.
In simple cases, if we allocate the widget with VclPtrInstance
or VclPtr<Foo>::Create - then we need to disposeAndClear it too.
+** Event / focus / notification ordering
+
+ In the old world, a large amount of work was done in the
+ ~Window destructor that is now done in Window::dispose.
+
+ Since those Windows were in the process of being destroyed
+ themselves, their vtables were adjusted to only invoke Window
+ methods. In the new world, sub-classed methods such as
+ PreNotify, GetFocus, LoseFocus and others are invoked all down
+ the inheritance chain from children to parent, during dispose.
+
+ The easiest way to fix these is to just ensure that these
+ cleanup methods, especially LoseFocus continue to work even
+ on disposed Window sub-class instances.
+
+