@Prissi
First of all, thanks a lot for your great efforts in overhauling the GUI code. I have always wondered why there is no boolean value returned from infowin_event() to designate event swallowing, but now you have added it. :)
BTW, for r3456, I cannot delete characters in the line combobox of the depot frame anymore -- pressing backspace will indeed delete one character, but will also close the depot frame too. Besides, using up and down arrow keys to navigate the lines in the drop-down list of the combobox will also move the main view too. Probably events have not been properly swallowed in comboboxes?
Edit :
After a quick search the problem seems to originate from here :
Actually the combobox does swallow the events, but this is not propagated back to check_pos_win().
I fear there are even more locations that are not swallowing correctly. Thanks for the report.
With r3456, if we click on button A, then drag and release on button B, button B receives the focus, which is not normal (at least with regards to Windows). And if you click on the empty space above a multi-tab tabbed pane, then drag and release on an unselected tab header, the unselected tab becomes selected, which is also not normal (at least with regards to Windows). r3457 fixes these problems in gui_container_t::infowin_event() :
1) minor change from "swallow" to "swallowed" for consistency with check_pos_win()
2) an event should only be processed once by one single component, and depending on event type, base the processing on move position (Move) or click position (Click, Release, Drag, Repeat); clicking on button A, dragging and releasing on button B should not feed the same release event into both buttons
3) when an event (except window events which all child components should receive) is swallowed by a child component, processing should stop
4) since focus is based on mouse release, determination of focus should therefore be based on click position
Incidentally, I have also fixed the depot frame problem with r3458
Thanks for your efforts.