mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-05-30 23:12:56 +00:00
Userland: Accept drag_enter events for widgets supporting file drops
This patch will switch cursor to DragCopy when a user enters a widget while dragging file(s), giving them a visual clue that it *might* be dropped into this widget. This is a rather naive approach, as the cursor icon will change for any kind of file, as currently programs don't know the drag contents before dropping it. But after all I think it's better than nothing. :^)
This commit is contained in:
parent
461ee18d64
commit
0b7f5bbdfb
Notes:
sideshowbarker
2024-07-17 06:35:23 +09:00
Author: https://github.com/krkk
Commit: 0b7f5bbdfb
Pull-request: https://github.com/SerenityOS/serenity/pull/15930
21 changed files with 89 additions and 0 deletions
|
@ -91,6 +91,7 @@ private:
|
||||||
glEndList();
|
glEndList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual void drag_enter_event(GUI::DragEvent&) override;
|
||||||
virtual void drop_event(GUI::DropEvent&) override;
|
virtual void drop_event(GUI::DropEvent&) override;
|
||||||
virtual void paint_event(GUI::PaintEvent&) override;
|
virtual void paint_event(GUI::PaintEvent&) override;
|
||||||
virtual void resize_event(GUI::ResizeEvent&) override;
|
virtual void resize_event(GUI::ResizeEvent&) override;
|
||||||
|
@ -125,6 +126,13 @@ private:
|
||||||
float m_zoom = 1;
|
float m_zoom = 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void GLContextWidget::drag_enter_event(GUI::DragEvent& event)
|
||||||
|
{
|
||||||
|
auto const& mime_types = event.mime_types();
|
||||||
|
if (mime_types.contains_slow("text/uri-list"))
|
||||||
|
event.accept();
|
||||||
|
}
|
||||||
|
|
||||||
void GLContextWidget::drop_event(GUI::DropEvent& event)
|
void GLContextWidget::drop_event(GUI::DropEvent& event)
|
||||||
{
|
{
|
||||||
if (!event.mime_data().has_urls())
|
if (!event.mime_data().has_urls())
|
||||||
|
|
|
@ -872,6 +872,13 @@ void MainWidget::update_preview()
|
||||||
m_font_preview_window->update();
|
m_font_preview_window->update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWidget::drag_enter_event(GUI::DragEvent& event)
|
||||||
|
{
|
||||||
|
auto const& mime_types = event.mime_types();
|
||||||
|
if (mime_types.contains_slow("text/uri-list"))
|
||||||
|
event.accept();
|
||||||
|
}
|
||||||
|
|
||||||
void MainWidget::drop_event(GUI::DropEvent& event)
|
void MainWidget::drop_event(GUI::DropEvent& event)
|
||||||
{
|
{
|
||||||
event.accept();
|
event.accept();
|
||||||
|
|
|
@ -62,6 +62,7 @@ private:
|
||||||
ErrorOr<void> create_undo_stack();
|
ErrorOr<void> create_undo_stack();
|
||||||
ErrorOr<RefPtr<GUI::Window>> create_preview_window();
|
ErrorOr<RefPtr<GUI::Window>> create_preview_window();
|
||||||
|
|
||||||
|
virtual void drag_enter_event(GUI::DragEvent&) override;
|
||||||
virtual void drop_event(GUI::DropEvent&) override;
|
virtual void drop_event(GUI::DropEvent&) override;
|
||||||
|
|
||||||
void undo();
|
void undo();
|
||||||
|
|
|
@ -564,6 +564,13 @@ void HexEditorWidget::set_value_inspector_visible(bool visible)
|
||||||
m_side_panel_container->set_visible(visible || m_search_results_container->is_visible());
|
m_side_panel_container->set_visible(visible || m_search_results_container->is_visible());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HexEditorWidget::drag_enter_event(GUI::DragEvent& event)
|
||||||
|
{
|
||||||
|
auto const& mime_types = event.mime_types();
|
||||||
|
if (mime_types.contains_slow("text/uri-list"))
|
||||||
|
event.accept();
|
||||||
|
}
|
||||||
|
|
||||||
void HexEditorWidget::drop_event(GUI::DropEvent& event)
|
void HexEditorWidget::drop_event(GUI::DropEvent& event)
|
||||||
{
|
{
|
||||||
event.accept();
|
event.accept();
|
||||||
|
|
|
@ -36,6 +36,8 @@ private:
|
||||||
void set_search_results_visible(bool visible);
|
void set_search_results_visible(bool visible);
|
||||||
void set_value_inspector_visible(bool visible);
|
void set_value_inspector_visible(bool visible);
|
||||||
void update_inspector_values(size_t position);
|
void update_inspector_values(size_t position);
|
||||||
|
|
||||||
|
virtual void drag_enter_event(GUI::DragEvent&) override;
|
||||||
virtual void drop_event(GUI::DropEvent&) override;
|
virtual void drop_event(GUI::DropEvent&) override;
|
||||||
|
|
||||||
RefPtr<HexEditor> m_editor;
|
RefPtr<HexEditor> m_editor;
|
||||||
|
|
|
@ -198,6 +198,13 @@ void ViewWidget::load_from_file(String const& path)
|
||||||
reset_view();
|
reset_view();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ViewWidget::drag_enter_event(GUI::DragEvent& event)
|
||||||
|
{
|
||||||
|
auto const& mime_types = event.mime_types();
|
||||||
|
if (mime_types.contains_slow("text/uri-list"))
|
||||||
|
event.accept();
|
||||||
|
}
|
||||||
|
|
||||||
void ViewWidget::drop_event(GUI::DropEvent& event)
|
void ViewWidget::drop_event(GUI::DropEvent& event)
|
||||||
{
|
{
|
||||||
event.accept();
|
event.accept();
|
||||||
|
|
|
@ -58,6 +58,7 @@ private:
|
||||||
virtual void paint_event(GUI::PaintEvent&) override;
|
virtual void paint_event(GUI::PaintEvent&) override;
|
||||||
virtual void mousedown_event(GUI::MouseEvent&) override;
|
virtual void mousedown_event(GUI::MouseEvent&) override;
|
||||||
virtual void mouseup_event(GUI::MouseEvent&) override;
|
virtual void mouseup_event(GUI::MouseEvent&) override;
|
||||||
|
virtual void drag_enter_event(GUI::DragEvent&) override;
|
||||||
virtual void drop_event(GUI::DropEvent&) override;
|
virtual void drop_event(GUI::DropEvent&) override;
|
||||||
|
|
||||||
void set_bitmap(Gfx::Bitmap const* bitmap);
|
void set_bitmap(Gfx::Bitmap const* bitmap);
|
||||||
|
|
|
@ -1145,6 +1145,13 @@ ImageEditor& MainWidget::create_new_editor(NonnullRefPtr<Image> image)
|
||||||
return image_editor;
|
return image_editor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWidget::drag_enter_event(GUI::DragEvent& event)
|
||||||
|
{
|
||||||
|
auto const& mime_types = event.mime_types();
|
||||||
|
if (mime_types.contains_slow("text/uri-list"))
|
||||||
|
event.accept();
|
||||||
|
}
|
||||||
|
|
||||||
void MainWidget::drop_event(GUI::DropEvent& event)
|
void MainWidget::drop_event(GUI::DropEvent& event)
|
||||||
{
|
{
|
||||||
if (!event.mime_data().has_urls())
|
if (!event.mime_data().has_urls())
|
||||||
|
|
|
@ -56,6 +56,7 @@ private:
|
||||||
|
|
||||||
void set_actions_enabled(bool enabled);
|
void set_actions_enabled(bool enabled);
|
||||||
|
|
||||||
|
virtual void drag_enter_event(GUI::DragEvent&) override;
|
||||||
virtual void drop_event(GUI::DropEvent&) override;
|
virtual void drop_event(GUI::DropEvent&) override;
|
||||||
|
|
||||||
ProjectLoader m_loader;
|
ProjectLoader m_loader;
|
||||||
|
|
|
@ -119,6 +119,13 @@ void SoundPlayerWidgetAdvancedView::set_nonlinear_volume_slider(bool nonlinear)
|
||||||
m_nonlinear_volume_slider = nonlinear;
|
m_nonlinear_volume_slider = nonlinear;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SoundPlayerWidgetAdvancedView::drag_enter_event(GUI::DragEvent& event)
|
||||||
|
{
|
||||||
|
auto const& mime_types = event.mime_types();
|
||||||
|
if (mime_types.contains_slow("text/uri-list"))
|
||||||
|
event.accept();
|
||||||
|
}
|
||||||
|
|
||||||
void SoundPlayerWidgetAdvancedView::drop_event(GUI::DropEvent& event)
|
void SoundPlayerWidgetAdvancedView::drop_event(GUI::DropEvent& event)
|
||||||
{
|
{
|
||||||
event.accept();
|
event.accept();
|
||||||
|
|
|
@ -57,6 +57,7 @@ private:
|
||||||
|
|
||||||
void sync_previous_next_actions();
|
void sync_previous_next_actions();
|
||||||
|
|
||||||
|
void drag_enter_event(GUI::DragEvent& event) override;
|
||||||
void drop_event(GUI::DropEvent& event) override;
|
void drop_event(GUI::DropEvent& event) override;
|
||||||
GUI::Window& m_window;
|
GUI::Window& m_window;
|
||||||
|
|
||||||
|
|
|
@ -748,6 +748,13 @@ bool MainWidget::request_close()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWidget::drag_enter_event(GUI::DragEvent& event)
|
||||||
|
{
|
||||||
|
auto const& mime_types = event.mime_types();
|
||||||
|
if (mime_types.contains_slow("text/uri-list"))
|
||||||
|
event.accept();
|
||||||
|
}
|
||||||
|
|
||||||
void MainWidget::drop_event(GUI::DropEvent& event)
|
void MainWidget::drop_event(GUI::DropEvent& event)
|
||||||
{
|
{
|
||||||
event.accept();
|
event.accept();
|
||||||
|
|
|
@ -54,6 +54,7 @@ private:
|
||||||
WebView::OutOfProcessWebView& ensure_web_view();
|
WebView::OutOfProcessWebView& ensure_web_view();
|
||||||
void set_web_view_visible(bool);
|
void set_web_view_visible(bool);
|
||||||
|
|
||||||
|
virtual void drag_enter_event(GUI::DragEvent&) override;
|
||||||
virtual void drop_event(GUI::DropEvent&) override;
|
virtual void drop_event(GUI::DropEvent&) override;
|
||||||
|
|
||||||
enum class ShowMessageIfNoResults {
|
enum class ShowMessageIfNoResults {
|
||||||
|
|
|
@ -134,6 +134,13 @@ void PreviewWidget::resize_event(GUI::ResizeEvent&)
|
||||||
update_preview_window_locations();
|
update_preview_window_locations();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PreviewWidget::drag_enter_event(GUI::DragEvent& event)
|
||||||
|
{
|
||||||
|
auto const& mime_types = event.mime_types();
|
||||||
|
if (mime_types.contains_slow("text/uri-list"))
|
||||||
|
event.accept();
|
||||||
|
}
|
||||||
|
|
||||||
void PreviewWidget::drop_event(GUI::DropEvent& event)
|
void PreviewWidget::drop_event(GUI::DropEvent& event)
|
||||||
{
|
{
|
||||||
event.accept();
|
event.accept();
|
||||||
|
|
|
@ -33,6 +33,7 @@ private:
|
||||||
virtual void paint_preview(GUI::PaintEvent&) override;
|
virtual void paint_preview(GUI::PaintEvent&) override;
|
||||||
virtual void second_paint_event(GUI::PaintEvent&) override;
|
virtual void second_paint_event(GUI::PaintEvent&) override;
|
||||||
virtual void resize_event(GUI::ResizeEvent&) override;
|
virtual void resize_event(GUI::ResizeEvent&) override;
|
||||||
|
virtual void drag_enter_event(GUI::DragEvent&) override;
|
||||||
virtual void drop_event(GUI::DropEvent&) override;
|
virtual void drop_event(GUI::DropEvent&) override;
|
||||||
virtual void palette_changed() override;
|
virtual void palette_changed() override;
|
||||||
|
|
||||||
|
|
|
@ -348,6 +348,13 @@ void Editor::mousedown_event(GUI::MouseEvent& event)
|
||||||
GUI::TextEditor::mousedown_event(event);
|
GUI::TextEditor::mousedown_event(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Editor::drag_enter_event(GUI::DragEvent& event)
|
||||||
|
{
|
||||||
|
auto const& mime_types = event.mime_types();
|
||||||
|
if (mime_types.contains_slow("text/uri-list"))
|
||||||
|
event.accept();
|
||||||
|
}
|
||||||
|
|
||||||
void Editor::drop_event(GUI::DropEvent& event)
|
void Editor::drop_event(GUI::DropEvent& event)
|
||||||
{
|
{
|
||||||
event.accept();
|
event.accept();
|
||||||
|
|
|
@ -65,6 +65,7 @@ private:
|
||||||
virtual void paint_event(GUI::PaintEvent&) override;
|
virtual void paint_event(GUI::PaintEvent&) override;
|
||||||
virtual void mousemove_event(GUI::MouseEvent&) override;
|
virtual void mousemove_event(GUI::MouseEvent&) override;
|
||||||
virtual void mousedown_event(GUI::MouseEvent&) override;
|
virtual void mousedown_event(GUI::MouseEvent&) override;
|
||||||
|
virtual void drag_enter_event(GUI::DragEvent&) override;
|
||||||
virtual void drop_event(GUI::DropEvent&) override;
|
virtual void drop_event(GUI::DropEvent&) override;
|
||||||
virtual void enter_event(Core::Event&) override;
|
virtual void enter_event(Core::Event&) override;
|
||||||
virtual void leave_event(Core::Event&) override;
|
virtual void leave_event(Core::Event&) override;
|
||||||
|
|
|
@ -397,6 +397,13 @@ void MainWidget::update_editor_actions(ScriptEditor* editor)
|
||||||
m_redo_action->set_enabled(editor->redo_action().is_enabled());
|
m_redo_action->set_enabled(editor->redo_action().is_enabled());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWidget::drag_enter_event(GUI::DragEvent& event)
|
||||||
|
{
|
||||||
|
auto const& mime_types = event.mime_types();
|
||||||
|
if (mime_types.contains_slow("text/uri-list"))
|
||||||
|
event.accept();
|
||||||
|
}
|
||||||
|
|
||||||
void MainWidget::drop_event(GUI::DropEvent& drop_event)
|
void MainWidget::drop_event(GUI::DropEvent& drop_event)
|
||||||
{
|
{
|
||||||
drop_event.accept();
|
drop_event.accept();
|
||||||
|
|
|
@ -36,6 +36,7 @@ private:
|
||||||
void update_statusbar(ScriptEditor*);
|
void update_statusbar(ScriptEditor*);
|
||||||
void update_editor_actions(ScriptEditor*);
|
void update_editor_actions(ScriptEditor*);
|
||||||
|
|
||||||
|
virtual void drag_enter_event(GUI::DragEvent&) override;
|
||||||
virtual void drop_event(GUI::DropEvent&) override;
|
virtual void drop_event(GUI::DropEvent&) override;
|
||||||
|
|
||||||
RefPtr<GUI::Action> m_new_action;
|
RefPtr<GUI::Action> m_new_action;
|
||||||
|
|
|
@ -201,6 +201,13 @@ void QuickLaunchWidget::config_string_did_change(String const& domain, String co
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QuickLaunchWidget::drag_enter_event(GUI::DragEvent& event)
|
||||||
|
{
|
||||||
|
auto const& mime_types = event.mime_types();
|
||||||
|
if (mime_types.contains_slow("text/uri-list"))
|
||||||
|
event.accept();
|
||||||
|
}
|
||||||
|
|
||||||
void QuickLaunchWidget::drop_event(GUI::DropEvent& event)
|
void QuickLaunchWidget::drop_event(GUI::DropEvent& event)
|
||||||
{
|
{
|
||||||
event.accept();
|
event.accept();
|
||||||
|
|
|
@ -83,6 +83,7 @@ public:
|
||||||
virtual void config_key_was_removed(String const&, String const&, String const&) override;
|
virtual void config_key_was_removed(String const&, String const&, String const&) override;
|
||||||
virtual void config_string_did_change(String const&, String const&, String const&, String const&) override;
|
virtual void config_string_did_change(String const&, String const&, String const&, String const&) override;
|
||||||
|
|
||||||
|
virtual void drag_enter_event(GUI::DragEvent&) override;
|
||||||
virtual void drop_event(GUI::DropEvent&) override;
|
virtual void drop_event(GUI::DropEvent&) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue