disable hinting temporarily in config dialog and flipping mode and cropping dialog

Since hinting is of little use in these situations.
pull/2/merge
chrox 11 years ago
parent ef68ccebfe
commit a6609119ec

@ -82,8 +82,11 @@ function ReaderConfig:onShowConfigMenu()
ui = self.ui,
configurable = self.configurable,
config_options = self.options,
close_callback = function()
self.ui:handleEvent(Event:new("RestoreHinting"))
end,
}
self.ui:handleEvent(Event:new("DisableHinting"))
UIManager:show(self.config_dialog)
return true

@ -63,6 +63,8 @@ function ReaderCropping:onPageCrop(mode)
-- backup original page scroll
self.orig_page_scroll = self.view.page_scroll
self.view.page_scroll = false
-- backup and disable original hinting state
self.ui:handleEvent(Event:new("DisableHinting"))
-- backup original reflow mode as cropping use non-reflow mode
self.orig_reflow_mode = self.document.configurable.text_wrap
if self.orig_reflow_mode == 1 then
@ -110,6 +112,8 @@ function ReaderCropping:onCancelPageCrop()
end
function ReaderCropping:exitPageCrop(confirmed)
-- restore hinting state
self.ui:handleEvent(Event:new("RestoreHinting"))
-- restore page scroll
self.view.page_scroll = self.orig_page_scroll
-- restore view bgcolor

@ -0,0 +1,19 @@
ReaderHinting = EventListener:new{
hinting_states = {}
}
function ReaderHinting:onSetHinting(hinting)
self.view.hinting = hinting
end
function ReaderHinting:onDisableHinting()
table.insert(self.hinting_states, self.view.hinting)
self.view.hinting = false
return true
end
function ReaderHinting:onRestoreHinting()
self.view.hinting = table.remove(self.hinting_states)
return true
end

@ -143,6 +143,7 @@ function ReaderPaging:onToggleFlipping()
if self.flipping_mode then
self:updateOriginalPage(self.current_page)
end
self.ui:handleEvent(Event:new("SetHinting", not self.flipping_mode))
UIManager:setDirty(self.view.dialog, "partial")
end

@ -31,7 +31,8 @@ ReaderView = OverlapGroup:new{
render_mode = 0, -- default to COLOR
-- Crengine view mode
view_mode = "page", -- default to page mode
hinting = true,
-- visible area within current viewing page
visible_area = Geom:new{x = 0, y = 0},
-- dimen for current viewing page
@ -148,7 +149,9 @@ function ReaderView:drawScrollPages(bb, x, y)
pos.y = pos.y + self.page_gap.height
end
end
UIManager:scheduleIn(0, function() self.ui:handleEvent(Event:new("HintPage")) end)
UIManager:scheduleIn(0, function()
self.ui:handleEvent(Event:new("HintPage", self.hinting))
end)
end
function ReaderView:drawPageGap(bb, x, y)
@ -170,7 +173,9 @@ function ReaderView:drawSinglePage(bb, x, y)
self.state.rotation,
self.state.gamma,
self.render_mode)
UIManager:scheduleIn(0, function() self.ui:handleEvent(Event:new("HintPage")) end)
UIManager:scheduleIn(0, function()
self.ui:handleEvent(Event:new("HintPage", self.hinting))
end)
end
function ReaderView:drawPageView(bb, x, y)

@ -110,6 +110,7 @@ function ReaderZooming:onPageUpdate(new_page_no)
end
function ReaderZooming:onHintPage()
if not self.view.hinting then return true end
if self.current_page < self.ui.document.info.number_of_pages then
self.ui.document:hintPage(
self.view.state.page + 1,

@ -15,6 +15,7 @@ require "ui/reader/readercropping"
require "ui/reader/readerkopt"
require "ui/reader/readercopt"
require "ui/reader/readerscreenshot"
require "ui/reader/readerhinting"
--[[
This is an abstraction for a reader interface
@ -132,6 +133,14 @@ function ReaderUI:init()
document = self.document,
}
table.insert(self, cropper)
-- hinting controller
local hinter = ReaderHinting:new{
dialog = self.dialog,
view = self[1],
ui = self,
document = self.document,
}
table.insert(self, hinter)
else
-- make sure we load document first before calling any callback
table.insert(self.postInitCallback, function()

Loading…
Cancel
Save