Mousewheel scrolls ScrollPanel.

This commit is contained in:
Paul Chote
2011-01-03 11:32:43 +13:00
parent 1ced0d7ab9
commit 6e7156e023
5 changed files with 31 additions and 9 deletions

View File

@@ -43,10 +43,12 @@ namespace OpenRA
[Flags]
public enum MouseButton
{
None = (int)MouseButtons.None,
Left = (int)MouseButtons.Left,
Right = (int)MouseButtons.Right,
Middle = (int)MouseButtons.Middle,
None,
Left,
Right,
Middle,
WheelDown,
WheelUp
}
[Flags]

View File

@@ -110,12 +110,16 @@ namespace OpenRA.Widgets
return EventBounds;
}
void Scroll(int direction)
{
ListOffset += direction*ScrollVelocity;
ListOffset = Math.Min(0,Math.Max(RenderBounds.Height - ContentHeight, ListOffset));
}
public override void Tick ()
{
if (UpPressed && ListOffset <= 0) ListOffset += ScrollVelocity;
if (DownPressed) ListOffset -= ScrollVelocity;
ListOffset = Math.Min(0,Math.Max(RenderBounds.Height - ContentHeight, ListOffset));
if (UpPressed) Scroll(1);
if (DownPressed) Scroll(-1);
}
public override bool LoseFocus (MouseInput mi)
@@ -127,6 +131,18 @@ namespace OpenRA.Widgets
int2 lastMouseLocation;
public override bool HandleInputInner(MouseInput mi)
{
if (mi.Button == MouseButton.WheelDown)
{
Scroll(-1);
return true;
}
if (mi.Button == MouseButton.WheelUp)
{
Scroll(1);
return true;
}
if (mi.Button != MouseButton.Left)
return false;

View File

@@ -194,7 +194,7 @@ namespace OpenRA.Widgets
return EventBounds.Contains(pos.ToPoint()) ? GetCursor(pos) : null;
}
public virtual bool HandleInputInner(MouseInput mi) { return !ClickThrough; }
public virtual bool HandleInputInner(MouseInput mi) { return !ClickThrough && mi.Button == MouseButton.Left; }
public static bool HandleInput(MouseInput mi)
{

View File

@@ -143,6 +143,8 @@ namespace OpenRA.Renderer.Cg
return b == Sdl.SDL_BUTTON_LEFT ? MouseButton.Left
: b == Sdl.SDL_BUTTON_RIGHT ? MouseButton.Right
: b == Sdl.SDL_BUTTON_MIDDLE ? MouseButton.Middle
: b == Sdl.SDL_BUTTON_WHEELDOWN ? MouseButton.WheelDown
: b == Sdl.SDL_BUTTON_WHEELUP ? MouseButton.WheelUp
: 0;
}

View File

@@ -139,6 +139,8 @@ namespace OpenRA.Renderer.Glsl
return b == Sdl.SDL_BUTTON_LEFT ? MouseButton.Left
: b == Sdl.SDL_BUTTON_RIGHT ? MouseButton.Right
: b == Sdl.SDL_BUTTON_MIDDLE ? MouseButton.Middle
: b == Sdl.SDL_BUTTON_WHEELDOWN ? MouseButton.WheelDown
: b == Sdl.SDL_BUTTON_WHEELUP ? MouseButton.WheelUp
: 0;
}