summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gui/windows/chatwindow.cpp11
-rw-r--r--src/gui/windows/chatwindow.h2
-rw-r--r--src/net/ea/chathandler.cpp10
3 files changed, 13 insertions, 10 deletions
diff --git a/src/gui/windows/chatwindow.cpp b/src/gui/windows/chatwindow.cpp
index ea7a372d4..d658ae183 100644
--- a/src/gui/windows/chatwindow.cpp
+++ b/src/gui/windows/chatwindow.cpp
@@ -1452,7 +1452,7 @@ std::string ChatWindow::autoCompleteHistory(const std::string &partName) const
return autoComplete(nameList, partName);
}
-void ChatWindow::resortChatLog(std::string line, Own own,
+bool ChatWindow::resortChatLog(std::string line, Own own,
const std::string &channel,
const bool ignoreRecord,
const bool tryRemoveColors)
@@ -1470,7 +1470,7 @@ void ChatWindow::resortChatLog(std::string line, Own own,
{
tradeChatTab->chatLog(prefix + line, own,
ignoreRecord, tryRemoveColors);
- return;
+ return false;
}
size_t idx2 = line.find(": ");
@@ -1481,11 +1481,11 @@ void ChatWindow::resortChatLog(std::string line, Own own,
{
// ignore special message formats.
if (line.find(": \302\202\302") != std::string::npos)
- return;
+ return false;
line = line.erase(idx + 2, 2);
tradeChatTab->chatLog(prefix + line, own, ignoreRecord,
tryRemoveColors);
- return;
+ return false;
}
}
@@ -1502,7 +1502,7 @@ void ChatWindow::resortChatLog(std::string line, Own own,
{
tradeChatTab->chatLog(prefix + line, own,
ignoreRecord, tryRemoveColors);
- return;
+ return false;
}
}
}
@@ -1533,6 +1533,7 @@ void ChatWindow::resortChatLog(std::string line, Own own,
{
localChatTab->chatLog(line, own, ignoreRecord, tryRemoveColors);
}
+ return true;
}
void ChatWindow::battleChatLog(const std::string &line, Own own,
diff --git a/src/gui/windows/chatwindow.h b/src/gui/windows/chatwindow.h
index d93e2ce94..a1a7d77ee 100644
--- a/src/gui/windows/chatwindow.h
+++ b/src/gui/windows/chatwindow.h
@@ -233,7 +233,7 @@ class ChatWindow final : public Window,
void ignoreAllWhispers();
- void resortChatLog(std::string line, Own own,
+ bool resortChatLog(std::string line, Own own,
const std::string &channel,
const bool ignoreRecord,
const bool tryRemoveColors);
diff --git a/src/net/ea/chathandler.cpp b/src/net/ea/chathandler.cpp
index a10bf931d..267d1102d 100644
--- a/src/net/ea/chathandler.cpp
+++ b/src/net/ea/chathandler.cpp
@@ -310,17 +310,18 @@ void ChatHandler::processBeingChat(Net::MessageIn &msg,
trim(chatMsg);
+ bool allow(true);
// We use getIgnorePlayer instead of ignoringPlayer here
// because ignorePlayer' side effects are triggered
// right below for Being::IGNORE_SPEECH_FLOAT.
if (player_relations.checkPermissionSilently(sender_name,
PlayerRelation::SPEECH_LOG) && chatWindow)
{
- chatWindow->resortChatLog(removeColors(sender_name)
+ allow = chatWindow->resortChatLog(removeColors(sender_name)
.append(" : ").append(chatMsg), BY_OTHER, channel, false, true);
}
- if (player_relations.hasPermission(sender_name,
+ if (allow && player_relations.hasPermission(sender_name,
PlayerRelation::SPEECH_FLOAT))
{
being->setSpeech(chatMsg, channel);
@@ -352,9 +353,10 @@ void ChatHandler::processChat(Net::MessageIn &msg, const bool normalChat,
if (normalChat)
{
+ bool allow(true);
if (chatWindow)
{
- chatWindow->resortChatLog(chatMsg, BY_PLAYER,
+ allow = chatWindow->resortChatLog(chatMsg, BY_PLAYER,
channel, false, true);
}
@@ -386,7 +388,7 @@ void ChatHandler::processChat(Net::MessageIn &msg, const bool normalChat,
if (player_node)
{
- if (chatWindow || mShowMotd)
+ if ((chatWindow || mShowMotd) && allow)
player_node->setSpeech(chatMsg, channel);
}
}