From 21ecd5b804b5ec13931357315e80c63fd89baa02 Mon Sep 17 00:00:00 2001 From: RickySeverino Date: Sun, 11 Apr 2021 14:53:48 -0400 Subject: [PATCH] HackStudio: Allow users to drag and drop files into the editor --- Userland/DevTools/HackStudio/Editor.cpp | 18 ++++++++++++++++++ Userland/DevTools/HackStudio/Editor.h | 1 + 2 files changed, 19 insertions(+) diff --git a/Userland/DevTools/HackStudio/Editor.cpp b/Userland/DevTools/HackStudio/Editor.cpp index 71f703d05dc..e4b1c8bf742 100644 --- a/Userland/DevTools/HackStudio/Editor.cpp +++ b/Userland/DevTools/HackStudio/Editor.cpp @@ -40,6 +40,7 @@ #include #include #include +#include #include #include #include @@ -302,6 +303,23 @@ void Editor::mousedown_event(GUI::MouseEvent& event) GUI::TextEditor::mousedown_event(event); } +void Editor::drop_event(GUI::DropEvent& event) +{ + event.accept(); + window()->move_to_front(); + + if (event.mime_data().has_urls()) { + auto urls = event.mime_data().urls(); + if (urls.is_empty()) + return; + if (urls.size() > 1) { + GUI::MessageBox::show(window(), "HackStudio can only open one file at a time!", "One at a time please!", GUI::MessageBox::Type::Error); + return; + } + open_file(urls.first().path()); + } +} + void Editor::enter_event(Core::Event& event) { m_hovering_editor = true; diff --git a/Userland/DevTools/HackStudio/Editor.h b/Userland/DevTools/HackStudio/Editor.h index 588965bfc96..9343fa5e37d 100644 --- a/Userland/DevTools/HackStudio/Editor.h +++ b/Userland/DevTools/HackStudio/Editor.h @@ -80,6 +80,7 @@ private: virtual void paint_event(GUI::PaintEvent&) override; virtual void mousemove_event(GUI::MouseEvent&) override; virtual void mousedown_event(GUI::MouseEvent&) override; + virtual void drop_event(GUI::DropEvent&) override; virtual void enter_event(Core::Event&) override; virtual void leave_event(Core::Event&) override;