diff --git a/OpenRA.Game/Game.cs b/OpenRA.Game/Game.cs index fd4949e96a..9bf037ec88 100644 --- a/OpenRA.Game/Game.cs +++ b/OpenRA.Game/Game.cs @@ -42,6 +42,7 @@ namespace OpenRA public static Renderer Renderer; public static Session LobbyInfo = new Session(); + public static bool HasInputFocus = false; static void LoadMap(string uid) { diff --git a/OpenRA.Game/Widgets/ViewportScrollControllerWidget.cs b/OpenRA.Game/Widgets/ViewportScrollControllerWidget.cs index 07f2f3c7a8..64dd0a5a42 100644 --- a/OpenRA.Game/Widgets/ViewportScrollControllerWidget.cs +++ b/OpenRA.Game/Widgets/ViewportScrollControllerWidget.cs @@ -125,7 +125,7 @@ namespace OpenRA.Widgets public override void Tick(World world) { Edge = ScrollDirection.None; - if (Game.Settings.Game.ViewportEdgeScroll) + if (Game.Settings.Game.ViewportEdgeScroll && Game.HasInputFocus) { // Check for edge-scroll if (Viewport.LastMousePos.X < EdgeScrollThreshold) @@ -137,6 +137,7 @@ namespace OpenRA.Widgets if (Viewport.LastMousePos.Y >= Game.viewport.Height - EdgeScrollThreshold) Edge = Edge.Set(ScrollDirection.Down, true); } + if(Keyboard != ScrollDirection.None || Edge != ScrollDirection.None) { var scroll = new float2(0,0); diff --git a/OpenRA.Gl/GraphicsDevice.cs b/OpenRA.Gl/GraphicsDevice.cs index 8b30561756..f6242c878c 100755 --- a/OpenRA.Gl/GraphicsDevice.cs +++ b/OpenRA.Gl/GraphicsDevice.cs @@ -182,7 +182,8 @@ namespace OpenRA.GlRenderer public void Present() { Sdl.SDL_GL_SwapBuffers(); - + Game.HasInputFocus = 0 != (Sdl.SDL_GetAppState() & Sdl.SDL_APPINPUTFOCUS); + var mods = MakeModifiers(Sdl.SDL_GetModState()); Game.HandleModifierKeys(mods); MouseEventArgs pendingMotion = null;