Skip to content

[ReaderFooter] update status bar in real time when inverting page turning#12424

Merged
Frenzie merged 26 commits into
koreader:masterfrom
Commodore64user:update-in-real-time
Sep 25, 2024
Merged

[ReaderFooter] update status bar in real time when inverting page turning#12424
Frenzie merged 26 commits into
koreader:masterfrom
Commodore64user:update-in-real-time

Conversation

@Commodore64user

@Commodore64user Commodore64user commented Aug 28, 2024

Copy link
Copy Markdown
Member

what's new

  • currently, the page-turn item introduced in ReaderFooter: Add page-turn item #12249 will not automatically update the status bar. This removes the need to make manual changes (i.e turn the page) before changes are reflected on screen.
  • update onSwapPageTurnButtons event handler to deal with all turn-page inversions
  • adds two dispatcher entries so they can be used through Profiles.

This change is Reviewable

@poire-z

poire-z commented Aug 28, 2024

Copy link
Copy Markdown
Contributor

Probably - but that's for you to check if it's needed when you toggle it back to regular.

@NiLuJe

NiLuJe commented Aug 28, 2024

Copy link
Copy Markdown
Member

Err, this isn't an Event that's sent by anything?

@NiLuJe

NiLuJe commented Aug 28, 2024

Copy link
Copy Markdown
Member

By which I mean, the dispatcher event appears to be SwapPageTurnButtons?

@Commodore64user

Commodore64user commented Aug 28, 2024

Copy link
Copy Markdown
Member Author

Probably - but that's for you to check if it's needed when you toggle it back to regular.

seems to work fine without anything else. As far as I can test.

By which I mean, the dispatcher event appears to be SwapPageTurnButtons?

two of the other inversions don't have dispatcher events, the individual left/right page turn ones. I suppose that is what leads me to the question

@NiLuJe

NiLuJe commented Aug 28, 2024

Copy link
Copy Markdown
Member

But PageTurningInverted is still not an actual event ;o).

┌─(niluje@ahsoka:pts/9)───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────(~/Dev/koreader)─┐
└─(1:0.44:10%:00:45:%)── rg PageTurningInverted                                                                                                                                                                                                                                                                                                        ──(Thu, Aug 29)─┘
┌─(niluje@ahsoka:pts/9)───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────(~/Dev/koreader)─┐
└─(1:0.46:10%:00:53:%)──    

So this currently does a whole lot of nothing ^^.

@Commodore64user

Copy link
Copy Markdown
Member Author

So this currently does a whole lot of nothing ^^.

through magic it is doing exactly what is supposed to... mmm am I not defining it just now, although somehow never calling it.

end
ReaderFooter.onNetworkDisconnected = ReaderFooter.onNetworkConnected

function ReaderFooter:onPageTurningInverted()

@Commodore64user Commodore64user Aug 28, 2024

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
function ReaderFooter:onPageTurningInverted()
function ReaderFooter:onSwapPageTurnButtons()

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why? Is that coding style used elsewhere?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Never mind, I was fixating on the stray space after the :.

@Commodore64user

Copy link
Copy Markdown
Member Author

okay this is now throwing me off, because it works [somehow] on k4 but doesn't at all on voyage

@Commodore64user

Commodore64user commented Aug 28, 2024

Copy link
Copy Markdown
Member Author

mmm, this is why k4 was automagically working

UIManager:scheduleIn(2, self.autoRefreshFooter)

had forgotten about that

@Commodore64user

Commodore64user commented Aug 29, 2024

Copy link
Copy Markdown
Member Author

This very quickly went from [falsely] (#12424 (comment)) being very promising to not working at all.

Comment on lines +2453 to +2456

function ReaderFooter:onToggleReadingOrder()
if self.settings.page_turning_inverted then
self:maybeUpdateFooter()
end
end

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
function ReaderFooter:onToggleReadingOrder()
if self.settings.page_turning_inverted then
self:maybeUpdateFooter()
end
end
ReaderFooter.onToggleReadingOrder = ReaderFooter.onSwapPageTurnButtons

(Instead of duplicating the code ;)).

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

that's fine, but why doesn't it work? what am I missing?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this works

function ReaderFooter:onSwapPageTurnButtons()
    UIManager:scheduleIn(0.1, self.autoRefreshFooter)
end
ReaderFooter.onToggleReadingOrder = ReaderFooter.onSwapPageTurnButtons

kind of, because for some reason it won't update if you toggle the swipes from the menu, swapping page-turn button from menu works though. with gestures both work fine. And the two page-turn inversion that don't have an event also don't work

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it won't update if you toggle the swipes from the menu

That's the expected behavior. It's the menu callback's responsibility to ask for a refresh in that case (see the many ReaderFooter menu callbacks that do this).

My understanding was this was simply for Dispatcher events (which is how it should be, mind you).

if self.settings.page_turning_inverted then
self:maybeUpdateFooter()
end
UIManager:scheduleIn(0.1, self.autoRefreshFooter)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nope.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nope nope nope nope.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

