diff --git a/OpenRA.Mods.Common/Widgets/ViewportControllerWidget.cs b/OpenRA.Mods.Common/Widgets/ViewportControllerWidget.cs index 1b5fd7a7a0..7eb3aa5e59 100644 --- a/OpenRA.Mods.Common/Widgets/ViewportControllerWidget.cs +++ b/OpenRA.Mods.Common/Widgets/ViewportControllerWidget.cs @@ -35,6 +35,7 @@ namespace OpenRA.Mods.Common.Widgets public int EdgeCornerScrollThreshold = 35; int2? joystickScrollStart, joystickScrollEnd; + bool isStandardScrolling; static readonly Dictionary ScrollCursors = new Dictionary { @@ -214,7 +215,7 @@ namespace OpenRA.Mods.Common.Widgets var blockedDirections = worldRenderer.Viewport.GetBlockedDirections(); - if (IsJoystickScrolling) + if (IsJoystickScrolling || isStandardScrolling) { foreach (var dir in JoystickCursors) if (blockedDirections.Includes(dir.Key)) @@ -287,10 +288,19 @@ namespace OpenRA.Mods.Common.Widgets { if (mi.Event == MouseInputEvent.Move) { + isStandardScrolling = true; var d = scrollType == MouseScrollType.Inverted ? -1 : 1; worldRenderer.Viewport.Scroll((Viewport.LastMousePos - mi.Location) * d, false); return true; } + else if (mi.Event == MouseInputEvent.Up) + { + var wasStandardScrolling = isStandardScrolling; + isStandardScrolling = false; + + if (wasStandardScrolling) + return true; + } } // Tiberian Sun style click-and-drag scrolling @@ -305,7 +315,7 @@ namespace OpenRA.Mods.Common.Widgets if (mi.Event == MouseInputEvent.Up) { - var wasJoystickScrolling = IsJoystickScrolling; + var wasJoystickScrolling = joystickScrollStart.HasValue && joystickScrollEnd.HasValue; joystickScrollStart = joystickScrollEnd = null; YieldMouseFocus(mi); diff --git a/mods/cnc/chrome/editor.yaml b/mods/cnc/chrome/editor.yaml index 943bddbbab..e67fcd31a6 100644 --- a/mods/cnc/chrome/editor.yaml +++ b/mods/cnc/chrome/editor.yaml @@ -203,9 +203,6 @@ Container@EDITOR_WORLD_ROOT: Logic: LoadIngamePerfLogic, MapEditorLogic Children: Container@PERF_ROOT: - ViewportController: - Width: WINDOW_RIGHT - Height: WINDOW_BOTTOM EditorViewportController@MAP_EDITOR: Width: WINDOW_RIGHT Height: WINDOW_BOTTOM @@ -218,6 +215,10 @@ Container@EDITOR_WORLD_ROOT: Visible: false ActorPreview@DRAG_ACTOR_PREVIEW: Visible: false + ViewportController: + Width: WINDOW_RIGHT + Height: WINDOW_BOTTOM + IgnoreMouseOver: True Background@RADAR_BG: X: WINDOW_RIGHT-255 Y: 5 diff --git a/mods/ra/chrome/editor.yaml b/mods/ra/chrome/editor.yaml index fecc8bcfa8..a1d37314a0 100644 --- a/mods/ra/chrome/editor.yaml +++ b/mods/ra/chrome/editor.yaml @@ -194,12 +194,6 @@ Container@EDITOR_WORLD_ROOT: Logic: LoadIngamePerfLogic, MapEditorLogic Children: Container@PERF_ROOT: - ViewportController: - X: 0 - Y: 0 - Width: WINDOW_RIGHT - Height: WINDOW_BOTTOM - TooltipContainer: TOOLTIP_CONTAINER EditorViewportController@MAP_EDITOR: Width: WINDOW_RIGHT Height: WINDOW_BOTTOM @@ -212,6 +206,10 @@ Container@EDITOR_WORLD_ROOT: Visible: false Sprite@DRAG_LAYER_PREVIEW: Visible: false + ViewportController: + Width: WINDOW_RIGHT + Height: WINDOW_BOTTOM + IgnoreMouseOver: True Background@RADAR_BG: X: WINDOW_RIGHT-255 Y: 5