From bf2dad5d38b7fe1abd3fde23c162494ff1cde0a9 Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Wed, 28 Aug 2024 15:45:55 -0400 Subject: [PATCH] UI/AppKit: Implement download directory selection --- Ladybird/AppKit/Application/Application.mm | 16 ++++++++++++++++ Ladybird/AppKit/UI/LadybirdWebView.mm | 3 +++ 2 files changed, 19 insertions(+) diff --git a/Ladybird/AppKit/Application/Application.mm b/Ladybird/AppKit/Application/Application.mm index 92435b37a77..2473f3af943 100644 --- a/Ladybird/AppKit/Application/Application.mm +++ b/Ladybird/AppKit/Application/Application.mm @@ -13,6 +13,7 @@ #include #include #include +#include #import @@ -24,6 +25,21 @@ namespace Ladybird { class ApplicationBridge : public WebView::Application { WEB_VIEW_APPLICATION(ApplicationBridge) + +private: + virtual Optional ask_user_for_download_folder() const override + { + auto* panel = [NSOpenPanel openPanel]; + [panel setAllowsMultipleSelection:NO]; + [panel setCanChooseDirectories:YES]; + [panel setCanChooseFiles:NO]; + [panel setMessage:@"Select download directory"]; + + if ([panel runModal] != NSModalResponseOK) + return {}; + + return Ladybird::ns_string_to_byte_string([[panel URL] path]); + } }; ApplicationBridge::ApplicationBridge(Badge, Main::Arguments&) diff --git a/Ladybird/AppKit/UI/LadybirdWebView.mm b/Ladybird/AppKit/UI/LadybirdWebView.mm index 2f6fccdae7d..8b4ce8fc0a4 100644 --- a/Ladybird/AppKit/UI/LadybirdWebView.mm +++ b/Ladybird/AppKit/UI/LadybirdWebView.mm @@ -1201,6 +1201,9 @@ static void copy_data_to_clipboard(StringView data, NSPasteboardType pasteboard_ }]; }) .when_rejected([self](auto const& error) { + if (error.is_errno() && error.code() == ECANCELED) + return; + auto error_message = MUST(String::formatted("{}", error)); auto* dialog = [[NSAlert alloc] init];