fix(desktop/chat)Adding custom syntax highligther to StatusChatInput

And disabling all previous text formatting

Closes #2920
Closes #3063
This commit is contained in:
Alexandra Betouni 2021-07-23 12:53:43 +03:00 committed by Iuri Matias
parent f82a23e361
commit 581557cf7e
2 changed files with 6 additions and 26 deletions

View File

@ -4,6 +4,7 @@ import QtGraphicalEffects 1.13
import QtQuick.Layouts 1.13 import QtQuick.Layouts 1.13
import QtMultimedia 5.13 import QtMultimedia 5.13
import QtQuick.Dialogs 1.3 import QtQuick.Dialogs 1.3
import DotherSide 0.1
import "../../imports" import "../../imports"
import "../../shared" import "../../shared"
import "../../app/AppLayouts/Chat/ChatColumn/samples" import "../../app/AppLayouts/Chat/ChatColumn/samples"
@ -217,7 +218,6 @@ Rectangle {
insertInTextInput(messageInputField.selectionEnd, wrapWith); insertInTextInput(messageInputField.selectionEnd, wrapWith);
messageInputField.deselect() messageInputField.deselect()
formatInputMessage()
} }
function unwrapSelection(unwrapWith, selectedTextWithFormationChars) { function unwrapSelection(unwrapWith, selectedTextWithFormationChars) {
if (messageInputField.selectionStart - messageInputField.selectionEnd === 0) return if (messageInputField.selectionStart - messageInputField.selectionEnd === 0) return
@ -233,7 +233,6 @@ Rectangle {
insertInTextInput(messageInputField.selectionStart, changedString) insertInTextInput(messageInputField.selectionStart, changedString)
messageInputField.deselect() messageInputField.deselect()
formatInputMessage()
} }
function getPlainText() { function getPlainText() {
@ -313,22 +312,6 @@ Rectangle {
} }
} }
function formatInputMessage() {
const posBeforeEnd = messageInputField.length - messageInputField.cursorPosition;
// Remove align center spans
// TODO fix Those spans are added automatically by QT when you press space after an emoji. They break the code formation process
// strikethrough
setFormatInInput(chatsModel.formatInputView.formatInputStrikeThrough, '<span style=" text-decoration: line-through;">', '</span>', '~', 2)
// bold
setFormatInInput(chatsModel.formatInputView.formatInputBold, '<b>', '</b>', '*', 2)
// code
setFormatInInput(chatsModel.formatInputView.formatInputCode, '<code>', '</code>', '`', 1)
// italic
setFormatInInput(chatsModel.formatInputView.formatInputItalic, '<i>', '</i>', '*', 1)
}
function onRelease(event) { function onRelease(event) {
if (event.key === Qt.Key_Backspace && textFormatMenu.opened) { if (event.key === Qt.Key_Backspace && textFormatMenu.opened) {
textFormatMenu.close() textFormatMenu.close()
@ -340,11 +323,6 @@ Rectangle {
const plainText = messageInputField.getText(0, messageInputField.length); const plainText = messageInputField.getText(0, messageInputField.length);
messageInputField.remove(0, messageInputField.length); messageInputField.remove(0, messageInputField.length);
insertInTextInput(0, plainText); insertInTextInput(0, plainText);
} else if (event.key === Qt.Key_Asterisk ||
event.key === Qt.Key_QuoteLeft ||
event.key === Qt.Key_Space ||
event.key === Qt.Key_AsciiTilde) {
formatInputMessage()
} }
if (event.key !== Qt.Key_Escape) { if (event.key !== Qt.Key_Escape) {
@ -856,11 +834,13 @@ Rectangle {
anchors.right: actions.left anchors.right: actions.left
anchors.rightMargin: Style.current.halfPadding anchors.rightMargin: Style.current.halfPadding
ScrollBar.horizontal.policy: ScrollBar.AlwaysOff ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
StatusSyntaxHighlighter {
quickTextDocument: messageInputField.textDocument
}
TextArea { TextArea {
property var lastClick: 0
id: messageInputField id: messageInputField
property var lastClick: 0
textFormat: Text.RichText textFormat: Text.RichText
font.pixelSize: 15 font.pixelSize: 15
font.family: Style.current.fontRegular.name font.family: Style.current.fontRegular.name

2
vendor/DOtherSide vendored

@ -1 +1 @@
Subproject commit 11adba22838f448b34645bed33fdec86848c50b4 Subproject commit 770a00ecb442ddcb0d7c52971f20fc78795849db