Fix layer selection bug by sorting hit-test by z-index

This commit is contained in:
Dariusz L
2025-08-02 19:52:08 +02:00
parent e42e08e35d
commit 4df89a793e
2 changed files with 5 additions and 0 deletions

View File

@@ -323,6 +323,8 @@ export class CanvasLayers {
this.canvas.requestSaveState(); this.canvas.requestSaveState();
} }
getLayerAtPosition(worldX, worldY) { getLayerAtPosition(worldX, worldY) {
// Always sort by zIndex so topmost is checked first
this.canvas.layers.sort((a, b) => a.zIndex - b.zIndex);
for (let i = this.canvas.layers.length - 1; i >= 0; i--) { for (let i = this.canvas.layers.length - 1; i >= 0; i--) {
const layer = this.canvas.layers[i]; const layer = this.canvas.layers[i];
// Skip invisible layers // Skip invisible layers

View File

@@ -370,6 +370,9 @@ export class CanvasLayers {
} }
getLayerAtPosition(worldX: number, worldY: number): { layer: Layer, localX: number, localY: number } | null { getLayerAtPosition(worldX: number, worldY: number): { layer: Layer, localX: number, localY: number } | null {
// Always sort by zIndex so topmost is checked first
this.canvas.layers.sort((a, b) => a.zIndex - b.zIndex);
for (let i = this.canvas.layers.length - 1; i >= 0; i--) { for (let i = this.canvas.layers.length - 1; i >= 0; i--) {
const layer = this.canvas.layers[i]; const layer = this.canvas.layers[i];