one was enough but, what's the matter?

@NiLuJe NiLuJe Aug 29, 2024

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This isn't how you do this, which tells me you're trying to fit a square peg into a round hole ;).

So: what is this trying to handle (i.e., where does that event emanate, and what's on screen at the time)?

@Commodore64user Commodore64user Aug 29, 2024

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So: what is this trying to handle

when you use a gesture to trigger the page-turn button swap or the zone swap thing, update the status bar.

and what's on screen at the time)?

the book one is reading.

where does that event emanate

dispatcher

@NiLuJe NiLuJe Aug 30, 2024

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Something along the lines of

diff --git a/frontend/apps/reader/modules/readerfooter.lua b/frontend/apps/reader/modules/readerfooter.lua
index 255400087..39c9a653f 100644
--- a/frontend/apps/reader/modules/readerfooter.lua
+++ b/frontend/apps/reader/modules/readerfooter.lua
@@ -2445,6 +2445,15 @@ function ReaderFooter:onNetworkConnected()
 end
 ReaderFooter.onNetworkDisconnected = ReaderFooter.onNetworkConnected
 
+function ReaderFooter:onSwapPageTurnButtons()
+    if self.settings.page_turning_inverted then
+        -- We may receive the event *before* DeviceListener, so delay this to make sure it had a chance to actually swap the settings.
+        -- Also delay it further to avoid screwing with TouchMenu highlights...
+        UIManager:scheduleIn(0.5, self.maybeUpdateFooter, self)
+    end
+end
+ReaderFooter.onToggleReadingOrder = ReaderFooter.onSwapPageTurnButtons
+
 function ReaderFooter:onSetRotationMode()
     self:updateFooterContainer()
     self:resetLayout(true)
diff --git a/frontend/device/devicelistener.lua b/frontend/device/devicelistener.lua
index 8481f7670..456b47e94 100644
--- a/frontend/device/devicelistener.lua
+++ b/frontend/device/devicelistener.lua
@@ -310,15 +310,25 @@ function DeviceListener:onToggleFlashOnPagesWithImages()
     G_reader_settings:flipNilOrTrue("refresh_on_pages_with_images")
 end
 
-function DeviceListener:onSwapPageTurnButtons(show_notification)
+function DeviceListener:onSwapPageTurnButtons(show_notification, side)
     G_reader_settings:flipNilOrFalse("input_invert_page_turn_keys")
-    Device:invertButtons()
+    local key_name
+    if side == "left" then
+        Device:invertButtonsLeft()
+        key_name = _("Left-side page-turn buttons")
+    elseif side == "right" then
+        Device:invertButtonsRight()
+        key_name = _("Right-side page-turn buttons")
+    else
+        Device:invertButtons()
+        key_name = _("Page-turn buttons")
+    end
     if show_notification then
         local new_text
         if G_reader_settings:isTrue("input_invert_page_turn_keys") then
-            new_text = _("Page-turn buttons inverted.")
+            new_text = key_name .. " " .. _("inverted.")
         else
-            new_text = _("Page-turn buttons no longer inverted.")
+            new_text = key_name .. " " .. _("no longer inverted.")
         end
         Notification:notify(new_text)
     end
diff --git a/frontend/dispatcher.lua b/frontend/dispatcher.lua
index ea71d2f1d..ccba3c63e 100644
--- a/frontend/dispatcher.lua
+++ b/frontend/dispatcher.lua
@@ -80,7 +80,9 @@ local settingsList = {
     touch_input_off = {category="none", event="IgnoreTouchInput", arg=true, title=_("Disable touch input"), device=true},
     toggle_touch_input = {category="none", event="IgnoreTouchInput", title=_("Toggle touch input"), device=true, separator=true},
     ----
-    swap_page_turn_buttons = {category="none", event="SwapPageTurnButtons", arg=true, title=_("Invert page turn buttons"), device=true, condition=Device:hasKeys(), separator=true},
+    swap_left_page_turn_buttons = {category="none", event="SwapPageTurnButtons", args={true, "left"}, title=_("Invert left-side page-turn buttons"), device=true, condition= Device:hasDPad() and Device:useDPadAsActionKeys()},
+    swap_right_page_turn_buttons = {category="none", event="SwapPageTurnButtons", args={true, "right"}, title=_("Invert right-side page-turn buttons"), device=true, condition= Device:hasDPad() and Device:useDPadAsActionKeys()},
+    swap_page_turn_buttons = {category="none", event="SwapPageTurnButtons", arg=true, title=_("Invert page-turn buttons"), device=true, condition=Device:hasKeys(), separator=true},
     ----
     toggle_key_repeat = {category="none", event="ToggleKeyRepeat", title=_("Toggle key repeat"), device=true, condition=Device:hasKeys() and Device:canKeyRepeat(), separator=true},
     toggle_gsensor = {category="none", event="ToggleGSensor", title=_("Toggle accelerometer"), device=true, condition=Device:hasGSensor()},
@@ -306,6 +308,8 @@ local dispatcher_menu_order = {
     "touch_input_off",
     "toggle_touch_input",
     ----
+    "swap_left_page_turn_buttons",
+    "swap_right_page_turn_buttons",
     "swap_page_turn_buttons",
     ----
     "toggle_key_repeat",
diff --git a/frontend/ui/elements/physical_buttons.lua b/frontend/ui/elements/physical_buttons.lua
index 87c2a1e49..4f364d037 100644
--- a/frontend/ui/elements/physical_buttons.lua
+++ b/frontend/ui/elements/physical_buttons.lua
@@ -25,7 +25,7 @@ local PhysicalButtons = {
 
 if Device:hasDPad() and Device:useDPadAsActionKeys() then
     table.insert(PhysicalButtons.sub_item_table, {
-        text = _("Invert left-side page turn buttons"),
+        text = _("Invert left-side page-turn buttons"),
         enabled_func = function()
             return not G_reader_settings:isTrue("input_invert_page_turn_keys")
         end,
@@ -34,11 +34,11 @@ if Device:hasDPad() and Device:useDPadAsActionKeys() then
         end,
         callback = function()
             G_reader_settings:flipNilOrFalse("input_invert_left_page_turn_keys")
-            Device:invertButtonsLeft()
+            UIManager:broadcastEvent(Event:new("SwapPageTurnButtons", false, "left"))
         end,
     })
     table.insert(PhysicalButtons.sub_item_table, {
-        text = _("Invert right-side page turn buttons"),
+        text = _("Invert right-side page-turn buttons"),
         enabled_func = function()
             return not G_reader_settings:isTrue("input_invert_page_turn_keys")
         end,
@@ -47,7 +47,7 @@ if Device:hasDPad() and Device:useDPadAsActionKeys() then
         end,
         callback = function()
             G_reader_settings:flipNilOrFalse("input_invert_right_page_turn_keys")
-            Device:invertButtonsRight()
+            UIManager:broadcastEvent(Event:new("SwapPageTurnButtons", false, "right"))
         end,
         separator = true,
     })

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tweaked the delay above as is was screwing with Menu highlights.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UIManager:scheduleIn(0.5, self.maybeUpdateFooter, self)

nope nope nope nope. (sorry I couldn't resist... ;) )

I'll try it in a bit, will get back soon. the only thing I see from looking at it is, swapping one side [only] would now flip the G-setting for swapping both sides, is that intentional?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, I may have forgotten to handle the settings properly, yeah ;D

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup, definitely ;p.

Comment thread frontend/device/devicelistener.lua Outdated
return G_reader_settings:isTrue("input_invert_page_turn_keys")
end,
callback = function()
G_reader_settings:flipNilOrFalse("input_invert_page_turn_keys")

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, that should definitely happen in the event handler ;).

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(For all three of them, of course ;)).

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

alright then.

@Commodore64user Commodore64user requested a review from NiLuJe August 30, 2024 13:14
@NiLuJe

NiLuJe commented Aug 30, 2024

Copy link
Copy Markdown
Member

LGTM at a glance, letting others give it a once over ;).

Comment thread frontend/device/devicelistener.lua Outdated
Comment on lines +326 to +333
key_name = _("Page-turn buttons")
end
if show_notification then
local new_text
if G_reader_settings:isTrue("input_invert_page_turn_keys") then
new_text = _("Page-turn buttons inverted.")
new_text = key_name .. " " .. _("inverted.")
else
new_text = _("Page-turn buttons no longer inverted.")
new_text = key_name .. " " .. _("no longer inverted.")

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure all this may play well with translations for some languages.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Huh, that's a fair point.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That can stay as it was before. Not a biggie.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Almost certainly not. Being clever is rarely good in such matters.

if Device:hasDPad() and Device:useDPadAsActionKeys() then
table.insert(PhysicalButtons.sub_item_table, {
text = _("Invert left-side page turn buttons"),
text = _("Invert left-side page-turn buttons"),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are there multiple buttonS on a left-side ?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, they are. You might want to refer back to the illustration on the other PR. That might refresh your memory ;)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IIRC there was one where they only added a back button on the left, but generally, yeah, these are symmetric.

@poire-z

poire-z commented Sep 2, 2024

Copy link
Copy Markdown
Contributor

Looks ok, but not familiar with all that, trusting @NiLuJe .

@Frenzie Frenzie left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm but @NiLuJe knows this part of the code better

Comment thread frontend/dispatcher.lua Outdated
toggle_touch_input = {category="none", event="IgnoreTouchInput", title=_("Toggle touch input"), device=true, separator=true},
----
swap_page_turn_buttons = {category="none", event="SwapPageTurnButtons", arg=true, title=_("Invert page turn buttons"), device=true, condition=Device:hasKeys(), separator=true},
swap_left_page_turn_buttons = {category="none", event="SwapPageTurnButtons", args={true, "left"}, title=_("Invert left-side page-turn buttons"), device=true, condition= Device:hasDPad() and Device:useDPadAsActionKeys()},

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I doubt if using args is correct.

if category == "none" then
if settingsList[k].arg ~= nil then
UIManager:sendEvent(Event:new(event, settingsList[k].arg, exec_props))

Does it work?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Huh, good point. I only checked that there were other actions specifying args, and assumed it was meant for the Event, but it doesn't look like that's quite what it's for (ConfigDialog/Option stuff?)

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes, I also only checked that it inverts the right side one, what I didn't notice was the it was in fact inverting both sets.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in this case, @NiLuJe given as how you didn't want to hard code the show_notification the other day, we could remove it and send only the side argument. you can fix the sources later

btw, thanks @hius07 for that catch.

@Commodore64user

Copy link
Copy Markdown
Member Author

@NiLuJe, anything else that needs fixing here?

@NiLuJe NiLuJe left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed 1 of 4 files at r5, 3 of 3 files at r9, all commit messages.
Reviewable status: all files reviewed, 7 unresolved discussions (waiting on @Commodore64user, @hius07, and @poire-z)


frontend/dispatcher.lua line 83 at r9 (raw file):

    toggle_touch_input = {category="none", event="IgnoreTouchInput", title=_("Toggle touch input"), device=true, separator=true},
    ----
    swap_left_page_turn_buttons = {category="none", event="SwapPageTurnButtons", args="left", title=_("Invert left-side page-turn buttons"), device=true, condition= Device:hasDPad() and Device:useDPadAsActionKeys()},

Should be arg, not args


frontend/dispatcher.lua line 84 at r9 (raw file):

    ----
    swap_left_page_turn_buttons = {category="none", event="SwapPageTurnButtons", args="left", title=_("Invert left-side page-turn buttons"), device=true, condition= Device:hasDPad() and Device:useDPadAsActionKeys()},
    swap_right_page_turn_buttons = {category="none", event="SwapPageTurnButtons", args="right", title=_("Invert right-side page-turn buttons"), device=true, condition= Device:hasDPad() and Device:useDPadAsActionKeys()},

Ditto.


frontend/device/devicelistener.lua line 326 at r9 (raw file):

    local new_text
    if G_reader_settings:isTrue("input_invert_page_turn_keys") or G_reader_settings:isTrue("input_invert_left_page_turn_keys")
        or G_reader_settings:isTrue("input_invert_right_page_turn_keys") then

The exact message should probably be based on the arg, in case people do weird things.

Which means six full different strings, to deal with the original concerns about the concat ;).

Code quote:

    if G_reader_settings:isTrue("input_invert_page_turn_keys") or G_reader_settings:isTrue("input_invert_left_page_turn_keys")
        or G_reader_settings:isTrue("input_invert_right_page_turn_keys") then

@Commodore64user

Copy link
Copy Markdown
Member Author

would you prefer those new_text strings as G_settings and x or y or if G_settings then x else y end?

@NiLuJe

NiLuJe commented Sep 6, 2024

Copy link
Copy Markdown
Member

would you prefer those new_text strings as G_settings and x or y or if G_settings then x else y end?

Given the length of the keys and the strings, I think a full if then else construct would be more readable ;).

@NiLuJe NiLuJe left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed 2 of 2 files at r10, all commit messages.
Reviewable status: all files reviewed, 3 unresolved discussions (waiting on @hius07 and @poire-z)

@Commodore64user

Copy link
Copy Markdown
Member Author

Is anything else missing here?

@NiLuJe NiLuJe left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed 1 of 2 files at r13, 1 of 1 files at r14, all commit messages.
Reviewable status: all files reviewed, 4 unresolved discussions (waiting on @Commodore64user, @Frenzie, @hius07, and @poire-z)

@Frenzie Frenzie added this to the 2024.09 milestone Sep 25, 2024
@Frenzie Frenzie merged commit 08205c4 into koreader:master Sep 25, 2024
@mergen3107

Copy link
Copy Markdown
Contributor

@Commodore64user
Congrats on merging!

Can you please explain how this PR works?

Is it going to invert direction of progress bar (the one that fills in as book progresses) when RTL page turning enabled?

If so I can test this with manga, where I have directory defaults enabling RTL page turns based on folder name.

@Commodore64user Commodore64user deleted the update-in-real-time branch September 25, 2024 21:04
@NiLuJe

NiLuJe commented Sep 25, 2024

Copy link
Copy Markdown
Member

Nope, it's about the "reading direction" status bar element (which may be somewhat new: as someone not relying on RTL, I wasn't actually aware of it before testing this ;)).

