зеркало из 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)
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче