diff --git a/resources/qml/MessageInput.qml b/resources/qml/MessageInput.qml
index 8a5611df..ab37a3a8 100644
--- a/resources/qml/MessageInput.qml
+++ b/resources/qml/MessageInput.qml
@@ -188,8 +188,7 @@ Rectangle {
Keys.onShortcutOverride: event.accepted = (popup.opened && (event.key === Qt.Key_Escape || event.key === Qt.Key_Tab || event.key === Qt.Key_Enter || event.key === Qt.Key_Space))
Keys.onPressed: {
if (event.matches(StandardKey.Paste)) {
- room.input.paste(false);
- event.accepted = true;
+ event.accepted = room.input.tryPasteAttachment(false);
} else if (event.key == Qt.Key_Space) {
// close popup if user enters space after colon
if (cursorPosition == completerTriggeredAt + 1)
@@ -361,11 +360,6 @@ Rectangle {
}
Connections {
- function onInsertText(text) {
- messageInput.remove(messageInput.selectionStart, messageInput.selectionEnd);
- messageInput.insert(messageInput.cursorPosition, text);
- }
-
function onTextChanged(newText) {
messageInput.text = newText;
messageInput.cursorPosition = newText.length;
@@ -401,7 +395,7 @@ Rectangle {
anchors.fill: parent
acceptedButtons: Qt.MiddleButton
cursorShape: Qt.IBeamCursor
- onClicked: room.input.paste(true)
+ onPressed: (mouse) => mouse.accepted = room.input.tryPasteAttachment(true)
}
}
diff --git a/src/timeline/InputBar.cpp b/src/timeline/InputBar.cpp
index 4a3605bb..0f6472b8 100644
--- a/src/timeline/InputBar.cpp
+++ b/src/timeline/InputBar.cpp
@@ -101,8 +101,8 @@ InputVideoSurface::supportedPixelFormats(QAbstractVideoBuffer::HandleType type)
}
}
-void
-InputBar::paste(bool fromMouse)
+bool
+InputBar::tryPasteAttachment(bool fromMouse)
{
const QMimeData *md = nullptr;
@@ -113,14 +113,16 @@ InputBar::paste(bool fromMouse)
}
if (md)
- insertMimeData(md);
+ return insertMimeData(md);
+
+ return false;
}
-void
+bool
InputBar::insertMimeData(const QMimeData *md)
{
if (!md)
- return;
+ return false;
nhlog::ui()->debug("Got mime formats: {}",
md->formats().join(QStringLiteral(", ")).toStdString());
@@ -171,7 +173,7 @@ InputBar::insertMimeData(const QMimeData *md)
auto data = md->data(QStringLiteral("x-special/gnome-copied-files")).split('\n');
if (data.size() < 2) {
nhlog::ui()->warn("MIME format is malformed, cannot perform paste.");
- return;
+ return false;
}
for (int i = 1; i < data.size(); ++i) {
@@ -181,10 +183,13 @@ InputBar::insertMimeData(const QMimeData *md)
}
}
} else if (md->hasText()) {
- emit insertText(md->text());
+ return false;
} else {
nhlog::ui()->debug("formats: {}", md->formats().join(QStringLiteral(", ")).toStdString());
+ return false;
}
+
+ return true;
}
void
diff --git a/src/timeline/InputBar.h b/src/timeline/InputBar.h
index 28a4bcf6..816d4e37 100644
--- a/src/timeline/InputBar.h
+++ b/src/timeline/InputBar.h
@@ -190,8 +190,8 @@ public slots:
[[nodiscard]] bool containsAtRoom() const { return containsAtRoom_; }
void send();
- void paste(bool fromMouse);
- void insertMimeData(const QMimeData *data);
+ bool tryPasteAttachment(bool fromMouse);
+ bool insertMimeData(const QMimeData *data);
void updateState(int selectionStart, int selectionEnd, int cursorPosition, const QString &text);
void openFileSelection();
[[nodiscard]] bool uploading() const { return uploading_; }
@@ -212,7 +212,6 @@ private slots:
void removeRunUpload(MediaUpload *upload);
signals:
- void insertText(QString text);
void textChanged(QString newText);
void uploadingChanged(bool value);
void containsAtRoomChanged();
|