diff --git a/frontend/apps/reader/modules/readertoc.lua b/frontend/apps/reader/modules/readertoc.lua index e642864f1..24e28064e 100644 --- a/frontend/apps/reader/modules/readertoc.lua +++ b/frontend/apps/reader/modules/readertoc.lua @@ -643,7 +643,7 @@ function ReaderToc:expandParentNode(index) end function ReaderToc:onShowToc() - if self.view.inverse_reading_order then + if self.view:shouldInvertBiDiLayoutMirroring() then BD.invert() end diff --git a/frontend/apps/reader/modules/readerview.lua b/frontend/apps/reader/modules/readerview.lua index bd87c3307..1825afa66 100644 --- a/frontend/apps/reader/modules/readerview.lua +++ b/frontend/apps/reader/modules/readerview.lua @@ -831,6 +831,11 @@ function ReaderView:onReadSettings(config) or 8) end +function ReaderView:shouldInvertBiDiLayoutMirroring() + -- A few widgets may temporarily invert UI layout mirroring when both these settings are true + return self.inverse_reading_order and G_reader_settings:isTrue("invert_ui_layout_mirroring") +end + function ReaderView:onPageUpdate(new_page_no) self.state.page = new_page_no self.state.drawn = false diff --git a/frontend/ui/bidi.lua b/frontend/ui/bidi.lua index 16e882a90..42086a7c0 100644 --- a/frontend/ui/bidi.lua +++ b/frontend/ui/bidi.lua @@ -130,7 +130,7 @@ 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 + if not Bidi._inverted then Bidi._mirrored_ui_layout = not Bidi._mirrored_ui_layout Bidi._inverted = true end diff --git a/frontend/ui/widget/bookmapwidget.lua b/frontend/ui/widget/bookmapwidget.lua index 5d2c48f64..a10733cb8 100644 --- a/frontend/ui/widget/bookmapwidget.lua +++ b/frontend/ui/widget/bookmapwidget.lua @@ -527,7 +527,7 @@ local BookMapWidget = InputContainer:new{ } function BookMapWidget:init() - if self.ui.view.inverse_reading_order then + if self.ui.view:shouldInvertBiDiLayoutMirroring() then BD.invert() end diff --git a/frontend/ui/widget/pagebrowserwidget.lua b/frontend/ui/widget/pagebrowserwidget.lua index f469347d8..0c1696d1e 100644 --- a/frontend/ui/widget/pagebrowserwidget.lua +++ b/frontend/ui/widget/pagebrowserwidget.lua @@ -39,7 +39,7 @@ local PageBrowserWidget = InputContainer:new{ } function PageBrowserWidget:init() - if self.ui.view.inverse_reading_order then + if self.ui.view:shouldInvertBiDiLayoutMirroring() then BD.invert() end