diff options
author | Moonchild <mcwerewolf@gmail.com> | 2018-04-18 20:24:38 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-18 20:24:38 +0200 |
commit | ab174e65d9223673b14aa6d908e51e71f451b835 (patch) | |
tree | 45a73f9cee83852e5df650faf44a46900356ad02 /application/palemoon/components/places/content/editBookmarkOverlay.js | |
parent | d1b17ef97efd0e4f869c98dfada8d09f1cb1ad5a (diff) | |
parent | 37bd28f3efb0a3faf2b771f00626dabc7c29901d (diff) | |
download | UXP-ab174e65d9223673b14aa6d908e51e71f451b835.tar UXP-ab174e65d9223673b14aa6d908e51e71f451b835.tar.gz UXP-ab174e65d9223673b14aa6d908e51e71f451b835.tar.lz UXP-ab174e65d9223673b14aa6d908e51e71f451b835.tar.xz UXP-ab174e65d9223673b14aa6d908e51e71f451b835.zip |
Merge pull request #201 from janekptacijarabaci/pm_places_error_1
[PALEMOON] Places - fix: throws an error: 0x80004005 (NS_ERROR_FAILURE) [nsIEditor.transactionManager]
Diffstat (limited to 'application/palemoon/components/places/content/editBookmarkOverlay.js')
-rw-r--r-- | application/palemoon/components/places/content/editBookmarkOverlay.js | 47 |
1 files changed, 34 insertions, 13 deletions
diff --git a/application/palemoon/components/places/content/editBookmarkOverlay.js b/application/palemoon/components/places/content/editBookmarkOverlay.js index 98bfcccd7..43645cc73 100644 --- a/application/palemoon/components/places/content/editBookmarkOverlay.js +++ b/application/palemoon/components/places/content/editBookmarkOverlay.js @@ -16,6 +16,7 @@ var gEditItemOverlay = { _itemType: -1, _readOnly: false, _hiddenRows: [], + _onPanelReady: false, _observersAdded: false, _staticFoldersListBuilt: false, _initialized: false, @@ -50,6 +51,7 @@ var gEditItemOverlay = { this._readOnly = aInfo && aInfo.forceReadOnly; this._titleOverride = aInfo && aInfo.titleOverride ? aInfo.titleOverride : ""; + this._onPanelReady = aInfo && aInfo.onPanelReady; }, _showHideRows: function EIO__showHideRows() { @@ -219,7 +221,15 @@ var gEditItemOverlay = { this._observersAdded = true; } - this._initialized = true; + let focusElement = () => { + this._initialized = true; + }; + + if (this._onPanelReady) { + this._onPanelReady(focusElement); + } else { + focusElement(); + } }, /** @@ -243,11 +253,7 @@ var gEditItemOverlay = { if (field.value != aValue) { field.value = aValue; - - // clear the undo stack - var editor = field.editor; - if (editor) - editor.transactionManager.clear(); + this._editorTransactionManagerClear(field); } }, @@ -352,6 +358,26 @@ var gEditItemOverlay = { return document.getElementById("editBMPanel_" + aID); }, + _editorTransactionManagerClear: function EIO__editorTransactionManagerClear(aItem) { + // Clear the editor's undo stack + let transactionManager; + try { + transactionManager = aItem.editor.transactionManager; + } catch (e) { + // When retrieving the transaction manager, editor may be null resulting + // in a TypeError. Additionally, the transaction manager may not + // exist yet, which causes access to it to throw NS_ERROR_FAILURE. + // In either event, the transaction manager doesn't exist it, so we + // don't need to worry about clearing it. + if (!(e instanceof TypeError) && e.result != Cr.NS_ERROR_FAILURE) { + throw e; + } + } + if (transactionManager) { + transactionManager.clear(); + } + }, + _getItemStaticTitle: function EIO__getItemStaticTitle() { if (this._titleOverride) return this._titleOverride; @@ -370,11 +396,7 @@ var gEditItemOverlay = { var namePicker = this._element("namePicker"); namePicker.value = this._getItemStaticTitle(); namePicker.readOnly = this._readOnly; - - // clear the undo stack - var editor = namePicker.editor; - if (editor) - editor.transactionManager.clear(); + this._editorTransactionManagerClear(namePicker); }, uninitPanel: function EIO_uninitPanel(aHideCollapsibleElements) { @@ -963,8 +985,7 @@ var gEditItemOverlay = { var namePicker = this._element("namePicker"); if (namePicker.value != aValue) { namePicker.value = aValue; - // clear undo stack - namePicker.editor.transactionManager.clear(); + this._editorTransactionManagerClear(namePicker); } break; case "uri": |