Scrolling Speed Under Mac Sierra
I upgraded to Mac Sierra (OS 10.12) last night, and also updated my Java to 1.8.0_91-b14. So far NodeBox seems to be working just fine, except for one subtle problem...
I use a MacBook Air at home and use the trackpad for all movement. After upgrading to Sierra, I found that zooming in and out of a rendering seemed harder to control. The tiniest two-finger drag would collapse my drawing to a pixel and then suddenly zoom back in to 10 times screen size. It became very hard to position the drawing precisely. Zooming in and out on the network pane didn't seem quite as bad, but was also somewhat touchy.
I tried adjusting the trackpad scrolling speed (which you can do with the accessibility panel). This affected my two-finger scrolls on web pages but not in NodeBox. I also tried attaching a USB mouse with a scroll wheel. Adjusting scrolling speed affected both web pages and NodeBox when using the mouse, but did not affect two-finger drags on the trackpad.
I found that with practice I could eventually zoom to my desired magnification in NodeBox, but only if I do so very slowly and carefully.
Can anyone else verify this problem? I'm not sure whether it's Sierra or possibly also something to do with my particular MacBook.
But I would think that in any case adjusting scrolling speed in the accessibility panel should affect NodeBox. Is the NodeBox 3 Mac app using system APIs to define trackpad scrolling speeds or just using some hard-coded value that may need adjustment under different operating systems?
Not a showstopper, but it has made my daily NodeBoxing a bit more frustrating.
Thanks,
John
Keyboard shortcuts
Generic
? | Show this help |
---|---|
ESC | Blurs the current field |
Comment Form
r | Focus the comment reply box |
---|---|
^ + ↩ | Submit the comment |
You can use Command ⌘
instead of Control ^
on Mac
1 Posted by rougeux on 01 Oct, 2016 12:41 AM
I've had the same problem. This appears to be related to Sierra generating more scroll events than previous OS versions:
https://discussions.apple.com/thread/7679256
Hopefully a workaround can be found or Apple releases a patch soon.
Support Staff 2 Posted by Frederik De Ble... on 13 Oct, 2016 02:52 PM
I've posted a test build with the latest JDK (1.8_100) that seems to fix some Sierra issues, although perhaps not the scrolling:
https://secure.nodebox.net/downloads/NodeBox-3.0.45-rc1.zip
I haven't upgraded yet so I can't test it myself at the moment.
Support Staff 3 Posted by Frederik De Ble... on 13 Oct, 2016 03:01 PM
According to the Apple support thread and this Stackoverflow post, scrolling is a JDK issue that affects other Java applications as well.
Here's the issue for IntelliJ:
https://youtrack.jetbrains.com/oauth?state=%2Fissue%2FIDEA-158500
Apparently they've made their own version of the JDK (!) which a custom fix for the scrolling. That solution may work for them, but I don't feel like making a custom build of the SDK, and would rather wait a bit until Oracle solves the issue upstream.
Apparently they've fixed in JDK 9 and are considering backporting it to JDK 8: https://bugs.openjdk.java.net/browse/JDK-8166591
Support Staff 4 Posted by john on 13 Oct, 2016 09:39 PM
Hi Frederik,
I tested the rc1 version and it seems to work fine for me. I could see no difference between the current version and this new build. The scrolling issue seems unchanged and I am unaware of any other Sierra-related issues.
I have learned to live with the scrolling issue; it's annoying but not fatal. And I agree that it probably makes sense for you to wait until Oracle fixes the issue upstream.
(The Java Platform team at Oracle working on this are mostly Russians based in St. Petersburg. I also work at Oracle (in California), but it's a big company so I have no direct connection with them. I think they are already sufficiently motivated to fix this, but if you have a particular question or suggestion, I could try passing it along.)
John
Support Staff 5 Posted by Frederik De Ble... on 18 Oct, 2016 08:05 PM
I've just upgraded to Sierra and I didn't experience any issues with scrolling or double-clicking. I'm using a Retina MBP, both with the trackpad and an external mouse.
6 Posted by rougeux on 18 Oct, 2016 09:00 PM
I've attached a recording of how sensitive scrolling is. The attached recording shows a default 100x100 square and me trying to scroll in and out with the smallest movements (barely a few millimeters) and the zooming appearing to be overly sensitive.
The problems with double-clicking seem to be very sporadic. Sometimes it works fine for periods of time and then after a bit, double-clicks sometimes stop registering altogether.
These behaviors happen to me with both an external magic mouse and the trackpad. I'm using an early 2015 MacBook Air and my mouse is a first generation magic mouse. All of this behaved normally prior to upgrading to Sierra.
Support Staff 7 Posted by Frederik De Ble... on 19 Oct, 2016 06:44 AM
Hi Nicholas,
Thanks for investing. Maybe it's related to retina vs non-retina? I'll test on a colleague's MBA and see if there's any difference.
I assume that the double-clicking is also a precision issue: I'm speculating they upped the precision, meaning you have to stand on the exact same pixel when double-clicking (whereas before there was a bit more slack). That would explain why the issue only happens sporadically.
8 Posted by rougeux on 02 Dec, 2016 04:13 PM
This may or may not be related to all the clicking issues but I frequently get the error message below when trying to right-click to add a node. NodeBox thinks I'm trying to drag a selection rectangle when right-clicking and shows the error. Can't continue using NodeBox until I quit and restart it.
I'm using a Magic Mouse (first one, not the second) and I read somewhere that even that has issues with macOS Sierra but I'm not sure if that's true.
java.lang.NullPointerException
at nodebox.client.NetworkView$MouseHandler.mouseDragged(Unknown Source)
at java.awt.AWTEventMulticaster.mouseDragged(AWTEventMulticaster.java:320)
at java.awt.Component.processMouseMotionEvent(Component.java:6581)
at javax.swing.JComponent.processMouseMotionEvent(JComponent.java:3342)
at java.awt.Component.processEvent(Component.java:6302)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4542)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
9 Posted by rougeux on 06 Dec, 2016 03:25 PM
More information: scroll speed seems great using a trackpad on a MacBook Air mid-2015 and I haven't experienced any of the double-clicking or right-clicking problems using the trackpad.
Support Staff 10 Posted by Frederik De Ble... on 06 Dec, 2016 07:39 PM
Okay the mouseDrag errors are definitely silly, will investigate.
11 Posted by rougeux on 29 Dec, 2016 05:02 PM
Just checking in. Any chance of an update soon? This error almost renders NodeBox unusable for more than a few minutes at a time.
Support Staff 12 Posted by Frederik De Ble... on 30 Dec, 2016 07:37 PM
Hi Nicholas,
Thanks for reminding me. I will schedule some time to look at this after the New Year.
Best wishes!
Support Staff 13 Posted by Frederik De Ble... on 05 Jan, 2017 10:27 PM
Hi Nicholas,
I looked at the specific function but I couldn't reproduce it at all. Unfortunately, your stack trace does not have the line number (I think the NodeBox build strips it out) so it's hard to see what might trigger the error.
I might try to compile a version that has debug information, that would give me the line numbers and allow me to investigate further.
Support Staff 14 Posted by Frederik De Ble... on 05 Jan, 2017 10:49 PM
Hi,
I've made a special test version. The actual code is unchanged: I just added some compile flags that should tell me more information when you see a stack trace.
https://secure.nodebox.net/downloads/NodeBox-3.0.46-test1.zip
Nicholas, can you try this, get the error to appear, and then tell copy/paste the stack trace? Thanks in advance!
15 Posted by rougeux on 05 Jan, 2017 10:54 PM
I'll definitely try the special test version and send the info the next time it happens. It shouldn't be long since I'm working on a few projects with NodeBox at the moment.
Thanks for digging into this.
16 Posted by rougeux on 14 Jan, 2017 02:48 PM
I've been using the special test version since you provided it and so far, I haven't seen the error pop up again. Even though you said the actual code is unchanged, something seems to be keeping the error at bay. I'll still be on the look out for it and post it when it happens.
Support Staff 17 Posted by Frederik De Ble... on 14 Jan, 2017 08:28 PM
Hi Nicholas,
Thanks for trying this out! I'm happy for you that you don't get any errors — but as a programmer I would much rather it'd pop up the error message so I know what's going on :-)
You're welcome to keep using this version; I'll make an official release soon (which includes the debug flags, so I get better stack traces for future bug reports).
18 Posted by rougeux on 16 Jan, 2017 08:38 PM
Finally got the error to appear again. Here's the error:
java.lang.NullPointerException
at nodebox.client.NetworkView$MouseHandler.mouseDragged(NetworkView.java:994)
at java.awt.AWTEventMulticaster.mouseDragged(AWTEventMulticaster.java:320)
at java.awt.Component.processMouseMotionEvent(Component.java:6581)
at javax.swing.JComponent.processMouseMotionEvent(JComponent.java:3342)
at java.awt.Component.processEvent(Component.java:6302)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4542)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Support Staff 19 Posted by Frederik De Ble... on 18 Jan, 2017 08:08 AM
Thanks! I will investigate.