From d2743b6f1538114e346d5eb9cdf0a41dccec2761 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Sun, 18 Dec 2016 20:27:56 -0800 Subject: [PATCH] fix: migrate readermenu to use touch zone --- frontend/apps/reader/modules/readerfooter.lua | 12 ++++-- frontend/apps/reader/modules/readermenu.lua | 38 ++++++++----------- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/frontend/apps/reader/modules/readerfooter.lua b/frontend/apps/reader/modules/readerfooter.lua index e53084efc..60a201597 100644 --- a/frontend/apps/reader/modules/readerfooter.lua +++ b/frontend/apps/reader/modules/readerfooter.lua @@ -211,14 +211,20 @@ function ReaderFooter:setupTouchZones() } self.ui:registerTouchZones({ { - id = "footer_tap", + id = "readerfooter_tap", ges = "tap", screen_zone = footer_screen_zone, handler = function() return self:onTapFooter() end, - overrides = { 'tap_forward', 'tap_backward', }, + overrides = { + 'tap_forward', 'tap_backward', + -- NOTE: readermenu_tap override is needed to keep behavior + -- consistent with the old code base in case of overlap between + -- footer and menu tap zones + 'readermenu_tap', + }, }, { - id = "footer_hold", + id = "readerfooter_hold", ges = "hold", screen_zone = footer_screen_zone, handler = function() return self:onHoldFooter() end, diff --git a/frontend/apps/reader/modules/readermenu.lua b/frontend/apps/reader/modules/readermenu.lua index 9aa93f9c2..ee1c4419f 100644 --- a/frontend/apps/reader/modules/readermenu.lua +++ b/frontend/apps/reader/modules/readermenu.lua @@ -1,9 +1,7 @@ local InputContainer = require("ui/widget/container/inputcontainer") local CenterContainer = require("ui/widget/container/centercontainer") -local GestureRange = require("ui/gesturerange") local UIManager = require("ui/uimanager") local Device = require("device") -local Geom = require("ui/geometry") local Screensaver = require("ui/screensaver") local Event = require("ui/event") local Screen = require("device").screen @@ -74,20 +72,23 @@ function ReaderMenu:init() end end -function ReaderMenu:initGesListener() - self.ges_events = { - TapShowMenu = { - GestureRange:new{ - ges = "tap", - range = Geom:new{ - x = Screen:getWidth()*DTAP_ZONE_MENU.x, - y = Screen:getHeight()*DTAP_ZONE_MENU.y, - w = Screen:getWidth()*DTAP_ZONE_MENU.w, - h = Screen:getHeight()*DTAP_ZONE_MENU.h - } - } +function ReaderMenu:onReaderReady() + -- deligate gesture listener to readerui + self.ges_events = {} + self.onGesture = nil + if not Device:isTouchDevice() then return end + + self.ui:registerTouchZones({ + { + id = "readermenu_tap", + ges = "tap", + screen_zone = { + ratio_x = DTAP_ZONE_MENU.x, ratio_y = DTAP_ZONE_MENU.y, + ratio_w = DTAP_ZONE_MENU.w, ratio_h = DTAP_ZONE_MENU.h, + }, + handler = function() return self:onTapShowMenu() end, }, - } + }) end function ReaderMenu:setUpdateItemTable() @@ -227,13 +228,6 @@ function ReaderMenu:onTapCloseMenu() self.ui:handleEvent(Event:new("CloseConfigMenu")) end -function ReaderMenu:onSetDimensions(dimen) - -- update listening according to new screen dimen - if Device:isTouchDevice() then - self:initGesListener() - end -end - function ReaderMenu:onReadSettings(config) self.last_tab_index = config:readSetting("readermenu_tab_index") or 1 end