@Commodore64user

Copy link
Copy Markdown
Member Author

@Commodore64user Congrats on merging!

thanks!

Can you please explain how this PR works?

sure. It is a lot less exciting than the title makes it sound though.

Is it going to invert direction of progress bar (the one that fills in as book progresses) when RTL page turning enabled?

Nope, i mean, I honestly didn’t even know that was a thing until one duckduckgo search ago https://developer.apple.com/design/human-interface-guidelines/right-to-left. But it does sound like a very good idea to implement.

this pr only makes sure that the status bar item (the two arrows) are displayed immediately after triggering the inversion (buttons or swipes) via a gesture, shortcut or from the menu (technically speaking, half a second after). That’s all really. For reference, previously you would either have to manually change the page or wait for something else to update the status bar (the time for example) before it would show up there.

there are also some more bits related to page turn buttons on NT devices, but that is not relevant for your case, i guess.

@mergen3107

Copy link
Copy Markdown
Contributor

Thanks guys!

This will really help me in my current investigation though :D

I will create a proper issue ticket later when I have more time.

In short, some of my manga books (marked as finished, I think) open up without directory defaults for some reason. I will see when exactly this happens.

@Commodore64user

Commodore64user commented Sep 25, 2024

Copy link
Copy Markdown
Member Author

