1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-14 09:24:57 +00:00

Ladybird/Qt: Port the Inspector to the WebView InspectorClient

This commit is contained in:
Timothy Flynn 2023-11-23 20:04:54 -05:00 committed by Andreas Kling
parent 39e32e80cd
commit 52b5bcdb6d
3 changed files with 72 additions and 190 deletions

View file

@ -138,17 +138,15 @@ Tab::Tab(BrowserWindow* window, StringView webdriver_content_ipc_path, WebView::
m_window->reload_action().setEnabled(!m_history.is_empty());
if (m_inspector_widget)
m_inspector_widget->clear_dom_json();
m_inspector_widget->reset();
if (m_console_widget)
m_console_widget->reset();
};
view().on_load_finish = [this](auto&) {
if (m_inspector_widget != nullptr && m_inspector_widget->isVisible()) {
view().inspect_dom_tree();
view().inspect_accessibility_tree();
}
if (m_inspector_widget != nullptr && m_inspector_widget->isVisible())
m_inspector_widget->inspect();
};
QObject::connect(m_location_edit, &QLineEdit::returnPressed, this, &Tab::location_edit_return_pressed);
@ -280,16 +278,6 @@ Tab::Tab(BrowserWindow* window, StringView webdriver_content_ipc_path, WebView::
return Gfx::IntRect { m_window->x(), m_window->y(), m_window->width(), m_window->height() };
};
view().on_received_dom_tree = [this](auto& dom_tree) {
if (m_inspector_widget)
m_inspector_widget->set_dom_json(dom_tree);
};
view().on_received_accessibility_tree = [this](auto& accessibility_tree) {
if (m_inspector_widget)
m_inspector_widget->set_accessibility_json(accessibility_tree);
};
view().on_insert_clipboard_entry = [](auto const& data, auto const&, auto const& mime_type) {
QByteArray qdata { data.bytes_as_string_view().characters_without_null_termination(), static_cast<qsizetype>(data.bytes_as_string_view().length()) };
@ -705,34 +693,17 @@ void Tab::recreate_toolbar_icons()
void Tab::show_inspector_window(InspectorTarget inspector_target)
{
bool inspector_previously_loaded = m_inspector_widget != nullptr;
if (!m_inspector_widget) {
m_inspector_widget = new Ladybird::InspectorWidget;
m_inspector_widget->setWindowTitle("Inspector");
m_inspector_widget->resize(640, 480);
m_inspector_widget->on_close = [this] {
view().clear_inspected_dom_node();
};
m_inspector_widget->on_dom_node_inspected = [&](auto id, auto pseudo_element) {
return view().inspect_dom_node(id, pseudo_element);
};
}
if (!inspector_previously_loaded || !m_inspector_widget->dom_loaded()) {
view().inspect_dom_tree();
view().inspect_accessibility_tree();
}
if (!m_inspector_widget)
m_inspector_widget = new Ladybird::InspectorWidget(view());
m_inspector_widget->show();
m_inspector_widget->activateWindow();
m_inspector_widget->raise();
if (inspector_target == InspectorTarget::HoveredElement) {
auto hovered_node = view().get_hovered_node_id();
m_inspector_widget->set_selection({ hovered_node });
} else {
if (inspector_target == InspectorTarget::HoveredElement)
m_inspector_widget->select_hovered_node();
else
m_inspector_widget->select_default_node();
}
}
void Tab::show_console_window()