diff options
author | Mustafa Quraish <mustafaq9@gmail.com> | 2021-09-06 00:24:12 -0400 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-09-06 10:36:08 +0200 |
commit | f8570bd773731ba8c6fab3ccad1fe8280e352359 (patch) | |
tree | 20922f714691fe87d83aa35fb1e38856b2a5c064 /Userland/Applications | |
parent | 5a8c6b95e61da7717388241e0c4733de8c1d267f (diff) | |
download | serenity-f8570bd773731ba8c6fab3ccad1fe8280e352359.zip |
PixelPaint: Allow opening of files dropped onto application :^)
We can now drag-and-drop files onto PixelPaint to be able to open
them. Each dropped file opens in a separate editor (which is the
default behavior of Photoshop).
Diffstat (limited to 'Userland/Applications')
-rw-r--r-- | Userland/Applications/PixelPaint/MainWidget.cpp | 22 | ||||
-rw-r--r-- | Userland/Applications/PixelPaint/MainWidget.h | 2 |
2 files changed, 24 insertions, 0 deletions
diff --git a/Userland/Applications/PixelPaint/MainWidget.cpp b/Userland/Applications/PixelPaint/MainWidget.cpp index 116fef232f..51e5806c75 100644 --- a/Userland/Applications/PixelPaint/MainWidget.cpp +++ b/Userland/Applications/PixelPaint/MainWidget.cpp @@ -773,4 +773,26 @@ ImageEditor& MainWidget::create_new_editor(NonnullRefPtr<Image> image) return image_editor; } +void MainWidget::drop_event(GUI::DropEvent& event) +{ + if (!event.mime_data().has_urls()) + return; + + event.accept(); + + if (event.mime_data().urls().is_empty()) + return; + + for (auto& url : event.mime_data().urls()) { + if (url.protocol() != "file") + continue; + + auto result = FileSystemAccessClient::Client::the().request_file(window()->window_id(), url.path(), Core::OpenMode::ReadOnly); + if (result.error != 0) + continue; + + open_image_fd(*result.fd, *result.chosen_file); + } +} + } diff --git a/Userland/Applications/PixelPaint/MainWidget.h b/Userland/Applications/PixelPaint/MainWidget.h index 4294608499..970a157d23 100644 --- a/Userland/Applications/PixelPaint/MainWidget.h +++ b/Userland/Applications/PixelPaint/MainWidget.h @@ -43,6 +43,8 @@ private: ImageEditor* current_image_editor(); ImageEditor& create_new_editor(NonnullRefPtr<Image>); + virtual void drop_event(GUI::DropEvent&) override; + ProjectLoader m_loader; RefPtr<ToolboxWidget> m_toolbox; |