Newer GCCs start to warn about this, so add attributes or rearrange
code as appropriate.
While the [[fallthrough]] attribute has only been standardized in
C++17, it should simply be ignored by older compilers (and it does
shut up GCC even when compiling with -std=c++11).
(cherry picked from commit 
45affd4fa815bb21d0b2e46ac80114bb9174f801)
 
         return _C_channelModes.contains(mode);
     case Network::D_CHANMODE:
         return _D_channelModes.contains(mode);
-    default:
-        return false;
     }
+    return false;
 }
 
 
     case Network::A_CHANMODE:
         if (_A_channelModes.contains(mode))
             return _A_channelModes[mode];
+        break;
     default:
-        return QStringList();
+        ;
     }
+    return {};
 }
 
 
 
     switch (e->params().count()) {
     case 3:
         topic = e->params()[2];
+        [[fallthrough]];
     case 2:
         userCount = e->params()[1].toUInt();
+        [[fallthrough]];
     case 1:
         channelName = e->params()[0];
+        [[fallthrough]];
     default:
         break;
     }
 
     switch (e->params().count()) {
     case 3:
         topic = e->params()[2];
+        [[fallthrough]];
     case 2:
         userCount = e->params()[1].toUInt();
+        [[fallthrough]];
     case 1:
         channelName = e->params()[0];
+        [[fallthrough]];
     default:
         break;
     }
 
 
     switch (query.lastError().number()) {
     case 5: // SQLITE_BUSY         5   /* The database file is locked */
+        [[fallthrough]];
     case 6: // SQLITE_LOCKED       6   /* A table in the database is locked */
         if (retryCount < _maxRetryCount)
             return safeExec(query, retryCount + 1);
+        break;
     default:
-        return false;
+        ;
     }
+    return false;
 }
 
 
 
     case Qt::Key_Down:
         if (!(keyEvent->modifiers() & Qt::ShiftModifier))
             return false;
+        [[fallthrough]];
     case Qt::Key_PageUp:
     case Qt::Key_PageDown:
         // static cast to access public qobject::event
 
         if (webPreview.previewItem && webPreview.previewItem->scene())
             removeItem(webPreview.previewItem);
     // Fall through to deletion!
+    [[fallthrough]];
     case WebPreview::HidePreview:
         if (webPreview.previewItem) {
             delete webPreview.previewItem;
                 removeItem(webPreview.previewItem);
         }
     // fall through into to set hidden state
+    [[fallthrough]];
     case WebPreview::DelayPreview:
         // we're just loading, so haven't shown the preview yet.
         webPreview.previewState = WebPreview::HidePreview;
 
         return;
     case HideApplyToAll:
         BufferSettings().setMessageFilter(filter);
+        [[fallthrough]];
     case HideUseDefaults:
         if (_messageFilter)
             BufferSettings(_messageFilter->idString()).removeFilter();
 
         case BufferInfo::QueryBuffer:
             if (regex.indexIn(_currentBufferName) > -1)
                 _completionMap[_currentBufferName.toLower()] = _currentBufferName;
+            [[fallthrough]];
         case BufferInfo::StatusBuffer:
             if (!_currentNetwork->myNick().isEmpty() && regex.indexIn(_currentNetwork->myNick()) > -1)
                 _completionMap[_currentNetwork->myNick().toLower()] = _currentNetwork->myNick();