Autoscrolling (in FastTable)

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Autoscrolling (in FastTable)

Stephan Eggermont-3
Today we've had a design discussion on slack on autoscrolling with
Morphic. The idea is to start scrolling up or down when drag-holding
over a table. A similar approach should hold for scrolling panes.

It started with me describing a working but not so nice approach
starting stepping on #mouseEnterDragging:, checking the global hand
position and button state in each #step:, stopping the stepping on
#mouseLeaveDragging: or #mouseUp:.

Thierry noticed the #newMouseFocus: taking of FastTable on
#mouseEnterDragging: causes problems when dragging from one table to
itself without leaving the table bounds.

Henrik then wrote the code for FastTable, removing the mouse focus
taking by adapting #handleMouseMove: The first results are in the latest
version of FastTable on estebanlm/FastTable.
The top and bottom parts of the table will now start scrolling the table
rows when drag-holding over them.

Further possible improvements:
- expand/contract tree triangles when holding over them, taking priority
over the start of autoscrolling;
- adapt scrolling speed depending on distance from border
- check starting delay, repeat rate and smoothness of the scrolling

Stephan



Reply | Threaded
Open this post in threaded view
|

Re: Autoscrolling (in FastTable)

stepharo
This is cool to see such important widgets improving.

Stef

Le 26/11/15 17:28, Stephan Eggermont a écrit :

> Today we've had a design discussion on slack on autoscrolling with
> Morphic. The idea is to start scrolling up or down when drag-holding
> over a table. A similar approach should hold for scrolling panes.
>
> It started with me describing a working but not so nice approach
> starting stepping on #mouseEnterDragging:, checking the global hand
> position and button state in each #step:, stopping the stepping on
> #mouseLeaveDragging: or #mouseUp:.
>
> Thierry noticed the #newMouseFocus: taking of FastTable on
> #mouseEnterDragging: causes problems when dragging from one table to
> itself without leaving the table bounds.
>
> Henrik then wrote the code for FastTable, removing the mouse focus
> taking by adapting #handleMouseMove: The first results are in the
> latest version of FastTable on estebanlm/FastTable.
> The top and bottom parts of the table will now start scrolling the
> table rows when drag-holding over them.
>
> Further possible improvements:
> - expand/contract tree triangles when holding over them, taking
> priority over the start of autoscrolling;
> - adapt scrolling speed depending on distance from border
> - check starting delay, repeat rate and smoothness of the scrolling
>
> Stephan
>
>
>
>


Reply | Threaded
Open this post in threaded view
|

Re: Autoscrolling (in FastTable)

Thierry Goubier
Yes, this was very interesting. Some of the things we got:

- mouseFocus is in fact more usefull than it seems at first, especially
if you want to receive events when the mouse doesn't move. In
particular, it is usefull to know how to get mouseStillDown: events
(they are sent as soon as the mouse pointer stops moving during a drag,
but only if you have the mouse focus).

- we should unify alarms and stepMessages. This would make some
time-based behaviors a lot easier to code, not requiring the addition of
an instance variable to hold the number of times the step message has
been sent.

- FastTable could get an insertion point: a blue line where an item
would be inserted if dropped.

- It is possible, and relatively easy in the current Morphic framework,
to do the following:
   - auto-scrolling accelerating the longer you stay with your drag
either on top or at the bottom of the table.
   - have a time-threshold to automatically expand tree items
(triangles) when you drag
   - accelerate and slow down mouse wheel based scrolling on long lists
(also applies to two-finger scrolling on trackpads), like it is done on
our phones :)

Thierry


Le 28/11/2015 12:09, stepharo a écrit :

> This is cool to see such important widgets improving.
>
> Stef
>
> Le 26/11/15 17:28, Stephan Eggermont a écrit :
>> Today we've had a design discussion on slack on autoscrolling with
>> Morphic. The idea is to start scrolling up or down when drag-holding
>> over a table. A similar approach should hold for scrolling panes.
>>
>> It started with me describing a working but not so nice approach
>> starting stepping on #mouseEnterDragging:, checking the global hand
>> position and button state in each #step:, stopping the stepping on
>> #mouseLeaveDragging: or #mouseUp:.
>>
>> Thierry noticed the #newMouseFocus: taking of FastTable on
>> #mouseEnterDragging: causes problems when dragging from one table to
>> itself without leaving the table bounds.
>>
>> Henrik then wrote the code for FastTable, removing the mouse focus
>> taking by adapting #handleMouseMove: The first results are in the
>> latest version of FastTable on estebanlm/FastTable.
>> The top and bottom parts of the table will now start scrolling the
>> table rows when drag-holding over them.
>>
>> Further possible improvements:
>> - expand/contract tree triangles when holding over them, taking
>> priority over the start of autoscrolling;
>> - adapt scrolling speed depending on distance from border
>> - check starting delay, repeat rate and smoothness of the scrolling
>>
>> Stephan
>>
>>
>>
>>
>
>
>


