Prepend current nickname if buffer has no name
authorMatt Schatz <genius3000@g3k.solutions>
Thu, 29 Mar 2018 12:14:39 +0000 (06:14 -0600)
committerManuel Nickschas <sputnick@quassel-irc.org>
Tue, 19 Jun 2018 21:54:26 +0000 (23:54 +0200)
If the buffer name is blank, assume Status Buffer (or otherwise
some un-named buffer?) and prepend our current nickname. Now
shortcuts like '/mode +R' will work on ourself from the Status
Buffer and doesn't interfere with current behaviour otherwise.

src/core/coreuserinputhandler.cpp

index 8878340..29efd4b 100644 (file)
@@ -474,7 +474,6 @@ void CoreUserInputHandler::handleMode(const BufferInfo &bufferInfo, const QStrin
     Q_UNUSED(bufferInfo)
 
     QStringList params = msg.split(' ', QString::SkipEmptyParts);
-    // if the first argument is neither a channel nor us (user modes are only to oneself) the current buffer is assumed to be the target
     if (!params.isEmpty()) {
         if (params[0] == "-reset" && params.count() == 1) {
             network()->resetPersistentModes();
@@ -483,7 +482,11 @@ void CoreUserInputHandler::handleMode(const BufferInfo &bufferInfo, const QStrin
             return;
         }
         if (!network()->isChannelName(params[0]) && !network()->isMyNick(params[0]))
-            params.prepend(bufferInfo.bufferName());
+            // If the first argument is neither a channel nor us (user modes are only to oneself)
+            // the current buffer is assumed to be the target.
+            // If the current buffer returns no name (e.g. status buffer), assume target is us.
+            params.prepend(!bufferInfo.bufferName().isEmpty() ?
+                                bufferInfo.bufferName() : network()->myNick());
         if (network()->isMyNick(params[0]) && params.count() == 2)
             network()->updateIssuedModes(params[1]);
     }