From a14c2657dfa483762036b3e1772a73086b0a1790 Mon Sep 17 00:00:00 2001 From: Ronan Abhamon Date: Fri, 24 Mar 2017 11:12:25 +0100 Subject: [PATCH] feat(src/app/App): do not delete explicitly calls/settings windows, set parent to tray icon --- linphone-desktop/src/app/App.cpp | 22 ++++++++++------------ linphone-desktop/src/app/App.hpp | 3 --- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/linphone-desktop/src/app/App.cpp b/linphone-desktop/src/app/App.cpp index 1d08556d8..0cf3a086d 100644 --- a/linphone-desktop/src/app/App.cpp +++ b/linphone-desktop/src/app/App.cpp @@ -88,9 +88,6 @@ App::App (int &argc, char *argv[]) : SingleApplication(argc, argv, true) { App::~App () { qInfo() << "Destroying app..."; - delete m_calls_window; - delete m_settings_window; - delete m_system_tray_icon; } // ----------------------------------------------------------------------------- @@ -221,10 +218,11 @@ inline QQuickWindow *createSubWindow (App *app, const char *path) { abort(); } - QQuickWindow *window = qobject_cast(component.create()); - QQmlEngine::setObjectOwnership(window, QQmlEngine::CppOwnership); + QObject *object = component.create(); + QQmlEngine::setObjectOwnership(object, QQmlEngine::CppOwnership); + object->setParent(app->getMainWindow()); - return window; + return qobject_cast(object); } // ----------------------------------------------------------------------------- @@ -329,8 +327,8 @@ void App::registerTypes () { // ----------------------------------------------------------------------------- void App::setTrayIcon () { - QSystemTrayIcon *m_system_tray_icon = new QSystemTrayIcon(); QQuickWindow *root = getMainWindow(); + QSystemTrayIcon *system_tray_icon = new QSystemTrayIcon(root); // trayIcon: Right click actions. QAction *quit_action = new QAction("Quit", root); @@ -342,7 +340,7 @@ void App::setTrayIcon () { // trayIcon: Left click actions. QMenu *menu = new QMenu(); root->connect( - m_system_tray_icon, &QSystemTrayIcon::activated, [root]( + system_tray_icon, &QSystemTrayIcon::activated, [root]( QSystemTrayIcon::ActivationReason reason ) { if (reason == QSystemTrayIcon::Trigger) { @@ -359,10 +357,10 @@ void App::setTrayIcon () { menu->addSeparator(); menu->addAction(quit_action); - m_system_tray_icon->setContextMenu(menu); - m_system_tray_icon->setIcon(QIcon(WINDOW_ICON_PATH)); - m_system_tray_icon->setToolTip("Linphone"); - m_system_tray_icon->show(); + system_tray_icon->setContextMenu(menu); + system_tray_icon->setIcon(QIcon(WINDOW_ICON_PATH)); + system_tray_icon->setToolTip("Linphone"); + system_tray_icon->show(); } // ----------------------------------------------------------------------------- diff --git a/linphone-desktop/src/app/App.hpp b/linphone-desktop/src/app/App.hpp index 7f3348ed0..40d3505f2 100644 --- a/linphone-desktop/src/app/App.hpp +++ b/linphone-desktop/src/app/App.hpp @@ -33,7 +33,6 @@ // ============================================================================= class DefaultTranslator; -class QSystemTrayIcon; class App : public SingleApplication { Q_OBJECT; @@ -101,8 +100,6 @@ private: QQuickWindow *m_calls_window = nullptr; QQuickWindow *m_settings_window = nullptr; - - QSystemTrayIcon *m_system_tray_icon = nullptr; }; #endif // APP_H_