diff options
Diffstat (limited to 'hyperui/pageview.cpp')
-rw-r--r-- | hyperui/pageview.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/hyperui/pageview.cpp b/hyperui/pageview.cpp index 1d2c25f..3f3812d 100644 --- a/hyperui/pageview.cpp +++ b/hyperui/pageview.cpp @@ -138,12 +138,13 @@ PageView::PageView(QGraphicsItem *parent) m_newSlot->setPos(0, m_topOffset); } -bool PageView::add(View *view) +bool PageView::add(View *view, bool keepAlive) { if (!view || isAnimating()) return false; view->setPageView(this); + m_keepAlive[view] = keepAlive; if (m_views.isEmpty()) { m_views.push(view); @@ -200,7 +201,10 @@ void PageView::transitionFinished() if (m_isBack) { m_oldSlot->setContents(0); - delete oldView; + bool keepAlive = m_keepAlive[oldView]; + m_keepAlive.remove(oldView); + if (!keepAlive) + delete oldView; } else { oldView->hide(); m_views.push(newView); |