2
0
mirror of https://github.com/koreader/koreader synced 2024-11-10 01:10:34 +00:00
Commit Graph

10631 Commits

Author SHA1 Message Date
NiLuJe
cfd42254ac SortWidget: Preserve the cancel's button highlight when changing its icon
setIcon recreates the frame without preserving the current frame's
invert status (which is arguably a bug, but button is so ubuquitous that
I dare not touch that behavior...).

So, instead, rely on the rarely used preselect flag to preserve it.
2024-08-17 20:10:08 +02:00
NiLuJe
c21ad4edcc SortWidget: Cleaner FocusManager behavior
With less code, yay.
2024-08-17 20:10:08 +02:00
NiLuJe
0ae11f8cf4 ScreenSaver: Fix comment typo
Link to the right issue ;).
Typo dates back to the original commit, way back in #5928
2024-08-17 20:10:08 +02:00
NiLuJe
ca546f831d SortWidget: Reset focus on page changes
A bit clunky because I have no idea how FocusManager works,
but that works *mostly* sensibly...

Fix #12342
2024-08-17 20:10:08 +02:00
NiLuJe
89b92b6768 FootnoteWidget: Flag as covers_footer
When footnotes are displayed as "popups", they're displayed over ReaderUI
in a BottomContainer, so they pretty much always cover the footer ;).

