2
0
mirror of https://github.com/koreader/koreader synced 2024-11-11 19:11:14 +00:00

Merge pull request #1204 from hwhw/nilujes-fixes

Nilujes fixes
This commit is contained in:
Huang Xin 2014-11-18 17:51:50 +08:00
commit 4e58ed6070
5 changed files with 45 additions and 29 deletions

View File

@ -274,7 +274,7 @@ local touch_set = Set { "0F", "11", "10", "12" }
local pw_set = Set { "24", "1B", "1D", "1F", "1C", "20" }
local pw2_set = Set { "D4", "5A", "D5", "D6", "D7", "D8", "F2", "17",
"60", "F4", "F9", "62", "61", "5F" }
local kt2_set = Set { "C6" }
local kt2_set = Set { "C6", "DD" }
local kv_set = Set { "13", "54", "2A", "4F", "52", "53" }
if k2_set[kindle_devcode] then

View File

@ -51,6 +51,7 @@ local UIManager = {
full_refresh_waveform_mode = WAVEFORM_MODE_GC16,
partial_refresh_waveform_mode = WAVEFORM_MODE_GC16,
wait_for_every_marker = false,
wait_for_ui_markers = false,
-- force to repaint all the widget is stack, will be reset to false
-- after each ui loop
repaint_all = false,
@ -63,6 +64,8 @@ local UIManager = {
-- trigger a full refresh when counter reaches FULL_REFRESH_COUNT
FULL_REFRESH_COUNT = G_reader_settings:readSetting("full_refresh_count") or DRCOUNTMAX,
refresh_count = 0,
-- only update specific regions of the screen
update_regions_func = nil,
event_handlers = nil,
@ -129,6 +132,8 @@ function UIManager:init()
-- Let the driver handle it on those models (asking for NTX_WFM_MODE_GL16 appears to be a very bad idea, #1146)
self.partial_refresh_waveform_mode = WAVEFORM_MODE_AUTO
self.wait_for_every_marker = false
-- NOTE: Let's see if a bit of waiting works around potential timing issues on Kobos when doing *UI* refreshes in fast succession. (Not a concern on Kindle, where we have MXCFB_WAIT_FOR_UPDATE_SUBMISSION).
self.wait_for_ui_markers = true
end
-- Let the driver decide what to do with PARTIAL UI updates...
self.default_waveform_mode = WAVEFORM_MODE_AUTO
@ -390,6 +395,7 @@ function UIManager:repaint()
widget.widget:paintTo(Screen.bb, widget.x, widget.y)
if self._dirty[widget.widget] == "auto" then
-- Most likely a 'reader' refresh. 'request' in the sense once we hit our FULL_REFRESH_COUNT ;).
request_full_refresh = true
end
if self._dirty[widget.widget] == "full" then
@ -426,8 +432,12 @@ function UIManager:repaint()
local waveform_mode = self.default_waveform_mode
local wait_for_marker = self.wait_for_every_marker
if dirty then
if force_partial_refresh or force_fast_refresh then
if force_partial_refresh or force_fast_refresh or self.update_regions_func then
refresh_type = UPDATE_MODE_PARTIAL
-- Override wait_for_marker if we need to enable the Kobo timing workaround on UI refreshes
if self.wait_for_ui_markers then
wait_for_marker = true
end
elseif force_full_refresh or self.refresh_count == self.FULL_REFRESH_COUNT - 1 then
refresh_type = UPDATE_MODE_FULL
end
@ -467,11 +477,11 @@ function UIManager:repaint()
-- REAGL refreshes are always FULL (but without a black flash), but we want to keep our black flash timeout working, so don't reset the counter on FULL REAGL refreshes...
if refresh_type == UPDATE_MODE_FULL and waveform_mode ~= WAVEFORM_MODE_REAGL and waveform_mode ~= NTX_WFM_MODE_GLD16 then
self.refresh_count = 0
elseif not force_partial_refresh and not force_full_refresh then
elseif not force_partial_refresh and not force_full_refresh and not self.update_regions_func then
self.refresh_count = (self.refresh_count + 1)%self.FULL_REFRESH_COUNT
end
self.update_regions_func = nil
end
self.update_regions_func = nil
end
-- this is the main loop of the UI controller

View File

@ -152,14 +152,14 @@ end
function Button:onTapSelectButton()
if self.enabled and self.callback then
UIManager:scheduleIn(0.0, function()
self[1].invert = true
-- NOTE: Nope, this breaks the FM, by only refreshing the buttons themselves :D.
--[[
UIManager.update_regions_func = function()
return {self[1].dimen}
end
--]]
UIManager.repaint_all = true -- FIXME: Why?
UIManager:setDirty(self.show_parent, "partial")
end)
UIManager:scheduleIn(0.1, function()
self.callback()
self[1].invert = false

View File

@ -39,11 +39,13 @@ function IconButton:initGesListener()
end
function IconButton:onTapClickButton()
UIManager:scheduleIn(0.0, function()
self.image.invert = true
UIManager.update_regions_func = function()
return {self[1].dimen}
end
UIManager:setDirty(self.show_parent, "partial")
end)
-- make sure button reacts before doing callback
UIManager:scheduleIn(0.1, function()
self.callback()

View File

@ -95,11 +95,13 @@ function TouchMenuItem:onTapSelect(arg, ges)
end
if enabled == false then return end
UIManager:scheduleIn(0.0, function()
self.item_frame.invert = true
UIManager.update_regions_func = function()
return {self.dimen}
end
UIManager:setDirty(self.show_parent, "partial")
end)
UIManager:scheduleIn(0.1, function()
self.menu:onMenuSelect(self.item)
end)
@ -117,11 +119,13 @@ function TouchMenuItem:onHoldSelect(arg, ges)
end
if enabled == false then return end
UIManager:scheduleIn(0.0, function()
self.item_frame.invert = true
UIManager.update_regions_func = function()
return {self.dimen}
end
UIManager:setDirty(self.show_parent, "partial")
end)
UIManager:scheduleIn(0.1, function()
self.menu:onMenuHold(self.item)
end)
@ -454,7 +458,7 @@ function TouchMenu:updateItems()
self.page_info_right_chev:enableDisable(self.page < self.page_num)
self.time_info.text = os.date("%H:%M").." @ "..Device:getPowerDevice():getCapacity().."%"
-- FIXME: this is a dirty hack to clear previous menus
-- refert to issue #664
-- refer to issue #664 (in kindlepdfviewer)
UIManager.repaint_all = true
end
@ -533,7 +537,7 @@ function TouchMenu:onMenuSelect(item)
callback = item.callback_func()
end
if callback then
-- put stuff in scheduler so we can See
-- put stuff in scheduler so we can see
-- the effect of inverted menu item
UIManager:scheduleIn(0.1, function()
self:closeMenu()