From ff918df88991710d58d983aa2e5dbcf03f2064ab Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Sat, 12 Jul 2014 07:29:49 -0400 Subject: [PATCH] Frame: Fix RendererHasFocus The logic of RendererHasFocus was extremely convoluted beforehand and was too brittle and broke in certain circumstances, like when the GCPad window was active. Simplify it and leave a comment explaining the new logic. This fixes the GCPad window not working when Background Input is unchecked. --- Source/Core/DolphinWX/Frame.cpp | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/Source/Core/DolphinWX/Frame.cpp b/Source/Core/DolphinWX/Frame.cpp index d0f379b78a..12fcb5f3bf 100644 --- a/Source/Core/DolphinWX/Frame.cpp +++ b/Source/Core/DolphinWX/Frame.cpp @@ -753,24 +753,15 @@ void CFrame::OnRenderWindowSizeRequest(int width, int height) bool CFrame::RendererHasFocus() { - 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; + // RendererHasFocus should return true any time any one of our + // windows has the focus, including any dialogs or other windows. + // + // wxGetActiveWindow() returns the current wxWindow which has + // focus. If it's not one of our windows, then it will return + // null. + + wxWindow *focusWindow = wxGetActiveWindow(); + return (focusWindow != nullptr); } void CFrame::OnGameListCtrl_ItemActivated(wxListEvent& WXUNUSED (event))