/* SPDX-FileCopyrightText: 2024 David Edmundson SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL */ #include "notificationwindow.h" #include #include #include NotificationWindow::NotificationWindow() : PlasmaQuick::PlasmaWindow() { PlasmaShellWaylandIntegration::get(this)->setRole(QtWayland::org_kde_plasma_surface::role_notification); PlasmaShellWaylandIntegration::get(this)->setTakesFocus(false); if (KWindowSystem::isPlatformX11()) { KX11Extras::setOnAllDesktops(winId(), true); KX11Extras::setType(winId(), NET::Notification); } } NotificationWindow::~NotificationWindow() { } bool NotificationWindow::takeFocus() const { return m_takeFocus; } void NotificationWindow::setTakeFocus(bool takeFocus) { if (m_takeFocus == takeFocus) { return; } PlasmaShellWaylandIntegration::get(this)->setTakesFocus(takeFocus); QWindow::setFlag(Qt::WindowDoesNotAcceptFocus, !takeFocus); m_takeFocus = takeFocus; Q_EMIT takeFocusChanged(); } bool NotificationWindow::isCritical() const { return m_critial; } void NotificationWindow::setIsCritical(bool critical) { if (m_critial == critical) { return; } m_critial = critical; auto role = critical ? QtWayland::org_kde_plasma_surface::role_criticalnotification : QtWayland::org_kde_plasma_surface::role_notification; PlasmaShellWaylandIntegration::get(this)->setRole(role); if (KWindowSystem::isPlatformX11()) { KX11Extras::setType(winId(), critical ? NET::CriticalNotification : NET::Notification); } Q_EMIT isCriticalChanged(); } void NotificationWindow::moveEvent(QMoveEvent *me) { PlasmaShellWaylandIntegration::get(this)->setPosition(me->pos()); PlasmaWindow::moveEvent(me); }