Commit Graph

1158 Commits (9c4088a3ac88e07ea5a4810bc7f077b9247a43c0)

Author SHA1 Message Date
Hans-Werner Hilse 9c4088a3ac small change of UIManager:show(): No more automatic refresh
This eliminates the API difference between the extra parameters of
UIManager:show() and setDirty(). They work the same now.
Note that this also eliminates the automatic refresh that took place
before when using show() without refresh options. It always refreshed
the full screen, which led to too big refresh regions all over the
place. Thus, refresh has now explicitly to be asked for, hopefully
encouraging to implement it in the widget that gets shown (and is
aware about the screen region it covers).

Also add an event that is triggered when a widget is closed:
CloseWidget. So a widget can implement "onCloseWidget()" to trigger
actions upon closing - most commonly, this is a refresh for the area
previously taken by the widget. That way, the widget's user does not
have to take measures to ensure that the area is refreshed later.
10 years ago
Huang Xin ddae003925 Merge pull request #1310 from hwhw/master
fixes for scrolling, fix for double-refresh, misc stuff
10 years ago
Hans-Werner Hilse e8642fbad7 use API for refresh when closing widgets in message popups 10 years ago
Hans-Werner Hilse 1091a8a3b9 add refresh control to UIManager:close() 10 years ago
Hans-Werner Hilse 143c56c48c record ButtonDialog.dimen 10 years ago
Hans-Werner Hilse afb59667c0 allow for more control on refreshes when show()ing widgets
for now, we have show() automatically call setDirty() for the new
widget, as before. However, now show() takes two arguments for
refresh configuration that will get passed on to setDirty().

For compatibility, the default is here in show() to do a partial
refresh. So if you want no refresh triggered (via this show() call),
add a function that doesn't return anything.
10 years ago
Frans de Jonge 47d7a48555 OPDS: refactored unit test and fixed a minor bug with undefined image_rel 10 years ago
Hans-Werner Hilse 3f9dc46315 fix dict window refresh
was still using old API
also, move this to another place.
10 years ago
Frans de Jonge c25254a7ec OPDS: embryonic unit test for OPDS browser
This initial seed specifically tests against what recently broke in Gutenberg and FeedBooks.
10 years ago
Hans-Werner Hilse f02be20a65 refresh fixes for the menus
this will only refresh the areas that actually need to be refreshed.
10 years ago
Hans-Werner Hilse 6793a4fee1 reader config dialog: properly refresh config pane
This serves as a good example for the way refreshes are done:
setDirty("all", function() ... end)
* the "all" will have all widgets on screen repainted.
  In this case that is needed because the config pane has
  different sizes, covering different parts of underlying
  widgets. So they need to be repainted every time.
* the function will return the area to refresh and is evaluated
  after painting. In this example, we take the area that is covered
  by the config pane before switching it (if present at all), and
  hand it to the refresh area function as an upvalue.
  When the function is called later after painting, it will
  use that saved area and combine it with the area that is covered
  then by the widget. That way, parts that are covered no more are
  included in the refresh area, too.
10 years ago
Hans-Werner Hilse 82c26b1f18 adapt widgets to new refresh/repaint API 10 years ago
Hans-Werner Hilse 229c5ad61c change setDirty/refresh API
See documentation in the code.
In short: There is now one single method, setDirty(), that triggers
repaints and/or refreshes.
All variables in UIManager are gone - at least from an external
perspective. Everything is done through setDirty().
This also allows for easier debugging, since all requests come
in via function calls.
10 years ago
Hans-Werner Hilse 2f9386cd69 move refresh menu table out of UIManager
no need to clutter a core file of the whole UI concept with definitions
of UI elements
10 years ago
Andrey Golovizin 296f63b22a OPDS: ignore links with unknown rel values, treat empty rel as rel="subsection". 10 years ago
HW cceac98180 Merge pull request #1298 from Frenzie/master
Language: prevent spaces from disappearing in localizations with util.template
10 years ago
Frans de Jonge 73a6f71a0b Prevent spaces from being eaten by Transifex
Fixes #1276
10 years ago
Frans de Jonge 7a87b66fa1 OPDS catalog: auto-fill http:// if no protocol given and revert #1106
This fixes #1259.
10 years ago
Huang Xin 1b07698952 Merge pull request #1296 from hwhw/imagewidget_alpha
Imagewidget alpha
10 years ago
Hans-Werner Hilse 0c80537003 allow image widgets to do alpha-blitting
when the image (e.g. a PNG) does contain an alpha channel, that can
be honored by ImageWidget. It doesn't do so by default for compatibility
(arguably, we should change that in the future), it has to be enabled
by setting the "alpha" property to "true" (boolean, not string).
10 years ago
Hans-Werner Hilse a82bafc63c fix handling of invalid UTF8 sequences
external data (and in bad cases our own) can contain invalid byte
sequences in UTF8 strings. A prominent example are file names.
There was a 1-off bug in calculating the allowed length for multibyte
chars, and the iterator was a bit too greedy when stumbling upon
invalid sequences, returning a single "invalid" char for a sequence
up to the point where it became invalid in calculation. Now, we present
one invalid char for the first byte of that sequence and then check
for a valid char starting with the next byte.
10 years ago
Huang Xin a72bc33022 Merge pull request #1293 from Frenzie/language
Reworked several strings
10 years ago
Frans de Jonge 693fa0837e Reworked several strings
This is the remaining gruntwork of #1276. I believe that only leaves networkmgr.lua and filemanagersearch.lua, which will require a little more thought.
10 years ago
Huang Xin e835c1e502 Merge pull request #1280 from hwhw/master
fix a case when "ip r" command fails
10 years ago
Frans de Jonge 66f04af8fb Various applications of util.template
This is the first bunch for #1276. I'd like to resolve #1281 before doing more.
10 years ago
Hans-Werner Hilse 48610006d5 fix a case when "ip r" command fails
our network manager script isn't the beauty of the code base.
However, this fixes a case where it would crash the reader when an
external command fails.

