Index: Source/core/editing/EditingStyle.cpp |
diff --git a/Source/core/editing/EditingStyle.cpp b/Source/core/editing/EditingStyle.cpp |
index 41ce59d22ea33931048d8e7e57ce9137aca1113a..674e9071bbff59844c78fe109caebe139ece9088 100644 |
--- a/Source/core/editing/EditingStyle.cpp |
+++ b/Source/core/editing/EditingStyle.cpp |
@@ -34,11 +34,13 @@ |
#include "core/css/CSSRuleList.h" |
#include "core/css/CSSStyleRule.h" |
#include "core/css/CSSValueList.h" |
+#include "core/css/CSSValuePool.h" |
#include "core/css/FontSize.h" |
#include "core/css/RuntimeCSSEnabled.h" |
#include "core/css/StylePropertySet.h" |
#include "core/css/StyleRule.h" |
#include "core/css/resolver/StyleResolver.h" |
+#include "core/dom/ClientRect.h" |
#include "core/dom/Element.h" |
#include "core/dom/Node.h" |
#include "core/dom/NodeTraversal.h" |
@@ -1232,6 +1234,17 @@ void EditingStyle::removePropertiesInElementDefaultStyle(Element* element) |
removePropertiesInStyle(m_mutableStyle.get(), defaultStyle.get()); |
} |
+void EditingStyle::addAbsolutePositioningFromElement(Element* element) |
+{ |
+ RefPtr<ClientRect> rect = element->getBoundingClientRect(); |
+ |
+ m_mutableStyle->setProperty(CSSPropertyPosition, CSSValueAbsolute); |
+ m_mutableStyle->setProperty(CSSPropertyWidth, cssValuePool().createValue(rect->right() - rect->left(), CSSPrimitiveValue::CSS_PX)); |
+ m_mutableStyle->setProperty(CSSPropertyHeight, cssValuePool().createValue(rect->bottom() - rect->top(), CSSPrimitiveValue::CSS_PX)); |
esprehn
2014/05/29 21:32:10
What about padding/margins? This approach doesn't
|
+ m_mutableStyle->setProperty(CSSPropertyLeft, cssValuePool().createValue(rect->left(), CSSPrimitiveValue::CSS_PX)); |
+ m_mutableStyle->setProperty(CSSPropertyTop, cssValuePool().createValue(rect->top(), CSSPrimitiveValue::CSS_PX)); |
+} |
+ |
void EditingStyle::forceInline() |
{ |
if (!m_mutableStyle) |