Preserve focus when window is minimized and restored in wxMSW.

Add specific code to save and restore the focus when the window is minimized
and restored in wxMSW as the existing code in WM_ACTIVATE handler wasn't
enough because this event was generated too late when minimizing the window
(when it was already minimized and so the focus had been already lost) and too
early when restoring it (so the window was still minimized and restoring focus
failed).

This is still not perfect as we do in our code something Windows would be
expected to do automatically but for whatever reason, it doesn't do it for
wxWidgets programs, and this manual workaround at least prevents the annoying
total focus loss.

Closes #1599.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70513 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2012-02-05 14:18:28 +00:00
parent 7e08367534
commit 0c6dff0370
2 changed files with 88 additions and 40 deletions

View File

@@ -181,7 +181,16 @@ protected:
bool m_fsIsMaximized;
bool m_fsIsShowing;
// the last focused child: we restore focus to it on activation
// Save the current focus to m_winLastFocused if we're not iconized (the
// focus is always NULL when we're iconized).
void DoSaveLastFocus();
// Restore focus to m_winLastFocused if possible and needed.
void DoRestoreLastFocus();
// The last focused child: we remember it when we're deactivated and
// restore focus to it when we're activated (this is done here) or restored
// from iconic state (done by wxFrame).
wxWindow *m_winLastFocused;
#if defined(__SMARTPHONE__) && defined(__WXWINCE__)