From cb726f40fa83c6c6676ec43188eeb2ddc55b4d29 Mon Sep 17 00:00:00 2001 From: Saq Imtiaz Date: Thu, 15 Jul 2021 22:59:07 +0200 Subject: [PATCH] Fix: bug with List Widget where the counter-last variable is not always accurately updated on refresh (#5883) --- core/modules/widgets/list.js | 5 +++++ editions/test/tiddlers/tests/test-widget.js | 25 +++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/core/modules/widgets/list.js b/core/modules/widgets/list.js index 17161ca21..d4b6dbf07 100755 --- a/core/modules/widgets/list.js +++ b/core/modules/widgets/list.js @@ -236,6 +236,11 @@ ListWidget.prototype.handleListChanges = function(changedTiddlers) { hasRefreshed = hasRefreshed || refreshed; } } + // If there are items to remove and we have not refreshed then recreate the item that will now be at the last position + if(!hasRefreshed && this.children.length > this.list.length) { + this.removeListItem(this.list.length-1); + this.insertListItem(this.list.length-1,this.list[this.list.length-1]); + } } else { // Cycle through the list, inserting and removing list items as needed for(t=0; tJalapeno Peppers1yesnoLemon Squash2nonoJolly Old World3nonoSomething4noyes

"); + // Test the sequence numbers in the DOM + expect(wrapper.sequenceNumber).toBe(0); + expect(wrapper.children[0].sequenceNumber).toBe(1); + expect(wrapper.children[0].children[0].sequenceNumber).toBe(18); + expect(wrapper.children[0].children[1].sequenceNumber).toBe(19); + expect(wrapper.children[0].children[2].sequenceNumber).toBe(20); + expect(wrapper.children[0].children[3].sequenceNumber).toBe(21); + expect(wrapper.children[0].children[4].sequenceNumber).toBe(22); + expect(wrapper.children[0].children[5].sequenceNumber).toBe(23); + expect(wrapper.children[0].children[6].sequenceNumber).toBe(24); + expect(wrapper.children[0].children[7].sequenceNumber).toBe(25); + expect(wrapper.children[0].children[8].sequenceNumber).toBe(26); + expect(wrapper.children[0].children[9].sequenceNumber).toBe(27); + expect(wrapper.children[0].children[10].sequenceNumber).toBe(28); + expect(wrapper.children[0].children[11].sequenceNumber).toBe(29); + expect(wrapper.children[0].children[12].sequenceNumber).toBe(50); + expect(wrapper.children[0].children[13].sequenceNumber).toBe(51); + expect(wrapper.children[0].children[14].sequenceNumber).toBe(52); + expect(wrapper.children[0].children[15].sequenceNumber).toBe(53); }); it("should deal with the list widget followed by other widgets", function() {