<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 12:58:08 UTC 2016


In the CPlatformResponder:

phase3 0 ~ 0.0 // mayBegan
phase2 0 ~ 0.0 // began
phase3 0 ~ 0.0222015380859375
phase3 0 ~ 0.0234222412109375
phase3 0 ~ 0.023956298828125
phase3 0 ~ 0.0242919921875
phase3 0 ~ 0.02447509765625
phase3 0 ~ 0.0246124267578125
phase3 0 ~ 0.024658203125
phase3 0 ~ 0.0222015380859375
phase3 0 ~ 0.0233306884765625
phase5 1 ~ 0.0 // end

In Java:

wheelRotation=0,preciseWheelRotation=-0.0222015380859375
wheelRotation=0,preciseWheelRotation=-0.0234222412109375
wheelRotation=0,preciseWheelRotation=-0.023956298828125
wheelRotation=0,preciseWheelRotation=-0.0242919921875
wheelRotation=0,preciseWheelRotation=-0.02447509765625
wheelRotation=0,preciseWheelRotation=-0.0246124267578125
wheelRotation=0,preciseWheelRotation=-0.024658203125
wheelRotation=0,preciseWheelRotation=-0.0222015380859375
wheelRotation=0,preciseWheelRotation=-0.0233306884765625

We ignored first two events, because of 0 & 0.0
We should not ignore last event, where 1 & 0.0
Seems we need to fix DeltaAccumulator.


On Fri, Sep 30, 2016 at 2:25 PM, Alexander Scherbatiy
<alexandr.scherbatiy at oracle.com> wrote:
>
> Hello,
>
> Could you review the updated fix:
>   http://cr.openjdk.java.net/~alexsch/8166591/webrev.05
>
> The momentumPhase is used to detect the trackpad events.
>
> Thanks,
> Alexandr.
>
>
> On 30/09/16 14:58, Sergey Malenkov wrote:
>>>
>>> # 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.
>>
>> Sorry, It was may fault.
>>
>>
>>> LWCToolkit.m:
>>> +// SCROLL EVENT MASK
>>> +#define SCROLL_PHASE_UNSUPPORTED 1
>>> ...
>>>
>>> replace the comment with the following one:
>>>
>>> +// TRACKPAD SCROLL EVENT PHASE
>>
>> I discovered how we should detect mouse event properly: use both
>> properties phase and momentumPhase.
>>
>> https://developer.apple.com/library/prerelease/content/documentation/Cocoa/Conceptual/EventOverview/HandlingTouchEvents/HandlingTouchEvents.html
>> "The momentumPhase property helps you detect momentum scrolling, in
>> which the hardware continues to issue scroll wheel events even though
>> the user is no longer physically scrolling."
>>
>> if (phase==NULL) && (momentumPhase==NULL) -> this is a mouse event.
>>
>> scrolling by trackpad generates the following events:
>>
>> phase=mayBegan momentumPhase=null
>> phase=began momentumPhase=null
>> phase=continued momentumPhase=null
>> ...
>> phase=continued momentumPhase=null
>> phase=ended momentumPhase=null
>> phase=null momentumPhase=began
>> phase=null momentumPhase=continued
>> ...
>> phase=null momentumPhase=continued
>> phase=null momentumPhase=ended
>>
>> So, we should generate PHASE_UNSUPPORTED only
>> if ((phase == NULL) && (momentumPhase == NULL))
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>



-- 
Best regards,
Sergey A. Malenkov


More information about the awt-dev mailing list