Commit graph

18505 commits

Author SHA1 Message Date
William Wilgus
58ce77fbe2 [BugFix] tagtree voiced Letter menus with talkmenu off
Change-Id: I671f795061a63bcf5db3c94728e98dd7506329a7
2026-06-14 16:50:54 -04:00
William Wilgus
4d773a3329 onplay wps context menu plugin item rework namebuf
only load the namebuf once unless user changes the plugin
also displays the plugin name when user selects the whole context menu

Change-Id: I32b53729a3dcc2bf2c42393876407df7f3d38d8c
2026-06-11 09:52:09 -04:00
William Wilgus
0a1858b9d1 [BugFix] prevent infinite loop to return to wps from plugins
if there is nothing to resume then it will return to the plugin endlessly
hanging the device

Change-Id: I7d6a0c7ec5a9e049cf62f88542bedaa1081556ac
2026-06-10 01:26:51 -04:00
William Wilgus
a81d3fa10e [Bugfix] open_plugins.rock add 'add' item regardless & voice improvements
also fixes a bug where synclist viewport could be empty if the list isn't
initialized

voices path and parameters now

adds the item [Add] as the last item in the list

Change-Id: I1aad62baf3c19a67d04fa1fb3db8a7573e0a467f
2026-06-09 00:39:31 -04:00
William Wilgus
e5c7f0c41c open_plugins.rock add title to main menu, add scroll stop on close
Have a report of a hanging scrolling item, ensure the lists are stopped
on exit with gui_synclist_scroll_stop()

Change-Id: If670806f710118c79377bf8c5de6c1a5168e37fc
2026-06-08 12:03:05 -04:00
William Wilgus
9b0516e4e1 [BugFix] openplugins.rock 0 is a valid file descriptor
Change-Id: Id7d9c2c4b9d13433c8aa2260b20f5d74e4b3add8
2026-06-07 11:19:08 -04:00
Christian Soffke
1add6b0dd5 shortcuts: eliminate unnecessary nesting
Reduces GNU Complexity scores for:

* shortcut_menu_speak_item: 66 -> 10
* do_shortcut_menu: 39 -> 20
* readline_cb: 29 -> 16

Change-Id: Ic648a7eb1e51d4a116bc8af61f1ed1c617cee024
2026-06-06 19:18:17 -04:00
Christian Soffke
86decaab9e root_menu: Start Screen: don't try to resume finished playlist
Go to root menu when Start Screen has been set to "Resume Playback"
but playlist is finished

https://forums.rockbox.org/index.php?topic=55770

Change-Id: I6939fa313dd5fd6485628e22a2d860763492d5cf
2026-06-06 11:34:18 -04:00
Christian Soffke
292e8a17a2 keymap: erosq: fix keylock button handling
Only react to Power button release if previous
button code was Power button press, so that
screen doesn't lock when device may have just
been turned on

Change-Id: I1ba228103efedeeceaaa00c49b1b1da66b63bb75
2026-06-06 17:23:58 +02:00
Christian Soffke
f123dbc04a misc: shutdown: fix backdrop glitches
Clearing the display makes the backdrop come to the foreground.
which can look odd or glitchy, particularly for themes that do
custom drawing on the backdrop buffer (2c71aa9). It also causes
issues if the shutdown has to be canceled.

Instead, enable theme, then clear the UI vp.

Change-Id: Ia96d1e766a9b86ec133522f7cd259e8b88f64216
2026-06-05 20:20:06 -04:00
William Wilgus
2b96380641 [Feature] FS#13884 #2 allow merging imported native keymaps
allows you to import a file and merge native keymaps

pops a yes no prompt to erase existing

duplicates will be overwritten

Change-Id: I167c6fac65775754b2a9874185d14f65638db9d7
2026-06-05 12:08:53 -04:00
William Wilgus
7517674513 FS#13920 text_editor.c plugin do not terminate last line with \n
you can still add a \n by inserting a blank line

Change-Id: Ic3e69fce83ccc9c050857a03877545a7452ce8a2
2026-06-05 02:17:38 -04:00
Christian Soffke
74905f4796 skin_engine: settings_apply_skins: remove get_skin_filename
Has no effect anymore since commit d66592b

Change-Id: Ibefc834378518c7e73e9e9b2489b6c072499bbe8
2026-06-05 00:04:17 +02:00
Christian Soffke
0836ebbd45 shortcuts: fix 'File' shortcuts may fail when dir filter set
Only apply dir filter to 'Browse' shortcuts, so that,
when trying to run a file from Shortcuts that is hidden
due to current dir filter settings, you don't get a 'Failed
reading Unknown' message (LANG_READ_FAILED/LANG_UNKNOWN)
because the tree entry can't be found in ft_enter.