(i.e., they're really really not popups *at all* :D).

This prevents spurious status bar auto-refreshes.

Re #12323
2024-08-17 20:10:08 +02:00
Benoit Pierre
6bd710b868
ci: fix test / coverage (#12367)
Don't try to re-build (particularly base, since some things where removed before saving the build cache).
2024-08-17 18:43:39 +02:00
David
49a991e82f
[TextViewer] Add hamburger menu to FocusManager and Menu key (#12365) 2024-08-17 17:04:44 +02:00
Benoit Pierre
c2d58e525e
czmq & libzmq: update to 4.2.1 & 4.3.5 respectively (#12350) 2024-08-17 17:02:56 +02:00
Benoit Pierre
6de2a59bd8
bump base (#12360)
- https://github.com/koreader/koreader-base/pull/1900
- https://github.com/koreader/koreader-base/pull/1902
- https://github.com/koreader/koreader-base/pull/1903
- https://github.com/koreader/koreader-base/pull/1905
2024-08-16 07:23:29 +02:00
Benoit Pierre
f586613f94 kodev: rewrite most of it
Factorize (options handling, target setup, …), add explicit
Android targets (`android-arm`, `android-arm64`, etc…).

build:
- support `--no-build` / `-b`: only run setup phase

check: simplify implementation (re-use `.ci/check.sh`)

cov & test:
- forward to makefile rules (no need to guess install directory)
- support `--no-build` / `-b`: use existing build

log:
- drop the target argument (since only Android is supported anyway)

prompt & wbuilder:
- forward to makefile rules (no need to guess install directory)
- support `--no-build` / `-b`: use existing build

release:
- support `--no-build` / `-b`: use existing build

run:
- forward to makefile rules (no need to guess install directory)
- correctly support relative arguments, and whitespace in arguments
- drop support for catchsegv: Glibc 2.35 (2022) dropped catchsegv and
  associated `libSegFault.so` shared library
- drop support for nemiver debugger: project is dead, last release
  was 8 years ago, repo is archived, and package has been dropped
  from newer Debian / Ubuntu releases
- support running an APK passed as argument when using `android` target
- rename short `-d`, `-h`, and `-w` options to `-D`, `-H` and `-W`
  respectively (to avoid conflicts with standard options)
- drop support for `-p` / `--graph` argument: code moved to a dedicated
  wrapper script (`tools/graph_memory.sh`) that can be used with the new
  `-w` / `--wrap` argument: `./kodev run -w tools/graph_memory.sh …`
- drop `--tui` argument when using GDB: said TUI does not cohabit well
  with KOReader console outputs (and cgdb is better fancy TUI anyway)
2024-08-15 09:37:49 +02:00
Benoit Pierre
9c70a3d6a9 kodev: error out if bash is too old 2024-08-15 09:37:49 +02:00
Benoit Pierre
93c7ceccd9 make: tweak emulator test rules
So `make --assume-old=all` can be used for both `testbase` & `testfront`.
2024-08-15 09:37:49 +02:00
Benoit Pierre
b5c4ccc5b3 make: fix emulator coverage rule
- use same busted launch script as for tests
- build & install necessary test data so it can be run from scratch
2024-08-15 09:37:49 +02:00
Benoit Pierre
050c7a96ac make: add run rule for android targets 2024-08-15 09:37:49 +02:00
Benoit Pierre
387a9de305 make: add run rules for emulator targets 2024-08-15 09:37:49 +02:00
Benoit Pierre
59b533a83d make: move emulator specific rules to a dedicated file 2024-08-15 09:37:49 +02:00
hius07
20ac3c3489
Dispatcher: minor wording fixes (#12356) 2024-08-15 09:19:19 +02:00
NiLuJe
a51bd7a7fd
Nit: Make some cache keys prettier (#12354)
Completely pointless commit because I got triggered by a missing pipe in a log ;).
2024-08-15 04:53:18 +02:00
David
3450aaba99
Bug Fix: DPad conflict on Kindle Keyboard (#12341)
* fix conflicting panning and content selection

* accurate keyboard info message
2024-08-13 22:54:08 +02:00
hius07
27e2efcbd2
Annotations: fix page numbers (#12324) 2024-08-13 22:18:24 +03:00
David
f3c0af49c2
Support 'Ctrl' shortcuts on hasKeyboard (#12347) 2024-08-13 20:34:34 +02:00
Frans de Jonge
6eddc66516
[doc] Build: update Android instructions to openjdk-17-jdk-headless (#12345)
Closes #12344.
2024-08-13 17:27:34 +02:00
David
d706a129fa
[Menu] Remove title bar buttons from layout on hasSymKey or hasScreenKB devices (#12328) 2024-08-13 08:43:40 +02:00
NiLuJe
4264d915b1
Kobo: Refactor suspend in order to be able to catch input events sent during the 2s window of ntx madness (#12330)
I don't even remember how badly things broke (at least on old devices) without it, despite it making absolutely no sense at all (state-extended just flips a global that dictates whether some things get flagged as wakeup sources or not).

So, don't rock the boat too much: we don't remove it, but instead of using a sleep, we use a task deadline instead, which ensures we'll keep processing input events in the right order in the meantime. We'll already have neutered input by this point, so we'll only process power events anyway.

That means that the only iffy things are potentially *when* and *where* we have to potentially cancel that task. Resume makes sense, of course, and we log an info message to make the log flow clear; but we also do so in suspend... just in case. With a warning log because that probably indicates something fishy went on.

Also cleanup the comments while I'm there, and actually rewrite the wakeup_count stuff properly so it could actually theoretically be used if ntx kernels were actually reliable. Spoiler alert: they're not, this is still horribly broken on at least Mk < 7. Works just fine on a Forma, though, so, yay.

Fix #12325
2024-08-12 03:47:43 +02:00
NiLuJe
59476d38f4
OTM: Unbreak #11999 (#12337)
Steps need to happen in chronological order, (mostly) always.

Fix https://github.com/koreader/koreader/issues/12326
2024-08-12 03:47:19 +02:00
NiLuJe
4689e4f257
ImageWidget: Don't attempt to pan if we haven't rendered the bb yet (#12331)
Input events from ImageViewer can be caught between it clearing an old
ImageWidget & instantiating a new one, but before the new one has had a
chance to actually render anything.

Fix #12327
2024-08-12 03:46:45 +02:00
Benoit Pierre
de2a9d54f1 make: reword comment 2024-08-11 17:31:10 +02:00
Benoit Pierre
5fe0d4a4a2 make: fix missing android APK asset
Missing `module/version.txt` would trigger a "new install" on every launch.
2024-08-11 17:31:10 +02:00
hius07
c46578aece
BookInfo: rating, review (#12313) 2024-08-11 17:01:15 +03:00
Benoit Pierre
bd4a651fbf make: improve android update
- out-of-tree luajit-launcher build: no leftovers after `make clean`
- use the luajit library compiled by base: no point wasting time
  building a second (different, possibly incompatible) version
2024-08-10 23:34:17 +02:00
Benoit Pierre
ede4ca8b36 make: improve fetchthirdparty rule
- fix running `make` from new checkout
- fetch all submodules recursively (don't defer to base), including luajit-launcher
2024-08-10 23:34:17 +02:00
David
466971c0e2
ReaderFooter: add page-turn item (#12249) 2024-08-10 10:09:23 +02:00
zwim
dc3b638378
TextWidget: allow numbers in setText and updateSize (#12310)
Closes #12318.
2024-08-09 22:06:53 +02:00
zwim
92de5821bb
[AutoWarmth] Delay front light actions after resume (#12315) 2024-08-09 19:42:13 +02:00
Benoit Pierre
2d2921032d
bump luajit-launcher (#12317)
- https://github.com/koreader/android-luajit-launcher/pull/495
- https://github.com/koreader/android-luajit-launcher/pull/500
- https://github.com/koreader/android-luajit-launcher/pull/501
- https://github.com/koreader/android-luajit-launcher/pull/503
- https://github.com/koreader/android-luajit-launcher/pull/503
2024-08-08 22:45:38 +02:00
NiLuJe
cafa9c8251
Disable the legacy ReaderRotation module (#12309)
AFAICT, this has never worked since the KPV -> KOReader refactor, as it relies on a weird little DrawContext "feature", while the actually in-use rotation framework is handled via BlitBuffer.

That kludge pollutes *a lot* of both the backend and frontend code, so I plan to annihilate that in a followup PR.

See #12303 for more context
2024-08-08 04:53:04 +02:00
NiLuJe
46a5d20513
Document: Do not cache panel-zoom tiles to disk and fix their caching and rendering (#12303)
* Use a dedicated cache hash for partial tiles from panel-zoom
* Never dump them to disk, as it confuses DocCache's crappy heuristics that rewinds the cache to skip over the hinted page to try to dump the on-screen page to disk.
* Apply the zoom factor in the exact same way as any other page rect (i.e., floor coordinates, ceil dimensions), and make sure said rect is actually a Geom so it doesn't break the cache hash, which relies on Geom's custom tostring method for rects. Said scaling method *also* belongs to the Geom class anyway.
* Handle such pre-scaled rects properly in renderPage, so as not to apply the zoom factor to the full page, which would attempt to create a gigantic buffer.
* And now that the rect is rendered properly in an appropriately-sized buffer, use the rendered tile as-is, no need to blit it to another (potentially way too large because of the above issue) blank BB.
* The zoom factor is now computed for a scale to best-fit (honoring `imageviewer_rotate_auto_for_best_fit`), ensuring the best efficiency (ImageViewer won't have to re-scale).
* Cache: Reduce the maximum item size to 50% of the cache, instead of 75%.
* Warn about the legacy ReaderRotation module, as it turned out to be horribly broken. The whole machinery (which is spread over *a lot* of various codepaths) is left as-is, peppered with notes & fixmes hinting at the problem. Thankfully, that's not how we actually handle rotation, so it was probably hardly ever used (which possibly explains why nobody ever noticed it breaking, and that nugget possibly dates back to the inception of the kpv -> ko refactor!). (#12309)
2024-08-08 04:52:24 +02:00
Benoit Pierre
5daff2579b
bump base; mostly thirdparty bumps (#12311)
- https://github.com/koreader/koreader-base/pull/1885
- https://github.com/koreader/koreader-base/pull/1886
- https://github.com/koreader/koreader-base/pull/1887
- https://github.com/koreader/koreader-base/pull/1888
- https://github.com/koreader/koreader-base/pull/1889
- https://github.com/koreader/koreader-base/pull/1890
- https://github.com/koreader/koreader-base/pull/1891
- https://github.com/koreader/koreader-base/pull/1892
- https://github.com/koreader/koreader-base/pull/1893
- https://github.com/koreader/koreader-base/pull/1895
- https://github.com/koreader/koreader-base/pull/1896
- https://github.com/koreader/koreader-base/pull/1897
- https://github.com/koreader/koreader-base/pull/1898
2024-08-07 23:33:27 +02:00
David
2900eef276
Show/Hide Virtual keyboard and more keyboard shortcuts (#12162) 2024-08-07 18:09:40 +02:00
hius07
975efae929
ReaderSearch: "All text" improve (#12287) 2024-08-06 19:12:16 +03:00
Frans de Jonge
880b7c5ed1
Profiles: make sure to close menu/quickmenu before executing action (#12299)
Mainly a difference without distinction, but in some edge cases like screenshots it keeps the menu on the screen.
See <https://github.com/koreader/koreader/pull/12293#issuecomment-2269680044>.

The "Show as QuickMenu" is really just for balance; it makes little to no difference.
2024-08-06 15:15:08 +02:00
mbays
fd8c9be57f MultiInputWidget: add addWidget 2024-08-06 13:12:08 +02:00
mbays
092649338b InputDialog: add setAllowNewline 2024-08-06 13:12:08 +02:00
mbays
f122e0082b MultiInputDialog: add enter_callback applying to all fields 2024-08-06 13:12:08 +02:00
mbays
b5203686e3 InputDialog: call edited_callback on edit even when no Save/Close buttons 2024-08-06 13:12:08 +02:00
NiLuJe
7e8cdbcf65
PowerD: Keep track of frontlight state change by interactive callers for suspend/resume purposes (#12283)
While #12256 papered over the tracking of a *single* suspend -> (resume->suspend) series of events, things still go out of sync if you tack on *more* suspend/resume events after that.

The upside is that our *actual* tracking of suspend/resume is solid, so at least we're actually doing the right thing as far as PM is concerned.

The downside is that on Kobo, the frontlight handling code is full of delays, and the ramping down/up itself also takes some time, so things can quickly overrun into the wrong event.

This means a couple of things:

* We need to cancel any scheduled frontlight toggles and ramps on Kobo, to ensure that only the one from the *last* event received goes through, in an attempt to limit the amount of potential crossover.
* Tracking fl_was_on *cannot* reliably be done from the suspend/resume handlers (especially on Kobo), as the ramps themselves may cross over the event barriers (and we potentially cancel the task anyway), so this was moved to the very few interactive callers that will actually change the frontlight state.
* On Kobo, crossover is still *somewhat* possible because the ramps take time. It's mostly harmless for the ramp down, we just need to tweak the ramp down to start from the actual intensity to avoid a weird jump on the initial step if there's an inconsistency. For the ramp up, we potentially need to manually kill the light first, because off -> on assumes it *really* starts from off ;).

Followup to #12256
Fix #12246 (again)
2024-08-06 01:13:14 +02:00
Frédéric Brière
9e6f3dac65
Panel zoom: Properly handle renderPage() not rendering the whole page (#12296)
When zooming to a small panel on a device with a large display, the
resulting zoom factor often causes `renderPage()` to only render the
panel itself instead of the whole page.  `getPagePart()` needs to
account for that when extracting the panel from the rendered tile.

Fixes half of #7961 (namely the black/half-black rectangles)
2024-08-05 22:47:51 +02:00
Benoit Pierre
a6663202b7
NetworkMgr: fix debug trace (#12297)
Prevent crash:
```
./luajit: frontend/util.lua:1092: attempt to get length of local 'str' (a nil value)
stack traceback:
        frontend/util.lua:1092: in function 'fixUtf8'
        frontend/ui/network/manager.lua:1109: in function 'requestToTurnOnWifi'
[…]
```
2024-08-05 19:09:47 +02:00
Benoit Pierre
f22e8bbbc2
doc: update building documentation (#12295)
Meson is now required.
2024-08-05 13:00:38 +02:00
David
3992438872
[CoverBrowser.MosaicMenu] Increase focus underline thickness (#12189) 2024-08-05 10:19:16 +02:00