### Eclipse Workspace Patch 1.0 #P org.eclipse.swt Index: Eclipse SWT/cocoa/org/eclipse/swt/widgets/Composite.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Composite.java,v retrieving revision 1.38 diff -u -r1.38 Composite.java --- Eclipse SWT/cocoa/org/eclipse/swt/widgets/Composite.java 13 Jan 2009 19:11:47 -0000 1.38 +++ Eclipse SWT/cocoa/org/eclipse/swt/widgets/Composite.java 13 Jan 2009 20:41:16 -0000 @@ -530,19 +530,21 @@ } void keyDown (int /*long*/ id, int /*long*/ sel, int /*long*/ theEvent) { - if ((state & CANVAS) != 0) { - NSArray array = NSArray.arrayWithObject (new NSEvent (theEvent)); - keyInputHappened = false; - view.interpretKeyEvents (array); - if (!keyInputHappened) { - NSEvent nsEvent = new NSEvent (theEvent); - boolean [] consume = new boolean [1]; - if (translateTraversal (nsEvent.keyCode (), nsEvent, consume)) return; - if (isDisposed ()) return; - if (!sendKeyEvent (nsEvent, SWT.KeyDown)) return; - if (consume [0]) return; + if (view.window ().firstResponder ().id == id) { + if ((state & CANVAS) != 0) { + NSArray array = NSArray.arrayWithObject (new NSEvent (theEvent)); + keyInputHappened = false; + view.interpretKeyEvents (array); + if (!keyInputHappened) { + NSEvent nsEvent = new NSEvent (theEvent); + boolean [] consume = new boolean [1]; + if (translateTraversal (nsEvent.keyCode (), nsEvent, consume)) return; + if (isDisposed ()) return; + if (!sendKeyEvent (nsEvent, SWT.KeyDown)) return; + if (consume [0]) return; + } + return; } - return; } super.keyDown (id, sel, theEvent); }