Change-Id: I4eaad2ec415c9bac352a409922848e4407dac993
2026-06-04 21:32:54 +02:00
William Wilgus
ad05e23b72 [Feature] FS#13884 allow merging imported text keymaps
allows you to import a file and merge text keymaps

pops a yes no prompt to erase existing

duplicates will be overwritten

Change-Id: I0f4425e765f0a2ff6b73b830bcaea1b3f31e83cb
2026-06-04 12:10:03 -04:00
William Wilgus
e80e1448f1 [bugfix] Remember position in plugin browser menu
make the struct static so we can keep using the same
browse context between invocations

Change-Id: Ia154a78935755e1decb6abe50291d49e4404fb95
2026-06-04 02:33:44 -04:00
Solomon Peachy
3152beee32 chore: Don't embed $Revision$ tags in auto-generated files
I was going to convert them to a git hash instead, but that would
break builds from tarballs.

Change-Id: I76213b8b65df2c6cfb73cba299a4975a22725f36
2026-06-03 08:31:05 -04:00
Christian Soffke
a39e4f2a06 skin_engine: get rid of skin_unload_all
The skin is not unloaded using skin_unload_all in
settings_apply_skins anymore since commit 0ca4b38.

usb_screen was last remaining user until commit a969e1f.

Change-Id: I65a41ed220165587a04e699a7f210c575c00a4eb
2026-06-02 19:49:13 +02:00
Vencislav Atanasov
4469b95ef2 Update the Bulgarian translation
Change-Id: I285c5d71054b8c245ad40bd7c7a6d76e9b45fd01
2026-06-02 01:07:00 +03:00
Solomon Peachy
d54b9e6f8d chore: Get rid of *all* vestigal CVS '$Id:$' tags
Change-Id: I35c13a9768c582e4851aa252dd3ea5c89f760c8c
2026-06-01 16:01:18 -04:00
William Wilgus
3b2555bd4d onplay wps context menus small cleanup
no functional changes just cleaning up some code / logic

Change-Id: Ic03918a70997cfb170a29175361e2df9a9d242d1
2026-06-01 10:47:07 -04:00
Roman Artiukhin
c052d11673 skin: touchscreen: fix rewind in long files
Fix a possible overflow in the elapsed time calculation.

Change-Id: I211777d8144f76889003239b9a49e4fc56184c8f
2026-06-01 04:26:06 -04:00
William Wilgus
a7754eee71 [Bugfix] FS#13912 - splash_scroller with cyrillic crashes
I think they mean corrupted not crashes as I couldn't repro that

splash_scroller stepped by individual chars and split multibyte
sequences leaving corrupted chars

now it uses the new font_measurestring() to get the max_w and chops
it at break chars instead

this required a bit of a logic change to the function but should be
as good with less complications

Change-Id: I692db8b4737f41aec08dbc122fb844028498326d
2026-05-31 19:05:51 -04:00
Solomon Peachy
1c84362f3e FS#13915 - Updated Italian Translation (Alessio Lenzi)
Change-Id: Icc52476aa680361ee912468d9e47d67ac8324bad
2026-05-31 13:03:49 -04:00
Christian Soffke
16900c7fee root_menu: fix skin glitch when rebuilding tagcache
Only clear the UI vp instead of the whole display

Change-Id: Iab39094184a6749df743af268a4d9923cb18a73a
2026-05-31 11:50:11 -04:00
Roman Artiukhin
892fbe8d8f action: touchscreen: fix stuck repeated state of last action
This fixes the repeat_mode being stuck on Repeat Shuffle on the Hiby R1 WPS, and quick settings values being stuck at the last values for touch actions.

Regression from 9e254aca. The repeated state is used by the quick screen to detect repeated actions (see b918ec5) so I also removed "historical baggage" note.

Change-Id: Ic2a97058bbd17d232954ffe37f31a480ee11fe54
2026-05-31 13:20:39 +03:00
Christian Soffke
3507f32d01 plugins: properties: further reduce stack pressure
Follow-up to 9f20c45.

tagtree.c's retrieve_entries has significant stack usage
(>1.5k) and is called from tagtree_entries_iterate.

Further Reduce stack usage of tagtree_entries_iterate,
going from 784 B to 72 B, by using static memory allocation
for the the tagcache_search struct in the Properties plugin.

