summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--po/en.po3
-rw-r--r--res/lang/de.binbin26367 -> 26398 bytes
-rw-r--r--res/lang/en.binbin23805 -> 23836 bytes
-rw-r--r--res/lang/eo.binbin22659 -> 22690 bytes
-rw-r--r--res/lang/es.binbin26751 -> 26782 bytes
-rw-r--r--res/lang/es_MX.binbin24719 -> 24750 bytes
-rw-r--r--res/lang/fi.binbin26663 -> 26694 bytes
-rw-r--r--res/lang/fr.binbin27573 -> 27604 bytes
-rw-r--r--res/lang/gl.binbin26027 -> 26058 bytes
-rw-r--r--res/lang/ia.binbin25692 -> 25723 bytes
-rw-r--r--res/lang/ie.binbin25897 -> 25928 bytes
-rw-r--r--res/lang/isv.binbin22595 -> 22626 bytes
-rw-r--r--res/lang/pl.binbin26968 -> 26999 bytes
-rw-r--r--res/lang/ru.binbin39307 -> 39338 bytes
-rw-r--r--res/lang/sk.binbin22928 -> 22959 bytes
-rw-r--r--res/lang/sr.binbin39212 -> 39243 bytes
-rw-r--r--res/lang/tok.binbin24142 -> 24173 bytes
-rw-r--r--res/lang/zh_Hans.binbin22644 -> 22675 bytes
-rw-r--r--res/lang/zh_Hant.binbin22785 -> 22816 bytes
-rw-r--r--src/app.c67
-rw-r--r--src/gmdocument.c3
-rw-r--r--src/prefs.c1
-rw-r--r--src/prefs.h1
-rw-r--r--src/ui/documentwidget.c1
-rw-r--r--src/ui/util.c37
25 files changed, 78 insertions, 35 deletions
diff --git a/po/en.po b/po/en.po
index f0a5b1c7..526a723d 100644
--- a/po/en.po
+++ b/po/en.po
@@ -1485,6 +1485,9 @@ msgstr "Gopher"
1485msgid "prefs.boldlink" 1485msgid "prefs.boldlink"
1486msgstr "Bold links:" 1486msgstr "Bold links:"
1487 1487
1488msgid "prefs.boldlink.visited"
1489msgstr "Visited"
1490
1488# Interpretation: (Bold links) on dark (background). 1491# Interpretation: (Bold links) on dark (background).
1489msgid "prefs.boldlink.dark" 1492msgid "prefs.boldlink.dark"
1490msgstr "On Dark" 1493msgstr "On Dark"
diff --git a/res/lang/de.bin b/res/lang/de.bin
index 17f3a3d6..17a2d191 100644
--- a/res/lang/de.bin
+++ b/res/lang/de.bin
Binary files differ
diff --git a/res/lang/en.bin b/res/lang/en.bin
index 42d62334..51b9a10d 100644
--- a/res/lang/en.bin
+++ b/res/lang/en.bin
Binary files differ
diff --git a/res/lang/eo.bin b/res/lang/eo.bin
index 5d865707..7b83b77f 100644
--- a/res/lang/eo.bin
+++ b/res/lang/eo.bin
Binary files differ
diff --git a/res/lang/es.bin b/res/lang/es.bin
index 5f620910..91121500 100644
--- a/res/lang/es.bin
+++ b/res/lang/es.bin
Binary files differ
diff --git a/res/lang/es_MX.bin b/res/lang/es_MX.bin
index de5e253f..df129a8a 100644
--- a/res/lang/es_MX.bin
+++ b/res/lang/es_MX.bin
Binary files differ
diff --git a/res/lang/fi.bin b/res/lang/fi.bin
index 5ca852cf..fad0413b 100644
--- a/res/lang/fi.bin
+++ b/res/lang/fi.bin
Binary files differ
diff --git a/res/lang/fr.bin b/res/lang/fr.bin
index b6a577b3..20fd19ef 100644
--- a/res/lang/fr.bin
+++ b/res/lang/fr.bin
Binary files differ
diff --git a/res/lang/gl.bin b/res/lang/gl.bin
index 55ea5675..1cac09b9 100644
--- a/res/lang/gl.bin
+++ b/res/lang/gl.bin
Binary files differ
diff --git a/res/lang/ia.bin b/res/lang/ia.bin
index 63a9cb33..64ebfe03 100644
--- a/res/lang/ia.bin
+++ b/res/lang/ia.bin
Binary files differ
diff --git a/res/lang/ie.bin b/res/lang/ie.bin
index 19b631aa..87064cef 100644
--- a/res/lang/ie.bin
+++ b/res/lang/ie.bin
Binary files differ
diff --git a/res/lang/isv.bin b/res/lang/isv.bin
index 2af131f1..726441ce 100644
--- a/res/lang/isv.bin
+++ b/res/lang/isv.bin
Binary files differ
diff --git a/res/lang/pl.bin b/res/lang/pl.bin
index 93e070de..a857c547 100644
--- a/res/lang/pl.bin
+++ b/res/lang/pl.bin
Binary files differ
diff --git a/res/lang/ru.bin b/res/lang/ru.bin
index 2ec7eaaf..c1884651 100644
--- a/res/lang/ru.bin
+++ b/res/lang/ru.bin
Binary files differ
diff --git a/res/lang/sk.bin b/res/lang/sk.bin
index 06cf8cf8..981ab7e1 100644
--- a/res/lang/sk.bin
+++ b/res/lang/sk.bin
Binary files differ
diff --git a/res/lang/sr.bin b/res/lang/sr.bin
index 41f7fb4b..384665cc 100644
--- a/res/lang/sr.bin
+++ b/res/lang/sr.bin
Binary files differ
diff --git a/res/lang/tok.bin b/res/lang/tok.bin
index c68303d1..51080283 100644
--- a/res/lang/tok.bin
+++ b/res/lang/tok.bin
Binary files differ
diff --git a/res/lang/zh_Hans.bin b/res/lang/zh_Hans.bin
index 0b243530..0cf56935 100644
--- a/res/lang/zh_Hans.bin
+++ b/res/lang/zh_Hans.bin
Binary files differ
diff --git a/res/lang/zh_Hant.bin b/res/lang/zh_Hant.bin
index d5c13885..28e7cedf 100644
--- a/res/lang/zh_Hant.bin
+++ b/res/lang/zh_Hant.bin
Binary files differ
diff --git a/src/app.c b/src/app.c
index 8442a2c8..6282ade2 100644
--- a/src/app.c
+++ b/src/app.c
@@ -231,22 +231,46 @@ static iString *serializePrefs_App_(const iApp *d) {
231 appendFormat_String(str, "linewidth.set arg:%d\n", d->prefs.lineWidth); 231 appendFormat_String(str, "linewidth.set arg:%d\n", d->prefs.lineWidth);
232 appendFormat_String(str, "linespacing.set arg:%f\n", d->prefs.lineSpacing); 232 appendFormat_String(str, "linespacing.set arg:%f\n", d->prefs.lineSpacing);
233 appendFormat_String(str, "returnkey.set arg:%d\n", d->prefs.returnKey); 233 appendFormat_String(str, "returnkey.set arg:%d\n", d->prefs.returnKey);
234 /* TODO: Set up an array of booleans in Prefs and do these in a loop. */ 234 /* TODO: This array belongs in Prefs. It can then be used for command handling as well. */
235 appendFormat_String(str, "prefs.animate.changed arg:%d\n", d->prefs.uiAnimations); 235 const struct {
236 appendFormat_String(str, "prefs.font.smooth.changed arg:%d\n", d->prefs.fontSmoothing); 236 const char * id;
237 appendFormat_String(str, "prefs.gemtext.ansi.changed arg:%d\n", d->prefs.gemtextAnsiEscapes); 237 const iBool *value;
238 appendFormat_String(str, "prefs.mono.gemini.changed arg:%d\n", d->prefs.monospaceGemini); 238 } boolPrefs[] = {
239 appendFormat_String(str, "prefs.mono.gopher.changed arg:%d\n", d->prefs.monospaceGopher); 239 { "prefs.animate", &d->prefs.uiAnimations },
240 appendFormat_String(str, "prefs.boldlink.dark.changed arg:%d\n", d->prefs.boldLinkDark); 240 { "prefs.font.smooth", &d->prefs.fontSmoothing },
241 appendFormat_String(str, "prefs.boldlink.light.changed arg:%d\n", d->prefs.boldLinkLight); 241 { "prefs.gemtext.ansi", &d->prefs.gemtextAnsiEscapes },
242 appendFormat_String(str, "prefs.biglede.changed arg:%d\n", d->prefs.bigFirstParagraph); 242 { "prefs.mono.gemini", &d->prefs.monospaceGemini },
243 appendFormat_String(str, "prefs.plaintext.wrap.changed arg:%d\n", d->prefs.plainTextWrap); 243 { "prefs.mono.gopher", &d->prefs.monospaceGopher },
244 appendFormat_String(str, "prefs.sideicon.changed arg:%d\n", d->prefs.sideIcon); 244 { "prefs.boldlink.visited", &d->prefs.boldLinkVisited },
245 appendFormat_String(str, "prefs.centershort.changed arg:%d\n", d->prefs.centerShortDocs); 245 { "prefs.boldlink.dark", &d->prefs.boldLinkDark },
246 appendFormat_String(str, "prefs.collapsepreonload.changed arg:%d\n", d->prefs.collapsePreOnLoad); 246 { "prefs.boldlink.light", &d->prefs.boldLinkLight },
247 appendFormat_String(str, "prefs.hoverlink.changed arg:%d\n", d->prefs.hoverLink); 247 { "prefs.biglede", &d->prefs.bigFirstParagraph },
248 appendFormat_String(str, "prefs.bookmarks.addbottom arg:%d\n", d->prefs.addBookmarksToBottom); 248 { "prefs.plaintext.wrap", &d->prefs.plainTextWrap },
249 appendFormat_String(str, "prefs.archive.openindex.changed arg:%d\n", d->prefs.openArchiveIndexPages); 249 { "prefs.sideicon", &d->prefs.sideIcon },
250 { "prefs.centershort", &d->prefs.centerShortDocs },
251 { "prefs.collapsepreonload", &d->prefs.collapsePreOnLoad },
252 { "prefs.hoverlink", &d->prefs.hoverLink },
253 { "prefs.bookmarks.addbottom", &d->prefs.addBookmarksToBottom },
254 { "prefs.archive.openindex", &d->prefs.openArchiveIndexPages },
255 };
256 iForIndices(i, boolPrefs) {
257 appendFormat_String(str, "%s.changed arg:%d\n", boolPrefs[i].id, *boolPrefs[i].value);
258 }
259// appendFormat_String(str, "prefs.animate.changed arg:%d\n", d->prefs.uiAnimations);
260// appendFormat_String(str, "prefs.font.smooth.changed arg:%d\n", d->prefs.fontSmoothing);
261// appendFormat_String(str, "prefs.gemtext.ansi.changed arg:%d\n", d->prefs.gemtextAnsiEscapes);
262// appendFormat_String(str, "prefs.mono.gemini.changed arg:%d\n", d->prefs.monospaceGemini);
263// appendFormat_String(str, "prefs.mono.gopher.changed arg:%d\n", d->prefs.monospaceGopher);
264// appendFormat_String(str, "prefs.boldlink.dark.changed arg:%d\n", d->prefs.boldLinkDark);
265// appendFormat_String(str, "prefs.boldlink.light.changed arg:%d\n", d->prefs.boldLinkLight);
266// appendFormat_String(str, "prefs.biglede.changed arg:%d\n", d->prefs.bigFirstParagraph);
267// appendFormat_String(str, "prefs.plaintext.wrap.changed arg:%d\n", d->prefs.plainTextWrap);
268// appendFormat_String(str, "prefs.sideicon.changed arg:%d\n", d->prefs.sideIcon);
269// appendFormat_String(str, "prefs.centershort.changed arg:%d\n", d->prefs.centerShortDocs);
270// appendFormat_String(str, "prefs.collapsepreonload.changed arg:%d\n", d->prefs.collapsePreOnLoad);
271// appendFormat_String(str, "prefs.hoverlink.changed arg:%d\n", d->prefs.hoverLink);
272// appendFormat_String(str, "prefs.bookmarks.addbottom arg:%d\n", d->prefs.addBookmarksToBottom);
273// appendFormat_String(str, "prefs.archive.openindex.changed arg:%d\n", d->prefs.openArchiveIndexPages);
250 appendFormat_String(str, "quoteicon.set arg:%d\n", d->prefs.quoteIcon ? 1 : 0); 274 appendFormat_String(str, "quoteicon.set arg:%d\n", d->prefs.quoteIcon ? 1 : 0);
251 appendFormat_String(str, "theme.set arg:%d auto:1\n", d->prefs.theme); 275 appendFormat_String(str, "theme.set arg:%d auto:1\n", d->prefs.theme);
252 appendFormat_String(str, "accent.set arg:%d\n", d->prefs.accent); 276 appendFormat_String(str, "accent.set arg:%d\n", d->prefs.accent);
@@ -2376,9 +2400,13 @@ iBool handleCommand_App(const char *cmd) {
2376 return iTrue; 2400 return iTrue;
2377 } 2401 }
2378 else if (equal_Command(cmd, "prefs.boldlink.dark.changed") || 2402 else if (equal_Command(cmd, "prefs.boldlink.dark.changed") ||
2379 equal_Command(cmd, "prefs.boldlink.light.changed")) { 2403 equal_Command(cmd, "prefs.boldlink.light.changed") ||
2404 equal_Command(cmd, "prefs.boldlink.visited.changed")) {
2380 const iBool isSet = (arg_Command(cmd) != 0); 2405 const iBool isSet = (arg_Command(cmd) != 0);
2381 if (startsWith_CStr(cmd, "prefs.boldlink.dark")) { 2406 if (startsWith_CStr(cmd, "prefs.boldlink.visited")) {
2407 d->prefs.boldLinkVisited = isSet;
2408 }
2409 else if (startsWith_CStr(cmd, "prefs.boldlink.dark")) {
2382 d->prefs.boldLinkDark = isSet; 2410 d->prefs.boldLinkDark = isSet;
2383 } 2411 }
2384 else { 2412 else {
@@ -2763,6 +2791,9 @@ iBool handleCommand_App(const char *cmd) {
2763 setFlags_Widget(findChild_Widget(dlg, "prefs.mono.gopher"), 2791 setFlags_Widget(findChild_Widget(dlg, "prefs.mono.gopher"),
2764 selected_WidgetFlag, 2792 selected_WidgetFlag,
2765 d->prefs.monospaceGopher); 2793 d->prefs.monospaceGopher);
2794 setFlags_Widget(findChild_Widget(dlg, "prefs.boldlink.visited"),
2795 selected_WidgetFlag,
2796 d->prefs.boldLinkVisited);
2766 setFlags_Widget(findChild_Widget(dlg, "prefs.boldlink.dark"), 2797 setFlags_Widget(findChild_Widget(dlg, "prefs.boldlink.dark"),
2767 selected_WidgetFlag, 2798 selected_WidgetFlag,
2768 d->prefs.boldLinkDark); 2799 d->prefs.boldLinkDark);
diff --git a/src/gmdocument.c b/src/gmdocument.c
index f43d2758..e37d585e 100644
--- a/src/gmdocument.c
+++ b/src/gmdocument.c
@@ -890,7 +890,8 @@ static void doLayout_GmDocument_(iGmDocument *d) {
890 rts.lineHeightReduction = 0.06f; 890 rts.lineHeightReduction = 0.06f;
891 } 891 }
892 /* Visited links are never bold. */ 892 /* Visited links are never bold. */
893 if (run.linkId && linkFlags_GmDocument(d, run.linkId) & visited_GmLinkFlag) { 893 if (run.linkId && !prefs->boldLinkVisited &&
894 linkFlags_GmDocument(d, run.linkId) & visited_GmLinkFlag) {
894 rts.run.font = paragraph_FontId; 895 rts.run.font = paragraph_FontId;
895 } 896 }
896 } 897 }
diff --git a/src/prefs.c b/src/prefs.c
index ea0717e5..673470d6 100644
--- a/src/prefs.c
+++ b/src/prefs.c
@@ -64,6 +64,7 @@ void init_Prefs(iPrefs *d) {
64 d->gemtextAnsiEscapes = iFalse; 64 d->gemtextAnsiEscapes = iFalse;
65 d->monospaceGemini = iFalse; 65 d->monospaceGemini = iFalse;
66 d->monospaceGopher = iFalse; 66 d->monospaceGopher = iFalse;
67 d->boldLinkVisited = iTrue;
67 d->boldLinkDark = iTrue; 68 d->boldLinkDark = iTrue;
68 d->boldLinkLight = iTrue; 69 d->boldLinkLight = iTrue;
69 d->lineWidth = 38; 70 d->lineWidth = 38;
diff --git a/src/prefs.h b/src/prefs.h
index a44e98b7..70846be4 100644
--- a/src/prefs.h
+++ b/src/prefs.h
@@ -91,6 +91,7 @@ struct Impl_Prefs {
91 iBool gemtextAnsiEscapes; 91 iBool gemtextAnsiEscapes;
92 iBool monospaceGemini; 92 iBool monospaceGemini;
93 iBool monospaceGopher; 93 iBool monospaceGopher;
94 iBool boldLinkVisited;
94 iBool boldLinkDark; 95 iBool boldLinkDark;
95 iBool boldLinkLight; 96 iBool boldLinkLight;
96 int lineWidth; 97 int lineWidth;
diff --git a/src/ui/documentwidget.c b/src/ui/documentwidget.c
index b2594997..8fefb95c 100644
--- a/src/ui/documentwidget.c
+++ b/src/ui/documentwidget.c
@@ -2173,6 +2173,7 @@ static iBool handleMediaCommand_DocumentWidget_(iDocumentWidget *d, const char *
2173 body_GmRequest(req->req), 2173 body_GmRequest(req->req),
2174 allowHide_MediaFlag); 2174 allowHide_MediaFlag);
2175 redoLayout_GmDocument(d->doc); 2175 redoLayout_GmDocument(d->doc);
2176 iZap(d->visibleRuns); /* pointers invalidated */
2176 updateVisible_DocumentWidget_(d); 2177 updateVisible_DocumentWidget_(d);
2177 invalidate_DocumentWidget_(d); 2178 invalidate_DocumentWidget_(d);
2178 refresh_Widget(as_Widget(d)); 2179 refresh_Widget(as_Widget(d));
diff --git a/src/ui/util.c b/src/ui/util.c
index 1ebdd3b3..3b146155 100644
--- a/src/ui/util.c
+++ b/src/ui/util.c
@@ -2549,22 +2549,6 @@ iWidget *makePreferences_Widget(void) {
2549 addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.font.monodoc}"))); 2549 addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.font.monodoc}")));
2550 addFontButtons_(values, "monodoc"); 2550 addFontButtons_(values, "monodoc");
2551 addDialogPadding_(headings, values); 2551 addDialogPadding_(headings, values);
2552 addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.boldlink}")));
2553 iWidget *boldLink = new_Widget(); {
2554 /* TODO: Add a utility function for this type of toggles? (also for above) */
2555 iWidget *tog;
2556 setTextCStr_LabelWidget(
2557 addChild_Widget(boldLink, tog = iClob(makeToggle_Widget("prefs.boldlink.dark"))),
2558 "${prefs.boldlink.dark}");
2559 setFlags_Widget(tog, fixedWidth_WidgetFlag, iFalse);
2560 updateSize_LabelWidget((iLabelWidget *) tog);
2561 setTextCStr_LabelWidget(
2562 addChild_Widget(boldLink, tog = iClob(makeToggle_Widget("prefs.boldlink.light"))),
2563 "${prefs.boldlink.light}");
2564 setFlags_Widget(tog, fixedWidth_WidgetFlag, iFalse);
2565 updateSize_LabelWidget((iLabelWidget *) tog);
2566 }
2567 addChildFlags_Widget(values, iClob(boldLink), arrangeHorizontal_WidgetFlag | arrangeSize_WidgetFlag);
2568 addDialogToggle_(headings, values, "${prefs.gemtext.ansi}", "prefs.gemtext.ansi"); 2552 addDialogToggle_(headings, values, "${prefs.gemtext.ansi}", "prefs.gemtext.ansi");
2569 addDialogToggle_(headings, values, "${prefs.font.smooth}", "prefs.font.smooth"); 2553 addDialogToggle_(headings, values, "${prefs.font.smooth}", "prefs.font.smooth");
2570 addDialogPadding_(headings, values); 2554 addDialogPadding_(headings, values);
@@ -2604,6 +2588,27 @@ iWidget *makePreferences_Widget(void) {
2604 } 2588 }
2605 addChildFlags_Widget(values, iClob(quote), arrangeHorizontal_WidgetFlag | arrangeSize_WidgetFlag); 2589 addChildFlags_Widget(values, iClob(quote), arrangeHorizontal_WidgetFlag | arrangeSize_WidgetFlag);
2606 addDialogToggle_(headings, values, "${prefs.biglede}", "prefs.biglede"); 2590 addDialogToggle_(headings, values, "${prefs.biglede}", "prefs.biglede");
2591 addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.boldlink}")));
2592 iWidget *boldLink = new_Widget(); {
2593 /* TODO: Add a utility function for this type of toggles? (also for above) */
2594 iWidget *tog;
2595 setTextCStr_LabelWidget(
2596 addChild_Widget(boldLink, tog = iClob(makeToggle_Widget("prefs.boldlink.visited"))),
2597 "${prefs.boldlink.visited}");
2598 setFlags_Widget(tog, fixedWidth_WidgetFlag, iFalse);
2599 updateSize_LabelWidget((iLabelWidget *) tog);
2600 setTextCStr_LabelWidget(
2601 addChild_Widget(boldLink, tog = iClob(makeToggle_Widget("prefs.boldlink.dark"))),
2602 "${prefs.boldlink.dark}");
2603 setFlags_Widget(tog, fixedWidth_WidgetFlag, iFalse);
2604 updateSize_LabelWidget((iLabelWidget *) tog);
2605 setTextCStr_LabelWidget(
2606 addChild_Widget(boldLink, tog = iClob(makeToggle_Widget("prefs.boldlink.light"))),
2607 "${prefs.boldlink.light}");
2608 setFlags_Widget(tog, fixedWidth_WidgetFlag, iFalse);
2609 updateSize_LabelWidget((iLabelWidget *) tog);
2610 }
2611 addChildFlags_Widget(values, iClob(boldLink), arrangeHorizontal_WidgetFlag | arrangeSize_WidgetFlag);
2607 addDialogToggle_(headings, values, "${prefs.plaintext.wrap}", "prefs.plaintext.wrap"); 2612 addDialogToggle_(headings, values, "${prefs.plaintext.wrap}", "prefs.plaintext.wrap");
2608 addDialogToggle_(headings, values, "${prefs.collapsepreonload}", "prefs.collapsepreonload"); 2613 addDialogToggle_(headings, values, "${prefs.collapsepreonload}", "prefs.collapsepreonload");
2609 addDialogPadding_(headings, values); 2614 addDialogPadding_(headings, values);