From 2a01606c59894b366ff9fbbeb7cadda2d5c70dc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Tue, 13 Jun 2017 03:41:42 +0200 Subject: [PATCH] dash: Fix some JS warnings We currently use "array[index]" to test whether an array has an element at index before using it. However nowadays gjs warns about accessing non-existent array elements, so the test itself already produces a warning. Avoid this by checking the array length before using an index to access an element. https://bugzilla.gnome.org/show_bug.cgi?id=781471 --- js/ui/dash.js | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/js/ui/dash.js b/js/ui/dash.js index 802ae5390..2252a74d8 100644 --- a/js/ui/dash.js +++ b/js/ui/dash.js @@ -756,42 +756,44 @@ const Dash = new Lang.Class({ let newIndex = 0; let oldIndex = 0; while (newIndex < newApps.length || oldIndex < oldApps.length) { + let oldApp = oldApps.length > oldIndex ? oldApps[oldIndex] : null; + let newApp = newApps.length > newIndex ? newApps[newIndex] : null; + // No change at oldIndex/newIndex - if (oldApps[oldIndex] == newApps[newIndex]) { + if (oldApp == newApp) { oldIndex++; newIndex++; continue; } // App removed at oldIndex - if (oldApps[oldIndex] && - newApps.indexOf(oldApps[oldIndex]) == -1) { + if (oldApp && newApps.indexOf(oldApp) == -1) { removedActors.push(children[oldIndex]); oldIndex++; continue; } // App added at newIndex - if (newApps[newIndex] && - oldApps.indexOf(newApps[newIndex]) == -1) { - addedItems.push({ app: newApps[newIndex], - item: this._createAppItem(newApps[newIndex]), + if (newApp && oldApps.indexOf(newApp) == -1) { + addedItems.push({ app: newApp, + item: this._createAppItem(newApp), pos: newIndex }); newIndex++; continue; } // App moved - let insertHere = newApps[newIndex + 1] && - newApps[newIndex + 1] == oldApps[oldIndex]; + let nextApp = newApps.length > newIndex + 1 ? newApps[newIndex + 1] + : null; + let insertHere = nextApp && nextApp == oldApp; let alreadyRemoved = removedActors.reduce(function(result, actor) { let removedApp = actor.child._delegate.app; - return result || removedApp == newApps[newIndex]; + return result || removedApp == newApp; }, false); if (insertHere || alreadyRemoved) { - let newItem = this._createAppItem(newApps[newIndex]); - addedItems.push({ app: newApps[newIndex], + let newItem = this._createAppItem(newApp); + addedItems.push({ app: newApp, item: newItem, pos: newIndex + removedActors.length }); newIndex++;