summaryrefslogtreecommitdiff
path: root/libxklavier/xklavier_evt_xmm.c
diff options
context:
space:
mode:
authorSergey Udaltsov <svu@gnome.org>2004-11-27 15:47:04 +0000
committerSergey Udaltsov <svu@gnome.org>2004-11-27 15:47:04 +0000
commita9f5148f77cb23de913206becf874dac735a6059 (patch)
tree93a5dbdeb22b34ec10c38b3ba63b4b5fd97980f2 /libxklavier/xklavier_evt_xmm.c
parentd431ef4a3ca6228954ddb21e2e4a88f0cf9e8624 (diff)
downloadlibxklavier-a9f5148f77cb23de913206becf874dac735a6059.tar.gz
first working version of xmodmap
Diffstat (limited to 'libxklavier/xklavier_evt_xmm.c')
-rw-r--r--libxklavier/xklavier_evt_xmm.c30
1 files changed, 28 insertions, 2 deletions
diff --git a/libxklavier/xklavier_evt_xmm.c b/libxklavier/xklavier_evt_xmm.c
index 1046757..f2e3a4a 100644
--- a/libxklavier/xklavier_evt_xmm.c
+++ b/libxklavier/xklavier_evt_xmm.c
@@ -40,19 +40,45 @@ static int _XklXmmPropertyEventHandler( XPropertyEvent* kpe )
{
XklDebug( 200, "Processing the PropertyNotify event: %d/%d\n",
kpe->atom, xmmStateAtom );
+ /**
+ * Group is changed!
+ */
if( kpe->atom == xmmStateAtom )
{
+ XklState state;
+ _XklXmmGetRealState( &state );
+
if( _xklListenerType & XKLL_MANAGE_LAYOUTS )
{
- XklState state;
- _XklXmmGetRealState( &state );
XklDebug( 150, "Current group from the root window property %d\n", state.group );
_XklXmmUngrabShortcuts();
_XklXmmActualizeGroup( state.group );
_XklXmmGrabShortcuts();
return 1;
}
+
+ if( _xklListenerType &
+ ( XKLL_MANAGE_WINDOW_STATES | XKLL_TRACK_KEYBOARD_STATE ) )
+ {
+ XklDebug( 150,
+ "XMM state changed, new 'group' %d\n",
+ state.group );
+
+ _XklStateModificationHandler( GROUP_CHANGED,
+ state.group,
+ 0,
+ False );
+ }
+ } else
+ /**
+ * Configuration is changed!
+ */
+ if( kpe->atom == xklVTable->baseConfigAtom )
+ {
+ _XklFreeAllInfo();
+ _XklLoadAllInfo();
}
+
return 0;
}