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:
kipp%netscape.com 1999-10-29 14:39:48 +00:00
Родитель 3409a3e7b1
Коммит 06f88727ca
4 изменённых файлов: 1430 добавлений и 1342 удалений

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -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,