75 lines
1.7 KiB
Ucode
75 lines
1.7 KiB
Ucode
// ====================================================================
|
|
// Class: XInterface.GUIVertScrollBar
|
|
// Parent: Xinterface.GUIScrollBarBase
|
|
//
|
|
// Custom scrollbar for vertical lists
|
|
// ====================================================================
|
|
|
|
class GUIVertScrollBar extends GUIScrollBarBase;
|
|
|
|
// Record location you grabbed the grip
|
|
function GripPressed( GUIComponent Sender, bool IsRepeat )
|
|
{
|
|
if ( !IsRepeat )
|
|
GrabOffset = Controller.MouseY - MyGripButton.ActualTop();
|
|
}
|
|
|
|
function bool GripPreDraw( GUIComponent Sender )
|
|
{
|
|
local float NewPerc;
|
|
|
|
if ( MyGripButton.MenuState != MSAT_Pressed )
|
|
return false;
|
|
|
|
// Calculate the new Grip Top using the mouse cursor location.
|
|
NewPerc = FClamp(
|
|
(Controller.MouseY - GrabOffset - MyScrollZone.ActualTop()) / (MyScrollZone.ActualHeight() - GripSize),
|
|
0.0, 1.0 );
|
|
|
|
UpdateGripPosition(NewPerc);
|
|
|
|
return true;
|
|
}
|
|
|
|
function ZoneClick(float Delta)
|
|
{
|
|
if ( Controller.MouseY < MyGripButton.Bounds[1] )
|
|
MoveGripBy(-BigStep);
|
|
else if ( Controller.MouseY > MyGripButton.Bounds[3] )
|
|
MoveGripBy(BigStep);
|
|
|
|
return;
|
|
}
|
|
|
|
defaultproperties
|
|
{
|
|
Orientation=ORIENT_Vertical
|
|
|
|
Begin Object Class=GUIVertScrollZone Name=ScrollZone
|
|
OnScrollZoneClick=ZoneClick
|
|
End Object
|
|
|
|
Begin Object Class=GUIVertScrollButton Name=UpBut
|
|
OnClick=DecreaseClick
|
|
End Object
|
|
|
|
Begin Object Class=GUIVertScrollButton Name=DownBut
|
|
OnClick=IncreaseClick
|
|
bIncreaseButton=true
|
|
End Object
|
|
|
|
Begin Object Class=GUIVertGripButton Name=Grip
|
|
OnMousePressed=GripPressed
|
|
End Object
|
|
|
|
OnPreDraw=GripPreDraw
|
|
MyScrollZone=ScrollZone
|
|
MyDecreaseButton=UpBut
|
|
MyIncreaseButton=DownBut
|
|
MyGripButton=Grip
|
|
|
|
bAcceptsInput=true
|
|
WinWidth=0.020
|
|
MinGripPixels=12
|
|
}
|