diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2016-08-18 16:50:27 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2016-08-19 14:26:36 +0000 |
commit | 62646977131f0bd591d9a0dc077f44386f10ad17 (patch) | |
tree | 3b3e4a36b81342316c78e42842e86bfdc60cbc6b /src/quicktemplates2/qquickpopup.cpp | |
parent | 02d1126499c2efd58fdcdde970d0713940230c58 (diff) |
QQuickPopup: do not attempt to execute transitions without a window
A parentless/windowless popup item is not associated to a QML engine.
Accessing transitions calls qmlExecuteDeferred(), which leads to a crash.
This can happen in auto tests with the shared tooltip during destruction.
Change-Id: I9a258b2df6b87fce7833e358f17b1910934212c2
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/quicktemplates2/qquickpopup.cpp')
-rw-r--r-- | src/quicktemplates2/qquickpopup.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/quicktemplates2/qquickpopup.cpp b/src/quicktemplates2/qquickpopup.cpp index c155716c..b4022247 100644 --- a/src/quicktemplates2/qquickpopup.cpp +++ b/src/quicktemplates2/qquickpopup.cpp @@ -724,7 +724,10 @@ void QQuickPopupTransitionManager::transitionEnter() state = Enter; popup->prepareEnterTransition(); - transition(popup->enterActions, popup->enter, popup->q_func()); + if (popup->window) + transition(popup->enterActions, popup->enter, popup->q_func()); + else + finished(); } void QQuickPopupTransitionManager::transitionExit() @@ -734,7 +737,10 @@ void QQuickPopupTransitionManager::transitionExit() state = Exit; popup->prepareExitTransition(); - transition(popup->exitActions, popup->exit, popup->q_func()); + if (popup->window) + transition(popup->exitActions, popup->exit, popup->q_func()); + else + finished(); } void QQuickPopupTransitionManager::finished() |