Change-Id: I75a170bea1c5392c18a891844a0ff31fbd2114eb
2026-05-29 20:40:36 +02:00
Christian Soffke
35270d08e9 apps: bookmark: stop scrolling when leaving select screen
Missing from commit 6a25257, which only stopped scrolling
when you entered the context menu.

Change-Id: Id8a586103ea71a2b965a24f8797253eb248f1078
2026-05-28 20:13:10 -04:00
Christian Soffke
160905b1b8 gui: list: update skin in gui_synclist_set_title
Moving the skin update from gui_synclist_set_title to
gui_synclist_draw (c41beeb) had the inadvertent side
effect that, if gui_synclist_select_item was called in
between, it may have missed a configured skinlist that
only got enabled by the skin update. Which could lead
to a selection appearing off screen.

This was mainly an issue if you had popped an activity,
which resets the skinlist cfg to NULL, but didn't perform
a skin update before the call to gui_synclist_select_item.

Now that GUI_EVENT_ACTIONREDRAW can be used instead of
GUI_EVENT_ACTIONUPDATE to prevent the display from being
updated, we may as well update the skin immediately in
gui_synclist_set_title again.

Change-Id: Iaee98d670ffb8d7b6590bd2ba11827fef5fba5a8
2026-05-28 20:12:35 -04:00
Christian Soffke
9f20c45a5e plugins: properties: fix stack overflow in db
Stack overflow in splash_progress called from
tagtree_subentries_do_action with stack protector
enabled on mips

Change-Id: Ia71e0493e279af0531ae792d41442198555664f6
2026-05-28 19:58:21 -04:00
Christian Soffke
f0d3d76b26 gui: list: clear skinlist cfg when selected_size isn't 1
This disables custom scroll bars when initializing lists
that are currently always un-skinned, in scenarios where
there is neither a new activity to be pushed, nor is the
theme toggled.

Change-Id: I1bb05fc9be956c71e1adb70e764094082d9bb904
2026-05-29 01:39:42 +02:00
mojyack
abaac894f9 plugins: lastfm_scrobbler: fix build error with LOGF
Change-Id: Iefb4b7e4fefb366987627bfd32c27b3252ca34c8
2026-05-28 17:28:07 +09:00
mojyack
e62ac0d2c6 ovl_offset: use elf symbols instead of refmap
add a plugin_ram_end symbol to plugin.lds and rewrite ovl_offset.pl
to read plugin_ram_end and plugin_load_end_addr from the elf via nm.
this removes all dependence on the linker map file format, which
differs between gnu ld and lld.

Change-Id: I66e623d9a2b44eb84ae7035155c84d8afe46df23
2026-05-27 17:55:33 -04:00
Christian Soffke
018994e8c7 gui: skinned lists: fix off-screen selection
The skinlist cfg may not have been restored in time
after leaving the onplay tree menu, because the skin
isn't updated before gui_synclist_select_item is called.

This can result in the wrong number of visible lines
being calculated for the list, and a selection that
appears off-screen.

Regression introduced in commit dfd9c10, or later.
Due to the recent drawing changes, reverting the
changes to onplay.c doesn't re-introduce any visual
glitches.

Change-Id: I853bdfe6b6ba39e2eb281534ca302a0a828253b9
2026-05-27 22:03:46 +02:00
Christian Soffke
358c6056ef gui: skinned list: always set cfg to NULL when toggling theme
Takes care of disabling scroll bars when the current activity
doesn't change, but the theme is toggled. Applies to confirmation
prompts, for example.

Since we're updating the skin immediately afterwards, the cfg
will be reset as needed.

Change-Id: I8a62b6b4ad0abf5176ab6b3e39281021108cb59f
2026-05-27 19:10:23 +02:00
Christian Soffke
0c464c3d49 gui: list-skinned: fix scrollbar not disappearing
In some scenarios, when leaving a skinned
list, the scroll bar remained visible.

Change-Id: I0aa08cc95b4cf315834f83f57c09ed3e0f43de70
2026-05-27 12:42:52 +02:00
Solomon Peachy
72af66bc8b FS#13910 - Updated German Translation (Karl Huber)
Change-Id: I0f6a6b7f758b929ed9c7e3127c548a036c381b1a
2026-05-26 19:10:51 -04:00
Solomon Peachy
9936d93fea Translation updates:
* Korean (Hoseok Seo)
 * Polish (Adam Rak)
 * Slovak (Matej Golian)
 * US English (Myself)

