Revision: 201035 RCL_3
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 15 Sep 2010 12:29:17 +0300
branchRCL_3
changeset 64 85902f042028
parent 59 978afdc0236f
child 72 a5e7a4f63858
Revision: 201035 Kit: 201036
classicui_plat/extended_options_menu_api/inc/aknitemactionmenu.h
classicui_plat/ganes_api/inc/ganes/HgScroller.h
classicui_pub/application_framework_api/inc/AknViewAppUi.h
classicui_pub/editors_api/inc/EIKEDWIN.H
classicui_pub/hierarchical_lists_api/inc/akntreelist.h
classicui_pub/stylus_popup_menu_api/inc/aknstyluspopupmenu.h
classicui_pub/tabs_api/inc/akntabgrp.h
classicui_pub/ui_framework_definitions_api/inc/EIKON.HRH
classicui_pub/ui_framework_definitions_api/inc/avkon.hrh
commonuis/CommonUi/src/FindItemMenu.cpp
commonuisupport/uikon/srvinc/EIKNFYSV.H
commonuisupport/uikon/srvsrc/EIKNFYSV.CPP
psln/Inc/PslnScreenSaverView.h
psln/Src/PslnScreenSaverView.cpp
uifw/AvKon/aknhlist/BWINS/aknhlistU.def
uifw/AvKon/aknhlist/EABI/aknhlistU.def
uifw/AvKon/aknhlist/group/aknhlist.mmp
uifw/AvKon/aknhlist/inc/akntreelistview.h
uifw/AvKon/aknhlist/src/akntreelist.cpp
uifw/AvKon/aknhlist/src/akntreelistview.cpp
uifw/AvKon/src/AknCharMap.cpp
uifw/AvKon/src/AknPreviewPopUp.cpp
uifw/AvKon/src/AknPreviewPopUpController.cpp
uifw/AvKon/src/AknQueryControl.cpp
uifw/AvKon/src/AknQueryDialog.cpp
uifw/AvKon/src/AknSctDialog.cpp
uifw/AvKon/src/AknViewAppUi.cpp
uifw/AvKon/src/akncolourselectiongrid.cpp
uifw/AvKon/src/aknnavi.cpp
uifw/AvKon/src/aknsfld.cpp
uifw/AvKon/src/aknsgcc.cpp
uifw/AvKon/src/akntabgrp.cpp
uifw/EikStd/EABI/EIKCOCTLU.DEF
uifw/EikStd/bwins/EIKCOCTLU.DEF
uifw/EikStd/coctlinc/aknmarkingmode.h
uifw/EikStd/coctlsrc/AknButton.cpp
uifw/EikStd/coctlsrc/EIKCOLIB.CPP
uifw/EikStd/coctlsrc/EIKCTGRP.CPP
uifw/EikStd/coctlsrc/EIKEDWIN.CPP
uifw/EikStd/coctlsrc/aknitemactionmenu.cpp
uifw/EikStd/coctlsrc/aknmarkingmode.cpp
uifw/EikStd/coctlsrc/aknstyluspopupmenu.cpp
uifw/EikStd/coctlsrc/aknstyluspopupmenucontent.cpp
uifw/EikStd/coctlsrc/eikcba.cpp
uifw/EikStd/coctlsrc/eikspane.cpp
uifw/EikStd/coctlsrc/smileymodel.cpp
uifw/EikStd/srvuiinc/eikkeysoundserver.h
uifw/EikStd/srvuisrc/eikkeysoundserver.cpp
uifw/ganes/inc/HgScrollbar.h
uifw/ganes/src/HgScrollbar.cpp
uifw/ganes/src/HgScroller.cpp
uifw/ganes/src/HgVgHelper.cpp
--- a/classicui_plat/extended_options_menu_api/inc/aknitemactionmenu.h	Tue Sep 14 21:48:24 2010 +0300
+++ b/classicui_plat/extended_options_menu_api/inc/aknitemactionmenu.h	Wed Sep 15 12:29:17 2010 +0300
@@ -150,6 +150,13 @@
     IMPORT_C void CollectionChanged( MAknCollection& aCollection );
 
     /**
+     * Provides marking mode handler.
+     *
+     * @return Marking mode handler.
+     */
+    IMPORT_C CAknMarkingMode& MarkingMode();
+    
+    /**
      * Sets menu bar to item action menu.
      * 
      * @internal
@@ -224,14 +231,6 @@
     MObjectProvider* Owner() const;
 
     /**
-     * Provides marking mode handler.
-     *
-     * @internal
-     * @return Marking mode handler.
-     */
-    CAknMarkingMode& MarkingMode();
-    
-    /**
      * Returns ETrue if collection has marked items.
      * 
      * @internal
--- a/classicui_plat/ganes_api/inc/ganes/HgScroller.h	Tue Sep 14 21:48:24 2010 +0300
+++ b/classicui_plat/ganes_api/inc/ganes/HgScroller.h	Wed Sep 15 12:29:17 2010 +0300
@@ -506,6 +506,7 @@
     
     TBool iResetViewPosition; // ETrue on the first time run, and when iViewPosition must be reset.
     TBool iPointerDown;
+    TBool iEnterKeyHandled;
 
     CPeriodic* iHighlightTimer; // Higlight timer, own.
     TBool iSelectionToFocusedItem; // Is focused item clicked
--- a/classicui_pub/application_framework_api/inc/AknViewAppUi.h	Tue Sep 14 21:48:24 2010 +0300
+++ b/classicui_pub/application_framework_api/inc/AknViewAppUi.h	Wed Sep 15 12:29:17 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-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"
@@ -228,7 +228,10 @@
     * Enables/disables local screen clearer.
     * Local screen clearer is used in the view based applications
     * to clear the application window if/when the view itself fails
-    * to do this. By default, the clearer is used.
+    * to do this. By default, the clearer is used except when launching
+    * the application as embedded. If the clearer needs to be used
+    * in an application that is launched as embedded, then this
+    * function must be explicitly called.
     * This function must be called before the BaseConstructL() to
     * prevent the screen clearer on application start up.
     *
--- a/classicui_pub/editors_api/inc/EIKEDWIN.H	Tue Sep 14 21:48:24 2010 +0300
+++ b/classicui_pub/editors_api/inc/EIKEDWIN.H	Wed Sep 15 12:29:17 2010 +0300
@@ -385,6 +385,9 @@
         CRepository* iCenRep;                           // Owned
         CCenRepNotifyHandler* iCenRepNotifyHandler;     // Owned
         TInt iClearDirection;                           // Value of ClearDirection
+        // For listening the status of qwerty key board
+        CRepository* iCenRepForQwerty;                           // Owned
+        CCenRepNotifyHandler* iCenRepNotifyHandlerForQwerty;     // Owned
      public:
 
         TInt iSkinIdForText;
@@ -517,6 +520,12 @@
          * Record internal status of of "tap to write".
          */
 		TInt iT2WState;
+		
+        /**
+         * Used to record if qwerty key board is opened.
+         * 
+         */
+        TInt iQwertyStatus;                           
         };
 
 public:
--- a/classicui_pub/hierarchical_lists_api/inc/akntreelist.h	Tue Sep 14 21:48:24 2010 +0300
+++ b/classicui_pub/hierarchical_lists_api/inc/akntreelist.h	Wed Sep 15 12:29:17 2010 +0300
@@ -931,6 +931,16 @@
      */
     IMPORT_C void SetMarkingModeObserver( MAknMarkingModeObserver* aObserver );
 
+    /**
+     * Turns the marking mode on / off.
+     *
+     * @since S60 5.2
+     * 
+     * @param  aEnable @c ETrue to turn marking mode on
+     *                 @c EFalse to turn marking mode off
+     */
+    IMPORT_C void SetMarkingMode( TBool aEnable );
+
 // From base class CCoeControl
 
     /**
--- a/classicui_pub/stylus_popup_menu_api/inc/aknstyluspopupmenu.h	Tue Sep 14 21:48:24 2010 +0300
+++ b/classicui_pub/stylus_popup_menu_api/inc/aknstyluspopupmenu.h	Wed Sep 15 12:29:17 2010 +0300
@@ -252,6 +252,12 @@
      */
     static void CleanLocalRef( TAny* aParam );
     
+
+    /**
+     * Hide Preview Popups
+     */
+    void HidePreviewPopup();
+
 private: // data
 
     /**
--- a/classicui_pub/tabs_api/inc/akntabgrp.h	Tue Sep 14 21:48:24 2010 +0300
+++ b/classicui_pub/tabs_api/inc/akntabgrp.h	Wed Sep 15 12:29:17 2010 +0300
@@ -876,6 +876,11 @@
      * Resets the highlight status for tabs
      */
     void ResetHighlightStatus();
+    
+    /**
+     * Enable/Disable highlight effect
+     */
+    void EnableHighlight( TBool aEnable, TInt aNewTab = -1 , TInt aPointX = -1 );
         
 
 private:
--- a/classicui_pub/ui_framework_definitions_api/inc/EIKON.HRH	Tue Sep 14 21:48:24 2010 +0300
+++ b/classicui_pub/ui_framework_definitions_api/inc/EIKON.HRH	Wed Sep 15 12:29:17 2010 +0300
@@ -60,9 +60,11 @@
 #define EEikCbaFlagSemiTransparent      0x100
 
 /**
- * Button group app msk icon flag. This flag can be set with CBA resource
- * or by using CEikCba::SetButtonGroupFlags(TInt) method. CBA using 
- * control_pane_g4(0) to draw the window rect
+ * Button group app msk icon flag,also support msk label. 
+ * This flag can be set with CBA resource
+ * or by using CEikCba::SetButtonGroupFlags(TInt) method. 
+ * CBA using control_pane_g4(0) to draw the window rect.
+ * Use the CEikCba::UpdateIconL() to set the msk icon or show the msk label.
  */
 #define EEikCbaFlagAppMskIcon           0x200
 // EIKBUTB.HRH
--- a/classicui_pub/ui_framework_definitions_api/inc/avkon.hrh	Tue Sep 14 21:48:24 2010 +0300
+++ b/classicui_pub/ui_framework_definitions_api/inc/avkon.hrh	Wed Sep 15 12:29:17 2010 +0300
@@ -400,6 +400,12 @@
     EPeninputCmdLandscapeEditor,
 
     /**
+     * Command id for find pane to hide adaptive search grid
+     * 
+     */
+    EAknCmdHideASGrid,
+
+    /**
     * @deprecated
     * Do not use.
     */
--- a/commonuis/CommonUi/src/FindItemMenu.cpp	Tue Sep 14 21:48:24 2010 +0300
+++ b/commonuis/CommonUi/src/FindItemMenu.cpp	Wed Sep 15 12:29:17 2010 +0300
@@ -882,18 +882,54 @@
     // Replace cmd call with AIW menu if more than one option available in AIW
     // menu
     // Note: count of VoIP profiles is not static. If phone contains VoIP
-    // profiles there must be Internet call command in call submenu.
+    // profiles there must be Internet call command in call submenu.   
+    // No context sensitive menu now. And new requirement is to show 
+    // call menu for normal item and voip menu for sip address if voip is enabled.
     TInt dummy = 0;
-    if ( ( !iHideCallMenu ||
-        ( iFindItemVoIPExtension->IsVoIPSupported() &&
-        iFindItemVoIPExtension->VoIPProfilesExistL() ) ) &&
+    if ( itemType == CItemFinder::EEmailAddress &&
+        iFindItemVoIPExtension->IsVoIPSupported() &&
+        iFindItemVoIPExtension->VoIPProfilesExistL() &&
         iMenuPane->MenuItemExists( EFindItemCmdCall, dummy ) &&
-        !iHideCallSubMenu )
-        {
+        !( iMenuItemFlags & CFindItemMenu::ECallItem ) 
+        )         
+        { 
+        // CMyMenuPane is used only to get the aiw menu item 
+        // for sip address, as it is an argument of the InitializeMenuPaneL
+        CMyMenuPane* aiwVoipMenu =
+            new ( ELeave ) CMyMenuPane( ( MEikMenuObserver* )this ); // not used really
+        CleanupStack::PushL( aiwVoipMenu );
+        TResourceReader callUiReader;
+        iCoeEnv->CreateResourceReaderLC(
+            callUiReader, R_FINDMENU_CALLUI_AIW_SUBMENU );
+        aiwVoipMenu->ConstructFromResourceL( callUiReader );
+        CleanupStack::PopAndDestroy(); //  callUiReader 
+
+        CAiwGenericParamList* inList = CAiwGenericParamList::NewLC();
+
+        // For SIP Address, use sip parameters
+        TAiwGenericParam param( EGenericParamSIPAddress );
+        
+        // get the aiw menu item for sip address
+        inList->AppendL( param );
+        iServiceHandler->InitializeMenuPaneL(
+                *( CEikMenuPane* )aiwVoipMenu,
+                R_FINDMENU_CALLUI_AIW_SUBMENU,
+                EFindMenuPlaceHolderCallUI,
+                *inList );
+        
+        // Add all the menus for aiw to context main menu now.
+        for ( TInt i = 0; i < aiwVoipMenu->NumberOfItemsInPane(); i++ )
+            {
+            iMenuPane->AddMenuItemL( aiwVoipMenu->ItemDataByIndexL( i ), EFindItemCmdCall );
+            }
+        
+        // Now options of VOIP call and voice call are exclusive.
+        // For email( sip ) address, voip is used. So set the call
+        // menu to dimmed.
         iMenuPane->SetItemDimmed( EFindItemCmdCall, ETrue );
-        iMenuPane->AddMenuItemsL(
-            R_FINDMENU_CALLUI_AIW_ITEM,
-            EFindItemCmdCall );
+            
+        CleanupStack::PopAndDestroy( inList );
+        CleanupStack::PopAndDestroy( aiwVoipMenu );
         }
     }
 
