From ca36c0e6e6cb0faa2e022bc67a57b13a2d5f168d Mon Sep 17 00:00:00 2001 From: SomeTroglodyte <63000004+SomeTroglodyte@users.noreply.github.com> Date: Mon, 3 Apr 2023 16:06:11 +0200 Subject: [PATCH] Prevent MapEditor 'pinch zoom' painting tiles (#9101) --- .../mapeditorscreen/EditorMapHolder.kt | 22 ++++++++++++++++++- .../mapeditorscreen/tabs/MapEditorEditTab.kt | 1 + 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/core/src/com/unciv/ui/screens/mapeditorscreen/EditorMapHolder.kt b/core/src/com/unciv/ui/screens/mapeditorscreen/EditorMapHolder.kt index 2df2ca7007..b61e164e71 100644 --- a/core/src/com/unciv/ui/screens/mapeditorscreen/EditorMapHolder.kt +++ b/core/src/com/unciv/ui/screens/mapeditorscreen/EditorMapHolder.kt @@ -17,6 +17,7 @@ import com.unciv.ui.components.tilegroups.TileSetStrings import com.unciv.ui.screens.basescreen.BaseScreen import com.unciv.ui.components.ZoomableScrollPane import com.unciv.ui.components.extensions.onClick +import com.unciv.ui.screens.basescreen.UncivStage /** @@ -43,10 +44,29 @@ class EditorMapHolder( if (editorScreen == null) touchable = Touchable.disabled continuousScrollingX = tileMap.mapParameters.worldWrap addTiles(parentScreen.stage) - if (editorScreen != null) addCaptureListener(getDragPaintListener()) + if (editorScreen != null) { + addCaptureListener(getDragPaintListener()) + setupZoomPanListeners() + } reloadMaxZoom() } + /** See also: [WorldMapHolder.setupZoomPanListeners][com.unciv.ui.screens.worldscreen.WorldMapHolder.setupZoomPanListeners] */ + private fun setupZoomPanListeners() { + + fun setActHit() { + val isEnabled = !isZooming() && !isPanning + (stage as UncivStage).performPointerEnterExitEvents = isEnabled + tileGroupMap.shouldAct = isEnabled + tileGroupMap.shouldHit = isEnabled + } + + onPanStartListener = { setActHit() } + onPanStopListener = { setActHit() } + onZoomStartListener = { setActHit() } + onZoomStopListener = { setActHit() } + } + private fun addTiles(stage: Stage) { val tileSetStrings = TileSetStrings() diff --git a/core/src/com/unciv/ui/screens/mapeditorscreen/tabs/MapEditorEditTab.kt b/core/src/com/unciv/ui/screens/mapeditorscreen/tabs/MapEditorEditTab.kt index 016e87e6c1..8fecc00fc9 100644 --- a/core/src/com/unciv/ui/screens/mapeditorscreen/tabs/MapEditorEditTab.kt +++ b/core/src/com/unciv/ui/screens/mapeditorscreen/tabs/MapEditorEditTab.kt @@ -189,6 +189,7 @@ class MapEditorEditTab( fun tileClickHandler(tile: Tile) { if (brushSize < -1 || brushSize > 5 || brushHandlerType == BrushHandlerType.None) return + if (editorScreen.mapHolder.isPanning || editorScreen.mapHolder.isZooming()) return editorScreen.hideSelection() when (brushHandlerType) {