From 6425b8714a800836a7cf822c404f02878c10cda1 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Thu, 19 Dec 2019 20:20:20 +0100 Subject: [PATCH] TextEditor: Handle drop events We now handle drop events with data type "url-list". This makes it possible to drop a file from FileManager on TextEditor to open it. --- Applications/TextEditor/TextEditorWidget.cpp | 19 +++++++++++++++++++ Applications/TextEditor/TextEditorWidget.h | 2 ++ 2 files changed, 21 insertions(+) diff --git a/Applications/TextEditor/TextEditorWidget.cpp b/Applications/TextEditor/TextEditorWidget.cpp index 3a5beb9994..96dce569e2 100644 --- a/Applications/TextEditor/TextEditorWidget.cpp +++ b/Applications/TextEditor/TextEditorWidget.cpp @@ -1,6 +1,7 @@ #include "TextEditorWidget.h" #include #include +#include #include #include #include @@ -302,3 +303,21 @@ bool TextEditorWidget::request_close() auto result = GMessageBox::show("The document has been modified. Quit without saving?", "Quit without saving?", GMessageBox::Type::Warning, GMessageBox::InputType::OKCancel, window()); return result == GMessageBox::ExecOK; } + +void TextEditorWidget::drop_event(GDropEvent& event) +{ + event.accept(); + window()->move_to_front(); + + if (event.data_type() == "url-list") { + auto lines = event.data().split_view('\n'); + if (lines.is_empty()) + return; + if (lines.size() > 1) { + GMessageBox::show("TextEditor can only open one file at a time!", "One at a time please!", GMessageBox::Type::Error, GMessageBox::InputType::OK, window()); + return; + } + URL url(lines[0]); + open_sesame(url.path()); + } +} diff --git a/Applications/TextEditor/TextEditorWidget.h b/Applications/TextEditor/TextEditorWidget.h index c3b2a3dc99..ac23c3bcbf 100644 --- a/Applications/TextEditor/TextEditorWidget.h +++ b/Applications/TextEditor/TextEditorWidget.h @@ -26,6 +26,8 @@ private: void set_path(const FileSystemPath& file); void update_title(); + virtual void drop_event(GDropEvent&) override; + RefPtr m_editor; String m_path; String m_name;