adding parameters to setselectedcontent. This will keep down overhead of the nsIFrame implementation and still not allow outsiders to talk to their presshell. so please forgive this grown method. this extra parameter will maintain the anchor and focus point after reflow

This commit is contained in:
mjudge@netscape.com
1999-01-25 23:28:23 +00:00
parent c13aa3e589
commit d91c7540a0
6 changed files with 64 additions and 8 deletions

View File

@@ -1775,7 +1775,10 @@ nsFrame::SetSelected(PRBool aSelected, PRInt32 aBeginOffset, PRInt32 aEndOffset,
}
NS_IMETHODIMP
nsFrame::SetSelectedContentOffsets(PRBool aSelected, PRInt32 aBeginContentOffset, PRInt32 aEndContentOffset, PRBool aForceRedraw, nsIFrame **aActualSelected)
nsFrame::SetSelectedContentOffsets(PRBool aSelected, PRInt32 aBeginContentOffset, PRInt32 aEndContentOffset,
PRInt32 aAnchorOffset, PRInt32 aFocusOffset, PRBool aForceRedraw,
nsIFocusTracker *aTracker,
nsIFrame **aActualSelected)
{
if (!aActualSelected)
return NS_ERROR_NULL_POINTER;
@@ -1783,13 +1786,19 @@ nsFrame::SetSelectedContentOffsets(PRBool aSelected, PRInt32 aBeginContentOffset
nsresult result = FirstChild(nsnull, child);
if (NS_FAILED(result)){
*aActualSelected = this;
if (aAnchorOffset > 0)
aTracker->SetFocus(nsnull,this);
if (aFocusOffset > 0)
aTracker->SetFocus(this,nsnull);
return SetSelected(aSelected, aBeginContentOffset, aEndContentOffset, aForceRedraw);
}
*aActualSelected = nsnull;
if (aBeginContentOffset)
SetSelected(PR_FALSE, 0, 0, aForceRedraw); //if all children are not selected, then neither is this
while (child && NS_SUCCEEDED(result)){
result |= child->SetSelectedContentOffsets(aSelected, aBeginContentOffset, aEndContentOffset, aForceRedraw , aActualSelected);
result |= child->SetSelectedContentOffsets(aSelected, aBeginContentOffset, aEndContentOffset,
aAnchorOffset, aFocusOffset,
aForceRedraw , aTracker, aActualSelected);
if (NS_SUCCEEDED(result) && aActualSelected)
return result; //done.
result |= child->GetNextSibling(child);