--- a/uifw/AvKon/src/aknPopup.cpp Thu Aug 19 10:11:06 2010 +0300
+++ b/uifw/AvKon/src/aknPopup.cpp Tue Aug 31 15:28:30 2010 +0300
@@ -30,7 +30,6 @@
#include <skinlayout.cdl.h>
#include <aknglobalpopupprioritycontroller.h>
#include <touchfeedback.h>
-#include <akntranseffect.h>
#ifdef RD_UI_TRANSITION_EFFECTS_POPUPS
#include <gfxtranseffect/gfxtranseffect.h>
@@ -38,6 +37,7 @@
#endif
#include <AknTasHook.h>
+
#include "aknPopup.h"
#include "akntrace.h"
#include "aknitemactionmenuregister.h"
@@ -239,7 +239,7 @@
// last member ste before the actiave scheduler is started.
// Reset action menu register
- AknItemActionMenuRegister::RemoveConstructingMenuBarOwner( this );
+ AknItemActionMenuRegister::SetConstructingMenuBarOwnerL( NULL );
_AKNTRACE_FUNC_EXIT;
}
@@ -303,7 +303,8 @@
iListBox->SetBorder(TGulBorder::ENone);
// Create extension class
- iPopupListExtension = new (ELeave) CAknPopupListExtension();
+ if (!iPopupListExtension)
+ iPopupListExtension = new (ELeave) CAknPopupListExtension();
CAknAppUi* appUi = static_cast<CAknAppUi*>( iEikonEnv->EikAppUi() );
if ( appUi && appUi->IsSingleClickCompatible() )
@@ -383,25 +384,6 @@
{
_AKNTRACE_FUNC_ENTER;
__ASSERT_DEBUG(iListBox,Panic(EAknPanicListboxUndefined));
- if ( AknLayoutUtils::PenEnabled() )
- {
- MTouchFeedback* feedback = MTouchFeedback::Instance();
- if ( feedback )
- {
- TTouchLogicalFeedback fbLogicalType = ETouchFeedbackPopUp;
- if ( CAknTransitionUtils::TransitionsEnabled(
- AknTransEffect::EComponentTransitionsOff ) )
- {
- fbLogicalType = ETouchFeedbackIncreasingPopUp;
- }
- feedback->InstantFeedback(
- this,
- fbLogicalType,
- ETouchFeedbackVibra,
- TPointerEvent() );
- }
- }
-
iPopoutCba->SetBoundingRect(TRect(iAvkonAppUi->ApplicationRect().Size()));
// Disable item specific menu just before the popup is about to be shown.
@@ -419,7 +401,6 @@
STATIC_CAST(CAknFilteredTextListBoxModel*,
ListBox()->Model())->Filter()->SetSearchField( NULL );
FindBox()->Editor().SetFocus( EFalse );
- __ASSERT_DEBUG( iPopupListExtension, Panic( EAknPanicNullPointer ) );
delete iPopupListExtension->iSearchControl;
iPopupListExtension->iSearchControl = NULL;
}
@@ -669,7 +650,6 @@
{
_AKNTRACE_FUNC_ENTER;
_AKNTRACE("ProcessCommandL: aCommandId=%d", aCommandId);
- __ASSERT_DEBUG( iPopupListExtension, Panic( EAknPanicNullPointer ) );
// Respond to softkey events
switch (aCommandId)
{
@@ -729,7 +709,6 @@
EXPORT_C void CAknPopupList::HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType)
{
_AKNTRACE_FUNC_ENTER;
- __ASSERT_DEBUG( iPopupListExtension, Panic( EAknPanicNullPointer ) );
// Respond to events from listbox
if (aListBox == iListBox)
{
@@ -819,7 +798,6 @@
EXPORT_C void CAknPopupList::AttemptExitL(TBool aAccept)
{
_AKNTRACE_FUNC_ENTER;
- __ASSERT_DEBUG( iPopupListExtension, Panic( EAknPanicNullPointer ) );
//EFTG-7HWDP6.
if( FindBox()
&& !( FindBox()->Editor().AknEdwinFlags() & EAknEditorFlagTouchInputModeOpened )
@@ -844,24 +822,6 @@
}
else if( !(iPopupListExtension->iFlags & EPopupFepStartEvent) )
{
- if ( AknLayoutUtils::PenEnabled() )
- {
- MTouchFeedback* feedback = MTouchFeedback::Instance();
- if ( feedback )
- {
- TTouchLogicalFeedback fbLogicalType = ETouchFeedbackPopUp;
- if ( CAknTransitionUtils::TransitionsEnabled(
- AknTransEffect::EComponentTransitionsOff ) )
- {
- fbLogicalType = ETouchFeedbackDecreasingPopUp;
- }
- feedback->InstantFeedback(
- this,
- fbLogicalType,
- ETouchFeedbackVibra,
- TPointerEvent() );
- }
- }
#ifdef RD_UI_TRANSITION_EFFECTS_POPUPS
// no transition if accepted
if( IsVisible() && GfxTransEffect::IsRegistered(this) && !aAccept )
@@ -951,7 +911,6 @@
TInt softkeyHeight( KSoftkeyHeightUndefined );
- __ASSERT_DEBUG( iPopupListExtension, Panic( EAknPanicNullPointer ) );
if (!iPopupListExtension->iBgContext)
{
TRAP_IGNORE( iPopupListExtension->iBgContext = CAknsFrameBackgroundControlContext::NewL(
@@ -1118,8 +1077,7 @@
}
if (aId.iUid == MAknsControlContext::ETypeId)
{
- __ASSERT_DEBUG( iPopupListExtension, Panic( EAknPanicNullPointer ) );
- if (iPopupListExtension->iBgContext)
+ if (iPopupListExtension && iPopupListExtension->iBgContext)
{
return MAknsControlContext::SupplyMopObject(aId, iPopupListExtension->iBgContext);
}
@@ -1173,7 +1131,6 @@
if ( AknLayoutUtils::PenEnabled() )
{
- __ASSERT_DEBUG( iPopupListExtension, Panic( EAknPanicNullPointer ) );
iPopupListExtension->iFlags |= EPopupHandlingPointerEvent;
TInt index;
@@ -1205,6 +1162,10 @@
{
AttemptExitL( ETrue );
}
+ else
+ {
+ AttemptExitL( EFalse );
+ }
}
//EFTG-7HWDP6.
@@ -1218,11 +1179,24 @@
break;
case TPointerEvent::EButton1Down:
_AKNTRACE("CAknPopupList::HandlePointerEventL: TPointerEvent::EButton1Down");
- if ( FindBox()
- && ( FindBox()->Editor().Rect().Contains( aPointerEvent.iPosition ) )
- && !( iPopupListExtension->iFlags & EPopupLayoutSwitchEvent ) )
+ // as in comments close popup if pointer goes outside of the popup list
+ if ( !Rect().Contains( aPointerEvent.iPosition ) )
{
- iPopupListExtension->iFlags |= EPopupFepStartEvent;
+ MTouchFeedback* feedback = MTouchFeedback::Instance();
+ if ( feedback )
+ {
+ feedback->InstantFeedback( ETouchFeedbackPopUp );
+ }
+ AttemptExitL( EFalse );
+ }
+ else
+ {
+ if( FindBox()
+ && ( FindBox()->Editor().Rect().Contains( aPointerEvent.iPosition ) )
+ && !( iPopupListExtension->iFlags & EPopupLayoutSwitchEvent ) )
+ {
+ iPopupListExtension->iFlags |= EPopupFepStartEvent;
+ }
}
break;
case TPointerEvent::EDrag:
@@ -1246,7 +1220,8 @@
EXPORT_C TBool CAknPopupList::EnableFind(TBool /*aEnable*/)
{
- __ASSERT_DEBUG( iPopupListExtension, Panic( EAknPanicNullPointer ) );
+ if (!iPopupListExtension)
+ return EFalse; // no extension class, failed
if (!iPopupListExtension->iSearchControl)
{
CAknSearchField::TSearchFieldStyle flags = CAknSearchField::EPopupWindow;
@@ -1278,7 +1253,8 @@
EXPORT_C TBool CAknPopupList::EnableAdaptiveFind(TBool /*aEnable*/)
{
- __ASSERT_DEBUG( iPopupListExtension, Panic( EAknPanicNullPointer ) );
+ if (!iPopupListExtension)
+ return EFalse; // no extension class, failed
if (!iPopupListExtension->iSearchControl)
{
CAknSearchField::TSearchFieldStyle flags = CAknSearchField::EPopupAdaptiveSearchWindow;
@@ -1311,8 +1287,9 @@
EXPORT_C CAknSearchField* CAknPopupList::FindBox() const
{
- __ASSERT_DEBUG( iPopupListExtension, Panic( EAknPanicNullPointer ) );
- return iPopupListExtension->iSearchControl;
+ if (iPopupListExtension)
+ return iPopupListExtension->iSearchControl;
+ return NULL;
}
void CAknPopupList::RemoveFindFiltering()
@@ -1333,7 +1310,7 @@
_AKNTRACE_FUNC_ENTER;
if( aType == KEikDynamicLayoutVariantSwitch )
{
- __ASSERT_DEBUG( iPopupListExtension, Panic( EAknPanicNullPointer ) );
+
//EFTG-7HWDP6.
//Tapping Edit'area can arouse the CAknPopupList::HandleResourceChange()
//when portrait is initial model, and 'Full screen QWERTY keyboard' is default input method.