split Widget static bits into Ui static class

This commit is contained in:
Chris Forbes
2011-12-13 23:38:59 +13:00
parent 83055f0a17
commit ed429a3b30
60 changed files with 173 additions and 168 deletions

View File

@@ -17,7 +17,7 @@ using OpenRA.Graphics;
namespace OpenRA.Widgets
{
public abstract class Widget
public static class Ui
{
public static Widget RootWidget = new ContainerWidget();
@@ -108,10 +108,13 @@ namespace OpenRA.Widgets
{
RootWidget.RemoveChildren();
while (Widget.WindowList.Count > 0)
Widget.CloseWindow();
while (WindowList.Count > 0)
CloseWindow();
}
}
public abstract class Widget
{
// Info defined in YAML
public string Id = null;
public string X = "0";
@@ -221,6 +224,7 @@ namespace OpenRA.Widgets
}
public virtual Rectangle EventBounds { get { return RenderBounds; } }
public virtual Rectangle GetEventBounds()
{
return Children
@@ -229,16 +233,17 @@ namespace OpenRA.Widgets
.Aggregate(EventBounds, Rectangle.Union);
}
public bool Focused { get { return SelectedWidget == this; } }
public bool Focused { get { return Ui.SelectedWidget == this; } }
public virtual bool TakeFocus(MouseInput mi)
{
if (Focused)
return true;
if (SelectedWidget != null && !SelectedWidget.LoseFocus(mi))
if (Ui.SelectedWidget != null && !Ui.SelectedWidget.LoseFocus(mi))
return false;
SelectedWidget = this;
Ui.SelectedWidget = this;
return true;
}
@@ -251,8 +256,8 @@ namespace OpenRA.Widgets
public virtual bool LoseFocus()
{
if (SelectedWidget == this)
SelectedWidget = null;
if (Ui.SelectedWidget == this)
Ui.SelectedWidget = null;
return true;
}
@@ -285,17 +290,17 @@ namespace OpenRA.Widgets
if (!(Focused || (IsVisible() && GetEventBounds().Contains(mi.Location))))
return false;
var oldMouseOver = MouseOverWidget;
var oldMouseOver = Ui.MouseOverWidget;
// Send the event to the deepest children first and bubble up if unhandled
foreach (var child in Children.OfType<Widget>().Reverse())
if (child.HandleMouseInputOuter(mi))
return true;
if (IgnoreChildMouseOver)
MouseOverWidget = oldMouseOver;
Ui.MouseOverWidget = oldMouseOver;
if (mi.Event == MouseInputEvent.Move && MouseOverWidget == null && !IgnoreMouseOver)
MouseOverWidget = this;
if (mi.Event == MouseInputEvent.Move && Ui.MouseOverWidget == null && !IgnoreMouseOver)
Ui.MouseOverWidget = this;
return HandleMouseInput(mi);
}