uifw/EikStd/coctlsrc/EIKMENUP.CPP
branchRCL_3
changeset 5 aabf2c525e0f
parent 3 8ca85d2f0db7
child 6 9f56a4e1b8ab
--- a/uifw/EikStd/coctlsrc/EIKMENUP.CPP	Fri Feb 19 23:04:46 2010 +0200
+++ b/uifw/EikStd/coctlsrc/EIKMENUP.CPP	Fri Mar 12 15:43:43 2010 +0200
@@ -3873,6 +3873,18 @@
                 }
             iExtension->iShowCascadeTransition = ETrue;
             CloseCascadeMenu();  
+            // Submenu of submenu was closed
+            if ( iCascadeMenuPane  )
+                {
+                iCascadeMenuPane->iExtension->EnableHighlight( EFalse );
+                iCascadeMenuPane->RepaintHighlight();
+                iExtension->iDownOnMenuArea = EFalse;
+                }
+            else
+                {
+                iExtension->EnableHighlight( EFalse );
+                RepaintHighlight();            
+                }
             IgnoreEventsUntilNextPointerUp();
             _AKNTRACE( "[%s]", "HandlePointerEventL return 2" );
             _AKNTRACE_FUNC_EXIT;
@@ -4210,8 +4222,18 @@
                         //Just close sub menu
                         iExtension->iShowCascadeTransition = ETrue;
                         CloseCascadeMenu();
-                        iExtension->EnableHighlight( EFalse );
-                        RepaintHighlight();
+                        // Submenu of submenu was closed
+                        if ( iCascadeMenuPane  )
+                            {
+                            iCascadeMenuPane->iExtension->EnableHighlight( EFalse );
+                            iCascadeMenuPane->RepaintHighlight();
+                            iExtension->iDownOnMenuArea = EFalse;
+                            }
+                        else
+                            {
+                            iExtension->EnableHighlight( EFalse );
+                            RepaintHighlight();            
+                            }
                         IgnoreEventsUntilNextPointerUp();                                                                  
                         break;
                         }
@@ -4321,8 +4343,17 @@
                             }
                         iExtension->iShowCascadeTransition = ETrue;
                         CloseCascadeMenu(); //Just close sub menu.
-                        iExtension->EnableHighlight( EFalse );
-                        RepaintHighlight();
+                        // Submenu of submenu was closed
+                        if ( iCascadeMenuPane  )
+                            {
+                            iCascadeMenuPane->iExtension->EnableHighlight( EFalse );
+                            iCascadeMenuPane->RepaintHighlight();
+                            }
+                        else
+                            {
+                            iExtension->EnableHighlight( EFalse );
+                            RepaintHighlight();                        
+                            }
                         IgnoreEventsUntilNextPointerUp();
                         }
                     else
@@ -4359,7 +4390,8 @@
             TPoint drag = iExtension->iStartPoint - 
                 aPointerEvent.iPosition;
             TInt threshold = drag.iY;      
-            if( Abs( threshold ) > iExtension->iPhysics->DragThreshold() )
+            if( Abs( threshold ) > iExtension->iPhysics->DragThreshold() 
+                && iExtension->iDownOnMenuArea )
                 {
                 iExtension->iButtonDownItem = KErrNotFound;
                 iExtension->ResetPressedHighlight();
@@ -4387,7 +4419,8 @@
        
             // act in Menu Sct or Option Menu repectively
             if (( iExtension->iSct && menuSctRect.Contains(aPointerEvent.iPosition)) ||
-                ( !iExtension->iSct && innerRect.Contains(aPointerEvent.iPosition)))
+                ( !iExtension->iSct && innerRect.Contains(aPointerEvent.iPosition)) &&
+                iExtension->iDownOnMenuArea ) 
                {
                 iExtension->iDraggedOutside = EFalse;
                 // Scroll only through visible items