Prevent MapEditor 'pinch zoom' painting tiles (#9101)

This commit is contained in:
SomeTroglodyte 2023-04-03 16:06:11 +02:00 committed by GitHub
parent 0dcc15ccc3
commit ca36c0e6e6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 1 deletions

View File

@ -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()

View File

@ -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) {