The original menu layout needs manual dimension calculations
such as white padding for displaying page information in
footer as the title, all item contents and footer are stacked
in one VerticalGroup. Out-of-bound error(koreader/koreader-base#43)
will occur in some corner cases if we missed something in
the calculation. The patch sent in this PR invented a new
layout for menu widget in which no manual calculation is needed
for displaying the footer. And the footer will be placed well
inside the menu frame.
+--------------+
| +----------+ |
| |+--------+| |
| || Header || |
| |+--------+| |
| |+--------+| |
| || Item || |
| || Item || |
| |+--------+| |
| |(Vertical | |
| | Group) | |
| +----------+ |
| Footer |
|(OverlapGroup)|
+--------------+
Device:hasFrontlight always returned a true-like value because util.isEmulated was an integer.
Fixed this, also, used a polymorphic object design to reduce FrontLight code, and
adapted BaseFrontLight for the emulator.
It seems that the setPageMargins method will mess up XPointer of current view.
This bugfix simply disables page margin restoring in readercopt.lua so that
reading position is restorable.
As swiping north/south will generate several pan gestures which will
set refresh mode to WAVEFORM_MODE_A2, we should explicitly do a full
refresh in order to switch refresh waveform from WAVEFORM_MODE_A2
to WAVEFORM_MODE_GC16 as in OnPanRelease.
since the gesture detector will block the main thread
(the only thread in the lua part) for 300 ms on each tap
waiting for the arrival of the second tap, it makes the whole
application less responsive. 300 ms of latency is well perceived
in this case. This patch will simply disable double tap detection by
default as no widget now handles double_tap gestures. We could
temporarily enable double tap detection when this gesture is indeed
needed after.