1
0
Fork 0
mirror of https://github.com/LadybirdBrowser/ladybird.git synced 2025-06-10 18:10:56 +09:00

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.
This commit is contained in:
Linus Groh 2020-05-06 16:01:04 +01:00 committed by Andreas Kling
parent eabb7b563a
commit 2c14714ee0
Notes: sideshowbarker 2024-07-19 06:56:00 +09:00

View file

@ -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(