diff --git a/tools/chatgui/src/user_activity_monitor.cpp b/tools/chatgui/src/user_activity_monitor.cpp index b6accb28..b69117b5 100644 --- a/tools/chatgui/src/user_activity_monitor.cpp +++ b/tools/chatgui/src/user_activity_monitor.cpp @@ -184,6 +184,8 @@ void UserActivityMonitor::useLocalActivity() { } qint64 UserActivityMonitor::systemIdleTime() { + const QString platform = QGuiApplication::platformName(); + if (platform == "offscreen" || platform == "minimal") return -1; #ifdef Q_OS_WIN LASTINPUTINFO info = {sizeof(info), 0}; if (!GetLastInputInfo(&info)) { GUI_WARN("activity: GetLastInputInfo failed error=%lu", GetLastError()); return -1; } diff --git a/tools/chatgui/tests/test_message_notification.cpp b/tools/chatgui/tests/test_message_notification.cpp index 279aee88..8c9fe52b 100644 --- a/tools/chatgui/tests/test_message_notification.cpp +++ b/tools/chatgui/tests/test_message_notification.cpp @@ -154,6 +154,24 @@ private slots: QCOMPARE(activated.size(), 1); } + void remappingKeepsControlsUsable() { + MessageNotification notification; + QSignalSpy activated(¬ification, &MessageNotification::activated); + notification.showMessage("42", "Alice", "First channel", {}); + notification.showMessage("dm:7", "Bob", "Second channel", {}); + QVERIFY(notification.isVisible()); + auto* closeButton = notification.findChild("notificationCloseButton"); + QVERIFY(closeButton); + QTest::mouseClick(closeButton, Qt::LeftButton); + QVERIFY(!notification.isVisible()); + notification.showMessage("43", "Charlie", "Third channel", {}); + QVERIFY(notification.isVisible()); + QTest::mouseClick(¬ification, Qt::LeftButton, Qt::NoModifier, QPoint(30, notification.height() - 15)); + QVERIFY(!notification.isVisible()); + QCOMPARE(activated.size(), 1); + QCOMPARE(activated[0][0].toString(), QString("43")); + } + #ifdef UTUN_TEST_ACTIVITY_DBUS void gnomeIdleAndStaleReplies() { // Разные соединения исключают прямой вызов внутри Qt, чтобы задержка действительно прошла через D-Bus.