--- 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<HbView *>(this);
- that->setToolBar(new HbToolBar);
+ HbViewPrivate* p = const_cast<HbViewPrivate*>(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);
}