idlehomescreen/xmluirendering/uiengine/src/xnkeyeventdispatcher.cpp
branchRCL_3
changeset 18 d05a55b217df
parent 12 9674c1a575e9
--- 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 )