From 90b4f7b5f55d93bf8c79e52a09bf6c116dbc6d47 Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Thu, 9 Feb 2006 15:30:21 +0000 Subject: [PATCH] full keyboard access support git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@37419 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/mac/carbon/window.cpp | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/mac/carbon/window.cpp b/src/mac/carbon/window.cpp index c687bedb06..bc118c7741 100644 --- a/src/mac/carbon/window.cpp +++ b/src/mac/carbon/window.cpp @@ -1256,14 +1256,22 @@ void wxWindowMac::MacSetBackgroundBrush( const wxBrush &brush ) bool wxWindowMac::MacCanFocus() const { - // there is currently no way to determine whether the window is running in full keyboard - // access mode, therefore we cannot rely on these features, yet the only other way would be - // to issue a SetKeyboardFocus event and verify after whether it succeeded, this would risk problems - // in event handlers... - UInt32 features = 0 ; - m_peer->GetFeatures( &features ) ; - - return features & ( kControlSupportsFocus | kControlGetsFocusOnClick ) ; + // TODO : evaluate performance hits by looking up this value, eventually cache the results for a 1 sec or so + // CAUTION : the value returned currently is 0 or 2, I've also found values of 1 having the same meaning, but the value range + // is nowhere documented + Boolean keyExistsAndHasValidFormat ; + CFIndex fullKeyboardAccess = CFPreferencesGetAppIntegerValue ( CFSTR("AppleKeyboardUIMode" ) , + kCFPreferencesCurrentApplication, &keyExistsAndHasValidFormat); + + if ( keyExistsAndHasValidFormat && fullKeyboardAccess > 0 ) + return true ; + else + { + UInt32 features = 0 ; + m_peer->GetFeatures( &features ) ; + + return features & ( kControlSupportsFocus | kControlGetsFocusOnClick ) ; + } } void wxWindowMac::SetFocus() -- 2.45.2