diff -r f4a778e096c2 -r 9da50d567e3c phonebookui/Phonebook2/UIControls/src/CPbk2SelectFieldDlg.cpp --- a/phonebookui/Phonebook2/UIControls/src/CPbk2SelectFieldDlg.cpp Wed Sep 01 12:29:52 2010 +0100 +++ b/phonebookui/Phonebook2/UIControls/src/CPbk2SelectFieldDlg.cpp Tue Sep 14 20:54:53 2010 +0300 @@ -26,7 +26,7 @@ #include #include #include -#include +#include #include #include "CPbk2FieldAnalyzer.h" #include @@ -336,19 +336,28 @@ TKeyResponse CPbk2SelectFieldDlg::CPopupList::OfferKeyEventL (const TKeyEvent& aKeyEvent, TEventCode aType) { - // The focus can display after clicking on navigation key and MSK key. - // Then, both LSK and RSK should be visible. - // Check whether LSK is hidden, if yes, make it visible - if ( !ButtonGroupContainer()->IsCommandVisible( EAknSoftkeySelect ) ) - { - // Whether navigation key or MSK key is pressed. - if ( aKeyEvent.iCode == EKeyUpArrow - || aKeyEvent.iCode == EKeyDownArrow - || aKeyEvent.iCode == EKeyDevice3 ) + if ( aKeyEvent.iCode == EKeyEscape ) + { + // When the popup list is prompting for selection, if the user closes Phonebook application from FSW, + // the dialog is to be closed otherwise re-enter Phonebook would result in wrong UI behavior. + AttemptExitL( EFalse); + } + else + { + // The focus can display after clicking on navigation key and MSK key. + // Then, both LSK and RSK should be visible. + // Check whether LSK is hidden, if yes, make it visible + if ( !ButtonGroupContainer()->IsCommandVisible( EAknSoftkeySelect ) ) { - ButtonGroupContainer()->MakeCommandVisible( EAknSoftkeySelect, ETrue ); + // Whether navigation key or MSK key is pressed. + if ( aKeyEvent.iCode == EKeyUpArrow || aKeyEvent.iCode + == EKeyDownArrow || aKeyEvent.iCode == EKeyDevice3 ) + { + ButtonGroupContainer()->MakeCommandVisible( + EAknSoftkeySelect, ETrue ); + } } - } + } TKeyResponse response = ListBox()->OfferKeyEventL( aKeyEvent, aType ); return response; }