mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2026-01-10 01:10:16 +01:00
Disclaimer: It's 6:51am. I'm trying to be as understandable as possible. What was happening previously was this: * Press Alt * Extended event generated and processed: state is now Alt down once * Core event generated - keyboard switched: inherited state is Alt down once - event processed: Alt down twice * Release Alt * Extended event generated and processed: state is now null * Core event generated and processed: Alt down once If we switch the order: * Press Alt * Core event generated: - keyboard switched: inherited state is null - event processed: Alt down once * Extended event generated and processed: state is now Alt down once * Release Alt * Core event generated and processed: state is now null * Extended event generated and processed: state is now null When we carry over the previous state, it needs to be the _previous_ state (state and modifiersPerKey), assuming that we're going to catch now-core events for any of these. For example, if Ctrl is held down as we pivot, we need to carry Ctrl over with a count of one, for which an extended + core release will then clear. Carrying over the union of the previous state _and the state resulting from the immediate action_ was what broke things. |
||
|---|---|---|
| .. | ||
| atom.c | ||
| buildatoms | ||
| BuiltInAtoms | ||
| CHANGES | ||
| colormap.c | ||
| cursor.c | ||
| devices.c | ||
| dispatch.c | ||
| dispatch.h | ||
| dixfonts.c | ||
| dixutils.c | ||
| events.c | ||
| extension.c | ||
| ffs.c | ||
| gc.c | ||
| getevents.c | ||
| globals.c | ||
| glyphcurs.c | ||
| grabs.c | ||
| initatoms.c | ||
| main.c | ||
| Makefile.am | ||
| pixmap.c | ||
| privates.c | ||
| property.c | ||
| resource.c | ||
| strcasecmp.c | ||
| swaprep.c | ||
| swapreq.c | ||
| tables.c | ||
| window.c | ||
| xpstubs.c | ||
| Xserver-dtrace.h.in | ||
| Xserver.d | ||