rott/kf_sources/XInterface/Classes/GUIVertScrollBar.uc
2026-07-14 20:27:09 +07:00

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
}