mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-05-28 20:41:33 +00:00
#442: M1381157
This commit is contained in:
parent
84bfb83b16
commit
ffbe7ea3a0
|
@ -870,12 +870,9 @@ public:
|
||||||
{
|
{
|
||||||
return (IsInDoc() || IsInShadowTree()) ? mPrimaryFrame : nullptr;
|
return (IsInDoc() || IsInShadowTree()) ? mPrimaryFrame : nullptr;
|
||||||
}
|
}
|
||||||
void SetPrimaryFrame(nsIFrame* aFrame) {
|
|
||||||
MOZ_ASSERT(IsInDoc() || IsInShadowTree(), "This will end badly!");
|
// Defined in nsIContentInlines.h because it needs nsIFrame.
|
||||||
NS_PRECONDITION(!aFrame || !mPrimaryFrame || aFrame == mPrimaryFrame,
|
inline void SetPrimaryFrame(nsIFrame* aFrame);
|
||||||
"Losing track of existing primary frame");
|
|
||||||
mPrimaryFrame = aFrame;
|
|
||||||
}
|
|
||||||
|
|
||||||
nsresult LookupNamespaceURIInternal(const nsAString& aNamespacePrefix,
|
nsresult LookupNamespaceURIInternal(const nsAString& aNamespacePrefix,
|
||||||
nsAString& aNamespaceURI) const;
|
nsAString& aNamespaceURI) const;
|
||||||
|
|
|
@ -9,6 +9,8 @@
|
||||||
|
|
||||||
#include "nsIContent.h"
|
#include "nsIContent.h"
|
||||||
#include "nsIDocument.h"
|
#include "nsIDocument.h"
|
||||||
|
#include "nsContentUtils.h"
|
||||||
|
#include "nsIFrame.h"
|
||||||
|
|
||||||
inline bool
|
inline bool
|
||||||
nsIContent::IsInHTMLDocument() const
|
nsIContent::IsInHTMLDocument() const
|
||||||
|
@ -16,4 +18,20 @@ nsIContent::IsInHTMLDocument() const
|
||||||
return OwnerDoc()->IsHTMLDocument();
|
return OwnerDoc()->IsHTMLDocument();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline void
|
||||||
|
nsIContent::SetPrimaryFrame(nsIFrame* aFrame)
|
||||||
|
{
|
||||||
|
MOZ_ASSERT(IsInUncomposedDoc() || IsInShadowTree(), "This will end badly!");
|
||||||
|
NS_PRECONDITION(!aFrame || !mPrimaryFrame || aFrame == mPrimaryFrame,
|
||||||
|
"Losing track of existing primary frame");
|
||||||
|
|
||||||
|
if (aFrame) {
|
||||||
|
aFrame->SetIsPrimaryFrame(true);
|
||||||
|
} else if (nsIFrame* currentPrimaryFrame = GetPrimaryFrame()) {
|
||||||
|
currentPrimaryFrame->SetIsPrimaryFrame(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
mPrimaryFrame = aFrame;
|
||||||
|
}
|
||||||
|
|
||||||
#endif // nsIContentInlines_h
|
#endif // nsIContentInlines_h
|
||||||
|
|
|
@ -109,6 +109,7 @@
|
||||||
#include "nsRuleProcessorData.h"
|
#include "nsRuleProcessorData.h"
|
||||||
#include "nsTextNode.h"
|
#include "nsTextNode.h"
|
||||||
#include "ActiveLayerTracker.h"
|
#include "ActiveLayerTracker.h"
|
||||||
|
#include "nsIContentInlines.h"
|
||||||
|
|
||||||
using namespace mozilla;
|
using namespace mozilla;
|
||||||
using namespace mozilla::dom;
|
using namespace mozilla::dom;
|
||||||
|
|
|
@ -47,6 +47,7 @@
|
||||||
#include "mozilla/MouseEvents.h"
|
#include "mozilla/MouseEvents.h"
|
||||||
#include "mozilla/unused.h"
|
#include "mozilla/unused.h"
|
||||||
#include "gfx2DGlue.h"
|
#include "gfx2DGlue.h"
|
||||||
|
#include "nsIContentInlines.h"
|
||||||
|
|
||||||
#ifdef XP_WIN
|
#ifdef XP_WIN
|
||||||
#define COMBOBOX_ROLLUP_CONSUME_EVENT 0
|
#define COMBOBOX_ROLLUP_CONSUME_EVENT 0
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
|
|
||||||
#include "nsIDOMHTMLInputElement.h"
|
#include "nsIDOMHTMLInputElement.h"
|
||||||
#include "nsTextNode.h"
|
#include "nsTextNode.h"
|
||||||
|
#include "nsIContentInlines.h"
|
||||||
|
|
||||||
using namespace mozilla;
|
using namespace mozilla;
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
#include "nsFrameList.h"
|
#include "nsFrameList.h"
|
||||||
#include "nsPlaceholderFrame.h"
|
#include "nsPlaceholderFrame.h"
|
||||||
#include "nsIContent.h"
|
#include "nsIContent.h"
|
||||||
|
#include "nsIContentInlines.h"
|
||||||
#include "nsContentUtils.h"
|
#include "nsContentUtils.h"
|
||||||
#include "nsIAtom.h"
|
#include "nsIAtom.h"
|
||||||
#include "nsString.h"
|
#include "nsString.h"
|
||||||
|
@ -398,6 +399,7 @@ nsFrame::nsFrame(nsStyleContext* aContext)
|
||||||
mState = NS_FRAME_FIRST_REFLOW | NS_FRAME_IS_DIRTY;
|
mState = NS_FRAME_FIRST_REFLOW | NS_FRAME_IS_DIRTY;
|
||||||
mMayHaveRoundedCorners = false;
|
mMayHaveRoundedCorners = false;
|
||||||
mReflowRequestedForCharDataChange = false;
|
mReflowRequestedForCharDataChange = false;
|
||||||
|
mIsPrimaryFrame = false;
|
||||||
mStyleContext = aContext;
|
mStyleContext = aContext;
|
||||||
mStyleContext->AddRef();
|
mStyleContext->AddRef();
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
|
@ -663,6 +665,13 @@ nsFrame::DestroyFrom(nsIFrame* aDestructRoot)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// from bug 1381157
|
||||||
|
// XXXneerja All instances of 'mContent->GetPrimaryFrame() == this' have been
|
||||||
|
// replaced with IsPrimaryFrame() except for this one. The reason is that
|
||||||
|
// for native anonymous content our subclass Destroy method has already
|
||||||
|
// called UnbindFromTree so nsINode::mSubtreeRoot might be in use here and
|
||||||
|
// we don't want to call mContent->SetPrimaryFrame(nullptr) in that case.
|
||||||
|
// (bug 1400618 will fix that order)
|
||||||
bool isPrimaryFrame = (mContent && mContent->GetPrimaryFrame() == this);
|
bool isPrimaryFrame = (mContent && mContent->GetPrimaryFrame() == this);
|
||||||
if (isPrimaryFrame) {
|
if (isPrimaryFrame) {
|
||||||
// This needs to happen before shell->NotifyDestroyingFrame because
|
// This needs to happen before shell->NotifyDestroyingFrame because
|
||||||
|
@ -1096,7 +1105,7 @@ nsIFrame::IsTransformed() const
|
||||||
EffectCompositor::HasAnimationsForCompositor(
|
EffectCompositor::HasAnimationsForCompositor(
|
||||||
this, eCSSProperty_transform) &&
|
this, eCSSProperty_transform) &&
|
||||||
IsFrameOfType(eSupportsCSSTransforms) &&
|
IsFrameOfType(eSupportsCSSTransforms) &&
|
||||||
mContent->GetPrimaryFrame() == this)));
|
IsPrimaryFrame())));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
@ -1109,7 +1118,7 @@ nsIFrame::HasOpacityInternal(float aThreshold) const
|
||||||
(mContent &&
|
(mContent &&
|
||||||
EffectCompositor::HasAnimationsForCompositor(
|
EffectCompositor::HasAnimationsForCompositor(
|
||||||
this, eCSSProperty_opacity) &&
|
this, eCSSProperty_opacity) &&
|
||||||
mContent->GetPrimaryFrame() == this);
|
IsPrimaryFrame());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
@ -8285,7 +8294,7 @@ nsFrame::DoGetParentStyleContext(nsIFrame** aProviderFrame) const
|
||||||
// Ensure that we don't return the display:contents style
|
// Ensure that we don't return the display:contents style
|
||||||
// of the parent content for pseudos that have the same content
|
// of the parent content for pseudos that have the same content
|
||||||
// as their primary frame (like -moz-list-bullets do):
|
// as their primary frame (like -moz-list-bullets do):
|
||||||
mContent->GetPrimaryFrame() == this) ||
|
IsPrimaryFrame()) ||
|
||||||
/* if next is true then it's really a request for the table frame's
|
/* if next is true then it's really a request for the table frame's
|
||||||
parent context, see nsTable[Outer]Frame::GetParentStyleContext. */
|
parent context, see nsTable[Outer]Frame::GetParentStyleContext. */
|
||||||
pseudo == nsCSSAnonBoxes::tableOuter) {
|
pseudo == nsCSSAnonBoxes::tableOuter) {
|
||||||
|
|
|
@ -40,6 +40,7 @@
|
||||||
#include "mozilla/LookAndFeel.h"
|
#include "mozilla/LookAndFeel.h"
|
||||||
#include "mozilla/MouseEvents.h"
|
#include "mozilla/MouseEvents.h"
|
||||||
#include "nsSubDocumentFrame.h"
|
#include "nsSubDocumentFrame.h"
|
||||||
|
#include "nsIContentInlines.h"
|
||||||
|
|
||||||
using namespace mozilla;
|
using namespace mozilla;
|
||||||
using namespace mozilla::dom;
|
using namespace mozilla::dom;
|
||||||
|
|
|
@ -1416,6 +1416,13 @@ public:
|
||||||
return mState & aBits;
|
return mState & aBits;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return true if this frame is the primary frame for mContent.
|
||||||
|
*/
|
||||||
|
bool IsPrimaryFrame() const { return mIsPrimaryFrame; }
|
||||||
|
|
||||||
|
void SetIsPrimaryFrame(bool aIsPrimary) { mIsPrimaryFrame = aIsPrimary; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This call is invoked on the primary frame for a character data content
|
* This call is invoked on the primary frame for a character data content
|
||||||
* node, when it is changed in the content tree.
|
* node, when it is changed in the content tree.
|
||||||
|
@ -3171,6 +3178,14 @@ protected:
|
||||||
*/
|
*/
|
||||||
bool mReflowRequestedForCharDataChange : 1;
|
bool mReflowRequestedForCharDataChange : 1;
|
||||||
|
|
||||||
|
private:
|
||||||
|
/**
|
||||||
|
* True if this is the primary frame for mContent.
|
||||||
|
*/
|
||||||
|
bool mIsPrimaryFrame : 1;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
// Helpers
|
// Helpers
|
||||||
/**
|
/**
|
||||||
* Can we stop inside this frame when we're skipping non-rendered whitespace?
|
* Can we stop inside this frame when we're skipping non-rendered whitespace?
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include "nsIStringBundle.h"
|
#include "nsIStringBundle.h"
|
||||||
#include "nsContentUtils.h"
|
#include "nsContentUtils.h"
|
||||||
#include "ImageLayers.h"
|
#include "ImageLayers.h"
|
||||||
|
#include "nsIContentInlines.h"
|
||||||
|
|
||||||
#ifdef ACCESSIBILITY
|
#ifdef ACCESSIBILITY
|
||||||
#include "nsAccessibilityService.h"
|
#include "nsAccessibilityService.h"
|
||||||
|
|
|
@ -41,6 +41,7 @@
|
||||||
#include "nsIPermissionManager.h"
|
#include "nsIPermissionManager.h"
|
||||||
#include "nsServiceManagerUtils.h"
|
#include "nsServiceManagerUtils.h"
|
||||||
#include "nsIDOMMutationEvent.h"
|
#include "nsIDOMMutationEvent.h"
|
||||||
|
#include "nsIContentInlines.h"
|
||||||
|
|
||||||
using namespace mozilla;
|
using namespace mozilla;
|
||||||
using mozilla::layout::RenderFrameParent;
|
using mozilla::layout::RenderFrameParent;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user