diff --git a/Ladybird/Qt/Application.cpp b/Ladybird/Qt/Application.cpp index da72c69e479..d774ef0d422 100644 --- a/Ladybird/Qt/Application.cpp +++ b/Ladybird/Qt/Application.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include namespace Ladybird { @@ -126,4 +127,13 @@ BrowserWindow& Application::new_window(Vector const& initial_urls, Web return *window; } +Optional Application::ask_user_for_download_folder() const +{ + auto path = QFileDialog::getExistingDirectory(nullptr, "Select download directory", QDir::homePath()); + if (path.isNull()) + return {}; + + return ak_byte_string_from_qstring(path); +} + } diff --git a/Ladybird/Qt/Application.h b/Ladybird/Qt/Application.h index 51b807169e6..b5058c46801 100644 --- a/Ladybird/Qt/Application.h +++ b/Ladybird/Qt/Application.h @@ -46,6 +46,8 @@ private: virtual void create_platform_arguments(Core::ArgsParser&) override; virtual void create_platform_options(WebView::ChromeOptions&, WebView::WebContentOptions&) override; + virtual Optional ask_user_for_download_folder() const override; + bool m_enable_qt_networking { false }; TaskManagerWindow* m_task_manager_window { nullptr }; diff --git a/Ladybird/Qt/Tab.cpp b/Ladybird/Qt/Tab.cpp index fc608d4ad3d..36d3ca12eef 100644 --- a/Ladybird/Qt/Tab.cpp +++ b/Ladybird/Qt/Tab.cpp @@ -481,6 +481,9 @@ Tab::Tab(BrowserWindow* window, RefPtr parent_client, } }) .when_rejected([this](auto const& error) { + if (error.is_errno() && error.code() == ECANCELED) + return; + auto error_message = MUST(String::formatted("{}", error)); QMessageBox::warning(this, "Ladybird", qstring_from_ak_string(error_message)); });