| Index: Source/web/InspectorOverlayImpl.cpp
|
| diff --git a/Source/web/InspectorOverlayImpl.cpp b/Source/web/InspectorOverlayImpl.cpp
|
| index 99930066f90f2967fd4e97494baacc9a68b5e9dc..553f6a3cc2ae2f4332b4cb6323f071d1eeda4c72 100644
|
| --- a/Source/web/InspectorOverlayImpl.cpp
|
| +++ b/Source/web/InspectorOverlayImpl.cpp
|
| @@ -182,6 +182,7 @@ InspectorOverlayImpl::InspectorOverlayImpl(WebViewImpl* webViewImpl)
|
| , m_inLayout(false)
|
| , m_needsUpdate(false)
|
| , m_inspectMode(InspectorDOMAgent::NotSearching)
|
| + , m_searchingInLayoutEditor(true)
|
| {
|
| }
|
|
|
| @@ -205,7 +206,7 @@ DEFINE_TRACE(InspectorOverlayImpl)
|
|
|
| void InspectorOverlayImpl::init(InspectorCSSAgent* cssAgent, InspectorDebuggerAgent* debuggerAgent, InspectorDOMAgent* domAgent)
|
| {
|
| - m_layoutEditor = LayoutEditor::create(cssAgent);
|
| + m_layoutEditor = LayoutEditor::create(cssAgent, domAgent);
|
| m_debuggerAgent = debuggerAgent;
|
| m_domAgent = domAgent;
|
| m_overlayHost->setListener(this);
|
| @@ -291,12 +292,14 @@ void InspectorOverlayImpl::setPausedInDebuggerMessage(const String* message)
|
|
|
| void InspectorOverlayImpl::hideHighlight()
|
| {
|
| - if (m_layoutEditor)
|
| - m_layoutEditor->setNode(nullptr);
|
| m_highlightNode.clear();
|
| m_eventTargetNode.clear();
|
| m_highlightQuad.clear();
|
| - update();
|
| +
|
| + if (m_inspectMode == InspectorDOMAgent::ShowLayoutEditor && !m_searchingInLayoutEditor && m_layoutEditor->node() && m_inspectModeHighlightConfig)
|
| + highlightNode(m_layoutEditor->node(), *m_inspectModeHighlightConfig, false);
|
| + else
|
| + update();
|
| }
|
|
|
| void InspectorOverlayImpl::highlightNode(Node* node, const InspectorHighlightConfig& highlightConfig, bool omitTooltip)
|
| @@ -308,8 +311,6 @@ void InspectorOverlayImpl::highlightNode(Node* node, Node* eventTarget, const In
|
| {
|
| m_nodeHighlightConfig = highlightConfig;
|
| m_highlightNode = node;
|
| - if (m_layoutEditor && highlightConfig.showLayoutEditor)
|
| - m_layoutEditor->setNode(node);
|
| m_eventTargetNode = eventTarget;
|
| m_omitTooltip = omitTooltip;
|
| update();
|
| @@ -323,6 +324,7 @@ void InspectorOverlayImpl::setInspectMode(InspectorDOMAgent::SearchMode searchMo
|
| if (searchMode != InspectorDOMAgent::NotSearching) {
|
| m_inspectModeHighlightConfig = highlightConfig;
|
| } else {
|
| + m_searchingInLayoutEditor = true;
|
| m_hoveredNodeForInspectMode.clear();
|
| hideHighlight();
|
| }
|
| @@ -392,7 +394,8 @@ void InspectorOverlayImpl::drawNodeHighlight()
|
|
|
| RefPtr<JSONObject> highlightJSON = highlight.asJSONObject();
|
| evaluateInOverlay("drawHighlight", highlightJSON.release());
|
| - if (m_layoutEditor && m_nodeHighlightConfig.showLayoutEditor) {
|
| + if (m_highlightNode == m_layoutEditor->node() && m_inspectMode == InspectorDOMAgent::ShowLayoutEditor) {
|
| + ASSERT(!m_searchingInLayoutEditor);
|
| RefPtr<JSONObject> layoutEditorInfo = m_layoutEditor->buildJSONInfo();
|
| if (layoutEditorInfo)
|
| evaluateInOverlay("showLayoutEditor", layoutEditorInfo.release());
|
| @@ -570,6 +573,20 @@ void InspectorOverlayImpl::overlayEndedPropertyChange()
|
| m_layoutEditor->overlayEndedPropertyChange();
|
| }
|
|
|
| +void InspectorOverlayImpl::overlayClearSelection(bool commitChanges)
|
| +{
|
| + if (m_inspectMode != InspectorDOMAgent::ShowLayoutEditor)
|
| + return;
|
| +
|
| + m_searchingInLayoutEditor = true;
|
| + if (m_layoutEditor->node() && m_inspectModeHighlightConfig) {
|
| + m_hoveredNodeForInspectMode = m_layoutEditor->node();
|
| + highlightNode(m_layoutEditor->node(), *m_inspectModeHighlightConfig, false);
|
| + }
|
| +
|
| + m_layoutEditor->clearSelection(commitChanges);
|
| +}
|
| +
|
| void InspectorOverlayImpl::profilingStarted()
|
| {
|
| if (!m_suspendCount++)
|
| @@ -598,7 +615,7 @@ void InspectorOverlayImpl::setShowViewportSizeOnResize(bool show, bool showGrid)
|
|
|
| bool InspectorOverlayImpl::handleMouseMove(const PlatformMouseEvent& event)
|
| {
|
| - if (m_inspectMode == InspectorDOMAgent::NotSearching)
|
| + if (!shouldSearchForNode())
|
| return false;
|
|
|
| LocalFrame* frame = m_webViewImpl->mainFrameImpl()->frame();
|
| @@ -633,12 +650,11 @@ bool InspectorOverlayImpl::handleMouseMove(const PlatformMouseEvent& event)
|
|
|
| bool InspectorOverlayImpl::handleMousePress()
|
| {
|
| - if (m_inspectMode == InspectorDOMAgent::NotSearching)
|
| + if (!shouldSearchForNode())
|
| return false;
|
|
|
| if (m_hoveredNodeForInspectMode) {
|
| - if (m_domAgent)
|
| - m_domAgent->inspect(m_hoveredNodeForInspectMode.get());
|
| + inspect(m_hoveredNodeForInspectMode.get());
|
| m_hoveredNodeForInspectMode.clear();
|
| return true;
|
| }
|
| @@ -647,13 +663,12 @@ bool InspectorOverlayImpl::handleMousePress()
|
|
|
| bool InspectorOverlayImpl::handleGestureEvent(const PlatformGestureEvent& event)
|
| {
|
| - if (m_inspectMode == InspectorDOMAgent::NotSearching || event.type() != PlatformEvent::GestureTap)
|
| + if (!shouldSearchForNode() || event.type() != PlatformEvent::GestureTap)
|
| return false;
|
| Node* node = hoveredNodeForEvent(m_webViewImpl->mainFrameImpl()->frame(), event, false);
|
| if (node && m_inspectModeHighlightConfig) {
|
| highlightNode(node, *m_inspectModeHighlightConfig, false);
|
| - if (m_domAgent)
|
| - m_domAgent->inspect(node);
|
| + inspect(node);
|
| return true;
|
| }
|
| return false;
|
| @@ -661,16 +676,33 @@ bool InspectorOverlayImpl::handleGestureEvent(const PlatformGestureEvent& event)
|
|
|
| bool InspectorOverlayImpl::handleTouchEvent(const PlatformTouchEvent& event)
|
| {
|
| - if (m_inspectMode == InspectorDOMAgent::NotSearching)
|
| + if (!shouldSearchForNode())
|
| return false;
|
| Node* node = hoveredNodeForEvent(m_webViewImpl->mainFrameImpl()->frame(), event, false);
|
| if (node && m_inspectModeHighlightConfig) {
|
| highlightNode(node, *m_inspectModeHighlightConfig, false);
|
| - if (m_domAgent)
|
| - m_domAgent->inspect(node);
|
| + inspect(node);
|
| return true;
|
| }
|
| return false;
|
| }
|
|
|
| +
|
| +bool InspectorOverlayImpl::shouldSearchForNode()
|
| +{
|
| + return !(m_inspectMode == InspectorDOMAgent::NotSearching || (m_inspectMode == InspectorDOMAgent::ShowLayoutEditor && !m_searchingInLayoutEditor));
|
| +}
|
| +
|
| +void InspectorOverlayImpl::inspect(Node* node)
|
| +{
|
| + if (m_domAgent)
|
| + m_domAgent->inspect(node);
|
| +
|
| + if (m_layoutEditor && m_inspectMode == InspectorDOMAgent::ShowLayoutEditor && m_searchingInLayoutEditor) {
|
| + m_searchingInLayoutEditor = false;
|
| + m_layoutEditor->selectNode(node);
|
| + highlightNode(node, *m_inspectModeHighlightConfig, false);
|
| + }
|
| +}
|
| +
|
| } // namespace blink
|
|
|