commit 76ecbc0e47abeb920c55b13e9479da1ec4ab8636
parent aae8c979bbbda0f4ec09324efd9dd984b53672a1
Author: Emilio Cobos Álvarez <emilio@crisal.io>
Date: Wed, 29 Oct 2025 13:22:26 +0000
Bug 1996868 - More thoroughly clean up DateTimePickerParent's listeners too. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D270479
Diffstat:
1 file changed, 12 insertions(+), 20 deletions(-)
diff --git a/toolkit/actors/DateTimePickerParent.sys.mjs b/toolkit/actors/DateTimePickerParent.sys.mjs
@@ -94,6 +94,7 @@ export class DateTimePickerParent extends JSWindowActorParent {
}
}
+ this._cleanupPicker();
let doc = window.document;
let panel = doc.getElementById("DateTimePickerPanel");
if (!panel) {
@@ -116,34 +117,16 @@ export class DateTimePickerParent extends JSWindowActorParent {
this._oldFocus = doc.activeElement;
this._picker = new lazy.DateTimePickerPanel(panel);
this._picker.openPicker(type, rect, detail);
- this.addPickerListeners();
- }
-
- // Close the picker and do some cleanup.
- close() {
- this._picker.closePicker();
- // Restore focus to where it was before the picker opened.
- this._oldFocus?.focus();
- this._oldFocus = null;
- this.removePickerListeners();
- this._picker = null;
- }
-
- // Listen to picker's event.
- addPickerListeners() {
- if (!this._picker) {
- return;
- }
this._picker.element.addEventListener("popuphidden", this);
this._picker.element.addEventListener("DateTimePickerValueChanged", this);
this._picker.element.addEventListener("DateTimePickerValueCleared", this);
}
- // Stop listening to picker's event.
- removePickerListeners() {
+ _cleanupPicker() {
if (!this._picker) {
return;
}
+ this._picker.closePicker();
this._picker.element.removeEventListener("popuphidden", this);
this._picker.element.removeEventListener(
"DateTimePickerValueChanged",
@@ -153,5 +136,14 @@ export class DateTimePickerParent extends JSWindowActorParent {
"DateTimePickerValueCleared",
this
);
+ this._picker = null;
+ }
+
+ // Close the picker and do some cleanup.
+ close() {
+ this._cleanupPicker();
+ // Restore focus to where it was before the picker opened.
+ this._oldFocus?.focus();
+ this._oldFocus = null;
}
}