diff options
author | Thorbjørn Lindeijer <bjorn@lindeijer.nl> | 2024-03-12 13:24:16 +0100 |
---|---|---|
committer | Thorbjørn Lindeijer <bjorn@lindeijer.nl> | 2024-03-12 21:23:10 +0100 |
commit | 306ad2effe4d0897453e61ad787e01dc47c33076 (patch) | |
tree | 75b8b291af55e80d01d9eb85afd7d465233a1a57 /src/gui/chatwindow.cpp | |
parent | 66599a9896e0cf69b58c0a73152aba4750d87af2 (diff) | |
download | mana-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.cpp | 25 |
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); |