diff --git a/Source/Core/DolphinWX/Frame.cpp b/Source/Core/DolphinWX/Frame.cpp index 12fcb5f3bf..d0f379b78a 100644 --- a/Source/Core/DolphinWX/Frame.cpp +++ b/Source/Core/DolphinWX/Frame.cpp @@ -753,15 +753,24 @@ void CFrame::OnRenderWindowSizeRequest(int width, int height) bool CFrame::RendererHasFocus() { - // 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); + 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; } void CFrame::OnGameListCtrl_ItemActivated(wxListEvent& WXUNUSED (event))