Use window inheritance instead of control interface
Use std::function for the button handler
Use a popup menu to add and remove colors
Add a ui::context class
Collect event receivers first and then dispatch the event

Now it should be safe to update the widget hierarchy in an event handler.
Remove the show menu workaroud
Remove custom mouse wheel code

No need for it when Allegro already has support for getting axis changes!
Add a container widget used for building hiearchies

It is better to let subclasses of windows expose specific interfaces
for managing the hirerarchy than having it uniform. This way buttons
can prevent child windows from being added and grid layouts can have
full control over the windows it manages.