diff --git a/qml/component/GenericBubble.qml b/qml/component/GenericBubble.qml index 90613ab76..1c2715729 100644 --- a/qml/component/GenericBubble.qml +++ b/qml/component/GenericBubble.qml @@ -17,6 +17,7 @@ Control { onSecondaryClicked: { messageContextMenu.row = messageRow messageContextMenu.model = model + messageContextMenu.selectedText = contentLabel.selectedText messageContextMenu.popup() } } diff --git a/qml/component/MessageDelegate.qml b/qml/component/MessageDelegate.qml index ecb10ccc7..af1d23151 100644 --- a/qml/component/MessageDelegate.qml +++ b/qml/component/MessageDelegate.qml @@ -72,6 +72,8 @@ RowLayout { TextEdit { Layout.fillWidth: true + id: contentLabel + text: (highlighted ? "" : "") + display visible: isText diff --git a/qml/form/RoomForm.qml b/qml/form/RoomForm.qml index 6afc2d167..0ace76f17 100644 --- a/qml/form/RoomForm.qml +++ b/qml/form/RoomForm.qml @@ -121,6 +121,7 @@ Item { verticalLayoutDirection: ListView.BottomToTop spacing: 8 + cacheBuffer: 200 flickDeceleration: 4096 boundsBehavior: Flickable.DragOverBounds @@ -130,7 +131,7 @@ Item { onContentYChanged: { // Check whether we're about to bump into the ceiling in 2 seconds var curVelocity = verticalVelocity // Snapshot the current speed - if(curVelocity < 0 && contentY + curVelocity * 2 < originY) + if(curVelocity < 0 && contentY - 5000 < originY) { currentRoom.getPreviousContent(50); } diff --git a/qml/menu/MessageContextMenu.qml b/qml/menu/MessageContextMenu.qml index a173c85d1..b9486c47e 100644 --- a/qml/menu/MessageContextMenu.qml +++ b/qml/menu/MessageContextMenu.qml @@ -4,6 +4,7 @@ import QtQuick.Controls 2.2 Menu { property var row: null property var model: null + property string selectedText readonly property bool isFile: model && (model.eventType === "video" || model.eventType === "audio" || model.eventType === "file" || model.eventType === "image") @@ -48,7 +49,7 @@ Menu { onTriggered: { inputField.clear() - inputField.insert(0, "> <" + model.author.id + "><" + model.eventId + "> " + model.message + "\n\n") + inputField.insert(0, "> <" + model.author.id + "><" + model.eventId + "> " + (selectedText != "" ? selectedText : model.message) + "\n\n") } } MenuItem { diff --git a/src/messageeventmodel.cpp b/src/messageeventmodel.cpp index 3b845a946..446c9f445 100644 --- a/src/messageeventmodel.cpp +++ b/src/messageeventmodel.cpp @@ -330,7 +330,7 @@ QVariant MessageEventModel::data(const QModelIndex& idx, int role) const { if (e.hasTextContent() && e.mimeType().name() != "text/plain") { static const QRegExp userPillRegExp( - "(.*)"); + "(.*)"); QString formattedStr( static_cast(e.content())->body); formattedStr.replace(userPillRegExp,