From d7fa72e46c3daf29523f3f9957c29d5cec3249d7 Mon Sep 17 00:00:00 2001 From: chrox Date: Wed, 6 Aug 2014 22:06:34 +0800 Subject: [PATCH] negative x panning if writing direction is set right to left so that in right to left writing/drawing system the right part of the page is drawn first --- frontend/apps/reader/modules/readerpaging.lua | 4 +++- frontend/apps/reader/modules/readerview.lua | 12 +++++++++--- frontend/ui/data/koptoptions.lua | 1 - 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/frontend/apps/reader/modules/readerpaging.lua b/frontend/apps/reader/modules/readerpaging.lua index 291c25028..7a77a7a8d 100644 --- a/frontend/apps/reader/modules/readerpaging.lua +++ b/frontend/apps/reader/modules/readerpaging.lua @@ -644,7 +644,9 @@ function ReaderPaging:onGotoPageRel(diff) elseif self.zoom_mode:find("width") then y_pan_off = self.visible_area.h * diff elseif self.zoom_mode:find("height") then - x_pan_off = self.visible_area.w * diff + -- negative x panning if writing direction is right to left + local direction = self.ui.document.configurable.writing_direction + x_pan_off = self.visible_area.w * diff * (direction == 1 and -1 or 1) else -- must be fit content or page zoom mode if self.visible_area.w == self.page_area.w then diff --git a/frontend/apps/reader/modules/readerview.lua b/frontend/apps/reader/modules/readerview.lua index d0dff2ac7..37ce322d4 100644 --- a/frontend/apps/reader/modules/readerview.lua +++ b/frontend/apps/reader/modules/readerview.lua @@ -459,11 +459,17 @@ function ReaderView:recalculate() self.state.page, self.state.zoom, self.state.rotation) - -- starts from left top of page_area - self.visible_area.x = self.page_area.x - self.visible_area.y = self.page_area.y -- reset our size self.visible_area:setSizeTo(self.dimen) + if self.ui.document.configurable.writing_direction == 0 then + -- starts from left top of page_area + self.visible_area.x = self.page_area.x + self.visible_area.y = self.page_area.y + else + -- start from right top of page_area + self.visible_area.x = self.page_area.x + self.page_area.w - self.visible_area.w + self.visible_area.y = self.page_area.y + end -- and recalculate it according to page size self.visible_area:offsetWithin(self.page_area, 0, 0) -- clear dim area diff --git a/frontend/ui/data/koptoptions.lua b/frontend/ui/data/koptoptions.lua index a1324615d..8c1b36306 100644 --- a/frontend/ui/data/koptoptions.lua +++ b/frontend/ui/data/koptoptions.lua @@ -195,7 +195,6 @@ local KoptOptions = { toggle = {S.LTR, S.RTL, S.TBRTL}, values = {0, 1, 2}, default_value = 0, - advanced = true, }, { name = "quality",