GNOME Bugzilla – Bug 685368
Dash - launchers should slide when rearranging
Last modified: 2021-07-05 14:21:17 UTC
If I drag a launcher over the dash the launchers slide out of the way to create a gap. Subsequently dragging the app over the dash causes the launchers to rearrange, but they move in a jerky manner. The launchers should smoothly slide when rearranging.
I'm working on a patch for this bug.
Created attachment 227820 [details] [review] Slide launchers when rearranging dash. When the user grabs and rearrange a launcher on the dash the other launchers slide out nicely, creating a space for the place holder. Still need some work.
It works fine, but i think the general behaviour could be improved. Sometimes the launchers "dance" a little too much on the dash.
Thanks for working on this, Stefano! I've just done a quick test... this is definitely better but does feel a bit too sensitive like you said. Probably needs a little timeout or something. Looking forward to the next iteration!
Thanks Allan. Yep, i was thinking to a little timeout too. I'll let you know asap.
Created attachment 270469 [details] [review] patch I fixed the original patch and added a short timeout (100ms). It does feel quite slow to me, the animations seem to take a bit too long.
Comment on attachment 227820 [details] [review] Slide launchers when rearranging dash. I guess this is obsolete
Review of attachment 270469 [details] [review]: I see one problem. You are waiting to animate place holders one by one, so the animation feels sluggish. The solution would be to animate each place holder independently. The problem with current approach is that, each time you animate, a new item is added to the list, which can increase the list height a lot if you re moving fast trough the dash. Using clutter implicit animations solve that problem (I made a patch with it), but we are trying to not let in implicit clutter animations, so we don't have clutter animations and tweener twisted around the code. At the end, I didn't find a good/easy solution for this using explicit animations with tweener. ::: js/ui/dash.js @@ +904,3 @@ + this._launcherDragTimeoutId = Mainloop.timeout_add(DASH_LAUNCHER_DRAG_TIMEOUT, + Lang.bind(this, function() { + let newPos = pos >= oldPos ? pos + 1 : pos; Problem here is that sometimes is incosistent because of the old place holder counting as a item in the list.
GNOME is going to shut down bugzilla.gnome.org in favor of gitlab.gnome.org. As part of that, we are mass-closing older open tickets in bugzilla.gnome.org which have not seen updates for a longer time (resources are unfortunately quite limited so not every ticket can get handled). If you can still reproduce the situation described in this ticket in a recent and supported software version, then please follow https://wiki.gnome.org/GettingInTouch/BugReportingGuidelines and create a new ticket at https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/ Thank you for your understanding and your help.