diff -r b8fae6b8a148 -r d05a55b217df idlehomescreen/xmluirendering/uiengine/src/xnkeyeventdispatcher.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnkeyeventdispatcher.cpp Wed Mar 31 21:17:19 2010 +0300 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnkeyeventdispatcher.cpp Wed Apr 14 15:47:59 2010 +0300 @@ -192,6 +192,9 @@ CCoeControl* destination = reinterpret_cast< CCoeControl* >( handle ); TPointerEvent& event( *aEvent.Pointer() ); + + // Store event + iPointerEvent = *aEvent.Pointer(); if ( iCbaContainer ) { @@ -225,6 +228,16 @@ } // ----------------------------------------------------------------------------- +// CXnKeyEventDispatcher::PointerEvent() +// +// ----------------------------------------------------------------------------- +// +const TPointerEvent& CXnKeyEventDispatcher::PointerEvent() const + { + return iPointerEvent; + } + +// ----------------------------------------------------------------------------- // CXnKeyEventDispatcher::OfferKeyEventL // Handles key events. // ----------------------------------------------------------------------------- @@ -234,9 +247,7 @@ TEventCode aType ) { TKeyResponse resp( EKeyWasNotConsumed ); - - iEventCode = aType; - + CXnNode* node( NULL ); TBool keyYesNoApps( EFalse ); @@ -249,7 +260,7 @@ // When menu is focused or LSK/RSK is pressed, // then forward events to menuadapter. // Note that MSK is handled directly in the base class as it used only - // for activating + // for activation node = iMenuNode; } else if ( aKeyEvent.iScanCode == EStdKeyApplication0 || @@ -259,8 +270,9 @@ keyYesNoApps = ETrue; iFocusChanged = EFalse; + // AppsKey, YesKey, NoKey events must be always handled, and if we don't - // have a focused node, then let the view node do the job + // have a focused node, then let the view handle the event node = ( !iNode ) ? iUiEngine.ActiveView() : iNode; } else @@ -309,6 +321,10 @@ if ( editmode->OfferKeyEventL( aKeyEvent, aType ) == EKeyWasConsumed ) { + iFocusChanged = EFalse; + iKeyEventNode = NULL; + iEventCode = EEventNull; + return EKeyWasConsumed; } @@ -324,8 +340,7 @@ if ( iFocusChanged && ( aType == EEventKeyUp ) ) { - // Pass keyup event to - // previously focused node + // Pass keyup event to the previously focused node node = iKeyEventNode; } } @@ -336,7 +351,9 @@ { // We are waiting for down event return resp; - } + } + + iEventCode = aType; } if ( !node )