Skip to content

Commit

Permalink
Fix dropdown lists. Visual tweaks.
Browse files Browse the repository at this point in the history
  • Loading branch information
pchote committed Jan 1, 2011
1 parent d1966ab commit a8b4e64
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 19 deletions.
17 changes: 6 additions & 11 deletions OpenRA.Game/Widgets/ButtonWidget.cs
Expand Up @@ -152,25 +152,23 @@ public static void ShowDropPanel(Widget w, Widget panel, IEnumerable<Widget> dis

public static void ShowDropDown<T>(Widget w, IEnumerable<T> ts, Func<T, int, LabelWidget> ft)
{
var dropDown = new ScrollPanelWidget
var dropDown = new ScrollPanelWidget()
{
Bounds = new Rectangle(w.RenderOrigin.X, w.RenderOrigin.Y + w.Bounds.Height, w.Bounds.Width, 100),
Visible = true,
ClickThrough = false,
OnMouseUp = mi => true,
ItemSpacing = 1
};

var y = 0;
List<LabelWidget> items = new List<LabelWidget>();
List<Widget> dismissAfter = new List<Widget>();
foreach (var t in ts)
{
var ww = ft(t, dropDown.Bounds.Width);
var ww = ft(t, dropDown.Bounds.Width - dropDown.ScrollbarWidth);
dismissAfter.Add(ww);
ww.ClickThrough = false;
ww.IsVisible = () => true;
ww.Bounds = new Rectangle(1, y, ww.Bounds.Width, ww.Bounds.Height);

ww.OnMouseMove = mi =>
{
items.Do(lw =>
Expand All @@ -181,13 +179,10 @@ public static void ShowDropDown<T>(Widget w, IEnumerable<T> ts, Func<T, int, Lab

dropDown.AddChild(ww);
items.Add(ww);

y += ww.Bounds.Height;
}

dropDown.ContentHeight = y;
dropDown.Bounds.Height = y + 2;
ShowDropPanel(w,dropDown, dismissAfter, () => true);

dropDown.Bounds.Height = Math.Min(150, dropDown.ContentHeight);
ShowDropPanel(w, dropDown, dismissAfter, () => true);
}
}
}
18 changes: 10 additions & 8 deletions OpenRA.Game/Widgets/ScrollPanelWidget.cs
Expand Up @@ -16,10 +16,10 @@ namespace OpenRA.Widgets
{
public class ScrollPanelWidget : Widget
{
public readonly string Background = "dialog3";
public readonly int ScrollbarWidth = 24;
public readonly float ScrollVelocity = 4f;
public readonly int ItemSpacing = 2;
public string Background = "dialog3";
public int ScrollbarWidth = 24;
public float ScrollVelocity = 4f;
public int ItemSpacing = 2;

public int ContentHeight = 0;
float ListOffset = 0;
Expand Down Expand Up @@ -66,15 +66,17 @@ public override void Draw( WorldRenderer wr )

var thumbHeight = ContentHeight == 0 ? 0 : (int)(ScrollbarHeight*Math.Min(RenderBounds.Height*1f/ContentHeight, 1f));
var thumbOrigin = RenderBounds.Y + ScrollbarWidth + (int)((ScrollbarHeight - thumbHeight)*(-1f*ListOffset/(ContentHeight - RenderBounds.Height)));
if (thumbHeight == ScrollbarHeight)
thumbHeight = 0;

backgroundRect = new Rectangle(RenderBounds.X, RenderBounds.Y, RenderBounds.Width - ScrollbarWidth, RenderBounds.Height);
upButtonRect = new Rectangle(RenderBounds.Right - ScrollbarWidth, RenderBounds.Y, ScrollbarWidth, ScrollbarWidth);
downButtonRect = new Rectangle(RenderBounds.Right - ScrollbarWidth, RenderBounds.Bottom - ScrollbarWidth, ScrollbarWidth, ScrollbarWidth);
scrollbarRect = new Rectangle(RenderBounds.Right - ScrollbarWidth, RenderBounds.Y + ScrollbarWidth, ScrollbarWidth, ScrollbarHeight);
thumbRect = new Rectangle(RenderBounds.Right - ScrollbarWidth, thumbOrigin, ScrollbarWidth, thumbHeight);

string upButtonBg = UpPressed ? "dialog3" : "dialog2";
string downButtonBg = DownPressed ? "dialog3" : "dialog2";
string upButtonBg = UpPressed || thumbHeight == 0 ? "dialog3" : "dialog2";
string downButtonBg = DownPressed || thumbHeight == 0 ? "dialog3" : "dialog2";
string scrollbarBg = "dialog3";
string thumbBg = "dialog2";

Expand All @@ -86,8 +88,8 @@ public override void Draw( WorldRenderer wr )
if (thumbHeight > 0)
WidgetUtils.DrawPanel(thumbBg, thumbRect);

var upOffset = UpPressed ? 4 : 3;
var downOffset = DownPressed ? 4 : 3;
var upOffset = UpPressed || thumbHeight == 0 ? 4 : 3;
var downOffset = DownPressed || thumbHeight == 0 ? 4 : 3;
WidgetUtils.DrawRGBA(ChromeProvider.GetImage("scrollbar", "up_arrow"),
new float2(upButtonRect.Left + upOffset, upButtonRect.Top + upOffset));
WidgetUtils.DrawRGBA(ChromeProvider.GetImage("scrollbar", "down_arrow"),
Expand Down

0 comments on commit a8b4e64

Please sign in to comment.