Merge pull request #633 from magcius/wip/input-focus-fix
Fix input focus issues
This commit is contained in:
commit
8cf21cdcdb
|
@ -23,6 +23,7 @@
|
|||
// The host can be just a command line app that opens a window, or a full blown debugger
|
||||
// interface.
|
||||
|
||||
bool Host_UIHasFocus();
|
||||
bool Host_RendererHasFocus();
|
||||
void Host_ConnectWiimote(int wm_idx, bool connect);
|
||||
void Host_GetRenderWindowSize(int& x, int& y, int& width, int& height);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -98,6 +98,11 @@ void Host_SetStartupDebuggingParameters()
|
|||
{
|
||||
}
|
||||
|
||||
bool Host_UIHasFocus()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Host_RendererHasFocus()
|
||||
{
|
||||
return true;
|
||||
|
|
|
@ -95,6 +95,11 @@ void Host_SetStartupDebuggingParameters()
|
|||
StartUp.bBootToPause = false;
|
||||
}
|
||||
|
||||
bool Host_UIHasFocus()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Host_RendererHasFocus()
|
||||
{
|
||||
return rendererHasFocus;
|
||||
|
|
|
@ -84,7 +84,7 @@ bool Device::Control::InputGateOn()
|
|||
{
|
||||
if (SConfig::GetInstance().m_BackgroundInput)
|
||||
return true;
|
||||
else if (Host_RendererHasFocus())
|
||||
else if (Host_RendererHasFocus() || Host_UIHasFocus())
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
|
|
Loading…
Reference in New Issue