Now that's a real stupid mistake.
Take for example the spin control. A textbox with two buttons.
As soon as the textbox' value changes, a callback is called, but the textbox is part of a spinctrl, this would mean another Functor, another call.
For simple controls like spin controls, this won't be a big problem, but once one get to larger controls, this means a lot of rerouting.
Now, with the new design, a user can simply set a pointer to the parent handler and all messages are nicely sended there and nobody has to care about them anymore
Now I know that this still means another function call (SendMessageToParent(Event evt) ), but this way of handling events allows me to dump my template Functor into the trash bin. These template Functors forced me to put everything that needed some sort of callback (such as controls) into headers, significantly increasing compile times and causing debugging to take a lot longer as well
And there are two more bright spots about this redesign:
- development speed - controls don't need no more large declarations, most of the event handling is already done in the lowest base class
- code cleanness - all headers are much cleaner as the code moved to the source files.
I hope that everybody who reads this (if anybody reads this), will take a bit more time to make a proper design now as you can see to what kind of horrors this (not taking enough time for designing) leads.
See you next time.