mirror of
https://github.com/zotero/zotero.git
synced 2026-08-28 05:25:31 +00:00
Reader: Add support code for popup position persistence
(cherry picked from commit ad7159834c)
This commit is contained in:
parent
f8c89dad25
commit
744aba091a
2 changed files with 32 additions and 0 deletions
|
|
@ -260,6 +260,7 @@ class ReaderInstance {
|
|||
autoDisableTextTool: Zotero.Prefs.get('reader.autoDisableTool.text'),
|
||||
autoDisableImageTool: Zotero.Prefs.get('reader.autoDisableTool.image'),
|
||||
sidebarView: Zotero.Prefs.get('reader.lastSidebarTab'),
|
||||
popupPositions: this._getPopupPositions(),
|
||||
enableReadAloud: true,
|
||||
readAloudVoices: this._getReadAloudVoices(),
|
||||
readAloudEnabledVoices: await this._getReadAloudEnabledVoices(),
|
||||
|
|
@ -403,6 +404,9 @@ class ReaderInstance {
|
|||
onChangeSidebarView: (view) => {
|
||||
Zotero.Prefs.set('reader.lastSidebarTab', view);
|
||||
},
|
||||
onSetPopupPosition: (id, position) => {
|
||||
this._setPopupPosition(id, position);
|
||||
},
|
||||
onFocusContextPane: () => {
|
||||
if (this instanceof ReaderWindow || !this._window.ZoteroContextPane.focus()) {
|
||||
this.focusFirst();
|
||||
|
|
@ -662,6 +666,7 @@ class ReaderInstance {
|
|||
Zotero.Prefs.registerObserver('reader.autoDisableTool.note', this._handleAutoDisableToolPrefChange),
|
||||
Zotero.Prefs.registerObserver('reader.autoDisableTool.text', this._handleAutoDisableToolPrefChange),
|
||||
Zotero.Prefs.registerObserver('reader.autoDisableTool.image', this._handleAutoDisableToolPrefChange),
|
||||
Zotero.Prefs.registerObserver('reader.popupPositions', this._handlePopupPositionsPrefChange),
|
||||
Zotero.Prefs.registerObserver('reader.readAloudVoices', this._handleReadAloudVoicesPrefChange),
|
||||
Zotero.Prefs.registerObserver('reader.readAloud.highlightGranularity', this._handleReadAloudHighlightGranularityChange),
|
||||
];
|
||||
|
|
@ -1221,6 +1226,10 @@ class ReaderInstance {
|
|||
this._internalReader.setAutoDisableImageTool(Zotero.Prefs.get('reader.autoDisableTool.image'));
|
||||
};
|
||||
|
||||
_handlePopupPositionsPrefChange = () => {
|
||||
this._internalReader.setPopupPositions(Cu.cloneInto(this._getPopupPositions(), this._iframeWindow));
|
||||
};
|
||||
|
||||
_handleReadAloudVoicesPrefChange = () => {
|
||||
this._internalReader.setReadAloudVoices(Cu.cloneInto(this._getReadAloudVoices(), this._iframeWindow));
|
||||
};
|
||||
|
|
@ -1683,6 +1692,28 @@ class ReaderInstance {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Positions of draggable reader popups, keyed by popup ID
|
||||
*
|
||||
* @returns {Object}
|
||||
*/
|
||||
_getPopupPositions() {
|
||||
try {
|
||||
let positions = JSON.parse(Zotero.Prefs.get('reader.popupPositions'));
|
||||
return positions && typeof positions == 'object' ? positions : {};
|
||||
}
|
||||
catch {
|
||||
return {};
|
||||
}
|
||||
}
|
||||
|
||||
_setPopupPosition(id, position) {
|
||||
Zotero.Prefs.set('reader.popupPositions', JSON.stringify({
|
||||
...this._getPopupPositions(),
|
||||
[id]: { x: Math.round(position.x), y: Math.round(position.y) },
|
||||
}));
|
||||
}
|
||||
|
||||
_getReadAloudVoices() {
|
||||
try {
|
||||
return JSON.parse(Zotero.Prefs.get('reader.readAloudVoices'));
|
||||
|
|
|
|||
|
|
@ -249,6 +249,7 @@ pref("extensions.zotero.reader.autoDisableTool.note", true);
|
|||
pref("extensions.zotero.reader.autoDisableTool.text", true);
|
||||
pref("extensions.zotero.reader.autoDisableTool.image", true);
|
||||
pref("extensions.zotero.reader.lastSidebarTab", "annotations");
|
||||
pref("extensions.zotero.reader.popupPositions", "{}");
|
||||
pref("extensions.zotero.reader.readAloud.highlightGranularity", "sentence");
|
||||
|
||||
// Set color scheme to auto by default
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue