Fix and simplify ScrollPanelWidget thumb rect calculation.
This commit is contained in:
@@ -146,13 +146,16 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
UpdateSmoothScrolling();
|
UpdateSmoothScrolling();
|
||||||
|
|
||||||
var rb = RenderBounds;
|
var rb = RenderBounds;
|
||||||
|
|
||||||
var scrollbarHeight = rb.Height - 2 * ScrollbarWidth;
|
var scrollbarHeight = rb.Height - 2 * ScrollbarWidth;
|
||||||
|
|
||||||
var thumbHeight = ContentHeight == 0 ? 0 : Math.Max(MinimumThumbSize, (int)(scrollbarHeight * Math.Min(rb.Height * 1f / ContentHeight, 1f)));
|
// Scroll thumb is only visible if the content does not fit within the panel bounds
|
||||||
var thumbOrigin = rb.Y + ScrollbarWidth + (int)((scrollbarHeight - thumbHeight) * (-1f * currentListOffset / (ContentHeight - rb.Height)));
|
var thumbHeight = 0;
|
||||||
if (thumbHeight == scrollbarHeight)
|
var thumbOrigin = rb.Y + ScrollbarWidth;
|
||||||
thumbHeight = 0;
|
if (ContentHeight > rb.Height)
|
||||||
|
{
|
||||||
|
thumbHeight = Math.Max(MinimumThumbSize, scrollbarHeight * rb.Height / ContentHeight);
|
||||||
|
thumbOrigin += (int)((scrollbarHeight - thumbHeight) * currentListOffset / (rb.Height - ContentHeight));
|
||||||
|
}
|
||||||
|
|
||||||
switch (ScrollBar)
|
switch (ScrollBar)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user