diff --git a/assets/patches.txt b/assets/patches.txt index 6f50bfd..aee47e0 100644 --- a/assets/patches.txt +++ b/assets/patches.txt @@ -8,6 +8,7 @@ patches/devtools-bypass.patch patches/disable-data-reporting-at-compile-time.patch patches/flatpak-autoconf.patch patches/fullpage-translations.patch +patches/fullpage-translations-customization.patch patches/hide-passwordmgr.patch patches/librewolf-prefs.patch patches/mozilla_dirs.patch diff --git a/patches/fullpage-translations-customization.patch b/patches/fullpage-translations-customization.patch new file mode 100644 index 0000000..9093dcc --- /dev/null +++ b/patches/fullpage-translations-customization.patch @@ -0,0 +1,193 @@ +diff --git a/browser/base/content/main-popupset.inc.xhtml b/browser/base/content/main-popupset.inc.xhtml +--- a/browser/base/content/main-popupset.inc.xhtml ++++ b/browser/base/content/main-popupset.inc.xhtml +@@ -654,6 +654,8 @@ + checked="false" + autocheck="false" + oncommand="TranslationsPanel.onNeverTranslateSite()"/> ++ + + + + +- + +diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js +--- a/browser/components/preferences/main.js ++++ b/browser/components/preferences/main.js +@@ -141,6 +141,10 @@ Preferences.addAll([ + { id: "dom.ipc.processCount.web", type: "int" }, + { id: "layers.acceleration.disabled", type: "bool", inverted: true }, + ++ /* Fullpage Translations */ ++ { id: "browser.translations.enable", type: "bool" }, ++ { id: "browser.translations.automaticallyPopup", type: "bool" }, ++ + // Files and Applications + { id: "pref.downloads.disable_button.edit_actions", type: "bool" }, + +@@ -323,6 +327,17 @@ var gMainPane = { + + gMainPane.initTranslations(); + ++ Preferences.get("browser.translations.enable").on("change", () => { ++ if(!Preferences.get("browser.translations.enable").value) ++ confirmRestartPrompt(false, 1, true, false).then(buttonIndex => { ++ if (buttonIndex == CONFIRM_RESTART_PROMPT_RESTART_NOW) { ++ Services.startup.quit( ++ Ci.nsIAppStartup.eAttemptQuit | Ci.nsIAppStartup.eRestart ++ ); ++ } ++ }); ++ }); ++ + if ( + Services.prefs.getBoolPref( + "media.videocontrols.picture-in-picture.enabled" +@@ -784,6 +799,10 @@ var gMainPane = { + () => this.writeCheckSpelling() + ); + Preferences.addSyncFromPrefListener( ++ document.getElementById("translations-manage-enable"), ++ () => this.readEnableTranslations() ++ ); ++ Preferences.addSyncFromPrefListener( + document.getElementById("alwaysAsk"), + () => this.readUseDownloadDir() + ); +@@ -1010,24 +1029,33 @@ var gMainPane = { + document.getElementById("zoomBox").hidden = false; + }, + ++ readEnableTranslations(skipInit = false) { ++ const translationsEnabled = Preferences.get("browser.translations.enable").value; ++ document.getElementById("innerTranslationsGroup").hidden = !translationsEnabled; ++ if (!this._translationsInitialized && !skipInit) ++ this.initTranslations(); ++ }, ++ ++ _translationsInitialized: false, ++ + /** + * Initialize the translations view. + */ + async initTranslations() { ++ this.readEnableTranslations(true); ++ + if (!Services.prefs.getBoolPref("browser.translations.enable")) { + return; + } + ++ this._translationsInitialized = true; ++ + /** + * Which phase a language download is in. + * + * @typedef {"downloaded" | "loading" | "uninstalled"} DownloadPhase + */ + +- // Immediately show the group so that the async load of the component does +- // not cause the layout to jump. The group will be empty initially. +- document.getElementById("translationsGroup").hidden = false; +- + class TranslationsState { + /** + * The fully initialized state. +diff --git a/browser/components/translations/content/translationsPanel.js b/browser/components/translations/content/translationsPanel.js +--- a/browser/components/translations/content/translationsPanel.js ++++ b/browser/components/translations/content/translationsPanel.js +@@ -1322,6 +1322,12 @@ var TranslationsPanel = new (class { + ); + } + ++ openDisableTranslations() { ++ const window = ++ gBrowser.selectedBrowser.browsingContext.top.embedderElement.ownerGlobal; ++ window.openTrustedLinkIn("about:preferences#general-translations-enable", "tab"); ++ } ++ + /** + * Redirect the user to about:preferences + */ +diff --git a/browser/locales/en-US/browser/translations.ftl b/browser/locales/en-US/browser/translations.ftl +--- a/browser/locales/en-US/browser/translations.ftl ++++ b/browser/locales/en-US/browser/translations.ftl +@@ -58,6 +58,9 @@ translations-panel-settings-never-transl + translations-panel-settings-never-translate-site = + .label = Never translate this site + ++translations-panel-disable-translations = ++ .label = Disable translations completely ++ + ## The translation panel appears from the url bar, and this view is the default + ## translation view. + +@@ -123,6 +126,10 @@ translations-manage-header = Translation + translations-manage-settings-button = + .label = Settings… + .accesskey = t ++translations-manage-enable = ++ .label = Enable fullpage translations ++translations-manage-autopopup = ++ .label = Prompt to translate pages that aren’t in the browser’s configured language + translations-manage-intro = Set your language and site translation preferences and manage languages installed for offline translation. + translations-manage-install-description = Install languages for offline translation + translations-manage-language-install-button =