diff --git a/src/CustomEvents.hpp b/src/CustomEvents.hpp index d41a4af..edcf83c 100644 --- a/src/CustomEvents.hpp +++ b/src/CustomEvents.hpp @@ -75,7 +75,7 @@ namespace CustomEvents { std::optional filePathSource; std::string netSource; std::string serverLocalID; - std::string_view fileDataBuffer; + std::string fileDataBuffer; }; struct AddFileToCanvasEvent { diff --git a/src/Screens/DesktopDrawingProgramScreen.cpp b/src/Screens/DesktopDrawingProgramScreen.cpp index 541e033..adfea75 100644 --- a/src/Screens/DesktopDrawingProgramScreen.cpp +++ b/src/Screens/DesktopDrawingProgramScreen.cpp @@ -38,6 +38,20 @@ bool DesktopDrawingProgramScreen::app_close_requested() { return toolbar.app_close_requested(); } +void DesktopDrawingProgramScreen::input_drop_file_callback(const InputManager::DropCallbackArgs& drop) { + if(std::filesystem::is_regular_file(drop.data)) { + std::filesystem::path droppedFilePath(drop.data); + if(droppedFilePath.has_extension() && droppedFilePath.extension().string() == std::string("." + World::FILE_EXTENSION)) { + CustomEvents::emit_event({ + .isClient = false, + .filePathSource = droppedFilePath + }); + return; + } + } + main.world->input_drop_file_callback(drop); +} + void DesktopDrawingProgramScreen::input_key_callback(const InputManager::KeyCallbackArgs& key) { switch(key.key) { case InputManager::KEY_NOGUI: { diff --git a/src/Screens/DesktopDrawingProgramScreen.hpp b/src/Screens/DesktopDrawingProgramScreen.hpp index b717dc5..fe4fb58 100644 --- a/src/Screens/DesktopDrawingProgramScreen.hpp +++ b/src/Screens/DesktopDrawingProgramScreen.hpp @@ -27,6 +27,7 @@ class DesktopDrawingProgramScreen : public DrawingProgramScreen { virtual void gui_layout_run() override; virtual bool app_close_requested() override; virtual void input_key_callback(const InputManager::KeyCallbackArgs& key) override; + virtual void input_drop_file_callback(const InputManager::DropCallbackArgs& drop) override; virtual void input_text_key_callback(const InputManager::KeyCallbackArgs& key) override; virtual void open_file_selector(const std::string& filePickerName, const std::vector& extensionFilters, OpenFileSelectorCallback postSelectionFunc, const std::string& fileName = "", bool isSaving = false) override; virtual void on_tab_close() override; diff --git a/src/Screens/DrawingProgramScreen.cpp b/src/Screens/DrawingProgramScreen.cpp index f29e229..63253b2 100644 --- a/src/Screens/DrawingProgramScreen.cpp +++ b/src/Screens/DrawingProgramScreen.cpp @@ -48,16 +48,6 @@ void DrawingProgramScreen::input_android_text_box_input_callback(const CustomEve } void DrawingProgramScreen::input_drop_file_callback(const InputManager::DropCallbackArgs& drop) { - if(std::filesystem::is_regular_file(drop.data)) { - std::filesystem::path droppedFilePath(drop.data); - if(droppedFilePath.has_extension() && droppedFilePath.extension().string() == std::string("." + World::FILE_EXTENSION)) { - CustomEvents::emit_event({ - .isClient = false, - .filePathSource = droppedFilePath - }); - return; - } - } main.world->input_drop_file_callback(drop); } diff --git a/src/Toolbar.cpp b/src/Toolbar.cpp index efa2f0b..a662516 100644 --- a/src/Toolbar.cpp +++ b/src/Toolbar.cpp @@ -1278,7 +1278,7 @@ void Toolbar::open_world_file(bool isClient, const std::string& netSource, const .filePathSource = std::filesystem::path(fileName), .netSource = uD->nS, .serverLocalID = uD->sLID, - .fileDataBuffer = buffer + .fileDataBuffer = std::string(buffer) }); } }, &uploadData);