xserver-multidpi/dix
Daniel Stone 6b055e5d97 Input: Fix stuck modifiers (bug #11683)
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.
2007-08-01 06:55:36 +03:00
..
atom.c Bug #10560: Code-Cleanup: function declarations () -> (void) 2007-04-09 14:33:15 -07:00
buildatoms XFree86 4.3.0.1 2003-11-14 16:49:22 +00:00
BuiltInAtoms R6.6 is the Xorg base-line 2003-11-14 15:54:54 +00:00
CHANGES R6.6 is the Xorg base-line 2003-11-14 15:54:54 +00:00
colormap.c dix: remove 'register' keyword for all variables. 2007-03-08 17:50:25 +10:30
cursor.c DIX: Clean up null root cursor handling 2007-08-01 01:53:31 +03:00
devices.c Hotplug: Add HAL support 2007-08-01 01:53:31 +03:00
dispatch.c Remove the old Kerberos 5 authentication code. 2007-06-04 18:07:00 -04:00
dispatch.h Remove RCS tags. Fix Xprint makefile braindamage. 2006-07-21 17:56:00 -04:00
dixfonts.c Bug #10560: Code-Cleanup: function declarations () -> (void) 2007-04-09 14:33:15 -07:00
dixutils.c dixLookupClient: Use access parameter. 2007-06-11 09:23:18 +02:00
events.c More janitor work. Remove 'defined but not used' warnings from kdrive and some minor cosmetic. 2007-06-27 03:34:13 -03:00
extension.c Bug #10560: Code-Cleanup: function declarations () -> (void) 2007-04-09 14:33:15 -07:00
ffs.c ffs: handle 0 argument (bug #8968) 2006-11-11 14:13:56 +02:00
gc.c General DIX static and dead code cleanup. 2007-03-25 17:57:54 -04:00
getevents.c Input: Fix stuck modifiers (bug #11683) 2007-08-01 06:55:36 +03:00
globals.c Enable DPMS by default. 2006-09-14 18:49:12 -04:00
glyphcurs.c dix: remove 'register' keyword for all variables. 2007-03-08 17:50:25 +10:30
grabs.c Make sure window->optional is allocated before assigning it. 2007-06-29 11:56:18 +09:30
initatoms.c Bug #10560: Code-Cleanup: function declarations () -> (void) 2007-04-09 14:33:15 -07:00
main.c DIX: Clean up null root cursor handling 2007-08-01 01:53:31 +03:00
Makefile.am Tell automake to STFU about the *.O files 2006-11-30 19:53:29 -08:00
pixmap.c remove PIXPRIV check as this flag is always set. 2007-03-06 17:19:11 -05:00
privates.c Bug #10560: Code-Cleanup: function declarations () -> (void) 2007-04-09 14:33:15 -07:00
property.c Partial redundancy elimination in PropertyNotify generation. 2007-07-21 15:27:40 -04:00
resource.c Death to RCS tags. 2007-06-29 14:06:52 -04:00
strcasecmp.c Remove RCS tags. Fix Xprint makefile braindamage. 2006-07-21 17:56:00 -04:00
swaprep.c General DIX static and dead code cleanup. 2007-03-25 17:57:54 -04:00
swapreq.c dix: remove 'register' keyword for all variables. 2007-03-08 17:50:25 +10:30
tables.c Remove the old Kerberos 5 authentication code. 2007-06-04 18:07:00 -04:00
window.c Make Composite manual redirect windows not clip their parent. 2007-07-03 14:29:11 -07:00
xpstubs.c Death to RCS tags. 2007-06-29 14:06:52 -04:00
Xserver-dtrace.h.in Add DTrace probe points for X server <-> client communications 2006-11-03 12:54:43 -08:00
Xserver.d Add DTrace probe points for X server <-> client communications 2006-11-03 12:54:43 -08:00