fixes #1279.
10 years ago
Frans de Jonge cf93605d04 Change "Screen Mode" to "Orientation"
Screen mode isn't user-oriented. Orientation is.

"Page" in "Page Margin" is redundant
10 years ago
chrox ca60ceacd0 make radius field respects popout flag 10 years ago
chrox e1af7f2ed3 prompt users to long press directory to set inbox
This should fix #1233.
10 years ago
chrox 0a06041cd9 fix calculation of widget height of filechooser
the height of filechooser is provided when creating filechooser
widget since there may be no title as in filemanger which needs
a special title widget to contain filemanger menu.
10 years ago
chrox 67693367b9 init width and height of filechooser widget during init
so that everytime a filechooser is inited right dimension
size is used.
10 years ago
Hans-Werner Hilse 21ded080dd fix refactor bug: invalidate update_regions_func 10 years ago
Hans-Werner Hilse 8696ca1fa1 fix old (pre-refactor) refresh call syntax 10 years ago
Hans-Werner Hilse 22697adf20 switch from scaleByDPI() to scaleBySize() 10 years ago
Hans-Werner Hilse 63af71188a refactor refresh
Lots of the device-related distinction wandered into
base/ffi/framebuffer_<driver>. This eases the refresh logic in
UI manager, which basically only decides what kind of refresh
to trigger. The device specific configuration in the framebuffer
driver decides how to realize that whish.

screen.lua is gone, in its place is now the framebuffer driver.
The device abstraction decides what framebuffer driver to load.
10 years ago
HW 7b91935df0 Merge pull request #1230 from chrox/fix_1170
fix #1169 and #1170
10 years ago
chrox d11dba0558 fix #1169 and #1170 10 years ago
chrox 3574865dcb fix #1166 by auto alignment of option name 10 years ago
Frans de Jonge da00b4b8a9 Refactored menu
While looking into #1219 I accidentally ended up refactoring some stuff.

Tested in emulator and on H2O, but be wary because I might have overlooked something.
10 years ago
chrox dbf8faa9b1 remove hardcoded footer height of reader menu 10 years ago
chrox f52872b081 default autoscale for IconButton 10 years ago
chrox e66801039b refactoring: reuse IconButton for config menu bar 10 years ago
Hans-Werner Hilse ab44d1f7e3 fix item number distinction (plural forms) 10 years ago
Frans de Jonge 8b9bbf918c Fix typo in #1176 10 years ago
Frans de Jonge d701d9b198 First util.template encapsulated strings 10 years ago
NiLuJe e9573ebe58 Try to avoid more update_regions_func mismatches
scheduling tricks
10 years ago
NiLuJe 9bd089812b Tweaks and fixes for refresh logic
Don't increase counter for regional updates
Also some workarounds for Kobos

Try to avoid update_regions_func poisoning

Reset it at the end of repaint() even if nothing was found dirty

Ensure regional updates are always PARTIAL, in
case we get a region attached to an automatically triggered refresh, not
marked force_partial [which, hey, shouldn't happen, but apparently does
sometimes ^^]
10 years ago
Hans-Werner Hilse 3d03713cb1 implement case-insensitive sort, make default and configurable
This will convert any file name to lowercase before doing the comparison.
Note that this will only work for ASCII character range, a full Unicode
aware solution will be much more complicated. And in the end, file names
are byte arrays, not character strings ;-)

fixes #1183.
10 years ago
Hans-Werner Hilse e031599c0a fix strcoll() workaround
The strcoll() workaround we had in place for Kobo devices was (or has
become) ineffective. We had set self.strcoll to nil on Kobo devices -
but this was the instance variable. Setting it to nil effectively makes
the instance variable vanish, so when trying to access it later, it
was not there and got looked up via the metatable - which had the original
reference. Setting it to nil had no effect whatsoever.

We simplify that approach and set the replacement function where before we
had set this to nil.

This is a partial fix for issue #1183 (and explains a comment in issue #686
which says that the old fix did not work).

However, to really fix #1183 - if we want to do so - we would need a collate
function that normalizes uppercase/lowercase before compare.
10 years ago
Hans-Werner Hilse 45cf927ee8 Fix double-check of task list
Since commit 12a76fee33, we had a potential
bug on the event mechanism:

It introduced (besides the checkTasks method itself) a second run of the
checkTasks() method. In the second run, however, scheduled events were
not taken into consideration in how long to wait for input events
afterwards.

So when the after the first run of checkTasks() there were new scheduled
tasks added to the task queue, they were not properly scheduled and
and depended on an already existing scheduled event or an input event
to trigger.

This might have led to unexpected order of execution (though the order
is not guaranteed by the task scheduling anyway!) or to events triggering
not at all until the next input event.
10 years ago