diff -r 5586b4d2ec3e -r 0d28c1c5b6dd phonebookui/Phonebook2/remotecontactlookup/engine/src/cpbkxrclsearchresultdlg.cpp --- a/phonebookui/Phonebook2/remotecontactlookup/engine/src/cpbkxrclsearchresultdlg.cpp Wed Apr 14 15:45:35 2010 +0300 +++ b/phonebookui/Phonebook2/remotecontactlookup/engine/src/cpbkxrclsearchresultdlg.cpp Tue Apr 27 16:23:35 2010 +0300 @@ -155,13 +155,6 @@ CCoeEnv::Static()->RemoveForegroundObserver( *this ); ResetStatusPane(); - if ( iTitlePane != NULL ) - { - // set title pane back to what it was, ownership of - // iTitlePaneText is transferred to title pane - iTitlePane->SetText( iOriginalTitleText ); - } - iNaviText.Close(); delete iAddRecipientIcon; @@ -171,8 +164,21 @@ delete iActionMenu; iActionMenu = NULL; } - + + // Sanity check and make sure some other view hasn't already + // changed the title text. If not - change back to original. + if (iOriginalTitleText && iTitleText && iTitlePane && + iTitlePane->Text()->Compare( iTitleText->Des() ) == 0) + { + // Restore orginal title. Ownership transferred. + iTitlePane->SetText( iOriginalTitleText, ETrue); + } + else + { + delete iOriginalTitleText; + } delete iIdleNote; + delete iTitleText; } // --------------------------------------------------------------------------- @@ -679,12 +685,17 @@ FUNC_LOG; CAknAppUi* appUi = static_cast( CCoeEnv::Static()->AppUi() ); CEikStatusPane* statusPane = appUi->StatusPane(); - iNaviPane = reinterpret_cast( - statusPane->ControlL( TUid::Uid( EEikStatusPaneUidNavi ) ) ); - iNaviDecorator = iNaviPane->CreateNavigationLabelL( iNaviText ); + // add the navigation decorators only if the usual statuspane layout is used + if ( statusPane->CurrentLayoutResId() == R_AVKON_STATUS_PANE_LAYOUT_USUAL_EXT ) + { + iNaviPane = reinterpret_cast( + statusPane->ControlL( TUid::Uid( EEikStatusPaneUidNavi ) ) ); + + iNaviDecorator = iNaviPane->CreateNavigationLabelL( iNaviText ); - iNaviPane->PushL( *iNaviDecorator ); + iNaviPane->PushL( *iNaviDecorator ); + } // setup title pane iTitlePane = reinterpret_cast( @@ -705,9 +716,9 @@ void CPbkxRclSearchResultDlg::SetTitlePaneTextL() { // Update title pane text - HBufC* titleText = StringLoader::LoadLC( R_QTN_RCL_TITLE_SERVER_CONTACTS ); - iTitlePane->SetTextL(titleText->Des()); - CleanupStack::PopAndDestroy(titleText); + iTitleText = StringLoader::LoadL( R_QTN_RCL_TITLE_SERVER_CONTACTS ); + iTitlePane->SetTextL(iTitleText->Des()); + } @@ -720,8 +731,11 @@ FUNC_LOG; ResetStatusPane(); - iNaviDecorator = iNaviPane->CreateNavigationLabelL( iNaviText ); - iNaviPane->PushL( *iNaviDecorator ); + if (iNaviPane ) + { + iNaviDecorator = iNaviPane->CreateNavigationLabelL( iNaviText ); + iNaviPane->PushL( *iNaviDecorator ); + } SetTitlePaneTextL(); }