diff options
author | Sven Gothel <[email protected]> | 2013-06-24 19:47:06 +0200 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2013-06-24 19:47:06 +0200 |
commit | 415f5c29ffae7cf5a26737da38e31cb84b652539 (patch) | |
tree | 5edca20e94fcb6dc5acefb22dc74b659c8ae3431 /src/newt/classes | |
parent | 45952a0fa4c30e9fcd49414581e4c81688c50e48 (diff) |
NEWT: Don't invoke external keyboardFocusHandler for auto-repeat keys (NewtCanvasAWT, ..)
.. otherwise an auto repeated key would cause fast focus traversal, not intended.
Diffstat (limited to 'src/newt/classes')
-rw-r--r-- | src/newt/classes/com/jogamp/newt/Window.java | 6 | ||||
-rw-r--r-- | src/newt/classes/jogamp/newt/WindowImpl.java | 6 |
2 files changed, 8 insertions, 4 deletions
diff --git a/src/newt/classes/com/jogamp/newt/Window.java b/src/newt/classes/com/jogamp/newt/Window.java index 0bebf330a..f63c03738 100644 --- a/src/newt/classes/com/jogamp/newt/Window.java +++ b/src/newt/classes/com/jogamp/newt/Window.java @@ -406,7 +406,11 @@ public interface Window extends NativeWindow, WindowClosingProtocol { * Sets a {@link KeyListener} allowing focus traversal with a covered window toolkit like AWT. * <p> * The {@link KeyListener} methods are invoked prior to all other {@link KeyListener}'s - * allowing to suppress the {@link KeyEvent} via the {@link InputEvent#consumedTag}. + * allowing to suppress the {@link KeyEvent} via the {@link InputEvent#consumedTag} + * and to perform focus traversal with a 3rd party toolkit. + * </p> + * <p> + * The {@link KeyListener} methods are not invoked for {@link KeyEvent#isAutoRepeat() auto-repeat} events. * </p> * @param l */ diff --git a/src/newt/classes/jogamp/newt/WindowImpl.java b/src/newt/classes/jogamp/newt/WindowImpl.java index 1ac97b07c..6787f0ab3 100644 --- a/src/newt/classes/jogamp/newt/WindowImpl.java +++ b/src/newt/classes/jogamp/newt/WindowImpl.java @@ -2535,15 +2535,15 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer protected void consumeKeyEvent(KeyEvent e) { boolean consumedE = false; - if(null != keyboardFocusHandler) { + if( null != keyboardFocusHandler && !e.isAutoRepeat() ) { consumedE = propagateKeyEvent(e, keyboardFocusHandler); if(DEBUG_KEY_EVENT) { - System.err.println("consumeKeyEvent: "+e+", keyboardFocusHandler consumed: "+consumedE); + System.err.println("consumeKeyEvent(kfh): "+e+", keyboardFocusHandler consumed: "+consumedE); } } if(DEBUG_KEY_EVENT) { if( !consumedE ) { - System.err.println("consumeKeyEvent: "+e); + System.err.println("consumeKeyEvent(usr): "+e); } } for(int i = 0; !consumedE && i < keyListeners.size(); i++ ) { |