@@ -932,7 +968,7 @@
            #ifndef RD_UNIFIED_EDITOR
            if ( !iEmailOverSmsFeatureSupported )
                {
-           	   mtmFilter->AppendL(KSenduiMtmSmsUid);
+               mtmFilter->AppendL(KSenduiMtmSmsUid);
                }
            // Hide MMS if not supported
            if (!iMMSFeatureSupported)
@@ -944,7 +980,7 @@
            // Hide E-Mail if nosupported or phonenumber 
            if ( !iEmailUiFeatureSupported || itemType == CItemFinder::EPhoneNumber )
                {
-       	       mtmFilter->AppendL(KSenduiMtmSmtpUid);
+               mtmFilter->AppendL(KSenduiMtmSmtpUid);
                mtmFilter->AppendL(KSenduiMtmImap4Uid);
                mtmFilter->AppendL(KSenduiMtmPop3Uid);
                mtmFilter->AppendL(KSenduiMtmSyncMLEmailUid);
@@ -952,7 +988,7 @@
            // Hide Audio if not supported or E-mail address
            if( !iAudioMessagingFeatureSupported || itemType == CItemFinder::EEmailAddress)
                {
-           	   mtmFilter->AppendL(KSenduiMtmAudioMessageUid);
+               mtmFilter->AppendL(KSenduiMtmAudioMessageUid);
                }
            TUid uid = iSendUi->ShowTypedQueryL( CSendUi::EWriteMenu, NULL, sendingCapabilities, mtmFilter );
            
@@ -1302,7 +1338,7 @@
         else if ( itemType == CItemFinder::EEmailAddress &&
             ( fieldInfo->FieldId() == EPbkFieldIdEmailAddress ||
 #ifdef __VOIP 
-			iFindItemVoIPExtension->IsVoIPSupported() && 
+            iFindItemVoIPExtension->IsVoIPSupported() && 
 #else
             iVoIPFeatureSupported &&
 #endif 
@@ -1561,6 +1597,18 @@
             // sets call type for VoIP
             iDialData->SetCallType( CAiwDialData::EAIWVoiP );
             }
+        else
+            {
+            // sets call type for call, as now only voice call
+            // exists in menu now.
+            iDialData->SetCallType( CAiwDialData::EAIWVoice );
+            }
+        }
+    else
+        {
+        // sets call type for call, as now only voice call
+        // exists in menu now.
+        iDialData->SetCallType( CAiwDialData::EAIWVoice );
         }
 #endif // RD_VOIP_REL_2_2
     iDialData->SetPhoneNumberL( numberPtr );
--- a/commonuisupport/uikon/srvinc/EIKNFYSV.H	Tue Sep 14 21:48:24 2010 +0300
+++ b/commonuisupport/uikon/srvinc/EIKNFYSV.H	Wed Sep 15 12:29:17 2010 +0300
@@ -68,12 +68,13 @@
 public:
 	TUid iNotifierUid;
 	TSecureId iSecureId;
+	TInt iCount;
 	};
 
 /** @internalComponent */
 typedef RArray<const TNotifierMessageInfo> RNotifierMessageInfoQueue;
 /** @internalComponent */
-typedef RArray<const TNotifierSecureInfo> RNotifierSecureInfoQueue;
+typedef RArray<TNotifierSecureInfo> RNotifierSecureInfoQueue;
 
 /** 
 @internalComponent 
--- a/commonuisupport/uikon/srvsrc/EIKNFYSV.CPP	Tue Sep 14 21:48:24 2010 +0300
+++ b/commonuisupport/uikon/srvsrc/EIKNFYSV.CPP	Wed Sep 15 12:29:17 2010 +0300
@@ -219,16 +219,13 @@
 //aAction is not set because default value to it is already set(CPolicyServer::EFailClient)
 //aMissing is not set because it is not needed as we aren't overriding CheckFailedL
 	{
-	const TUid notifierUid = TUid::Uid(aMsg.Int0());
 	const TSecureId clientSid = aMsg.SecureId();
-
 	const TInt count = iAsyncSecureInfoQueue.Count();
 	for(int i = 0; i < count; i++)
 		{
 		if(iAsyncSecureInfoQueue[i].iSecureId == clientSid)
 			return CPolicyServer::EPass;
 		}
-	
 	return CPolicyServer::EFail;
 	}
 
@@ -448,32 +445,59 @@
 	const TUid notifierUid = TUid::Uid(aMessage.Int0());
 	const TSecureId secureId = aMessage.SecureId();
 	RNotifierSecureInfoQueue& secureInfoQueue = Server().AsyncSecureInfoQueue();
-	secureInfoQueue.AppendL(TNotifierSecureInfo(notifierUid, secureId));
+	TInt queueTotal = secureInfoQueue.Count();
+    TBool needsNewEntry = ETrue;
+    TInt indexOfInfo=0;
+    for(indexOfInfo = 0; indexOfInfo < queueTotal; indexOfInfo++)
+        {
+        if (secureInfoQueue[indexOfInfo].iNotifierUid == notifierUid && secureInfoQueue[indexOfInfo].iSecureId == secureId)
+            {
+            secureInfoQueue[indexOfInfo].iCount++;
+            needsNewEntry = EFalse;
+            break;
+            }
+        }
+    if (needsNewEntry)
+        {
+        secureInfoQueue.AppendL(TNotifierSecureInfo(notifierUid, secureId));
+        }
 	
 	if (!aMessage.Int2()) // if the third parameter is null
 		{
-		TRAPD(err, Server().Manager()->NotifierStartL(TUid::Uid(aMessage.Int0()),*inputBuffer,NULL,iClientId));
-		if(err)
-			{
-			secureInfoQueue.Remove(secureInfoQueue.Count()-1);
-			User::Leave(err);
-			}
+        TRAPD(err, Server().Manager()->NotifierStartL(TUid::Uid(aMessage.Int0()),*inputBuffer,NULL,iClientId));
+        if(err)
+            {
+            if (needsNewEntry)
+                {
+                secureInfoQueue.Remove(queueTotal);
+                }
+            else
+                {
+                secureInfoQueue[indexOfInfo].iCount--;
+                }
+            User::Leave(err);
+            }
 		}
 	else
 		{
 		HBufC8* const responseBuffer = HBufC8::NewLC(User::LeaveIfError(aMessage.GetDesMaxLength(2)));
 		TPtr8 response(responseBuffer->Des());
-		TRAPD(err, Server().Manager()->NotifierStartL(TUid::Uid(aMessage.Int0()), *inputBuffer, &response, iClientId));
-		if(err)
-			{
-			secureInfoQueue.Remove(secureInfoQueue.Count()-1);
-			User::Leave(err);
-			}
-			
-		aMessage.WriteL(2,response);
-		CleanupStack::PopAndDestroy(responseBuffer);
-		}
-		
+		TRAPD(err, Server().Manager()->NotifierStartL(TUid::Uid(aMessage.Int0()), *inputBuffer, &response, iClientId));	
+	    if(err)
+	        {
+	        if (needsNewEntry)
+	            {
+	            secureInfoQueue.Remove(queueTotal);
+	            }
+	        else
+	            {
+	            secureInfoQueue[indexOfInfo].iCount--;
+	            }
+	        User::Leave(err);
+	        }
+        aMessage.WriteL(2,response);
+        CleanupStack::PopAndDestroy(responseBuffer);
+	    }
 	CleanupStack::PopAndDestroy(inputBuffer);
 	}
 
@@ -520,12 +544,34 @@
 	const TUid notifierUid = TUid::Uid(aMessage.Int0());
 	const TSecureId secureId = aMessage.SecureId();
 	RNotifierSecureInfoQueue& secureInfoQueue = Server().AsyncSecureInfoQueue();
-	secureInfoQueue.AppendL(TNotifierSecureInfo(notifierUid,secureId));
+	TInt queueTotal = secureInfoQueue.Count();
+	TBool needsNewEntry = ETrue;
+	TInt indexOfInfo=0;
+	for(indexOfInfo = 0; indexOfInfo < queueTotal; indexOfInfo++)
+        {
+        if (secureInfoQueue[indexOfInfo].iNotifierUid == notifierUid && secureInfoQueue[indexOfInfo].iSecureId == secureId)
+            {
+            secureInfoQueue[indexOfInfo].iCount++;
+            needsNewEntry = EFalse;
+            break;
+            }
+        }
+	if (needsNewEntry)
+        {
+        secureInfoQueue.AppendL(TNotifierSecureInfo(notifierUid,secureId));
+        }
 	
 	TRAPD(err, Server().Manager()->NotifierStartAndGetResponseL(TUid::Uid(aMessage.Int0()), *inputBuffer, 2, aMessage, iClientId, aCleanupComplete));
 	if(err)
 		{
-		secureInfoQueue.Remove(secureInfoQueue.Count()-1);
+        if (needsNewEntry)
+            {
+		    secureInfoQueue.Remove(queueTotal);
+            }
+        else
+            {
+            secureInfoQueue[indexOfInfo].iCount--;
+            }
 		User::Leave(err);
 		}
 		
@@ -566,7 +612,14 @@
 		{
 		if(secureInfoQueue[i].iNotifierUid == notifierUid && secureInfoQueue[i].iSecureId == secureId)
 			{
-			secureInfoQueue.Remove(i);
+            if(secureInfoQueue[i].iCount)
+                {
+                secureInfoQueue[i].iCount--;
+                }
+            else
+                {
+                secureInfoQueue.Remove(i);
+                }
 			return KErrNone;
 			}
 		}
@@ -2057,7 +2110,7 @@
 //
 
 TNotifierSecureInfo::TNotifierSecureInfo(const TUid aNotifierUid, const TSecureId aSecureId)
- : iNotifierUid(aNotifierUid), iSecureId(aSecureId)
+ : iNotifierUid(aNotifierUid), iSecureId(aSecureId), iCount(0)
 	{
 	}
 
--- a/psln/Inc/PslnScreenSaverView.h	Tue Sep 14 21:48:24 2010 +0300
+++ b/psln/Inc/PslnScreenSaverView.h	Wed Sep 15 12:29:17 2010 +0300
@@ -294,6 +294,11 @@
         */
         CCenRepNotifyHandler* iScreenSaverNotifier;
         CPsmClient *iPsmClient;
+        
+        /**
+        * Ture if screensaver is being previewed.
+        */
+        TBool iScreenSaverPreviewing;
 
     };
 
--- a/psln/Src/PslnScreenSaverView.cpp	Tue Sep 14 21:48:24 2010 +0300
+++ b/psln/Src/PslnScreenSaverView.cpp	Wed Sep 15 12:29:17 2010 +0300
@@ -279,6 +279,7 @@
         self->iModel->ActivateScreenSaver(
             KErrNotFound,
             EPslnScreenSaverPreviewDeactivation );
