From 42dd5aadca2e5be29e7caaee5d76c5e42f7b5e4e Mon Sep 17 00:00:00 2001 From: yparitcher Date: Sat, 15 Jan 2022 18:50:58 -0500 Subject: [PATCH] Bidi: add Bidi.invert() --- frontend/ui/bidi.lua | 17 +++++++++++++++++ frontend/ui/elements/page_turns.lua | 15 +++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/frontend/ui/bidi.lua b/frontend/ui/bidi.lua index 63b67eb93..16e882a90 100644 --- a/frontend/ui/bidi.lua +++ b/frontend/ui/bidi.lua @@ -43,6 +43,7 @@ local _ = require("gettext") local Bidi = { _mirrored_ui_layout = false, _rtl_ui_text = false, + _inverted = false, } -- Setup UI mirroring and RTL text for UI language @@ -126,6 +127,22 @@ function Bidi.mirroredUILayout() return Bidi._mirrored_ui_layout end +-- This fuction can be used by document widgets to temporarily match a widget +-- to the document page turn direction instead of the UI layout direction. +function Bidi.invert() + if G_reader_settings:isTrue("invert_ui_layout_mirroring") and not Bidi._inverted then + Bidi._mirrored_ui_layout = not Bidi._mirrored_ui_layout + Bidi._inverted = true + end +end + +function Bidi.resetInvert() + if Bidi._inverted then + Bidi._mirrored_ui_layout = not Bidi._mirrored_ui_layout + Bidi._inverted = false + end +end + -- This function might only be useful in some rare cases (RTL text -- is handled directly by TextWidget and TextBoxWidget) function Bidi.rtlUIText() diff --git a/frontend/ui/elements/page_turns.lua b/frontend/ui/elements/page_turns.lua index 5f504c49e..2519befd6 100644 --- a/frontend/ui/elements/page_turns.lua +++ b/frontend/ui/elements/page_turns.lua @@ -122,6 +122,21 @@ local PageTurns = { end, }) end, + }, + { + text = _("Also invert document-related dialogs"), + checked_func = function() + return G_reader_settings:isTrue("invert_ui_layout_mirroring") + end, + enabled_func = function() + return ReaderUI.instance.view.inverse_reading_order + end, + callback = function() + G_reader_settings:flipNilOrFalse("invert_ui_layout_mirroring") + end, + help_text = _([[ +When enabled the UI direction for the Table of Contents, Book Map, and Page Browser dialogs will follow the page turn direction instead of the default UI direction.]]), + separator = true, } } }