Support bottom-aligned scroll panels.

This commit is contained in:
Paul Chote
2013-10-22 20:32:45 +13:00
parent c5c518dbce
commit cfb6e149b3

View File

@@ -18,6 +18,8 @@ namespace OpenRA.Widgets
{
public interface ILayout { void AdjustChild(Widget w); void AdjustChildren(); }
public enum ScrollPanelAlign { Bottom, Top }
public class ScrollPanelWidget : Widget
{
public int ScrollbarWidth = 24;
@@ -28,6 +30,7 @@ namespace OpenRA.Widgets
public int ContentHeight = 0;
public ILayout Layout;
public int MinimumThumbSize = 10;
public ScrollPanelAlign Align = ScrollPanelAlign.Top;
protected float ListOffset = 0;
protected bool UpPressed = false;
protected bool DownPressed = false;
@@ -135,12 +138,15 @@ namespace OpenRA.Widgets
public void ScrollToBottom()
{
ListOffset = Math.Min(0,Bounds.Height - ContentHeight);
ListOffset = Align == ScrollPanelAlign.Top ?
Math.Min(0, Bounds.Height - ContentHeight) :
Bounds.Height - ContentHeight;
}
public void ScrollToTop()
{
ListOffset = 0;
ListOffset = Align == ScrollPanelAlign.Top ? 0 :
Math.Max(0, Bounds.Height - ContentHeight);
}
public bool ScrolledToBottom