Merge pull request #1310 from hwhw/master

fixes for scrolling, fix for double-refresh, misc stuff
pull/1314/head v2014.12.01-nightly
Huang Xin 10 years ago
commit ddae003925

@ -106,7 +106,7 @@ function ReaderDictionary:showDict(word, results, box)
-- differentiate between dict and wiki
wiki = self.wiki,
}
UIManager:show(self.dict_window)
UIManager:show(self.dict_window, nil, nil, "none")
end
end

@ -149,7 +149,7 @@ function ReaderFont:onSetFontSize(new_size)
UIManager:show(Notification:new{
text = T( _("Font size set to %1."), self.font_size),
timeout = 1,
})
}, nil, nil, "none")
self.ui.document:setFontSize(Screen:scaleBySize(new_size))
self.ui:handleEvent(Event:new("UpdatePos"))

@ -267,20 +267,13 @@ function ReaderFooter:onTapFooter(arg, ges)
self.mode = 0
end
self:applyFooterMode()
G_reader_settings:saveSetting("reader_footer_mode", self.mode)
end
if self.pageno then
self:updateFooterPage()
else
self:updateFooterPos()
end
local region = Geom:new{
x = 0,
y = Screen:getHeight() - self.height,
w = Screen:getWidth(),
h = self.height
}
UIManager:setDirty(self.view.dialog, "partial", region)
G_reader_settings:saveSetting("reader_footer_mode", self.mode)
return true
end

@ -368,7 +368,9 @@ function ReaderHighlight:onHoldRelease()
},
tap_close_callback = function() self:handleEvent(Event:new("Tap")) end,
}
UIManager:show(self.highlight_dialog)
UIManager:show(self.highlight_dialog, nil, nil, function()
return "partial", self.highlight_dialog.dimen
end)
end
return true
end

@ -344,8 +344,8 @@ function ReaderPaging:onPanRelease(arg, ges)
end
else
self.last_pan_relative_y = 0
-- trigger full refresh
UIManager:setDirty(nil, "full")
-- trigger partial refresh
UIManager:setDirty(nil, "partial")
end
end

@ -83,7 +83,8 @@ end
-- register & show a widget
-- modal widget should be always on the top
function UIManager:show(widget, x, y)
-- for refreshtype & refreshregion see description of setDirty()
function UIManager:show(widget, x, y, refreshtype, refreshregion)
DEBUG("show widget", widget.id)
self._running = true
local window = {x = x or 0, y = y or 0, widget = widget}
@ -97,7 +98,7 @@ function UIManager:show(widget, x, y)
end
end
-- and schedule it to be painted
self:setDirty(widget, "partial")
self:setDirty(widget, refreshtype or "partial", refreshregion)
-- tell the widget that it is shown now
widget:handleEvent(Event:new("Show"))
-- check if this widget disables double tap gesture
@ -107,7 +108,8 @@ function UIManager:show(widget, x, y)
end
-- unregister a widget
function UIManager:close(widget)
-- for refreshtype & refreshregion see description of setDirty()
function UIManager:close(widget, refreshtype, refreshregion)
if not widget then
DEBUG("widget not exist to be closed")
return
@ -127,8 +129,9 @@ function UIManager:close(widget)
if dirty then
-- schedule remaining widgets to be painted
for i = 1, #self._window_stack do
self:setDirty(self._window_stack[i].widget, "partial")
self:setDirty(self._window_stack[i].widget)
end
self:_refresh(refreshtype, refreshregion)
end
end
@ -204,7 +207,7 @@ function UIManager:setDirty(widget, refreshtype, refreshregion)
end
end
-- handle refresh information
if not refreshtype then return end
if not refreshtype or refreshtype == "none" then return end
if type(refreshtype) == "function" then
-- callback, will be issued after painting
table.insert(self._refresh_func_stack, refreshtype)

@ -63,4 +63,9 @@ function ButtonDialog:onClose()
return true
end
function ButtonDialog:paintTo(...)
InputContainer.paintTo(self, ...)
self.dimen = self[1][1].dimen -- FrameContainer
end
return ButtonDialog

@ -88,6 +88,7 @@ function DictQuickLookup:init()
end
function DictQuickLookup:update()
local orig_dimen = self.dict_frame and self.dict_frame.dimen or Geom:new{}
-- calculate window dimension and try to not hide highlighted word
self.align = "center"
self.region = Geom:new{
@ -256,7 +257,12 @@ function DictQuickLookup:update()
self.dict_frame,
}
}
UIManager:setDirty("all", "partial")
UIManager:setDirty("all", function()
local update_region = self.dict_frame.dimen:combine(orig_dimen)
DEBUG("update dict region", update_region)
return "partial", update_region
end)
end
function DictQuickLookup:isPrevDictAvaiable()
@ -282,14 +288,7 @@ function DictQuickLookup:changeDictionary(index)
self.lookupword = self.results[index].word
self.definition = self.results[index].definition
local orig_dimen = self.dict_frame and self.dict_frame.dimen or Geom:new{}
self:update()
UIManager.update_regions_func = function()
local update_region = self.dict_frame.dimen:combine(orig_dimen)
DEBUG("update dict region", update_region)
return {update_region}
end
end
function DictQuickLookup:changeToDefaultDict()

@ -25,6 +25,7 @@ local InfoMessage = InputContainer:new{
face = Font:getFace("infofont", 25),
text = "",
timeout = nil, -- in seconds
closed = false,
}
function InfoMessage:init()
@ -78,22 +79,30 @@ function InfoMessage:init()
}
end
function InfoMessage:close()
if not self.closed then
self.closed = true
UIManager:close(self, "partial", self[1][1].dimen)
end
end
function InfoMessage:onShow()
-- triggered by the UIManager after we got successfully shown (not yet painted)
if self.timeout then
UIManager:scheduleIn(self.timeout, function() UIManager:close(self) end)
UIManager:scheduleIn(self.timeout, function() self:close() end)
end
self.closed = false
return true
end
function InfoMessage:onAnyKeyPressed()
-- triggered by our defined key events
UIManager:close(self)
self:close()
return true
end
function InfoMessage:onTapClose()
UIManager:close(self)
self:close()
return true
end

@ -20,6 +20,7 @@ local Notification = InputContainer:new{
timeout = nil,
margin = 5,
padding = 5,
closed = false,
}
function Notification:init()
@ -55,17 +56,25 @@ function Notification:init()
}
end
function Notification:close()
if not self.closed then
self.closed = true
UIManager:close(self, "partial", self[1][1].dimen)
end
end
function Notification:onShow()
-- triggered by the UIManager after we got successfully shown (not yet painted)
if self.timeout then
UIManager:scheduleIn(self.timeout, function() UIManager:close(self) end)
UIManager:scheduleIn(self.timeout, function() self:close() end)
end
self.closed = false
return true
end
function Notification:onAnyKeyPressed()
-- triggered by our defined key events
UIManager:close(self)
self:close()
return true
end

Loading…
Cancel
Save