--- a/uifw/AvKon/src/AknPreviewPopUpController.cpp Mon Mar 08 21:43:43 2010 +0000
+++ b/uifw/AvKon/src/AknPreviewPopUpController.cpp Sun Mar 14 13:10:48 2010 +0000
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
@@ -231,93 +231,62 @@
resize = ETrue;
}
- // allowed rect
- TRect clientRect;
- AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, clientRect );
-
- // Control is allowed to be on top of the status pane but it cannot
- // overlay either stacon pane or control pane.
-
- //switch ( iAvkonAppUi->StatusPane()->CurrentLayoutResId() )
- CEikStatusPaneBase* statusPane = CEikStatusPaneBase::Current();
- TInt currentStatusPaneLayoutResId = 0;
- if (statusPane)
- {
- currentStatusPaneLayoutResId = statusPane->CurrentLayoutResId();
- }
- else
- {
- // If this app does not have statuspane, then we ask the layout from AknCapServer.
- currentStatusPaneLayoutResId = CAknSgcClient::CurrentStatuspaneResource();
- }
-
- switch ( currentStatusPaneLayoutResId )
- {
- case R_AVKON_STACON_PANE_LAYOUT_USUAL_SOFTKEYS_RIGHT:
- case R_AVKON_STACON_PANE_LAYOUT_USUAL_SOFTKEYS_LEFT:
- case R_AVKON_STACON_PANE_LAYOUT_IDLE_SOFTKEYS_RIGHT:
- case R_AVKON_STACON_PANE_LAYOUT_IDLE_SOFTKEYS_LEFT:
- case R_AVKON_STACON_PANE_LAYOUT_EMPTY_SOFTKEYS_RIGHT:
- case R_AVKON_STACON_PANE_LAYOUT_EMPTY_SOFTKEYS_LEFT:
- break;
-
- default:
- TRect statusPaneRect;
- AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EStatusPane,
- statusPaneRect );
-
- clientRect.BoundingRect( statusPaneRect );
- }
+ // Adjust the position if the popup would go outside of the screen
+ // rect with the given position.
+ TRect screenRect;
+ AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screenRect );
+ TInt screenWidth( screenRect.Width() );
+ TInt screenHeight( screenRect.Height() );
TPoint finalPosition;
- // resize if the popup is too wide
- if ( popupSize.iWidth > clientRect.Width() )
+ // Resize if the popup is too wide.
+ if ( popupSize.iWidth > screenWidth )
{
resize = ETrue;
- popupSize.iWidth = clientRect.Width();
+ popupSize.iWidth = screenWidth;
}
- // resize if the popup is too tall
- if ( popupSize.iHeight > clientRect.Height() )
- {
+ // Resize if the popup is too tall.
+ if ( popupSize.iHeight > screenHeight )
+ {
resize = ETrue;
- popupSize.iHeight = clientRect.Height();
- }
+ popupSize.iHeight = screenHeight;
+ }
- // default horizontal position is left from the given point
- if ( askedPoint.iX - popupSize.iWidth >= clientRect.iTl.iX )
+ // Default horizontal position is left from the given point.
+ if ( askedPoint.iX - popupSize.iWidth >= screenRect.iTl.iX )
{
finalPosition.iX = askedPoint.iX - popupSize.iWidth;
}
else
{
// outside left border, move to left border
- finalPosition.iX = clientRect.iTl.iX;
+ finalPosition.iX = screenRect.iTl.iX;
}
- // check the right border
- if ( finalPosition.iX + popupSize.iWidth > clientRect.iBr.iX )
+ // Check the right border.
+ if ( finalPosition.iX + popupSize.iWidth > screenRect.iBr.iX )
{
- finalPosition.iX = clientRect.iBr.iX - popupSize.iWidth;
+ finalPosition.iX = screenRect.iBr.iX - popupSize.iWidth;
}
- // default vertical position is up from the given point
- // coordinates grow from top to bottom
- if ( askedPoint.iY > clientRect.iTl.iY )
+ // Default vertical position is up from the given point.
+ // Coordinates grow from top to bottom.
+ if ( askedPoint.iY > screenRect.iTl.iY )
{
finalPosition.iY = askedPoint.iY;
}
else
{
- // outside top border, move to top border
- finalPosition.iY = clientRect.iTl.iY;
+ // Outside top border, move to top border.
+ finalPosition.iY = screenRect.iTl.iY;
}
- // outside bottom border, move to bottom border
- if ( ( askedPoint.iY + popupSize.iHeight ) > clientRect.iBr.iY )
+ // Outside bottom border, move to bottom border.
+ if ( ( askedPoint.iY + popupSize.iHeight ) > screenRect.iBr.iY )
{
- finalPosition.iY = clientRect.iBr.iY - popupSize.iHeight;
+ finalPosition.iY = screenRect.iBr.iY - popupSize.iHeight;
}
if ( resize )