url-mode: assign label keys in reverse order

The _last_ URL is often the one you are interested in, and with this
change, it is always assigned the first (and thus the same) key.

Closes #2140
This commit is contained in:
Daniel Eklöf 2025-07-17 10:40:20 +02:00
parent 692b22cbbb
commit cc290fa9b0
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
2 changed files with 12 additions and 4 deletions

View file

@ -67,6 +67,14 @@
## Unreleased
### Added
### Changed
* URL labels are now assigned in reverse order, from bottom to
top. This ensures the **last** URL (which is often the one you are
interested in) is always assigned the same key ([#2140][2140]).
[2140]: https://codeberg.org/dnkl/foot/issues/2140
### Deprecated
### Removed
### Fixed

View file

@ -634,12 +634,12 @@ urls_assign_key_combos(const struct config *conf, url_list_t *urls)
size_t combo_idx = 0;
tll_foreach(*urls, it) {
tll_rforeach(*urls, it) {
bool id_already_seen = false;
/* Look for already processed URLs where both the URI and the
* ID matches */
tll_foreach(*urls, it2) {
tll_rforeach(*urls, it2) {
if (&it->item == &it2->item)
break;
@ -659,7 +659,7 @@ urls_assign_key_combos(const struct config *conf, url_list_t *urls)
* them; if so, reuse the *same* key combo.
*/
bool url_already_seen = false;
tll_foreach(*urls, it2) {
tll_rforeach(*urls, it2) {
if (&it->item == &it2->item)
break;
@ -679,7 +679,7 @@ urls_assign_key_combos(const struct config *conf, url_list_t *urls)
free(combos[i]);
#if defined(_DEBUG) && LOG_ENABLE_DBG
tll_foreach(*urls, it) {
tll_rforeach(*urls, it) {
if (it->item.key == NULL)
continue;