=> d4743805ebf8f57c3879362b2302ad1251acd1fb
[1mdiff --git a/po/en.po b/po/en.po[m [1mindex ce5ec830..de87c77a 100644[m [1m--- a/po/en.po[m [1m+++ b/po/en.po[m [36m@@ -464,6 +464,9 @@[m [mmsgstr "Import All Links on Page…"[m msgid "menu.page.import"[m msgstr "Import Links as Bookmarks…"[m [m [32m+[m[32mmsgid "menu.page.visitlinks"[m [32m+[m[32mmsgstr "Mark All Links as Visited"[m [32m+[m msgid "menu.page.translate"[m msgstr "Translate…"[m [m [1mdiff --git a/res/lang/cs.bin b/res/lang/cs.bin[m [1mindex 01bd8529..3a34ad9a 100644[m Binary files a/res/lang/cs.bin and b/res/lang/cs.bin differ [1mdiff --git a/res/lang/de.bin b/res/lang/de.bin[m [1mindex fe140b86..35f8fa9a 100644[m Binary files a/res/lang/de.bin and b/res/lang/de.bin differ [1mdiff --git a/res/lang/en.bin b/res/lang/en.bin[m [1mindex 09229bfe..26cef2f2 100644[m Binary files a/res/lang/en.bin and b/res/lang/en.bin differ [1mdiff --git a/res/lang/eo.bin b/res/lang/eo.bin[m [1mindex 0a5dd9e8..68778112 100644[m Binary files a/res/lang/eo.bin and b/res/lang/eo.bin differ [1mdiff --git a/res/lang/es.bin b/res/lang/es.bin[m [1mindex 8ed2fa37..523cdaa6 100644[m Binary files a/res/lang/es.bin and b/res/lang/es.bin differ [1mdiff --git a/res/lang/es_MX.bin b/res/lang/es_MX.bin[m [1mindex a6288c90..f5eb481b 100644[m Binary files a/res/lang/es_MX.bin and b/res/lang/es_MX.bin differ [1mdiff --git a/res/lang/eu.bin b/res/lang/eu.bin[m [1mindex 4472a069..53bb3d67 100644[m Binary files a/res/lang/eu.bin and b/res/lang/eu.bin differ [1mdiff --git a/res/lang/fi.bin b/res/lang/fi.bin[m [1mindex c0d480c8..9195ebad 100644[m Binary files a/res/lang/fi.bin and b/res/lang/fi.bin differ [1mdiff --git a/res/lang/fr.bin b/res/lang/fr.bin[m [1mindex 8505078e..e190f196 100644[m Binary files a/res/lang/fr.bin and b/res/lang/fr.bin differ [1mdiff --git a/res/lang/gl.bin b/res/lang/gl.bin[m [1mindex 03b09939..c692dcd8 100644[m Binary files a/res/lang/gl.bin and b/res/lang/gl.bin differ [1mdiff --git a/res/lang/hu.bin b/res/lang/hu.bin[m [1mindex f19f2e96..b4549e1a 100644[m Binary files a/res/lang/hu.bin and b/res/lang/hu.bin differ [1mdiff --git a/res/lang/ia.bin b/res/lang/ia.bin[m [1mindex b23b441a..bb5f5ede 100644[m Binary files a/res/lang/ia.bin and b/res/lang/ia.bin differ [1mdiff --git a/res/lang/ie.bin b/res/lang/ie.bin[m [1mindex 57439c4c..5d0c9b41 100644[m Binary files a/res/lang/ie.bin and b/res/lang/ie.bin differ [1mdiff --git a/res/lang/isv.bin b/res/lang/isv.bin[m [1mindex e06b83c2..23c238a4 100644[m Binary files a/res/lang/isv.bin and b/res/lang/isv.bin differ [1mdiff --git a/res/lang/it.bin b/res/lang/it.bin[m [1mindex 9894f60c..c3911467 100644[m Binary files a/res/lang/it.bin and b/res/lang/it.bin differ [1mdiff --git a/res/lang/ja.bin b/res/lang/ja.bin[m [1mindex b74b54d8..da20f681 100644[m Binary files a/res/lang/ja.bin and b/res/lang/ja.bin differ [1mdiff --git a/res/lang/nl.bin b/res/lang/nl.bin[m [1mindex d05f2ac8..4a3024f1 100644[m Binary files a/res/lang/nl.bin and b/res/lang/nl.bin differ [1mdiff --git a/res/lang/pl.bin b/res/lang/pl.bin[m [1mindex 03cc3f7a..6d0587b7 100644[m Binary files a/res/lang/pl.bin and b/res/lang/pl.bin differ [1mdiff --git a/res/lang/ru.bin b/res/lang/ru.bin[m [1mindex 2b719706..a1f9c4d5 100644[m Binary files a/res/lang/ru.bin and b/res/lang/ru.bin differ [1mdiff --git a/res/lang/sk.bin b/res/lang/sk.bin[m [1mindex d0dc7df9..2e0e416a 100644[m Binary files a/res/lang/sk.bin and b/res/lang/sk.bin differ [1mdiff --git a/res/lang/sr.bin b/res/lang/sr.bin[m [1mindex edc6e4a9..d8e5b943 100644[m Binary files a/res/lang/sr.bin and b/res/lang/sr.bin differ [1mdiff --git a/res/lang/tok.bin b/res/lang/tok.bin[m [1mindex 3f2b05f4..be1e628c 100644[m Binary files a/res/lang/tok.bin and b/res/lang/tok.bin differ [1mdiff --git a/res/lang/tr.bin b/res/lang/tr.bin[m [1mindex 0db87aab..2f61211a 100644[m Binary files a/res/lang/tr.bin and b/res/lang/tr.bin differ [1mdiff --git a/res/lang/uk.bin b/res/lang/uk.bin[m [1mindex 15c0c180..f2165a0e 100644[m Binary files a/res/lang/uk.bin and b/res/lang/uk.bin differ [1mdiff --git a/res/lang/zh_Hans.bin b/res/lang/zh_Hans.bin[m [1mindex 4c3ae410..6fbc626d 100644[m Binary files a/res/lang/zh_Hans.bin and b/res/lang/zh_Hans.bin differ [1mdiff --git a/res/lang/zh_Hant.bin b/res/lang/zh_Hant.bin[m [1mindex 607a8c98..75a0295d 100644[m Binary files a/res/lang/zh_Hant.bin and b/res/lang/zh_Hant.bin differ [1mdiff --git a/src/app.c b/src/app.c[m [1mindex f84d0acc..ca6785c9 100644[m [1m--- a/src/app.c[m [1m+++ b/src/app.c[m [36m@@ -174,7 +174,8 @@[m [mstruct Impl_App {[m iStringList *launchCommands;[m iBool isFinishedLaunching;[m iTime lastDropTime; /* for detecting drops of multiple items */[m [31m- int autoReloadTimer;[m [32m+[m[32m uint32_t lastVisitedSaveTime;[m [32m+[m[32m int autoReloadTimer; /* TODO: only start this when tabs are autoreloading */[m iPeriodic periodic;[m int warmupFrames; /* forced refresh just after resuming from background; FIXME: shouldn't be needed */[m #if defined (LAGRANGE_ENABLE_IDLE_SLEEP)[m [36m@@ -1317,6 +1318,7 @@[m [mstatic void init_App_(iApp *d, int argc, char **argv) {[m d->certs = new_GmCerts(dataDir_App_());[m d->visited = new_Visited();[m d->bookmarks = new_Bookmarks();[m [32m+[m[32m d->lastVisitedSaveTime = 0;[m /* Dumping requested pages. */[m if (doDump) {[m const iGmIdentity *ident = NULL;[m [36m@@ -4017,7 +4019,13 @@[m [mstatic iBool handleNonWindowRelatedCommand_App_(iApp *d, const char *cmd) {[m return iTrue;[m }[m else if (equal_Command(cmd, "visited.changed")) {[m [31m- save_Visited(d->visited, dataDir_App_());[m [32m+[m[32m /* The visited file can grow large, so don't keep rewriting it after every navigation. */[m [32m+[m[32m const uint32_t now = SDL_GetTicks();[m [32m+[m[32m unsigned seconds = (now - d->lastVisitedSaveTime) / 1000;[m [32m+[m[32m if (seconds > 60) {[m [32m+[m[32m d->lastVisitedSaveTime = now;[m [32m+[m[32m save_Visited(d->visited, dataDir_App_());[m [32m+[m[32m }[m return iFalse;[m }[m else if (equal_Command(cmd, "idents.changed")) {[m [1mdiff --git a/src/ui/documentwidget.c b/src/ui/documentwidget.c[m [1mindex 42711739..2949cc81 100644[m [1m--- a/src/ui/documentwidget.c[m [1m+++ b/src/ui/documentwidget.c[m [36m@@ -2916,6 +2916,16 @@[m [mstatic iBool handleCommand_DocumentWidget_(iDocumentWidget *d, const char *cmd)[m updateWindowTitle_DocumentWidget_(d);[m return iFalse;[m }[m [32m+[m[32m else if (equal_Command(cmd, "document.visitlinks") && d == document_App()) {[m [32m+[m[32m const iGmDocument *doc = d->view->doc;[m [32m+[m[32m for (size_t linkId = 1; linkId <= numLinks_GmDocument(doc); linkId++) {[m [32m+[m[32m const iString *url = linkUrl_GmDocument(doc, linkId);[m [32m+[m[32m visitUrl_Visited(visited_App(), url, transient_VisitedUrlFlag);[m [32m+[m[32m }[m [32m+[m[32m updateVisitedLinks_GmDocument(d->view->doc);[m [32m+[m[32m invalidate_DocumentWidget_(d);[m [32m+[m[32m return iTrue;[m [32m+[m[32m }[m else if (equal_Command(cmd, "document.select") && d == document_App()) {[m /* Touch selection mode. */[m if (!arg_Command(cmd)) {[m [1mdiff --git a/src/ui/root.c b/src/ui/root.c[m [1mindex eb7083fd..9c789503 100644[m [1m--- a/src/ui/root.c[m [1m+++ b/src/ui/root.c[m [36m@@ -2155,8 +2155,9 @@[m [mvoid createUserInterface_Root(iRoot *d) {[m { upload_Icon " ${menu.page.upload}", 0, 0, "document.upload" },[m { edit_Icon " ${menu.page.upload.edit}", 0, 0, "document.upload copy:1" },[m { book_Icon " ${menu.page.import}", 0, 0, "bookmark.links confirm:1" },[m [32m+[m[32m { "${menu.page.visitlinks}", 0, 0, "document.visitlinks" },[m { timer_Icon " ${menu.autoreload}", 0, 0, "document.autoreload.menu" }[m [31m- }, 5);[m [32m+[m[32m }, 6);[m setId_Widget(tabsMenu, "doctabs.menu");[m setId_Widget(barMenu, "barmenu");[m setId_Widget(toolsMenu, "toolsmenu");[m
text/gemini; charset=utf-8
This content has been proxied by September (3851b).