Skip to content

Commit c7dd24e

Browse files
committed
Fix clean shutdown by using QueuedConnection and calling QApplication::quit()
1 parent a0381e7 commit c7dd24e

1 file changed

Lines changed: 5 additions & 1 deletion

File tree

src/QtTrayMenu.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ int QtTrayMenu::init(struct tray *tray, const bool notification) {
8181
connect(trayIcon, &QSystemTrayIcon::activated, this, &QtTrayMenu::onTrayActivated);
8282
connect(trayIcon, &QSystemTrayIcon::messageClicked, this, &QtTrayMenu::onMessageClicked);
8383
connect(this, &QtTrayMenu::update, this, &QtTrayMenu::onUpdate);
84-
connect(this, &QtTrayMenu::exit, this, &QtTrayMenu::onExitRequested);
84+
connect(this, &QtTrayMenu::exit, this, &QtTrayMenu::onExitRequested, Qt::QueuedConnection);
8585
connect(this, &QtTrayMenu::showMenu, this, &QtTrayMenu::onShowMenu);
8686

8787
updateMenu(tray->menu);
@@ -149,6 +149,10 @@ void QtTrayMenu::onExitRequested() {
149149
}
150150
// Unset tray structure
151151
trayStruct = nullptr;
152+
153+
// Quit the Qt event loop so that QApplication::exec() returns,
154+
// allowing the main loop to exit and the application to shut down cleanly.
155+
QApplication::quit();
152156
}
153157

154158
void QtTrayMenu::updateMenu(struct tray_menu *items) {

0 commit comments

Comments
 (0)