xkb: factor out state update into a function
No functional changes Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Daniel Stone <daniel@fooishbar.org>
This commit is contained in:
parent
dda2468e57
commit
656841798c
|
@ -1143,13 +1143,43 @@ _XkbEnsureStateChange(XkbSrvInfoPtr xkbi)
|
||||||
return genStateNotify;
|
return genStateNotify;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_XkbApplyState(DeviceIntPtr dev, Bool genStateNotify, int evtype, int key)
|
||||||
|
{
|
||||||
|
XkbSrvInfoPtr xkbi = dev->key->xkbInfo;
|
||||||
|
int changed;
|
||||||
|
|
||||||
|
XkbComputeDerivedState(xkbi);
|
||||||
|
|
||||||
|
changed = XkbStateChangedFlags(&xkbi->prev_state, &xkbi->state);
|
||||||
|
if (genStateNotify) {
|
||||||
|
if (changed) {
|
||||||
|
xkbStateNotify sn;
|
||||||
|
|
||||||
|
sn.keycode = key;
|
||||||
|
sn.eventType = evtype;
|
||||||
|
sn.requestMajor = sn.requestMinor = 0;
|
||||||
|
sn.changed = changed;
|
||||||
|
XkbSendStateNotify(dev, &sn);
|
||||||
|
}
|
||||||
|
xkbi->flags &= ~_XkbStateNotifyInProgress;
|
||||||
|
}
|
||||||
|
|
||||||
|
changed = XkbIndicatorsToUpdate(dev, changed, FALSE);
|
||||||
|
if (changed) {
|
||||||
|
XkbEventCauseRec cause;
|
||||||
|
XkbSetCauseKey(&cause, key, evtype);
|
||||||
|
XkbUpdateIndicators(dev, changed, FALSE, NULL, &cause);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
XkbHandleActions(DeviceIntPtr dev, DeviceIntPtr kbd, DeviceEvent *event)
|
XkbHandleActions(DeviceIntPtr dev, DeviceIntPtr kbd, DeviceEvent *event)
|
||||||
{
|
{
|
||||||
int key, bit, i;
|
int key, bit, i;
|
||||||
XkbSrvInfoPtr xkbi;
|
XkbSrvInfoPtr xkbi;
|
||||||
KeyClassPtr keyc;
|
KeyClassPtr keyc;
|
||||||
int changed, sendEvent;
|
int sendEvent;
|
||||||
Bool genStateNotify;
|
Bool genStateNotify;
|
||||||
XkbAction act;
|
XkbAction act;
|
||||||
XkbFilterPtr filter;
|
XkbFilterPtr filter;
|
||||||
|
@ -1296,28 +1326,7 @@ XkbHandleActions(DeviceIntPtr dev, DeviceIntPtr kbd, DeviceEvent *event)
|
||||||
FixKeyState(event, dev);
|
FixKeyState(event, dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
XkbComputeDerivedState(xkbi);
|
_XkbApplyState(dev, genStateNotify, event->type, key);
|
||||||
changed = XkbStateChangedFlags(&xkbi->prev_state, &xkbi->state);
|
|
||||||
if (genStateNotify) {
|
|
||||||
if (changed) {
|
|
||||||
xkbStateNotify sn;
|
|
||||||
|
|
||||||
sn.keycode = key;
|
|
||||||
sn.eventType = event->type;
|
|
||||||
sn.requestMajor = sn.requestMinor = 0;
|
|
||||||
sn.changed = changed;
|
|
||||||
XkbSendStateNotify(dev, &sn);
|
|
||||||
}
|
|
||||||
xkbi->flags &= ~_XkbStateNotifyInProgress;
|
|
||||||
}
|
|
||||||
changed = XkbIndicatorsToUpdate(dev, changed, FALSE);
|
|
||||||
if (changed) {
|
|
||||||
XkbEventCauseRec cause;
|
|
||||||
|
|
||||||
XkbSetCauseKey(&cause, key, event->type);
|
|
||||||
XkbUpdateIndicators(dev, changed, FALSE, NULL, &cause);
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
|
Loading…
Reference in New Issue