summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Udaltsov <svu@gnome.org>2004-08-09 22:06:52 +0000
committerSergey Udaltsov <svu@gnome.org>2004-08-09 22:06:52 +0000
commit781dd4c31fdfb8e034d61a9e71f78b9d055f3713 (patch)
treeb3841789c8e82b8c3c7d6c9c012287047eac03c6
parentddd6d2f46f8f17d1466afb8c1887fbc5f5eba016 (diff)
downloadlibxklavier-781dd4c31fdfb8e034d61a9e71f78b9d055f3713.tar.gz
fixing 126200
-rw-r--r--libxklavier/xklavier_evt.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/libxklavier/xklavier_evt.c b/libxklavier/xklavier_evt.c
index 96441db..c961a65 100644
--- a/libxklavier/xklavier_evt.c
+++ b/libxklavier/xklavier_evt.c
@@ -97,10 +97,17 @@ void _XklStdXkbHandler( int grp, XklStateChange changeType, unsigned inds,
if( focusedApp != _xklCurClient )
{
- _XklUpdateCurState( grp, inds,
- "Updating the state from new focused window" );
-
- _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 ) );
@@ -247,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",