diff --git a/CMakeLists.txt b/CMakeLists.txt index 2f797446..e6650908 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,20 +18,20 @@ cmake_minimum_required (VERSION 3.9) project (Lagrange - VERSION 1.17.3 + VERSION 1.17.4 DESCRIPTION "A Beautiful Gemini Client" LANGUAGES C ) set (COPYRIGHT_YEAR 2023) if (IOS) set (PROJECT_VERSION 1.17) - set (IOS_BUNDLE_VERSION 3) - set (IOS_BUILD_DATE "2023-10-21") + set (IOS_BUNDLE_VERSION 4) + set (IOS_BUILD_DATE "2023-11-04") endif () if (ANDROID) set (PROJECT_VERSION 1.17) - set (ANDROID_BUILD_VERSION b23) # remember to update Gradle, AndroidManifest.xml - set (ANDROID_BUILD_DATE "2023-10-21") + set (ANDROID_BUILD_VERSION b24) # remember to update Gradle, AndroidManifest.xml + set (ANDROID_BUILD_DATE "2023-11-04") endif () # Load modules from the source tree diff --git a/po/ie.po b/po/ie.po index dac53311..ae12845a 100644 --- a/po/ie.po +++ b/po/ie.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: jaakko.keranen@iki.fi\n" "POT-Creation-Date: 2023-01-29 07:54+0000\n" -"PO-Revision-Date: 2023-05-20 05:54+0000\n" +"PO-Revision-Date: 2023-11-10 22:14+0000\n" "Last-Translator: Olga Smirnova \n" "Language-Team: Occidental \n" @@ -576,8 +576,8 @@ msgstr "Li recivet certificat es expirat E por un íncorrect dominia." msgid "dlg.certimport.help" msgstr "" -"Colla un PEM-codificat certificat e/o un clave privat,\n" -"o fa cader un file .crt o .key al fenestre." +"Colla un PEM-codificat certificat e/o un clave privat, o fa cader un file ." +"crt o .key al fenestre." msgid "dlg.certimport.notfound" msgstr "Null certificat o clave privat esset trovat." @@ -900,7 +900,7 @@ msgstr "Verificat de CA" #, c-format msgid "dlg.input.prompt" -msgstr "Ples provider li intrada por %s:" +msgstr "Provide li intrada por %s:" msgid "heading.save" msgstr "File sta gardat" @@ -1418,7 +1418,7 @@ msgid "menu.split.merge" msgstr "Reunir" msgid "menu.view.split" -msgstr "Fender li vise…" +msgstr "Fender li vise" msgid "dlg.newident.date.example" msgstr "" @@ -1714,7 +1714,7 @@ msgid "bookmark.export.format.linklines" msgstr "Chascun ligament representa un marca-págine." msgid "dlg.upload.id.default" -msgstr "Predefinit" +msgstr "Identité predefinit" msgid "bookmark.export.title.tag" msgstr "Etiquettes de marca-págines" @@ -2168,10 +2168,10 @@ msgid "prefs.tabwidth" msgstr "Largore del tabulator:" msgid "menu.export" -msgstr "Exportar li data de usator" +msgstr "Exportar" msgid "menu.import" -msgstr "Importar li data de usator…" +msgstr "Importar…" msgid "menu.paste.go" msgstr "Collar e ear" @@ -2314,8 +2314,9 @@ msgstr "Marcar elementes ad-infra quam leet" msgid "userdata.help" msgstr "" "Archives del data de usator contene li diarium de navigation, identitás, " -"marca-págines, parametres de sites e fingre-printes de fidet certificates. " -"On posse usar les por preservation e por transferter data inter aparates." +"marca-págines, fragmentes, parametres de sites e fingre-printes de fidet " +"certificates. On posse usar les por preservation e por transferter data " +"inter aparates." msgid "menu.viewformat.gemini" msgstr "Viser quam Gemtext" @@ -2546,3 +2547,142 @@ msgstr "Ucrainan" msgid "prefs.redirect.allowscheme" msgstr "Redirectiones quel cambia li schema:" + +msgid "menu.bookmark.addtofolder" +msgstr "Adjunter un marca-págine a un fólder:" + +msgid "dlg.import.intofolder" +msgstr "Adjunter a un fólder:" + +msgid "heading.upload.dest" +msgstr "Adresse" + +msgid "dlg.import.notfound" +msgstr "Null ligamentes trovat sur ti págine." + +msgid "prefs.doctheme.name.vibrantlight" +msgstr "Vibrant lucid" + +msgid "menu.snip.prefs" +msgstr "Configurar…" + +msgid "heading.snip.new" +msgstr "Nov fragment" + +msgid "heading.snip.edit" +msgstr "Modificar li fragment" + +msgid "menu.foldall" +msgstr "Contraher omni" + +msgid "menu.unfoldall" +msgstr "Expander omni" + +msgid "menu.userdata" +msgstr "Data de usator" + +msgid "menu.paste.snippet" +msgstr "Collar li fragment" + +msgid "menu.search" +msgstr "Serchar" + +msgid "menu.snippet.add" +msgstr "Fragment ex li selection…" + +msgid "menu.tools" +msgstr "Instrumentarium" + +msgid "menu.page.visitlinks" +msgstr "Marcar omni ligamentes quam visitat" + +msgid "menu.bookmark.movetofolder" +msgstr "Mover li marca-págine al fólder:" + +msgid "menu.input.clear" +msgstr "Vacuar li diarium" + +msgid "link.searchurl" +msgstr "Usar quam li adresse de sercha" + +msgid "dlg.import.headings" +msgstr "Subfólderes secun li rubricas:" + +msgid "link.snippet" +msgstr "Fragment ex un ligament…" + +msgid "import.userdata.snippets" +msgstr "Fragmentes:" + +# Interpret as "Results from snippets..." +msgid "heading.lookup.snippets" +msgstr "FRAGMENTES" + +msgid "heading.prefs.snip" +msgstr "Fragmentes" + +msgid "collapse.never" +msgstr "Nequande" + +msgid "collapse.notbydefault" +msgstr "Manualmen" + +msgid "collapse.bydefault" +msgstr "Pos carga" + +msgid "prefs.collapsepre" +msgstr "Contraher formatat textu:" + +# Operating system's UI accent color. +msgid "prefs.accent.system" +msgstr "Del sistema" + +msgid "prefs.feedinterval" +msgstr "Actualisar feedes chascun:" + +msgid "prefs.feedinterval.manual" +msgstr "Manualmen" + +# A "snippet query" is where the user types (for instance) "!w orange" in the navbar URL field to look up the word "orange" with the previously configured snippet "!w" that might expand into a Wikipedia search URL. +msgid "keys.bang" +msgstr "Usar un abbreviat adresse" + +msgid "error.showutf8" +msgstr "UTF-8 detectet automaticmen" + +msgid "error.showutf8.msg" +msgstr "" +"Li tip de medie de ti págine ne esset reconosset ma it es un valid textu in " +"codification UTF-8." + +msgid "sniped.new" +msgstr "Nov fragment" + +msgid "sniped.help" +msgstr "" +"Fragmentes, nómines de quel comensa per ! (p.ex «!w»), posse esser usat quam " +"abbreviat adresses." + +msgid "menu.snip.edit" +msgstr "Modificar…" + +msgid "menu.snip.clipboard" +msgstr "Copiar al paperiere" + +msgid "menu.snip.delete" +msgstr "Remover" + +msgid "snip.content" +msgstr "Contenete:" + +msgid "snip.accept" +msgstr "Gardar li fragment" + +msgid "collapse.always" +msgstr "Sempre" + +msgid "prefs.editor.highlight" +msgstr "Coloration de sintaxe:" + +msgid "snip.name" +msgstr "Nómine:" diff --git a/po/it.po b/po/it.po index 1aa89c72..26ba3c62 100644 --- a/po/it.po +++ b/po/it.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: jaakko.keranen@iki.fi\n" "POT-Creation-Date: 2023-01-29 07:54+0000\n" -"PO-Revision-Date: 2023-10-24 20:14+0000\n" +"PO-Revision-Date: 2023-11-13 20:14+0000\n" "Last-Translator: Omar Polo \n" "Language-Team: Italian \n" "Language: it\n" @@ -443,7 +443,7 @@ msgid "link.bookmark" msgstr "Aggiungi Link ai Segnalibri…" msgid "link.browser" -msgstr "Apri link nel Browser di Default" +msgstr "Apri link nel Browser Predefinito" msgid "pageinfo.domain.match" msgstr "Il nome del dominio concide" @@ -493,7 +493,7 @@ msgstr "Cancella" #, c-format msgid "dlg.openlink.confirm" msgstr "" -"Aprire questo link nel browser di default?\n" +"Aprire questo link nel browser predefinito?\n" "%s%s" msgid "link.download" @@ -553,8 +553,8 @@ msgstr "Il certificato ricevuto è scaduto il %s." msgid "dlg.certimport.help" msgstr "" -"Incolla un certificato in fromato PEM e/o una chiave privata,\n" -"o trascina sulla finestra un file .crt/.key." +"Incolla un certificato in fromato PEM e/o una chiave privata, o trascina " +"sulla finestra un file .crt/.key." msgid "dlg.certimport.nocert" msgstr "Senza Certificato" @@ -636,7 +636,7 @@ msgstr "Dimensione del file:" # Interpret as "Results from history..." msgid "heading.lookup.history" -msgstr "STORICO" +msgstr "CRONOLOGIA" msgid "upload.mime" msgstr "Tipo MIME:" @@ -1336,7 +1336,7 @@ msgid "error.cgi" msgstr "Errore CGI" msgid "keys.bottom" -msgstr "Salta in fondo" +msgstr "Salta in Basso" msgid "gempub.meta.pubdate" msgstr "Data di pubblicazione" @@ -1444,7 +1444,7 @@ msgid "dlg.upload.id.none" msgstr "Nessuna" msgid "dlg.upload.id.default" -msgstr "Default" +msgstr "Identità Predefinita" msgid "menu.upload.export" msgstr "Esporta Testo" @@ -1507,13 +1507,13 @@ msgid "prefs.proxy.gopher" msgstr "Proxy Gopher:" msgid "menu.binding.reset" -msgstr "Reimposta i Default" +msgstr "Ripristina le impostazioni predefinite" msgid "archive.exit" msgstr "Esci dall'archivio" msgid "keys.top" -msgstr "Torna in cima" +msgstr "Torna in Cima" msgid "keys.scroll.halfpage.down" msgstr "Scorri in basso di metà pagina" @@ -2267,7 +2267,7 @@ msgstr "Archivio Dati dell'Utente" msgid "userdata.help" msgstr "" -"Gli archivi dei dati dell'utente contengono lo storico di navigazione, le " +"Gli archivi dei dati dell'utente contengono la cronologia di navigazione, le " "identità, i segnalibri, i frammenti di testo, le impostazioni per-sito e i " "fingerprint dei certificati dei server fidati. Possono essere salvati come " "backup ed essere usati per trasferire dati tra i dispositivi." @@ -2304,7 +2304,7 @@ msgid "import.userdata.idents" msgstr "Identità:" msgid "import.userdata.history" -msgstr "Storico:" +msgstr "Cronologia:" msgid "import.userdata.trusted" msgstr "Certificati Fidati:" @@ -2616,3 +2616,136 @@ msgstr "Strumenti" msgid "menu.page.visitlinks" msgstr "Segna tutti i link come Visitati" + +msgid "sniped.new" +msgstr "Nuovo Frammento" + +msgid "menu.snip.edit" +msgstr "Modifica…" + +msgid "heading.snip.new" +msgstr "Nuovo Frammento" + +msgid "menu.snip.prefs" +msgstr "Configura…" + +msgid "menu.snip.delete" +msgstr "Cancella" + +msgid "snip.name" +msgstr "Nome:" + +msgid "import.userdata.snippets" +msgstr "Frammenti:" + +# Interpret as "Results from snippets..." +msgid "heading.lookup.snippets" +msgstr "FRAMMENTI" + +msgid "menu.input.unsetprompt" +msgstr "Non supporre che questo URL richieda input" + +msgid "snip.content" +msgstr "Contenuto:" + +msgid "heading.snip.edit" +msgstr "Modifica Frammento" + +msgid "menu.snip.clipboard" +msgstr "Copia nella Clipboard" + +msgid "heading.prefs.snip" +msgstr "Frammenti" + +msgid "prefs.collapsepre" +msgstr "Collassa i pre-formattati:" + +msgid "collapse.bydefault" +msgstr "Al Caricamento della Pagina" + +msgid "collapse.notbydefault" +msgstr "Manualmente" + +msgid "collapse.never" +msgstr "Mai" + +# Operating system's UI accent color. +msgid "prefs.accent.system" +msgstr "Sistema" + +msgid "prefs.feedinterval.manual" +msgstr "Manuale" + +msgid "prefs.feedinterval" +msgstr "Intervallo di aggiornamento dei Feed:" + +msgid "prefs.doctheme.name.vibrantlight" +msgstr "Chiaro Vibrante" + +# A "snippet query" is where the user types (for instance) "!w orange" in the navbar URL field to look up the word "orange" with the previously configured snippet "!w" that might expand into a Wikipedia search URL. +msgid "keys.bang" +msgstr "Inserisci il frammento di una ricerca" + +msgid "sniped.help" +msgstr "" +"Frammenti il cui nome inizia con un punto esclamativo (per esempio \"!w\") " +"possono essere usati nel campo degli URL come scorciatoia per la ricerca." + +msgid "snip.accept" +msgstr "Salva Frammento" + +msgid "menu.foldall" +msgstr "Ripiega Tutti" + +msgid "menu.unfoldall" +msgstr "Dispiega Tutti" + +msgid "menu.snippet.add" +msgstr "Frammento dalla Selezione…" + +msgid "menu.bookmark.addtofolder" +msgstr "Aggiungi Segnalibro alla Cartella:" + +msgid "menu.bookmark.movetofolder" +msgstr "Sposta Segnalibro nella Cartella:" + +msgid "dlg.import.intofolder" +msgstr "Agginugi alla Cartella:" + +msgid "menu.input.setprompt" +msgstr "Supponi che questo URL richieda input" + +msgid "menu.input.clear" +msgstr "Pulisci cronologia" + +msgid "dlg.import.notfound" +msgstr "Non ci sono link in questa pagina." + +msgid "link.searchurl" +msgstr "Usa come URL per la Ricerca" + +msgid "link.snippet" +msgstr "Frammento da Link…" + +msgid "menu.input.restore" +msgstr "Reimposta Precedenti:" + +msgid "dlg.import.headings" +msgstr "Sottocartelle dai Titoli:" + +msgid "heading.upload.dest" +msgstr "Indirizzo" + +msgid "collapse.always" +msgstr "Sempre" + +msgid "prefs.editor.highlight" +msgstr "Evidenzia sintassi:" + +msgid "error.showutf8" +msgstr "UTF-8 Rilevato Automaticamente" + +msgid "error.showutf8.msg" +msgstr "" +"Il formato della pagina non è stato riconosciuto ma è testo correttamente " +"codificato in UTF-8." diff --git a/res/about/android-version.gmi b/res/about/android-version.gmi index 8fc523ec..e0e87a0d 100644 --- a/res/about/android-version.gmi +++ b/res/about/android-version.gmi @@ -6,6 +6,15 @@ ``` # Release notes +## 1.17 (Beta 24) +* Tabs opened in background are immediately added to the URL history. +* Fixed initial scope of a created identity when using the default selection. +* Fixed current text selection extending during scrolling even after mouse button has been released. +* Fixed inline image loading indicator overdrawing itself, becoming unreadable. +* ANSI Cursor Forward control sequence ("CSI n C") is converted to a series of spaces, but only in preformatted text. +* Fixed parsing of ANSI SGR sequences with many attributes concatenated (e.g., 0;1;40;30). +* Updated UI translations. + ## 1.17 (Beta 23) * Added "Vibrant Light" color theme. * Improved readability of "Colorful Light" headings. diff --git a/res/about/ios-version.gmi b/res/about/ios-version.gmi index e83a1fe3..86605f67 100644 --- a/res/about/ios-version.gmi +++ b/res/about/ios-version.gmi @@ -6,6 +6,15 @@ ``` # Release notes +## 1.17 (4) +* Tabs opened in background are immediately added to the URL history. +* Fixed initial scope of a created identity when using the default selection. +* Fixed current text selection extending during scrolling even after mouse button has been released. +* Fixed inline image loading indicator overdrawing itself, becoming unreadable. +* ANSI Cursor Forward control sequence ("CSI n C") is converted to a series of spaces, but only in preformatted text. +* Fixed parsing of ANSI SGR sequences with many attributes concatenated (e.g., 0;1;40;30). +* Updated UI translations. + ## 1.17 (3) * Added "Vibrant Light" color theme. * Improved readability of "Colorful Light" headings. diff --git a/res/about/version.gmi b/res/about/version.gmi index d69da0ed..6c77b8a6 100644 --- a/res/about/version.gmi +++ b/res/about/version.gmi @@ -6,6 +6,14 @@ ``` # Release notes +## 1.17.4 +* Removed automatic horizontal scrolling of wide preformatted blocks. Instead, hold down the Shift key to scroll horizontally with the mouse wheel. +* Fixed an event processing issue where some events were not handled as expected, for instance when opening a link into split view the opened link was not highlighted. +* Fixed links not reacting to mouse hover after jumping to a heading from the Outline. +* Fixed input prompt behaving strangely after changing font size. (Lines are now forced to rewrap after changing the font.) +* Fixed mouse cursor not changing its shape in all open windows. +* Updated UI translations. + ## 1.17.3 * Fixed activating a pinned identity when opening a bookmark via the Bookmarks menu. * Fixed initial scope of a created identity when using the default selection. diff --git a/res/lang/ie.bin b/res/lang/ie.bin index 561342a0..accfaebb 100644 Binary files a/res/lang/ie.bin and b/res/lang/ie.bin differ diff --git a/res/lang/it.bin b/res/lang/it.bin index 4ae0f3d6..193d3605 100644 Binary files a/res/lang/it.bin and b/res/lang/it.bin differ diff --git a/src/ui/documentview.c b/src/ui/documentview.c index ad8b2e05..5009ce3f 100644 --- a/src/ui/documentview.c +++ b/src/ui/documentview.c @@ -598,6 +598,7 @@ void scrollTo_DocumentView(iDocumentView *d, int documentY, iBool centered) { documentY - (centered ? documentBounds_DocumentView(d).size.y / 2 : lineHeight_Text(paragraph_FontId))); clampScroll_DocumentView(d); + updateVisible_DocumentView(d); } void scrollToHeading_DocumentView(iDocumentView *d, const char *heading) { diff --git a/src/ui/documentwidget.c b/src/ui/documentwidget.c index 5bd8c9ea..7e05e289 100644 --- a/src/ui/documentwidget.c +++ b/src/ui/documentwidget.c @@ -4457,30 +4457,14 @@ static iBool processEvent_DocumentWidget_(iDocumentWidget *d, const SDL_Event *e postCommandf_App("zoom.delta arg:%d", amount.y > 0 ? 10 : -10); return iTrue; } - if (!isApple_Platform()) { - if (kmods == KMOD_SHIFT) { - /* Shift switches to horizontal scrolling mode. (macOS does this for us.) */ - iSwap(int, amount.x, amount.y); - } - else if (isFinished_SmoothScroll(&d->view->scrollY) && - d->view->hoverPre && - d->view->hoverPre->flags & wide_GmRunFlag && - isWideBlockScrollable_DocumentView(d->view, - documentBounds_DocumentView(d->view), - d->view->hoverPre)) { - /* Do a horizontal scroll over a wide block when not vertically scrolling. */ - iSwap(int, amount.x, amount.y); - } + if (!isApple_Platform() && kmods == KMOD_SHIFT) { + /* Shift switches to horizontal scrolling mode. (macOS does this for us.) */ + iSwap(int, amount.x, amount.y); } if (amount.x) { - iBool isAtEnd; scrollWideBlock_DocumentView(view, mouseCoord, -3 * amount.x * lineHeight_Text(paragraph_FontId), - 167, &isAtEnd); - if (isAtEnd && !kmods) { - /* Can't scroll any more, go the other way. */ - amount.y = amount.x; - } + 167, NULL); } if (amount.y) { smoothScroll_DocumentView(view, diff --git a/src/ui/inputwidget.c b/src/ui/inputwidget.c index 9ba16d59..5e14bac2 100644 --- a/src/ui/inputwidget.c +++ b/src/ui/inputwidget.c @@ -929,6 +929,7 @@ static void updateAfterVisualOffsetChange_InputWidget_(iInputWidget *d, iRoot *r void setFont_InputWidget(iInputWidget *d, int fontId) { d->font = fontId; + d->lastUpdateWidth = 0; /* force a rewrapping */ updateMetrics_InputWidget_(d); } diff --git a/src/ui/root.c b/src/ui/root.c index edce56b4..8349280d 100644 --- a/src/ui/root.c +++ b/src/ui/root.c @@ -666,9 +666,6 @@ iBool handleRootCommands_Widget(iWidget *root, const char *cmd) { refresh_Widget(findWidget_App("toolbar")); return iFalse; } - else if (handleCommand_App(cmd)) { - return iTrue; - } return iFalse; } diff --git a/src/ui/util.c b/src/ui/util.c index af31f02e..c8d5220f 100644 --- a/src/ui/util.c +++ b/src/ui/util.c @@ -1848,7 +1848,7 @@ iWidget *dropdownMenu_Widget(const iWidget *dropButton) { } } } - iAssert(menu); + //iAssert(menu); return menu; } diff --git a/src/ui/window.c b/src/ui/window.c index afb040c6..3066db61 100644 --- a/src/ui/window.c +++ b/src/ui/window.c @@ -1435,7 +1435,7 @@ iBool processEvent_Window(iWindow *d, const SDL_Event *ev) { } } } - if (event.type == SDL_MOUSEMOTION) { + if (event.type == SDL_MOUSEMOTION && event.motion.windowID == id_Window(d)) { applyCursor_Window_(d); } return wasUsed;