+        self->iScreenSaverPreviewing = EFalse;
 
         if ( self->iContainer )
             {
@@ -563,6 +564,12 @@
 //
 void CPslnScreenSaverView::HandleScreenSaverActivationL( TInt aCurrentItem )
     {
+    // Protect screensaver type during preview.
+    if ( iScreenSaverPreviewing )
+        {
+        return;
+        }
+
     TInt PsmMode = 0; 
     iPsmClient->PsmSettings().GetCurrentMode( PsmMode );
     if ( PsmMode == EPsmsrvModePowerSave ) // PSM on, setting is protected
@@ -610,6 +617,12 @@
 //
 void CPslnScreenSaverView::HandleScreenSaverPreviewL( TInt aCurrentItem )
     {
+    // Stop responding to preview again if screensaver is being previewed.
+    if ( iScreenSaverPreviewing )
+        {
+        return;
+        }
+
     TRAPD( err, DoInvokeScreenSaverFunctionL(
         aCurrentItem,
         EScpCapsPreviewNotification ) );
@@ -619,7 +632,8 @@
         // Start listening for screensaver preview mode key changes.
         CreatePreviewModeSubscriberL();
         CreatePreviewStateSubscriberL();
-        
+
+        iScreenSaverPreviewing = ETrue;
         User::LeaveIfError(
             iModel->ActivateScreenSaver(
                 aCurrentItem,
--- a/uifw/AvKon/aknhlist/BWINS/aknhlistU.def	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/AvKon/aknhlist/BWINS/aknhlistU.def	Wed Sep 15 12:29:17 2010 +0300
@@ -74,4 +74,5 @@
 	?SetEmptyTextL@CAknTreeList@@QAEXABVTDesC16@@@Z @ 73 NONAME ; void CAknTreeList::SetEmptyTextL(class TDesC16 const &)
 	?VisibleItemIndex@CAknTreeList@@QBEHH@Z @ 74 NONAME ; int CAknTreeList::VisibleItemIndex(int) const
 	?SetMarkingModeObserver@CAknTreeList@@QAEXPAVMAknMarkingModeObserver@@@Z @ 75 NONAME ; void CAknTreeList::SetMarkingModeObserver(class MAknMarkingModeObserver *)
+	?SetMarkingMode@CAknTreeList@@QAEXH@Z @ 76 NONAME ; void CAknTreeList::SetMarkingMode(int)
 
--- a/uifw/AvKon/aknhlist/EABI/aknhlistU.def	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/AvKon/aknhlist/EABI/aknhlistU.def	Wed Sep 15 12:29:17 2010 +0300
@@ -74,4 +74,5 @@
 	_ZN12CAknTreeList13SetEmptyTextLERK7TDesC16 @ 73 NONAME
 	_ZNK12CAknTreeList16VisibleItemIndexEi @ 74 NONAME
 	_ZN12CAknTreeList22SetMarkingModeObserverEP23MAknMarkingModeObserver @ 75 NONAME
+	_ZN12CAknTreeList14SetMarkingModeEi @ 76 NONAME
 
--- a/uifw/AvKon/aknhlist/group/aknhlist.mmp	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/AvKon/aknhlist/group/aknhlist.mmp	Wed Sep 15 12:29:17 2010 +0300
@@ -41,6 +41,8 @@
 MW_LAYER_SYSTEMINCLUDE
 OS_LAYER_LIBC_SYSTEMINCLUDE
 
+SYSTEMINCLUDE             ../../../EikStd/coctlinc
+
 SOURCEPATH              ../src
 SOURCE                  aknhlistlib.cpp
 SOURCE                  akntreelist.cpp
--- a/uifw/AvKon/aknhlist/inc/akntreelistview.h	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/AvKon/aknhlist/inc/akntreelistview.h	Wed Sep 15 12:29:17 2010 +0300
@@ -930,6 +930,14 @@
      */    
     TBool HasMarkedItemsL() const;
     
+    /**
+     * Turns the marking mode on / off.
+     *
+     * @param  aEnable @c ETrue to turn marking mode on
+     *                 @c EFalse to turn marking mode off
+     */
+    void SetMarkingMode( TBool aEnable );
+
 // From MAknCollection
     /**
      * Returns the collection state. The state is combination of
--- a/uifw/AvKon/aknhlist/src/akntreelist.cpp	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/AvKon/aknhlist/src/akntreelist.cpp	Wed Sep 15 12:29:17 2010 +0300
@@ -675,6 +675,16 @@
 
 
 // ---------------------------------------------------------------------------
+// CAknTreeList::SetMarkingMode
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAknTreeList::SetMarkingMode( TBool aEnable )
+    {
+    View().SetMarkingMode( aEnable );
+    }
+
+
+// ---------------------------------------------------------------------------
 // Handles key events by mediating them to the view.
 // ---------------------------------------------------------------------------
 //
--- a/uifw/AvKon/aknhlist/src/akntreelistview.cpp	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/AvKon/aknhlist/src/akntreelistview.cpp	Wed Sep 15 12:29:17 2010 +0300
@@ -30,6 +30,7 @@
 #include <avkon.mbg>
 #include <gulicon.h>
 #include <aknmarkingmodeobserver.h>
+#include <aknmarkingmode.h>
 #include "akntreelistview.h"
 #include "akntree.h"
 #include "akntreelist.h"
@@ -2971,6 +2972,8 @@
         const TInt itemCount = iItems.Count();
         for ( TInt ii = 0; ii < itemCount; ++ii )
             {
+            TBool itemIsMarkable = ( iItems[ii].Item() &&
+                    iItems[ii].Item()->IsMarkable() );
             TRect drawRect( iItems[ii].Rect() );
 
             if ( iFlags.IsSet( EFlagMarkingMode ) )
@@ -3087,7 +3090,7 @@
 
                 if ( iFlags.IsSet( EFlagMarkingMode ) && iMarkingIconArray
                         && iMarkingIconArray->Count() == 
-                                KMarkingModeIconArraySize )
+                                KMarkingModeIconArraySize && itemIsMarkable )
                     {
                     // Rect for the marking icon
                     TRect iconRect = RectFromLayout( drawRect,
@@ -3604,6 +3607,18 @@
     return ( count > 0 );
     }
 
+// ---------------------------------------------------------------------------
+// CAknTreeListView::SetMarkingMode
+// ---------------------------------------------------------------------------
+//
+void CAknTreeListView::SetMarkingMode( TBool aEnable )
+    {
+    if ( ( iFlags.IsSet( EFlagMarkingMode ) != aEnable ) && iItemActionMenu )
+        {
+        iItemActionMenu->MarkingMode().SetCollectionMultipleMarkingState(
+            aEnable );
+        }
+    }
 
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
 // ---------------------------------------------------------------------------
--- a/uifw/AvKon/src/AknCharMap.cpp	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/AvKon/src/AknCharMap.cpp	Wed Sep 15 12:29:17 2010 +0300
@@ -6269,7 +6269,9 @@
 
 TBool CAknCharMap::IsKoreanSctUi() const
     {
-    return FeatureManager::FeatureSupported( KFeatureIdKorean );
+	// Korean feature dropped half-screen SCT in 9.2, it has the same
+	//   behavior with others, so return false here
+    return EFalse;
     }
 // -----------------------------------------------------------------------------
 // CAknCharMap::TitleWithSelectingSpecialChar()
--- a/uifw/AvKon/src/AknPreviewPopUp.cpp	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/AvKon/src/AknPreviewPopUp.cpp	Wed Sep 15 12:29:17 2010 +0300
@@ -360,7 +360,7 @@
                 TRAP_IGNORE( CreateClosingIconL() );
                 }
             break;
-            
+
         case KEikDynamicLayoutVariantSwitch:
             if ( iFlags & CAknPreviewPopUpController::EFixedMode )
                 {
--- a/uifw/AvKon/src/AknPreviewPopUpController.cpp	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/AvKon/src/AknPreviewPopUpController.cpp	Wed Sep 15 12:29:17 2010 +0300
@@ -131,6 +131,15 @@
 //
 CAknPreviewPopUpController::~CAknPreviewPopUpController()
     {
+    // If transition effect is on, when the deleting is caused by pressing red key
+    // (the font for CONE is already destroyed), the preview popup's hide operation
+    // will call its draw operation which will use the deleted font, thus panic happens;
+    // we hide the popup here in advance to prevent transation effect from drawing.
+    if( iPopUp->IsVisible() )
+        {
+        iPopUp->MakeVisible( EFalse );
+        }
+
     Cancel();
     delete iPopUp;
     iObservers.Reset();
--- a/uifw/AvKon/src/AknQueryControl.cpp	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/AvKon/src/AknQueryControl.cpp	Wed Sep 15 12:29:17 2010 +0300
@@ -3396,7 +3396,7 @@
 		to open in input dialog (usability). The valid area is enlarged to editor frame rect,
 		instead of text's rect, because text rect is too small for user to tap*/
 		CCoeControl* ctrl = ControlByLayoutOrNull( iQueryType );
-		if( ctrl )
+		if( ctrl && !EmbeddedVirtualInput() )
 			{
 			TPointerEvent pointerEvent( aPointerEvent );
 			if( !ctrl->Rect().Contains( aPointerEvent.iPosition ) && ( NbrOfEditorLines() == 1 ) )
--- a/uifw/AvKon/src/AknQueryDialog.cpp	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/AvKon/src/AknQueryDialog.cpp	Wed Sep 15 12:29:17 2010 +0300
@@ -2121,6 +2121,10 @@
 				CEikCaptionedControl *ctrl2 = GetLineByLineAndPageIndex(line2, 0);
 				TryChangeFocusToL(ctrl2->iId);
                 HandleOrientationSwitch();
+                // In landscape mode, the first and second lines are at the same position, 
+                // so set the height of first line¡¯s control to 0 to prevent it from being 
+                // selected by touch event.
+                ctrl1->SetSize( TSize( ctrl1->Size().iWidth, 0 ) );
 
                 UpdateLeftSoftKeyL();
                 _AKNTRACE( "[%s][%s] return EFalse", "CAknMultiLineDataQueryDialog", __FUNCTION__);
--- a/uifw/AvKon/src/AknSctDialog.cpp	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/AvKon/src/AknSctDialog.cpp	Wed Sep 15 12:29:17 2010 +0300
@@ -106,6 +106,7 @@
     TAknCharMapPictoMode    iPictoMode;
     TAknCharMapEmotionMode  iEmotionMode;
     TBool iFirstOrientation;
+    TBool iSimKeyDown;
     };
 
 // -----------------------------------------------------------------------------
@@ -116,7 +117,8 @@
 //
 CAknCharMapDialogExtension::CAknCharMapDialogExtension(CAknCharMapDialog* aCaller) : 
 iFlags(0), iQwertyMode(EFalse), iCaller(aCaller), 
-iShowAnotherTableCharCase(-1), iPictoMode(EAknCharMapPictoNoUse), iEmotionMode(EAknCharMapEmotionNoUse)
+iShowAnotherTableCharCase(-1), iPictoMode(EAknCharMapPictoNoUse), iEmotionMode(EAknCharMapEmotionNoUse),
+iSimKeyDown( EFalse )
     {
     }
 
@@ -297,22 +299,7 @@
     // to select multiple characters before.
     if (aButtonId == EAknSoftkeyOk || aButtonId == EAknSoftkeySelect || aButtonId == EAknSoftkeyExit)
         {
-        // In Korean UI, SCT isn't closed by pressing "Select" softkey,
-        // but SCT is closed by pressing "Back"(button id is EAknSoftkeyClose).
-        // Japanese feature for SCT will not be supported since TB9.2 PS2,
-        // so remove the code for Japanese SCT.
         MAknSctFocusHandler* handler = charmapControl->FocusHandler();
-        if ( charmapControl->IsKoreanSctUi() &&
-            aButtonId != EAknSoftkeyExit &&
-            handler->FocusedControl() == charmapControl)
-            {
-            TKeyEvent key;
-            key.iCode=EKeySpace;
-            key.iModifiers=0;
-            handler->FocusedControl()->OfferKeyEventL(key, EEventKey);
-            return(EFalse);
-            }
-        // else
         TKeyEvent key;
         key.iCode=EKeyOK;
         key.iModifiers=0;
@@ -494,20 +481,35 @@
                 break;
             }
         }
-    else if (aModifiers == EEventKeyUp)
+    else if ( aModifiers == EEventKeyDown )
         {
-        switch (aKeyEvent.iScanCode)
+        switch ( aKeyEvent.iScanCode )
             {
             case EStdKeyLeftFunc:
             case EStdKeyRightFunc:
                 {
-                if (!aKeyEvent.iRepeats) // switch another table when repeat count is 0 only.
+                iExtension->iSimKeyDown = ETrue;
+                }
+                break;
+            default:
+                break;
+            }
+        }
+    else if ( aModifiers == EEventKeyUp )
+        {
+        switch ( aKeyEvent.iScanCode )
+            {
+            case EStdKeyLeftFunc:
+            case EStdKeyRightFunc:
+                {
+                if ( !aKeyEvent.iRepeats  && iExtension->iSimKeyDown ) // switch another table when repeat count is 0 only.
                     {
                     if (!isLockNumericKeys) // Check whether current input mode is Qwerty.
                         {
                         SwitchTablesOrPagesL();
                         }
                     }
+                iExtension->iSimKeyDown = EFalse;
                 }
                 break;
             default:
--- a/uifw/AvKon/src/AknViewAppUi.cpp	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/AvKon/src/AknViewAppUi.cpp	Wed Sep 15 12:29:17 2010 +0300
@@ -99,6 +99,13 @@
         TInt iFlags;
 #endif // RD_SPLIT_VIEW
         TBool iUseDefaultScreenClearer;
+        
+        /**
+         * Used to control whether or not the default screen clearer
+		 * is used when launching the application as embedded. By default the
+         * clearer isn't used for embedded applications.
+         */
+        TBool iUseDefaultScreenClearerInEmbeddedLaunch;
     };
 
 // ============================ MEMBER FUNCTIONS ===============================
@@ -239,8 +246,12 @@
 	if ( iEikonEnv->RootWin().OrdinalPosition() == 0 &&
 	     iExtension->iUseDefaultScreenClearer )
         {
-	    if ( !iEikonEnv->StartedAsServerApp() )
+	    if ( !iEikonEnv->StartedAsServerApp() ||
+	         iExtension->iUseDefaultScreenClearerInEmbeddedLaunch )
             {
+	        // Use transparent screen clearer for embedded applications,
+	        // except for when application wants to use the normal
+	        // screen clearer.
             iClearer = CAknLocalScreenClearer::NewL( ETrue );
             }
         else
@@ -1014,18 +1025,16 @@
         TRAP_IGNORE( iExtension = CAknViewAppUiExtension::NewL() );
         }
     
-    // Update flag
+    // Update the flags
     if ( iExtension )
         {
         iExtension->iUseDefaultScreenClearer = aEnable;
+        iExtension->iUseDefaultScreenClearerInEmbeddedLaunch = aEnable;
         }
 
-    // Create/delete iClearer if required
-    if ( aEnable && !iClearer )
-        {
-        TRAP_IGNORE( iClearer = CAknLocalScreenClearer::NewL( EFalse ) );
-        }
-    else if ( !aEnable && iClearer )
+    // Delete the clearer if it already exists but isn't required anymore.
+    // The clearer is created when needed on BaseConstructL.
+    if ( !aEnable && iClearer )
         {
         delete iClearer;
         iClearer = NULL;
--- a/uifw/AvKon/src/akncolourselectiongrid.cpp	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/AvKon/src/akncolourselectiongrid.cpp	Wed Sep 15 12:29:17 2010 +0300
@@ -89,7 +89,7 @@
         }
     
     TRect mainPane;
-    AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EPopupParent, mainPane );
+    AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, mainPane );
     
     TAknLayoutRect colourPopupWindow;
     colourPopupWindow.LayoutRect(mainPane, AknLayoutScalable_Avkon::popup_large_graphic_colour_window(colourPopupVariety));     
--- a/uifw/AvKon/src/aknnavi.cpp	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/AvKon/src/aknnavi.cpp	Wed Sep 15 12:29:17 2010 +0300
@@ -32,6 +32,8 @@
 #include <akniconconfig.h>
 
 #include <AknTasHook.h>
+#include <AknPriv.hrh>
+
 // USER INCLUDE FILES
 #include "aknenv.h"
 #include "AknDef.h"
@@ -2008,26 +2010,47 @@
 //
 void CAknNavigationControlContainer::HandleLosingForeground()
     {
-    // If volume popup is shown when the navi pane loses foreground,
-    // then the popup needs to be closed if shown, and the volume control
-    // told that it's not the topmost control.    
+    // Get the top control on navi pane.
     CAknNavigationDecorator* topControl = Top();
     
     if ( topControl )
         {
-        if ( topControl &&
-             topControl->ControlType() == CAknNavigationDecorator::ENaviVolume )
+        switch( topControl->ControlType() )
             {
-            CAknVolumePopup* volumePopup =
-                static_cast<CAknVolumePopup*> (
-                    topControl->iDecoratedControl );
+            case CAknNavigationDecorator::ENaviVolume:
+                {
+                // If volume popup is shown when the navi pane loses foreground,
+                // then the popup needs to be closed if shown, and the volume control
+                // told that it's not the topmost control.  
+                CAknVolumePopup* volumePopup =
+                    static_cast<CAknVolumePopup*> (
+                        topControl->iDecoratedControl );
 
-            if ( volumePopup )
+                if ( volumePopup )
+                    {
+                    volumePopup->CloseVolumePopup();
+                    static_cast<CAknVolumeControl*>(
+                        topControl->DecoratedControl() )->HandleNaviStackChange( EFalse );
+                    }
+                break;
+                }
+            case CAknNavigationDecorator::ETabGroup:
                 {
-                volumePopup->CloseVolumePopup();
-                static_cast<CAknVolumeControl*>(
-                    topControl->DecoratedControl() )->HandleNaviStackChange( EFalse );
+                // If tabgroup is shown when navi pane loses foreground, forward 
+                // KAknMessageFocusLost event to tabgroup. Tab panes will stop highlighting
+                // the pressed tab.
+                CAknTabGroup* tabGroup =
+                       static_cast<CAknTabGroup*> (
+                           topControl->iDecoratedControl );
+
+                if ( tabGroup )
+                    {
+                    tabGroup->HandleResourceChange(KAknMessageFocusLost);
+                    }
+                break;
                 }
+            default:
+                break;
             }
         }
     }
--- a/uifw/AvKon/src/aknsfld.cpp	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/AvKon/src/aknsfld.cpp	Wed Sep 15 12:29:17 2010 +0300
@@ -799,6 +799,10 @@
                 }                  
             iListBox->DrawNow();
             }
+        }  
+    else if( aCommandId == EAknCmdHideASGrid && iAdaptiveSearch )
+        {     
+        iAdaptiveSearch->HideAdaptiveSearchGridL();                       
         }
     }
 
