diff --git a/chrome/content/zotero/preferences/preferences_general.xhtml b/chrome/content/zotero/preferences/preferences_general.xhtml
index 00f7d2901c..df0d2d6688 100644
--- a/chrome/content/zotero/preferences/preferences_general.xhtml
+++ b/chrome/content/zotero/preferences/preferences_general.xhtml
@@ -237,6 +237,14 @@
+
+
+
+
diff --git a/chrome/content/zotero/xpcom/reader.js b/chrome/content/zotero/xpcom/reader.js
index 94b423e9e9..7b5393baff 100644
--- a/chrome/content/zotero/xpcom/reader.js
+++ b/chrome/content/zotero/xpcom/reader.js
@@ -266,6 +266,7 @@ class ReaderInstance {
readAloudEnabledVoices: await this._getReadAloudEnabledVoices(),
readAloudRemoteInterface: this._getReadAloudRemoteInterface(this._iframeWindow),
readAloudHighlightGranularity: Zotero.Prefs.get('reader.readAloud.highlightGranularity'),
+ readAloudVerticalControls: Zotero.Prefs.get('reader.readAloud.verticalControls'),
getSDTPack: this._createGetSDTPack(this._iframeWindow),
loggedIn: Zotero.Sync.Runner.enabled,
onOpenContextMenu: () => {
@@ -669,6 +670,7 @@ class ReaderInstance {
Zotero.Prefs.registerObserver('reader.popupPositions', this._handlePopupPositionsPrefChange),
Zotero.Prefs.registerObserver('reader.readAloudVoices', this._handleReadAloudVoicesPrefChange),
Zotero.Prefs.registerObserver('reader.readAloud.highlightGranularity', this._handleReadAloudHighlightGranularityChange),
+ Zotero.Prefs.registerObserver('reader.readAloud.verticalControls', this._handleReadAloudVerticalControlsChange),
];
return true;
@@ -1244,6 +1246,12 @@ class ReaderInstance {
);
};
+ _handleReadAloudVerticalControlsChange = () => {
+ this._internalReader.setReadAloudVerticalControls(
+ Zotero.Prefs.get('reader.readAloud.verticalControls')
+ );
+ };
+
_handleReadAloudEnabledVoicesChange = async (voices) => {
if (!voices) {
voices = await this._getReadAloudEnabledVoices();
diff --git a/chrome/locale/en-US/zotero/preferences.ftl b/chrome/locale/en-US/zotero/preferences.ftl
index a9ae6dbf8f..7db84a21e3 100644
--- a/chrome/locale/en-US/zotero/preferences.ftl
+++ b/chrome/locale/en-US/zotero/preferences.ftl
@@ -36,6 +36,8 @@ preferences-read-aloud-highlight-granularity-sentence =
.label = sentence
preferences-read-aloud-highlight-granularity-word =
.label = word
+preferences-read-aloud-vertical-controls =
+ .label = Show playback controls vertically
preferences-note-title = Notes
preferences-note-open-in-new-window =
diff --git a/defaults/preferences/zotero.js b/defaults/preferences/zotero.js
index 0d93ba0287..3176966d46 100644
--- a/defaults/preferences/zotero.js
+++ b/defaults/preferences/zotero.js
@@ -251,6 +251,7 @@ 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");
+pref("extensions.zotero.reader.readAloud.verticalControls", false);
// Set color scheme to auto by default
pref("browser.theme.toolbar-theme", 2);