diff options
Diffstat (limited to 'src/widgets/util/qsystemtrayicon_qpa.cpp')
-rw-r--r-- | src/widgets/util/qsystemtrayicon_qpa.cpp | 63 |
1 files changed, 18 insertions, 45 deletions
diff --git a/src/widgets/util/qsystemtrayicon_qpa.cpp b/src/widgets/util/qsystemtrayicon_qpa.cpp index c0bf058681..63b24873db 100644 --- a/src/widgets/util/qsystemtrayicon_qpa.cpp +++ b/src/widgets/util/qsystemtrayicon_qpa.cpp @@ -1,47 +1,12 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtWidgets module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #include "qsystemtrayicon_p.h" #include <QtGui/qpa/qplatformsystemtrayicon.h> #include <qpa/qplatformtheme.h> #include <private/qguiapplication_p.h> +#include <private/qhighdpiscaling_p.h> #include <QApplication> #include <QStyle> @@ -52,7 +17,7 @@ QT_BEGIN_NAMESPACE QSystemTrayIconPrivate::QSystemTrayIconPrivate() : qpa_sys(QGuiApplicationPrivate::platformTheme()->createPlatformSystemTrayIcon()) - , visible(false) + , visible(false), trayWatcher(nullptr) { } @@ -75,10 +40,14 @@ void QSystemTrayIconPrivate::remove_sys() QRect QSystemTrayIconPrivate::geometry_sys() const { - if (qpa_sys) - return qpa_sys->geometry(); - else + if (!qpa_sys) return QRect(); + auto screen = QGuiApplication::primaryScreen(); +#if QT_CONFIG(menu) + if (menu) + screen = menu->screen(); +#endif + return QHighDpi::fromNativePixels(qpa_sys->geometry(), screen); } void QSystemTrayIconPrivate::updateIcon_sys() @@ -90,9 +59,13 @@ void QSystemTrayIconPrivate::updateIcon_sys() void QSystemTrayIconPrivate::updateMenu_sys() { #if QT_CONFIG(menu) - if (qpa_sys && menu) { - addPlatformMenu(menu); - qpa_sys->updateMenu(menu->platformMenu()); + if (qpa_sys) { + if (menu) { + addPlatformMenu(menu); + qpa_sys->updateMenu(menu->platformMenu()); + } else { + qpa_sys->updateMenu(nullptr); + } } #endif } |