From 8365ec581705654326f5b31b0879286a89fd32f1 Mon Sep 17 00:00:00 2001 From: Luka Kresoja <57074484+LukeOnuke@users.noreply.github.com> Date: Sun, 14 Nov 2021 23:22:02 +0100 Subject: [PATCH] Fix CONTROL + P not printing and better input sanitisation --- .github/workflows/main.yml | 8 ++++---- .../com/lukeonuke/lmark/gui/MainAppWindow.java | 5 +++++ .../com/lukeonuke/lmark/gui/elements/Markdown.java | 14 +++++++++----- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e4a225d..69df5ff 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -7,7 +7,7 @@ on: branches: [ main ] env: - VERSION: 2.0.0 + VERSION: 2.1.0 jobs: build-windows: @@ -29,7 +29,7 @@ jobs: - run: mkdir jpackage-temp && cp target/lmark.jar jpackage-temp - name: jpackage - run : jpackage --type msi --name lmark --input jpackage-temp/ --main-jar lmark.jar --main-class com.lukeonuke.lmark.LMark --verbose --dest staging/app --description "lmark, the opensource markdown editor" --copyright "lukeonuke MIT 2021" --icon src/main/resources/icon.ico --vendor "LukeOnuke and contributors" --win-shortcut --win-menu --file-associations jpackage-configuration/FAmarkdown.properties + run : jpackage --type msi --name lmark --input jpackage-temp/ --main-jar lmark.jar --main-class com.lukeonuke.lmark.LMark --verbose --dest staging/app --description "lmark, the opensource markdown editor" --copyright "lukeonuke MIT 2021" --icon src/main/resources/icon.ico --vendor "LukeOnuke and contributors" --win-shortcut --win-menu --file-associations jpackage-configuration/FAmarkdown.properties --version 2.1.0 - uses: actions/upload-artifact@v1 with: name: WindowsPackage @@ -53,7 +53,7 @@ jobs: - run: mkdir jpackage-temp && cp target/lmark.jar jpackage-temp - name: jpackage - run : jpackage --name lmark --input jpackage-temp --main-jar lmark.jar --main-class com.lukeonuke.lmark.LMark --verbose --dest staging/app --description "lmark, the opensource markdown editor" --copyright "lukeonuke MIT 2021" --icon src/main/resources/icon.ico --linux-shortcut --vendor "LukeOnuke and contributors" --file-associations jpackage-configuration/FAmarkdown.properties + run : jpackage --name lmark --input jpackage-temp --main-jar lmark.jar --main-class com.lukeonuke.lmark.LMark --verbose --dest staging/app --description "lmark, the opensource markdown editor" --copyright "lukeonuke MIT 2021" --icon src/main/resources/icon.ico --linux-shortcut --vendor "LukeOnuke and contributors" --file-associations jpackage-configuration/FAmarkdown.properties --version 2.1.0 - uses: actions/upload-artifact@v1 with: name: LinuxPackage @@ -77,7 +77,7 @@ jobs: - run: mkdir jpackage-temp && cp target/lmark.jar jpackage-temp - name: jpackage - run : jpackage --name lmark --input jpackage-temp --main-jar lmark.jar --main-class com.lukeonuke.lmark.LMark --verbose --dest staging/app --description "lmark, the opensource markdown editor" --copyright "lukeonuke MIT 2021" --icon src/main/resources/icon.ico --vendor "LukeOnuke and contributors" --file-associations jpackage-configuration/FAmarkdown.properties + run : jpackage --name lmark --input jpackage-temp --main-jar lmark.jar --main-class com.lukeonuke.lmark.LMark --verbose --dest staging/app --description "lmark, the opensource markdown editor" --copyright "lukeonuke MIT 2021" --icon src/main/resources/icon.ico --vendor "LukeOnuke and contributors" --file-associations jpackage-configuration/FAmarkdown.properties --version 2.1.0 - uses: actions/upload-artifact@v1 with: diff --git a/src/main/java/com/lukeonuke/lmark/gui/MainAppWindow.java b/src/main/java/com/lukeonuke/lmark/gui/MainAppWindow.java index 7e0b6e5..7177734 100644 --- a/src/main/java/com/lukeonuke/lmark/gui/MainAppWindow.java +++ b/src/main/java/com/lukeonuke/lmark/gui/MainAppWindow.java @@ -119,6 +119,7 @@ public void show() { edit.setText(""); edit.textProperty().addListener((observableValue, s, t1) -> { markdown.setMDContents(edit.getText()); + if(edit.getCaretPosition() == edit.getLength() - 1) markdown.scrollTo(1D); if (!s.equals("")) tampered = true; updateTitle(); @@ -492,6 +493,10 @@ public void show() { if (keyEvent.isControlDown() && keyEvent.getCode().equals(KeyCode.T)) { titleFormat(edit); } + + if(keyEvent.isControlDown() && keyEvent.getCode().equals(KeyCode.P)){ + print(markdown); + } }); registry.registerRegistryChangeEvent(ApplicationConstants.PROPERTIES_AUTOSAVE_ENABLED, autosaveEvent -> { diff --git a/src/main/java/com/lukeonuke/lmark/gui/elements/Markdown.java b/src/main/java/com/lukeonuke/lmark/gui/elements/Markdown.java index 2fa9941..ad4b830 100644 --- a/src/main/java/com/lukeonuke/lmark/gui/elements/Markdown.java +++ b/src/main/java/com/lukeonuke/lmark/gui/elements/Markdown.java @@ -25,13 +25,12 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; -import org.w3c.dom.events.Event; -import org.w3c.dom.events.EventListener; import org.w3c.dom.events.EventTarget; import org.w3c.dom.html.HTMLAnchorElement; import java.io.File; import java.io.IOException; +import java.time.Instant; import java.util.ArrayList; import java.util.List; @@ -43,7 +42,7 @@ public class Markdown { private static final Parser parser; private double scrollY; private String contents; - private static MutableDataSet options = new MutableDataSet(); + private final static MutableDataSet options = new MutableDataSet(); final ThemeManager themeManager = ThemeManager.getInstance(); static { @@ -178,8 +177,12 @@ private void scroll(double y) { } private String filter(String string) { - return string.replace("", "") - .replace("", ""); + org.jsoup.nodes.Document document = Jsoup.parse(string.replace("", "") + .replace("", "")); + document.getElementsByTag("code").textNodes().forEach(textNode -> { + textNode.text(textNode.text().replace("<", "<")); + }); + return document.html(); } /** @@ -206,6 +209,7 @@ public String getPDFReadyDocument() { return document.html(); } + /** * Implements a bridge between the javascript on the web view and the java:tm: on ere * https://stackoverflow.com/questions/35985601/calling-a-java-method-from-a-javafx-webview