/* * Copyright (c) 2018-2020, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #include "InspectorWidget.h" #include #include #include #include #include #include #include #include #include #include namespace Browser { void InspectorWidget::set_inspected_node(Web::DOM::Node* node) { m_document->set_inspected_node(node); if (node && node->is_element()) { auto& element = downcast(*node); if (element.specified_css_values()) { m_style_table_view->set_model(Web::StylePropertiesModel::create(*element.specified_css_values())); m_computed_style_table_view->set_model(Web::StylePropertiesModel::create(*element.computed_style())); } } else { m_style_table_view->set_model(nullptr); m_computed_style_table_view->set_model(nullptr); } } InspectorWidget::InspectorWidget() { set_layout(); auto& splitter = add(); auto& top_tab_widget = splitter.add(); m_dom_tree_view = top_tab_widget.add_tab("DOM"); m_dom_tree_view->on_selection_change = [this] { const auto& index = m_dom_tree_view->selection().first(); auto* node = static_cast(index.internal_data()); set_inspected_node(node); }; m_layout_tree_view = top_tab_widget.add_tab("Layout"); m_layout_tree_view->on_selection_change = [this] { const auto& index = m_layout_tree_view->selection().first(); auto* node = static_cast(index.internal_data()); set_inspected_node(node->dom_node()); }; auto& bottom_tab_widget = splitter.add(); m_style_table_view = bottom_tab_widget.add_tab("Styles"); m_computed_style_table_view = bottom_tab_widget.add_tab("Computed"); } InspectorWidget::~InspectorWidget() { } void InspectorWidget::set_document(Web::DOM::Document* document) { if (m_document == document) return; m_document = document; m_dom_tree_view->set_model(Web::DOMTreeModel::create(*document)); m_layout_tree_view->set_model(Web::LayoutTreeModel::create(*document)); } }