Change-Id: I1fe9b5bde585691d40288d933d286448c36421e4
2026-05-26 10:17:20 -04:00
Christian Soffke
2a29dedeb6 gui: skin_display: draw album art first
Some themes, such as Themify, FreshOS, iPod reFresh, Jive,
iPodOS, iPone, iClassic, AbsoluteBlack320, and possibly
others, draw a mask over the album art on the foreground
layer, in order to add rounded corners or to apply a fake
camera perspective (instead of taking advantage of the
backdrop layer).

This results in rendering glitches that can be fixed by
drawing the album art first.

Change-Id: Ie373c51304ab0d0a09b8663a8adff343a32ae5bb
2026-05-26 10:10:51 -04:00
William Wilgus
239ba599fd [Bugfix] FS#13908 hotkeys not saved when language is changed
Lang IDs get localized, if using them in a setting they should be
converted to english

adds lang_id_to_english() which walks the core builtins to return the lang id in english

Change-Id: Iced0d70be1318e512a8f3756e2bef1102dc511d8
2026-05-26 01:28:19 -04:00
William Wilgus
e471fe4115 [FixRed] Tree Hotkey on devices without HAVE_HOTKEY
Change-Id: I36f2fd8fc5edb2ac019a176cb9d3a3d014f1970d
2026-05-25 15:04:22 -04:00
William Wilgus
21e9d3f449 Hotkey Tree share code with WPS Context / Hotkey Wps
Change-Id: I0d81601bdb8279e845a874486ac4c1516b9d7dfc
2026-05-25 14:50:33 -04:00
Solomon Peachy
c2344070ac xworld: Fix set-but-unused variable warning with GCC16
Change-Id: I5e20a32d84ebc7ca56278988b8add9ee644138ba
2026-05-25 13:00:30 -04:00
William Wilgus
bf0fa29a30 WPS Context Menu configurable entry
Allow setting context menu items

reuses WPS hotkey items

Runs the item
displays the item

Open plugin shows the item name

Pitch shows the pitch speed amount

add 'Show In Files' hotkey item

devices without a hotkey get an extra item

added Manual entries

Change-Id: I427e70e1cad15364ac5d2a7114032e97cc9eee1a
2026-05-25 11:07:59 -04:00
Christian Soffke
edecad823e gui: list-skinned: fix scrollbar lag
The skin engine is responsible for drawing custom
scroll bars, but isn't kept in sync with list redraws.

Change-Id: Ieb457a4eb8442d4521c67a46a94c4d2132814c64
2026-05-25 07:33:57 -04:00
Christian Soffke
c0a8303a9c gui: simplify screen updates
Eliminate the somewhat circuitous skin_defer_rendering
and skin_render_deferred functions introduced in commit
c145d19e85.

skin_render (and thus skin_update and sb_skin_update),
along with skinlist_draw, list_draw (and thus
gui_synclist_draw), and quickscreen_draw, will never
update the screen anymore. Instead, the skin is only
marked as dirty now.

GUI_EVENT_ACTIONUPDATE redraws the skin as necessary,
and updates the screen afterwards, if the skin is dirty.
This event is sent from get_action, just like before.

A new event, GUI_EVENT_ACTIONREDRAW allows you to redraw
the skin without causing an immediate update at the same
time.

Change-Id: Ib20644853ead901e32f639000f044d6935135bae
2026-05-25 07:33:53 -04:00
Christian Soffke
04e557898f playlist: delay loading splash when adding indices
For playlists whose indices can be quickly added,
we should not be showing a splash.

Change-Id: Ib58fe8e28201f519e410fa99b2cb19e7e9a70fc9
2026-05-24 22:21:45 -04:00
Christian Soffke
ae17d606be playlist_viewer: provide UI feedback when loading is delayed
If Playlist Viewer can't open instantaneously due
to the retrieval of metadata, or on devices with disk
storage, make sure the UI doesn't feel unresponsive

Change-Id: Ib7a837515b4fb89ee0ee34ec04541200248b1d6f
2026-05-24 22:21:38 -04:00
Solomon Peachy
cfbbf5b488 pdbox: Fix up a pile of set-but-unused variable warnings with GCC16
Change-Id: I8de93d879ade61251fdde205353120a8e583b157
2026-05-23 21:31:25 -04:00
Solomon Peachy
95df5fdec0 doom: Fix set-but-unused warnings with GCC16
Change-Id: Iecd8ea9f5dc95f37955bed5e4892a90a93472cc6
2026-05-23 21:22:52 -04:00