Parts::ReadOnlyPart::completed signal is connected after openUrl has been called.
And it won't be emited, if openUrl was fast enough.
In this case openUrlFinished won't be emited which could, for example, cause the text not receiving a focus.
This is a right thing to do (connect before calling the emitting method). I just have a request to simplify the comment - something like "don't rely on return value of openUrl as the call is async in general". Thanks!