On Windows OS, there is a conflict between the <alt> + drag rotation symantics and keyboard access to the menu bar.</alt>
Windows applications accept an <alt> keytype as activating keyboard access to the menu bar - users can cycle through the menus using the arrow keys and enter. If Mnenomics are defined for the menus, they are also active in this state.</alt>
Repro: On a windows installation,
- <alt> + Drag to rotate view.</alt>
- Attempt to single-click an item on the tool panel, object properties panel, an object in the view, or in the object list.
*Expected Behavior:*
<alt> + other interactions should end with the menu bar being inactive, and a single click should select an item, or activate access to a control, such as the Move/Rotate/Scale tool's handlebars.</alt>
*Actual Behavior*
- The Menu Bar will still be active, and the first click will move focus back to the other UI elements. A second click is required to actually select/activate your target.
- If you try to select an object by name in the object list, the folllowing exception is thrown: (caught by the log plugin - I wonder if this is being thrown at some point for other elements, but they just swallow it internally?)
java.lang.NullPointerException
at artofillusion.ui.AutoScroller.mouseReleased(AutoScroller.java:51)
at sun.reflect.GeneratedMethodAccessor61.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at buoy.internal.EventLinkRecord.dispatchEvent(EventLinkRecord.java:81)
at buoy.event.EventSource.dispatchEvent(EventSource.java:140)
at buoy.widget.Widget.dispatchEvent(Widget.java:326)
at buoy.internal.EventLinkAdapter.dispatchEvent(EventLinkAdapter.java:212)
at buoy.internal.EventLinkAdapter.mouseReleased(EventLinkAdapter.java:108)
- If in a mesh editor, having the menu bar active will prevent you from using keyboard shortcuts for switching selection mode, etc.
- rather than a click, a <alt> or <esc> keytype event can be used to deactivate the menu bar, but this still gets in the way of smooth workflow.</esc></alt>
*Oddities and exceptions:*
- Dropdown menus in the object properties panel (such as for selecting textures and materials) are immune to this bug.
- Double-clicks process strangely. They seem to pass on a single click event immediately, which switches focus, and in the case of the Object list, the exception is thrown. Then, the second part of the double-click is processed, and the Mouselistener seems to realize "Oh, that was really a double-click" and triggers whatever double-click events are appropriate. This may be just the way clickListeners work, but with the menuBar active when not expected, it makes things seem crazy.
*Versions:*
- This bug has survived through three versions of Windows, two major and several minor Java upgrades, and has been present since AOI 2.9.2 at least. Currently verfied on 3.0.2, Oracle java 1.8.0-91, and Windows 10 Pro.