<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 Bylokhov
Sergey.Bylokhov at oracle.com
Fri Sep 30 15:18:25 UTC 2016
What will be the difference if we will scroll by one line at the "begin
phase"? probably it will be better if the the scroll will start
immediately on first touch?
On 30.09.16 17:59, Alexander Scherbatiy wrote:
>
> Hello,
>
> Could you review the updated fix:
> http://cr.openjdk.java.net/~alexsch/8166591/webrev.06
>
> - The CPlatformResponder.handleScrollEvent(...) is updated to dispatch
> a scroll event when delta or round delta is not equal to zero
> - The native scrollStateWithPhase: method is updated to have NSEvent as
> an argument
>
> Thanks,
> Alexandr.
>
> On 30/09/16 16:58, Sergey Malenkov wrote:
>> 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.
More information about the awt-dev
mailing list