mirror of
https://github.com/Matysh/houseplan-card
synced 2026-10-05 22:29:05 +00:00
fix: end a tab drag when the card is disconnected
Validate / docs (push) Failing after 31s
Validate / provenance (push) Successful in 1m7s
Validate / process-gate (push) Failing after 1m11s
Validate / changes (push) Successful in 57s
Validate / hacs (push) Skipped
Validate / hassfest (push) Skipped
Validate / reuse (push) Successful in 1m30s
Validate / backend (push) Skipped
Validate / frontend (push) Successful in 12m25s
Validate / golden (push) Failing after 12m39s
Validate / performance_smoke (push) Failing after 11m36s
Validate / smoke (push) Failing after 27m40s
Validate / docs (push) Failing after 31s
Validate / provenance (push) Successful in 1m7s
Validate / process-gate (push) Failing after 1m11s
Validate / changes (push) Successful in 57s
Validate / hacs (push) Skipped
Validate / hassfest (push) Skipped
Validate / reuse (push) Successful in 1m30s
Validate / backend (push) Skipped
Validate / frontend (push) Successful in 12m25s
Validate / golden (push) Failing after 12m39s
Validate / performance_smoke (push) Failing after 11m36s
Validate / smoke (push) Failing after 27m40s
Review CODE-REVIEW-220-r2/r3, F1. The M1 fix installs window listeners for the length of the gesture, and disconnectedCallback — which takes down everything else, down to the other local gesture — did not take those down. Losing the card mid-drag (Lovelace rebuilding its tree, the user leaving the view with the button still down) left them alive: the closure holds the instance and its config, and the next pointerup anywhere on the page would have an invisible card write its order. The smoke now holds a tab, removes the card, and checks that the release it should no longer hear changes nothing. Registered as a mutant too. Issue: #220 User-Visible: no
This commit is contained in:
@@ -2236,6 +2236,13 @@ class HouseplanCard extends LitElement {
|
||||
this._bootSettling = false;
|
||||
for (const rt of this._activityRt.values()) clearTimeout(rt.timer); // pending activity-window repaints
|
||||
window.removeEventListener('keydown', this._keyHandler);
|
||||
// A tab drag holds window listeners for the length of the gesture. Losing
|
||||
// the card mid-drag — Lovelace rebuilding its tree, the user leaving the
|
||||
// view with the button still down — would leave them alive: the closure
|
||||
// keeps this instance (and its config) from being collected, and the next
|
||||
// pointerup anywhere on the page would make an invisible card write its
|
||||
// order (review CODE-REVIEW-220-r2/r3, F1).
|
||||
this._endTabDrag();
|
||||
clearInterval(this._cycleTimer);
|
||||
clearTimeout(this._kioskDotsTimer);
|
||||
clearTimeout(this._kioskHoldTimer);
|
||||
|
||||
Reference in New Issue
Block a user