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