uifw/AvKon/src/aknnavi.cpp
branchRCL_3
changeset 9 aabf2c525e0f
parent 4 8ca85d2f0db7
child 10 9f56a4e1b8ab
--- a/uifw/AvKon/src/aknnavi.cpp	Fri Feb 19 23:04:46 2010 +0200
+++ b/uifw/AvKon/src/aknnavi.cpp	Fri Mar 12 15:43:43 2010 +0200
@@ -57,6 +57,8 @@
 #include "AknDebug.h"
 
 const TInt KAknNaviPaneStackGranularity = 2;
+
+#define Min( x , y ) ((( x ) < ( y )) ? ( x ) : ( y ))
 /**
 * Extension class for CAknNavigationControlContainer.
 */
@@ -72,7 +74,7 @@
     TBool                       iDestructionOngoing;
     CFbsBitmap*                 iNaviColorBitmap;
     TInt                        iPreferredNaviDecoratorLayoutStyle;
-    TBool                       iIsActiveIdle;
+    CEikStatusPaneBase*         iStatusPane;
     };
 
 
@@ -145,7 +147,7 @@
         iExtension->iCurrentColorScheme = ColorScheme();
         iExtension->iForegroundObserver =
             CAknNaviForegroundObserver::NewL( this );
-        iExtension->iIsActiveIdle = AknStatuspaneUtils::IsActiveIdle();
+        iExtension->iStatusPane = CEikStatusPaneBase::Current();
         }
 
     if ( !iNaviPaneControls )
@@ -1579,7 +1581,8 @@
 EXPORT_C void CAknNavigationControlContainer::Draw(
     const TRect& /*aRect*/ ) const
     {
-    if ( iExtension->iIsActiveIdle )
+    if ( iExtension->iStatusPane && 
+         iExtension->iStatusPane->IsTransparent() )
         {
         return;
         }
@@ -1924,6 +1927,24 @@
                 }
             }
 
+       TInt minOrd = -1;
+       
+       if ( titlewindow )
+           {
+           minOrd = titlewindow->OrdinalPosition();
+           }
+       
+        if( naviwindow )
+           {
+           minOrd = Min( minOrd, naviwindow->OrdinalPosition() );
+           }
+
+       if ( emptywindow )
+           {
+           minOrd = Min( minOrd, emptywindow->OrdinalPosition() );
+           }
+
+     
         const TInt last = iNaviPaneControls->Count() - 1;
         if ( ( last < 0 || !( iNaviPaneControls->At( last ) ) ) ||
              ( last >= 0 &&
@@ -1935,36 +1956,20 @@
             // Minus ordinal ordinal position number always means set
             // the window to be the last one of the windows with the same
             // ordinal priority
-            if ( iExtension->iIsActiveIdle )//Added for active idle's transparent
-            	{
+            
             if ( titlewindow )
                 {
-                titlewindow->SetOrdinalPosition( 4 );
+                titlewindow->SetOrdinalPosition( minOrd );
                 }
             if ( naviwindow )
                 {
-                naviwindow->SetOrdinalPosition( 5 );
+                naviwindow->SetOrdinalPosition( minOrd + 1  );
                 }
             if ( emptywindow )
                 {
-                emptywindow->SetOrdinalPosition( 6 );
-                }
-              }
-           else
-             {
-             if ( titlewindow )
-                {
-                titlewindow->SetOrdinalPosition( -1 );
+                emptywindow->SetOrdinalPosition( minOrd + 2 );
                 }
-            if ( naviwindow )
-                {
-                naviwindow->SetOrdinalPosition( -1 );
-                }
-            if ( emptywindow )
-                {
-                emptywindow->SetOrdinalPosition( -1 );
-                }
-             }
+             
             }
         else
             {
@@ -1972,36 +1977,19 @@
             // Minus ordinal ordinal position number always means set
             // the window to be the last one of the windows with the same
             // ordinal priority
-            if ( iExtension->iIsActiveIdle )//Added for active idle's transparent
-            	{
+           
             if ( naviwindow )
                 {
-                naviwindow->SetOrdinalPosition( 4 );
+                naviwindow->SetOrdinalPosition( minOrd );
                 }
             if ( titlewindow )
                 {
-                titlewindow->SetOrdinalPosition( 5 );
+                titlewindow->SetOrdinalPosition( minOrd + 1 );
                 }
             if ( emptywindow )
                 {
-                emptywindow->SetOrdinalPosition( 6 );
-                }
-              }
-              else
-              	{
-             if ( naviwindow )
-                {
-                naviwindow->SetOrdinalPosition( -1 );
-                }
-            if ( titlewindow )
-                {
-                titlewindow->SetOrdinalPosition( -1 );
-                }
-            if ( emptywindow )
-                {
-                emptywindow->SetOrdinalPosition( -1 );
-                }
-              	}
+                emptywindow->SetOrdinalPosition( minOrd + 2 );
+                }              	
             }
 
         // Finally request titlepane to refresh itself.