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] [Flags]
public enum MouseButton public enum MouseButton
{ {
None = (int)MouseButtons.None, None,
Left = (int)MouseButtons.Left, Left,
Right = (int)MouseButtons.Right, Right,
Middle = (int)MouseButtons.Middle, Middle,
WheelDown,
WheelUp
} }
[Flags] [Flags]

View File

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

View File

@@ -194,7 +194,7 @@ namespace OpenRA.Widgets
return EventBounds.Contains(pos.ToPoint()) ? GetCursor(pos) : null; 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) public static bool HandleInput(MouseInput mi)
{ {

View File

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

View File

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