Support raising when we receive a notification

This commit is contained in:
Aleix Pol
2021-12-03 17:16:35 +01:00
committed by Aleix Pol Gonzalez
parent 8722c99c93
commit 284a1734ae
3 changed files with 20 additions and 3 deletions

View File

@@ -352,9 +352,14 @@ Kirigami.ApplicationWindow {
showPassiveNotification(i18n("%1: %2", error, detail)); showPassiveNotification(i18n("%1: %2", error, detail));
} }
function onShowWindow() { function onShowWindow(token = null) {
root.showWindow() root.showWindow()
root.raise() if (token && KWindowSystem) {
KWindowSystem.setCurrentXdgActivationToken(basicNotification.xdgActivationToken)
KWindowSystem.activateWindow(root)
} else {
root.raise()
}
} }
function onUserConsentRequired(url) { function onUserConsentRequired(url) {

View File

@@ -68,7 +68,7 @@
using namespace Quotient; using namespace Quotient;
#ifdef HAVE_KDBUSADDONS #ifdef HAVE_WINDOWSYSTEM
static void raiseWindow(QWindow *window) static void raiseWindow(QWindow *window)
{ {
if (KWindowSystem::isPlatformWayland()) { if (KWindowSystem::isPlatformWayland()) {
@@ -209,6 +209,12 @@ int main(int argc, char *argv[])
qRegisterMetaType<GetRoomEventsJob *>("GetRoomEventsJob*"); qRegisterMetaType<GetRoomEventsJob *>("GetRoomEventsJob*");
qRegisterMetaType<QMimeType>("QMimeType"); qRegisterMetaType<QMimeType>("QMimeType");
#ifdef HAVE_WINDOWSYSTEM
qmlRegisterSingletonType<KWindowSystem>("org.kde.kwindowsystem.private", 1, 0, "KWindowSystem", [](QQmlEngine *, QJSEngine *) -> QObject * {
return KWindowSystem::self();
});
#endif
qRegisterMetaTypeStreamOperators<Emoji>(); qRegisterMetaTypeStreamOperators<Emoji>();
QQmlApplicationEngine engine; QQmlApplicationEngine engine;

View File

@@ -11,6 +11,9 @@
#include "knotifications_version.h" #include "knotifications_version.h"
#include <KLocalizedString> #include <KLocalizedString>
#include <KNotification> #include <KNotification>
#ifdef HAVE_WINDOWSYSTEM
#include <KWindowSystem>
#endif
#if KNOTIFICATIONS_VERSION >= QT_VERSION_CHECK(5, 81, 0) #if KNOTIFICATIONS_VERSION >= QT_VERSION_CHECK(5, 81, 0)
#include <KNotificationReplyAction> #include <KNotificationReplyAction>
#endif #endif
@@ -85,6 +88,9 @@ void NotificationsManager::postInviteNotification(NeoChatRoom *room, const QStri
notification->setPixmap(img); notification->setPixmap(img);
notification->setDefaultAction(i18n("Open this invitation in NeoChat")); notification->setDefaultAction(i18n("Open this invitation in NeoChat"));
connect(notification, &KNotification::defaultActivated, this, [=]() { connect(notification, &KNotification::defaultActivated, this, [=]() {
#ifdef HAVE_WINDOWSYSTEM
KWindowSystem::setCurrentXdgActivationToken(notification->xdgActivationToken());
#endif
RoomManager::instance().enterRoom(room); RoomManager::instance().enterRoom(room);
Q_EMIT Controller::instance().showWindow(); Q_EMIT Controller::instance().showWindow();
}); });