diff --git a/src/scriptable/scriptable.cpp b/src/scriptable/scriptable.cpp
index 97d0385dac8d5688e9f58c655245c9e1d0f97e59..9da8f1d6d0d9daa4dfaf5dccfc25e6bef786710e 100644
--- a/src/scriptable/scriptable.cpp
+++ b/src/scriptable/scriptable.cpp
@@ -3196,9 +3196,12 @@ bool Scriptable::runAction(Action *action)
     setActionData();
 
     action->setWorkingDirectory( getCurrentPath() );
-    action->start();
 
-    while ( !action->waitForFinished(5000) && canContinue() ) {}
+    QEventLoop loop;
+    connect(action, &Action::actionFinished, &loop, &QEventLoop::quit);
+    connect(this, &Scriptable::finished, &loop, &QEventLoop::quit);
+    action->start();
+    loop.exec();
 
     if ( action->isRunning() && !action->waitForFinished(5000) ) {
         action->terminate();