<AWT Dev> [9] Review request for 8166591 [macos 10.12] Trackpad scrolling of text on OS X 10.12 Sierra is very fast (Trackpad, Retina only)
Sergey Malenkov
malenkov at gmail.com
Fri Sep 30 09:59:36 UTC 2016
# C [AppKit+0x3a528e] -[NSApplication _crashOnException:]+0x6d
The app is crashed as soon as I start scrolling. Investigating...
May be it is my fault during backporting.
LWCToolkit.m:
+// SCROLL EVENT MASK
+#define SCROLL_PHASE_UNSUPPORTED 1
...
replace the comment with the following one:
+// TRACKPAD SCROLL EVENT PHASE
On Fri, Sep 30, 2016 at 12:30 AM, Alexander Scherbatiy
<alexandr.scherbatiy at oracle.com> wrote:
>
> Hello,
>
> Could you review the updated fix:
> http://cr.openjdk.java.net/~alexsch/8166591/webrev.04
>
> The fix uses the proposed changes below and sets a wheel rotation to +1 or
> -1 when the scroll phase is ended and the accumulates delta value is small
> than the threshold.
>
> Thanks,
> Alexandr.
>
>
> On 29/09/16 22:56, Sergey Malenkov wrote:
>>>
>>> - The SCROLL_MASK_PHASE_CANCELLED and SCROLL_MASK_PHASE_ENDED scroll
>>> masks
>>> are added.
>>
>> Now we use the scrollMask value and the following constants:
>>
>> static final int SCROLL_MASK_WHEEL = 1;
>> static final int SCROLL_MASK_TRACKPAD = 1 << 1;
>> static final int SCROLL_MASK_PHASE_BEGAN = 1 << 2;
>> static final int SCROLL_MASK_PHASE_CANCELLED = 1 << 3;
>> static final int SCROLL_MASK_PHASE_ENDED = 1 << 4;
>>
>> All these masks cannot be used together.
>> So I suggest to replace it with the scrollPhase value:
>>
>> static final int SCROLL_PHASE_UNSUPPORTED = 0; // for mouse events
>> static final int SCROLL_PHASE_BEGAN = 1;
>> static final int SCROLL_PHASE_CONTINUED = 2;
>> static final int SCROLL_PHASE_CANCELLED = 3;
>> static final int SCROLL_PHASE_ENDED = 4;
>>
>> It simplifies if-statements:
>> - if ((scrollMask & NSEvent.SCROLL_MASK_PHASE_BEGAN) != 0) {
>> + if (scrollPhase == NSEvent.SCROLL_PHASE_BEGAN) {
>>
>> and the following method:
>>
>> + (jint) scrollTypeToMask: (NSEventPhase) phase {
>> if (phase) return SCROLL_PHASE_UNSUPPORTED;
>> switch (phase) {
>> case NSEventPhaseBegan: return SCROLL_MASK_PHASE_BEGAN;
>> case NSEventPhaseCancelled: return
>> SCROLL_MASK_PHASE_CANCELLED;
>> case NSEventPhaseEnded: return SCROLL_MASK_PHASE_ENDED;
>> }
>> return SCROLL_PHASE_CONTINUED;
>> }
>>
>> What do you think?
>>
>
--
Best regards,
Sergey A. Malenkov
More information about the awt-dev
mailing list