Index: Source/core/inspector/LayoutEditor.cpp |
diff --git a/Source/core/inspector/LayoutEditor.cpp b/Source/core/inspector/LayoutEditor.cpp |
index 180fb21b5bba6efd69f7af6df1471f7b08fc39d4..3c19be6e4c02482a4194e154404fb641c87be6e1 100644 |
--- a/Source/core/inspector/LayoutEditor.cpp |
+++ b/Source/core/inspector/LayoutEditor.cpp |
@@ -9,6 +9,7 @@ |
#include "core/dom/NodeComputedStyle.h" |
#include "core/frame/FrameView.h" |
#include "core/inspector/InspectorCSSAgent.h" |
+#include "core/inspector/InspectorDOMAgent.h" |
#include "core/inspector/InspectorHighlight.h" |
#include "core/layout/LayoutBox.h" |
#include "core/layout/LayoutInline.h" |
@@ -140,11 +141,13 @@ float toValidValue(CSSPropertyID propertyId, float newValue) |
} |
} // namespace |
-LayoutEditor::LayoutEditor(InspectorCSSAgent* cssAgent) |
+LayoutEditor::LayoutEditor(InspectorCSSAgent* cssAgent, InspectorDOMAgent* domAgent) |
: m_element(nullptr) |
, m_cssAgent(cssAgent) |
+ , m_domAgent(domAgent) |
, m_changingProperty(CSSPropertyInvalid) |
, m_propertyInitialValue(0) |
+ , m_madeChanges(false) |
{ |
} |
@@ -152,13 +155,19 @@ DEFINE_TRACE(LayoutEditor) |
{ |
visitor->trace(m_element); |
visitor->trace(m_cssAgent); |
+ visitor->trace(m_domAgent); |
} |
void LayoutEditor::setNode(Node* node) |
{ |
- m_element = node && node->isElementNode() ? toElement(node) : nullptr; |
+ Element* element = node && node->isElementNode() ? toElement(node) : nullptr; |
+ if (element == m_element) |
+ return; |
+ |
+ m_element = element; |
m_changingProperty = CSSPropertyInvalid; |
m_propertyInitialValue = 0; |
+ m_madeChanges = false; |
} |
PassRefPtr<JSONObject> LayoutEditor::buildJSONInfo() const |
@@ -263,6 +272,7 @@ void LayoutEditor::overlayPropertyChanged(float cssDelta) |
String errorString; |
float newValue = toValidValue(m_changingProperty, cssDelta / m_factor + m_propertyInitialValue); |
m_cssAgent->setCSSPropertyValue(&errorString, m_element.get(), m_changingProperty, truncateZeroes(String::format("%.2f", newValue)) + CSSPrimitiveValue::unitTypeToString(m_valueUnitType)); |
+ m_madeChanges = true; |
} |
} |
@@ -274,4 +284,16 @@ void LayoutEditor::overlayEndedPropertyChange() |
m_valueUnitType = CSSPrimitiveValue::UnitType::Unknown; |
} |
+void LayoutEditor::clearSelection(bool commitChanges) |
+{ |
+ m_domAgent->resumeSearchingForNode(m_element.get()); |
+ ErrorString errorString; |
+ if (commitChanges) |
+ m_domAgent->markUndoableState(&errorString); |
+ else if (m_madeChanges) |
+ m_domAgent->undo(&errorString); |
+ |
+ m_madeChanges = false; |
pfeldman
2015/08/24 23:18:13
m_isDirty
sergeyv
2015/08/25 17:58:02
Done.
|
+} |
+ |
} // namespace blink |