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 |
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 > > > > |
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 >> >> >> >> > > > |
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. > > - 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 >>> >>> >>> >>> >> >> >> > > > |
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 |
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 > > |
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 |
Free forum by Nabble | Edit this page |