Bug 296315. Remove unimplemented nsIScrollableView::GetScrollbarVisibility, implement nsDocShell::GetScrollbarVisibiilty to use nsIScrollableFrame::GetActualScrollbarSizes, which actually works. r+sr=bzbarsky,a=asa

git-svn-id: svn://10.0.0.236/trunk@174751 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
roc+%cs.cmu.edu
2005-06-17 02:48:29 +00:00
parent 2816caa04c
commit e05c85a204
5 changed files with 16 additions and 27 deletions

View File

@@ -77,6 +77,7 @@
#include "nsIScriptObjectPrincipal.h"
#include "nsDocumentCharsetInfoCID.h"
#include "nsICanvasFrame.h"
#include "nsIScrollableFrame.h"
#include "nsContentPolicyUtils.h" // NS_CheckContentLoadPolicy(...)
#include "nsICategoryManager.h"
#include "nsXPCOMCID.h"
@@ -3955,21 +3956,25 @@ nsDocShell::GetScrollbarVisibility(PRBool * verticalVisible,
nsIScrollableView* scrollView;
NS_ENSURE_SUCCESS(GetRootScrollableView(&scrollView),
NS_ERROR_FAILURE);
if (!scrollView) {
if (!scrollView)
return NS_ERROR_FAILURE;
}
PRBool vertVisible;
PRBool horizVisible;
NS_ENSURE_SUCCESS(scrollView->GetScrollbarVisibility(&vertVisible,
&horizVisible),
NS_ERROR_FAILURE);
// We should now call nsLayoutUtils::GetScrollableFrameFor,
// but we can't because of stupid linkage!
nsIFrame* scrollFrame =
NS_STATIC_CAST(nsIFrame*, scrollView->View()->GetParent()->GetClientData());
if (!scrollFrame)
return NS_ERROR_FAILURE;
nsIScrollableFrame* scrollable = nsnull;
CallQueryInterface(scrollFrame, &scrollable);
if (!scrollable)
return NS_ERROR_FAILURE;
nsMargin scrollbars = scrollable->GetActualScrollbarSizes();
if (verticalVisible)
*verticalVisible = vertVisible;
*verticalVisible = scrollbars.left != 0 || scrollbars.right != 0;
if (horizontalVisible)
*horizontalVisible = horizVisible;
*horizontalVisible = scrollbars.top != 0 || scrollbars.bottom != 0;
return NS_OK;
}