fix my previous checkin after talking to hyatt - we'll be getting the outer frame, so iterate through the children and QI on each one, sending EnsureRowIsVisible to each when it succeeds

r=hyatt
This commit is contained in:
alecf%netscape.com 2000-01-06 09:19:31 +00:00
Родитель ca99f86859
Коммит 5f40caae8f
2 изменённых файлов: 40 добавлений и 16 удалений

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

@ -440,15 +440,27 @@ nsXULTreeElement::EnsureElementIsVisible(nsIDOMXULElement *aElement)
if (!shell) if (!shell)
continue; continue;
nsIFrame *frame; nsIFrame *outerFrame;
shell->GetPrimaryFrameFor(content, &frame); shell->GetPrimaryFrameFor(content, &outerFrame);
if (frame) { if (outerFrame) {
nsITreeFrame *treeFrame = nsnull;
rv = frame->QueryInterface(NS_GET_IID(nsITreeFrame), // need to look at the outer frame's children to find the nsTreeFrame
(void **)&treeFrame); nsIFrame *childFrame=nsnull;
if (NS_SUCCEEDED(rv) && treeFrame) { outerFrame->FirstChild(nsnull, &childFrame);
treeFrame->EnsureRowIsVisible(indexOfContent);
// now iterate through the children
while (childFrame) {
nsITreeFrame *treeFrame = nsnull;
rv = outerFrame->QueryInterface(NS_GET_IID(nsITreeFrame),
(void **)&treeFrame);
if (NS_SUCCEEDED(rv) && treeFrame) {
treeFrame->EnsureRowIsVisible(indexOfContent);
}
nsIFrame *nextFrame;
childFrame->GetNextSibling(&nextFrame);
childFrame=nextFrame;
} }
} }

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

@ -440,15 +440,27 @@ nsXULTreeElement::EnsureElementIsVisible(nsIDOMXULElement *aElement)
if (!shell) if (!shell)
continue; continue;
nsIFrame *frame; nsIFrame *outerFrame;
shell->GetPrimaryFrameFor(content, &frame); shell->GetPrimaryFrameFor(content, &outerFrame);
if (frame) { if (outerFrame) {
nsITreeFrame *treeFrame = nsnull;
rv = frame->QueryInterface(NS_GET_IID(nsITreeFrame), // need to look at the outer frame's children to find the nsTreeFrame
(void **)&treeFrame); nsIFrame *childFrame=nsnull;
if (NS_SUCCEEDED(rv) && treeFrame) { outerFrame->FirstChild(nsnull, &childFrame);
treeFrame->EnsureRowIsVisible(indexOfContent);
// now iterate through the children
while (childFrame) {
nsITreeFrame *treeFrame = nsnull;
rv = outerFrame->QueryInterface(NS_GET_IID(nsITreeFrame),
(void **)&treeFrame);
if (NS_SUCCEEDED(rv) && treeFrame) {
treeFrame->EnsureRowIsVisible(indexOfContent);
}
nsIFrame *nextFrame;
childFrame->GetNextSibling(&nextFrame);
childFrame=nextFrame;
} }
} }