зеркало из https://github.com/mozilla/gecko-dev.git
r=troy; bugs 12958 and 12760; reworked the way that first-letter frames are created and updated. We now support incremental content changes even when first-letter style applies.
This commit is contained in:
Родитель
3409a3e7b1
Коммит
06f88727ca
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -178,7 +178,6 @@ protected:
|
||||||
nsIContent* aContent,
|
nsIContent* aContent,
|
||||||
nsIStyleContext* aStyleContext,
|
nsIStyleContext* aStyleContext,
|
||||||
nsIAtom* aPseudoElement,
|
nsIAtom* aPseudoElement,
|
||||||
PRBool aMakeFirstLetterFrame,
|
|
||||||
PRBool aForBlock,
|
PRBool aForBlock,
|
||||||
nsIFrame** aResult);
|
nsIFrame** aResult);
|
||||||
|
|
||||||
|
@ -671,33 +670,72 @@ InitializeSelectFrame(nsIPresContext* aPresContext,
|
||||||
nsIStyleContext* aStyleContext,
|
nsIStyleContext* aStyleContext,
|
||||||
nsIFrame* aNewFrame);
|
nsIFrame* aNewFrame);
|
||||||
|
|
||||||
nsresult MakeFirstLetterFrame(nsIPresContext* aPresContext,
|
//----------------------------------------
|
||||||
nsFrameConstructorState& aState,
|
|
||||||
nsIContent* aContainer,
|
|
||||||
nsIContent* aChild,
|
|
||||||
nsIContent* aContainingBlockContent,
|
|
||||||
nsIFrame* aParentFrame,
|
|
||||||
nsFrameItems& aFrameItems);
|
|
||||||
|
|
||||||
nsresult WrapTextFrame(nsIPresContext* aPresContext,
|
// Methods support :first-letter style
|
||||||
nsFrameConstructorState& aState,
|
|
||||||
nsIFrame* aTextFrame,
|
|
||||||
nsIContent* aParentContent,
|
|
||||||
nsIContent* aChildContent,
|
|
||||||
nsIFrame* aParentFrame,
|
|
||||||
nsFrameItems& aFrameItems,
|
|
||||||
nsAbsoluteItems& aFloatingItems,
|
|
||||||
PRBool aForBlock);
|
|
||||||
|
|
||||||
void CreateFloatingFirstLetterFrame(nsIPresContext* aPresContext,
|
nsIContent* FindBlockFor(nsIPresContext* aPresContext,
|
||||||
nsIFrameManager* aFrameManager,
|
nsFrameConstructorState& aState,
|
||||||
nsIFrame* aTextFrame,
|
nsIContent* aContainer);
|
||||||
nsIContent* aContent,
|
|
||||||
nsIContent* aChildContent,
|
void CreateFloatingLetterFrame(nsIPresContext* aPresContext,
|
||||||
nsIFrame* aParentFrame,
|
nsFrameConstructorState& aState,
|
||||||
nsFrameItems& aFrameItems,
|
nsIContent* aTextContent,
|
||||||
nsFrameItems& aFloatingItems,
|
nsIFrame* aTextFrame,
|
||||||
nsIStyleContext* aStyleContext);
|
nsIContent* aBlockContent,
|
||||||
|
nsIFrame* aParentFrame,
|
||||||
|
nsIStyleContext* aStyleContext,
|
||||||
|
nsFrameItems& aResult);
|
||||||
|
|
||||||
|
nsresult CreateLetterFrame(nsIPresContext* aPresContext,
|
||||||
|
nsFrameConstructorState& aState,
|
||||||
|
nsIContent* aTextContent,
|
||||||
|
nsIFrame* aParentFrame,
|
||||||
|
nsFrameItems& aResult);
|
||||||
|
|
||||||
|
nsresult WrapFramesInFirstLetterFrame(nsIPresContext* aPresContext,
|
||||||
|
nsFrameConstructorState& aState,
|
||||||
|
nsIContent* aBlockContent,
|
||||||
|
nsIFrame* aBlockFrame,
|
||||||
|
nsFrameItems& aBlockFrames);
|
||||||
|
|
||||||
|
nsresult WrapFramesInFirstLetterFrame(nsIPresContext* aPresContext,
|
||||||
|
nsFrameConstructorState& aState,
|
||||||
|
nsIFrame* aParentFrame,
|
||||||
|
nsIFrame* aParentFrameList,
|
||||||
|
nsIFrame** aModifiedParent,
|
||||||
|
nsIFrame** aTextFrame,
|
||||||
|
nsIFrame** aPrevFrame,
|
||||||
|
nsFrameItems& aLetterFrame,
|
||||||
|
PRBool* aStopLooking);
|
||||||
|
|
||||||
|
nsresult RecoverLetterFrames(nsIPresContext* aPresContext,
|
||||||
|
nsFrameConstructorState& aState,
|
||||||
|
nsIFrame* aBlockFrame);
|
||||||
|
|
||||||
|
//
|
||||||
|
nsresult RemoveLetterFrames(nsIPresContext* aPresContext,
|
||||||
|
nsIPresShell* aPresShell,
|
||||||
|
nsIFrameManager* aFrameManager,
|
||||||
|
nsIFrame* aBlockFrame);
|
||||||
|
|
||||||
|
// Recursive helper for RemoveLetterFrames
|
||||||
|
nsresult RemoveFirstLetterFrames(nsIPresContext* aPresContext,
|
||||||
|
nsIPresShell* aPresShell,
|
||||||
|
nsIFrameManager* aFrameManager,
|
||||||
|
nsIFrame* aFrame,
|
||||||
|
PRBool* aStopLooking);
|
||||||
|
|
||||||
|
// Special remove method for those pesky floating first-letter frames
|
||||||
|
nsresult RemoveFloatingFirstLetterFrames(nsIPresContext* aPresContext,
|
||||||
|
nsIPresShell* aPresShell,
|
||||||
|
nsIFrameManager* aFrameManager,
|
||||||
|
nsIFrame* aBlockFrame,
|
||||||
|
PRBool* aStopLooking);
|
||||||
|
|
||||||
|
//----------------------------------------
|
||||||
|
|
||||||
|
// Methods support :first-line style
|
||||||
|
|
||||||
nsresult WrapFramesInFirstLineFrame(nsIPresContext* aPresContext,
|
nsresult WrapFramesInFirstLineFrame(nsIPresContext* aPresContext,
|
||||||
nsFrameConstructorState& aState,
|
nsFrameConstructorState& aState,
|
||||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -178,7 +178,6 @@ protected:
|
||||||
nsIContent* aContent,
|
nsIContent* aContent,
|
||||||
nsIStyleContext* aStyleContext,
|
nsIStyleContext* aStyleContext,
|
||||||
nsIAtom* aPseudoElement,
|
nsIAtom* aPseudoElement,
|
||||||
PRBool aMakeFirstLetterFrame,
|
|
||||||
PRBool aForBlock,
|
PRBool aForBlock,
|
||||||
nsIFrame** aResult);
|
nsIFrame** aResult);
|
||||||
|
|
||||||
|
@ -671,33 +670,72 @@ InitializeSelectFrame(nsIPresContext* aPresContext,
|
||||||
nsIStyleContext* aStyleContext,
|
nsIStyleContext* aStyleContext,
|
||||||
nsIFrame* aNewFrame);
|
nsIFrame* aNewFrame);
|
||||||
|
|
||||||
nsresult MakeFirstLetterFrame(nsIPresContext* aPresContext,
|
//----------------------------------------
|
||||||
nsFrameConstructorState& aState,
|
|
||||||
nsIContent* aContainer,
|
|
||||||
nsIContent* aChild,
|
|
||||||
nsIContent* aContainingBlockContent,
|
|
||||||
nsIFrame* aParentFrame,
|
|
||||||
nsFrameItems& aFrameItems);
|
|
||||||
|
|
||||||
nsresult WrapTextFrame(nsIPresContext* aPresContext,
|
// Methods support :first-letter style
|
||||||
nsFrameConstructorState& aState,
|
|
||||||
nsIFrame* aTextFrame,
|
|
||||||
nsIContent* aParentContent,
|
|
||||||
nsIContent* aChildContent,
|
|
||||||
nsIFrame* aParentFrame,
|
|
||||||
nsFrameItems& aFrameItems,
|
|
||||||
nsAbsoluteItems& aFloatingItems,
|
|
||||||
PRBool aForBlock);
|
|
||||||
|
|
||||||
void CreateFloatingFirstLetterFrame(nsIPresContext* aPresContext,
|
nsIContent* FindBlockFor(nsIPresContext* aPresContext,
|
||||||
nsIFrameManager* aFrameManager,
|
nsFrameConstructorState& aState,
|
||||||
nsIFrame* aTextFrame,
|
nsIContent* aContainer);
|
||||||
nsIContent* aContent,
|
|
||||||
nsIContent* aChildContent,
|
void CreateFloatingLetterFrame(nsIPresContext* aPresContext,
|
||||||
nsIFrame* aParentFrame,
|
nsFrameConstructorState& aState,
|
||||||
nsFrameItems& aFrameItems,
|
nsIContent* aTextContent,
|
||||||
nsFrameItems& aFloatingItems,
|
nsIFrame* aTextFrame,
|
||||||
nsIStyleContext* aStyleContext);
|
nsIContent* aBlockContent,
|
||||||
|
nsIFrame* aParentFrame,
|
||||||
|
nsIStyleContext* aStyleContext,
|
||||||
|
nsFrameItems& aResult);
|
||||||
|
|
||||||
|
nsresult CreateLetterFrame(nsIPresContext* aPresContext,
|
||||||
|
nsFrameConstructorState& aState,
|
||||||
|
nsIContent* aTextContent,
|
||||||
|
nsIFrame* aParentFrame,
|
||||||
|
nsFrameItems& aResult);
|
||||||
|
|
||||||
|
nsresult WrapFramesInFirstLetterFrame(nsIPresContext* aPresContext,
|
||||||
|
nsFrameConstructorState& aState,
|
||||||
|
nsIContent* aBlockContent,
|
||||||
|
nsIFrame* aBlockFrame,
|
||||||
|
nsFrameItems& aBlockFrames);
|
||||||
|
|
||||||
|
nsresult WrapFramesInFirstLetterFrame(nsIPresContext* aPresContext,
|
||||||
|
nsFrameConstructorState& aState,
|
||||||
|
nsIFrame* aParentFrame,
|
||||||
|
nsIFrame* aParentFrameList,
|
||||||
|
nsIFrame** aModifiedParent,
|
||||||
|
nsIFrame** aTextFrame,
|
||||||
|
nsIFrame** aPrevFrame,
|
||||||
|
nsFrameItems& aLetterFrame,
|
||||||
|
PRBool* aStopLooking);
|
||||||
|
|
||||||
|
nsresult RecoverLetterFrames(nsIPresContext* aPresContext,
|
||||||
|
nsFrameConstructorState& aState,
|
||||||
|
nsIFrame* aBlockFrame);
|
||||||
|
|
||||||
|
//
|
||||||
|
nsresult RemoveLetterFrames(nsIPresContext* aPresContext,
|
||||||
|
nsIPresShell* aPresShell,
|
||||||
|
nsIFrameManager* aFrameManager,
|
||||||
|
nsIFrame* aBlockFrame);
|
||||||
|
|
||||||
|
// Recursive helper for RemoveLetterFrames
|
||||||
|
nsresult RemoveFirstLetterFrames(nsIPresContext* aPresContext,
|
||||||
|
nsIPresShell* aPresShell,
|
||||||
|
nsIFrameManager* aFrameManager,
|
||||||
|
nsIFrame* aFrame,
|
||||||
|
PRBool* aStopLooking);
|
||||||
|
|
||||||
|
// Special remove method for those pesky floating first-letter frames
|
||||||
|
nsresult RemoveFloatingFirstLetterFrames(nsIPresContext* aPresContext,
|
||||||
|
nsIPresShell* aPresShell,
|
||||||
|
nsIFrameManager* aFrameManager,
|
||||||
|
nsIFrame* aBlockFrame,
|
||||||
|
PRBool* aStopLooking);
|
||||||
|
|
||||||
|
//----------------------------------------
|
||||||
|
|
||||||
|
// Methods support :first-line style
|
||||||
|
|
||||||
nsresult WrapFramesInFirstLineFrame(nsIPresContext* aPresContext,
|
nsresult WrapFramesInFirstLineFrame(nsIPresContext* aPresContext,
|
||||||
nsFrameConstructorState& aState,
|
nsFrameConstructorState& aState,
|
||||||
|
|
Загрузка…
Ссылка в новой задаче