From a522982dac07d563a0649114fb9c84219e99e65c Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Wed, 16 Sep 2026 05:52:48 +0200 Subject: [PATCH] fix(developer): address crashes in touch layout editor Crashes reported in user testing on #16520. * Fix crash selecting layer after deleting a layer (from #16509) * Fix crash resetting 'next layer' for flicks after layer deletion (long-standing issue) See-also: #16509 See-also: #16520 Cherry-picked-from: 099d039952260e069f61954fc6b29b51b1036960 --- developer/src/tike/xml/layoutbuilder/builder.js | 10 +++++++++- developer/src/tike/xml/layoutbuilder/layer-controls.js | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/developer/src/tike/xml/layoutbuilder/builder.js b/developer/src/tike/xml/layoutbuilder/builder.js index b81707fa3ca..486bce81f9e 100644 --- a/developer/src/tike/xml/layoutbuilder/builder.js +++ b/developer/src/tike/xml/layoutbuilder/builder.js @@ -508,8 +508,16 @@ $(function() { this.selectLayer = function (val) { let selection = builder.saveSelection(); - if(val) $('#selLayer').val(val); + if(val !== null && val !== undefined) { + $('#selLayer').val(val); + } builder.lastLayerIndex = $('#selLayer').val(); + if(builder.lastLayerIndex === null) { + // If the layer has just been deleted, go to the first layer + builder.lastLayerIndex = 0; + builder.lastLayers[builder.lastPlatform] = 0; + $('#selLayer').val(builder.lastLayerIndex); + } builder.prepareLayer(); builder.restoreSelection(selection); } diff --git a/developer/src/tike/xml/layoutbuilder/layer-controls.js b/developer/src/tike/xml/layoutbuilder/layer-controls.js index 765aa5c2bd1..e1cf11ac34d 100644 --- a/developer/src/tike/xml/layoutbuilder/layer-controls.js +++ b/developer/src/tike/xml/layoutbuilder/layer-controls.js @@ -64,7 +64,7 @@ $(function() { key.sk.forEach(k => fixup(k)); } if (key.flick) { - key.flick.forEach(k => fixup(k)); + Object.keys(key.flick).forEach(k => fixup(key.flick[k])); } if (key.multitap) { key.multitap.forEach(k => fixup(k));