summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinWX/Frame.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/DolphinWX/Frame.cpp')
-rw-r--r--Source/Core/DolphinWX/Frame.cpp27
1 files changed, 18 insertions, 9 deletions
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))