(which may be somewhat new

yes, fresh out of the oven #12249. Although I originally only intended to use it for physical page turn inversions, @poire-z strongly suggested ;) we include swipe/tap inversions as well

wbstx added a commit to wbstx/koreader that referenced this pull request Nov 29, 2024
KOReader 2024.11 "Slang"

![koreader-2024-11-slangie](https://github.com/user-attachments/assets/cb9e68bf-aa0f-47c7-a093-46fbf8bb19c3)

Some of you on Android may have had dictionary issues. That should be fixed now.

Connecting to Wi-Fi should be more reliable on platforms where we manage it ourselves, most notably Kobo (koreader/lj-wpaclient#11).

Color is now supported when reflowing (koreader#12085).

This month's logo was contributed by @Sonnenfee

We'd like to thank all contributors for their efforts. Some highlights since the previous release include:

* Certain network features will now work in Flatpak (<flathub/rocks.koreader.KOReader#52>) @kii-chan-reloaded
* 'Use left and right keys for page turning' option added (koreader#12174) @Commodore64user
* Text editor: enhancement (koreader#12176) @hius07
  (1) Speed up adding/deleting chars (by avoiding a call of expensive splitToChars), noticeable on big files.
  (2) Indicate select mode: wider cursor.
* Annotations: more fixes (koreader#12181) @hius07
  (1) Allows annotations with equal datetime fields.
  (2) Allows page bookmarks with equal page numbers.
* kopt: color support (koreader#12085) @benoit-pierre
* bump base (updated build system) & fix macOS CI (koreader#12187) @benoit-pierre
* AltStatusBar/Footer: add the read timer value (koreader#12002) @zwim
* bump translations (koreader#12193) @pazos
* CRE call cache: don't wrap setViewMode (koreader#12194) @poire-z
* bump crengine: various fixes and optimizations (koreader#12200) @poire-z
* Add author option for alt status bar (koreader/crengine#575) (koreader#12197) @trash-pandy
* Page turns: invert vertical tap zones (koreader#12195) @hius07
* Annotations: pageno honors reference pages and hidden flows (koreader#12214) @hius07
* ToggleSwitch: fix long-press (koreader#12215) @hius07
* SDL: Return true in NetworkMgr:isConnected on !hasWifiToggle platforms (koreader#12217) @NiLuJe
* Kobo: Refactor various aspects of the Kaleido/MTK support (koreader#12221) @NiLuJe
* ReaderAnnotation: fix doesMatch func (koreader#12231) @hius07
* bump base (koreader#12241) @benoit-pierre
* NetworkMgr: Attempt to handle wpa_supplicant rescans better (koreader#12236) @NiLuJe
* miscellaneous build system changes (koreader#12242) @benoit-pierre
* make: handle old build data directory (koreader#12259) @benoit-pierre
* ReaderFooter: improve (koreader#12243) @hius07
* Annotations: fix exporting (koreader#12261) @hius07
* make: install missing `cr3.css`… (koreader#12262) @benoit-pierre
* [fix] NetworkMgr: apply HTTP proxy setting on startup (koreader#12260) @Frenzie
* Kobo: Track frontlight state more accurately on suspend/resume (koreader#12256) @NiLuJe
* Make W-Fi scan more reliable (koreader#12265, koreader/lj-wpaclient#11) @NiLuJe
* ReaderAnnotation: fix doesMatch func 2 (koreader#12270) @hius07
* make: fix android update sdcv (koreader#12275) @benoit-pierre
* [plugin] Reader footer: check if header resp. footer are available (koreader#12264) @zwim
* ReadHistory: On remove, trust the index from FileManagerHistory if possible (koreader#12253) @NiLuJe
* ReaderUI: add `seamless` argument to switchDocument (koreader#12290) @ziz57
* Fix early unhighlight after Add to vocab builder (koreader#12288) @poire-z
* [CoverBrowser.MosaicMenu] Increase the thickness of the mosaic’s focus underline (koreader#12189) @Commodore64user
* doc: update building documentation (koreader#12295) @benoit-pierre
* NetworkMgr: fix debug trace (koreader#12297) @benoit-pierre
* Panel zoom: Properly handle `renderPage()` not rendering the whole page (koreader#12296) @fbriere
* PowerD: Keep track of frontlight state change by interactive callers for suspend/resume purposes (koreader#12283) @NiLuJe
* InputDialog and MultiInputDialog: improve enter and edit callback handling, and implement addWidget (koreader#12289) @ziz57
* ReaderSearch: "All text" improve (koreader#12287) @hius07
* Show/Hide Virtual keyboard and more keyboard shortcuts (koreader#12162) @Commodore64user
* bump base; mostly thirdparty bumps (koreader#12311) @benoit-pierre
* Document: Do not cache panel-zoom tiles to disk and fix their caching and rendering (koreader#12303) @NiLuJe
* Disable the legacy ReaderRotation module (koreader#12309) @NiLuJe
* bump luajit (koreader#12317) @benoit-pierre
* [AutoWarmth] Delay front light actions after resume (koreader#12315) @zwim
* Allow numbers in measure text: fixes a crash in table of contents when debugging on (koreader#12310) @zwim
* ReaderFooter: Add page-turn item (koreader#12249) @Commodore64user
* luajit launcher: out of tree build + don't rebuild luajit (koreader#12285) @benoit-pierre
* BookInfo: rating, review (koreader#12313) @hius07
* fix missing android APK asset (koreader#12333) @benoit-pierre
* ImageWidget: Don't attempt to pan if we haven't rendered the bb yet (koreader#12331) @NiLuJe
* OTM: Unbreak koreader#11999  (koreader#12337) @NiLuJe
* Kobo: Refactor suspend in order to be able to catch input events sent during the 2s window of ntx madness (koreader#12330) @NiLuJe
* [Menu] Remove title bar buttons from layout on hasSymKey or hasScreenKB (koreader#12328) @Commodore64user
* [doc] Build: update Android instructions to openjdk-17-jdk (koreader#12345) @Frenzie
* Support 'Ctrl' shortcuts on hasKeyboard (koreader#12347) @Commodore64user
* Annotations: fix page numbers (koreader#12324) @hius07
* Bug Fix: DPad conflict on Kindle Keyboard (koreader#12341) @Commodore64user
* Nit: Make some cache keys prettier (koreader#12354) @NiLuJe
* Dispatcher: minor wording fixes (koreader#12356) @hius07
* kodev rework (koreader#12338) @benoit-pierre
* czmq & libzmq: update to 4.2.1 & 4.3.5 respectively (koreader#12350) @benoit-pierre
* [TextViewer] Add hamburger menu to FocusManager and Menu key (koreader#12365) @Commodore64user
* ci: fix test / coverage (koreader#12367) @benoit-pierre
* A couple of tiny fixes (koreader#12359) @NiLuJe
* android: tweak update rule (koreader#12370) @benoit-pierre
* doc: update Android build instructions (koreader#12368) @benoit-pierre
* Display menu preview of italic-only fonts (koreader#12351) @charrarr
* ReaderStatus, Book status widget: cleanup (koreader#12343) @hius07
* ci/macos: fix homebrew packages install (koreader#12382) @benoit-pierre
* Fix terminal broken cursor and backspace (koreader#12375) @zwim
* Screensaver: add option to rotate to fit screen (koreader#12366) @charrarr
* Minor keyboard corrections (koreader#12372) @Commodore64user
* Touch menu: always go up to correct parent page (koreader#12378) @hius07
* Collections: fix context menu (koreader#12383) @hius07
* PDF: no "Contrast set to" notification on opening (koreader#12391) @hius07
* Closing Bookmark details dialog with X should also refresh list entry (koreader#12390) @fbriere
* Add numerical key_codes to event_map on kindle 3 (koreader#12358) @Commodore64user
* FocusManager: Fix focus_flags check in moveFocusTo, and deal with the fallout (koreader#12361) @NiLuJe
* Various notification, text editor and footnote popup minor fixes (koreader#12406) @poire-z
* Bug: Account for local reading order direction adjustments. (koreader#12388) @Commodore64user
* android: add custom `adb logcat` formatter (koreader#12385) @benoit-pierre
* kodev: improve `kodev prompt` (koreader#12408) @benoit-pierre
* kodev: fix `./kodev run android…` (koreader#12407) @benoit-pierre
* Readerfont: Current font on top in menu; New fonts from current session on top in font test doc (koreader#12410) @jonnyl2
* Fix a couple of potentially spurious footer refreshes (koreader#12422) @NiLuJe
* FileManager: Handle the FlushSettings event (koreader#12425) @NiLuJe
* PageBrowser: fix drawing of thicker thumbnail frame on tap (koreader#12432) @poire-z
* FileManagerSetDefaults: Handle strings that we default to nil (koreader#12433) @NiLuJe
* Input: Ignore ABS_X, ABS_Y & ABS_PRESSURE for snow_protocol (koreader#12427) @NiLuJe
* Add color highlight menu (koreader#11044) @smasher816
* Exporter: choose highlight styles to be exported (koreader#12431) @hius07
* ReaderView: Don't crash on pre-koreader#11044 highlights without a color field (koreader#12438) @NiLuJe
* Terminal fixes (koreader#12369) @ziz57
* Dispatcher/DeviceListener: Temporarily turn on Accelerometer/GSensor for 5 sec (koreader#12419) @jonnyl2
* fix bug preventing export to joplin; (koreader#12446) @bitterlox
* bump base: blitbuffer, android build, crengine (koreader#12451) @poire-z
* InputText: Unbreak onTapTextBox on an already in-focus field (koreader#12449) @NiLuJe
* Update el_popup.lua (koreader#12463) @ichnilatis-gr
* [Dispatcher] add [missing] conditions to dispatcher items (koreader#12453) @Commodore64user
* ReaderView: Fix a couple of edge-cases in onReaderFooterVisibilityChange (koreader#12466) @NiLuJe
* misc: Move cleanupSelectedText to util (koreader#12477) @NiLuJe
* ReaderHighlight: Fix an old typo in the OCR help string (koreader#12479) @NiLuJe
* Highlights popup dialog: add "Color" and "Details" buttons (koreader#12461) @hius07
* ButtonDialogTitle: remove (koreader#12394) @hius07
* [Dispatcher] new events for selecting links (koreader#12474) @Commodore64user
* Doc: Update quickstartguide on kindle non touch (koreader#12426) @Commodore64user
* [NT] Call GotoViewRel for page up/down on useDPadAsActionKeys devices (koreader#12495) @cccslater
* bump base (koreader#12503) @benoit-pierre
* Defaults: Deprecate DKOPTREADER_CONFIG_DOC_LANGS_TEXT (koreader#12504) @NiLuJe
* ReaderAnnotation: skip old highlights with invalid xpointers (koreader#12494) @hius07
* Cloud Sync: handles potentially incompatible backup and incoming dbs (koreader#12470) @weijiuqiao
* VocabBuilder.koplugin: Better handling word context (koreader#12469) @weijiuqiao
* Write highlights into PDF: revisited (koreader#12509) @hius07
* SyncService: Only require online connectivity when using Dropbox (koreader#12520) @NiLuJe
* Chore: Don't cache static data tables (ui/elements, ui/data, kb layouts & co) (koreader#12519) @NiLuJe
* Fix page gap inconsistencies between doc open & config change (koreader#12507) @NiLuJe
* Kindle: Restore hall effect sensor state on startup (koreader#12521) @NiLuJe
* VocabBuilder.koplugin: save dict headword as entry (koreader#12530) @weijiuqiao
* Add PocketBook Verse Pro Color (PB634K3) (koreader#12476) @ElimGarak1
* Onyx Boox Go 10.3 support (koreader#12533) @hugleo
* Statistics: fix null terminated strings, add toggle stats (koreader#12547) @hius07
* input: drop use of `ffi/input` (koreader#12486) @benoit-pierre
* ci/circle: fix tests parallelism (koreader#12551) @benoit-pierre
* input: fix kobo init (koreader#12553) @benoit-pierre
* [ReaderFooter] update status bar in real time when inverting page turning (koreader#12424) @Commodore64user
* input: fix pocketbook init (koreader#12555) @benoit-pierre
* use new `ffi.loadlib` helper (koreader#12545) @benoit-pierre
* input: fix loading of `fbink_input` library (koreader#12560) @benoit-pierre
* Fix typos in quickstart (koreader#12566) @cheywood
* File search: improve (koreader#12549) @hius07
* [DictQuickLookup] shortcuts for editing searches (koreader#12539) @Commodore64user
* Profiles: auto-execute on events (koreader#12564) @hius07
* Exporter: export to book folder, register to Dispatcher (koreader#12569) @hius07
* sdl: use our compiled version for the AppImage (koreader#12575) @benoit-pierre
* Add kobov4 & kobov5 targets (koreader#12568) @NiLuJe
* android: switch to monolibtic mode (koreader#12576) @benoit-pierre
* android: fix apkanalyzer location (koreader#12563) @benoit-pierre
* Disabled rotation map for Android devices where "hw media keys follow gravity" (koreader#12557) @jkl16
* Quickstart guide kindle illustrations (koreader#12577) @Commodore64user
* [plugin] Exporter: fix typo (koreader#12592) @Frenzie
* Dispatcher: values' range consistent with bottom menu (koreader#12580) @hius07
* metadata translations for fdroid/flathub (koreader#12581) @pazos
* ProgressWidget: fix misalignment (koreader#12526) @wbstx
* Add wifi support to Cervantes Touch Light devices (koreader#12148) @jsanpe
* ReaderTypeset: fix margins info (koreader#12609) @hius07
* DocSettingsTweak: apply to books with status (koreader#12606) @hius07
* Menu widget: rotation handler (koreader#12573) @hius07
* Profiles: add "on rotation" auto-execute event (koreader#12612) @hius07
* ReaderHighlight: adjustable "Edit highlight" dialog position (koreader#12599) @hius07
* KOSync/Kobo: Explicitly kill Wi-Fi on suspend (koreader#12616) @NiLuJe
* Kobo: Minor simplification after koreader#12616 (koreader#12629) @NiLuJe
* bump luajit-launcher (koreader#12630) @benoit-pierre
* Terminal: Minor cleanups (koreader#12631) @NiLuJe
* Menu widget: draw focus on focused item (koreader#12583) @hius07
* Cloud storage: fix sorting non-English filenames (koreader#12644) @hius07
* Text editor: show current line number (koreader#12632) @hius07
* InputText: fix Terminal plugin input (koreader#12652) @hius07
* ReaderFont test: Error correction -- new fonts were not rendering in own font (koreader#12646) @jonnyl2
* ReaderHighlight: fix color for extended highlight in pdf (koreader#12654) @hius07
* Kindle Scribe: fix elseif for orientation code (koreader#12663) @mergen3107
* Menu: Fix fallout from koreader#12583 on hasDPad devices (koreader#12657) @NiLuJe
* Misc: Some more FocusManager fallout (koreader#12667) @NiLuJe
* plugin messages (koreader#12636) @pazos
* And deprecation to autofrontlight (koreader#12619) @pazos
* Add deprecation for unmaintained targets (koreader#12620) @pazos
* Profiles: more auto-exec triggers (koreader#12651) @hius07
* PatchManagement: prettify menu (koreader#12668) @hius07
* Fix KOReader spelling in the code (koreader#12670) @mergen3107
* Update Building.md - meson install from backports (koreader#12680) @mergen3107
* OTA: Make the final ConfirmBox undismissable (koreader#12676) @NiLuJe
* Text editor: rotate (koreader#12658) @hius07
* Profiles: more auto-exec triggers 2 (koreader#12691) @hius07
* Add authentication request and cookies management for news (koreader#12496) @bateast
* calibre: always use custom fast parser (koreader#12714, koreader#12715) @pazos
* Add Nextcloud Notes to exporter plugin (koreader#12301) @kotnik
* [plugin] Wallabag: remove empty file when download fails (koreader#12723) @fenuks
* [plugin] Wallabag: separate option to delete ‘on hold’ articles (koreader#12722) @fenuks
* kopt: fix OCR segmentation mode (koreader#12726) @benoit-pierre
* bump base (koreader#12727) @benoit-pierre
   Most notably dropbear: update to 2024.85 (koreader/koreader-base#1964)
* bump android-luajit-launcher (koreader#12734) @pazos
* ci/circle: manually cap build jobs (koreader#12751) @benoit-pierre
* Adjust Minimum Font Size in Terminal Emulator (koreader#12752) @pphszx
* ReaderHighlight: Highlight menu, change 'Delete' to Trash can icon (koreader#12758) @jonnyl2

* @trash-pandy made their first contribution in koreader#12197
* @fbriere made their first contribution in koreader#12296
* @charrarr made their first contribution in koreader#12351
* @smasher816 made their first contribution in koreader#11044
* @bitterlox made their first contribution in koreader#12446
* @cccslater made their first contribution in koreader#12495
* @cheywood made their first contribution in koreader#12566
* @jkl16 made their first contribution in koreader#12557
* @wbstx made their first contribution in koreader#12526
* @jsanpe made their first contribution in koreader#12148
* @fenuks made their first contribution in koreader#12723
* @pphszx made their first contribution in koreader#12752

**Full Changelog**: koreader/koreader@v2024.07...v2024.11 — [closed milestone issues](https://github.com/koreader/koreader/milestone/74?closed=1)

---

**Installation instructions**: [Android](https://github.com/koreader/koreader/wiki/Installation-on-Android-devices) • [Cervantes](https://github.com/koreader/koreader/wiki/Installation-on-BQ-devices) • [ChromeOS](https://github.com/koreader/koreader/wiki/Installation-on-Chromebook-devices) • [Kindle](https://github.com/koreader/koreader/wiki/Installation-on-Kindle-devices) • [Kobo](https://github.com/koreader/koreader/wiki/Installation-on-Kobo-devices) • [PocketBook](https://github.com/koreader/koreader/wiki/Installation-on-PocketBook-devices) • [ReMarkable](https://github.com/koreader/koreader/wiki/Installation-on-ReMarkable) • [Desktop Linux](https://github.com/koreader/koreader/wiki/Installation-on-desktop-linux) • [MacOS](https://github.com/koreader/koreader/wiki/Installation-on-MacOS)
0xstillb pushed a commit to 0xstillb/koreader-thai that referenced this pull request May 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants