Split keyboard and mouse focus.

Fixes #3304.
Fixes #2075.
Fixes C&C chat focus bug.
This commit is contained in:
Paul Chote
2013-07-27 20:38:05 +12:00
parent ea36d05fc5
commit 7c91d6976d
16 changed files with 93 additions and 87 deletions

View File

@@ -104,7 +104,7 @@ namespace OpenRA.Widgets
ButtonWidget.DrawBackground("button", downButtonRect, downDisabled, DownPressed, downHover, false);
if (thumbHeight > 0)
ButtonWidget.DrawBackground("scrollthumb", thumbRect, false, Focused && thumbHover, thumbHover, false);
ButtonWidget.DrawBackground("scrollthumb", thumbRect, false, HasMouseFocus && thumbHover, thumbHover, false);
var upOffset = !UpPressed || upDisabled ? 4 : 4 + ButtonDepth;
var downOffset = !DownPressed || downDisabled ? 4 : 4 + ButtonDepth;
@@ -170,10 +170,10 @@ namespace OpenRA.Widgets
if (DownPressed) Scroll(-1);
}
public override bool LoseFocus (MouseInput mi)
public override bool YieldMouseFocus(MouseInput mi)
{
UpPressed = DownPressed = ThumbPressed = false;
return base.LoseFocus(mi);
return base.YieldMouseFocus(mi);
}
int2 lastMouseLocation;
@@ -194,14 +194,14 @@ namespace OpenRA.Widgets
if (mi.Button != MouseButton.Left)
return false;
if (mi.Event == MouseInputEvent.Down && !TakeFocus(mi))
if (mi.Event == MouseInputEvent.Down && !TakeMouseFocus(mi))
return false;
if (!Focused)
if (!HasMouseFocus)
return false;
if (Focused && mi.Event == MouseInputEvent.Up)
return LoseFocus(mi);
if (HasMouseFocus && mi.Event == MouseInputEvent.Up)
return YieldMouseFocus(mi);
if (ThumbPressed && mi.Event == MouseInputEvent.Move)
{