--- a/uifw/AvKon/src/aknsgcc.cpp	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/AvKon/src/aknsgcc.cpp	Wed Sep 15 12:29:17 2010 +0300
@@ -80,8 +80,12 @@
 
 
 inline CAknSgcClient* CAknSgcClient::Static()
-	{ return static_cast<CAknSgcClient*>(CCoeEnv::Static(KAknSgcClientStaticId)); }
-
+	{
+    if (CCoeEnv::Static())
+        return static_cast<CAknSgcClient*>(CCoeEnv::Static(KAknSgcClientStaticId));
+    else
+        return NULL;
+	}
 
 
 NONSHARABLE_CLASS(TSgcClientStatusPaneRedrawCoordinator) : public MAknSgcStatusPaneRedrawCoordinator
--- a/uifw/AvKon/src/akntabgrp.cpp	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/AvKon/src/akntabgrp.cpp	Wed Sep 15 12:29:17 2010 +0300
@@ -38,6 +38,7 @@
 
 #include <AknTasHook.h>
 #include <touchfeedback.h>
+#include <AknPriv.hrh>
 
 // USER INCLUDE FILES
 #include "aknappui.h"
@@ -2916,21 +2917,9 @@
                 // pointer position.
                 newTab = iActiveTab;
                 }
-            iExtension->iPointerDownTab       = newTab;
-            iExtension->iPointerDownXPosition = aPointerEvent.iPosition.iX;
             
             //Activates highlight drawing for pressed tab.
-            if (!iExtension->iHighlight)
-                {
-                iExtension->iHighlight = ETrue;
-                
-                // Set the pressed tab to highlight
-                if ( iExtension->iPointerDownTab >= 0 )
-                    {
-                    iTabArray->At( iExtension->iPointerDownTab )->SetHighlight( ETrue );
-                    }
-                DrawDeferred();
-                }
+            EnableHighlight( ETrue, newTab, aPointerEvent.iPosition.iX );
             
             return;
             }
@@ -2961,14 +2950,7 @@
             // if the button up event occurs ouside tabgroup, ignore it.
             if ( !Rect().Contains( aPointerEvent.iPosition ) || iExtension->iPointerDownTab != newTab )
                 {
-                iExtension->iPointerDownTab = -1;
-                iExtension->iPointerDownXPosition = -1;
-                if (iExtension->iHighlight)
-                    {
-                    iExtension->iHighlight = EFalse;
-                    ResetHighlightStatus();
-                    DrawDeferred();
-                    }
+                EnableHighlight( EFalse );
                 return;
                 }
 
@@ -3075,14 +3057,7 @@
                     }
                 }
 
-            iExtension->iPointerDownTab       = -1;
-            iExtension->iPointerDownXPosition = -1;
-            if( iExtension->iHighlight )
-                {
-                iExtension->iHighlight = EFalse;
-                ResetHighlightStatus();
-                DrawDeferred();
-                }
+            EnableHighlight( EFalse );
             }
         }
     }
@@ -3436,6 +3411,12 @@
         TRAP_IGNORE( InitTabGroupGraphicsL() );
         TRAP_IGNORE( LoadTabBitmapsL( iNumberOfTabsShown, iLongTabs ) );
         }
+    
+    // Stop highlighting the pressed tab when receives KAknMessageFocusLost event.
+    if( aType == KAknMessageFocusLost )
+        {
+        EnableHighlight(EFalse);
+        }
 
     if ( aType == KEikDynamicLayoutVariantSwitch )
         {
@@ -3466,11 +3447,7 @@
         if ( iExtension )
             {
             iExtension->iNarrowTabLayout = EFalse;
-            if( iExtension->iHighlight )
-                {
-                iExtension->iHighlight = EFalse;
-                ResetHighlightStatus();
-                }
+            EnableHighlight(EFalse);
             }
 
         if ( !COMPARE_BOOLS( iMirrored, AknLayoutUtils::LayoutMirrored() ) )
@@ -4520,4 +4497,34 @@
         iTabArray->At(i)->SetHighlight( EFalse );
         }
     }
+
+void CAknTabGroup::EnableHighlight( TBool aEnable, TInt aNewTab , TInt aPointX )
+    {
+    iExtension->iPointerDownTab = aNewTab;
+    iExtension->iPointerDownXPosition = aPointX;
+    if( aEnable )
+        {
+        //Activates highlight drawing for pressed tab.
+        if (!iExtension->iHighlight)
+            {
+            iExtension->iHighlight = ETrue;
+            
+            // Set the pressed tab to highlight
+            if ( iExtension->iPointerDownTab >= 0 )
+                {
+                iTabArray->At( iExtension->iPointerDownTab )->SetHighlight( ETrue );
+                }
+            DrawDeferred();
+            }
+        }
+    else
+        {
+        if (iExtension->iHighlight)
+            {
+            iExtension->iHighlight = EFalse;
+            ResetHighlightStatus();
+            DrawDeferred();
+            }
+        }
+    }
  //  End of File
--- a/uifw/EikStd/EABI/EIKCOCTLU.DEF	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/EikStd/EABI/EIKCOCTLU.DEF	Wed Sep 15 12:29:17 2010 +0300
@@ -2018,4 +2018,6 @@
 	_ZN22CAknLocalScreenClearer4NewLEii @ 2017 NONAME
 	_ZN22CAknLocalScreenClearer5NewLCEii @ 2018 NONAME
 	_ZN9CEikEdwin10EnableT2WLEi @ 2019 NONAME
+	_ZN15CAknMarkingMode33SetCollectionMultipleMarkingStateEi @ 2020 NONAME
+	_ZN18CAknItemActionMenu11MarkingModeEv @ 2021 NONAME
 
--- a/uifw/EikStd/bwins/EIKCOCTLU.DEF	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/EikStd/bwins/EIKCOCTLU.DEF	Wed Sep 15 12:29:17 2010 +0300
@@ -1629,3 +1629,6 @@
 	?NewLC@CAknLocalScreenClearer@@SAPAV1@HH@Z @ 1628 NONAME ; class CAknLocalScreenClearer * CAknLocalScreenClearer::NewLC(int, int)
 	?NewL@CAknLocalScreenClearer@@SAPAV1@HH@Z @ 1629 NONAME ; class CAknLocalScreenClearer * CAknLocalScreenClearer::NewL(int, int)
 	?EnableT2WL@CEikEdwin@@QAEXH@Z @ 1630 NONAME ; void CEikEdwin::EnableT2WL(int)
+	?MarkingMode@CAknItemActionMenu@@QAEAAVCAknMarkingMode@@XZ @ 1631 NONAME ; class CAknMarkingMode & CAknItemActionMenu::MarkingMode(void)
+	?SetCollectionMultipleMarkingState@CAknMarkingMode@@QAEXH@Z @ 1632 NONAME ; void CAknMarkingMode::SetCollectionMultipleMarkingState(int)
+
--- a/uifw/EikStd/coctlinc/aknmarkingmode.h	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/EikStd/coctlinc/aknmarkingmode.h	Wed Sep 15 12:29:17 2010 +0300
@@ -56,7 +56,7 @@
      * @internal
      * @param aActive ETrue if multiple marking should be active.
      */
