=> 93f4d1ac749c591b33eb657eadddcca8b872f6c7
[1mdiff --git a/po/en.po b/po/en.po[m [1mindex ec7f42a9..aaacbd02 100644[m [1m--- a/po/en.po[m [1m+++ b/po/en.po[m [36m@@ -542,6 +542,9 @@[m [mmsgstr "Mark as Read"[m msgid "feeds.entry.markunread"[m msgstr "Mark as Unread"[m [m [32m+[m[32mmsgid "feeds.entry.markbelowread"[m [32m+[m[32mmsgstr "Mark Below as Read"[m [32m+[m msgid "sidebar.entry.bookmark"[m msgstr "Add Bookmark…"[m [m [1mdiff --git a/src/defs.h b/src/defs.h[m [1mindex 429601e6..9e967217 100644[m [1m--- a/src/defs.h[m [1m+++ b/src/defs.h[m [36m@@ -135,6 +135,7 @@[m [miLocalDef int acceptKeyMod_ReturnKeyBehavior(int behavior) {[m #define upArrow_Icon "\U0001f871"[m #define upArrowBar_Icon "\u2b71"[m #define keyUpArrow_Icon "\u2191"[m [32m+[m[32m#define downArrow_Icon "\U0001f873"[m #define downArrowBar_Icon "\u2913"[m #define rightArrowWhite_Icon "\u21e8"[m #define rightArrow_Icon "\u279e"[m [1mdiff --git a/src/ui/sidebarwidget.c b/src/ui/sidebarwidget.c[m [1mindex 2518a63e..652bf764 100644[m [1m--- a/src/ui/sidebarwidget.c[m [1m+++ b/src/ui/sidebarwidget.c[m [36m@@ -261,6 +261,12 @@[m [mstatic void setMobileEditMode_SidebarWidget_(iSidebarWidget *d, iBool editing) {[m }[m }[m [m [32m+[m[32mstatic const iPtrArray *listFeedEntries_SidebarWidget_(const iSidebarWidget *d) {[m [32m+[m[32m iUnused(d);[m [32m+[m[32m /* TODO: Sort order setting? */[m [32m+[m[32m return listEntries_Feeds();[m [32m+[m[32m}[m [32m+[m static void updateItemsWithFlags_SidebarWidget_(iSidebarWidget *d, iBool keepActions) {[m const iBool isMobile = (deviceType_App() != desktop_AppDeviceType);[m clear_ListWidget(d->list);[m [36m@@ -286,7 +292,7 @@[m [mstatic void updateItemsWithFlags_SidebarWidget_(iSidebarWidget *d, iBool keepAct[m iZap(on);[m size_t numItems = 0;[m isEmpty = iTrue;[m [31m- const iPtrArray *feedEntries = listEntries_Feeds();[m [32m+[m[32m const iPtrArray *feedEntries = listFeedEntries_SidebarWidget_(d);[m iConstForEach(PtrArray, i, feedEntries) {[m const iFeedEntry *entry = i.ptr;[m if (isHidden_FeedEntry(entry)) {[m [36m@@ -420,6 +426,7 @@[m [mstatic void updateItemsWithFlags_SidebarWidget_(iSidebarWidget *d, iBool keepAct[m #endif[m { "---", 0, 0, NULL },[m { circle_Icon " ${feeds.entry.markread}", 0, 0, "feed.entry.toggleread" },[m [32m+[m[32m { downArrow_Icon " ${feeds.entry.markbelowread}", 0, 0, "feed.entry.markread below:1" },[m { bookmark_Icon " ${feeds.entry.bookmark}", 0, 0, "feed.entry.bookmark" },[m { "${menu.copyurl}", 0, 0, "feed.entry.copy" },[m { "---", 0, 0, NULL },[m [36m@@ -1649,14 +1656,9 @@[m [mstatic iBool processEvent_SidebarWidget_(iSidebarWidget *d, const SDL_Event *ev)[m openMenu_Widget(menu, topLeft_Rect(bounds_Widget(d->actions)));[m return iTrue;[m }[m [31m- iConstForEach(PtrArray, i, listEntries_Feeds()) {[m [32m+[m[32m iConstForEach(PtrArray, i, listFeedEntries_SidebarWidget_(d)) {[m const iFeedEntry *entry = i.ptr;[m [31m- const iString *url = url_FeedEntry(entry);[m markEntryAsRead_Feeds(entry->bookmarkId, &entry->url, iTrue);[m [31m-// if (!containsUrl_Visited(visited_App(), url)) {[m [31m-// visitUrl_Visited(visited_App(), url,[m [31m-// transient_VisitedUrlFlag | kept_VisitedUrlFlag);[m [31m-// }[m }[m postCommand_App("visited.changed");[m return iTrue;[m [36m@@ -1684,6 +1686,24 @@[m [mstatic iBool processEvent_SidebarWidget_(iSidebarWidget *d, const SDL_Event *ev)[m postCommand_App("visited.changed");[m return iTrue;[m }[m [32m+[m[32m else if (isCommand_Widget(w, ev, "feed.entry.markread")) {[m [32m+[m[32m iBool isBelow = iFalse;[m [32m+[m[32m const iBool markingBelow = argLabel_Command(command_UserEvent(ev), "below") != 0;[m [32m+[m[32m iConstForEach(PtrArray, i, listFeedEntries_SidebarWidget_(d)) {[m [32m+[m[32m const iFeedEntry *entry = i.ptr;[m [32m+[m[32m if (isBelow) {[m [32m+[m[32m markEntryAsRead_Feeds(entry->bookmarkId, &entry->url, iTrue);[m [32m+[m[32m }[m [32m+[m[32m else {[m [32m+[m[32m if (equal_String(&entry->url, &item->url) &&[m [32m+[m[32m entry->bookmarkId == item->id) {[m [32m+[m[32m isBelow = iTrue;[m [32m+[m[32m }[m [32m+[m[32m }[m [32m+[m[32m }[m [32m+[m[32m postCommand_App("visited.changed");[m[41m [m [32m+[m[32m return iTrue;[m [32m+[m[32m }[m else if (isCommand_Widget(w, ev, "feed.entry.bookmark")) {[m makeBookmarkCreation_Widget(&item->url, &item->label, item->icon);[m if (deviceType_App() == desktop_AppDeviceType) {[m [36m@@ -1844,15 +1864,15 @@[m [mstatic iBool processEvent_SidebarWidget_(iSidebarWidget *d, const SDL_Event *ev)[m }[m }[m else if (d->mode == feeds_SidebarMode && d->contextItem) {[m [31m- const iBool isRead = d->contextItem->indent == 0;[m [32m+[m[32m const iBool isRead = d->contextItem->indent == 0;[m setMenuItemLabel_Widget(d->menu,[m "feed.entry.toggleread",[m isRead ? circle_Icon " ${feeds.entry.markunread}"[m : circleWhite_Icon " ${feeds.entry.markread}");[m }[m [31m- }[m [31m- }[m [31m- }[m [32m+[m[32m }[m [32m+[m[32m }[m [32m+[m[32m }[m if (ev->type == SDL_KEYDOWN) {[m const int key = ev->key.keysym.sym;[m const int kmods = keyMods_Sym(ev->key.keysym.mod);[m
text/gemini; charset=utf-8
This content has been proxied by September (ba2dc).