My current annoyance is that debug dialogs displayed from the initialization routines do not have a taskbar icon because the window is not yet visible. It makes it a pain when debugging if you switch the focus because the peek desktop has to be used to minimize everything else before you can get back to the dialog. This is particularly annoying in the case of #1770 where we can reasonably expect the end users of our end users will be able to see the dialogs.
Testing around #1770 did indicate that GM's similar error message seems to be parented to the progressbar, which is what allows it to display in the taskbar. This seems to be consistent with public knowledge of Delphi.
The problem arises out of the fact that we want to minimize the resizing of the window that the user sees during initialization. We don't know the actual size we want the window to be until we've already loaded the first room, by which time other initialization has taken place, and could have produced error messages.
There are several things we can do to get the window in the taskbar and fix this crap.
- Implement the splash screen settings (not the deprecated progress bar stuff!) and use those for the initial window display.
- Make it somehow possible to load rooms before everything else allowing us to know the initial window size ahot.
- Leave the window visible but disable the border and give it a 0 area (may not work? xlib?)
- Use an invisible message-only root window that parents our main game window. This is actually a technique Java and Delphi both employ.
- Make the window visible but force it minimized and intercept WS_QUERYOPEN to prevent restoring it until rooms load.
- Have all of the dialog functions detect if the game window is visible, and if not be displayed without a parent. <