diff options
author | Sergey Udaltsov <svu@gnome.org> | 2004-08-09 22:24:58 +0000 |
---|---|---|
committer | Sergey Udaltsov <svu@gnome.org> | 2004-08-09 22:24:58 +0000 |
commit | 6be58314e011e4a2747d3d1060b5461f84e21135 (patch) | |
tree | d3c828e99cd35410d3ca73bb34a23afc251ac05c /libxklavier/xklavier_evt.c | |
parent | 9a66d947c3262175e9fc0664625f1dfd13929843 (diff) | |
download | libxklavier-6be58314e011e4a2747d3d1060b5461f84e21135.tar.gz |
syncing with b_1_00
Diffstat (limited to 'libxklavier/xklavier_evt.c')
-rw-r--r-- | libxklavier/xklavier_evt.c | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/libxklavier/xklavier_evt.c b/libxklavier/xklavier_evt.c index 5fb02f5..c961a65 100644 --- a/libxklavier/xklavier_evt.c +++ b/libxklavier/xklavier_evt.c @@ -97,9 +97,17 @@ void _XklStdXkbHandler( int grp, XklStateChange changeType, unsigned inds, if( focusedApp != _xklCurClient ) { - _XklUpdateCurState( grp, inds ); - - _XklAddAppWindow( focusedApp, ( Window ) NULL, False, &_xklCurState ); + if ( !_XklGetAppState( focusedApp, &oldState ) ) + { + _XklUpdateCurState( grp, inds, + "Updating the state from new focused window" ); + _XklAddAppWindow( focusedApp, ( Window ) NULL, False, &_xklCurState ); + } + else + { + grp = oldState.group; + inds = oldState.indicators; + } _xklCurClient = focusedApp; XklDebug( 160, "CurClient:changed to " WINID_FORMAT ", '%s'\n", _xklCurClient, _XklGetDebugWindowTitle( _xklCurClient ) ); @@ -111,7 +119,8 @@ void _XklStdXkbHandler( int grp, XklStateChange changeType, unsigned inds, if( setGroup || haveState ) { _XklUpdateCurState( setGroup ? grp : oldState.group, - setInds ? inds : oldState.indicators ); + setInds ? inds : oldState.indicators, + "Restoring the state from the window" ); } if( haveState ) @@ -245,6 +254,10 @@ void _XklFocusInEvHandler( XFocusChangeEvent * fev ) if( _xklCurClient != appWin ) { Bool transparent; + XklState tmpState; + + if ( XklGetState ( _xklCurClient, &tmpState ) ) + _xklCurState = tmpState; _xklCurClient = appWin; XklDebug( 150, "CurClient:changed to " WINID_FORMAT ", '%s'\n", @@ -282,7 +295,9 @@ void _XklFocusInEvHandler( XFocusChangeEvent * fev ) * (because of the group change notification being late). * so we'll enforce the update. But this should only happen in GPA mode */ - _XklUpdateCurState( selectedWindowState.group, selectedWindowState.indicators ); + _XklUpdateCurState( selectedWindowState.group, + selectedWindowState.indicators, + "Enforcing fast update of the current state" ); XklLockGroup( selectedWindowState.group ); } else { |