Merge pull request #633 from magcius/wip/input-focus-fix

Fix input focus issues
This commit is contained in:
Pierre Bourdon
2014-07-17 01:21:31 +02:00
7 changed files with 41 additions and 2 deletions

View File

@ -753,7 +753,29 @@ void CFrame::OnRenderWindowSizeRequest(int width, int height)
bool CFrame::RendererHasFocus()
{
// RendererHasFocus should return true any time any one of our
if (m_RenderParent == nullptr)
return false;
#ifdef _WIN32
if (m_RenderParent->GetParent()->GetHWND() == GetForegroundWindow())
return true;
#else
wxWindow *window = wxWindow::FindFocus();
if (window == nullptr)
return false;
// Why these different cases?
if (m_RenderParent == window ||
m_RenderParent == window->GetParent() ||
m_RenderParent->GetParent() == window->GetParent())
{
return true;
}
#endif
return false;
}
bool CFrame::UIHasFocus()
{
// UIHasFocus should return true any time any one of our UI
// windows has the focus, including any dialogs or other windows.
//
// wxGetActiveWindow() returns the current wxWindow which has

View File

@ -138,6 +138,7 @@ public:
void OnRenderParentClose(wxCloseEvent& event);
void OnRenderParentMove(wxMoveEvent& event);
bool RendererHasFocus();
bool UIHasFocus();
void DoFullscreen(bool bF);
void ToggleDisplayMode (bool bFullscreen);
void UpdateWiiMenuChoice(wxMenuItem *WiiMenuItem=nullptr);

View File

@ -678,6 +678,11 @@ void Host_SetWiiMoteConnectionState(int _State)
main_frame->GetEventHandler()->AddPendingEvent(event);
}
bool Host_UIHasFocus()
{
return main_frame->UIHasFocus();
}
bool Host_RendererHasFocus()
{
return main_frame->RendererHasFocus();

View File

@ -98,6 +98,11 @@ void Host_SetStartupDebuggingParameters()
{
}
bool Host_UIHasFocus()
{
return true;
}
bool Host_RendererHasFocus()
{
return true;

View File

@ -95,6 +95,11 @@ void Host_SetStartupDebuggingParameters()
StartUp.bBootToPause = false;
}
bool Host_UIHasFocus()
{
return false;
}
bool Host_RendererHasFocus()
{
return rendererHasFocus;