зеркало из https://github.com/mozilla/pjs.git
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:
Родитель
ca99f86859
Коммит
5f40caae8f
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче