mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Remove some files as part of bug 379319. r=enn sr=dbaron
This commit is contained in:
parent
250ed22ad4
commit
4777e8e1b0
@ -1,355 +0,0 @@
|
|||||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License
|
|
||||||
* Version 1.1 (the "License"); you may not use this file except in
|
|
||||||
* compliance with the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* The Original Code is mozilla.org code.
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is
|
|
||||||
* Netscape Communications Corporation.
|
|
||||||
* Portions created by the Initial Developer are Copyright (C) 2002
|
|
||||||
* the Initial Developer. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
||||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the NPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
|
|
||||||
#include "nsNativeScrollbarFrame.h"
|
|
||||||
#include "nsGkAtoms.h"
|
|
||||||
#include "nsBoxLayoutState.h"
|
|
||||||
#include "nsComponentManagerUtils.h"
|
|
||||||
#include "nsGUIEvent.h"
|
|
||||||
#include "nsIDeviceContext.h"
|
|
||||||
#include "nsIView.h"
|
|
||||||
#include "nsINativeScrollbar.h"
|
|
||||||
#include "nsIScrollbarFrame.h"
|
|
||||||
#include "nsIScrollbarMediator.h"
|
|
||||||
#include "nsWidgetsCID.h"
|
|
||||||
#include "nsINameSpaceManager.h"
|
|
||||||
|
|
||||||
//
|
|
||||||
// NS_NewNativeScrollbarFrame
|
|
||||||
//
|
|
||||||
// Creates a new scrollbar frame and returns it
|
|
||||||
//
|
|
||||||
nsIFrame*
|
|
||||||
NS_NewNativeScrollbarFrame (nsIPresShell* aPresShell, nsStyleContext* aContext)
|
|
||||||
{
|
|
||||||
return new (aPresShell) nsNativeScrollbarFrame (aPresShell, aContext);
|
|
||||||
} // NS_NewNativeScrollbarFrame
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// QueryInterface
|
|
||||||
//
|
|
||||||
NS_IMETHODIMP
|
|
||||||
nsNativeScrollbarFrame::QueryInterface(const nsIID& aIID, void** aInstancePtr)
|
|
||||||
{
|
|
||||||
if (!aInstancePtr) {
|
|
||||||
return NS_ERROR_NULL_POINTER;
|
|
||||||
}
|
|
||||||
if (aIID.Equals(NS_GET_IID(nsIScrollbarMediator))) {
|
|
||||||
*aInstancePtr = (void*) ((nsIScrollbarMediator*) this);
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
return nsBoxFrame::QueryInterface(aIID, aInstancePtr);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Init
|
|
||||||
//
|
|
||||||
// Pass along to our parent, but also create the native widget that we wrap.
|
|
||||||
//
|
|
||||||
NS_IMETHODIMP
|
|
||||||
nsNativeScrollbarFrame::Init(nsIContent* aContent,
|
|
||||||
nsIFrame* aParent,
|
|
||||||
nsIFrame* aPrevInFlow)
|
|
||||||
{
|
|
||||||
nsresult rv = nsBoxFrame::Init(aContent, aParent, aPrevInFlow);
|
|
||||||
|
|
||||||
// create a view for this frame and then associate the view with the native
|
|
||||||
// scrollbar widget. The net result of this is that the view will automatically
|
|
||||||
// be resized and moved for us when things reflow, and the widget will follow
|
|
||||||
// suit. We don't have to lift a finger!
|
|
||||||
static NS_DEFINE_IID(kScrollbarCID, NS_NATIVESCROLLBAR_CID);
|
|
||||||
if ( NS_SUCCEEDED(CreateViewForFrame(PresContext(), this, GetStyleContext(), PR_TRUE)) ) {
|
|
||||||
nsIView* myView = GetView();
|
|
||||||
if ( myView ) {
|
|
||||||
nsWidgetInitData widgetData;
|
|
||||||
if ( NS_SUCCEEDED(myView->CreateWidget(kScrollbarCID, &widgetData, nsnull)) ) {
|
|
||||||
mScrollbar = myView->GetWidget();
|
|
||||||
if (mScrollbar) {
|
|
||||||
mScrollbar->Show(PR_TRUE);
|
|
||||||
mScrollbar->Enable(PR_TRUE);
|
|
||||||
|
|
||||||
// defer telling the scrollbar about the mediator and the content
|
|
||||||
// node until its first reflow since not everything has been set
|
|
||||||
// by this point.
|
|
||||||
mScrollbarNeedsContent = PR_TRUE;
|
|
||||||
} else {
|
|
||||||
NS_WARNING("Couldn't create native scrollbar!");
|
|
||||||
return NS_ERROR_FAILURE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
nsNativeScrollbarFrame::Destroy()
|
|
||||||
{
|
|
||||||
nsCOMPtr<nsINativeScrollbar> scrollbar(do_QueryInterface(mScrollbar));
|
|
||||||
if (scrollbar) {
|
|
||||||
// frame is going away, unhook the native scrollbar from
|
|
||||||
// the content node just to be safe about lifetime issues
|
|
||||||
scrollbar->SetContent(nsnull, nsnull, nsnull);
|
|
||||||
}
|
|
||||||
|
|
||||||
nsBoxFrame::Destroy();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// FindParts
|
|
||||||
//
|
|
||||||
// Walk up the parent frame tree and find the content node of the frame
|
|
||||||
// with the tag "scrollbar". This is the content node that the GFX Scroll Frame
|
|
||||||
// is watching for attribute changes. We return the associated frame and
|
|
||||||
// any mediator.
|
|
||||||
//
|
|
||||||
nsNativeScrollbarFrame::Parts
|
|
||||||
nsNativeScrollbarFrame::FindParts()
|
|
||||||
{
|
|
||||||
nsIFrame* f;
|
|
||||||
for (f = GetParent(); f; f = f->GetParent()) {
|
|
||||||
nsIContent* currContent = f->GetContent();
|
|
||||||
|
|
||||||
if (currContent && currContent->Tag() == nsGkAtoms::scrollbar) {
|
|
||||||
nsIScrollbarFrame* sb;
|
|
||||||
CallQueryInterface(f, &sb);
|
|
||||||
if (sb)
|
|
||||||
return Parts(f, sb, sb->GetScrollbarMediator());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return Parts(nsnull, nsnull, nsnull);
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
|
||||||
nsNativeScrollbarFrame::Reflow(nsPresContext* aPresContext,
|
|
||||||
nsHTMLReflowMetrics& aDesiredSize,
|
|
||||||
const nsHTMLReflowState& aReflowState,
|
|
||||||
nsReflowStatus& aStatus)
|
|
||||||
{
|
|
||||||
nsresult rv = nsBoxFrame::Reflow(aPresContext, aDesiredSize, aReflowState, aStatus);
|
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
|
||||||
|
|
||||||
// nsGfxScrollFrame may have told us to shrink to nothing. If so, make sure our
|
|
||||||
// desired size agrees.
|
|
||||||
if (aReflowState.availableWidth == 0) {
|
|
||||||
aDesiredSize.width = 0;
|
|
||||||
}
|
|
||||||
if (aReflowState.availableHeight == 0) {
|
|
||||||
aDesiredSize.height = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// AttributeChanged
|
|
||||||
//
|
|
||||||
// We inherit changes to certain attributes from the parent's content node. These
|
|
||||||
// occur when gecko changes the values of the scrollbar or scrolls the content area
|
|
||||||
// by some means other than our scrollbar (keyboard, scrollwheel, etc). Update
|
|
||||||
// our native scrollbar with the correct values.
|
|
||||||
//
|
|
||||||
NS_IMETHODIMP
|
|
||||||
nsNativeScrollbarFrame::AttributeChanged(PRInt32 aNameSpaceID,
|
|
||||||
nsIAtom* aAttribute,
|
|
||||||
PRInt32 aModType)
|
|
||||||
{
|
|
||||||
nsresult rv = nsBoxFrame::AttributeChanged(aNameSpaceID, aAttribute,
|
|
||||||
aModType);
|
|
||||||
|
|
||||||
if ( aAttribute == nsGkAtoms::curpos ||
|
|
||||||
aAttribute == nsGkAtoms::maxpos ||
|
|
||||||
aAttribute == nsGkAtoms::pageincrement ||
|
|
||||||
aAttribute == nsGkAtoms::increment ) {
|
|
||||||
nsAutoString valueStr;
|
|
||||||
mContent->GetAttr(aNameSpaceID, aAttribute, valueStr);
|
|
||||||
|
|
||||||
PRInt32 error;
|
|
||||||
PRInt32 value = valueStr.ToInteger(&error);
|
|
||||||
if (value < 0)
|
|
||||||
value = 1; // just be safe and sanity check, scrollbar expects unsigned
|
|
||||||
|
|
||||||
nsCOMPtr<nsINativeScrollbar> scrollbar(do_QueryInterface(mScrollbar));
|
|
||||||
if (scrollbar) {
|
|
||||||
if (aAttribute == nsGkAtoms::maxpos) {
|
|
||||||
// bounds check it
|
|
||||||
PRUint32 maxValue = (PRUint32)value;
|
|
||||||
PRUint32 current;
|
|
||||||
scrollbar->GetPosition(¤t);
|
|
||||||
if (current > maxValue)
|
|
||||||
{
|
|
||||||
PRInt32 oldPosition = (PRInt32)current;
|
|
||||||
PRInt32 curPosition = maxValue;
|
|
||||||
|
|
||||||
Parts parts = FindParts();
|
|
||||||
if (parts.mMediator) {
|
|
||||||
parts.mMediator->PositionChanged(parts.mIScrollbarFrame, oldPosition, /* inout */ curPosition);
|
|
||||||
}
|
|
||||||
|
|
||||||
nsAutoString currentStr;
|
|
||||||
currentStr.AppendInt(curPosition);
|
|
||||||
parts.mScrollbarFrame->GetContent()->
|
|
||||||
SetAttr(kNameSpaceID_None, nsGkAtoms::curpos, currentStr, PR_TRUE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( aAttribute == nsGkAtoms::curpos )
|
|
||||||
scrollbar->SetPosition(value);
|
|
||||||
else if ( aAttribute == nsGkAtoms::maxpos )
|
|
||||||
scrollbar->SetMaxRange(value);
|
|
||||||
else if ( aAttribute == nsGkAtoms::pageincrement ) // poorly named, actually the height of the visible view area
|
|
||||||
scrollbar->SetViewSize(value);
|
|
||||||
else if ( aAttribute == nsGkAtoms::increment )
|
|
||||||
scrollbar->SetLineIncrement(value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// GetPrefSize
|
|
||||||
//
|
|
||||||
// Ask our native widget what dimensions it wants to be, convert them
|
|
||||||
// back to twips, and tell gecko.
|
|
||||||
//
|
|
||||||
nsSize
|
|
||||||
nsNativeScrollbarFrame::GetPrefSize(nsBoxLayoutState& aState)
|
|
||||||
{
|
|
||||||
nsSize size(0,0);
|
|
||||||
DISPLAY_PREF_SIZE(this, size);
|
|
||||||
|
|
||||||
PRInt32 narrowDimension = 0;
|
|
||||||
nsCOMPtr<nsINativeScrollbar> native ( do_QueryInterface(mScrollbar) );
|
|
||||||
if ( !native ) return size;
|
|
||||||
native->GetNarrowSize(&narrowDimension);
|
|
||||||
|
|
||||||
if ( IsVertical() )
|
|
||||||
size.width = aState.PresContext()->DevPixelsToAppUnits(narrowDimension);
|
|
||||||
else
|
|
||||||
size.height = aState.PresContext()->DevPixelsToAppUnits(narrowDimension);
|
|
||||||
|
|
||||||
// By now, we have both the content node for the scrollbar and the associated
|
|
||||||
// scrollbar mediator (for outliner, if applicable). Hook up the scrollbar to
|
|
||||||
// gecko
|
|
||||||
Hookup();
|
|
||||||
|
|
||||||
return size;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Hookup
|
|
||||||
//
|
|
||||||
// Connect our widget to the content node and/or scrolling mediator. This needs
|
|
||||||
// to be called late enough in the game where everything is ready. Calling it too
|
|
||||||
// early can lead to situations where the mediator hasn't yet been hooked up to the
|
|
||||||
// scrollbar frame
|
|
||||||
//
|
|
||||||
void
|
|
||||||
nsNativeScrollbarFrame::Hookup()
|
|
||||||
{
|
|
||||||
if (!mScrollbarNeedsContent)
|
|
||||||
return;
|
|
||||||
|
|
||||||
nsCOMPtr<nsINativeScrollbar> scrollbar(do_QueryInterface(mScrollbar));
|
|
||||||
if (!scrollbar) {
|
|
||||||
NS_WARNING("Native scrollbar widget doesn't implement nsINativeScrollbar");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Parts parts = FindParts();
|
|
||||||
if (!parts.mScrollbarFrame) {
|
|
||||||
// Nothing to do here
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// We can't just pass 'mediator' to the widget, because 'mediator' might go away.
|
|
||||||
// So pass a pointer to us. When we go away, we can tell the widget.
|
|
||||||
nsIContent* scrollbarContent = parts.mScrollbarFrame->GetContent();
|
|
||||||
scrollbar->SetContent(scrollbarContent,
|
|
||||||
parts.mIScrollbarFrame, parts.mMediator ? this : nsnull);
|
|
||||||
mScrollbarNeedsContent = PR_FALSE;
|
|
||||||
|
|
||||||
if (!scrollbarContent)
|
|
||||||
return;
|
|
||||||
|
|
||||||
// Check to see if the curpos attribute is already present on the content
|
|
||||||
// node. If so, notify the scrollbar.
|
|
||||||
|
|
||||||
nsAutoString value;
|
|
||||||
scrollbarContent->GetAttr(kNameSpaceID_None, nsGkAtoms::curpos, value);
|
|
||||||
|
|
||||||
PRInt32 error;
|
|
||||||
PRUint32 curpos = value.ToInteger(&error);
|
|
||||||
if (!curpos || error)
|
|
||||||
return;
|
|
||||||
|
|
||||||
scrollbar->SetPosition(curpos);
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
|
||||||
nsNativeScrollbarFrame::PositionChanged(nsISupports* aScrollbar, PRInt32 aOldIndex, PRInt32& aNewIndex)
|
|
||||||
{
|
|
||||||
Parts parts = FindParts();
|
|
||||||
if (!parts.mMediator)
|
|
||||||
return NS_OK;
|
|
||||||
return parts.mMediator->PositionChanged(aScrollbar, aOldIndex, aNewIndex);
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
|
||||||
nsNativeScrollbarFrame::ScrollbarButtonPressed(nsISupports* aScrollbar, PRInt32 aOldIndex, PRInt32 aNewIndex)
|
|
||||||
{
|
|
||||||
Parts parts = FindParts();
|
|
||||||
if (!parts.mMediator)
|
|
||||||
return NS_OK;
|
|
||||||
return parts.mMediator->ScrollbarButtonPressed(aScrollbar, aOldIndex, aNewIndex);
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
|
||||||
nsNativeScrollbarFrame::VisibilityChanged(nsISupports* aScrollbar, PRBool aVisible)
|
|
||||||
{
|
|
||||||
Parts parts = FindParts();
|
|
||||||
if (!parts.mMediator)
|
|
||||||
return NS_OK;
|
|
||||||
return parts.mMediator->VisibilityChanged(aScrollbar, aVisible);
|
|
||||||
}
|
|
@ -1,123 +0,0 @@
|
|||||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License
|
|
||||||
* Version 1.1 (the "License"); you may not use this file except in
|
|
||||||
* compliance with the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* The Original Code is mozilla.org code.
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is
|
|
||||||
* Netscape Communications Corporation.
|
|
||||||
* Portions created by the Initial Developer are Copyright (C) 2002
|
|
||||||
* the Initial Developer. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
||||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the NPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
//
|
|
||||||
// nsNativeScrollbarFrame
|
|
||||||
//
|
|
||||||
// A class that wraps a nsIWidget that is a native scrollbar
|
|
||||||
// and keeps the two in sync with the rest of gecko. Allows us to
|
|
||||||
// shim a native scrollbar into the GFX scroll-view mechanism.
|
|
||||||
//
|
|
||||||
|
|
||||||
#ifndef nsNativeScrollbarFrame_h__
|
|
||||||
#define nsNativeScrollbarFrame_h__
|
|
||||||
|
|
||||||
|
|
||||||
#include "nsScrollbarFrame.h"
|
|
||||||
#include "nsIWidget.h"
|
|
||||||
#include "nsIScrollbarMediator.h"
|
|
||||||
|
|
||||||
class nsISupportsArray;
|
|
||||||
class nsIPresShell;
|
|
||||||
class nsPresContext;
|
|
||||||
class nsIContent;
|
|
||||||
class nsStyleContext;
|
|
||||||
|
|
||||||
nsIFrame* NS_NewNativeScrollbarFrame(nsIPresShell* aPresShell, nsStyleContext* aContext);
|
|
||||||
|
|
||||||
class nsNativeScrollbarFrame : public nsBoxFrame, public nsIScrollbarMediator
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
nsNativeScrollbarFrame(nsIPresShell* aShell, nsStyleContext* aContext):
|
|
||||||
nsBoxFrame(aShell, aContext), mScrollbarNeedsContent(PR_TRUE) {}
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
NS_IMETHOD GetFrameName(nsAString& aResult) const {
|
|
||||||
return MakeFrameName(NS_LITERAL_STRING("NativeScrollbarFrame"), aResult);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
NS_IMETHOD Init(nsIContent* aContent,
|
|
||||||
nsIFrame* aParent,
|
|
||||||
nsIFrame* aPrevInFlow);
|
|
||||||
|
|
||||||
// nsIFrame overrides
|
|
||||||
NS_IMETHOD AttributeChanged(PRInt32 aNameSpaceID, nsIAtom* aAttribute, PRInt32 aModType);
|
|
||||||
|
|
||||||
NS_IMETHOD QueryInterface(const nsIID& aIID, void** aInstancePtr);
|
|
||||||
NS_IMETHOD_(nsrefcnt) AddRef() { return NS_OK; }
|
|
||||||
NS_IMETHOD_(nsrefcnt) Release() { return NS_OK; }
|
|
||||||
|
|
||||||
NS_IMETHOD Reflow(nsPresContext* aPresContext,
|
|
||||||
nsHTMLReflowMetrics& aDesiredSize,
|
|
||||||
const nsHTMLReflowState& aReflowState,
|
|
||||||
nsReflowStatus& aStatus);
|
|
||||||
|
|
||||||
virtual nsSize GetPrefSize(nsBoxLayoutState& aState);
|
|
||||||
|
|
||||||
virtual void Destroy();
|
|
||||||
|
|
||||||
// nsIScrollbarMediator forwarding
|
|
||||||
NS_IMETHOD PositionChanged(nsISupports* aScrollbar, PRInt32 aOldIndex, PRInt32& aNewIndex);
|
|
||||||
NS_IMETHOD ScrollbarButtonPressed(nsISupports* aScrollbar, PRInt32 aOldIndex, PRInt32 aNewIndex);
|
|
||||||
NS_IMETHOD VisibilityChanged(nsISupports* aScrollbar, PRBool aVisible);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
|
|
||||||
void Hookup();
|
|
||||||
|
|
||||||
struct Parts {
|
|
||||||
nsIFrame* mScrollbarFrame;
|
|
||||||
nsIScrollbarFrame* mIScrollbarFrame;
|
|
||||||
nsIScrollbarMediator* mMediator;
|
|
||||||
|
|
||||||
Parts(nsIFrame* aFrame, nsIScrollbarFrame* aIScrollbarFrame, nsIScrollbarMediator* aMediator) :
|
|
||||||
mScrollbarFrame(aFrame), mIScrollbarFrame(aIScrollbarFrame), mMediator(aMediator) {}
|
|
||||||
};
|
|
||||||
Parts FindParts();
|
|
||||||
|
|
||||||
PRBool IsVertical() const { return mIsVertical; }
|
|
||||||
|
|
||||||
private:
|
|
||||||
|
|
||||||
PRPackedBool mIsVertical;
|
|
||||||
PRPackedBool mScrollbarNeedsContent;
|
|
||||||
nsCOMPtr<nsIWidget> mScrollbar;
|
|
||||||
|
|
||||||
}; // class nsNativeScrollbarFrame
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,65 +0,0 @@
|
|||||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License
|
|
||||||
* Version 1.1 (the "License"); you may not use this file except in
|
|
||||||
* compliance with the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* The Original Code is mozilla.org code.
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is
|
|
||||||
* Netscape Communications Corporation.
|
|
||||||
* Portions created by the Initial Developer are Copyright (C) 2002
|
|
||||||
* the Initial Developer. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
||||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the NPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
|
|
||||||
#include "nsISupports.idl"
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The nsINativeScrollbar is implemented internally by Gecko as a way
|
|
||||||
* to communicate between a Gecko frame and a native scrollbar for
|
|
||||||
* purposes of shimming a native OS scrollbar into the GFX scrollframe
|
|
||||||
* mechanism.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
interface nsIFrame;
|
|
||||||
interface nsIContent;
|
|
||||||
interface nsIScrollbarMediator;
|
|
||||||
|
|
||||||
[uuid(b77380bc-610b-49e3-8df7-18cc946285c5)]
|
|
||||||
interface nsINativeScrollbar : nsISupports
|
|
||||||
{
|
|
||||||
void setContent ( in nsIContent content, in nsISupports scrollbar, in nsIScrollbarMediator mediator);
|
|
||||||
|
|
||||||
readonly attribute long narrowSize; // the width of a vertical scrollbar, height of horizontal
|
|
||||||
|
|
||||||
attribute unsigned long position; // current position of the scrollbar
|
|
||||||
attribute unsigned long maxRange; // max value of the scrollbar
|
|
||||||
attribute unsigned long lineIncrement; // number of pixels to scroll per "line" (one click of scroll arrow)
|
|
||||||
attribute unsigned long viewSize; // size of the visible area we're scrolling (in pixels)
|
|
||||||
};
|
|
Loading…
Reference in New Issue
Block a user