File tree Expand file tree Collapse file tree 1 file changed +14
-2
lines changed Expand file tree Collapse file tree 1 file changed +14
-2
lines changed Original file line number Diff line number Diff line change @@ -1114,7 +1114,9 @@ static void Emscripten_set_drag_event_callbacks(SDL_WindowData *data)
11141114 _Emscripten_SendDragTextEvent (data , plain_text );
11151115 _free (plain_text );
11161116 } else if (event .dataTransfer .types .includes ("Files" )) {
1117- for (let i = 0 ; i < event .dataTransfer .files .length ; i ++ ) {
1117+ let files_read = 0 ;
1118+ const files_to_read = event .dataTransfer .files .length ;
1119+ for (let i = 0 ; i < files_to_read ; i ++ ) {
11181120 const file = event .dataTransfer .files .item (i );
11191121 const file_reader = new FileReader ();
11201122 file_reader .readAsArrayBuffer (file );
@@ -1133,9 +1135,19 @@ static void Emscripten_set_drag_event_callbacks(SDL_WindowData *data)
11331135
11341136 _Emscripten_SendDragFileEvent (data , c_fs_filepath );
11351137 _free (c_fs_filepath );
1136- _Emscripten_SendDragCompleteEvent (data );
1138+ onFileRead ();
1139+ };
1140+ file_reader .onerror = function (event ) {
1141+ // Handle when error occurs to ensure that the drag event can still complete
1142+ onFileRead ();
11371143 };
11381144 }
1145+ function onFileRead () {
1146+ ++ files_read ;
1147+ if (files_read == = files_to_read ) {
1148+ _Emscripten_SendDragCompleteEvent (data );
1149+ }
1150+ }
11391151 }
11401152 _Emscripten_SendDragCompleteEvent (data );
11411153 };
You can’t perform that action at this time.
0 commit comments