This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.
Duplicating this bug is rather straightforward, at least on OSX, where I first noticed it: 1. Open some editor with multiple lines (so you have a vertical scrollbar). 2. Press Command-U (that would be Meta+U for Java). 3. Press UP/DOWN arrows and notice how the cursor isn't moving, but the scrollbar is moving up/down. 4. Press Command-U again 4. Press UP/DOWN arrow keys and notice how the cursor is moving properly inside the editor. As far as I see, what happens is that after Cmd-U, the delegate Keymap (in MultiKeymap) is almost empty and all actions are sent to the JEditorPane *parents*. This is how the UP/DOWN KeyEvents end up being handled by JScrollPane which ends up scrolling up/down. An annotated stacktrace would be: "AWT-EventQueue-0" javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1600) javax.swing.JComponent.processKeyBinding(JComponent.java:2851) -- HERE IT'S JSCROLLPANE javax.swing.JComponent.processKeyBindings(JComponent.java:2897) -- here it's JEditorPane and DOESN'T FIND A KEYBINDING for key up/down on this editor after Cmd+U javax.swing.JComponent.processKeyEvent(JComponent.java:2814) java.awt.Component.processEvent(Component.java:6125) --- here it's JEditorPane ... The events (as printed via a quick btrace script which I can provide is needed) are printed at the end of the bug report. If anyone could point me towards the right direction I could probably figure out the bug myself, but I though I could do this quicker if I get some input for you guys. PS: According to http://netbeans.org/kb/articles/mac.html, Cmd-U is part of the "Cutting, Copying, Pasting, and Deleting Text" shortcuts, but as far as I can see no text is actually altered. --emi BTrace code successfuly deployed =========================================================== java.awt.event.KeyEvent[KEY_PRESSED,keyCode=157,keyText=⌘,keyChar=Undefined keyChar,modifiers=⌘,extModifiers=⌘,keyLocation=KEY_LOCATION_LEFT,rawCode=0,primaryLevelUnicode=0,scancode=0] on frame1 java.awt.event.KeyEvent[KEY_PRESSED,keyCode=85,keyText=U,keyChar='u',modifiers=⌘,extModifiers=⌘,keyLocation=KEY_LOCATION_STANDARD,rawCode=0,primaryLevelUnicode=0,scancode=0] on frame1 org.netbeans.editor.MultiKeymap$KeymapSetContextAction@17fd8d42 javax.swing.JComponent.processKeyBinding(JComponent.java:2851) javax.swing.JComponent.processKeyBindings(JComponent.java:2886) javax.swing.JComponent.processKeyEvent(JComponent.java:2814) java.awt.Component.processEvent(Component.java:6125) java.awt.Container.processEvent(Container.java:2085) java.awt.Component.dispatchEventImpl(Component.java:4714) java.awt.Container.dispatchEventImpl(Container.java:2143) java.awt.Component.dispatchEvent(Component.java:4544) java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1850) java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:712) java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:990) java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:855) java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:676) java.awt.Component.dispatchEventImpl(Component.java:4586) java.awt.Container.dispatchEventImpl(Container.java:2143) java.awt.Window.dispatchEventImpl(Window.java:2478) java.awt.Component.dispatchEvent(Component.java:4544) java.awt.EventQueue.dispatchEvent(EventQueue.java:635) org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:137) java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296) java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211) java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201) java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196) java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188) java.awt.EventDispatchThread.run(EventDispatchThread.java:122) java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='u',modifiers=⌘,extModifiers=⌘,keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0,primaryLevelUnicode=0,scancode=0] on frame1 java.awt.event.KeyEvent[KEY_RELEASED,keyCode=85,keyText=U,keyChar='u',modifiers=⌘,extModifiers=⌘,keyLocation=KEY_LOCATION_STANDARD,rawCode=0,primaryLevelUnicode=0,scancode=0] on frame1 java.awt.event.KeyEvent[KEY_RELEASED,keyCode=157,keyText=⌘,keyChar=Undefined keyChar,keyLocation=KEY_LOCATION_LEFT,rawCode=0,primaryLevelUnicode=0,scancode=0] on frame1 java.awt.event.KeyEvent[KEY_PRESSED,keyCode=40,keyText=↓,keyChar=Undefined keyChar,keyLocation=KEY_LOCATION_STANDARD,rawCode=0,primaryLevelUnicode=0,scancode=0] on frame1 javax.swing.plaf.basic.BasicScrollPaneUI$Actions@67e874c9 javax.swing.JComponent.processKeyBinding(JComponent.java:2851) javax.swing.JComponent.processKeyBindings(JComponent.java:2897) javax.swing.JComponent.processKeyEvent(JComponent.java:2814) java.awt.Component.processEvent(Component.java:6125) java.awt.Container.processEvent(Container.java:2085) java.awt.Component.dispatchEventImpl(Component.java:4714) java.awt.Container.dispatchEventImpl(Container.java:2143) java.awt.Component.dispatchEvent(Component.java:4544) java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1850) java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:712) java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:990) java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:855) java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:676) java.awt.Component.dispatchEventImpl(Component.java:4586) java.awt.Container.dispatchEventImpl(Container.java:2143) java.awt.Window.dispatchEventImpl(Window.java:2478) java.awt.Component.dispatchEvent(Component.java:4544) java.awt.EventQueue.dispatchEvent(EventQueue.java:635) org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:137) java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296) java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211) java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201) java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196) java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188) java.awt.EventDispatchThread.run(EventDispatchThread.java:122) java.awt.event.KeyEvent[KEY_RELEASED,keyCode=40,keyText=↓,keyChar=Undefined keyChar,keyLocation=KEY_LOCATION_STANDARD,rawCode=0,primaryLevelUnicode=0,scancode=0] on frame1 java.awt.event.KeyEvent[KEY_PRESSED,keyCode=157,keyText=⌘,keyChar=Undefined keyChar,modifiers=⌘,extModifiers=⌘,keyLocation=KEY_LOCATION_LEFT,rawCode=0,primaryLevelUnicode=0,scancode=0] on frame1 java.awt.event.KeyEvent[KEY_PRESSED,keyCode=85,keyText=U,keyChar='u',modifiers=⌘,extModifiers=⌘,keyLocation=KEY_LOCATION_STANDARD,rawCode=0,primaryLevelUnicode=0,scancode=0] on frame1 java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='u',modifiers=⌘,extModifiers=⌘,keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0,primaryLevelUnicode=0,scancode=0] on frame1 java.awt.event.KeyEvent[KEY_RELEASED,keyCode=85,keyText=U,keyChar='u',modifiers=⌘,extModifiers=⌘,keyLocation=KEY_LOCATION_STANDARD,rawCode=0,primaryLevelUnicode=0,scancode=0] on frame1 MultiKeymap.EMPTY_ACTION java.awt.event.KeyEvent[KEY_RELEASED,keyCode=157,keyText=⌘,keyChar=Undefined keyChar,keyLocation=KEY_LOCATION_LEFT,rawCode=0,primaryLevelUnicode=0,scancode=0] on frame1 MultiKeymap.EMPTY_ACTION java.awt.event.KeyEvent[KEY_PRESSED,keyCode=38,keyText=↑,keyChar=Undefined keyChar,keyLocation=KEY_LOCATION_STANDARD,rawCode=0,primaryLevelUnicode=0,scancode=0] on frame1 AlwaysEnabledAction: delegate: org.netbeans.editor.BaseKit$UpAction@42fd3cc8 maporg.netbeans.core.startup.layers.BinaryFS$FileMap@1314f3a1 java.awt.event.KeyEvent[KEY_RELEASED,keyCode=38,keyText=↑,keyChar=Undefined keyChar,keyLocation=KEY_LOCATION_STANDARD,rawCode=0,primaryLevelUnicode=0,scancode=0] on frame1 java.awt.event.KeyEvent[KEY_PRESSED,keyCode=157,keyText=⌘,keyChar=Undefined keyChar,modifiers=⌘,extModifiers=⌘,keyLocation=KEY_LOCATION_LEFT,rawCode=0,primaryLevelUnicode=0,scancode=0] on frame1 java.awt.event.KeyEvent[KEY_RELEASED,keyCode=157,keyText=⌘,keyChar=Undefined keyChar,keyLocation=KEY_LOCATION_LEFT,rawCode=0,primaryLevelUnicode=0,scancode=0] on frame1 =========================================================== Application exited: 0
Reproduced. Command+U is a common shortcut prefix for several actions e.g. "Cmd+U S" is switch case on selection etc. It seems that the context switching is not properly set back upon cursor keys. I'll fix it.
*** Bug 89893 has been marked as a duplicate of this bug. ***
Please don't forget about the same effect of Esc key in emacs profile (as reported in 89893 which I have just marked a duplicate of this one).
So the situation is like this: 1. Ctrl+U (Cmd+U on Mac) gets pressed which is a prefix of several editor's actions (like to-upper-case etc.) in MultiKeymap. 2. When certain keys VK_UP, DOWN, LEFT, RIGHT, HOME, END, PAGE_UP, PAGE_DOWN are pressed the MultiKeymap (which is in Ctrl+U-pressed context) does not resolve them. 3. However boolean processKeyBindings(KeyEvent e, boolean pressed) in JComponent calls if(((JComponent)parent).processKeyBinding(ks, e, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, pressed)) return true; which first consults JViewport's InputMap and then JScrollPane's InputMap which contains handling for the above shortcuts. I see only two solutions: a) Consume particular key in MultiKeymap. However since there may be IDE-level shortcuts (handled by NbKeymap in o.n.core) this would disable them since MultiKeymap has currently no knowledge of IDE shortcuts. b) Clear JScrollPane's InputMap i.e. scrollPane.setInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, null); This is solution that I've chosen. http://hg.netbeans.org/jet-main/rev/32ce8b47b246
Additional fix: http://hg.netbeans.org/jet-main/rev/e046b0e70f7d
*** Bug 191691 has been marked as a duplicate of this bug. ***