summaryrefslogtreecommitdiff
path: root/src/gui/chatwindow.cpp
diff options
context:
space:
mode:
authorThorbjørn Lindeijer <bjorn@lindeijer.nl>2024-03-12 13:24:16 +0100
committerThorbjørn Lindeijer <bjorn@lindeijer.nl>2024-03-12 21:23:10 +0100
commit306ad2effe4d0897453e61ad787e01dc47c33076 (patch)
tree75b8b291af55e80d01d9eb85afd7d465233a1a57 /src/gui/chatwindow.cpp
parent66599a9896e0cf69b58c0a73152aba4750d87af2 (diff)
downloadmana-306ad2effe4d0897453e61ad787e01dc47c33076.tar.gz
mana-306ad2effe4d0897453e61ad787e01dc47c33076.tar.bz2
mana-306ad2effe4d0897453e61ad787e01dc47c33076.tar.xz
mana-306ad2effe4d0897453e61ad787e01dc47c33076.zip
General code cleanups
* Use default member initializers * Use range-based for loops * Avoid needless pointer references for ShopItem::mDuplicates * Removed type aliases that are only used once or twice * Removed more unused includes * Removed some unused functions * Removed superfluous .c_str() * Rely on default copy and assignment operators for Vector class * Use std::unique_ptr in some places * Removed duplicated mPlayerMoney updating in SellDialog * Removed duplicated Game::handleInput call * Removed unused SDLInput::mMouseInWindow * Removed remnant of manual widget positioning in HelpWindow * Removed superfluous initialization of static pointers
Diffstat (limited to 'src/gui/chatwindow.cpp')
-rw-r--r--src/gui/chatwindow.cpp25
1 files changed, 9 insertions, 16 deletions
diff --git a/src/gui/chatwindow.cpp b/src/gui/chatwindow.cpp
index 041e08e9..a3d9a1f4 100644
--- a/src/gui/chatwindow.cpp
+++ b/src/gui/chatwindow.cpp
@@ -265,20 +265,14 @@ void ChatWindow::removeWhisper(const std::string &nick)
void ChatWindow::removeAllWhispers()
{
- TabMap::iterator iter;
- std::list<ChatTab*> tabs;
+ // Swap with empty container before deleting, because each tab will try to
+ // remove itself from mWhispers when it gets deleted, possibly invalidating
+ // our iterator.
+ std::map<const std::string, ChatTab *> whispers;
+ mWhispers.swap(whispers);
- for (iter = mWhispers.begin(); iter != mWhispers.end(); ++iter)
- {
- tabs.push_back(iter->second);
- }
-
- for (auto &tab : tabs)
- {
+ for (auto &[_, tab] : whispers)
delete tab;
- }
-
- mWhispers.clear();
}
void ChatWindow::chatInput(const std::string &msg)
@@ -460,11 +454,11 @@ void ChatWindow::whisper(const std::string &nick,
toLower(playerName);
toLower(tempNick);
- if (tempNick.compare(playerName) == 0)
+ if (tempNick == playerName)
return;
ChatTab *tab = nullptr;
- TabMap::const_iterator i = mWhispers.find(tempNick);
+ auto i = mWhispers.find(tempNick);
if (i != mWhispers.end())
tab = i->second;
@@ -511,8 +505,7 @@ ChatTab *ChatWindow::addWhisperTab(const std::string &nick, bool switchTo)
toLower(playerName);
toLower(tempNick);
- if (mWhispers.find(tempNick) != mWhispers.end()
- || tempNick.compare(playerName) == 0)
+ if (mWhispers.find(tempNick) != mWhispers.end() || tempNick == playerName)
return nullptr;
ChatTab *ret = new WhisperTab(nick);