Interface::PlayMovie should make the current window
invisible when playing, and then visible again when
it's finished.
To this end, it calls SetInvisible for the first window
stored: windows[0], and then SetVisible later. I'm told
this is the root window, so making it invisible should
hide all windows, and then making it visible should
bring them back.
The problem arises when making the window[s] visible
again. SetVisible brings the window in question to the
top, so after playing the movie we now have the root
window at the top, rather than the window that was on
top before playing the movie.
It's possible to workaround this by altering the
GUIScript to manually make the desired window visible,
thus setting it back on top. I've also hacked PlayMovie
to use not windows[0], but the window whose WindowID is
0, since this is the correct window, however I've been
informed that this is incorrect since the root window
*should* be hidden.
The correct fix therefore might be to detect that the
root window is being hidden and store the top window,
then detect when the root window is being made visible
and set the stored window back on top.
Logged In: YES
user_id=885460
Probably it would be better to add a flag to disable
rendering of the windows completely, then re-enable it (and
invalidating all of them).
I will do this by supporting the -1 WindowID (all windows)
for Invalidate, etc.
Logged In: YES
user_id=885460
Ok, i think i've fixed this by removing the code which
disabled/reenabled the windows and called RedrawAll() in the
end. Which would invalidate all windows thus forcing a redraw.
Apparently no need to disable the windows.