X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fircuser.cpp;h=15220f7681b45b71636b7ddd7fde1c26beeac025;hp=32ff7944e0f9c0d56b7c8c8b7a7296d0242d0558;hb=e67887343c433cc35bc26ad6a9392588f427e746;hpb=b50541ba6d7c58322846cc2eb9f023a117d8c47d diff --git a/src/common/ircuser.cpp b/src/common/ircuser.cpp index 32ff7944..15220f76 100644 --- a/src/common/ircuser.cpp +++ b/src/common/ircuser.cpp @@ -346,9 +346,11 @@ void IrcUser::channelDestroyed() void IrcUser::setUserModes(const QString &modes) { - _userModes = modes; - SYNC(ARG(modes)) - emit userModesSet(modes); + if (_userModes != modes) { + _userModes = modes; + SYNC(ARG(modes)) + emit userModesSet(modes); + } } @@ -357,13 +359,19 @@ void IrcUser::addUserModes(const QString &modes) if (modes.isEmpty()) return; + // Don't needlessly sync when no changes are made + bool changesMade = false; for (int i = 0; i < modes.count(); i++) { - if (!_userModes.contains(modes[i])) + if (!_userModes.contains(modes[i])) { _userModes += modes[i]; + changesMade = true; + } } - SYNC(ARG(modes)) - emit userModesAdded(modes); + if (changesMade) { + SYNC(ARG(modes)) + emit userModesAdded(modes); + } }