소스 검색

LibWebView: Generalize the generated Inspector for another tab container

The Inspector will have a split view, where the top view is that of the
exisiting DOM and accessibility trees, and the bottom view is that of
the currently inspected node's style properties. This patch generalizes
some of the generated code to support having these 2 views.
Timothy Flynn 1 년 전
부모
커밋
6fc189ea4a
1개의 변경된 파일25개의 추가작업 그리고 23개의 파일을 삭제
  1. 25 23
      Userland/Libraries/LibWebView/InspectorClient.cpp

+ 25 - 23
Userland/Libraries/LibWebView/InspectorClient.cpp

@@ -139,11 +139,14 @@ void InspectorClient::maybe_load_inspector()
 
     builder.append(R"~~~(
         body {
+            font-family: system-ui, sans-serif;
+            font-size: 10pt;
+
             margin: 0;
         }
 
         .tab-controls-container {
-            position: fixed;
+            position: absolute;
             width: 100%;
             top: 0;
 
@@ -164,7 +167,6 @@ void InspectorClient::maybe_load_inspector()
         .tab-controls button {
             font-size: 12px;
             font-weight: 600;
-            font-family: system-ui, sans-serif;
 
             float: left;
             border: none;
@@ -182,16 +184,14 @@ void InspectorClient::maybe_load_inspector()
             border-radius: 0 0.5rem 0.5rem 0;
         }
 
-        .tab-content-container {
-            margin-top: 30px;
-        }
-
         .tab-content {
+            height: 100%;
+
             display: none;
             border-radius: 0.5rem;
 
             margin-top: 30px;
-            padding: 6px 12px 6px 12px;
+            padding: 8px;
         }
 
         @media (prefers-color-scheme: dark) {
@@ -274,38 +274,36 @@ void InspectorClient::maybe_load_inspector()
 <body>
     <div class="tab-controls-container">
         <div class="tab-controls">
-            <button id="dom-tree-button" onclick="selectTab(this, 'dom-tree')">DOM Tree</button>
-            <button id="accessibility-tree-button" onclick="selectTab(this, 'accessibility-tree')">Accessibility Tree</button>
+            <button id="dom-tree-button" onclick="selectTopTab(this, 'dom-tree')">DOM Tree</button>
+            <button id="accessibility-tree-button" onclick="selectTopTab(this, 'accessibility-tree')">Accessibility Tree</button>
         </div>
     </div>
 
-    <div class="tab-content-container">
-        <div id="dom-tree" class="tab-content html">
+    <div id="dom-tree" class="tab-content html">
 )~~~"sv);
 
     generate_dom_tree(builder);
 
     builder.append(R"~~~(
-        </div>
-        <div id="accessibility-tree" class="tab-content">
+    </div>
+    <div id="accessibility-tree" class="tab-content">
 )~~~"sv);
 
     generate_accessibility_tree(builder);
 
     builder.append(R"~~~(
-        </div>
     </div>
 
     <script type="text/javascript">
-        let selectedTab = null;
-        let selectedTabButton = null;
+        let selectedTopTab = null;
+        let selectedTopTabButton = null;
         let selectedDOMNode = null;
 
-        const selectTab = (tabButton, tabID) => {
+        const selectTab = (tabButton, tabID, selectedTab, selectedTabButton) => {
             let tab = document.getElementById(tabID);
 
             if (selectedTab === tab) {
-                return;
+                return selectedTab;
             }
             if (selectedTab !== null) {
                 selectedTab.style.display = "none";
@@ -313,14 +311,18 @@ void InspectorClient::maybe_load_inspector()
             }
 
             tab.style.display = "block";
-            selectedTab = tab;
-
             tabButton.classList.add("active");
-            selectedTabButton = tabButton;
+
+            return tab;
+        };
+
+        const selectTopTab = (tabButton, tabID) => {
+            selectedTopTab = selectTab(tabButton, tabID, selectedTopTab, selectedTopTabButton);
+            selectedTopTabButton = tabButton;
         };
 
-        let initialTabButton = document.getElementById("dom-tree-button");
-        selectTab(initialTabButton, "dom-tree");
+        let initialTopTabButton = document.getElementById("dom-tree-button");
+        selectTopTab(initialTopTabButton, "dom-tree");
 
         const scrollToElement = (element) => {
             // Include an offset to prevent the element being placed behind the fixed `tab-controls` header.