diff options
author | Tor Lillqvist <tml@collabora.com> | 2016-01-11 17:17:10 +0200 |
---|---|---|
committer | Tor Lillqvist <tml@collabora.com> | 2016-01-12 14:55:26 +0000 |
commit | 0ba752201dca6129cc6b4a19ec93eb369eb70890 (patch) | |
tree | 30f20f8a316af0a2672cefdf4f4a9cfd2787a18b /vcl/source/window/syschild.cxx | |
parent | 7a32b6f247b2cb92373bbce6fc2a314cb043e3bb (diff) |
Re-work focus handling to use an idle handler
Gets rid of some flashing when using OpenGL.
Change-Id: I1273b960725bf868e7340eac3f2bad2f20e73d91
Reviewed-on: https://gerrit.libreoffice.org/21390
Reviewed-by: Tor Lillqvist <tml@collabora.com>
Tested-by: Tor Lillqvist <tml@collabora.com>
Diffstat (limited to 'vcl/source/window/syschild.cxx')
-rw-r--r-- | vcl/source/window/syschild.cxx | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/vcl/source/window/syschild.cxx b/vcl/source/window/syschild.cxx index d0c8e8ca375d..7a007a96cc62 100644 --- a/vcl/source/window/syschild.cxx +++ b/vcl/source/window/syschild.cxx @@ -79,10 +79,13 @@ long ImplSysChildProc( void* pInst, SalObject* /* pObject */, // trigger a LoseFocus which matches the status // of the window with matching Activate-Status pWindow->ImplGetFrameData()->mbSysObjFocus = false; - if ( !pWindow->ImplGetFrameData()->mnFocusId ) + if ( !pWindow->ImplGetFrameData()->mpFocusIdle ) { pWindow->ImplGetFrameData()->mbStartFocusState = true; - pWindow->ImplGetFrameData()->mnFocusId = Application::PostUserEvent( LINK( pWindow->ImplGetFrameWindow(), vcl::Window, ImplAsyncFocusHdl ), nullptr, true ); + pWindow->ImplGetFrameData()->mpFocusIdle = new Idle("loseFocus"); + pWindow->ImplGetFrameData()->mpFocusIdle->SetIdleHdl(LINK( pWindow->ImplGetFrameWindow(), vcl::Window, ImplAsyncFocusHdl )); + pWindow->ImplGetFrameData()->mpFocusIdle->SetPriority(SchedulerPriority::LOW); + pWindow->ImplGetFrameData()->mpFocusIdle->Start(); } break; |