Parcourir la source

Browser: Add dedicated "view source" window

Basically a window containing a read-only GUI::TextEditor containing the
source code of the current webpage. No temporary file needed :^)

Fixes #1103.
Linus Groh il y a 5 ans
Parent
commit
2c14714ee0
1 fichiers modifiés avec 10 ajouts et 16 suppressions
  1. 10 16
      Applications/Browser/Tab.cpp

+ 10 - 16
Applications/Browser/Tab.cpp

@@ -218,23 +218,17 @@ Tab::Tab()
     auto& inspect_menu = m_menubar->add_menu("Inspect");
     inspect_menu.add_action(GUI::Action::create(
         "View source", { Mod_Ctrl, Key_U }, [this](auto&) {
-            String filename_to_open;
-            char tmp_filename[] = "/tmp/view-source.XXXXXX";
             ASSERT(m_html_widget->document());
-            if (m_html_widget->document()->url().protocol() == "file") {
-                filename_to_open = m_html_widget->document()->url().path();
-            } else {
-                int fd = mkstemp(tmp_filename);
-                ASSERT(fd >= 0);
-                auto source = m_html_widget->document()->source();
-                write(fd, source.characters(), source.length());
-                close(fd);
-                filename_to_open = tmp_filename;
-            }
-            if (fork() == 0) {
-                execl("/bin/TextEditor", "TextEditor", filename_to_open.characters(), nullptr);
-                ASSERT_NOT_REACHED();
-            }
+            auto url = m_html_widget->document()->url().to_string();
+            auto source = m_html_widget->document()->source();
+            auto window = GUI::Window::construct();
+            auto& editor = window->set_main_widget<GUI::TextEditor>();
+            editor.set_text(source);
+            editor.set_readonly(true);
+            window->set_rect(150, 150, 640, 480);
+            window->set_title(url);
+            window->show();
+            (void)window.leak_ref();
         },
         this));
     inspect_menu.add_action(GUI::Action::create(