diff options
author | Florrie <towerofnix@gmail.com> | 2019-01-10 00:34:17 -0400 |
---|---|---|
committer | Florrie <towerofnix@gmail.com> | 2019-01-10 00:34:17 -0400 |
commit | 4ec41ab7af3166e20fc3300e39ec5327354787b4 (patch) | |
tree | dbc21d79cb3ac72d29d5b2ea91bebdbd0408ece6 | |
parent | 9fcba1b3de3cae633ef3a779e4536e45fdc554da (diff) |
:disgust: Fix some selection issues
* Menus opened from the queue wouldn't work before. Now they do. (Well, there's no code for them yet, but there was when I was testing.) * Rebuilding the items of a listing while it's selected doesn't reset the selection (i.e. select AppElement -> Tabber -> left pane). So you can remove an item from the queue and have focus remain on the queue, at the index where the item you removed was.
-rw-r--r-- | ui.js | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/ui.js b/ui.js index 3d71d24..4d6b637 100644 --- a/ui.js +++ b/ui.js @@ -966,9 +966,9 @@ class GrouplikeListingElement extends Form { const wasSelected = this.isSelected const form = this.form - while (form.inputs.length) { - form.removeInput(form.inputs[0], true, {fixLayout: false}) - } + // Just outright scrap the old items - don't deal with any selection stuff + // (as a result of removeInput) yet. + form.inputs = [] const parent = this.grouplike[parentSymbol] if (parent) { @@ -2062,10 +2062,13 @@ class ContextMenu extends FocusElement { } clearItems() { - const inputs = this.form.inputs.slice() - for (const input of inputs) { - this.form.removeInput(input) - } + // Abhorrent hack - just erases children from memory. Leaves children + // thinking they've still got a parent, though. (Necessary to avoid crazy + // select() loops that probably explode the world... speaking of things + // to forget, that one time when I was figuring out menus in the queue. + // This makes them work.) + this.form.inputs = [] + this.form.children = [] } fixLayout() { |