From e46f210b6c0f1d73efae8e752b00dbbc5431e933 Mon Sep 17 00:00:00 2001 From: Martynas Bagdonas Date: Mon, 17 Jan 2022 11:20:35 +0200 Subject: [PATCH] Add color and tag selector to annotations sidebar (#2299) --- chrome/content/zotero/xpcom/reader.js | 33 ++++++++++++++++++++ chrome/locale/en-US/zotero/zotero.properties | 1 + pdf-reader | 2 +- 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/chrome/content/zotero/xpcom/reader.js b/chrome/content/zotero/xpcom/reader.js index 621abecbe6..70163d6cc5 100644 --- a/chrome/content/zotero/xpcom/reader.js +++ b/chrome/content/zotero/xpcom/reader.js @@ -366,6 +366,7 @@ class ReaderInstance { _openTagsPopup(x, y, item) { let menupopup = this._window.document.createElement('menupopup'); + menupopup.className = 'tags-popup'; menupopup.style.minWidth = '300px'; menupopup.setAttribute('ignorekeys', true); let tagsbox = this._window.document.createElement('tagsbox'); @@ -560,6 +561,28 @@ class ReaderInstance { popup.openPopup(element, 'after_start', 0, 0, true); } + _openSelectorPopup(data) { + let popup = this._window.document.createElement('menupopup'); + this._popupset.appendChild(popup); + popup.addEventListener('popuphidden', function () { + popup.remove(); + }); + let menuitem; + // Clear Selection + menuitem = this._window.document.createElement('menuitem'); + menuitem.setAttribute('label', Zotero.getString('general.clearSelection')); + menuitem.setAttribute('disabled', !data.enableClearSelection); + menuitem.addEventListener('command', () => { + this._postMessage({ + action: 'popupCmd', + cmd: 'clearSelector', + ids: data.ids + }); + }); + popup.appendChild(menuitem); + popup.openPopupAtScreen(data.x, data.y, true); + } + async _postMessage(message, transfer) { await this._waitForReader(); this._iframeWindow.postMessage({ itemID: this._itemID, message }, this._iframeWindow.origin, transfer); @@ -656,6 +679,16 @@ class ReaderInstance { this._openColorPopup(message.data); return; } + case 'closePopup': { + // Note: This currently only closes tags popup when annotations are + // disappearing from pdf-reader sidebar + for (let child of Array.from(this._popupset.children)) { + if (child.classList.contains('tags-popup')) { + child.hidePopup(); + } + } + return; + } case 'openURL': { let { url } = message; let win = Services.wm.getMostRecentWindow('navigator:browser'); diff --git a/chrome/locale/en-US/zotero/zotero.properties b/chrome/locale/en-US/zotero/zotero.properties index 9091fc450d..34b9d10ea4 100644 --- a/chrome/locale/en-US/zotero/zotero.properties +++ b/chrome/locale/en-US/zotero/zotero.properties @@ -89,6 +89,7 @@ general.default = Default general.custom = Custom general.loading = Loading… general.richText = Rich Text +general.clearSelection = Clear Selection general.yellow = Yellow general.red = Red diff --git a/pdf-reader b/pdf-reader index fcd6b5573a..753ce0b40d 160000 --- a/pdf-reader +++ b/pdf-reader @@ -1 +1 @@ -Subproject commit fcd6b5573ab5fcd60da7477661f935b5cfbd6b3e +Subproject commit 753ce0b40d94c93cd1d45dc01dfec70c0da3ff48