-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(extension): 【dynamic-group】DynamicGroup 使用 moveNode 进行移动时子节点没有跟随移动 #1963
Conversation
之前的修改中,跟随移动的逻辑被放在了 node:mousemove 事件监听中,导致只有拖拽才会触发,现改到 getMoveDistance 中,拖拽和使用方法进行移动均会执行
DynamicGroup 的子元素跟随移动逻辑中,获取了所有子元素,导致多次触发移动逻辑
…移动逻辑重复 之前的框选组件中,不选中分组节点的 if 逻辑有问题,在使用单个分组插件时,if (!group) 这样的判断会一直触发,导致会选中所有节点
|
如#1911 (comment)所说,所以你这个pr是如何解决 以及在这个#1858 中,我使用 |
而对于 |
改成这样的话就和
if (isAllowMoveX && deltaX) {
this.x = this.x + deltaX
this.text && this.moveText(deltaX, 0)
moveX = deltaX
}
if (isAllowMoveY && deltaY) {
this.y = this.y + deltaY
this.text && this.moveText(0, deltaY)
moveY = deltaY
} 可以看到,节点的移动是通过,在这里面进行 x y的修改进行的。 |
你没理解我的问题,我的意思是,一个节点A,你实际 |
嗯,事件这里确实有问题。针对 #1911 的情况,这个 pr 相当于是绕开了这个问题 |
我是觉得 moveNode api 和拖拽的行为保持一致比较好。在之前的版本中,moveNode 是会让子节点进行跟随的。 添加参数的话,moveNode 作为主系统的 api,而分组节点作为一个插件,如果在moveNode上增加专门为插件定制的参数的话,不知道是否合适。 |
@boyongjiong |
嗯嗯,我正在想怎么解决你提出的问题,我考虑一下,在看了😁 |
我小丑了。。我用 github 的工具处理了一下冲突,结果它把 master 分支 merge 到你的代码分支了。
再次道歉,拖了这么久。最近一直在忙文章和述职的事情,脑子不够使了,拖了好久。感谢大佬的贡献 @ZivvW 因为一会儿着急发版本,我用你的代码重新提了个 pr -> #2007 ,你的产出还是在 commit 里哈 |
代码已合并哈 |
好的 |
在 #1858 中,分组内节点跟随移动的逻辑被放在了 node:mousemove 事件监听中,导致只有拖拽才会触发该逻辑。对分组使用 Api 如 moveNode 时,不会触发这个事件,子节点不跟随。
现将跟随移到逻辑改到 getMoveDistance 中,拖拽和使用方法进行移动时均会执行该方法。
同时,selection-select 插件中有问题,在选择到分组节点时,会将子节点也选中,导致在做了上面的修改后,子节点会移动 n 次。
selection-select 的代码里有对分组情况的处理:
这样的判断在单独使用分组插件时,会有另一个 if 触发,选中节点。现在修复了该逻辑,不会影响到分组的移动
效果:
这样处理后也能修复 #1949 ,这种场景下,鼠标没有移动,所以不触发事件
效果: