Chromium Code Reviews| Index: Source/web/InspectorOverlayImpl.cpp |
| diff --git a/Source/web/InspectorOverlayImpl.cpp b/Source/web/InspectorOverlayImpl.cpp |
| index 99930066f90f2967fd4e97494baacc9a68b5e9dc..75e194389875c71c52ffc274ee8f18e90eb19ca9 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_layoutEditorEnabled(false) |
| { |
| } |
| @@ -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_layoutEditorEnabled && 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_layoutEditorEnabled = false; |
| m_hoveredNodeForInspectMode.clear(); |
| hideHighlight(); |
| } |
| @@ -392,7 +394,7 @@ 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 && m_layoutEditorEnabled) { |
|
dgozman
2015/09/02 01:17:22
Let's instead ASSERT(m_layoutEditorEnabled).
sergeyv
2015/09/02 01:49:16
Done.
|
| RefPtr<JSONObject> layoutEditorInfo = m_layoutEditor->buildJSONInfo(); |
| if (layoutEditorInfo) |
| evaluateInOverlay("showLayoutEditor", layoutEditorInfo.release()); |
| @@ -570,6 +572,20 @@ void InspectorOverlayImpl::overlayEndedPropertyChange() |
| m_layoutEditor->overlayEndedPropertyChange(); |
| } |
| +void InspectorOverlayImpl::clearSelection(bool commitChanges) |
| +{ |
| + if (m_inspectMode != InspectorDOMAgent::ShowLayoutEditor) |
| + return; |
| + |
| + m_layoutEditorEnabled = false; |
| + if (m_layoutEditor->node() && m_inspectModeHighlightConfig) { |
| + m_hoveredNodeForInspectMode = m_layoutEditor->node(); |
| + highlightNode(m_layoutEditor->node(), *m_inspectModeHighlightConfig, false); |
| + } |
| + |
| + m_layoutEditor->clearSelection(commitChanges); |
|
dgozman
2015/09/02 01:17:22
Let's rename setNode to selectNode.
sergeyv
2015/09/02 01:49:16
Done.
|
| +} |
| + |
| void InspectorOverlayImpl::profilingStarted() |
| { |
| if (!m_suspendCount++) |
| @@ -598,7 +614,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 +649,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 +662,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 +675,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_layoutEditorEnabled)); |
| +} |
| + |
| +void InspectorOverlayImpl::inspect(Node* node) |
| +{ |
| + if (m_domAgent) |
| + m_domAgent->inspect(node); |
| + |
| + if (m_layoutEditor && m_inspectMode == InspectorDOMAgent::ShowLayoutEditor && !m_layoutEditorEnabled) { |
| + m_layoutEditorEnabled = true; |
| + m_layoutEditor->setNode(node); |
| + highlightNode(node, *m_inspectModeHighlightConfig, false); |
| + } |
| +} |
| + |
| } // namespace blink |