diff --git a/Libraries/LibWeb/HtmlView.cpp b/Libraries/LibWeb/HtmlView.cpp
index 8c0fb19eae4..84c379f2244 100644
--- a/Libraries/LibWeb/HtmlView.cpp
+++ b/Libraries/LibWeb/HtmlView.cpp
@@ -27,6 +27,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -590,4 +591,15 @@ void HtmlView::run_javascript_url(const String& url)
document()->run_javascript(source);
}
+void HtmlView::drop_event(GUI::DropEvent& event)
+{
+ if (event.mime_data().has_urls()) {
+ if (on_url_drop) {
+ on_url_drop(event.mime_data().urls().first());
+ return;
+ }
+ }
+ ScrollableWidget::drop_event(event);
+}
+
}
diff --git a/Libraries/LibWeb/HtmlView.h b/Libraries/LibWeb/HtmlView.h
index 5fd6406085e..4804a12087d 100644
--- a/Libraries/LibWeb/HtmlView.h
+++ b/Libraries/LibWeb/HtmlView.h
@@ -64,6 +64,7 @@ public:
Function on_title_change;
Function on_load_start;
Function on_favicon_change;
+ Function on_url_drop;
virtual bool accepts_focus() const override { return true; }
@@ -76,6 +77,7 @@ protected:
virtual void mousedown_event(GUI::MouseEvent&) override;
virtual void mouseup_event(GUI::MouseEvent&) override;
virtual void keydown_event(GUI::KeyEvent&) override;
+ virtual void drop_event(GUI::DropEvent&) override;
private:
virtual void did_scroll() override;