diff --git a/resources/qml/MessageInput.qml b/resources/qml/MessageInput.qml
index 9a21ac0526c5f5e86cf70bfb09782dfcaf6d3149..8090cd99451ac0d72bc0a916d73dc7e598056926 100644
--- a/resources/qml/MessageInput.qml
+++ b/resources/qml/MessageInput.qml
@@ -446,10 +446,10 @@ Rectangle {
             width: 22
             height: 22
             image: ":/icons/icons/ui/send.svg"
+            Layout.rightMargin: 8
             ToolTip.visible: hovered
             ToolTip.text: qsTr("Send")
             onClicked: {
-                messageInput.append(messageInput.preeditText)
                 room.input.send();
             }
         }
diff --git a/src/timeline/InputBar.cpp b/src/timeline/InputBar.cpp
index cd7c4e0c20efed427e8b6487b54f2e223c8458b2..349ce7af8db3b588c5033dee9618be13aed1dd92 100644
--- a/src/timeline/InputBar.cpp
+++ b/src/timeline/InputBar.cpp
@@ -9,6 +9,7 @@
 #include <QDropEvent>
 #include <QFileDialog>
 #include <QGuiApplication>
+#include <QInputMethod>
 #include <QMimeData>
 #include <QMimeDatabase>
 #include <QStandardPaths>
@@ -234,6 +235,8 @@ InputBar::nextText()
 void
 InputBar::send()
 {
+    QInputMethod *im = QGuiApplication::inputMethod();
+    im->commit();
     if (text().trimmed().isEmpty())
         return;