Revert part of the repeated key handling as requested by Riccardo.

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@39131 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Fred Kiefer 2015-11-03 08:42:47 +00:00
parent 5843ba3d4d
commit 2478d0b17b
2 changed files with 7 additions and 16 deletions

View file

@ -1,3 +1,8 @@
2015-11-03 Fred Kiefer <FredKiefer@gmx.de>
* Source/x11/XGServerEvent.m (-processEvent:): For repeated keys
only eat up the KeyRelease events and pass on all KeyPress.
2015-10-28 Fred Kiefer <FredKiefer@gmx.de>
* Source/cairo/CairoGState.m (-GSReadRect:, -DPSimage:..:):

View file

@ -334,8 +334,6 @@ posixFileDescriptor: (NSPosixFileDescriptor*)fileDescriptor
static int clickCount = 1;
static unsigned int eventFlags;
static NSPoint eventLocation;
// Time of last key press
static Time downTime = 0;
NSEvent *e = nil;
XEvent xEvent;
NSWindow *nswin;
@ -1202,8 +1200,6 @@ posixFileDescriptor: (NSPosixFileDescriptor*)fileDescriptor
xEvent.xkey.window);
[self setLastTime: xEvent.xkey.time];
e = process_key_event (&xEvent, self, NSKeyDown, event_queue, NO);
// Store the time of key down to catch repeated keys
downTime = xEvent.xkey.time;
break;
// a key has been released
@ -1216,9 +1212,7 @@ posixFileDescriptor: (NSPosixFileDescriptor*)fileDescriptor
For key repeats X creates two corresponding KeyRelease/KeyPress events.
So, first we check for the KeyRelease event, take a look at the next
event in the queue and look if they are a matching KeyRelease/KeyPress
pair. If so, we ignore the current KeyRelease event, and if there was
a long enough time interval report the the next keyPress event as a
repeat.
pair. If so, we ignore the current KeyRelease event.
*/
if (XEventsQueued(dpy, QueuedAfterReading))
{
@ -1230,15 +1224,7 @@ posixFileDescriptor: (NSPosixFileDescriptor*)fileDescriptor
nev.xkey.time == xEvent.xkey.time &&
nev.xkey.keycode == xEvent.xkey.keycode)
{
// delete retriggered KeyPress event
XNextEvent (dpy, &xEvent);
// After some time we should generate repeated keyDowns
if (xEvent.xkey.time - downTime > 1000)
{
downTime = xEvent.xkey.time;
e = process_key_event(&xEvent, self, NSKeyDown, event_queue, YES);
}
// Ignore the current KeyRelease event.
}
else
{