From f5abb30ac6ec8089901d686d9c2ec3387f97aaef Mon Sep 17 00:00:00 2001 From: Daniel Silverstone Date: Wed, 7 Feb 2018 10:51:55 +0000 Subject: [PATCH] Correct issue where messages were over-trimmed In an attempt to correct a problem with quasseldroid multiline messages (97a9b1646bb0d6362cef14bac3a577481cc01e49) the core started trimming leading whitespace from lines. This broke pasting of things like formatted code. This commit ensures that only the splitting is done, and that we skip empty lines when handling /SAY since they sometimes cause issues on networks and the clients which split client-side already skip empty lines. Closes GH-331. --- src/core/coreuserinputhandler.cpp | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/core/coreuserinputhandler.cpp b/src/core/coreuserinputhandler.cpp index 755e64a9..8d35fec9 100644 --- a/src/core/coreuserinputhandler.cpp +++ b/src/core/coreuserinputhandler.cpp @@ -460,8 +460,7 @@ void CoreUserInputHandler::handleMe(const BufferInfo &bufferInfo, const QString QStringList messages = msg.split(QCharLF); foreach (auto message, messages) { - // Handle each separated message independently, ignoring any carriage returns - message = message.trimmed(); + // Handle each separated message independently coreNetwork()->coreSession()->ctcpParser()->query(coreNetwork(), bufferInfo.bufferName(), "ACTION", message); emit displayMsg(Message::Action, bufferInfo.type(), bufferInfo.bufferName(), message, @@ -532,8 +531,7 @@ void CoreUserInputHandler::handleNotice(const BufferInfo &bufferInfo, const QStr QStringList messages = msg.section(' ', 1).split(QCharLF); foreach (auto message, messages) { - // Handle each separated message independently, ignoring any carriage returns - message = message.trimmed(); + // Handle each separated message independently params.clear(); params << serverEncode(bufferName) << channelEncode(bufferInfo.bufferName(), message); emit putCmd("NOTICE", params); @@ -607,8 +605,7 @@ void CoreUserInputHandler::handleQuery(const BufferInfo &bufferInfo, const QStri QStringList messages = msg.section(' ', 1).split(QCharLF); foreach (auto message, messages) { - // Handle each separated message independently, ignoring any carriage returns - message = message.trimmed(); + // Handle each separated message independently if (message.isEmpty()) { emit displayMsg(Message::Server, BufferInfo::QueryBuffer, target, tr("Starting query with %1").arg(target), network()->myNick(), @@ -656,11 +653,10 @@ void CoreUserInputHandler::handleSay(const BufferInfo &bufferInfo, const QString // Split apart messages at line feeds. The IRC protocol uses those to separate commands, so // they need to be split into multiple messages. - QStringList messages = msg.split(QCharLF); + QStringList messages = msg.split(QCharLF, QString::SkipEmptyParts); foreach (auto message, messages) { - // Handle each separated message independently, ignoring any carriage returns - message = message.trimmed(); + // Handle each separated message independently #ifdef HAVE_QCA2 putPrivmsg(bufferInfo.bufferName(), message, encodeFunc, network()->cipher(bufferInfo.bufferName())); -- 2.20.1