From f8d3277a6f35b70fe3670ff790ecdca3fc33a8c7 Mon Sep 17 00:00:00 2001 From: erinn Date: Thu, 26 Nov 2020 16:30:54 -0800 Subject: [PATCH] feedback fixes to input box --- qml/main.qml | 28 ++------------- qml/overlays/BulletinOverlay.qml | 1 - qml/overlays/ChatOverlay.qml | 1 - qml/overlays/ListOverlay.qml | 1 - qml/overlays/MembershipOverlay.qml | 1 - qml/widgets/MessageEditor.qml | 57 ++---------------------------- qml/widgets/Overlay.qml | 1 - 7 files changed, 5 insertions(+), 85 deletions(-) diff --git a/qml/main.qml b/qml/main.qml index 6678e9b2..6ef50a17 100644 --- a/qml/main.qml +++ b/qml/main.qml @@ -7,7 +7,6 @@ import QtQuick.Window 2.11 import "opaque" import "opaque/fonts" -import "opaque/fonts/Twemoji.js" as T import "opaque/fonts/MutantStandard.js" as Mutant import "opaque/theme" @@ -36,37 +35,16 @@ ApplicationWindow { source: "qrc:/qml/opaque/fonts/AdobeBlank.ttf" } - - function parse(text, size, isntEditable) { // REPLACE EMOJI WITH TAGS - T.twemoji.base = gcd.assetPath + "twemoji/" - T.twemoji.ext = ".png" - T.twemoji.size = "72x72" - T.twemoji.className = "\" height=\""+size+"\" width=\""+size - var retText = Utils.htmlEscaped(text)//T.twemoji.parse(Utils.htmlEscaped(text))// - retText = retText.replace(/\n/g,"
") + var retText = Utils.htmlEscaped(text) + retText = retText.replace(/\n/g,"
").replace(/\s\s/g, "  ") // mutant standard stickers - if (isntEditable) retText = Mutant.standard.parse(retText) + if (isntEditable) retText = Mutant.standard.parse(retText, 1.5 * gcd.themeScale * Theme.chatSize) return retText } - function restoreEmoji(text) { // REPLACE TAGS WITH EMOJI - var re = RegExp('', 'g') - var arr - var newtext = text - while (arr = re.exec(text)) { - var pieces = arr[1].split("-") - var replacement = "" - for (var i = 0; i < pieces.length; i++) { - replacement += T.twemoji.convert.fromCodePoint(pieces[i]) - } - newtext = newtext.replace(arr[0], replacement) - } - return newtext - } - function ptToPx(pt) { return Screen.pixelDensity * 25.4 * pt / 72 } diff --git a/qml/overlays/BulletinOverlay.qml b/qml/overlays/BulletinOverlay.qml index 90bf89ce..20737d6c 100644 --- a/qml/overlays/BulletinOverlay.qml +++ b/qml/overlays/BulletinOverlay.qml @@ -7,7 +7,6 @@ import QtQuick.Layouts 1.3 import "../opaque" as Opaque -import "../opaque/fonts/Twemoji.js" as T import "../opaque/styles" import "../utils.js" as Utils diff --git a/qml/overlays/ChatOverlay.qml b/qml/overlays/ChatOverlay.qml index 4e0e68a1..e30a0d17 100644 --- a/qml/overlays/ChatOverlay.qml +++ b/qml/overlays/ChatOverlay.qml @@ -6,7 +6,6 @@ import QtQuick.Layouts 1.3 import "../opaque" as Opaque import "../opaque/controls" as Awesome -import "../opaque/fonts/Twemoji.js" as T import "../utils.js" as Utils import "../widgets" as W import "../opaque/theme" diff --git a/qml/overlays/ListOverlay.qml b/qml/overlays/ListOverlay.qml index 0fcd1e64..875051ce 100644 --- a/qml/overlays/ListOverlay.qml +++ b/qml/overlays/ListOverlay.qml @@ -7,7 +7,6 @@ import QtQuick.Layouts 1.3 import "../opaque" as Opaque import "../opaque/controls" as Awesome -import "../opaque/fonts/Twemoji.js" as T import "../utils.js" as Utils import "../opaque/styles" import "../opaque/theme" diff --git a/qml/overlays/MembershipOverlay.qml b/qml/overlays/MembershipOverlay.qml index 75025398..7a65302c 100644 --- a/qml/overlays/MembershipOverlay.qml +++ b/qml/overlays/MembershipOverlay.qml @@ -7,7 +7,6 @@ import QtQuick.Layouts 1.3 import "../opaque" import "../opaque/controls" as Awesome -import "../opaque/fonts/Twemoji.js" as T import "../opaque/styles" import "../utils.js" as Utils import "../widgets" diff --git a/qml/widgets/MessageEditor.qml b/qml/widgets/MessageEditor.qml index db56319e..4d1da732 100644 --- a/qml/widgets/MessageEditor.qml +++ b/qml/widgets/MessageEditor.qml @@ -6,7 +6,6 @@ import QtQuick.Layouts 1.3 import "../opaque" as Opaque import "../opaque/controls" as Awesome -import "../opaque/fonts/Twemoji.js" as T import "../utils.js" as Utils import "../widgets" import "../opaque/theme" @@ -119,66 +118,14 @@ ColumnLayout { property int previousCursor Keys.onReturnPressed: { // CTRL+ENTER = LINEBREAK // TODO: Broken - if ((event.modifiers & Qt.ControlModifier) && gcd.os != "android") { - txtMessage.insert(txtMessage.cursorPosition, "
") + if ((event.modifiers & Qt.ShiftModifier) && gcd.os != "android") { + txtMessage.insert(txtMessage.cursorPosition, "\n") } else if (event.modifiers == Qt.NoModifier) { btnSend.clicked() } } - // welcome to the emoji parser! it is horrifying code that needs to leave in - // while also stripping any other tag, including other images. - // TODO: this probably breaks if people actually do want to paste html onTextChanged: { - if (gcd.os == "android") { - return - } - - // we're taking advantage of TextEdit.getText()'s parsing capability, which means occasionally - // passing text into it to be filtered. this prevents recursive calls putting us into an - // infinite loop - if (skipOneUpdate) { - skipOneUpdate = false - return - } - - previousCursor = cursorPosition - //console.log("onTextChanged() at position " + previousCursor) - - //console.log("1: " + txtMessage.getText(0, txtMessage.text.length)) - - // convert tags back to their emoji form - // Then parse out the rest of the HTML - var nt = restoreEmoji(txtMessage.text) - if (nt != txtMessage.text) { - skipOneUpdate = true - txtMessage.text = nt - } - - //console.log("2: " + txtMessage.getText(0, txtMessage.text.length)) - var preserveSpaces = txtMessage.text.replace(/
/g,"[:newline:]"); - if (preserveSpaces != txtMessage.text) { - skipOneUpdate = true - txtMessage.text = preserveSpaces - } - // strip all HTML tags - var theText = Utils.htmlEscaped(txtMessage.getText(0, txtMessage.text.length)) - //console.log("3: " + theText) - - // convert emoji back to tags - nt = parse(theText, 10) - //console.log("4: " + nt) - - // preserve double spacing - nt = nt.replace(/\s\s/g, "  "); - nt = nt.replace(/\[\:newline\:\]/g, "
"); - - // then we actually put the updated text in - skipOneUpdate = true - txtMessage.text = nt - - txtMessage.cursorPosition = previousCursor - // autoscroll down only when the scrollbar is already all the way down if (flkMessage.contentY + flkMessage.height >= flkMessage.contentHeight - txtMessage.height && flkMessage.contentHeight > flkMessage.height) { flkMessage.contentY = flkMessage.contentHeight - flkMessage.height diff --git a/qml/widgets/Overlay.qml b/qml/widgets/Overlay.qml index 3334258b..b3c811a4 100644 --- a/qml/widgets/Overlay.qml +++ b/qml/widgets/Overlay.qml @@ -6,7 +6,6 @@ import QtQuick.Layouts 1.3 import "../opaque" as Opaque import "../opaque/controls" as Awesome -import "../opaque/fonts/Twemoji.js" as T import "../utils.js" as Utils import "../widgets" import "../opaque/theme"