Force notification windows to raise when unlocking screen on Windows

This commit is contained in:
gaelle 2026-02-20 11:27:29 +01:00 committed by Gaelle Braud
parent 6166a2f0fb
commit 2e46a59396
10 changed files with 188 additions and 66 deletions

View file

@ -1050,6 +1050,10 @@ void App::initFonts() {
void App::clean() {
mDateUpdateTimer.stop();
#ifdef Q_OS_WIN
removeNativeEventFilter(mLockEventFilter);
delete mLockEventFilter;
#endif
if (mEngine) {
mEngine->clearComponentCache();
mEngine->clearSingletons();
@ -1307,11 +1311,20 @@ QQuickWindow *App::getMainWindow() const {
}
void App::setMainWindow(QQuickWindow *data) {
if (mMainWindow) disconnect(mMainWindow, &QQuickWindow::activeChanged, this, nullptr);
if (mMainWindow) {
disconnect(mMainWindow, &QQuickWindow::activeChanged, this, nullptr);
}
if (mMainWindow != data) {
mMainWindow = data;
connect(mMainWindow, &QQuickWindow::activeChanged, this, &App::handleAppActivity);
handleAppActivity();
mMainWindow->winId();
#ifdef Q_OS_WIN
WTSRegisterSessionNotification(reinterpret_cast<HWND>(mMainWindow->winId()), NOTIFY_FOR_THIS_SESSION);
#endif
emit mainWindowChanged();
}
}
@ -1590,7 +1603,6 @@ void App::setSysTrayIcon() {
(mSystemTrayIcon ? mSystemTrayIcon
: new QSystemTrayIcon(nullptr)); // Workaround : QSystemTrayIcon cannot be deleted because
// of setContextMenu (indirectly)
// trayIcon: Right click actions.
QAction *restoreAction = nullptr;
if (mSettings && !mSettings->getExitOnClose()) {
@ -1652,6 +1664,13 @@ void App::setSysTrayIcon() {
systemTrayIcon->show();
if (!mSystemTrayIcon) mSystemTrayIcon = systemTrayIcon;
if (!QSystemTrayIcon::isSystemTrayAvailable()) qInfo() << "System tray is not available";
//
#ifdef Q_OS_WIN
if (!mLockEventFilter) mLockEventFilter = new LockEventFilter();
connect(mLockEventFilter, &LockEventFilter::sessionUnlocked, this, [this] { emit sessionUnlocked(); });
installNativeEventFilter(mLockEventFilter);
#endif
}
//-----------------------------------------------------------

View file

@ -29,6 +29,7 @@
#include "core/chat/ChatGui.hpp"
#include "core/chat/ChatList.hpp"
#include "core/conference/ConferenceInfoList.hpp"
#include "core/event-filter/LockEventFilter.hpp"
#include "core/setting/SettingsCore.hpp"
#include "core/singleapplication/singleapplication.h"
#include "model/cli/CliModel.hpp"
@ -231,6 +232,9 @@ signals:
void lForceOidcTimeout();
void remainingTimeBeforeOidcTimeoutChanged();
void currentAccountChanged();
#ifdef Q_OS_WIN
void sessionUnlocked();
#endif
// void executeCommand(QString command);
private:
@ -248,6 +252,9 @@ private:
QQuickWindow *mMainWindow = nullptr;
QQuickWindow *mCallsWindow = nullptr;
QQuickWindow *mLastActiveWindow = nullptr;
#ifdef Q_OS_WIN
LockEventFilter *mLockEventFilter = nullptr;
#endif
// Holds the current chat displayed in the view
// to know if we need to display the notification
ChatGui *mCurrentChat = nullptr;

View file

@ -40,6 +40,7 @@ list(APPEND _LINPHONEAPP_SOURCES
core/emoji/EmojiModel.cpp
core/emoji/EmojiProxy.cpp
core/event-count-notifier/AbstractEventCountNotifier.cpp
core/event-filter/LockEventFilter.cpp
core/fps-counter/FPSCounter.cpp
core/friend/FriendCore.cpp
core/friend/FriendGui.cpp

View file

@ -0,0 +1,40 @@
/*
* Copyright (c) 2010-2026 Belledonne Communications SARL.
*
* This file is part of linphone-desktop
* (see https://www.linphone.org).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "LockEventFilter.hpp"
LockEventFilter::LockEventFilter(QObject *parent) : QObject(parent) {
}
bool LockEventFilter::nativeEventFilter(const QByteArray &eventType, void *message, qintptr *result) {
#ifdef Q_OS_WIN
MSG *msg = static_cast<MSG *>(message);
if (msg->message == WM_WTSSESSION_CHANGE) {
if (msg->wParam == WTS_SESSION_LOCK) {
return true;
} else {
emit sessionUnlocked();
return true;
}
}
#endif
return false;
}

View file

@ -0,0 +1,46 @@
/*
* Copyright (c) 2010-2026 Belledonne Communications SARL.
*
* This file is part of linphone-desktop
* (see https://www.linphone.org).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef LOCKEVENTFILTER_H
#define LOCKEVENTFILTER_H
#include "tool/Utils.hpp"
#include <QAbstractNativeEventFilter>
#ifdef Q_OS_WIN
#include <Windows.h>
#include <WtsApi32.h>
#include <qwindowdefs_win.h>
#pragma comment(lib, "Wtsapi32.lib")
#endif
class LockEventFilter : public QObject, public QAbstractNativeEventFilter {
Q_OBJECT
public:
LockEventFilter(QObject *parent = nullptr);
// virtual bool nativeEventFilter(const QByteArray &eventType, void *message, qintptr *result) override;
virtual bool nativeEventFilter(const QByteArray &eventType, void *message, qintptr *result) override;
signals:
void sessionUnlocked();
};
#endif // LOCKEVENTFILTER_H

View file

@ -213,8 +213,17 @@ void Notifier::showNotification(QQuickWindow *notification, int timeout) {
timer->setInterval(timeout);
timer->setSingleShot(true);
notification->setProperty(NotificationPropertyTimer, QVariant::fromValue(timer));
#ifdef Q_OS_WIN
QObject::connect(App::getInstance(), &App::sessionUnlocked, notification, [this, notification] {
lInfo() << log().arg("Windows : screen unlocked, force raising notification");
notification->show();
notification->raise();
notification->requestActivate();
});
#endif
notification->show();
notification->raise();
notification->requestActivate();
// Destroy it after timeout.
QObject::connect(timer, &QTimer::timeout, this,

View file

@ -735,80 +735,80 @@
<translation>nicht erreichbar</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1106"/>
<location filename="../../core/App.cpp" line="1110"/>
<source>application_description</source>
<extracomment>&quot;A free and open source SIP video-phone.&quot;</extracomment>
<translation>Ein kostenloses Open-Source SIP Video-Telefon.</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1108"/>
<location filename="../../core/App.cpp" line="1112"/>
<source>command_line_arg_order</source>
<extracomment>&quot;Send an order to the application towards a command line&quot;</extracomment>
<translation>Kommandozeilen-Befehl an die Anwendung schicken</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1112"/>
<location filename="../../core/App.cpp" line="1116"/>
<source>command_line_option_show_help</source>
<translation>Zeige Hilfe</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1117"/>
<location filename="../../core/App.cpp" line="1121"/>
<source>command_line_option_show_app_version</source>
<translation>App-Version anzeigen</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1125"/>
<location filename="../../core/App.cpp" line="1129"/>
<source>command_line_option_config_to_fetch</source>
<extracomment>&quot;Specify the linphone configuration file to be fetched. It will be merged with the current configuration.&quot;</extracomment>
<translation>Abzurufende Linphone-Konfigurationsdatei angeben. Sie wird mit der aktuellen Konfiguration zusammengeführt.</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1127"/>
<location filename="../../core/App.cpp" line="1131"/>
<source>command_line_option_config_to_fetch_arg</source>
<extracomment>&quot;URL, path or file&quot;</extracomment>
<translation>URL, Pfad oder Datei</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1132"/>
<location filename="../../core/App.cpp" line="1136"/>
<source>command_line_option_minimized</source>
<translation>Minimieren</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1135"/>
<location filename="../../core/App.cpp" line="1139"/>
<source>command_line_option_log_to_stdout</source>
<translation>Debug-Informationen auf der Standardausgabe ausgeben</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1138"/>
<location filename="../../core/App.cpp" line="1142"/>
<source>command_line_option_print_app_logs_only</source>
<extracomment>&quot;Print only logs from the application&quot;</extracomment>
<translation>Nur Anwendungs-Logs ausgeben</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1605"/>
<location filename="../../core/App.cpp" line="1613"/>
<source>hide_action</source>
<extracomment>&quot;Cacher&quot; &quot;Afficher&quot;</extracomment>
<translation>Ausblenden</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1605"/>
<location filename="../../core/App.cpp" line="1613"/>
<source>show_action</source>
<translation>Zeigen</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1620"/>
<location filename="../../core/App.cpp" line="1628"/>
<source>quit_action</source>
<extracomment>&quot;Quitter&quot;</extracomment>
<translation>Beenden</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1638"/>
<location filename="../../core/App.cpp" line="1646"/>
<source>check_for_update</source>
<extracomment>Check for update</extracomment>
<translation>Auf Updates prüfen</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1765"/>
<location filename="../../core/App.cpp" line="1780"/>
<source>mark_all_read_action</source>
<translation>Alle als gelesen markieren</translation>
</message>
@ -5120,42 +5120,42 @@ Ablauf: %1</translation>
<context>
<name>Notifier</name>
<message>
<location filename="../../core/notifier/Notifier.cpp" line="307"/>
<location filename="../../core/notifier/Notifier.cpp" line="318"/>
<source>new_call_alert_accessible_name</source>
<extracomment>New call from %1</extracomment>
<translation>Neuer Anruf von %1</translation>
</message>
<message>
<location filename="../../core/notifier/Notifier.cpp" line="362"/>
<location filename="../../core/notifier/Notifier.cpp" line="373"/>
<source>new_voice_message</source>
<extracomment>&apos;Voice message received!&apos; : message to warn the user in a notification for voice messages.</extracomment>
<translation>Sprachnachricht empfangen!</translation>
</message>
<message>
<location filename="../../core/notifier/Notifier.cpp" line="363"/>
<location filename="../../core/notifier/Notifier.cpp" line="374"/>
<source>new_file_message</source>
<translation>Datei empfangen!</translation>
</message>
<message>
<location filename="../../core/notifier/Notifier.cpp" line="366"/>
<location filename="../../core/notifier/Notifier.cpp" line="377"/>
<source>new_conference_invitation</source>
<extracomment>&apos;Conference invitation received!&apos; : Notification about receiving an invitation to a conference.</extracomment>
<translation>Konferenzeinladung erhalten!</translation>
</message>
<message>
<location filename="../../core/notifier/Notifier.cpp" line="388"/>
<location filename="../../core/notifier/Notifier.cpp" line="399"/>
<source>new_chat_room_message</source>
<extracomment>&apos;New message received!&apos; Notification that warn the user of a new message.</extracomment>
<translation>Neue Nachricht empfangen!</translation>
</message>
<message>
<location filename="../../core/notifier/Notifier.cpp" line="391"/>
<location filename="../../core/notifier/Notifier.cpp" line="402"/>
<source>new_chat_room_messages</source>
<extracomment>&apos;New messages received!&apos; Notification that warn the user of new messages.</extracomment>
<translation>Neue Nachrichten erhalten!</translation>
</message>
<message>
<location filename="../../core/notifier/Notifier.cpp" line="419"/>
<location filename="../../core/notifier/Notifier.cpp" line="430"/>
<source>new_message_alert_accessible_name</source>
<extracomment>New message on chatroom %1</extracomment>
<translation>Neue Nachricht im Chat %1</translation>

View file

@ -716,80 +716,80 @@
<translation>not reachable</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1106"/>
<location filename="../../core/App.cpp" line="1110"/>
<source>application_description</source>
<extracomment>&quot;A free and open source SIP video-phone.&quot;</extracomment>
<translation>A free and open source SIP video-phone.</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1108"/>
<location filename="../../core/App.cpp" line="1112"/>
<source>command_line_arg_order</source>
<extracomment>&quot;Send an order to the application towards a command line&quot;</extracomment>
<translation>Send an order to the application towards a command line</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1112"/>
<location filename="../../core/App.cpp" line="1116"/>
<source>command_line_option_show_help</source>
<translation>Show this help</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1117"/>
<location filename="../../core/App.cpp" line="1121"/>
<source>command_line_option_show_app_version</source>
<translation>Show app version</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1125"/>
<location filename="../../core/App.cpp" line="1129"/>
<source>command_line_option_config_to_fetch</source>
<extracomment>&quot;Specify the linphone configuration file to be fetched. It will be merged with the current configuration.&quot;</extracomment>
<translation>Specify the linphone configuration file to be fetched. It will be merged with the current configuration.</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1127"/>
<location filename="../../core/App.cpp" line="1131"/>
<source>command_line_option_config_to_fetch_arg</source>
<extracomment>&quot;URL, path or file&quot;</extracomment>
<translation>URL, path or file</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1132"/>
<location filename="../../core/App.cpp" line="1136"/>
<source>command_line_option_minimized</source>
<translation>Minimize</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1135"/>
<location filename="../../core/App.cpp" line="1139"/>
<source>command_line_option_log_to_stdout</source>
<translation>Log to stdout some debug information while running</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1138"/>
<location filename="../../core/App.cpp" line="1142"/>
<source>command_line_option_print_app_logs_only</source>
<extracomment>&quot;Print only logs from the application&quot;</extracomment>
<translation>Print only logs from the application</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1605"/>
<location filename="../../core/App.cpp" line="1613"/>
<source>hide_action</source>
<extracomment>&quot;Cacher&quot; &quot;Afficher&quot;</extracomment>
<translation>Hide</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1605"/>
<location filename="../../core/App.cpp" line="1613"/>
<source>show_action</source>
<translation>Show</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1620"/>
<location filename="../../core/App.cpp" line="1628"/>
<source>quit_action</source>
<extracomment>&quot;Quitter&quot;</extracomment>
<translation>Quit</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1638"/>
<location filename="../../core/App.cpp" line="1646"/>
<source>check_for_update</source>
<extracomment>Check for update</extracomment>
<translation>Check for update</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1765"/>
<location filename="../../core/App.cpp" line="1780"/>
<source>mark_all_read_action</source>
<translation>Marquer tout comme lu</translation>
</message>
@ -5009,42 +5009,42 @@ Expiration : %1</translation>
<context>
<name>Notifier</name>
<message>
<location filename="../../core/notifier/Notifier.cpp" line="307"/>
<location filename="../../core/notifier/Notifier.cpp" line="318"/>
<source>new_call_alert_accessible_name</source>
<extracomment>New call from %1</extracomment>
<translation>New call from %1</translation>
</message>
<message>
<location filename="../../core/notifier/Notifier.cpp" line="362"/>
<location filename="../../core/notifier/Notifier.cpp" line="373"/>
<source>new_voice_message</source>
<extracomment>&apos;Voice message received!&apos; : message to warn the user in a notification for voice messages.</extracomment>
<translation>Voice message received!</translation>
</message>
<message>
<location filename="../../core/notifier/Notifier.cpp" line="363"/>
<location filename="../../core/notifier/Notifier.cpp" line="374"/>
<source>new_file_message</source>
<translation>File received!</translation>
</message>
<message>
<location filename="../../core/notifier/Notifier.cpp" line="366"/>
<location filename="../../core/notifier/Notifier.cpp" line="377"/>
<source>new_conference_invitation</source>
<extracomment>&apos;Conference invitation received!&apos; : Notification about receiving an invitation to a conference.</extracomment>
<translation>Conference invitation received !</translation>
</message>
<message>
<location filename="../../core/notifier/Notifier.cpp" line="388"/>
<location filename="../../core/notifier/Notifier.cpp" line="399"/>
<source>new_chat_room_message</source>
<extracomment>&apos;New message received!&apos; Notification that warn the user of a new message.</extracomment>
<translation>New message received!</translation>
</message>
<message>
<location filename="../../core/notifier/Notifier.cpp" line="391"/>
<location filename="../../core/notifier/Notifier.cpp" line="402"/>
<source>new_chat_room_messages</source>
<extracomment>&apos;New messages received!&apos; Notification that warn the user of new messages.</extracomment>
<translation>New messages received !</translation>
</message>
<message>
<location filename="../../core/notifier/Notifier.cpp" line="419"/>
<location filename="../../core/notifier/Notifier.cpp" line="430"/>
<source>new_message_alert_accessible_name</source>
<extracomment>New message on chatroom %1</extracomment>
<translation>New message on chatroom %1</translation>

View file

@ -711,80 +711,80 @@
<translation>indisponible</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1106"/>
<location filename="../../core/App.cpp" line="1110"/>
<source>application_description</source>
<extracomment>&quot;A free and open source SIP video-phone.&quot;</extracomment>
<translation>A free and open source SIP video-phone.</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1108"/>
<location filename="../../core/App.cpp" line="1112"/>
<source>command_line_arg_order</source>
<extracomment>&quot;Send an order to the application towards a command line&quot;</extracomment>
<translation>Donner un ordre à l&apos;application depuis l&apos;invite de commandes</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1112"/>
<location filename="../../core/App.cpp" line="1116"/>
<source>command_line_option_show_help</source>
<translation>Show this help</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1117"/>
<location filename="../../core/App.cpp" line="1121"/>
<source>command_line_option_show_app_version</source>
<translation>Afficher la version de l&apos;application</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1125"/>
<location filename="../../core/App.cpp" line="1129"/>
<source>command_line_option_config_to_fetch</source>
<extracomment>&quot;Specify the linphone configuration file to be fetched. It will be merged with the current configuration.&quot;</extracomment>
<translation>Specify the linphone configuration file to be fetched. It will be merged with the current configuration.</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1127"/>
<location filename="../../core/App.cpp" line="1131"/>
<source>command_line_option_config_to_fetch_arg</source>
<extracomment>&quot;URL, path or file&quot;</extracomment>
<translation>URL, path or file</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1132"/>
<location filename="../../core/App.cpp" line="1136"/>
<source>command_line_option_minimized</source>
<translation>Minimiser</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1135"/>
<location filename="../../core/App.cpp" line="1139"/>
<source>command_line_option_log_to_stdout</source>
<translation>Log to stdout some debug information while running</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1138"/>
<location filename="../../core/App.cpp" line="1142"/>
<source>command_line_option_print_app_logs_only</source>
<extracomment>&quot;Print only logs from the application&quot;</extracomment>
<translation>Print only logs from the application</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1605"/>
<location filename="../../core/App.cpp" line="1613"/>
<source>hide_action</source>
<extracomment>&quot;Cacher&quot; &quot;Afficher&quot;</extracomment>
<translation>Cacher</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1605"/>
<location filename="../../core/App.cpp" line="1613"/>
<source>show_action</source>
<translation>Afficher</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1620"/>
<location filename="../../core/App.cpp" line="1628"/>
<source>quit_action</source>
<extracomment>&quot;Quitter&quot;</extracomment>
<translation>Quitter</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1638"/>
<location filename="../../core/App.cpp" line="1646"/>
<source>check_for_update</source>
<extracomment>Check for update</extracomment>
<translation>Rechercher une mise à jour</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1765"/>
<location filename="../../core/App.cpp" line="1780"/>
<source>mark_all_read_action</source>
<translation>Marquer tout comme lu</translation>
</message>
@ -4980,42 +4980,42 @@ Expiration : %1</translation>
<context>
<name>Notifier</name>
<message>
<location filename="../../core/notifier/Notifier.cpp" line="307"/>
<location filename="../../core/notifier/Notifier.cpp" line="318"/>
<source>new_call_alert_accessible_name</source>
<extracomment>New call from %1</extracomment>
<translation>Nouvel appel de %1</translation>
</message>
<message>
<location filename="../../core/notifier/Notifier.cpp" line="362"/>
<location filename="../../core/notifier/Notifier.cpp" line="373"/>
<source>new_voice_message</source>
<extracomment>&apos;Voice message received!&apos; : message to warn the user in a notification for voice messages.</extracomment>
<translation>Message vocal reçu !</translation>
</message>
<message>
<location filename="../../core/notifier/Notifier.cpp" line="363"/>
<location filename="../../core/notifier/Notifier.cpp" line="374"/>
<source>new_file_message</source>
<translation>Fichier reçu !</translation>
</message>
<message>
<location filename="../../core/notifier/Notifier.cpp" line="366"/>
<location filename="../../core/notifier/Notifier.cpp" line="377"/>
<source>new_conference_invitation</source>
<extracomment>&apos;Conference invitation received!&apos; : Notification about receiving an invitation to a conference.</extracomment>
<translation>Nouvelle invitation à une conférence !</translation>
</message>
<message>
<location filename="../../core/notifier/Notifier.cpp" line="388"/>
<location filename="../../core/notifier/Notifier.cpp" line="399"/>
<source>new_chat_room_message</source>
<extracomment>&apos;New message received!&apos; Notification that warn the user of a new message.</extracomment>
<translation>Nouveau message reçu</translation>
</message>
<message>
<location filename="../../core/notifier/Notifier.cpp" line="391"/>
<location filename="../../core/notifier/Notifier.cpp" line="402"/>
<source>new_chat_room_messages</source>
<extracomment>&apos;New messages received!&apos; Notification that warn the user of new messages.</extracomment>
<translation>Nouveaux messages reçus !</translation>
</message>
<message>
<location filename="../../core/notifier/Notifier.cpp" line="419"/>
<location filename="../../core/notifier/Notifier.cpp" line="430"/>
<source>new_message_alert_accessible_name</source>
<extracomment>New message on chatroom %1</extracomment>
<translation>Nouveau message sur la conversation %1</translation>

View file

@ -40,7 +40,7 @@ Window {
property bool showAsTool : false
// Don't use Popup for flags : it could lead to error in geometry. On Mac, Using Tool ensure to have the Window on Top and fullscreen independant
// flags: Qt.WindowDoesNotAcceptFocus | Qt.BypassWindowManagerHint | (showAsTool?Qt.Tool:Qt.WindowStaysOnTopHint) | Qt.Window | Qt.FramelessWindowHint;
flags: Qt.SplashScreen | Qt.WindowStaysOnTopHint | Qt.WindowDoesNotAcceptFocus | Qt.FramelessWindowHint
flags: Qt.SplashScreen | Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint
opacity: 1.0
height: _content[0] != null ? _content[0].height : 0
width: _content[0] != null ? _content[0].width : 0