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)
continue;
nsIFrame *frame;
shell->GetPrimaryFrameFor(content, &frame);
nsIFrame *outerFrame;
shell->GetPrimaryFrameFor(content, &outerFrame);
if (frame) {
nsITreeFrame *treeFrame = nsnull;
rv = frame->QueryInterface(NS_GET_IID(nsITreeFrame),
(void **)&treeFrame);
if (NS_SUCCEEDED(rv) && treeFrame) {
treeFrame->EnsureRowIsVisible(indexOfContent);
if (outerFrame) {
// need to look at the outer frame's children to find the nsTreeFrame
nsIFrame *childFrame=nsnull;
outerFrame->FirstChild(nsnull, &childFrame);
// 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)
continue;
nsIFrame *frame;
shell->GetPrimaryFrameFor(content, &frame);
nsIFrame *outerFrame;
shell->GetPrimaryFrameFor(content, &outerFrame);
if (frame) {
nsITreeFrame *treeFrame = nsnull;
rv = frame->QueryInterface(NS_GET_IID(nsITreeFrame),
(void **)&treeFrame);
if (NS_SUCCEEDED(rv) && treeFrame) {
treeFrame->EnsureRowIsVisible(indexOfContent);
if (outerFrame) {
// need to look at the outer frame's children to find the nsTreeFrame
nsIFrame *childFrame=nsnull;
outerFrame->FirstChild(nsnull, &childFrame);
// 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;
}
}