diff -r 923ff622b8b9 -r 4633027730f5 src/hbcore/gui/hbview.cpp --- a/src/hbcore/gui/hbview.cpp Tue Jul 06 14:36:53 2010 +0300 +++ b/src/hbcore/gui/hbview.cpp Wed Aug 18 10:05:37 2010 +0300 @@ -271,6 +271,18 @@ } /*! + \internal + */ +void HbViewPrivate::delayedConstruction() +{ + //view content is drawn already on screen.Try to + //create the content of options menu now. + if (menu) { + HbMenuPrivate::d_ptr(menu)->delayedLayout(); + } +} + +/*! Constructs a view with the given \a parent. */ HbView::HbView(QGraphicsItem *parent) : @@ -408,8 +420,13 @@ { Q_D(const HbView); if (!d->toolBar) { - HbView *that = const_cast(this); - that->setToolBar(new HbToolBar); + HbViewPrivate* p = const_cast(d); + p->toolBar = new HbToolBar; + // duplicates functionality of HbMainWindowPrivate::_q_viewToolBarChanged as a perf optimisation + if ( mainWindow() && mainWindow()->currentView() == this ) { + HbMainWindowPrivate::d_ptr(mainWindow())->addToolBarToLayout(p->toolBar); + } + } return d->toolBar; } @@ -734,6 +751,7 @@ statusBarAnimating = true; } else if (!(d->mViewFlags & HbView::ViewStatusBarHidden) && (originalFlags & HbView::ViewStatusBarHidden)) { #ifdef HB_EFFECTS + statusBar->setVisible(true); HbEffect::start(statusBar, "statusbar", "appear", this, "statusBarEffectFinished"); #endif // HB_EFFECTS statusBarAnimating = true; @@ -749,16 +767,17 @@ titleBarAnimating = true; } else if (!(d->mViewFlags & HbView::ViewTitleBarHidden) && (originalFlags & HbView::ViewTitleBarHidden)) { #ifdef HB_EFFECTS + titleBar->setVisible(true); HbEffect::start(titleBar, "titlebar", "appear", this, "titleBarEffectFinished"); #endif // HB_EFFECTS titleBarAnimating = true; } - if (!statusBarAnimating) { + if (!statusBarAnimating && !titleBarAnimating) { statusBar->setVisible(!(d->mViewFlags & HbView::ViewStatusBarHidden)); statusBar->propertiesChanged(); } - if (!titleBarAnimating) { + if (!titleBarAnimating && !statusBarAnimating) { titleBar->setVisible(!(d->mViewFlags & HbView::ViewTitleBarHidden)); if (d->mNavigationActionSet) { titleBar->setNavigationAction(d->mNavigationAction); @@ -810,8 +829,9 @@ void HbView::setTitleBarVisible(bool visible) { Q_D(HbView); + if (visible) { - setViewFlags(d->mViewFlags &~ HbView::ViewTitleBarHidden); + setViewFlags(d->mViewFlags &~ HbView::ViewTitleBarHidden); } else { setViewFlags(d->mViewFlags | HbView::ViewTitleBarHidden); }