diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index c28efe23..43fd49fa 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -16,6 +16,7 @@ build-windows:
variables:
APPVEYOR_REPO_BRANCH: "${CI_COMMIT_REF_NAME}"
APPVEYOR_REPO_COMMIT: "${CI_COMMIT_SHORT_SHA}"
+ CMAKE_BUILD_PARALLEL_LEVEL: 8
before_script:
- mkdir -p hunter
- Move-Item -Path hunter -Destination C:/hunter
diff --git a/resources/AppxManifest.xml b/resources/AppxManifest.xml
index b9a090e1..6951c3b7 100644
--- a/resources/AppxManifest.xml
+++ b/resources/AppxManifest.xml
@@ -26,7 +26,7 @@
uap10:RuntimeBehavior="packagedClassicApp"
uap10:TrustLevel="mediumIL">
+ Square44x44Logo="nheko.png" BackgroundColor="transparent" />
diff --git a/src/notifications/Manager.h b/src/notifications/Manager.h
index 0efc9445..707a4fb3 100644
--- a/src/notifications/Manager.h
+++ b/src/notifications/Manager.h
@@ -93,7 +93,9 @@ public:
#if defined(Q_OS_WINDOWS)
private:
- void systemPostNotification(const QString &line1,
+ void systemPostNotification(const QString &roomid,
+ const QString &eventid,
+ const QString &line1,
const QString &line2,
const QString &iconPath,
const QString &bodyImagePath);
diff --git a/src/notifications/ManagerWin.cpp b/src/notifications/ManagerWin.cpp
index 87c49e3c..f1d3797b 100644
--- a/src/notifications/ManagerWin.cpp
+++ b/src/notifications/ManagerWin.cpp
@@ -21,10 +21,21 @@ using namespace WinToastLib;
class CustomHandler : public IWinToastHandler
{
public:
- void toastActivated() const {}
+ CustomHandler(NotificationsManager *manager_, const QString &roomid_, const QString &eventid_)
+ : manager(manager_)
+ , roomid(roomid_)
+ , eventid(eventid_)
+ {
+ }
+
+ void toastActivated() const { manager->notificationClicked(roomid, eventid); }
void toastActivated(int) const {}
void toastFailed() const { std::wcout << L"Error showing current toast" << std::endl; }
void toastDismissed(WinToastDismissalReason) const {}
+
+ NotificationsManager *manager;
+ QString roomid;
+ QString eventid;
};
namespace {
@@ -53,6 +64,8 @@ NotificationsManager::postNotification(const mtx::responses::Notification ¬if
const QImage &icon)
{
const auto room_name = QString::fromStdString(cache::singleRoomInfo(notification.room_id).name);
+ auto roomid = QString::fromStdString(notification.room_id);
+ auto eventid = QString::fromStdString(mtx::accessors::event_id(notification.event));
auto formatNotification = [this, notification] {
const auto template_ = getMessageTemplate(notification);
@@ -75,19 +88,24 @@ NotificationsManager::postNotification(const mtx::responses::Notification ¬if
QString::fromStdString(mtx::accessors::url(notification.event))
.remove(QStringLiteral("mxc://")),
QSize(200, 80),
- [this, room_name, formatNotification, iconPath](QString, QSize, QImage, QString imgPath) {
+ [this, roomid, eventid, room_name, formatNotification, iconPath](
+ QString, QSize, QImage, QString imgPath) {
if (imgPath.isEmpty())
- systemPostNotification(room_name, formatNotification, iconPath, "");
+ systemPostNotification(
+ roomid, eventid, room_name, formatNotification, iconPath, "");
else
- systemPostNotification(room_name, formatNotification, iconPath, imgPath);
+ systemPostNotification(
+ roomid, eventid, room_name, formatNotification, iconPath, imgPath);
});
} else {
- systemPostNotification(room_name, formatNotification, iconPath, "");
+ systemPostNotification(roomid, eventid, room_name, formatNotification, iconPath, "");
}
}
void
-NotificationsManager::systemPostNotification(const QString &line1,
+NotificationsManager::systemPostNotification(const QString &roomid,
+ const QString &eventid,
+ const QString &line1,
const QString &line2,
const QString &iconPath,
const QString &bodyImagePath)
@@ -106,7 +124,7 @@ NotificationsManager::systemPostNotification(const QString &line1,
templ.setAudioPath(WinToastTemplate::IM);
- WinToast::instance()->showToast(templ, new CustomHandler());
+ WinToast::instance()->showToast(templ, new CustomHandler(this, roomid, eventid));
}
// clang-format off