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

85 lines
1.7 KiB
Ucode

// ====================================================================
// Class: GUITreeScrollBar
//
// The GUITreeScrollBar is used with the GUITreeListBox.
//
// Written by Bruce Bickar
// (c) 2002, 2003, Epic Games, Inc. All Rights Reserved
// ====================================================================
class GUITreeScrollBar extends GUIVertScrollBar;
var() editconst noexport GUITreeList List;
function SetList( GUIListBase InList )
{
Super.SetList(InList);
List = GUITreeList(InList);
if ( List != None )
ItemCount = List.VisibleCount;
}
function UpdateGripPosition(float NewPos)
{
if (List != none)
{
List.MakeVisible(NewPos);
ItemCount = List.VisibleCount;
}
GripPos = NewPos;
CurPos = (ItemCount-ItemsPerPage)*GripPos;
PositionChanged(CurPos);
}
delegate MoveGripBy(int items)
{
local int NewItem;
if (List != none)
{
NewItem = List.Top + items;
ItemCount = List.VisibleCount;
if (ItemCount > 0)
{
List.SetTopItem(NewItem);
// AlignThumb();
}
}
CurPos += items;
if (CurPos < 0)
CurPos = 0;
if (CurPos > ItemCount-ItemsPerPage)
CurPos = ItemCount-ItemsPerPage;
if ( List == None && ItemCount > 0 )
AlignThumb();
PositionChanged(CurPos);
}
delegate AlignThumb()
{
local float NewPos;
if (List != none)
{
BigStep = List.ItemsPerPage * Step;
if (List.ItemCount==0)
NewPos = 0;
else
NewPos = float(List.Top) / float(List.VisibleCount-List.ItemsPerPage);
}
else {
if (ItemCount==0)
NewPos = 0;
else
NewPos = CurPos / float(ItemCount-ItemsPerPage);
}
GripPos = FClamp(NewPos, 0.0, 1.0);
}
defaultproperties
{
}