--- 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.