I am trying to add a tray icon with a popup menu that lets the user close the app, but for some reason the app does not close until the main window or the tray icon is clicked a second time after quit.
I can see that the call to the below method is being made when I choose to quit the app:
void JUCEApplicationBase::quit()
{
MessageManager::getInstance()->stopDispatchLoop();
}
…but the last line in main is not reached until the tray icon is clicked again:
int JUCEApplicationBase::main()
{
ScopedJuceInitialiser_GUI libraryInitialiser;
jassert (createInstance != nullptr);
const std::unique_ptr<JUCEApplicationBase> app (createInstance());
jassert (app != nullptr);
if (! app->initialiseApp())
return app->shutdownApp();
JUCE_TRY
{
// loop until a quit message is received..
MessageManager::getInstance()->runDispatchLoop();
}
JUCE_CATCH_EXCEPTION
return app->shutdownApp();
}
This used to work before, and seem to have been introduced in https://github.com/WeAreROLI/JUCE/commit/7c45ad695c9d493b86b969e691dfa63e7e76d52d
Minimal example: https://github.com/abrykt/tray_test