diff --git a/browser/components/places/content/bookmarkProperties.js b/browser/components/places/content/bookmarkProperties.js
index 9a6cb74c5f6..1736afb2b20 100644
--- a/browser/components/places/content/bookmarkProperties.js
+++ b/browser/components/places/content/bookmarkProperties.js
@@ -467,7 +467,6 @@ var BookmarkPropertiesPanel = {
// The order here is important! We have to uninit the panel first, otherwise
// late changes could force it to commit more transactions.
gEditItemOverlay.uninitPanel(true);
- gEditItemOverlay = null;
this._endBatch();
window.arguments[0].performed = true;
},
@@ -477,7 +476,6 @@ var BookmarkPropertiesPanel = {
// changes done as part of Undo may change the panel contents and by
// that force it to commit more transactions.
gEditItemOverlay.uninitPanel(true);
- gEditItemOverlay = null;
this._endBatch();
PlacesUtils.transactionManager.undoTransaction();
window.arguments[0].performed = false;
diff --git a/browser/components/places/content/editBookmarkOverlay.js b/browser/components/places/content/editBookmarkOverlay.js
index de587f874fc..cac3a606368 100644
--- a/browser/components/places/content/editBookmarkOverlay.js
+++ b/browser/components/places/content/editBookmarkOverlay.js
@@ -209,6 +209,12 @@ var gEditItemOverlay = {
// observe only tags changes, through bookmarks.
if (this._itemId != -1 || this._uri || this._multiEdit)
PlacesUtils.bookmarks.addObserver(this, false);
+
+ this._element("namePicker").addEventListener("blur", this);
+ this._element("locationField").addEventListener("blur", this);
+ this._element("tagsField").addEventListener("blur", this);
+ this._element("keywordField").addEventListener("blur", this);
+ this._element("descriptionField").addEventListener("blur", this);
window.addEventListener("unload", this, false);
this._observersAdded = true;
}
@@ -388,6 +394,12 @@ var gEditItemOverlay = {
if (this._itemId != -1 || this._uri || this._multiEdit)
PlacesUtils.bookmarks.removeObserver(this);
+ this._element("namePicker").removeEventListener("blur", this);
+ this._element("locationField").removeEventListener("blur", this);
+ this._element("tagsField").removeEventListener("blur", this);
+ this._element("keywordField").removeEventListener("blur", this);
+ this._element("descriptionField").removeEventListener("blur", this);
+
this._observersAdded = false;
}
@@ -528,7 +540,7 @@ var gEditItemOverlay = {
return false;
},
- onNamePickerChange: function EIO_onNamePickerChange() {
+ onNamePickerBlur: function EIO_onNamePickerBlur() {
if (this._itemId == -1)
return;
@@ -879,6 +891,11 @@ var gEditItemOverlay = {
this._element("tagsField").value = tags.join(", ");
this._updateTags();
break;
+ case "blur":
+ let replaceFn = (str, firstLetter) => firstLetter.toUpperCase();
+ let nodeName = aEvent.target.id.replace(/editBMPanel_(\w)/, replaceFn);
+ this["on" + nodeName + "Blur"]();
+ break;
case "unload":
this.uninitPanel(false);
break;
diff --git a/browser/components/places/content/editBookmarkOverlay.xul b/browser/components/places/content/editBookmarkOverlay.xul
index 856ab150832..d94b204f252 100644
--- a/browser/components/places/content/editBookmarkOverlay.xul
+++ b/browser/components/places/content/editBookmarkOverlay.xul
@@ -33,7 +33,6 @@
control="editBMPanel_namePicker"
observes="paneElementsBroadcaster"/>
@@ -45,7 +44,6 @@
observes="paneElementsBroadcaster"/>
@@ -150,7 +148,6 @@
completedefaultindex="true"
tabscrolling="true"
showcommentcolumn="true"
- onblur="gEditItemOverlay.onTagsFieldBlur();"
observes="paneElementsBroadcaster"
placeholder="&editBookmarkOverlay.tagsEmptyDesc.label;"/>
@@ -193,7 +189,6 @@
observes="paneElementsBroadcaster"/>
diff --git a/browser/components/places/tests/browser/browser_bookmarksProperties.js b/browser/components/places/tests/browser/browser_bookmarksProperties.js
index 2efbbf54197..b8c7f798ef6 100644
--- a/browser/components/places/tests/browser/browser_bookmarksProperties.js
+++ b/browser/components/places/tests/browser/browser_bookmarksProperties.js
@@ -127,7 +127,7 @@ gTests.push({
PlacesUtils.bookmarks.getItemTitle(PlacesUtils.unfiledBookmarksFolderId),
"Node title is correct");
// Blur the field and ensure root's name has not been changed.
- this.window.gEditItemOverlay.onNamePickerChange();
+ this.window.gEditItemOverlay.onNamePickerBlur();
is(namepicker.value,
PlacesUtils.bookmarks.getItemTitle(PlacesUtils.unfiledBookmarksFolderId),
"Root title is correct");