diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp index daa1e898dcf6..5e04f23f60f1 100644 --- a/docshell/base/nsDocShell.cpp +++ b/docshell/base/nsDocShell.cpp @@ -5796,11 +5796,7 @@ nsDocShell::SetTitle(const PRUnichar * aTitle) return NS_OK; } -//***************************************************************************** -// nsDocShell::nsIScrollable -//***************************************************************************** - -NS_IMETHODIMP +nsresult nsDocShell::GetCurScrollPos(int32_t scrollOrientation, int32_t * curPos) { NS_ENSURE_ARG_POINTER(curPos); @@ -5824,32 +5820,7 @@ nsDocShell::GetCurScrollPos(int32_t scrollOrientation, int32_t * curPos) } } -NS_IMETHODIMP -nsDocShell::SetCurScrollPos(int32_t scrollOrientation, int32_t curPos) -{ - nsIScrollableFrame* sf = GetRootScrollFrame(); - NS_ENSURE_TRUE(sf, NS_ERROR_FAILURE); - - nsPoint pt = sf->GetScrollPosition(); - - switch (scrollOrientation) { - case ScrollOrientation_X: - pt.x = curPos; - break; - - case ScrollOrientation_Y: - pt.y = curPos; - break; - - default: - NS_ENSURE_TRUE(false, NS_ERROR_INVALID_ARG); - } - - sf->ScrollTo(pt, nsIScrollableFrame::INSTANT); - return NS_OK; -} - -NS_IMETHODIMP +nsresult nsDocShell::SetCurScrollPosEx(int32_t curHorizontalPos, int32_t curVerticalPos) { nsIScrollableFrame* sf = GetRootScrollFrame(); @@ -5860,69 +5831,10 @@ nsDocShell::SetCurScrollPosEx(int32_t curHorizontalPos, int32_t curVerticalPos) return NS_OK; } -// XXX This is wrong -NS_IMETHODIMP -nsDocShell::GetScrollRange(int32_t scrollOrientation, - int32_t * minPos, int32_t * maxPos) -{ - NS_ENSURE_ARG_POINTER(minPos && maxPos); +//***************************************************************************** +// nsDocShell::nsIScrollable +//***************************************************************************** - nsIScrollableFrame* sf = GetRootScrollFrame(); - NS_ENSURE_TRUE(sf, NS_ERROR_FAILURE); - - nsSize portSize = sf->GetScrollPortRect().Size(); - nsRect range = sf->GetScrollRange(); - - switch (scrollOrientation) { - case ScrollOrientation_X: - *minPos = range.x; - *maxPos = range.XMost() + portSize.width; - return NS_OK; - - case ScrollOrientation_Y: - *minPos = range.y; - *maxPos = range.YMost() + portSize.height; - return NS_OK; - - default: - NS_ENSURE_TRUE(false, NS_ERROR_INVALID_ARG); - } -} - -NS_IMETHODIMP -nsDocShell::SetScrollRange(int32_t scrollOrientation, - int32_t minPos, int32_t maxPos) -{ - //XXX First Check - /* - Retrieves or Sets the valid ranges for the thumb. When maxPos is set to - something less than the current thumb position, curPos is set = to maxPos. - - @return NS_OK - Setting or Getting completed successfully. - NS_ERROR_INVALID_ARG - returned when curPos is not within the - minPos and maxPos. - */ - return NS_ERROR_FAILURE; -} - -NS_IMETHODIMP -nsDocShell::SetScrollRangeEx(int32_t minHorizontalPos, - int32_t maxHorizontalPos, int32_t minVerticalPos, - int32_t maxVerticalPos) -{ - //XXX First Check - /* - Retrieves or Sets the valid ranges for the thumb. When maxPos is set to - something less than the current thumb position, curPos is set = to maxPos. - - @return NS_OK - Setting or Getting completed successfully. - NS_ERROR_INVALID_ARG - returned when curPos is not within the - minPos and maxPos. - */ - return NS_ERROR_FAILURE; -} - -// This returns setting for all documents in this docshell NS_IMETHODIMP nsDocShell::GetDefaultScrollbarPreferences(int32_t scrollOrientation, int32_t * scrollbarPref) @@ -5943,15 +5855,6 @@ nsDocShell::GetDefaultScrollbarPreferences(int32_t scrollOrientation, return NS_ERROR_FAILURE; } -// Set scrolling preference for all documents in this shell -// -// There are three possible values stored in the shell: -// 1) nsIScrollable::Scrollbar_Never = no scrollbar -// 2) nsIScrollable::Scrollbar_Auto = scrollbar appears if the document -// being displayed would normally have scrollbar -// 3) nsIScrollable::Scrollbar_Always = scrollbar always appears -// -// One important client is nsHTMLFrameInnerFrame::CreateWebShell() NS_IMETHODIMP nsDocShell::SetDefaultScrollbarPreferences(int32_t scrollOrientation, int32_t scrollbarPref) diff --git a/docshell/base/nsDocShell.h b/docshell/base/nsDocShell.h index 32a59c5a82c3..225ef49e5ebb 100644 --- a/docshell/base/nsDocShell.h +++ b/docshell/base/nsDocShell.h @@ -637,6 +637,9 @@ protected: // Convenience method for getting our parent docshell. Can return null already_AddRefed GetParentDocshell(); protected: + nsresult GetCurScrollPos(int32_t scrollOrientation, int32_t * curPos); + nsresult SetCurScrollPosEx(int32_t curHorizontalPos, int32_t curVerticalPos); + // Override the parent setter from nsDocLoader virtual nsresult SetDocLoaderParent(nsDocLoader * aLoader); diff --git a/docshell/base/nsIScrollable.idl b/docshell/base/nsIScrollable.idl index 4f69c6097f64..931469528d69 100644 --- a/docshell/base/nsIScrollable.idl +++ b/docshell/base/nsIScrollable.idl @@ -1,4 +1,5 @@ -/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- +/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * vim: set ts=2 sw=2 et tw=78: * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this @@ -9,92 +10,46 @@ /** * The nsIScrollable is an interface that can be implemented by a control that * supports scrolling. This is a generic interface without concern for the - * type of content that may be inside. It simply deals blindly with scroll - * position as a composite of the lowest possible scroll position, the highest - * possible position and the current position lying somewhere between the - * min and the max. - * - * XXXroc in our tree, only get/setDefaultScrollbarPreferences and - * getScrollbarVisibility are actually used externally. We should gut - * the rest. nsDocShell is using twips for all these coordinates - * which is going to confuse people anyway... + * type of content that may be inside. */ - -[scriptable, uuid(919e792a-6490-40b8-bba5-f9e9ad5640c8)] +[scriptable, uuid(3507fc93-313e-4a4c-8ca8-4d0ea0f97315)] interface nsIScrollable : nsISupports { - /* - Constants declaring the two scroll orientations a scroll bar can be in. - ScrollOrientation_X - Horizontal scrolling. When passing this - in to a scroll position method you are requesting or - setting the positions for the horizontal scroll bar. - ScrollOrientation_Y - Vertical scrolling. When passing this - in to a scroll position you are requesting or setting - the positions for the vertical scroll bar. - */ - const long ScrollOrientation_X = 1; - const long ScrollOrientation_Y = 2; + /** + * Constants declaring the two scroll orientations a scrollbar can be in. + * ScrollOrientation_X - Horizontal scrolling. When passing this + * in to a method you are requesting or setting data for the + * horizontal scrollbar. + * ScrollOrientation_Y - Vertical scrolling. When passing this + * in to a method you are requesting or setting data for the + * vertical scrollbar. + */ + const long ScrollOrientation_X = 1; + const long ScrollOrientation_Y = 2; - /* - Retrieves or Sets the current thumb position to the curPos passed in for the - scrolling orientation passed in. curPos should be between minPos and maxPos. + /** + * Constants declaring the states of the scrollbars. + * ScrollPref_Auto - bars visible only when needed. + * ScrollPref_Never - bars never visible, even when scrolling still possible. + * ScrollPref_Always - bars always visible, even when scrolling is not possible + */ + const long Scrollbar_Auto = 1; + const long Scrollbar_Never = 2; + const long Scrollbar_Always = 3; - @return NS_OK - Setting or Getting completed successfully. - NS_ERROR_INVALID_ARG - returned when curPos is not within the - minPos and maxPos. - */ - long getCurScrollPos(in long scrollOrientation); - void setCurScrollPos(in long scrollOrientation, in long curPos); + /** + * Get or set the default scrollbar state for all documents in + * this shell. + */ + long getDefaultScrollbarPreferences(in long scrollOrientation); + void setDefaultScrollbarPreferences(in long scrollOrientation, + in long scrollbarPref); - /* - This function atomizes the ability to scroll in two dimensions at the same - time. - */ - void setCurScrollPosEx(in long curHorizontalPos, in long curVerticalPos); - - /* - Retrieves or Sets the valid ranges for the thumb. When maxPos is set to - something less than the current thumb position, curPos is set = to maxPos. - - @return NS_OK - Setting or Getting completed successfully. - NS_ERROR_INVALID_ARG - returned when curPos is not within the - minPos and maxPos. - */ - void getScrollRange(in long scrollOrientation, out long minPos, out long maxPos); - void setScrollRange(in long scrollOrientation, in long minPos, in long maxPos); - - /* - This function atomizes the ability to set the ranges in two dimensions at - the same time. - */ - void setScrollRangeEx(in long minHorizontalPos, in long maxHorizontalPos, - in long minVerticalPos, in long maxVerticalPos); - - /* - Constants declaring the states of the scroll bars. - ScrollPref_Auto - bars visible only when needed. - ScrollPref_Never - bars never visible, even when scrolling still possible. - ScrollPref_Always - bars always visible, even when scrolling is not possible - */ - const long Scrollbar_Auto = 1; - const long Scrollbar_Never = 2; - const long Scrollbar_Always = 3; - - /* - Retrieves or Set the preferences for the scroll bar. - current is 'scrolling preference for this document' - default is 'scrolling preference for all documents in this shell' - resetScrollbarPreferences resets current to default - */ - long getDefaultScrollbarPreferences(in long scrollOrientation); - void setDefaultScrollbarPreferences(in long scrollOrientation, in long scrollbarPref); - - /* - Get information about whether the vertical and horizontal scrollbars are - currently visible. nullptr is a valid argument. If you are only interested - in one of the visibility settings pass nullptr in for the one you aren't - interested in. - */ - void getScrollbarVisibility(out boolean verticalVisible, - out boolean horizontalVisible); + /** + * Get information about whether the vertical and horizontal scrollbars are + * currently visible. If you are only interested in one of the visibility + * settings pass nullptr in for the one you aren't interested in. + */ + void getScrollbarVisibility(out boolean verticalVisible, + out boolean horizontalVisible); }; diff --git a/embedding/browser/webBrowser/nsWebBrowser.cpp b/embedding/browser/webBrowser/nsWebBrowser.cpp index 3b3744e82575..c4c6e8062d78 100644 --- a/embedding/browser/webBrowser/nsWebBrowser.cpp +++ b/embedding/browser/webBrowser/nsWebBrowser.cpp @@ -1490,58 +1490,6 @@ NS_IMETHODIMP nsWebBrowser::SetTitle(const PRUnichar* aTitle) // nsWebBrowser::nsIScrollable //***************************************************************************** -NS_IMETHODIMP nsWebBrowser::GetCurScrollPos(int32_t aScrollOrientation, - int32_t* aCurPos) -{ - NS_ENSURE_STATE(mDocShell); - - return mDocShellAsScrollable->GetCurScrollPos(aScrollOrientation, aCurPos); -} - -NS_IMETHODIMP nsWebBrowser::SetCurScrollPos(int32_t aScrollOrientation, - int32_t aCurPos) -{ - NS_ENSURE_STATE(mDocShell); - - return mDocShellAsScrollable->SetCurScrollPos(aScrollOrientation, aCurPos); -} - -NS_IMETHODIMP nsWebBrowser::SetCurScrollPosEx(int32_t aCurHorizontalPos, - int32_t aCurVerticalPos) -{ - NS_ENSURE_STATE(mDocShell); - - return mDocShellAsScrollable->SetCurScrollPosEx(aCurHorizontalPos, - aCurVerticalPos); -} - -NS_IMETHODIMP nsWebBrowser::GetScrollRange(int32_t aScrollOrientation, - int32_t* aMinPos, int32_t* aMaxPos) -{ - NS_ENSURE_STATE(mDocShell); - - return mDocShellAsScrollable->GetScrollRange(aScrollOrientation, aMinPos, - aMaxPos); -} - -NS_IMETHODIMP nsWebBrowser::SetScrollRange(int32_t aScrollOrientation, - int32_t aMinPos, int32_t aMaxPos) -{ - NS_ENSURE_STATE(mDocShell); - - return mDocShellAsScrollable->SetScrollRange(aScrollOrientation, aMinPos, - aMaxPos); -} - -NS_IMETHODIMP nsWebBrowser::SetScrollRangeEx(int32_t aMinHorizontalPos, - int32_t aMaxHorizontalPos, int32_t aMinVerticalPos, int32_t aMaxVerticalPos) -{ - NS_ENSURE_STATE(mDocShell); - - return mDocShellAsScrollable->SetScrollRangeEx(aMinHorizontalPos, - aMaxHorizontalPos, aMinVerticalPos, aMaxVerticalPos); -} - NS_IMETHODIMP nsWebBrowser::GetDefaultScrollbarPreferences(int32_t aScrollOrientation, int32_t* aScrollbarPref) { diff --git a/embedding/browser/webBrowser/nsWebBrowser.h b/embedding/browser/webBrowser/nsWebBrowser.h index 52bdf997e92d..3782e95d233f 100644 --- a/embedding/browser/webBrowser/nsWebBrowser.h +++ b/embedding/browser/webBrowser/nsWebBrowser.h @@ -68,9 +68,9 @@ public: nsIID mID; }; -// {F1EAC761-87E9-11d3-AF80-00A024FFC08C} - +// {cda5863a-aa9c-411e-be49-ea0d525ab4b5} - #define NS_WEBBROWSER_CID \ -{0xf1eac761, 0x87e9, 0x11d3, { 0xaf, 0x80, 0x00, 0xa0, 0x24, 0xff, 0xc0, 0x8c }} +{0xcda5863a, 0xaa9c, 0x411e, { 0xbe, 0x49, 0xea, 0x0d, 0x52, 0x5a, 0xb4, 0xb5 }} class nsWebBrowser : public nsIWebBrowser, diff --git a/layout/base/nsCSSFrameConstructor.cpp b/layout/base/nsCSSFrameConstructor.cpp index e98a4010d5b5..293bafab50a9 100644 --- a/layout/base/nsCSSFrameConstructor.cpp +++ b/layout/base/nsCSSFrameConstructor.cpp @@ -2653,16 +2653,6 @@ nsCSSFrameConstructor::SetUpDocElementContainingBlock(nsIContent* aDocElement) // will act as the scrolling mechanism for the viewport. // XXX Do we even need a viewport when printing to a printer? - // As long as the docshell doesn't prohibit it, and the device supports - // it, create a scroll frame that will act as the scolling mechanism for - // the viewport. - // - // Threre are three possible values stored in the docshell: - // 1) nsIScrollable::Scrollbar_Never = no scrollbars - // 2) nsIScrollable::Scrollbar_Auto = scrollbars appear if needed - // 3) nsIScrollable::Scrollbar_Always = scrollbars always - // Only need to create a scroll frame/view for cases 2 and 3. - bool isHTML = aDocElement->IsHTML(); bool isXUL = false;