Have ChatDocumentHandler update ChatBarCache text
Have ChatDocumentHandler update ChatBarCache text so all text operations in the ChatBar go through it
This commit is contained in:
@@ -253,6 +253,7 @@ QQC2.Control {
|
|||||||
placeholderText: root.currentRoom.usesEncryption ? i18n("Send an encrypted message…") : root.currentRoom.mainCache.attachmentPath.length > 0 ? i18n("Set an attachment caption…") : i18n("Send a message…")
|
placeholderText: root.currentRoom.usesEncryption ? i18n("Send an encrypted message…") : root.currentRoom.mainCache.attachmentPath.length > 0 ? i18n("Set an attachment caption…") : i18n("Send a message…")
|
||||||
verticalAlignment: TextEdit.AlignVCenter
|
verticalAlignment: TextEdit.AlignVCenter
|
||||||
wrapMode: TextEdit.Wrap
|
wrapMode: TextEdit.Wrap
|
||||||
|
textFormat: TextEdit.MarkdownText
|
||||||
|
|
||||||
Accessible.description: placeholderText
|
Accessible.description: placeholderText
|
||||||
|
|
||||||
@@ -269,7 +270,6 @@ QQC2.Control {
|
|||||||
root.currentRoom.sendTypingNotification(textExists);
|
root.currentRoom.sendTypingNotification(textExists);
|
||||||
textExists ? repeatTimer.start() : repeatTimer.stop();
|
textExists ? repeatTimer.start() : repeatTimer.stop();
|
||||||
}
|
}
|
||||||
_private.chatBarCache.text = text;
|
|
||||||
}
|
}
|
||||||
onSelectedTextChanged: {
|
onSelectedTextChanged: {
|
||||||
if (selectedText.length > 0) {
|
if (selectedText.length > 0) {
|
||||||
|
|||||||
@@ -185,6 +185,15 @@ void ChatDocumentHandler::setTextItem(QQuickItem *textItem)
|
|||||||
m_highlighter->setDocument(document());
|
m_highlighter->setDocument(document());
|
||||||
if (m_textItem) {
|
if (m_textItem) {
|
||||||
connect(m_textItem, SIGNAL(cursorPositionChanged()), this, SLOT(updateCompletion()));
|
connect(m_textItem, SIGNAL(cursorPositionChanged()), this, SLOT(updateCompletion()));
|
||||||
|
if (document()) {
|
||||||
|
connect(document(), &QTextDocument::contentsChanged, this, [this]() {
|
||||||
|
if (m_room) {
|
||||||
|
m_room->cacheForType(m_type)->setText(getText());
|
||||||
|
int start = completionStartIndex();
|
||||||
|
m_completionModel->setText(getText().mid(start, cursorPosition() - start), getText().mid(start));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Q_EMIT textItemChanged();
|
Q_EMIT textItemChanged();
|
||||||
@@ -317,11 +326,11 @@ CompletionModel *ChatDocumentHandler::completionModel() const
|
|||||||
|
|
||||||
QString ChatDocumentHandler::getText() const
|
QString ChatDocumentHandler::getText() const
|
||||||
{
|
{
|
||||||
if (!m_room || m_type == ChatBarType::None) {
|
if (!document()) {
|
||||||
qCWarning(ChatDocumentHandling) << "getText called with no ChatBarCache available. ChatBarType: " << m_type << " Room: " << m_room;
|
qCWarning(ChatDocumentHandling) << "getText called with no QQuickTextDocument available.";
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
return m_room->cacheForType(m_type)->text();
|
return document()->toRawText();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChatDocumentHandler::pushMention(const Mention mention) const
|
void ChatDocumentHandler::pushMention(const Mention mention) const
|
||||||
|
|||||||
Reference in New Issue
Block a user