From e91b7bd266d21b7d1170217cbcf188b1892a2518 Mon Sep 17 00:00:00 2001 From: chrox Date: Sun, 27 Sep 2015 09:05:37 +0800 Subject: [PATCH 1/3] set foucus of button table only if the device has a dpad so that Kindle Voyage won't show a highlighted button in confirm dialog. --- frontend/device/emulator/device.lua | 1 + frontend/device/generic/device.lua | 1 + frontend/device/kindle/device.lua | 4 ++++ frontend/ui/widget/buttontable.lua | 2 +- 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/frontend/device/emulator/device.lua b/frontend/device/emulator/device.lua index a6bb97829..6b54f657c 100644 --- a/frontend/device/emulator/device.lua +++ b/frontend/device/emulator/device.lua @@ -9,6 +9,7 @@ local Device = Generic:new{ isEmulator = yes, hasKeyboard = yes, hasKeys = yes, + hasDPad = yes, hasFrontlight = yes, isTouchDevice = yes, } diff --git a/frontend/device/generic/device.lua b/frontend/device/generic/device.lua index 14b7e1c45..652621d5d 100644 --- a/frontend/device/generic/device.lua +++ b/frontend/device/generic/device.lua @@ -16,6 +16,7 @@ local Device = { -- hardware feature tests: (these are functions!) hasKeyboard = no, hasKeys = no, + hasDPad = no, isTouchDevice = no, hasFrontlight = no, diff --git a/frontend/device/kindle/device.lua b/frontend/device/kindle/device.lua index 215126f45..dc371450e 100644 --- a/frontend/device/kindle/device.lua +++ b/frontend/device/kindle/device.lua @@ -12,23 +12,27 @@ local Kindle2 = Kindle:new{ model = "Kindle2", hasKeyboard = yes, hasKeys = yes, + hasDPad = yes, } local KindleDXG = Kindle:new{ model = "KindleDXG", hasKeyboard = yes, hasKeys = yes, + hasDPad = yes, } local Kindle3 = Kindle:new{ model = "Kindle3", hasKeyboard = yes, hasKeys = yes, + hasDPad = yes, } local Kindle4 = Kindle:new{ model = "Kindle4", hasKeys = yes, + hasDPad = yes, } local KindleTouch = Kindle:new{ diff --git a/frontend/ui/widget/buttontable.lua b/frontend/ui/widget/buttontable.lua index cea718912..cd3fb0392 100644 --- a/frontend/ui/widget/buttontable.lua +++ b/frontend/ui/widget/buttontable.lua @@ -68,7 +68,7 @@ function ButtonTable:init() self:addHorizontalSep() end end -- end for each button line - if Device:hasKeys() then + if Device:hasDPad() then self.layout = self.buttons self.layout[1][1]:onFocus() self.key_events.SelectByKeyPress = { {{"Press", "Enter"}} } From 4920426148def93ba75928cac4220e508591c321 Mon Sep 17 00:00:00 2001 From: chrox Date: Sun, 27 Sep 2015 09:25:47 +0800 Subject: [PATCH 2/3] no need to do full screen refresh when outof screensaver since there is already one by the native system --- frontend/device/emulator/device.lua | 2 ++ frontend/device/generic/device.lua | 7 ++++++- frontend/device/kindle/device.lua | 2 ++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/frontend/device/emulator/device.lua b/frontend/device/emulator/device.lua index 6b54f657c..533eb05de 100644 --- a/frontend/device/emulator/device.lua +++ b/frontend/device/emulator/device.lua @@ -3,6 +3,7 @@ local util = require("ffi/util") local DEBUG = require("dbg") local function yes() return true end +local function no() return false end local Device = Generic:new{ model = "Emulator", @@ -12,6 +13,7 @@ local Device = Generic:new{ hasDPad = yes, hasFrontlight = yes, isTouchDevice = yes, + needsScreenRefreshAfterResume = no, } function Device:init() diff --git a/frontend/device/generic/device.lua b/frontend/device/generic/device.lua index 652621d5d..743207806 100644 --- a/frontend/device/generic/device.lua +++ b/frontend/device/generic/device.lua @@ -2,6 +2,7 @@ local Event = require("ui/event") local util = require("ffi/util") local DEBUG = require("dbg") +local function yes() return true end local function no() return false end local Device = { @@ -34,6 +35,8 @@ local Device = { viewport = nil, -- enforce portrait orientation on display, no matter how configured at startup isAlwaysPortrait = no, + -- needs full screen refresh when resumed from screensaver? + needsScreenRefreshAfterResume = yes, } function Device:new(o) @@ -132,7 +135,9 @@ end function Device:resume() local UIManager = require("ui/uimanager") UIManager:unschedule(self.suspend) - self.screen:refreshFull() + if self:needsScreenRefreshAfterResume() then + self.screen:refreshFull() + end self.screen_saver_mode = false self.powerd:refreshCapacity() end diff --git a/frontend/device/kindle/device.lua b/frontend/device/kindle/device.lua index dc371450e..d57063104 100644 --- a/frontend/device/kindle/device.lua +++ b/frontend/device/kindle/device.lua @@ -2,6 +2,7 @@ local Generic = require("device/generic/device") local DEBUG = require("dbg") local function yes() return true end +local function no() return false end local Kindle = Generic:new{ model = "Kindle", @@ -71,6 +72,7 @@ local KindleVoyage = Kindle:new{ hasKeys = yes, display_dpi = 300, touch_dev = "/dev/input/event1", + needsScreenRefreshAfterResume = no, } local KindlePaperWhite3 = Kindle:new{ From d198f1c7abe8cac758bb9ed9c41d9f2b6df536c3 Mon Sep 17 00:00:00 2001 From: chrox Date: Sun, 27 Sep 2015 22:29:59 +0800 Subject: [PATCH 3/3] don't set focus button for Android --- frontend/device/android/device.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frontend/device/android/device.lua b/frontend/device/android/device.lua index 43a7768b4..493f922ed 100644 --- a/frontend/device/android/device.lua +++ b/frontend/device/android/device.lua @@ -4,10 +4,12 @@ local ffi = require("ffi") local DEBUG = require("dbg") local function yes() return true end +local function no() return false end local Device = Generic:new{ model = "Android", hasKeys = yes, + hasDPad = no, isAndroid = yes, firmware_rev = "none", display_dpi = ffi.C.AConfiguration_getDensity(android.app.config),