diff options
author | Moonchild <mcwerewolf@gmail.com> | 2018-11-19 11:49:06 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-19 11:49:06 +0100 |
commit | be53c078d2c0fb31cbbc13cba2b14b9805a5df68 (patch) | |
tree | 0f74c023b0105f04d782f63434bf6dfaf83be9a4 /application/palemoon/components/places/PlacesUIUtils.jsm | |
parent | f4908ce993e54f96876ec3abc2cd0192d4f1230c (diff) | |
parent | b32323fae434bad270dd22f5a5d4da61101703ed (diff) | |
download | UXP-be53c078d2c0fb31cbbc13cba2b14b9805a5df68.tar UXP-be53c078d2c0fb31cbbc13cba2b14b9805a5df68.tar.gz UXP-be53c078d2c0fb31cbbc13cba2b14b9805a5df68.tar.lz UXP-be53c078d2c0fb31cbbc13cba2b14b9805a5df68.tar.xz UXP-be53c078d2c0fb31cbbc13cba2b14b9805a5df68.zip |
Merge pull request #873 from JustOff/PR_bm_folders_copy_paste
[PALEMOON] Align the places component with the updated PlacesUtils API
Diffstat (limited to 'application/palemoon/components/places/PlacesUIUtils.jsm')
-rw-r--r-- | application/palemoon/components/places/PlacesUIUtils.jsm | 40 |
1 files changed, 26 insertions, 14 deletions
diff --git a/application/palemoon/components/places/PlacesUIUtils.jsm b/application/palemoon/components/places/PlacesUIUtils.jsm index f62535613..05d79241c 100644 --- a/application/palemoon/components/places/PlacesUIUtils.jsm +++ b/application/palemoon/components/places/PlacesUIUtils.jsm @@ -146,14 +146,21 @@ this.PlacesUIUtils = { * annotations are synced from the old one. * @see this._copyableAnnotations for the list of copyable annotations. */ - _getFolderCopyTransaction: - function PUIU__getFolderCopyTransaction(aData, aContainer, aIndex) - { - function getChildItemsTransactions(aChildren) - { + _getFolderCopyTransaction(aData, aContainer, aIndex) { + function getChildItemsTransactions(aRoot) { let transactions = []; let index = aIndex; - aChildren.forEach(function (node, i) { + for (let i = 0; i < aRoot.childCount; ++i) { + let child = aRoot.getChild(i); + // Temporary hacks until we switch to PlacesTransactions.jsm. + let isLivemark = + PlacesUtils.annotations.itemHasAnnotation(child.itemId, + PlacesUtils.LMANNO_FEEDURI); + let [node] = PlacesUtils.unwrapNodes( + PlacesUtils.wrapNode(child, PlacesUtils.TYPE_X_MOZ_PLACE, isLivemark), + PlacesUtils.TYPE_X_MOZ_PLACE + ); + // Make sure that items are given the correct index, this will be // passed by the transaction manager to the backend for the insertion. // Insertion behaves differently for DEFAULT_INDEX (append). @@ -184,19 +191,21 @@ this.PlacesUIUtils = { else { throw new Error("Unexpected item under a bookmarks folder"); } - }); + } return transactions; } - if (aContainer == PlacesUtils.tagsFolderId) { // Copying a tag folder. + if (aContainer == PlacesUtils.tagsFolderId) { // Copying into a tag folder. let transactions = []; - if (aData.children) { - aData.children.forEach(function(aChild) { + if (!aData.livemark && aData.type == PlacesUtils.TYPE_X_MOZ_PLACE_CONTAINER) { + let {root} = PlacesUtils.getFolderContents(aData.id, false, false); + let urls = PlacesUtils.getURLsForContainerNode(root); + root.containerOpen = false; + for (let { uri } of urls) { transactions.push( - new PlacesTagURITransaction(PlacesUtils._uri(aChild.uri), - [aData.title]) + new PlacesTagURITransaction(NetUtil.newURI(uri), [aData.title]) ); - }); + } } return new PlacesAggregatedTransaction("addTags", transactions); } @@ -205,7 +214,10 @@ this.PlacesUIUtils = { return this._getLivemarkCopyTransaction(aData, aContainer, aIndex); } - let transactions = getChildItemsTransactions(aData.children); + let {root} = PlacesUtils.getFolderContents(aData.id, false, false); + let transactions = getChildItemsTransactions(root); + root.containerOpen = false; + if (aData.dateAdded) { transactions.push( new PlacesEditItemDateAddedTransaction(null, aData.dateAdded) |