[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/plain
This content has been proxied by September (3851b).