@@ -21,6 +21,8 @@ import { toast } from "sonner";
2121import { URI } from "vscode-uri" ;
2222import { cn } from "./utils/cn" ;
2323import { isWindows } from "./utils/platform" ;
24+ import { DragFileIntoStageEngine } from "./core/service/dataManageService/dragFileIntoStageEngine/dragFileIntoStageEngine" ;
25+ import { Vector } from "@graphif/data-structures" ;
2426
2527export default function App ( ) {
2628 const [ maximized , _setMaximized ] = useState ( false ) ;
@@ -100,34 +102,6 @@ export default function App() {
100102 }
101103 setIsWide ( window . innerWidth / window . innerHeight > 1.8 ) ;
102104 } ) ;
103- const unlisten2 = getCurrentWindow ( ) . onDragDropEvent ( ( event ) => {
104- if ( event . payload . type === "over" ) {
105- if ( event . payload . position . y <= 96 ) {
106- // 拖拽到标签页栏区域
107- setDropState ( "open" ) ;
108- } else {
109- // 拖拽到画布区域
110- setDropState ( "append" ) ;
111- }
112- } else if ( event . payload . type === "leave" ) {
113- setDropState ( "none" ) ;
114- } else if ( event . payload . type === "drop" ) {
115- setDropState ( "none" ) ;
116- if ( event . payload . position . y <= 96 ) {
117- // 拖拽到标签页栏区域
118- for ( const path of event . payload . paths ) {
119- if ( path . endsWith ( ".prg" ) || path . endsWith ( ".json" ) ) {
120- onOpenFile ( URI . file ( path ) , "拖入窗口" ) ;
121- } else {
122- toast . error ( "不支持打开此文件" ) ;
123- }
124- }
125- } else {
126- // 拖拽到画布区域
127- toast ( "追加到画布……待完善" ) ;
128- }
129- }
130- } ) ;
131105
132106 if ( ! telemetryEventSent ) {
133107 setTelemetryEventSent ( true ) ;
@@ -153,7 +127,6 @@ export default function App() {
153127
154128 return ( ) => {
155129 unlisten1 ?. then ( ( f ) => f ( ) ) ;
156- unlisten2 ?. then ( ( f ) => f ( ) ) ;
157130 } ;
158131 } , [ ] ) ;
159132
@@ -186,6 +159,43 @@ export default function App() {
186159 activeProject . canvas . element . addEventListener ( "pointerup" , ( ) => {
187160 setIgnoreMouseEvents ( false ) ;
188161 } ) ;
162+ const unlisten2 = getCurrentWindow ( ) . onDragDropEvent ( ( event ) => {
163+ if ( event . payload . type === "over" ) {
164+ if ( event . payload . position . y <= 96 ) {
165+ // 拖拽到标签页栏区域
166+ setDropState ( "open" ) ;
167+ } else {
168+ // 拖拽到画布区域
169+ setDropState ( "append" ) ;
170+ }
171+ } else if ( event . payload . type === "leave" ) {
172+ setDropState ( "none" ) ;
173+ } else if ( event . payload . type === "drop" ) {
174+ setDropState ( "none" ) ;
175+ if ( event . payload . position . y <= 96 ) {
176+ // 拖拽到标签页栏区域
177+ for ( const path of event . payload . paths ) {
178+ if ( path . endsWith ( ".prg" ) || path . endsWith ( ".json" ) ) {
179+ onOpenFile ( URI . file ( path ) , "拖入窗口" ) ;
180+ } else {
181+ toast . error ( "不支持打开此文件" ) ;
182+ }
183+ }
184+ } else {
185+ // 拖拽到画布区域
186+ toast ( "追加到画布……待完善" ) ;
187+ // console.log(activeProject, event.payload.paths);
188+ DragFileIntoStageEngine . handleDrop (
189+ activeProject ,
190+ event . payload . paths ,
191+ new Vector ( event . payload . position . x , event . payload . position . y ) ,
192+ ) ;
193+ }
194+ }
195+ } ) ;
196+ return ( ) => {
197+ unlisten2 ?. then ( ( f ) => f ( ) ) ;
198+ } ;
189199 } , [ activeProject ] ) ;
190200
191201 useEffect ( ( ) => {
0 commit comments