-    void SetCollectionMultipleMarkingState( TBool aActive );
+    IMPORT_C void SetCollectionMultipleMarkingState( TBool aActive );
     
     /**
      * Ends marking mode if collection allows it
--- a/uifw/EikStd/coctlsrc/AknButton.cpp	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/EikStd/coctlsrc/AknButton.cpp	Wed Sep 15 12:29:17 2010 +0300
@@ -2307,11 +2307,11 @@
             {
             return;
             }            
-        TBool hitArea( EFalse );
-        TRAP_IGNORE( hitArea = HitAreaContainsL( aPointerEvent.iPosition, EFalse ))
-        if ( ( iFlags & KAknButtonHitTest ) && !hitArea )
+        //Using HitAreaContainsL() to verify whether pointer event locates in valid area
+        //when KAknButtonHitTest is defined.
+        if ( iFlags & KAknButtonHitTest ) 
             {
-            buttonEvent = EFalse;
+            TRAP_IGNORE( buttonEvent = HitAreaContainsL( aPointerEvent.iPosition, EFalse ))     
             }
         
         TBool redrawNeeded(EFalse);
--- a/uifw/EikStd/coctlsrc/EIKCOLIB.CPP	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/EikStd/coctlsrc/EIKCOLIB.CPP	Wed Sep 15 12:29:17 2010 +0300
@@ -558,6 +558,16 @@
             }
         
         TRect wndRc( splitwnd.Rect() );
+		
+        if ( !Layout_Meta_Data::IsLandscapeOrientation() )
+            {		
+			// include indicator pane height
+            TAknWindowLineLayout indiPane = AknLayoutScalable_Avkon::icf_edit_indi_pane( 2 ).LayoutLine();
+    		TAknLayoutRect indiRect;
+    		indiRect.LayoutRect(splitwnd.Rect(), indiPane);
+	        wndRc.iTl.iY -= indiRect.Rect().Height();
+			}
+		
         inputTop = wndRc.iTl.iY;
         rect.iBr.iY = rect.iBr.iY > inputTop ? inputTop : rect.iBr.iY;
         rect.iTl.iY = 0;
--- a/uifw/EikStd/coctlsrc/EIKCTGRP.CPP	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/EikStd/coctlsrc/EIKCTGRP.CPP	Wed Sep 15 12:29:17 2010 +0300
@@ -348,23 +348,11 @@
 	{
     TInt count = iControlArray->Count();
 
-	// This prevents MSK from drawing in landscape layouts.
-	// Also MSK doesn't even need to be activated in landscape modes.
-    if ( count == 4 )
-        {   
-        // Exception is made for idle flat status pane layouts,
-        // in which the MSK is used also in landscape.
-        TBool mskSupportedLscLayoutActive(
-            AVKONENV->StatusPaneResIdForCurrentLayout(
-                AknStatuspaneUtils::CurrentStatusPaneLayoutResId() ) ==
-                    R_AVKON_WIDESCREEN_PANE_LAYOUT_IDLE_FLAT_NO_SOFTKEYS );
-
-        if ( iLayout & EDisableMSKDrawing ||
-             ( Layout_Meta_Data::IsLandscapeOrientation() && 
-               !mskSupportedLscLayoutActive ) )
-            {
-            count--;
-            }
+    // count == 4 means MSK is on, but when it is disabled by EDisableMSKDrawing,
+    // we should decrease the count to avoid drawing it.
+    if ( count == 4 && ( iLayout & EDisableMSKDrawing ) )
+        {
+        count--;
         }
 
 	return count;
--- a/uifw/EikStd/coctlsrc/EIKEDWIN.CPP	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/EikStd/coctlsrc/EIKEDWIN.CPP	Wed Sep 15 12:29:17 2010 +0300
@@ -102,14 +102,16 @@
 #include "smileycustomwrap.h"
 #include <touchfeedback.h>
 
-// declare function
-void ReadSpecialCharFromSCTL( TPtr& ptr, TInt sctResourceId );
-void ReadSCTHeadPane( TResourceReader& aReader );
 // for supporting TapToWrite
 #include <AvkonInternalCRKeys.h>
 #include <e32property.h>
 #include <AknFepInternalPSKeys.h>
 #include <AknFontAccess.h>
+#include <AvkonInternalCRKeys.h>  // KAknQwertyInputModeActive
+
+// declare function
+void ReadSpecialCharFromSCTL( TPtr& ptr, TInt sctResourceId );
+void ReadSCTHeadPane( TResourceReader& aReader );
 
 GLDEF_C void Panic(TEikEdwinPanic aPanic)
     {
@@ -1075,6 +1077,14 @@
         }
     delete iCenRepNotifyHandler;
     delete iCenRep;
+    
+    // Stop listening CenRep for qwerty key board.
+    if ( iCenRepNotifyHandlerForQwerty )
+        {
+        iCenRepNotifyHandlerForQwerty->StopListening();
+        }
+    delete iCenRepNotifyHandlerForQwerty;
+    delete iCenRepForQwerty;
 
     delete iFormAccessor;
     delete iFormCursorModifier;
@@ -1226,6 +1236,19 @@
         iCenRepNotifyHandler->StartListeningL();
         iCenRep->Get(KAknFepClearDirection, iClearDirection);
         }
+    // Start listening a CenRep key indicating whether qwerty input mode is active.
+    TRAPD( error, iCenRepForQwerty = CRepository::NewL( KCRUidAvkon ) );
+    if ( error == KErrNone )
+        {
+        iCenRepNotifyHandlerForQwerty = CCenRepNotifyHandler::NewL( *this,
+            *iCenRepForQwerty,
+            CCenRepNotifyHandler::EIntKey,
+            KAknQwertyInputModeActive );
+
+        iCenRepNotifyHandlerForQwerty->StartListeningL();
+        iCenRepForQwerty->Get( KAknQwertyInputModeActive, iQwertyStatus );
+        }
+    
     iSmileyWrap = new ( ELeave ) CSmileyCustomWrap;
     iSkinInstance = AknsUtils::SkinInstance();
     }
@@ -1315,6 +1338,12 @@
         {
         iClearDirection = (TBool)aNewValue;
         }
+    //If qwerty key board is opened clean the "tap to write", if qwerty key board is closed display the "tap to write"
+    else if ( aId == KAknQwertyInputModeActive )
+        {
+        iQwertyStatus = ( TBool )aNewValue;
+        iEdwin->TryToDrawT2W( iQwertyStatus );
+        }
     }
 
 // ---------------------------------------------------------------------------
@@ -2412,6 +2441,11 @@
             break; // prevent eg Ctrl-I inserting a tab
         goto InChar;
     default:
+        // If ctrl + key is not hotkey return not consume. 
+        if ( magnify )
+            {
+            return EKeyWasNotConsumed;
+            }
         if (code>=ENonCharacterKeyBase || !TChar(code).IsPrint() || (!IsValidChar(code)))
             {
             ret=EKeyWasNotConsumed;
@@ -4490,8 +4524,7 @@
          !( iEdwinUserFlags & EDisplayOnly ) && iEdwinExtension->iT2WBuf && 
          ( iEdwinExtension->iT2WState & CEikEdwinExtension::EFocusOn ) &&
          !( iEdwinExtension->iT2WState & CEikEdwinExtension::ESplitInputEnabled ) && 
-         !( iEdwinExtension->iExtendedInputCapabilities->Capabilities() & 
-           CAknExtendedInputCapabilities::EInputEditorQwertyInputActive );
+         !( iEdwinExtension->iQwertyStatus );
     }
 
 void CEikEdwin::SetCursorVisibilityL(TBool aEmphasis)
@@ -8744,10 +8777,11 @@
 
         TBool partialScreenDisabled( !( aNewFlags & EAknEditorFlagEnablePartialScreen ) && 
             ( aOldFlags & EAknEditorFlagEnablePartialScreen ) );
-         
-        if ( ( textViewHideEnabled && 
-                !( aNewFlags & EAknEditorFlagEnablePartialScreen ) ) ||
-             ( partialScreenDisabled && ( aNewFlags & EAknEditorFlagHideTextView ) ) )
+
+        if ( IsActivated() && 
+            ( ( textViewHideEnabled && !( aNewFlags & EAknEditorFlagEnablePartialScreen ) ) ||
+              ( partialScreenDisabled && ( aNewFlags & EAknEditorFlagHideTextView ) ) )
+            )
             {
             iTextView->MakeVisible( EFalse );
             iEdwinExtension->iTextViewHidden = ETrue;
@@ -9137,13 +9171,7 @@
 	for (TInt i = 0; i < text.Length(); i++)
 		{
 		TChar character(text[i]);
-		if (text[i] == ' ')
-			return ETrue;
-		
-		TChar::TCategory category = character.GetCategory();
-		
-		if ( !( ( ( category & TChar::ESeparatorGroup ) == TChar::ESeparatorGroup ) ||
-			   ( text[i] >= 0x200B && text[i] <= 0xFFFC ) ) )
+        if ( character.IsPrint() )
 			{
 			ret = ETrue;
 			break;
--- a/uifw/EikStd/coctlsrc/aknitemactionmenu.cpp	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/EikStd/coctlsrc/aknitemactionmenu.cpp	Wed Sep 15 12:29:17 2010 +0300
@@ -219,6 +219,18 @@
 
 
 // ---------------------------------------------------------------------------
+// CAknItemActionMenu::MarkingMode
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CAknMarkingMode& CAknItemActionMenu::MarkingMode()
+    {
+    _AKNTRACE_FUNC_ENTER;
+    _AKNTRACE_FUNC_EXIT;
+    return *iMarking;
+    }
+
+
+// ---------------------------------------------------------------------------
 // CAknItemActionMenu::AddCollectionStateL
 // ---------------------------------------------------------------------------
 //
@@ -381,18 +393,6 @@
 
 
 // ---------------------------------------------------------------------------
-// CAknItemActionMenu::MarkingMode
-// ---------------------------------------------------------------------------
-//
-CAknMarkingMode& CAknItemActionMenu::MarkingMode()
-    {
-    _AKNTRACE_FUNC_ENTER;
-    _AKNTRACE_FUNC_EXIT;
-    return *iMarking;
-    }
-
-
-// ---------------------------------------------------------------------------
 // CAknItemActionMenu::CollectionHasMarkedItems
 // ---------------------------------------------------------------------------
 //
--- a/uifw/EikStd/coctlsrc/aknmarkingmode.cpp	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/EikStd/coctlsrc/aknmarkingmode.cpp	Wed Sep 15 12:29:17 2010 +0300
@@ -59,7 +59,8 @@
 // CAknMarkingMode::SetCollectionMultipleMarkingState
 // ---------------------------------------------------------------------------
 //
-void CAknMarkingMode::SetCollectionMultipleMarkingState( TBool aActive )
+EXPORT_C void CAknMarkingMode::SetCollectionMultipleMarkingState(
+    TBool aActive )
     {
     _AKNTRACE_FUNC_ENTER;
     for ( TInt i = 0; i < iCollections.Count(); i++ )
@@ -121,17 +122,12 @@
     for ( TInt i = 0; i < iCollections.Count(); i++ )
         {
         MAknCollection* collection( iCollections[i] );
-        if ( collection->CollectionState() &
-                MAknCollection::EStateCollectionVisible )
+        MAknMarkingCollection* markingCollection
+            = MarkingCollection( *collection );
+        if ( markingCollection )
             {
-            MAknMarkingCollection* markingCollection
-                = MarkingCollection( *collection );
-            if ( markingCollection )
-                {
-                markingActive = markingCollection->MarkingState()
-                    & MAknMarkingCollection::EStateMarkingMode;
-                }
-            break;
+            markingActive = markingCollection->MarkingState()
+                & MAknMarkingCollection::EStateMarkingMode;
             }
         }
     _AKNTRACE_FUNC_EXIT;
--- a/uifw/EikStd/coctlsrc/aknstyluspopupmenu.cpp	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/EikStd/coctlsrc/aknstyluspopupmenu.cpp	Wed Sep 15 12:29:17 2010 +0300
@@ -426,14 +426,7 @@
     {
     if ( aControl && aEventType == EEventStateChanged )
         {
-        if ( iPreviewPopup )
-            {
-            iPreviewPopup->HidePopUp();
-            }
-        if ( iController )
-            {
-            iController->HidePopUp();
-            }
+        HidePreviewPopup();
 
         if ( iMenuObserver )
             {
@@ -463,20 +456,14 @@
         }
     else if ( aControl && aEventType == EEventRequestExit )
         {
-        if ( iPreviewPopup )
-            {
-            iPreviewPopup->HidePopUp();
-            }
-
-        if ( iController )
-            {
-            iController->HidePopUp();
-            }      
+        HidePreviewPopup();
 
         StartControllerIdleL();
         }
     else if ( aControl && aEventType == EEventRequestCancel )
         {
+        HidePreviewPopup();
+
         if ( iMenuObserver )
             {
             TBool isAlreadySet = iFlags.IsSet( EIdleDisabled );
@@ -587,3 +574,20 @@
     {
     static_cast<CAknStylusPopUpMenu*>( aParam )->iIsDeleted = NULL;
     }
+
+// -----------------------------------------------------------------------------
+// Hide Preview Popups
+// -----------------------------------------------------------------------------
+//
+void CAknStylusPopUpMenu::HidePreviewPopup()
+    {
+    if ( iPreviewPopup )
+        {
+        iPreviewPopup->HidePopUp();
+        }
+
+    if ( iController )
+        {
+        iController->HidePopUp();
+        }
+    }
--- a/uifw/EikStd/coctlsrc/aknstyluspopupmenucontent.cpp	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/EikStd/coctlsrc/aknstyluspopupmenucontent.cpp	Wed Sep 15 12:29:17 2010 +0300
@@ -1026,7 +1026,7 @@
     
         layoutText.DrawText( aGc, *(iItems[aItem]->iText), ETrue, textColor ); 
 
-        if ( aItem < iItems.Count()-1 )
+        if ( aItem < iLastVisibleItem )
             {
             AknListUtils::DrawSeparator( aGc, rect, textColor, skin );
             }
@@ -1214,11 +1214,11 @@
                     {
                     iSBFrame->DrawBackground( EFalse, EFalse );
                     if ( AknLayoutUtils::LayoutMirrored() )
-        	            {
+                        {
                         listRect.iTl.iX += AknLayoutScalable_Avkon::scroll_pane().LayoutLine().iW;
-        	            }
+                        }
                     else
-        	            {
+                        {
                         listRect.iBr.iX -= AknLayoutScalable_Avkon::scroll_pane().LayoutLine().iW;
                         }
                     }
@@ -1227,14 +1227,14 @@
         else
         	{
             if ( AknLayoutUtils::LayoutMirrored() )
-	            {
+                {
                 listRect.iTl.iX += AknLayoutScalable_Avkon::scroll_pane().LayoutLine().iW;
-	            }
+                }
             else
-	            {
+                {
                 listRect.iBr.iX -= AknLayoutScalable_Avkon::scroll_pane().LayoutLine().iW;
-                }        	
-        	}
+                }
+            }
 
         }
     
@@ -1295,12 +1295,18 @@
         iItems[i]->iRect = itemRect;
         }
 
-    if ( lastItem == iItems.Count() || ( Rect().Height() % singleItemHeight ) == 0 )
+    // info:
+    //    1, according to the function MinimumSize the following 
+    // condition is always true: Rect().Height() % singleItemHeight == 0
+    //    2, the Offset is in the range of [0 , singleItemHeight)
+    //    we get partial items only when Offset is not zero during scrolling
+    // note:
+    //    should subtract the lastItem when Offset is zero without partical items
+    if ( lastItem == iItems.Count() || ( 0 == Offset() ) )
         {
-        // substract the partially visible item
         --lastItem;
         }
-    
+
     return lastItem; 
     }
 
--- a/uifw/EikStd/coctlsrc/eikcba.cpp	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/EikStd/coctlsrc/eikcba.cpp	Wed Sep 15 12:29:17 2010 +0300
@@ -132,7 +132,7 @@
             result = ETrue;
             }
         }
-    
+    _AKNTRACE( "IsMskEnabledLayoutActive is %d", result );
     _AKNTRACE_FUNC_EXIT;
     return result;
     }
@@ -784,9 +784,10 @@
      */
     TBool Active() const
         {
-        _AKNTRACE_FUNC_ENTER;
-        _AKNTRACE_FUNC_EXIT;
-        return iOwner.IsVisible() && !iOwner.IsEmpty();
+    	TBool ret;
+    	ret = iOwner.IsVisible() && !iOwner.IsEmpty();
+    	_AKNTRACE( "Active is %d", ret );
+        return ret;
         }
     
     /*
@@ -2956,8 +2957,8 @@
         // If the status pane is invisible in landscape, softkey need to draw frame to cover
         // the area of combine pane.
         CEikStatusPaneBase* statusPane = CEikStatusPaneBase::Current();
-        if (statusPane && !statusPane->IsVisible() && isLandscapeOrient &&
-            statusPane->PaneCapabilities(TUid::Uid(EEikStatusPaneUidCombined)).IsInCurrentLayout())
+        if ( ( iCbaFlags & EEikCbaFlagAppMskIcon ) || ( statusPane && !statusPane->IsVisible() && isLandscapeOrient &&
+            statusPane->PaneCapabilities(TUid::Uid(EEikStatusPaneUidCombined)).IsInCurrentLayout()))
             {
             iFlags.Set( ECbaCombinePaneUncovered );
             }
@@ -2983,90 +2984,95 @@
         // If status indicators and clock are shown in control pane area,
         // then remove those areas from cba window region.
         // 
-        // NOTE: MSK is not supported in landscape.
+        //
+        // NOTE: MSK is not supported in landscape except the flag EEikCbaFlagAppMskIcon is defined .
         //
-        if ( statusPane &&
+
+        if ( !(iCbaFlags & EEikCbaFlagAppMskIcon ) )
+        	{
+            if( statusPane &&
              statusPane->IsVisible() &&
              AknStatuspaneUtils::ExtendedFlatLayoutActive() )
-            { 
-            if ( iBgIID == KAknsIIDQsnBgAreaControlMp )
-                {
-                if ( !iIsClockIndicBgIIDSet )
+                { 
+                if ( iBgIID == KAknsIIDQsnBgAreaControlMp )
                     {
-                    statusPane->SetCbaAreaBackgroundID(
-                        iBgIID,
-                        CEikStatusPaneBase::EDrawDeferred );
-                    iIsClockIndicBgIIDSet = ETrue;
-                    }
-                }
-            else
-                {
-                if ( statusPane->CbaAreaBackgroundID() != iBgIID )
-                    {
-                    statusPane->SetCbaAreaBackgroundID(
-                        iBgIID,
-                        CEikStatusPaneBase::EDrawDeferred );
+                    if ( !iIsClockIndicBgIIDSet )
+                        {
+                        statusPane->SetCbaAreaBackgroundID(
+                            iBgIID,
+                            CEikStatusPaneBase::EDrawDeferred );
+                        iIsClockIndicBgIIDSet = ETrue;
+                        }
                     }
-                }
-
-            if ( statusPane->PaneCapabilities(
-                     TUid::Uid( EEikStatusPaneUidCombined ) ).IsInCurrentLayout() )
-                {
-                TRect combinedPaneRect( 0, 0, 0, 0 );
-                TRAPD( err,
-                       combinedPaneRect =
-                           statusPane->PaneRectL( TUid::Uid( 
-                               EEikStatusPaneUidCombined ) ) );
-                
-                if ( !err )
+                else
                     {
-                    TPoint cbaPositionRelativeToScreen( PositionRelativeToScreen() );
-                    TRect cbaRectRelativeToScreen( cbaPositionRelativeToScreen, Size() );
-                    
-                    if ( cbaRectRelativeToScreen.Intersects( combinedPaneRect ) )
+                    if ( statusPane->CbaAreaBackgroundID() != iBgIID )
                         {
-                        combinedPaneRect.Move(
-                            -cbaPositionRelativeToScreen.iX,
-                            -cbaPositionRelativeToScreen.iY );
-                            
-                        region.SubRect( combinedPaneRect );                              
+                        statusPane->SetCbaAreaBackgroundID(
+                            iBgIID,
+                            CEikStatusPaneBase::EDrawDeferred );
                         }
                     }
-                }
-            else
-                {
-                TRect digitalClockRect( 0, 0, 0, 0 );
-                TRect indicatorRect( 0, 0, 0, 0 );
-
-                TRAPD( err1,
-                       indicatorRect = statusPane->PaneRectL( TUid::Uid( 
-                           EEikStatusPaneUidIndic ) ) );
-                                               
-                TRAPD( err2,
-                       digitalClockRect = statusPane->PaneRectL( TUid::Uid( 
-                           EEikStatusPaneUidDigitalClock ) ) );
+
+                if ( statusPane->PaneCapabilities(
+                         TUid::Uid( EEikStatusPaneUidCombined ) ).IsInCurrentLayout() )
+                    {
+                    TRect combinedPaneRect( 0, 0, 0, 0 );
+                    TRAPD( err,
+                           combinedPaneRect =
+                               statusPane->PaneRectL( TUid::Uid( 
+                                   EEikStatusPaneUidCombined ) ) );
                 
-                if ( !err1 && !err2 )
+                    if ( !err )
+                        {
+                        TPoint cbaPositionRelativeToScreen( PositionRelativeToScreen() );
+                        TRect cbaRectRelativeToScreen( cbaPositionRelativeToScreen, Size() );
+                    
+                        if ( cbaRectRelativeToScreen.Intersects( combinedPaneRect ) )
+                            {
+                            combinedPaneRect.Move(
+                                -cbaPositionRelativeToScreen.iX,
+                                -cbaPositionRelativeToScreen.iY );
+                            
+                            region.SubRect( combinedPaneRect );                              
+                            }
+                        }
+                    }
+                else
                     {
-                    TPoint cbaPositionRelativeToScreen( PositionRelativeToScreen() );
-                    TRect cbaRectRelativeToScreen( cbaPositionRelativeToScreen, Size() );
-
-                    if ( cbaRectRelativeToScreen.Intersects( indicatorRect ) )
+                    TRect digitalClockRect( 0, 0, 0, 0 );
+                    TRect indicatorRect( 0, 0, 0, 0 );
+
+                    TRAPD( err1,
+                           indicatorRect = statusPane->PaneRectL( TUid::Uid( 
+                               EEikStatusPaneUidIndic ) ) );
+                                               
+                    TRAPD( err2,
+                           digitalClockRect = statusPane->PaneRectL( TUid::Uid( 
+                               EEikStatusPaneUidDigitalClock ) ) );
+                
+                    if ( !err1 && !err2 )
                         {
-                        indicatorRect.Move(
-                            -cbaPositionRelativeToScreen.iX,
-                            -cbaPositionRelativeToScreen.iY );
+                        TPoint cbaPositionRelativeToScreen( PositionRelativeToScreen() );
+                        TRect cbaRectRelativeToScreen( cbaPositionRelativeToScreen, Size() );
+
+                        if ( cbaRectRelativeToScreen.Intersects( indicatorRect ) )
+                            {
+                            indicatorRect.Move(
+                                -cbaPositionRelativeToScreen.iX,
+                                -cbaPositionRelativeToScreen.iY );
                             
-                        region.SubRect( indicatorRect );                              
-                        }
+                            region.SubRect( indicatorRect );                              
+                            }
                     
-                    if ( cbaRectRelativeToScreen.Intersects( digitalClockRect ) )
-                        {
-                        digitalClockRect.Move(
-                            -cbaPositionRelativeToScreen.iX,
-                            -cbaPositionRelativeToScreen.iY );
+                        if ( cbaRectRelativeToScreen.Intersects( digitalClockRect ) )
+                            {
+                            digitalClockRect.Move(
+                                -cbaPositionRelativeToScreen.iX,
+                                -cbaPositionRelativeToScreen.iY );
                             
-                        region.SubRect( digitalClockRect );       
+                            region.SubRect( digitalClockRect );       
+                            }
                         }
                     }
                 }
@@ -3564,6 +3570,7 @@
             {
             if( button1->IsDimmed() )
                 {
+                _AKNTRACE_FUNC_EXIT;
                 return EKeyWasConsumed;
                 }
             // Return immediately if the button is invisible                        
@@ -3601,6 +3608,7 @@
             {
             if( button2->IsDimmed() )
                 {
+                _AKNTRACE_FUNC_EXIT;
                 return EKeyWasConsumed;
                 }
             // Return immediately if the button is invisible.
@@ -3655,7 +3663,8 @@
                 && !Window().IsFaded() )
         {
         if( buttonMSK->IsDimmed() )
-            {
+            { 
+            _AKNTRACE_FUNC_EXIT;
             return EKeyWasConsumed;
             }
         if (KControlArrayCBAButtonMSKPosn < iControlArray->Count())
@@ -3883,6 +3892,7 @@
         if( button1->IsDimmed() )
             {
             CCoeControl::HandlePointerEventL( aPointerEvent );
+            _AKNTRACE_FUNC_EXIT;
             return;
             }
         if ( button1->IsVisible() )
@@ -3947,6 +3957,7 @@
         if( button2->IsDimmed() )
             {
             CCoeControl::HandlePointerEventL( aPointerEvent );
+            _AKNTRACE_FUNC_EXIT;
             return;
             }             
         if ( button2->IsVisible() )
@@ -4013,6 +4024,7 @@
         if( buttonMSK->IsDimmed() )
             {
             CCoeControl::HandlePointerEventL( aPointerEvent );
+            _AKNTRACE_FUNC_EXIT;
             return;
             }
         if  ( buttonMSK->IsVisible() )
@@ -4551,6 +4563,7 @@
     // Embedded CBA doesn't draw anything
     if ( iFlags.IsSet( ECbaInsideDialog ) )
         {
+        _AKNTRACE_FUNC_EXIT;
         return;
         }
     
@@ -4559,6 +4572,7 @@
         CWindowGc &gc = SystemGc();
 
         iExtension->DrawSemiTransparency( gc );
+        _AKNTRACE_FUNC_EXIT;
         return;
         }
 
@@ -5270,7 +5284,7 @@
     TRect posInScreen( cbarect.Rect() );
     
     TBool mskEnabledInPlatform( iMSKEnabledInPlatform &&
-                                IsMskEnabledLayoutActive() );
+                                ( IsMskEnabledLayoutActive() || ( iCbaFlags & EEikCbaFlagAppMskIcon ) ) );
 
     TBool mskEnabledInApplication( AknLayoutUtils::MSKEnabled() && iMSKset );
     
@@ -7736,11 +7750,14 @@
 //     
 TBool CEikCba::MskAllowed() const
     {
-    _AKNTRACE_FUNC_ENTER;
-    _AKNTRACE_FUNC_EXIT;
-    return ( iMSKEnabledInPlatform &&
-             AknLayoutUtils::MSKEnabled() &&
-             IsMskEnabledLayoutActive() );
+	_AKNTRACE_FUNC_ENTER;
+    TBool ret = EFalse;
+    ret = iMSKEnabledInPlatform &&
+    	    ( ( AknLayoutUtils::MSKEnabled() &&
+             IsMskEnabledLayoutActive() ) || ( iCbaFlags & EEikCbaFlagAppMskIcon ) );
+    _AKNTRACE( "MskAllowed is %d", ret );
+    _AKNTRACE_FUNC_EXIT;
+    return ret;
     }
 
 
@@ -7879,6 +7896,10 @@
 void CEikCba::UpdateMultipleMarkingSoftkey()
     {
     _AKNTRACE_FUNC_ENTER;
+    if ( iFlags.IsSet( ECbaEmbedded ) )
+        {
+        return;
+        }
     if ( iFlags.IsSet( ECbaSingleClickEnabled )
             && iExtension && iExtension->iItemActionMenu )
         {
--- a/uifw/EikStd/coctlsrc/eikspane.cpp	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/EikStd/coctlsrc/eikspane.cpp	Wed Sep 15 12:29:17 2010 +0300
@@ -3726,6 +3726,18 @@
 
         // Read statuspane shape
         TRAP_IGNORE( GetShapeL( statusPaneRegion, ETrue, ETrue ) );
+        
+        // We need to subduce the rect of digital clock pane here, 
+        // because it stay on the bottom cba area always in landscape mode.
+        if (Layout_Meta_Data::IsLandscapeOrientation())
+            {
+            CEikStatusPaneLayoutTree* pane = iModel->CurrentLayout()->Find(TUid::Uid(EEikStatusPaneUidDigitalClock));
+            if (pane != NULL)
+                {
+                statusPaneRegion.SubRect(pane->Rect());
+                }
+            }
+        
         statusPaneRegion.Tidy();
 
         // Get largest possible rect that does not overlap with sp shape
--- a/uifw/EikStd/coctlsrc/smileymodel.cpp	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/EikStd/coctlsrc/smileymodel.cpp	Wed Sep 15 12:29:17 2010 +0300
@@ -446,8 +446,14 @@
     while(pos > 0)
         {
         const TUint16 word = aText[--pos];
-        if(word == ' ' || word == 0x2029)
+        // Since in most cases, URL is comprised of ASCII characters, 
+        // so if there is a character out of the ASCII printable characters, 
+        // we can stop the search.
+        const TInt KMinPrintableAscIIChar( 0x21 ); // excluding space
+        const TInt KMaxPrintableAscIIChar( 0x7e );
+        if( word < KMinPrintableAscIIChar || word > KMaxPrintableAscIIChar )
             {
+            pos++; // make the string begin with printable character.
             break;
             }
         }
@@ -461,7 +467,22 @@
         if(KErrNotFound != pos)
             {
             return ETrue;
-            }    
+            }
+        else
+            {
+            // Although the string doesn't contain '://', it is also considered
+            // as an URL if it contains 'www.'.
+            HBufC* fieldTextBuf( field.Alloc() );
+            if ( fieldTextBuf )
+                {
+                TPtr fieldText( fieldTextBuf->Des() );
+                // Use lower case for search to avoid case sensitive mismatch.
+                fieldText.LowerCase();
+                TBool result( fieldText.Find( _L("www.") ) != KErrNotFound );
+                delete fieldTextBuf;
+                return result;
+                }
+            }
         }
     
     return EFalse;
--- a/uifw/EikStd/srvuiinc/eikkeysoundserver.h	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/EikStd/srvuiinc/eikkeysoundserver.h	Wed Sep 15 12:29:17 2010 +0300
@@ -103,9 +103,13 @@
     TInt Preference();
     TVolumeSetting Volume();
     virtual void DoPlay() = 0;
+    TBool IsWaittingPlay();
+    void SetDestroyAfterPlay(TBool aDestroyAfterPlay);
 protected:
     TInt iPriority;
     TInt iPreference;
+    TBool iWaittingPlay;
+    TBool iDestroyAfterPlay;
     TVolumeSetting iVolume;
     };
 
--- a/uifw/EikStd/srvuisrc/eikkeysoundserver.cpp	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/EikStd/srvuisrc/eikkeysoundserver.cpp	Wed Sep 15 12:29:17 2010 +0300
@@ -88,6 +88,7 @@
 
 TInt CEikKeySoundServer::LaunchServer(TThreadId& aThreadId)
     {
+    LOGTEXT(_L("CEikKeySoundServer::LaunchServer"));
     // First, check that ther server isn't already running.
     TFindServer findServer(__KEYSOUND_SERVER_NAME);
     TFullName name;
@@ -192,6 +193,7 @@
 
 void CEikKeySoundServer::ConstructL()
     {
+    LOGTEXT(_L("CEikKeySoundServer::ConstructL"));
     iInit = EFalse;
     iSidList = new(ELeave)CArrayFixFlat<TAknSoundID>(KAknSoundInfoMapGranularity);
     iSoundList = new(ELeave)CArrayPtrFlat<CEikSoundInfo>(KAknSoundInfoMapGranularity);
@@ -242,6 +244,7 @@
 
 CEikKeySoundServer::~CEikKeySoundServer()
     {
+    LOGTEXT(_L("CEikKeySoundServer::~CEikKeySoundServer"));
     if (iProfilesNotifyHandler)
         {
         iProfilesNotifyHandler->StopListening();
@@ -264,6 +267,7 @@
 CSession2* CEikKeySoundServer::NewSessionL(const TVersion& aVersion,
     const RMessage2& /*aMessage*/) const
     {
+    LOGTEXT(_L("CEikKeySoundServer::NewSessionL"));
     TVersion ver(KKeySoundServMajorVN, KKeySoundServMinorVN, KKeySoundServBuildVN);
     if (!User::QueryVersionSupported(ver, aVersion))
         {
@@ -290,6 +294,7 @@
 
 void CEikKeySoundServer::PlaySid(TInt aSid, TBool aPlaySelf)
     {
+    LOGTEXT1(_L("CEikKeySoundServer::PlaySid aSid: %d"), aSid);
     if (aSid == EAvkonSIDWarningTone && iWarningToneEnabled == 0)
         {
         // Don't play warning tone, when the warning tone is disabled in setting.
@@ -384,6 +389,8 @@
 
 void CEikKeySoundServer::SetDisabledScanCode( TInt aScanCode )
 	{
+    LOGTEXT1(_L("CEikKeySoundServer::SetDisabledScanCode aScanCode: %d"),
+            aScanCode);
 	iDisabledScanCode = aScanCode;
 	}
 
@@ -427,6 +434,8 @@
 
 CEikKeySoundSession::~CEikKeySoundSession()
     {
+    LOGTEXT1(_L("CEikKeySoundSession::~CEikKeySoundSession iClientUid %d"),
+            iClientUid);
     RemoveSids(iClientUid);
     if (iHasLockedContext)
         {
@@ -437,6 +446,7 @@
         }
     if (iOwnsDefaultSounds)
         {
+        LOGTEXT(_L("CEikKeySoundSession::~CEikKeySoundSession OwnsDefaultSounds"));
         RemoveSids(0);
         iServer->iInit = EFalse;
         }
@@ -470,6 +480,8 @@
 
 void CEikKeySoundSession::ServiceL(const RMessage2& aMessage)
     {
+    LOGTEXT1(_L("CEikKeySoundSession::ServiceL aMessage: %d"),
+            aMessage.Function());
     if (aMessage.Function() == EKeySoundServerPlayKey)
         {
         TInt scancode = aMessage.Int0() & 0xff;
@@ -583,7 +595,7 @@
     {
     TInt uid = aMessage.Int0();
     TInt size = aMessage.Int1();
-
+    LOGTEXT1(_L("CEikKeySoundSession::AddSoundIdBufferL uid: %d"), uid);
     // CBufFlat requires that size must be positive and not larger than KMaxTInt / 2.
     // Without this check the KeySoundServer could panic.
     if (size <= 0 || size >= ((KMaxTInt / 2) - KKeySoundServerBufExpandSize))
@@ -700,6 +712,7 @@
 
 void CEikKeySoundSession::RemoveSids(TInt aUid)
     {
+    LOGTEXT1(_L("CEikKeySoundSession::RemoveSids aUid %d"), aUid);
     TUint uid = aUid << 16;
     if (!iServer->iSidList)
         {
@@ -730,7 +743,18 @@
             if (!duplicateFound)
                 {
                 // Remove sound at this position
-                delete id.iSoundInfo;
+                if(id.iSoundInfo->IsWaittingPlay())
+                    {
+                    LOGTEXT1(_L("CEikKeySoundSession::RemoveSids DestroyAfterplay : %d"),
+                            (TInt)id.iSoundInfo );
+                    id.iSoundInfo->SetDestroyAfterPlay(ETrue);
+                    }
+                else
+                    {
+                    LOGTEXT1(_L("CEikKeySoundSession::RemoveSids Destroy : %d"),
+                            (TInt)id.iSoundInfo );
+                    delete id.iSoundInfo;
+                    }
                 if (iServer->iSoundList)
                     {
                     iServer->iSoundList->Delete(ii);
@@ -800,6 +824,7 @@
 
 void CEikKeySoundSession::AddToneSidL(const TAknSoundID& aSoundID, CAknToneSoundInfo* aSoundInfo)
     {
+    LOGTEXT(_L("CEikKeySoundSession::AddToneSidL"));
     aSoundInfo->InitL();
 
     TKeyArrayFix sidKey(_FOFF(TAknSoundID, iSid), ECmpTUint);
@@ -818,6 +843,7 @@
 void CEikKeySoundSession::AddSequenceSidL(const TAknSoundID& aSoundID,
     CAknSequenceSoundInfo* aSoundInfo)
     {
+    LOGTEXT(_L("CEikKeySoundSession::AddSequenceSidL"));
     aSoundInfo->InitL();
 
     TKeyArrayFix sidKey(_FOFF(TAknSoundID, iSid), ECmpTUint);
@@ -837,6 +863,7 @@
 void CEikKeySoundSession::AddFileSidL(const TAknSoundID& aSoundID, CAknFileSoundInfo* aSoundInfo,
     const TDesC& aFileName)
     {
+    LOGTEXT(_L("CEikKeySoundSession::AddFileSidL"));
     aSoundInfo->InitL(aFileName, NULL);
 
     TKeyArrayFix sidKey(_FOFF(TAknSoundID, iSid), ECmpTUint);
@@ -860,6 +887,8 @@
     {
     iPriority = aPriority;
     iPreference = aPreference;
+    iWaittingPlay = EFalse;
+    iDestroyAfterPlay = EFalse;
     iVolume = ESoundVolume9; // default to loudest
     }
 
@@ -879,6 +908,17 @@
     return iVolume;
     }
 
+TBool CEikSoundInfo::IsWaittingPlay()
+    {
+    LOGTEXT1(_L("CEikSoundInfo::IsWaittingPlay : %d"), iWaittingPlay);
+    return iWaittingPlay;
+    }
+
+void CEikSoundInfo::SetDestroyAfterPlay(TBool aDestroyAfterPlay)
+    {
+    iDestroyAfterPlay = aDestroyAfterPlay;
+    }
+
 // ==================================
 // CAknSynthSoundInfo implementation.
 // ==================================
@@ -1130,7 +1170,7 @@
     delete iAudioPlayer;
     }
 
-void CAknFileSoundInfo::InitL(const TDesC& aFileName, CMdaServer* aMdaServer)
+void CAknFileSoundInfo::InitL(const TDesC& aFileName, CMdaServer* /*aMdaServer*/)
     {
     LOGTEXT(_L("CAknFileSoundInfo::InitL() - Filename:"));
     LOGTEXT(aFileName);
@@ -1148,6 +1188,7 @@
 
     // Create audio player. DoPlay() will be called in all circumstances.
     iAudioPlayer = CMdaAudioPlayerUtility::NewFilePlayerL(iFileName, *this, iPriority,(TMdaPriorityPreference)iPreference );
+    iWaittingPlay =ETrue;
     LOGTEXT(_L(" CAknFileSoundInfo::PlayL() - Exit"));
     }
 
@@ -1177,6 +1218,7 @@
 
         delete iAudioPlayer;
         iAudioPlayer = NULL;
+        iWaittingPlay = EFalse;
         }
     }
 
@@ -1203,6 +1245,7 @@
         delete iAudioPlayer;
         iAudioPlayer = NULL;
         iPrepared = EFalse;
+        iWaittingPlay = EFalse;
         }
     }
 
@@ -1269,12 +1312,19 @@
 void CAknFileSoundInfo::MapcPlayComplete(TInt /*aError*/)
     {
     LOGTEXT(_L("CAknFileSoundInfo::MapcPlayComplete()"));
-
+    LOGTEXT1(_L(" aError:%d"), aError);
     iPlaying = EFalse;
+    iWaittingPlay = EFalse;
 
     delete iAudioPlayer;
     iAudioPlayer = NULL;
     iPrepared = EFalse;
+    if(iDestroyAfterPlay)
+        {
+        LOGTEXT1(_L("CAknFileSoundInfo::MapcPlayComplete DestroyAfterPlay : %d"),
+                TInt(this));
+        delete this;
+        }
     }
 
 // End of file
--- a/uifw/ganes/inc/HgScrollbar.h	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/ganes/inc/HgScrollbar.h	Wed Sep 15 12:29:17 2010 +0300
@@ -116,17 +116,20 @@
 
     TRect iScrollbarRect;
     TRect iNaviRect;
-    TPoint iHandlePosition;
+    TPoint iHandlePosition;  //exists only for CHgScrollbar::HandlePosition()
+    TReal iHandlePos;
+    TReal iPageSize;
+    TInt iScrollLength;
+    TSize iHandleSize;
+    
     TPoint iPrevDrag;
     TSize iTotalSize;
     TSize iViewSize;
-    TSize iHandleSize;
     TBool iLandscapeScrolling;
     TBool iDragging;
     TBool iHandler;
     TBool iStatic;
     
-    TInt iScrollLength;
     TInt iTotalLength;
     };
 
--- a/uifw/ganes/src/HgScrollbar.cpp	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/ganes/src/HgScrollbar.cpp	Wed Sep 15 12:29:17 2010 +0300
@@ -126,6 +126,7 @@
     iViewSize = aViewSize;
     iLandscapeScrolling = aLandscapeScrolling;
     iHandlePosition.SetXY(0,0);
+    iHandlePos = 0.0;
 
     if(iLandscapeScrolling)
         {
@@ -153,16 +154,16 @@
             {
             if (AknLayoutUtils::LayoutMirrored())
                 {
-                iHandlePosition.iX = (iScrollLength) * (1.0 - aPosition.iX / TReal(iTotalLength));
+                iHandlePos = 1.0 - (TReal(aPosition.iX) / TReal(iTotalLength));
                 }
             else
                 {
-                iHandlePosition.iX = (iScrollLength) * (aPosition.iX / TReal(iTotalLength));            
+                iHandlePos = TReal(aPosition.iX) / TReal(iTotalLength);
                 }
             }
         else
             {
-            iHandlePosition.iY = (iScrollLength) * (aPosition.iY / TReal(iTotalLength));
+            iHandlePos = TReal(aPosition.iY) / TReal(iTotalLength);
             }
         CheckHandlePosition( EFalse );
         }
@@ -186,15 +187,32 @@
     TBool ret = EFalse;
     // Quick and dirty hack, remove when logic for fetching the correct drag rect is available
     TRect dragArea( iScrollbarRect );
-    dragArea.iBr.iX += KScrollAreaOffset; 
-    dragArea.iTl.iX -= KScrollAreaOffset;
-
+    if (iLandscapeScrolling)
+        {
+        dragArea.iBr.iY += KScrollAreaOffset; 
+        dragArea.iTl.iY -= KScrollAreaOffset;
+        }
+    else 
+        {
+        dragArea.iBr.iX += KScrollAreaOffset; 
+        dragArea.iTl.iX -= KScrollAreaOffset;
+        }
+    
     // Start drag
     if( aEvent.iType == TPointerEvent::EButton1Down && dragArea.Contains(aEvent.iPosition))
         {
-        TSize size(iHandleSize);
-        size.iWidth += KScrollAreaOffset*2;
-        TRect handleRect( dragArea.iTl + iHandlePosition, size );
+        TSize size = iHandleSize;
+		TRect handleRect;
+        if (iLandscapeScrolling)
+            {
+            size.iHeight += KScrollAreaOffset*2;
+			handleRect = TRect( dragArea.iTl + TPoint(iHandlePos*iScrollLength, 0), size );
+            }
+        else 
+            {
+            size.iWidth += KScrollAreaOffset*2;
+			handleRect = TRect( dragArea.iTl + TPoint(0, iHandlePos*iScrollLength), size );
+            }
         iDragging = handleRect.Contains( aEvent.iPosition );
         iPrevDrag = aEvent.iPosition;
         iHandler = ret = ETrue;
@@ -208,11 +226,11 @@
             {
             if(iLandscapeScrolling)
                 {
-                iHandlePosition.iX -= iPrevDrag.iX - aEvent.iPosition.iX;
+                iHandlePos -= (iPrevDrag.iX - aEvent.iPosition.iX)/TReal(iScrollLength);
                 }
             else
                 {
-                iHandlePosition.iY -= iPrevDrag.iY - aEvent.iPosition.iY;
+                iHandlePos -= (iPrevDrag.iY - aEvent.iPosition.iY)/TReal(iScrollLength);
                 }
             CheckHandlePosition( !iStatic );
             
@@ -227,9 +245,16 @@
         if(!iDragging)
             {
             TBool below = iLandscapeScrolling ? 
-                    aEvent.iPosition.iX > iHandlePosition.iX 
-                    : aEvent.iPosition.iY > iHandlePosition.iY;
-            iHandlePosition += below ? iHandleSize.AsPoint() : -iHandleSize.AsPoint();
+                    aEvent.iPosition.iX > iHandlePos*iScrollLength 
+                    : aEvent.iPosition.iY > iHandlePos*iScrollLength;
+            if(below)
+                {
+                iHandlePos += iPageSize;
+                }
+            else
+                {
+                iHandlePos -= iPageSize;
+                }
             }
         CheckHandlePosition( !iStatic );
         iHandler = iDragging = EFalse; 
@@ -298,19 +323,21 @@
 
     if(iLandscapeScrolling)
         {
-        iHandlePosition.iY = 0;
-        if(iHandlePosition.iX < 0 )
-            iHandlePosition.iX = 0;
-        if(iHandlePosition.iX > iScrollLength)
-            iHandlePosition.iX = iScrollLength;
+        if(iHandlePos < 0.0 )
+            iHandlePos = 0.0;
+        if(iHandlePos > 1.0)
+            iHandlePos = 1;
+		
+		iHandlePosition.SetXY(iHandlePos*iScrollLength, 0);
         }
     else
         {
-        iHandlePosition.iX = 0;
-        if(iHandlePosition.iY < 0 )
-            iHandlePosition.iY = 0;
-        if(iHandlePosition.iY > iScrollLength)
-            iHandlePosition.iY = iScrollLength;
+        if(iHandlePos < 0.0 )
+            iHandlePos = 0.0;
+        if(iHandlePos > 1)
+            iHandlePos = 1.0;
+		
+		iHandlePosition.SetXY(0, iHandlePos*iScrollLength);
         }
     if( aReportChange )
         {
@@ -319,16 +346,16 @@
             {
             if (AknLayoutUtils::LayoutMirrored())
                 {
-                pos.iX += (1.0 - iHandlePosition.iX / TReal(iScrollLength)) * (iTotalLength);
+                pos.iX += (1.0 - iHandlePos) * iTotalLength;
                 }
             else
                 {
-                pos.iX += (iHandlePosition.iX / TReal(iScrollLength)) * (iTotalLength);            
+                pos.iX += iHandlePos * iTotalLength;
                 }
             }
         else
             {
-            pos.iY += (iHandlePosition.iY / TReal(iScrollLength)) * (iTotalLength);
+            pos.iY += iHandlePos * iTotalLength;
             }
         
         iObserver.ScrollBarPositionChanged( pos );
@@ -354,28 +381,33 @@
     
     TReal xFactor = iScrollbarRect.Width()/TReal(iTotalSize.iWidth);
     TReal yFactor = iScrollbarRect.Height()/TReal(iTotalSize.iHeight); 
-    
-    iHandleSize = TSize ( iViewSize.iWidth * xFactor, iViewSize.iHeight * yFactor );
+
+    TReal handleSizeWidth = iViewSize.iWidth * xFactor;
+    TReal handleSizeHeight = iViewSize.iHeight * yFactor;
 
     if(iLandscapeScrolling)
         {
-        TInt min = 2*iHandleSize.iHeight;
-        if( iHandleSize.iWidth < min )
+        iPageSize = TReal(iViewSize.iWidth) / TReal(iTotalSize.iWidth - (iTotalSize.iWidth % iViewSize.iWidth) );
+        TReal min = 2 * handleSizeHeight;
+        if( handleSizeWidth < min )
             {
-            iHandleSize.iWidth = min;
+            handleSizeWidth = min;
             }
-        iScrollLength = iScrollbarRect.Width() - iHandleSize.iWidth;
+        iScrollLength = TReal(iScrollbarRect.Width()) - handleSizeWidth;
         }
     else
         {
-        TInt min = 2*iHandleSize.iWidth;
-        if( iHandleSize.iHeight < min )
+        iPageSize = TReal(iViewSize.iHeight) / TReal(iTotalSize.iHeight - (iTotalSize.iHeight % iViewSize.iHeight) );
+        TReal min = 2 * handleSizeWidth;
+        if( handleSizeHeight < min )
             {
-            iHandleSize.iHeight = min;
+            handleSizeHeight = min;
             }
-        iScrollLength = iScrollbarRect.Height() - iHandleSize.iHeight;
+        iScrollLength = TReal(iScrollbarRect.Height()) - handleSizeHeight;
         }
     
+    iHandleSize = TSize(handleSizeWidth,handleSizeHeight);
+    
     delete iScrollbarHandle; iScrollbarHandle = NULL;
     delete iScrollbarHandleSelected; iScrollbarHandleSelected = NULL;
 
--- a/uifw/ganes/src/HgScroller.cpp	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/ganes/src/HgScroller.cpp	Wed Sep 15 12:29:17 2010 +0300
@@ -891,6 +891,7 @@
     
     iPointerDown = EFalse;
     iPanning = EFalse;
+    iEnterKeyHandled = EFalse;
     }
 
 // -----------------------------------------------------------------------------
@@ -1061,33 +1062,37 @@
     iViewPosition = aNewPosition;
     iPhysics->StopPhysics();
     
-    if( iScrollBarType == EHgScrollerTimeStrip )
+    // show a letter popup only if we are currently dragging with scrollbar
+    if(iScrollbar && iScrollbar->IsDragging())
         {
-        // Show first item's time.
-        TInt selectedItem = CurrentIndex();
-        if( selectedItem >= 0 && selectedItem < iItems.Count()
-                && iItems[selectedItem]->Time().Int64() )
+        if( iScrollBarType == EHgScrollerTimeStrip )
             {
-            TRAP_IGNORE(
-                    iItems[selectedItem]->Time().FormatL( iPopupText1, KGanesMonthString );
-                    iItems[selectedItem]->Time().FormatL( iPopupText2, KGanesYearString );
-                )
-            // To display month and year correctly in arabic.
-            AknTextUtils::LanguageSpecificNumberConversion( iPopupText1 );
-            AknTextUtils::LanguageSpecificNumberConversion( iPopupText2 );
+            // Show first item's time.
+            TInt selectedItem = CurrentIndex();
+            if( selectedItem >= 0 && selectedItem < iItems.Count()
+                    && iItems[selectedItem]->Time().Int64() )
+                {
+                TRAP_IGNORE(
+                        iItems[selectedItem]->Time().FormatL( iPopupText1, KGanesMonthString );
+                        iItems[selectedItem]->Time().FormatL( iPopupText2, KGanesYearString );
+                    )
+                // To display month and year correctly in arabic.
+                AknTextUtils::LanguageSpecificNumberConversion( iPopupText1 );
+                AknTextUtils::LanguageSpecificNumberConversion( iPopupText2 );
+                }
             }
-        }
-    else if( iScrollBarType == EHgScrollerLetterStrip
-            || iScrollBarType == EHgScrollerLetterStripLite )
-        {
-        TInt selectedItem = CurrentIndex();
-        if( selectedItem >= 0 && selectedItem < iItems.Count() )
+        else if( iScrollBarType == EHgScrollerLetterStrip
+                || iScrollBarType == EHgScrollerLetterStripLite )
             {
-            if(iItems[selectedItem]->Title().Length())
+            TInt selectedItem = CurrentIndex();
+            if( selectedItem >= 0 && selectedItem < iItems.Count() )
                 {
-                iPopupText1.Zero();
-                iPopupText1.Append( iItems[selectedItem]->Title()[0] );
-                iPopupText1.UpperCase();
+                if(iItems[selectedItem]->Title().Length())
+                    {
+                    iPopupText1.Zero();
+                    iPopupText1.Append( iItems[selectedItem]->Title()[0] );
+                    iPopupText1.UpperCase();
+                    }
                 }
             }
         }
@@ -1191,24 +1196,46 @@
         case EKeyEnter:
         case EKeyOK:
             {
-            if( iSelectedIndex != KErrNotFound && HasHighlight() )
+            // If enter key is pushed down for a long time, many key events
+            // are generated. Enter should be handled only ones.
+            if (!iEnterKeyHandled)
                 {
-                iShowHighlight = EFalse;
-                iDrawUtils->EnableMarquee(HasHighlight());
-                if( iSelectionObserver )
-                    TRAP_IGNORE( iSelectionObserver->HandleOpenL( iSelectedIndex ); )
-                return EKeyWasConsumed;
-                }
-            else if( iItemCount )
-                {
-                iSelectedIndex = CurrentIndex();
-                FitSelectionToView();
-                iShowHighlight = ETrue;
-                iDrawUtils->EnableMarquee(HasHighlight());
-                DrawDeferred();
-                if( iSelectionObserver )
-                    TRAP_IGNORE( iSelectionObserver->HandleSelectL( iSelectedIndex ); )
-                return EKeyWasConsumed;
+                iEnterKeyHandled = ETrue;
+                if( iSelectedIndex != KErrNotFound && HasHighlight())
+                    {                
+                    iEnterKeyHandled = ETrue;
+                    const TBool validIndex = iSelectedIndex >= 0 && iSelectedIndex < iItems.Count();
+                    const TBool selectionMode = iFlags & EHgScrollerSelectionMode;
+                    if (validIndex && selectionMode)
+                        {
+                        // In selection mode enterkey should mark/unmark item.
+                        iItems[iSelectedIndex]->Flags() & CHgItem::EHgItemFlagMarked ? 
+                            UnMark(iSelectedIndex) : Mark(iSelectedIndex);
+                        DrawDeferred();
+                        }
+                    else
+                        {
+                        // Item will be opened so highlight is removed.
+                        iShowHighlight = EFalse;
+                        if( iSelectionObserver )
+                            {
+                            TRAP_IGNORE( iSelectionObserver->HandleOpenL( iSelectedIndex ); )
+                            }
+                        }
+                    iDrawUtils->EnableMarquee(HasHighlight());
+                    return EKeyWasConsumed;
+                    }
+                else if( iItemCount )
+                    {
+                    iSelectedIndex = CurrentIndex();
+                    FitSelectionToView();
+                    iShowHighlight = ETrue;
+                    iDrawUtils->EnableMarquee(HasHighlight());
+                    DrawDeferred();
+                    if( iSelectionObserver )
+                        TRAP_IGNORE( iSelectionObserver->HandleSelectL( iSelectedIndex ); )
+                    return EKeyWasConsumed;
+                    }
                 }
             return EKeyWasNotConsumed;
             }
@@ -1280,7 +1307,9 @@
         iHighlightTimer->Cancel();
         iPointerDown = EFalse;
         if(iDetector)
-            iDetector->CancelAnimationL();
+            {
+            TRAP_IGNORE(iDetector->CancelAnimationL());
+            }
         iPanning = EFalse;
     
         iPhysics->StopPhysics();
--- a/uifw/ganes/src/HgVgHelper.cpp	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/ganes/src/HgVgHelper.cpp	Wed Sep 15 12:29:17 2010 +0300
@@ -20,7 +20,7 @@
 #include "HgVgHelper.h"
 #include "HgVgDrawBuffer.h"
 #include "HgVgImageCreator.h"
-#include "HgVgEgl.h"
+#include "HgVgEGL.h"
 
 #include <e32math.h>
 #include <gulicon.h>