Minor: Remove unused include
assistant popup: QWeakPointer -> QPointer

Using a QWeakPointer does not really work here, because the contained
object is not originally stored in a QSharedPointer. Thus, when calling
toStrongRef(), the weak pointer gets invalidated as soon as the created
shared pointer goes out of scope (because it is the only QSharedPointer
pointing to the object). Instead, use QPointer, which uses QObject's
destroyed() signal to track lifetime.
assistant popup: add missing timer.stop()

prevents the widget from hiding when it should not in some situations