ShellExecute() call reenters Qt event loop, so each time we
schedule a delayed action (like destroying FileLoader) and after
that we call ShellExecute (in psOpenFile) we destroy it inside
this call and can't use it after.
So now we perform ShellExecute calls only delayed (using task queue).
A regression was introduced in 1.0.12 version which led to wrong
activations of the main window: if a custom popup menu was shown
for the tray icon or a custom notification was clicked.