소스 검색

Browser: Move the opening of a download window to its own function

This should probably grow into a proper download manager at some point,
but for now let's at least move it out of the context menu callback.
Andreas Kling 4 년 전
부모
커밋
d00bfd0eaa
1개의 변경된 파일16개의 추가작업 그리고 11개의 파일을 삭제
  1. 16 11
      Applications/Browser/Tab.cpp

+ 16 - 11
Applications/Browser/Tab.cpp

@@ -74,6 +74,17 @@ URL url_from_user_input(const String& input)
     return URL(builder.build());
     return URL(builder.build());
 }
 }
 
 
+static void start_download(const URL& url)
+{
+    auto window = GUI::Window::construct();
+    window->resize(300, 150);
+    window->set_title(String::format("0%% of %s", url.basename().characters()));
+    window->set_resizable(false);
+    window->set_main_widget<DownloadWidget>(url);
+    window->show();
+    (void)window.leak_ref();
+}
+
 Tab::Tab(Type type)
 Tab::Tab(Type type)
     : m_type(type)
     : m_type(type)
 {
 {
@@ -154,27 +165,21 @@ Tab::Tab(Type type)
     };
     };
 
 
     m_link_context_menu = GUI::Menu::construct();
     m_link_context_menu = GUI::Menu::construct();
-    auto default_action = GUI::Action::create("Open", [this](auto&) {
+    auto link_default_action = GUI::Action::create("Open", [this](auto&) {
         hooks().on_link_click(m_link_context_menu_url, "", 0);
         hooks().on_link_click(m_link_context_menu_url, "", 0);
     });
     });
-    m_link_context_menu->add_action(default_action);
-    m_link_context_menu_default_action = default_action;
+    m_link_context_menu->add_action(link_default_action);
+    m_link_context_menu_default_action = link_default_action;
     m_link_context_menu->add_action(GUI::Action::create("Open in new tab", [this](auto&) {
     m_link_context_menu->add_action(GUI::Action::create("Open in new tab", [this](auto&) {
         hooks().on_link_click(m_link_context_menu_url, "_blank", 0);
         hooks().on_link_click(m_link_context_menu_url, "_blank", 0);
     }));
     }));
+    m_link_context_menu->add_separator();
     m_link_context_menu->add_action(GUI::Action::create("Copy link", [this](auto&) {
     m_link_context_menu->add_action(GUI::Action::create("Copy link", [this](auto&) {
         GUI::Clipboard::the().set_plain_text(m_link_context_menu_url.to_string());
         GUI::Clipboard::the().set_plain_text(m_link_context_menu_url.to_string());
     }));
     }));
     m_link_context_menu->add_separator();
     m_link_context_menu->add_separator();
     m_link_context_menu->add_action(GUI::Action::create("Download", [this](auto&) {
     m_link_context_menu->add_action(GUI::Action::create("Download", [this](auto&) {
-        auto window = GUI::Window::construct();
-        window->resize(300, 150);
-        auto url = m_link_context_menu_url;
-        window->set_title(String::format("0%% of %s", url.basename().characters()));
-        window->set_resizable(false);
-        window->set_main_widget<DownloadWidget>(url);
-        window->show();
-        (void)window.leak_ref();
+        start_download(m_link_context_menu_url);
     }));
     }));
 
 
     hooks().on_link_context_menu_request = [this](auto& url, auto& screen_position) {
     hooks().on_link_context_menu_request = [this](auto& url, auto& screen_position) {