From 32ff22ba89e2cbb051a4e2e12c55c8cf71190938 Mon Sep 17 00:00:00 2001 From: Tobias Fella Date: Sat, 15 Jul 2023 16:57:06 +0200 Subject: [PATCH] Fix most compilation warnings --- src/controller.cpp | 6 +-- src/joinrulesevent.h | 36 ------------- src/models/actionsmodel.cpp | 15 ++++-- src/models/locationsmodel.cpp | 1 + src/models/messageeventmodel.cpp | 8 +-- src/models/roomlistmodel.cpp | 2 +- src/models/userlistmodel.cpp | 7 ++- src/neochatroom.cpp | 91 +++++++++++++++++++------------- src/pollhandler.cpp | 18 ++++--- src/stickerevent.h | 43 --------------- src/trayicon_sni.cpp | 2 + 11 files changed, 95 insertions(+), 134 deletions(-) delete mode 100644 src/joinrulesevent.h delete mode 100644 src/stickerevent.h diff --git a/src/controller.cpp b/src/controller.cpp index 4c552f9ff..b5a8f3dba 100644 --- a/src/controller.cpp +++ b/src/controller.cpp @@ -180,7 +180,7 @@ void Controller::addConnection(Connection *c) }); connect(c, &Connection::requestFailed, this, [this](BaseJob *job) { - if (job->error() == BaseJob::UserConsentRequiredError) { + if (job->error() == BaseJob::UserConsentRequired) { Q_EMIT userConsentRequired(job->errorUrl()); } }); @@ -247,7 +247,7 @@ void Controller::invokeLogin() connect(connection, &Connection::networkError, this, [this](const QString &error, const QString &, int, int) { Q_EMIT errorOccured(i18n("Network Error: %1", error)); }); - connection->assumeIdentity(account.userId(), accessToken, account.deviceId()); + connection->assumeIdentity(account.userId(), accessToken); }); } } @@ -263,7 +263,7 @@ QKeychain::ReadPasswordJob *Controller::loadAccessTokenFromKeyChain(const Accoun job->setKey(account.userId()); // Handling of errors - connect(job, &QKeychain::Job::finished, this, [this, &account, job]() { + connect(job, &QKeychain::Job::finished, this, [this, job]() { if (job->error() == QKeychain::Error::NoError) { return; } diff --git a/src/joinrulesevent.h b/src/joinrulesevent.h deleted file mode 100644 index 3943f736d..000000000 --- a/src/joinrulesevent.h +++ /dev/null @@ -1,36 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Carl Schwan -// SPDX-License-Identifier: LGPL-2.1-or-later - -#pragma once - -#include - -namespace Quotient -{ -#ifdef QUOTIENT_07 -class JoinRulesEvent : public StateEvent -#else -class JoinRulesEvent : public StateEventBase -#endif -{ -public: -#ifdef QUOTIENT_07 - QUO_EVENT(JoinRulesEvent, "m.room.join_rules") -#else - DEFINE_EVENT_TYPEID("m.room.join_rules", JoinRulesEvent) -#endif - - explicit JoinRulesEvent(const QJsonObject &obj) -#ifdef QUOTIENT_07 - : StateEvent(obj) -#else - : StateEventBase(typeId(), obj) -#endif - { - } - - QString joinRule() const; - QJsonArray allow() const; -}; -REGISTER_EVENT_TYPE(JoinRulesEvent) -} diff --git a/src/models/actionsmodel.cpp b/src/models/actionsmodel.cpp index b21dbaf3c..88491f920 100644 --- a/src/models/actionsmodel.cpp +++ b/src/models/actionsmodel.cpp @@ -436,7 +436,10 @@ QVector actions{ Q_EMIT room->showMessage(NeoChatRoom::Info, i18nc(" is already banned from this room.", "%1 is already banned from this room.", text)); return QString(); } - auto plEvent = room->getCurrentState(); + auto plEvent = room->currentState().get(); + if (!plEvent) { + return QString(); + } if (plEvent->ban() > plEvent->powerLevelForUser(room->localUser()->id())) { Q_EMIT room->showMessage(NeoChatRoom::Error, i18n("You are not allowed to ban users from this room.")); return QString(); @@ -466,7 +469,10 @@ QVector actions{ Q_EMIT room->showMessage(NeoChatRoom::Error, i18nc("'' does not look like a matrix id.", "'%1' does not look like a matrix id.", text)); return QString(); } - auto plEvent = room->getCurrentState(); + auto plEvent = room->currentState().get(); + if (!plEvent) { + return QString(); + } if (plEvent->ban() > plEvent->powerLevelForUser(room->localUser()->id())) { Q_EMIT room->showMessage(NeoChatRoom::Error, i18n("You are not allowed to unban users from this room.")); return QString(); @@ -506,7 +512,10 @@ QVector actions{ Q_EMIT room->showMessage(NeoChatRoom::Error, i18nc(" is not in this room", "%1 is not in this room.", parts[0])); return QString(); } - auto plEvent = room->getCurrentState(); + auto plEvent = room->currentState().get(); + if (!plEvent) { + return QString(); + } auto kick = plEvent->kick(); if (plEvent->powerLevelForUser(room->localUser()->id()) < kick) { Q_EMIT room->showMessage(NeoChatRoom::Error, i18n("You are not allowed to kick users from this room.")); diff --git a/src/models/locationsmodel.cpp b/src/models/locationsmodel.cpp index 5f7dafd04..92b9809e3 100644 --- a/src/models/locationsmodel.cpp +++ b/src/models/locationsmodel.cpp @@ -110,6 +110,7 @@ QVariant LocationsModel::data(const QModelIndex &index, int roleName) const int LocationsModel::rowCount(const QModelIndex &parent) const { + Q_UNUSED(parent); return m_locations.size(); } diff --git a/src/models/messageeventmodel.cpp b/src/models/messageeventmodel.cpp index 93a6ef586..68d545275 100644 --- a/src/models/messageeventmodel.cpp +++ b/src/models/messageeventmodel.cpp @@ -228,7 +228,7 @@ void MessageEventModel::setRoom(NeoChatRoom *room) beginRemoveRows({}, i, i); }); connect(m_currentRoom, &Room::pendingEventDiscarded, this, &MessageEventModel::endRemoveRows); - connect(m_currentRoom, &Room::readMarkerMoved, this, [this](const QString &fromEventId, const QString &toEventId) { + connect(m_currentRoom, &Room::fullyReadMarkerMoved, this, [this](const QString &fromEventId, const QString &toEventId) { Q_UNUSED(fromEventId); moveReadMarker(toEventId); }); @@ -609,7 +609,7 @@ QVariant MessageEventModel::data(const QModelIndex &idx, int role) const return EventStatus::Hidden; } - if (evt.isStateEvent() && static_cast(evt).repeatsState()) { + if (evt.isStateEvent() && static_cast(evt).repeatsState()) { return EventStatus::Hidden; } @@ -1053,7 +1053,7 @@ void MessageEventModel::createReactionModelForEvent(const Quotient::RoomMessageE return; } auto eventId = event->id(); - const auto &annotations = m_currentRoom->relatedEvents(eventId, EventRelation::Annotation()); + const auto &annotations = m_currentRoom->relatedEvents(eventId, EventRelation::AnnotationType); if (annotations.isEmpty()) { if (m_reactionModels.contains(eventId)) { delete m_reactionModels[eventId]; @@ -1068,7 +1068,7 @@ void MessageEventModel::createReactionModelForEvent(const Quotient::RoomMessageE continue; } if (const auto &e = eventCast(a)) { - reactions[e->relation().key].append(static_cast(m_currentRoom->user(e->senderId()))); + reactions[e->key()].append(static_cast(m_currentRoom->user(e->senderId()))); } } diff --git a/src/models/roomlistmodel.cpp b/src/models/roomlistmodel.cpp index 471b46fa6..d22ff865d 100644 --- a/src/models/roomlistmodel.cpp +++ b/src/models/roomlistmodel.cpp @@ -156,7 +156,7 @@ void RoomListModel::connectRoomSignals(NeoChatRoom *room) connect(room, &Room::displaynameChanged, this, [this, room] { refresh(room, {DisplayNameRole}); }); - connect(room, &Room::unreadMessagesChanged, this, [this, room] { + connect(room, &Room::unreadStatsChanged, this, [this, room] { refresh(room, {NotificationCountRole, HighlightCountRole}); }); connect(room, &Room::notificationCountChanged, this, [this, room] { diff --git a/src/models/userlistmodel.cpp b/src/models/userlistmodel.cpp index 3e80db90f..a4c41ac60 100644 --- a/src/models/userlistmodel.cpp +++ b/src/models/userlistmodel.cpp @@ -78,8 +78,11 @@ QVariant UserListModel::data(const QModelIndex &index, int role) const return QVariant::fromValue(user); } if (role == PowerLevelRole) { - auto pl = m_currentRoom->getCurrentState(); - return pl->powerLevelForUser(user->id()); + auto plEvent = m_currentRoom->currentState().get(); + if (!plEvent) { + return 0; + } + return plEvent->powerLevelForUser(user->id()); } if (role == PowerLevelStringRole) { auto pl = m_currentRoom->currentState().get(); diff --git a/src/neochatroom.cpp b/src/neochatroom.cpp index 2d7f66517..d0f254bee 100644 --- a/src/neochatroom.cpp +++ b/src/neochatroom.cpp @@ -97,7 +97,9 @@ NeoChatRoom::NeoChatRoom(Connection *connection, QString roomId, JoinState joinS if (this->joinState() != JoinState::Invite) { return; } - const QString senderId = getCurrentState(localUser()->id())->senderId(); + auto roomMemberEvent = currentState().get(localUser()->id()); + Q_ASSERT(roomMemberEvent); + const QString senderId = roomMemberEvent->senderId(); QImage avatar_image; if (!user(senderId)->avatarUrl(this).isEmpty()) { avatar_image = user(senderId)->avatar(128, this); @@ -271,7 +273,7 @@ const RoomEvent *NeoChatRoom::lastEvent() const continue; } } - if (event->isStateEvent() && static_cast(*event).repeatsState()) { + if (event->isStateEvent() && static_cast(*event).repeatsState()) { continue; } @@ -338,7 +340,7 @@ bool NeoChatRoom::lastEventIsSpoiler() const QString NeoChatRoom::lastEventToString(Qt::TextFormat format, bool stripNewlines) const { if (auto event = lastEvent()) { - return roomMembername(event->senderId()) + (event->isStateEvent() ? QLatin1String(" ") : QLatin1String(": ")) + return safeMemberName(event->senderId()) + (event->isStateEvent() ? QLatin1String(" ") : QLatin1String(": ")) + eventToString(*event, format, stripNewlines); } return {}; @@ -357,7 +359,7 @@ void NeoChatRoom::checkForHighlights(const Quotient::TimelineItem &ti) } if (auto *e = ti.viewAs()) { const auto &text = e->plainBody(); - if (text.contains(localUserId) || text.contains(roomMembername(localUserId))) { + if (text.contains(localUserId) || text.contains(safeMemberName(localUserId))) { highlights.insert(e); } } @@ -380,7 +382,7 @@ void NeoChatRoom::onAddHistoricalTimelineEvents(rev_iter_t from) void NeoChatRoom::onRedaction(const RoomEvent &prevEvent, const RoomEvent & /*after*/) { if (const auto &e = eventCast(&prevEvent)) { - if (auto relatedEventId = e->relation().eventId; !relatedEventId.isEmpty()) { + if (auto relatedEventId = e->eventId(); !relatedEventId.isEmpty()) { Q_EMIT updatedEvent(relatedEventId); } } @@ -529,7 +531,7 @@ QString NeoChatRoom::eventToString(const RoomEvent &evt, Qt::TextFormat format, [this, prettyPrint](const RoomMemberEvent &e) { // FIXME: Rewind to the name that was at the time of this event auto subjectName = this->htmlSafeMemberName(e.userId()); - if (e.membership() == MembershipType::Leave) { + if (e.membership() == Membership::Leave) { if (e.prevContent() && e.prevContent()->displayName) { subjectName = sanitized(*e.prevContent()->displayName).toHtmlEscaped(); } @@ -542,7 +544,7 @@ QString NeoChatRoom::eventToString(const RoomEvent &evt, Qt::TextFormat format, // The below code assumes senderName output in AuthorRole switch (e.membership()) { - case MembershipType::Invite: + case Membership::Invite: if (e.repeatsState()) { auto text = i18n("reinvited %1 to the room", subjectName); if (!e.reason().isEmpty()) { @@ -551,13 +553,13 @@ QString NeoChatRoom::eventToString(const RoomEvent &evt, Qt::TextFormat format, return text; } Q_FALLTHROUGH(); - case MembershipType::Join: { + case Membership::Join: { QString text{}; // Part 1: invites and joins if (e.repeatsState()) { text = i18n("joined the room (repeated)"); } else if (e.changesMembership()) { - text = e.membership() == MembershipType::Invite ? i18n("invited %1 to the room", subjectName) : i18n("joined the room"); + text = e.membership() == Membership::Invite ? i18n("invited %1 to the room", subjectName) : i18n("joined the room"); } if (!text.isEmpty()) { if (!e.reason().isEmpty()) { @@ -567,17 +569,17 @@ QString NeoChatRoom::eventToString(const RoomEvent &evt, Qt::TextFormat format, } // Part 2: profile changes of joined members if (e.isRename()) { - if (e.displayName().isEmpty()) { + if (!e.newDisplayName()) { text = i18nc("their refers to a singular user", "cleared their display name"); } else { - text = i18nc("their refers to a singular user", "changed their display name to %1", e.displayName().toHtmlEscaped()); + text = i18nc("their refers to a singular user", "changed their display name to %1", e.newDisplayName()->toHtmlEscaped()); } } if (e.isAvatarUpdate()) { if (!text.isEmpty()) { text += i18n(" and "); } - if (e.avatarUrl().isEmpty()) { + if (!e.newAvatarUrl()) { text += i18nc("their refers to a singular user", "cleared their avatar"); } else if (!e.prevContent()->avatarUrl) { text += i18n("set an avatar"); @@ -590,18 +592,18 @@ QString NeoChatRoom::eventToString(const RoomEvent &evt, Qt::TextFormat format, } return text; } - case MembershipType::Leave: - if (e.prevContent() && e.prevContent()->membership == MembershipType::Invite) { + case Membership::Leave: + if (e.prevContent() && e.prevContent()->membership == Membership::Invite) { return (e.senderId() != e.userId()) ? i18n("withdrew %1's invitation", subjectName) : i18n("rejected the invitation"); } - if (e.prevContent() && e.prevContent()->membership == MembershipType::Ban) { + if (e.prevContent() && e.prevContent()->membership == Membership::Ban) { return (e.senderId() != e.userId()) ? i18n("unbanned %1", subjectName) : i18n("self-unbanned"); } return (e.senderId() != e.userId()) ? i18n("has put %1 out of the room: %2", subjectName, e.contentJson()["reason"_ls].toString().toHtmlEscaped()) : i18n("left the room"); - case MembershipType::Ban: + case Membership::Ban: if (e.senderId() != e.userId()) { if (e.reason().isEmpty()) { return i18n("banned %1 from the room", subjectName); @@ -611,7 +613,7 @@ QString NeoChatRoom::eventToString(const RoomEvent &evt, Qt::TextFormat format, } else { return i18n("self-banned from the room"); } - case MembershipType::Knock: { + case Membership::Knock: { QString reason(e.contentJson()["reason"_ls].toString().toHtmlEscaped()); return reason.isEmpty() ? i18n("requested an invite") : i18n("requested an invite with reason: %1", reason); } @@ -645,7 +647,7 @@ QString NeoChatRoom::eventToString(const RoomEvent &evt, Qt::TextFormat format, [](const RoomPowerLevelsEvent &) { return i18nc("'power level' means permission level", "changed the power levels for this room"); }, - [](const StateEventBase &e) { + [](const StateEvent &e) { if (e.matrixType() == QLatin1String("m.room.server_acl")) { return i18n("changed the server access control lists for this room"); } @@ -684,25 +686,25 @@ QString NeoChatRoom::eventToGenericString(const RoomEvent &evt) const }, [](const RoomMemberEvent &e) { switch (e.membership()) { - case MembershipType::Invite: + case Membership::Invite: if (e.repeatsState()) { return i18n("reinvited someone to the room"); } Q_FALLTHROUGH(); - case MembershipType::Join: { + case Membership::Join: { QString text{}; // Part 1: invites and joins if (e.repeatsState()) { text = i18n("joined the room (repeated)"); } else if (e.changesMembership()) { - text = e.membership() == MembershipType::Invite ? i18n("invited someone to the room") : i18n("joined the room"); + text = e.membership() == Membership::Invite ? i18n("invited someone to the room") : i18n("joined the room"); } if (!text.isEmpty()) { return text; } // Part 2: profile changes of joined members if (e.isRename()) { - if (e.displayName().isEmpty()) { + if (!e.newDisplayName()) { text = i18nc("their refers to a singular user", "cleared their display name"); } else { text = i18nc("their refers to a singular user", "changed their display name"); @@ -712,7 +714,7 @@ QString NeoChatRoom::eventToGenericString(const RoomEvent &evt) const if (!text.isEmpty()) { text += i18n(" and "); } - if (e.avatarUrl().isEmpty()) { + if (!e.newAvatarUrl()) { text += i18nc("their refers to a singular user", "cleared their avatar"); } else if (!e.prevContent()->avatarUrl) { text += i18n("set an avatar"); @@ -725,22 +727,22 @@ QString NeoChatRoom::eventToGenericString(const RoomEvent &evt) const } return text; } - case MembershipType::Leave: - if (e.prevContent() && e.prevContent()->membership == MembershipType::Invite) { + case Membership::Leave: + if (e.prevContent() && e.prevContent()->membership == Membership::Invite) { return (e.senderId() != e.userId()) ? i18n("withdrew a user's invitation") : i18n("rejected the invitation"); } - if (e.prevContent() && e.prevContent()->membership == MembershipType::Ban) { + if (e.prevContent() && e.prevContent()->membership == Membership::Ban) { return (e.senderId() != e.userId()) ? i18n("unbanned a user") : i18n("self-unbanned"); } return (e.senderId() != e.userId()) ? i18n("put a user out of the room") : i18n("left the room"); - case MembershipType::Ban: + case Membership::Ban: if (e.senderId() != e.userId()) { return i18n("banned a user from the room"); } else { return i18n("self-banned from the room"); } - case MembershipType::Knock: { + case Membership::Knock: { return i18n("requested an invite"); } default:; @@ -768,7 +770,7 @@ QString NeoChatRoom::eventToGenericString(const RoomEvent &evt) const [](const RoomPowerLevelsEvent &) { return i18nc("'power level' means permission level", "changed the power levels for this room"); }, - [](const StateEventBase &e) { + [](const StateEvent &e) { if (e.matrixType() == QLatin1String("m.room.server_acl")) { return i18n("changed the server access control lists for this room"); } @@ -904,11 +906,11 @@ void NeoChatRoom::toggleReaction(const QString &eventId, const QString &reaction QStringList redactEventIds; // What if there are multiple reaction events? - const auto &annotations = relatedEvents(evt, EventRelation::Annotation()); + const auto &annotations = relatedEvents(evt, EventRelation::AnnotationType); if (!annotations.isEmpty()) { for (const auto &a : annotations) { if (auto e = eventCast(a)) { - if (e->relation().key != reaction) { + if (e->key() != reaction) { continue; } @@ -936,7 +938,10 @@ bool NeoChatRoom::containsUser(const QString &userID) const bool NeoChatRoom::canSendEvent(const QString &eventType) const { - auto plEvent = getCurrentState(); + auto plEvent = currentState().get(); + if (!plEvent) { + return false; + } auto pl = plEvent->powerLevelForEvent(eventType); auto currentPl = plEvent->powerLevelForUser(localUser()->id()); @@ -945,7 +950,10 @@ bool NeoChatRoom::canSendEvent(const QString &eventType) const bool NeoChatRoom::canSendState(const QString &eventType) const { - auto plEvent = getCurrentState(); + auto plEvent = currentState().get(); + if (!plEvent) { + return false; + } auto pl = plEvent->powerLevelForState(eventType); auto currentPl = plEvent->powerLevelForUser(localUser()->id()); @@ -965,7 +973,11 @@ bool NeoChatRoom::isInvite() const bool NeoChatRoom::isUserBanned(const QString &user) const { - return getCurrentState(user)->membership() == MembershipType::Ban; + auto roomMemberEvent = currentState().get(user); + if (!roomMemberEvent) { + return false; + } + return roomMemberEvent->membership() == Membership::Ban; } QString NeoChatRoom::htmlSafeDisplayName() const @@ -980,7 +992,11 @@ void NeoChatRoom::deleteMessagesByUser(const QString &user, const QString &reaso QString NeoChatRoom::joinRule() const { - return getCurrentState()->joinRule(); + auto joinRulesEvent = currentState().get(); + if (joinRulesEvent) { + return {}; + } + return joinRulesEvent->joinRule(); } void NeoChatRoom::setJoinRule(const QString &joinRule) @@ -1114,7 +1130,10 @@ void NeoChatRoom::setUserPowerLevel(const QString &userID, const int &powerLevel int NeoChatRoom::getUserPowerLevel(const QString &userId) const { - auto powerLevelEvent = getCurrentState(); + auto powerLevelEvent = currentState().get(); + if (!powerLevelEvent) { + return 0; + } return powerLevelEvent->powerLevelForUser(userId); } diff --git a/src/pollhandler.cpp b/src/pollhandler.cpp index eee59e146..0fcf9ffe4 100644 --- a/src/pollhandler.cpp +++ b/src/pollhandler.cpp @@ -37,9 +37,12 @@ void PollHandler::setRoom(NeoChatRoom *room) connect(room, &NeoChatRoom::aboutToAddNewMessages, this, [this](Quotient::RoomEventsRange events) { for (const auto &event : events) { if (event->is()) { - auto pl = m_room->getCurrentState(); - auto userPl = pl->powerLevelForUser(event->senderId()); - if (event->senderId() == (*m_room->findInTimeline(m_pollStartEventId))->senderId() || userPl >= pl->redact()) { + auto plEvent = m_room->currentState().get(); + if (!plEvent) { + continue; + } + auto userPl = plEvent->powerLevelForUser(event->senderId()); + if (event->senderId() == (*m_room->findInTimeline(m_pollStartEventId))->senderId() || userPl >= plEvent->redact()) { m_hasEnded = true; m_endedTimestamp = event->originTimestamp(); Q_EMIT hasEndedChanged(); @@ -78,9 +81,12 @@ void PollHandler::checkLoadRelations() connect(job, &BaseJob::success, this, [this, job]() { for (const auto &event : job->chunk()) { if (event->is()) { - auto pl = m_room->getCurrentState(); - auto userPl = pl->powerLevelForUser(event->senderId()); - if (event->senderId() == (*m_room->findInTimeline(m_pollStartEventId))->senderId() || userPl >= pl->redact()) { + auto plEvent = m_room->currentState().get(); + if (!plEvent) { + continue; + } + auto userPl = plEvent->powerLevelForUser(event->senderId()); + if (event->senderId() == (*m_room->findInTimeline(m_pollStartEventId))->senderId() || userPl >= plEvent->redact()) { m_hasEnded = true; m_endedTimestamp = event->originTimestamp(); Q_EMIT hasEndedChanged(); diff --git a/src/stickerevent.h b/src/stickerevent.h deleted file mode 100644 index 42d9b65be..000000000 --- a/src/stickerevent.h +++ /dev/null @@ -1,43 +0,0 @@ -// SPDX-FileCopyrightText: 2020 Carl Schwan -// SPDX-License-Identifier: LGPL-2.1-or-later - -#pragma once - -#include -#include - -namespace Quotient -{ -/// Sticker messages are specialised image messages that are displayed without -/// controls (e.g. no "download" link, or light-box view on click, as would be -/// displayed for for m.image events). -class StickerEvent : public RoomEvent -{ -public: -#ifdef QUOTIENT_07 - QUO_EVENT(StickerEvent, "m.sticker") -#else - DEFINE_EVENT_TYPEID("m.sticker", StickerEvent) -#endif - - explicit StickerEvent(const QJsonObject &obj); - - /// \brief A textual representation or associated description of the - /// sticker image. - /// - /// This could be the alt text of the original image, or a message to - /// accompany and further describe the sticker. - QString body() const; - - /// \brief Metadata about the image referred to in url including a - /// thumbnail representation. - const EventContent::ImageContent &image() const; - - /// \brief The URL to the sticker image. This must be a valid mxc:// URI. - QUrl url() const; - -private: - EventContent::ImageContent m_imageContent; -}; -REGISTER_EVENT_TYPE(StickerEvent) -} diff --git a/src/trayicon_sni.cpp b/src/trayicon_sni.cpp index faf9ec2ca..3561a668a 100644 --- a/src/trayicon_sni.cpp +++ b/src/trayicon_sni.cpp @@ -19,6 +19,8 @@ TrayIcon::TrayIcon(QObject *parent) connect(&WindowController::instance(), &WindowController::windowChanged, this, [this] { #if QT_VERSION > QT_VERSION_CHECK(6, 0, 0) setAssociatedWindow(WindowController::instance().window()); +#else + Q_UNUSED(this); #endif }); }