Tweaks to the scrollbar.
This commit is contained in:
Родитель
bdfa8055e2
Коммит
7794b9b80e
|
@ -34,8 +34,7 @@ public:
|
|||
|
||||
NS_IMETHOD PositionChanged(PRInt32 aOldIndex, PRInt32 aNewIndex) = 0;
|
||||
|
||||
NS_IMETHOD PagedUp() = 0;
|
||||
NS_IMETHOD PagedDown() = 0;
|
||||
NS_IMETHOD PagedUpDown() = 0;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
#include "nsDocument.h"
|
||||
#include "nsTitledButtonFrame.h"
|
||||
#include "nsScrollbarButtonFrame.h"
|
||||
|
||||
#include "nsIScrollbarListener.h"
|
||||
|
||||
nsresult
|
||||
NS_NewSliderFrame ( nsIFrame** aNewFrame )
|
||||
|
@ -68,6 +68,7 @@ NS_NewSliderFrame ( nsIFrame** aNewFrame )
|
|||
|
||||
|
||||
nsSliderFrame::nsSliderFrame()
|
||||
:mScrollbarListener(nsnull), mCurPos(0)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -455,6 +456,10 @@ nsSliderFrame::PageUpDown(nsIPresContext& aPresContext, nsIFrame* aThumbFrame, n
|
|||
// asking it for the current position and the page increment. If we are not in a scrollbar we will
|
||||
// get the values from our own node.
|
||||
nsIContent* scrollbar = GetScrollBar();
|
||||
|
||||
if (mScrollbarListener)
|
||||
mScrollbarListener->PagedUpDown(); // Let the listener decide our increment.
|
||||
|
||||
nscoord pageIncrement = GetPageIncrement(scrollbar);
|
||||
PRInt32 curpos = GetCurrentPosition(scrollbar);
|
||||
SetCurrentPosition(aPresContext, scrollbar, aThumbFrame, curpos + change*pageIncrement);
|
||||
|
@ -516,6 +521,12 @@ nsSliderFrame::CurrentPositionChanged(nsIPresContext* aPresContext)
|
|||
|
||||
// redraw just the change
|
||||
Invalidate(changeRect, PR_TRUE);
|
||||
|
||||
if (mScrollbarListener)
|
||||
mScrollbarListener->PositionChanged(mCurPos, curpos);
|
||||
|
||||
mCurPos = curpos;
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -527,6 +538,7 @@ nsSliderFrame::SetCurrentPosition(nsIPresContext& aPresContext, nsIContent* scro
|
|||
nscoord onePixel = NSIntPixelsToTwips(1, p2t);
|
||||
|
||||
// get our current position and max position from our content node
|
||||
PRInt32 curpos = GetCurrentPosition(scrollbar);
|
||||
PRInt32 maxpos = GetMaxPosition(scrollbar);
|
||||
|
||||
// get the new position and make sure it is in bounds
|
||||
|
@ -541,6 +553,8 @@ nsSliderFrame::SetCurrentPosition(nsIPresContext& aPresContext, nsIContent* scro
|
|||
// set the new position
|
||||
scrollbar->SetAttribute(kNameSpaceID_None, nsXULAtoms::curpos, nsString(ch), PR_TRUE);
|
||||
|
||||
CurrentPositionChanged(&aPresContext);
|
||||
|
||||
printf("Current Pos=%d\n",newpos);
|
||||
|
||||
}
|
||||
|
@ -759,3 +773,10 @@ nsSliderFrame::Release(void)
|
|||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
void
|
||||
nsSliderFrame::SetScrollbarListener(nsIScrollbarListener* aListener)
|
||||
{
|
||||
// Don't addref/release this, since it's actually a frame.
|
||||
mScrollbarListener = aListener;
|
||||
}
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
#include "nsIDOMMouseListener.h"
|
||||
|
||||
class nsString;
|
||||
class nsIScrollbarListener;
|
||||
|
||||
nsresult NS_NewSliderFrame(nsIFrame** aResult) ;
|
||||
|
||||
|
@ -156,6 +157,7 @@ public:
|
|||
static PRInt32 GetIntegerAttribute(nsIContent* content, nsIAtom* atom, PRInt32 defaultValue);
|
||||
static PRInt32 IsHorizontal(nsIContent* content);
|
||||
|
||||
void SetScrollbarListener(nsIScrollbarListener* aListener);
|
||||
|
||||
protected:
|
||||
|
||||
|
@ -184,6 +186,10 @@ private:
|
|||
nscoord mDragStartPx;
|
||||
nscoord mThumbStart;
|
||||
|
||||
PRInt32 mCurPos;
|
||||
|
||||
nsIScrollbarListener* mScrollbarListener;
|
||||
|
||||
}; // class nsSliderFrame
|
||||
|
||||
#endif
|
||||
|
|
Загрузка…
Ссылка в новой задаче