Diff
Modified: trunk/Source/WebCore/ChangeLog (258415 => 258416)
--- trunk/Source/WebCore/ChangeLog 2020-03-13 18:52:01 UTC (rev 258415)
+++ trunk/Source/WebCore/ChangeLog 2020-03-13 18:55:54 UTC (rev 258416)
@@ -1,3 +1,64 @@
+2020-03-13 Antti Koivisto <an...@apple.com>
+
+ Remove AffectedByDrag style flag
+ https://bugs.webkit.org/show_bug.cgi?id=209054
+
+ Reviewed by Simon Fraser.
+
+ As a followup to r258321, remove the last remaining user action related AffectedBy flag.
+
+ This also cleans out a bunch of scetchy, risky code from render tree (style invalidation!).
+
+ * css/SelectorChecker.cpp:
+ (WebCore::SelectorChecker::checkOne const):
+ * dom/DataTransfer.cpp:
+ (WebCore::DataTransfer::createDragImage const):
+ * dom/Element.cpp:
+ (WebCore::Element::isUserActionElementDragged const):
+ (WebCore::Element::setBeingDragged):
+
+ Move dragged state for render tree to Element where it belongs.
+
+ (WebCore::Element::hasFlagsSetDuringStylingOfChildren const):
+ * dom/Element.h:
+ (WebCore::Element::isBeingDragged const):
+ (WebCore::Element::descendantsAffectedByPreviousSibling const):
+ (WebCore::Element::setDescendantsAffectedByPreviousSibling):
+ (WebCore::Element::childrenAffectedByDrag const): Deleted.
+ (WebCore::Element::setChildrenAffectedByDrag): Deleted.
+ * dom/Node.h:
+ * dom/UserActionElementSet.h:
+ (WebCore::UserActionElementSet::isBeingDragged):
+ (WebCore::UserActionElementSet::setBeingDragged):
+
+ Invalidate using PseudoClassChangeInvalidation that doesn't require any flags.
+
+ * platform/DragImage.cpp:
+ (WebCore::ScopedNodeDragEnabler::ScopedNodeDragEnabler):
+ (WebCore::ScopedNodeDragEnabler::~ScopedNodeDragEnabler):
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::updateDragState): Deleted.
+ * rendering/RenderBlock.h:
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::updateDragState): Deleted.
+ * rendering/RenderInline.h:
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::updateDragState): Deleted.
+ (WebCore::RenderObject::setIsDragging): Deleted.
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::RenderObjectRareData::RenderObjectRareData):
+ (WebCore::RenderObject::isDragging const): Deleted.
+ * rendering/style/RenderStyle.cpp:
+ (WebCore::RenderStyle::RenderStyle):
+ * rendering/style/RenderStyle.h:
+ (WebCore::RenderStyle::NonInheritedFlags::operator== const):
+ (WebCore::RenderStyle::affectedByDrag const): Deleted.
+ (WebCore::RenderStyle::setAffectedByDrag): Deleted.
+ * style/StyleRelations.cpp:
+ (WebCore::Style::commitRelationsToRenderStyle):
+ (WebCore::Style::commitRelations):
+ * style/StyleRelations.h:
+
2020-03-13 Andres Gonzalez <andresg...@apple.com>
[WebAccessibilityObjectWrapper renderWidgetChildren] does not need to run on main thread.
Modified: trunk/Source/WebCore/css/SelectorChecker.cpp (258415 => 258416)
--- trunk/Source/WebCore/css/SelectorChecker.cpp 2020-03-13 18:52:01 UTC (rev 258415)
+++ trunk/Source/WebCore/css/SelectorChecker.cpp 2020-03-13 18:55:54 UTC (rev 258416)
@@ -999,11 +999,7 @@
case CSSSelector::PseudoClassDirectFocus:
return matchesDirectFocusPseudoClass(element);
case CSSSelector::PseudoClassDrag:
- addStyleRelation(checkingContext, element, Style::Relation::AffectedByDrag);
-
- if (element.renderer() && element.renderer()->isDragging())
- return true;
- break;
+ return element.isBeingDragged();
case CSSSelector::PseudoClassFocus:
return matchesFocusPseudoClass(element);
case CSSSelector::PseudoClassFocusWithin:
Modified: trunk/Source/WebCore/dom/Element.cpp (258415 => 258416)
--- trunk/Source/WebCore/dom/Element.cpp 2020-03-13 18:52:01 UTC (rev 258415)
+++ trunk/Source/WebCore/dom/Element.cpp 2020-03-13 18:55:54 UTC (rev 258416)
@@ -629,6 +629,12 @@
return document().userActionElements().isHovered(*this);
}
+bool Element::isUserActionElementDragged() const
+{
+ ASSERT(isUserActionElement());
+ return document().userActionElements().isBeingDragged(*this);
+}
+
void Element::setActive(bool flag, bool pause)
{
if (flag == active())
@@ -719,6 +725,15 @@
renderer()->theme().stateChanged(*renderer(), ControlStates::HoverState);
}
+void Element::setBeingDragged(bool flag)
+{
+ if (flag == isBeingDragged())
+ return;
+
+ Style::PseudoClassChangeInvalidation styleInvalidation(*this, CSSSelector::PseudoClassDrag);
+ document().userActionElements().setBeingDragged(*this, flag);
+}
+
inline ScrollAlignment toScrollAlignmentForInlineDirection(Optional<ScrollLogicalPosition> position, WritingMode writingMode, bool isLTR)
{
switch (position.valueOr(ScrollLogicalPosition::Nearest)) {
@@ -3403,7 +3418,6 @@
{
return childrenAffectedByFirstChildRules()
|| childrenAffectedByLastChildRules()
- || childrenAffectedByDrag()
|| childrenAffectedByForwardPositionalRules()
|| descendantsAffectedByForwardPositionalRules()
|| childrenAffectedByBackwardPositionalRules()
Modified: trunk/Source/WebCore/dom/Element.h (258415 => 258416)
--- trunk/Source/WebCore/dom/Element.h 2020-03-13 18:52:01 UTC (rev 258415)
+++ trunk/Source/WebCore/dom/Element.h 2020-03-13 18:55:54 UTC (rev 258416)
@@ -315,12 +315,14 @@
bool active() const { return isUserActionElement() && isUserActionElementActive(); }
bool hovered() const { return isUserActionElement() && isUserActionElementHovered(); }
bool focused() const { return isUserActionElement() && isUserActionElementFocused(); }
+ bool isBeingDragged() const { return isUserActionElement() && isUserActionElementDragged(); }
bool hasFocusWithin() const { return getFlag(HasFocusWithin); };
- virtual void setActive(bool flag = true, bool pause = false);
- virtual void setHovered(bool flag = true);
- virtual void setFocus(bool flag);
- void setHasFocusWithin(bool flag);
+ virtual void setActive(bool = true, bool pause = false);
+ virtual void setHovered(bool = true);
+ virtual void setFocus(bool);
+ void setBeingDragged(bool);
+ void setHasFocusWithin(bool);
Optional<int> tabIndexSetExplicitly() const;
bool shouldBeIgnoredInSequentialFocusNavigation() const { return defaultTabIndex() < 0 && !supportsFocus(); }
@@ -351,7 +353,6 @@
// Methods for indicating the style is affected by dynamic updates (e.g., children changing, our position changing in our sibling list, etc.)
bool styleAffectedByEmpty() const { return hasStyleFlag(ElementStyleFlag::StyleAffectedByEmpty); }
bool descendantsAffectedByPreviousSibling() const { return getFlag(DescendantsAffectedByPreviousSiblingFlag); }
- bool childrenAffectedByDrag() const { return hasStyleFlag(ElementStyleFlag::ChildrenAffectedByDrag); }
bool childrenAffectedByFirstChildRules() const { return getFlag(ChildrenAffectedByFirstChildRulesFlag); }
bool childrenAffectedByLastChildRules() const { return getFlag(ChildrenAffectedByLastChildRulesFlag); }
bool childrenAffectedByForwardPositionalRules() const { return hasStyleFlag(ElementStyleFlag::ChildrenAffectedByForwardPositionalRules); }
@@ -366,7 +367,6 @@
void setStyleAffectedByEmpty() { setStyleFlag(ElementStyleFlag::StyleAffectedByEmpty); }
void setDescendantsAffectedByPreviousSibling() { setFlag(DescendantsAffectedByPreviousSiblingFlag); }
- void setChildrenAffectedByDrag() { setStyleFlag(ElementStyleFlag::ChildrenAffectedByDrag); }
void setChildrenAffectedByFirstChildRules() { setFlag(ChildrenAffectedByFirstChildRulesFlag); }
void setChildrenAffectedByLastChildRules() { setFlag(ChildrenAffectedByLastChildRulesFlag); }
void setChildrenAffectedByForwardPositionalRules() { setStyleFlag(ElementStyleFlag::ChildrenAffectedByForwardPositionalRules); }
@@ -642,6 +642,7 @@
bool isUserActionElementActive() const;
bool isUserActionElementFocused() const;
bool isUserActionElementHovered() const;
+ bool isUserActionElementDragged() const;
virtual void didAddUserAgentShadowRoot(ShadowRoot&) { }
Modified: trunk/Source/WebCore/dom/Node.h (258415 => 258416)
--- trunk/Source/WebCore/dom/Node.h 2020-03-13 18:52:01 UTC (rev 258415)
+++ trunk/Source/WebCore/dom/Node.h 2020-03-13 18:55:54 UTC (rev 258416)
@@ -601,17 +601,15 @@
static constexpr uint32_t s_refCountMask = ~static_cast<uint32_t>(1);
enum class ElementStyleFlag : uint8_t {
- StyleAffectedByEmpty = 1 << 0,
- ChildrenAffectedByDrag = 1 << 1,
-
+ StyleAffectedByEmpty = 1 << 0,
// Bits for dynamic child matching.
// We optimize for :first-child and :last-child. The other positional child selectors like nth-child or
// *-child-of-type, we will just give up and re-evaluate whenever children change at all.
- ChildrenAffectedByForwardPositionalRules = 1 << 2,
- DescendantsAffectedByForwardPositionalRules = 1 << 3,
- ChildrenAffectedByBackwardPositionalRules = 1 << 4,
- DescendantsAffectedByBackwardPositionalRules = 1 << 5,
- ChildrenAffectedByPropertyBasedBackwardPositionalRules = 1 << 6,
+ ChildrenAffectedByForwardPositionalRules = 1 << 1,
+ DescendantsAffectedByForwardPositionalRules = 1 << 2,
+ ChildrenAffectedByBackwardPositionalRules = 1 << 3,
+ DescendantsAffectedByBackwardPositionalRules = 1 << 4,
+ ChildrenAffectedByPropertyBasedBackwardPositionalRules = 1 << 5,
};
bool hasStyleFlag(ElementStyleFlag state) const { return m_rendererWithStyleFlags.type() & static_cast<uint8_t>(state); }
Modified: trunk/Source/WebCore/dom/UserActionElementSet.h (258415 => 258416)
--- trunk/Source/WebCore/dom/UserActionElementSet.h 2020-03-13 18:52:01 UTC (rev 258415)
+++ trunk/Source/WebCore/dom/UserActionElementSet.h 2020-03-13 18:55:54 UTC (rev 258416)
@@ -42,11 +42,13 @@
bool isFocused(const Element& element) { return hasFlag(element, Flag::IsFocused); }
bool isHovered(const Element& element) { return hasFlag(element, Flag::IsHovered); }
bool isInActiveChain(const Element& element) { return hasFlag(element, Flag::InActiveChain); }
+ bool isBeingDragged(const Element& element) { return hasFlag(element, Flag::IsBeingDragged); }
void setActive(Element& element, bool enable) { setFlags(element, enable, Flag::IsActive); }
void setFocused(Element& element, bool enable) { setFlags(element, enable, Flag::IsFocused); }
void setHovered(Element& element, bool enable) { setFlags(element, enable, Flag::IsHovered); }
void setInActiveChain(Element& element, bool enable) { setFlags(element, enable, Flag::InActiveChain); }
+ void setBeingDragged(Element& element, bool enable) { setFlags(element, enable, Flag::IsBeingDragged); }
void clearActiveAndHovered(Element& element) { clearFlags(element, { Flag::IsActive, Flag::InActiveChain, Flag::IsHovered }); }
@@ -54,10 +56,11 @@
private:
enum class Flag {
- IsActive = 1 << 0,
- InActiveChain = 1 << 1,
- IsHovered = 1 << 2,
- IsFocused = 1 << 3
+ IsActive = 1 << 0,
+ InActiveChain = 1 << 1,
+ IsHovered = 1 << 2,
+ IsFocused = 1 << 3,
+ IsBeingDragged = 1 << 4,
};
void setFlags(Element& element, bool enable, OptionSet<Flag> flags) { enable ? setFlags(element, flags) : clearFlags(element, flags); }
Modified: trunk/Source/WebCore/platform/DragImage.cpp (258415 => 258416)
--- trunk/Source/WebCore/platform/DragImage.cpp 2020-03-13 18:52:01 UTC (rev 258415)
+++ trunk/Source/WebCore/platform/DragImage.cpp 2020-03-13 18:55:54 UTC (rev 258416)
@@ -79,22 +79,20 @@
struct ScopedNodeDragEnabler {
ScopedNodeDragEnabler(Frame& frame, Node& node)
- : frame(frame)
- , node(node)
+ : element(is<Element>(node) ? &downcast<Element>(node) : nullptr)
{
- if (node.renderer())
- node.renderer()->updateDragState(true);
+ if (element)
+ element->setBeingDragged(true);
frame.document()->updateLayout();
}
~ScopedNodeDragEnabler()
{
- if (node.renderer())
- node.renderer()->updateDragState(false);
+ if (element)
+ element->setBeingDragged(false);
}
- const Frame& frame;
- const Node& node;
+ RefPtr<Element> element;
};
static DragImageRef createDragImageFromSnapshot(std::unique_ptr<ImageBuffer> snapshot, Node* node)
Modified: trunk/Source/WebCore/rendering/RenderBlock.cpp (258415 => 258416)
--- trunk/Source/WebCore/rendering/RenderBlock.cpp 2020-03-13 18:52:01 UTC (rev 258415)
+++ trunk/Source/WebCore/rendering/RenderBlock.cpp 2020-03-13 18:55:54 UTC (rev 258416)
@@ -2811,13 +2811,6 @@
return r;
}
-void RenderBlock::updateDragState(bool dragOn)
-{
- RenderBox::updateDragState(dragOn);
- if (RenderBoxModelObject* continuation = this->continuation())
- continuation->updateDragState(dragOn);
-}
-
const RenderStyle& RenderBlock::outlineStyleForRepaint() const
{
if (auto* continuation = this->continuation())
Modified: trunk/Source/WebCore/rendering/RenderBlock.h (258415 => 258416)
--- trunk/Source/WebCore/rendering/RenderBlock.h 2020-03-13 18:52:01 UTC (rev 258415)
+++ trunk/Source/WebCore/rendering/RenderBlock.h 2020-03-13 18:55:54 UTC (rev 258416)
@@ -459,8 +459,6 @@
LayoutRect rectWithOutlineForRepaint(const RenderLayerModelObject* repaintContainer, LayoutUnit outlineWidth) const final;
const RenderStyle& outlineStyleForRepaint() const final;
- void updateDragState(bool dragOn) final;
-
LayoutRect selectionRectForRepaint(const RenderLayerModelObject* repaintContainer, bool /*clipToVisibleContent*/) final
{
return selectionGapRectsForRepaint(repaintContainer);
Modified: trunk/Source/WebCore/rendering/RenderInline.cpp (258415 => 258416)
--- trunk/Source/WebCore/rendering/RenderInline.cpp 2020-03-13 18:52:01 UTC (rev 258415)
+++ trunk/Source/WebCore/rendering/RenderInline.cpp 2020-03-13 18:55:54 UTC (rev 258416)
@@ -1030,13 +1030,6 @@
return ancestorSkipped ? ancestorToStopAt : container;
}
-void RenderInline::updateDragState(bool dragOn)
-{
- RenderBoxModelObject::updateDragState(dragOn);
- if (RenderBoxModelObject* continuation = this->continuation())
- continuation->updateDragState(dragOn);
-}
-
void RenderInline::updateHitTestResult(HitTestResult& result, const LayoutPoint& point)
{
if (result.innerNode())
Modified: trunk/Source/WebCore/rendering/RenderInline.h (258415 => 258416)
--- trunk/Source/WebCore/rendering/RenderInline.h 2020-03-13 18:52:01 UTC (rev 258415)
+++ trunk/Source/WebCore/rendering/RenderInline.h 2020-03-13 18:55:54 UTC (rev 258416)
@@ -76,8 +76,6 @@
#if PLATFORM(IOS_FAMILY)
void absoluteQuadsForSelection(Vector<FloatQuad>& quads) const override;
#endif
-
- void updateDragState(bool dragOn) final;
LayoutSize offsetForInFlowPositionedInline(const RenderBox* child) const;
Modified: trunk/Source/WebCore/rendering/RenderObject.cpp (258415 => 258416)
--- trunk/Source/WebCore/rendering/RenderObject.cpp 2020-03-13 18:52:01 UTC (rev 258415)
+++ trunk/Source/WebCore/rendering/RenderObject.cpp 2020-03-13 18:55:54 UTC (rev 258416)
@@ -1524,22 +1524,6 @@
return createVisiblePosition(caretMinOffset(), DOWNSTREAM);
}
-void RenderObject::updateDragState(bool dragOn)
-{
- bool valueChanged = (dragOn != isDragging());
- setIsDragging(dragOn);
-
- if (!is<RenderElement>(*this))
- return;
- auto& renderElement = downcast<RenderElement>(*this);
-
- if (valueChanged && renderElement.element() && (style().affectedByDrag() || renderElement.element()->childrenAffectedByDrag()))
- renderElement.element()->invalidateStyleForSubtree();
-
- for (auto& child : childrenOfType<RenderObject>(renderElement))
- child.updateDragState(dragOn);
-}
-
bool RenderObject::isComposited() const
{
return hasLayer() && downcast<RenderLayerModelObject>(*this).layer()->isComposited();
@@ -1856,12 +1840,6 @@
}
}
-void RenderObject::setIsDragging(bool isDragging)
-{
- if (isDragging || hasRareData())
- ensureRareData().setIsDragging(isDragging);
-}
-
void RenderObject::setHasReflection(bool hasReflection)
{
if (hasReflection || hasRareData())
Modified: trunk/Source/WebCore/rendering/RenderObject.h (258415 => 258416)
--- trunk/Source/WebCore/rendering/RenderObject.h 2020-03-13 18:52:01 UTC (rev 258415)
+++ trunk/Source/WebCore/rendering/RenderObject.h 2020-03-13 18:55:54 UTC (rev 258416)
@@ -427,7 +427,6 @@
bool isReplaced() const { return m_bitfields.isReplaced(); } // a "replaced" element (see CSS)
bool isHorizontalWritingMode() const { return m_bitfields.horizontalWritingMode(); }
- bool isDragging() const { return m_bitfields.hasRareData() && rareData().isDragging(); }
bool hasReflection() const { return m_bitfields.hasRareData() && rareData().hasReflection(); }
bool isRenderFragmentedFlow() const { return m_bitfields.hasRareData() && rareData().isRenderFragmentedFlow(); }
bool hasOutlineAutoAncestor() const { return m_bitfields.hasRareData() && rareData().hasOutlineAutoAncestor(); }
@@ -477,8 +476,6 @@
inline bool preservesNewline() const;
- virtual void updateDragState(bool dragOn);
-
RenderView& view() const { return *document().renderView(); };
// Returns true if this renderer is rooted.
@@ -541,7 +538,6 @@
void setHasLayer(bool b = true) { m_bitfields.setHasLayer(b); }
void setHasTransformRelatedProperty(bool b = true) { m_bitfields.setHasTransformRelatedProperty(b); }
- void setIsDragging(bool);
void setHasReflection(bool = true);
void setIsRenderFragmentedFlow(bool = true);
void setHasOutlineAutoAncestor(bool = true);
@@ -968,13 +964,11 @@
WTF_MAKE_FAST_ALLOCATED;
public:
RenderObjectRareData()
- : m_isDragging(false)
- , m_hasReflection(false)
+ : m_hasReflection(false)
, m_isRenderFragmentedFlow(false)
, m_hasOutlineAutoAncestor(false)
{
}
- ADD_BOOLEAN_BITFIELD(isDragging, IsDragging);
ADD_BOOLEAN_BITFIELD(hasReflection, HasReflection);
ADD_BOOLEAN_BITFIELD(isRenderFragmentedFlow, IsRenderFragmentedFlow);
ADD_BOOLEAN_BITFIELD(hasOutlineAutoAncestor, HasOutlineAutoAncestor);
Modified: trunk/Source/WebCore/rendering/style/RenderStyle.cpp (258415 => 258416)
--- trunk/Source/WebCore/rendering/style/RenderStyle.cpp 2020-03-13 18:52:01 UTC (rev 258415)
+++ trunk/Source/WebCore/rendering/style/RenderStyle.cpp 2020-03-13 18:55:54 UTC (rev 258416)
@@ -189,7 +189,6 @@
m_nonInheritedFlags.emptyState = false;
m_nonInheritedFlags.firstChildState = false;
m_nonInheritedFlags.lastChildState = false;
- m_nonInheritedFlags.affectedByDrag = false;
m_nonInheritedFlags.isLink = false;
m_nonInheritedFlags.styleType = static_cast<unsigned>(PseudoId::None);
m_nonInheritedFlags.pseudoBits = static_cast<unsigned>(PseudoId::None);
Modified: trunk/Source/WebCore/rendering/style/RenderStyle.h (258415 => 258416)
--- trunk/Source/WebCore/rendering/style/RenderStyle.h 2020-03-13 18:52:01 UTC (rev 258415)
+++ trunk/Source/WebCore/rendering/style/RenderStyle.h 2020-03-13 18:55:54 UTC (rev 258416)
@@ -192,9 +192,6 @@
void setHasViewportUnits(bool v = true) { m_nonInheritedFlags.hasViewportUnits = v; }
bool hasViewportUnits() const { return m_nonInheritedFlags.hasViewportUnits; }
- bool affectedByDrag() const { return m_nonInheritedFlags.affectedByDrag; }
- void setAffectedByDrag() { m_nonInheritedFlags.affectedByDrag = true; }
-
void setColumnStylesFromPaginationMode(const Pagination::Mode&);
bool isFloating() const { return static_cast<Float>(m_nonInheritedFlags.floating) != Float::No; }
@@ -1801,7 +1798,6 @@
unsigned emptyState : 1;
unsigned firstChildState : 1;
unsigned lastChildState : 1;
- unsigned affectedByDrag : 1;
unsigned isLink : 1;
unsigned styleType : 4; // PseudoId
@@ -1933,7 +1929,6 @@
&& emptyState == other.emptyState
&& firstChildState == other.firstChildState
&& lastChildState == other.lastChildState
- && affectedByDrag == other.affectedByDrag
&& isLink == other.isLink
&& styleType == other.styleType
&& pseudoBits == other.pseudoBits;
Modified: trunk/Source/WebCore/style/StyleRelations.cpp (258415 => 258416)
--- trunk/Source/WebCore/style/StyleRelations.cpp 2020-03-13 18:52:01 UTC (rev 258415)
+++ trunk/Source/WebCore/style/StyleRelations.cpp 2020-03-13 18:55:54 UTC (rev 258416)
@@ -50,9 +50,6 @@
continue;
}
switch (relation.type) {
- case Relation::AffectedByDrag:
- style.setAffectedByDrag();
- break;
case Relation::AffectedByEmpty:
style.setEmptyState(relation.value);
appendStyleRelation(relation);
@@ -91,9 +88,6 @@
for (auto& relation : *relations) {
auto& element = const_cast<Element&>(*relation.element);
switch (relation.type) {
- case Relation::AffectedByDrag:
- element.setChildrenAffectedByDrag();
- break;
case Relation::AffectedByEmpty:
element.setStyleAffectedByEmpty();
break;
Modified: trunk/Source/WebCore/style/StyleRelations.h (258415 => 258416)
--- trunk/Source/WebCore/style/StyleRelations.h 2020-03-13 18:52:01 UTC (rev 258415)
+++ trunk/Source/WebCore/style/StyleRelations.h 2020-03-13 18:55:54 UTC (rev 258416)
@@ -38,7 +38,6 @@
struct Relation {
enum Type {
- AffectedByDrag,
AffectedByEmpty,
AffectedByPreviousSibling,
DescendantsAffectedByPreviousSibling,
Modified: trunk/Source/WebCore/style/StyleSharingResolver.cpp (258415 => 258416)
--- trunk/Source/WebCore/style/StyleSharingResolver.cpp 2020-03-13 18:52:01 UTC (rev 258415)
+++ trunk/Source/WebCore/style/StyleSharingResolver.cpp 2020-03-13 18:55:54 UTC (rev 258416)
@@ -225,6 +225,8 @@
return false;
if (candidateElement.hasFocusWithin() != element.hasFocusWithin())
return false;
+ if (candidateElement.isBeingDragged() != element.isBeingDragged())
+ return false;
if (candidateElement.shadowPseudoId() != element.shadowPseudoId())
return false;
if (&candidateElement == m_document.cssTarget())