UI Twraks
- Double Spacing - Emoji + Spacing - linebreaks
This commit is contained in:
parent
a31a073847
commit
928ee5a76f
|
@ -37,7 +37,8 @@ ApplicationWindow {
|
||||||
T.twemoji.ext = ".png"
|
T.twemoji.ext = ".png"
|
||||||
T.twemoji.size = "72x72"
|
T.twemoji.size = "72x72"
|
||||||
T.twemoji.className = "\" height=\""+size+"\" width=\""+size
|
T.twemoji.className = "\" height=\""+size+"\" width=\""+size
|
||||||
return T.twemoji.parse(Utils.htmlEscaped(text))
|
var retText = T.twemoji.parse(Utils.htmlEscaped(text))
|
||||||
|
return retText.replace(/\n/g,"<br/>")
|
||||||
}
|
}
|
||||||
|
|
||||||
function restoreEmoji(text) { // REPLACE <IMG> TAGS WITH EMOJI
|
function restoreEmoji(text) { // REPLACE <IMG> TAGS WITH EMOJI
|
||||||
|
|
|
@ -168,6 +168,7 @@ ColumnLayout {
|
||||||
width: rectMessage.width
|
width: rectMessage.width
|
||||||
|
|
||||||
property bool skipOneUpdate: false
|
property bool skipOneUpdate: false
|
||||||
|
property int previousCursor
|
||||||
|
|
||||||
Keys.onReturnPressed: { // CTRL+ENTER = LINEBREAK
|
Keys.onReturnPressed: { // CTRL+ENTER = LINEBREAK
|
||||||
if ((event.modifiers & Qt.ControlModifier) && gcd.os != "android") {
|
if ((event.modifiers & Qt.ControlModifier) && gcd.os != "android") {
|
||||||
|
@ -185,8 +186,6 @@ ColumnLayout {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
//console.log("onTextChanged()")
|
|
||||||
|
|
||||||
// we're taking advantage of TextEdit.getText()'s parsing capability, which means occasionally
|
// 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
|
// passing text into it to be filtered. this prevents recursive calls putting us into an
|
||||||
// infinite loop
|
// infinite loop
|
||||||
|
@ -195,6 +194,9 @@ ColumnLayout {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
previousCursor = cursorPosition
|
||||||
|
//console.log("onTextChanged() at position " + previousCursor)
|
||||||
|
|
||||||
//console.log("1: " + txtMessage.getText(0, txtMessage.text.length))
|
//console.log("1: " + txtMessage.getText(0, txtMessage.text.length))
|
||||||
|
|
||||||
// convert <img> tags back to their emoji form
|
// convert <img> tags back to their emoji form
|
||||||
|
@ -206,7 +208,11 @@ ColumnLayout {
|
||||||
}
|
}
|
||||||
|
|
||||||
//console.log("2: " + txtMessage.getText(0, txtMessage.text.length))
|
//console.log("2: " + txtMessage.getText(0, txtMessage.text.length))
|
||||||
|
var preserveSpaces = txtMessage.text.replace(/<br \/>/g,"[:newline:]");
|
||||||
|
if (preserveSpaces != txtMessage.text) {
|
||||||
|
skipOneUpdate = true
|
||||||
|
txtMessage.text = preserveSpaces
|
||||||
|
}
|
||||||
// strip all HTML tags
|
// strip all HTML tags
|
||||||
var theText = Utils.htmlEscaped(txtMessage.getText(0, txtMessage.text.length))
|
var theText = Utils.htmlEscaped(txtMessage.getText(0, txtMessage.text.length))
|
||||||
//console.log("3: " + theText)
|
//console.log("3: " + theText)
|
||||||
|
@ -215,19 +221,15 @@ ColumnLayout {
|
||||||
nt = parse(theText, 10)
|
nt = parse(theText, 10)
|
||||||
//console.log("4: " + nt)
|
//console.log("4: " + nt)
|
||||||
|
|
||||||
|
// preserve double spacing
|
||||||
// first we need to update the cursor position to be the same distance from the end
|
nt = nt.replace(/\s\s/g, " ");
|
||||||
var oldcursor = txtMessage.cursorPosition
|
nt = nt.replace(/\[\:newline\:\]/g, "<br/>");
|
||||||
var oldlen = txtMessage.getText(0, txtMessage.text.length).length
|
|
||||||
|
|
||||||
// then we actually put the updated text in
|
// then we actually put the updated text in
|
||||||
skipOneUpdate = true
|
skipOneUpdate = true
|
||||||
txtMessage.text = nt
|
txtMessage.text = nt
|
||||||
|
|
||||||
// and then restore the cursor
|
txtMessage.cursorPosition = previousCursor
|
||||||
var newlen = txtMessage.getText(0, txtMessage.text.length).length
|
|
||||||
txtMessage.cursorPosition = newlen - (oldlen - oldcursor)
|
|
||||||
|
|
||||||
|
|
||||||
// autoscroll down only when the scrollbar is already all the way down
|
// 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) {
|
if (flkMessage.contentY + flkMessage.height >= flkMessage.contentHeight - txtMessage.height && flkMessage.contentHeight > flkMessage.height) {
|
||||||
|
@ -263,9 +265,11 @@ ColumnLayout {
|
||||||
onClicked: {
|
onClicked: {
|
||||||
if (txtMessage.text != "") {
|
if (txtMessage.text != "") {
|
||||||
txtHidden.text = restoreEmoji(txtMessage.text)
|
txtHidden.text = restoreEmoji(txtMessage.text)
|
||||||
var txt = txtHidden.getText(0, txtHidden.text.length).trim()
|
txtHidden.text = txtHidden.text.replace(/<br \/>/g,"[:newline:]");
|
||||||
|
var txt = txtHidden.text.trim()
|
||||||
if (txt.length > 0) {
|
if (txt.length > 0) {
|
||||||
var msg = JSON.stringify({"o":1, "d":txtHidden.getText(0, txtHidden.text.length)})
|
var rawText = txtHidden.getText(0, txtHidden.text.length)
|
||||||
|
var msg = JSON.stringify({"o":1, "d":rawText.replace(/\[\:newline\:\]/g,"\n")})
|
||||||
gcd.sendMessage(msg, nextMessageID++)
|
gcd.sendMessage(msg, nextMessageID++)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Reference in New Issue