Reply | Threaded
Open this post in threaded view
|

Re: Autoscrolling (in FastTable)

stepharo
We are working on Bloc so I would not invest too much improving
dramatically Morphic.

Le 28/11/15 17:52, Thierry Goubier a écrit :

> Yes, this was very interesting. Some of the things we got:
>
> - mouseFocus is in fact more usefull than it seems at first,
> especially if you want to receive events when the mouse doesn't move.
> In particular, it is usefull to know how to get mouseStillDown: events
> (they are sent as soon as the mouse pointer stops moving during a
> drag, but only if you have the mouse focus).
>
> - we should unify alarms and stepMessages. This would make some
> time-based behaviors a lot easier to code, not requiring the addition
> of an instance variable to hold the number of times the step message
> has been sent.
I think that this is like that in Bloc

>
> - FastTable could get an insertion point: a blue line where an item
> would be inserted if dropped.
>
> - It is possible, and relatively easy in the current Morphic
> framework, to do the following:
>   - auto-scrolling accelerating the longer you stay with your drag
> either on top or at the bottom of the table.
>   - have a time-threshold to automatically expand tree items
> (triangles) when you drag
>   - accelerate and slow down mouse wheel based scrolling on long lists
> (also applies to two-finger scrolling on trackpads), like it is done
> on our phones :)
>
> Thierry
>
>
> Le 28/11/2015 12:09, stepharo a écrit :
>> This is cool to see such important widgets improving.
>>
>> Stef
>>
>> Le 26/11/15 17:28, Stephan Eggermont a écrit :
>>> Today we've had a design discussion on slack on autoscrolling with
>>> Morphic. The idea is to start scrolling up or down when drag-holding
>>> over a table. A similar approach should hold for scrolling panes.
>>>
>>> It started with me describing a working but not so nice approach
>>> starting stepping on #mouseEnterDragging:, checking the global hand
>>> position and button state in each #step:, stopping the stepping on
>>> #mouseLeaveDragging: or #mouseUp:.
>>>
>>> Thierry noticed the #newMouseFocus: taking of FastTable on
>>> #mouseEnterDragging: causes problems when dragging from one table to
>>> itself without leaving the table bounds.
>>>
>>> Henrik then wrote the code for FastTable, removing the mouse focus
>>> taking by adapting #handleMouseMove: The first results are in the
>>> latest version of FastTable on estebanlm/FastTable.
>>> The top and bottom parts of the table will now start scrolling the
>>> table rows when drag-holding over them.
>>>
>>> Further possible improvements:
>>> - expand/contract tree triangles when holding over them, taking
>>> priority over the start of autoscrolling;
>>> - adapt scrolling speed depending on distance from border
>>> - check starting delay, repeat rate and smoothness of the scrolling
>>>
>>> Stephan
>>>
>>>
>>>
>>>
>>
>>
>>
>
>
>


Reply | Threaded
Open this post in threaded view
|

Re: Autoscrolling (in FastTable)

Thierry Goubier
Le 28/11/2015 18:24, stepharo a écrit :
> We are working on Bloc so I would not invest too much improving
> dramatically Morphic.

Most of what is being done will port to Bloc. No improvements of Morphic
are considered; just using it correctly.

Thierry

Reply | Threaded
Open this post in threaded view
|

Re: Autoscrolling (in FastTable)

stepharo


Le 28/11/15 18:32, Thierry Goubier a écrit :
> Le 28/11/2015 18:24, stepharo a écrit :
>> We are working on Bloc so I would not invest too much improving
>> dramatically Morphic.
>
> Most of what is being done will port to Bloc. No improvements of
> Morphic are considered; just using it correctly.

then supercool :)

>
> Thierry
>
>


Reply | Threaded
Open this post in threaded view
|

Re: Autoscrolling (in FastTable)

Thierry Goubier
Le 29/11/2015 19:04, stepharo a écrit :

>
>
> Le 28/11/15 18:32, Thierry Goubier a écrit :
>> Le 28/11/2015 18:24, stepharo a écrit :
>>> We are working on Bloc so I would not invest too much improving
>>> dramatically Morphic.
>>
>> Most of what is being done will port to Bloc. No improvements of
>> Morphic are considered; just using it correctly.
>
> then supercool :)

Very interesting. We're now talking easy-in-out animations for
scrolling, like in the Self paper of 1993 (and as in CSS these days).

Thierry