diff --git a/src/loader.cpp b/src/loader.cpp index 18c2932..51de859 100644 --- a/src/loader.cpp +++ b/src/loader.cpp @@ -231,7 +231,7 @@ namespace anm2ed { if (path.empty()) continue; SDL_Event event{}; - event.type = SDL_EVENT_DROP_FILE; + event.type = SDL_EVENT_USER; event.drop.data = SDL_strdup(path.c_str()); event.drop.windowID = window ? SDL_GetWindowID(window) : 0; SDL_PushEvent(&event); diff --git a/src/state.cpp b/src/state.cpp index 5050fa4..1d3861c 100644 --- a/src/state.cpp +++ b/src/state.cpp @@ -36,7 +36,6 @@ namespace anm2ed void State::update(SDL_Window*& window, Settings& settings) { SDL_Event event{}; - bool openDroppedDocumentsImmediately = manager.documents.empty(); while (SDL_PollEvent(&event)) { @@ -49,10 +48,8 @@ namespace anm2ed if (filesystem::path_is_extension(droppedFile, "anm2")) { std::filesystem::path droppedPath{droppedFile}; - if (openDroppedDocumentsImmediately) - { + if (manager.documents.empty()) manager.open(droppedPath); - } else { if (std::find(manager.anm2DragDropPaths.begin(), manager.anm2DragDropPaths.end(), droppedPath) == @@ -85,6 +82,12 @@ namespace anm2ed } break; } + case SDL_EVENT_USER: + { + auto droppedFile = event.drop.data; + if (filesystem::path_is_extension(droppedFile, "anm2")) manager.open(droppedFile); + break; + } case SDL_EVENT_QUIT: isQuitting = true; break;