ikuaitu / vue-fabric-editor

快图设计-基于fabric.js和Vue的开源图片编辑器,可自定义字体、素材、设计模板。fabric.js and Vue based image editor, can customize fonts, materials, design templates.
https://ikuaitu.github.io/doc/#/
MIT License
5.42k stars 986 forks source link

画布外复制元素与画布内复制元素冲突 #413

Closed wuchenguang1998 closed 5 months ago

wuchenguang1998 commented 5 months ago

画布外复制元素与画布内复制元素冲突,不知道要怎么解决 现在支持画布外复制文本或图片粘贴到画布,也支持画布内元素复制粘贴。 当对浏览器外图片ctrl+c之后,又对画布内元素ctrl+c及ctrl+v后,不仅粘贴了画布的元素,也把画布外的图片粘贴进来。因为最终都是用ctrl+v粘贴到画布,这两种复制情况,如何区分先后顺序? 解决方式一:用不同快捷键区分这两种粘贴情况 解决方式二:ctrl+v粘贴时询问用户要粘贴的目标元素 但两种方式感觉都不太好

nihaojob commented 5 months ago

是否可以在画布内复制时清空系统剪切板?如果可以做到,我们就可以判断出最后一次复制类型,然后根据系统剪切板内容,判断插入的元素。

wuchenguang1998 commented 5 months ago

是否可以在画布内复制时清空系统剪切板?如果可以做到,我们就可以判断出最后一次复制类型,然后根据系统剪切板内容,判断插入的元素。

之前误以为清空剪切板需要用户授权,就没有考虑操作剪切板。刚查了下,发现写入剪切板不需要授权。 按照大佬的想法,确实可以解决“先画布外复制,再画布内复制”的粘贴重复问题。 现在考虑相反的情况:先画布内执行ctrl+c及ctrl+v复制粘贴元素,然后复制浏览器外的一张图片,通过ctrl+v粘贴进画布,发现图片确实粘贴成功,但先前粘贴的元素也被重复粘贴到画布。 不知道这种情况有没有解决的思路呢

wuchenguang1998 commented 5 months ago

明白大佬的意思了,已提交解决😁 针对第二种情况的做法是将ctrl+v的hotkey回调放在paste回调后执行,并在paste回调中,把暂存的画布内粘贴元素先置空

nihaojob commented 5 months ago

是否可以这样,画布内复制时,清空掉剪切板,画布外复制时,剪切板有内容,我们先做一步判断,判断剪切板是否有内容,有内容就是外部复制,没内容就是内部复制

wuchenguang1998 commented 5 months ago

是否可以这样,画布内复制时,清空掉剪切板,画布外复制时,剪切板有内容,我们先做一步判断,判断剪切板是否有内容,有内容就是外部复制,没内容就是内部复制

对的对的👍昨晚的提交照的就是这个思路