Revision: 201021 RCL_3
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 09 Jun 2010 09:58:37 +0300
branchRCL_3
changeset 29 a8834a2e9a96
parent 25 941195f2d488
child 38 c52421ed5f07
Revision: 201021 Kit: 2010123
classicui_plat/ganes_api/inc/ganes/HgScroller.h
classicui_pub/lists_api/inc/EIKLBX.H
classicui_pub/screen_clearer_api/inc/AknClearer.h
classicui_pub/tsrc/bc/apps/bctestlauncher/group/uid_range.txt
classicui_pub/tsrc/bc/apps/bctestutil/group/release_note.txt
classicui_pub/ui_framework_definitions_api/inc/avkon.hrh
commonuis/CommonDialogs/src/CAknFileSelectionDialog.cpp
commonuis/CommonDialogs/src/CAknFileSelectionModel.cpp
commonuis/CommonDialogs/src/CAknFileSelectionModel.h
commonuisupport/uikon/test/scripts/uiktest_T_Backup.script
lafagnosticuifoundation/bmpanimation/inc/bmpansrv.h
psln/pslnslidesetdialog/data/pslnslidesetdialogrsc.rss
psln/pslnslidesetdialog/loc/pslnslidesetdialog.loc
psln/pslnslidesetdialog/src/pslnslidesetmodel.cpp
uifw/AknGlobalUI/AknCapServer/src/AknCapServerEntry.cpp
uifw/AknGlobalUI/OldStyleNotif/Inc/AknSoftNotificationPlugin.h
uifw/AknGlobalUI/OldStyleNotif/Src/AknSoftNotificationPlugin.cpp
uifw/AknGlobalUI/OldStyleNotif/Src/OldStylePlugin.cpp
uifw/AknGlobalUI/OldStyleNotif/Src/aknkeylocknotifier.cpp
uifw/AvKon/AknExtendedFader/group/perf.txt
uifw/AvKon/src/AknTextSettingPage.cpp
uifw/AvKon/src/AknViewAppUi.cpp
uifw/AvKon/src/AknVolumePopup.cpp
uifw/AvKon/src/Aknslider.cpp
uifw/AvKon/src/aknlongtapanimation.cpp
uifw/AvKon/src/aknlongtapdetector.cpp
uifw/AvKon/src/aknnavide.cpp
uifw/AvKon/src/aknview.cpp
uifw/AvKon/src/eikfrlb.cpp
uifw/AvKon/src/eikfrlbd.cpp
uifw/AvKon/srcdata/smiley.rss
uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomavkonpsln/readme.txt
uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomavkonpsln/readme.txt
uifw/AvKon/tsrc/bc/bctestlauncher/group/uid_range.txt
uifw/AvKon/tsrc/bc/release_note.txt
uifw/AvKon/tsrc/bc/script/codetest_script/readme.txt
uifw/EikStd/EABI/EIKCOCTLU.DEF
uifw/EikStd/bwins/EIKCOCTLU.DEF
uifw/EikStd/coctlsrc/AknClearer.cpp
uifw/EikStd/coctlsrc/EIKEDWIN.CPP
uifw/EikStd/coctlsrc/EIKLABEL.CPP
uifw/EikStd/coctlsrc/EIKLBV.CPP
uifw/EikStd/coctlsrc/EIKLBX.CPP
uifw/EikStd/coctlsrc/EIKMENUB.CPP
uifw/EikStd/coctlsrc/EIKMENUP.CPP
uifw/EikStd/coctlsrc/aknitemactionmenuregister.cpp
uifw/EikStd/coctlsrc/akntoolbarextension.cpp
uifw/EikStd/coctlsrc/akntoolbarextensionview.cpp
uifw/EikStd/coctlsrc/eikspane.cpp
uifw/EikStd/coctlsrc/smileymanager.cpp
uifw/EikStd/dlgsrc/EIKCAPC.CPP
uifw/EikStd/dlgsrc/EIKCAPCA.CPP
uifw/EikStd/dlgsrc/EIKDIALG.CPP
uifw/EikStd/dlgsrc/EIKDPAGE.CPP
uifw/EikStd/srvuisrc/EIKSRVUI.CPP
uifw/eikctl/src/EIKCLB.CPP
uifw/eikctl/src/EIKCLBD.CPP
uifw/ganes/src/HgScroller.cpp
uifw/tsrc/public/basic/AknSoundServerStifTest/group/AknSoundServerStifTest_DoxyFile.txt
--- a/classicui_plat/ganes_api/inc/ganes/HgScroller.h	Tue May 25 12:58:19 2010 +0300
+++ b/classicui_plat/ganes_api/inc/ganes/HgScroller.h	Wed Jun 09 09:58:37 2010 +0300
@@ -504,7 +504,7 @@
     RBuf iPopupText1;
     RBuf iPopupText2;
     
-    TBool iFirstTime; // Flag to indicating first time run.
+    TBool iResetViewPosition; // ETrue on the first time run, and when iViewPosition must be reset.
     TBool iPointerDown;
 
     CPeriodic* iHighlightTimer; // Higlight timer, own.
--- a/classicui_pub/lists_api/inc/EIKLBX.H	Tue May 25 12:58:19 2010 +0300
+++ b/classicui_pub/lists_api/inc/EIKLBX.H	Wed Jun 09 09:58:37 2010 +0300
@@ -242,8 +242,16 @@
         /**
          * Construction flag for disabling item specific stylus popup menu.
          */
-        EDisableItemSpecificMenu    = 0x00040000
+        EDisableItemSpecificMenu    = 0x00040000,
+        
+        /**
+         * Construction flag to make item specific stylus popup menu always
+         * shown regardless of list's marking state if the tapped item has 
+         * associated commands.
+         */
+        EItemSpecificMenuAlwaysShown = 0x00080000
         };
+
     enum {KEikMaxMatchingBufferLength = 2};
 
     /** 
--- a/classicui_pub/screen_clearer_api/inc/AknClearer.h	Tue May 25 12:58:19 2010 +0300
+++ b/classicui_pub/screen_clearer_api/inc/AknClearer.h	Wed Jun 09 09:58:37 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2006 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"
@@ -86,6 +86,19 @@
     * Sets skin background and shape for the cleared window.
     */
 	void SetSkinShapeL();
+    
+    /**
+    * Creates the extension class.
+    */
+	void CreateExtensionL();
+
+    /**
+    * Sets the clearer as transparent or opaque.
+    *
+    * @param aTransparent @c ETrue to set transparency on,
+	*                     @c EFalse otherwise.
+    */
+	void SetTransparent( TBool aTransparent );
 
 private:
     CAknScreenClearerBaseExtension* iExtension;
@@ -115,7 +128,16 @@
     *                            @c EFalse if not.
     */
 	IMPORT_C static CAknLocalScreenClearer* NewLC(TBool aBlankAppStatusPane);
-
+    
+    /**
+    * Two-phased constructor.
+    * @param aBlankAppStatusPane @c ETrue if application status pane is blank,
+    *                            @c EFalse if not.
+    * @param aTransparent        @c ETrue to construct a transparent clearer,
+    *                            @c EFalse to create an opaque one that draws
+    *                            the skin background.
+    */
+    IMPORT_C static CAknLocalScreenClearer* NewLC(TBool aBlankAppStatusPane, TBool aTranparent);
     /**
     * Two-phased constructor.
     * @param aBlankAppStatusPane @c ETrue if application status pane is blank, 
@@ -124,6 +146,16 @@
 	IMPORT_C static CAknLocalScreenClearer* NewL(TBool aBlankAppStatusPane);
 
     /**
+    * Two-phased constructor.
+    * @param aBlankAppStatusPane @c ETrue if application status pane is blank,
+    *                            @c EFalse if not.
+    * @param aTransparent        @c ETrue to construct a transparent clearer,
+    *                            @c EFalse to create an opaque one that draws
+    *                            the skin background.
+    */
+    IMPORT_C static CAknLocalScreenClearer* NewL(TBool aBlankAppStatusPane, TBool aTransparent);
+
+    /**
     * From CCoeControl
     */
 	IMPORT_C void HandleResourceChange(TInt aType);
--- a/classicui_pub/tsrc/bc/apps/bctestlauncher/group/uid_range.txt	Tue May 25 12:58:19 2010 +0300
+++ b/classicui_pub/tsrc/bc/apps/bctestlauncher/group/uid_range.txt	Wed Jun 09 09:58:37 2010 +0300
@@ -1,3 +1,19 @@
+# 
+# Copyright (c) 2009 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"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+# 
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+# 
+# Contributors:
+# 
+# Description: 
+#
+
 (1)
 0x20004742 - 0x2000474B
 
--- a/classicui_pub/tsrc/bc/apps/bctestutil/group/release_note.txt	Tue May 25 12:58:19 2010 +0300
+++ b/classicui_pub/tsrc/bc/apps/bctestutil/group/release_note.txt	Wed Jun 09 09:58:37 2010 +0300
@@ -1,3 +1,19 @@
+# 
+# Copyright (c) 2006-2009 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"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+# 
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+# 
+# Contributors:
+# 
+# Description: 
+#
+
 50.9.6
 [what's new]
 1.Moved the existing BC test cases from \s60\mw\classicui\uifw\AvKon\internal\tsrc to \s60\mw\classicui\uifw\AvKon\tsrc 
--- a/classicui_pub/ui_framework_definitions_api/inc/avkon.hrh	Tue May 25 12:58:19 2010 +0300
+++ b/classicui_pub/ui_framework_definitions_api/inc/avkon.hrh	Wed Jun 09 09:58:37 2010 +0300
@@ -41,17 +41,18 @@
 #define EEikStatusPaneLayoutAknLafDefined    0x10
 
 // internal, do not use (maybe you might need to use LoopScrolling though, but use it with some other flags...)
-#define EAknListBoxMultipleSelection         EEikListBoxMultipleSelection
-#define EAknListBoxIncrementalMatching       EEikListBoxIncrementalMatching
-#define EAknListBoxScrollBarSizeExcluded     0x0080
-#define EAknListBoxLoopScrolling             0x1000
-#define EAknListBoxEnterMarks                0x2000
-#define EAknListBoxShiftEnterMarks           0x4000
+#define EAknListBoxMultipleSelection          EEikListBoxMultipleSelection
+#define EAknListBoxIncrementalMatching        EEikListBoxIncrementalMatching
+#define EAknListBoxScrollBarSizeExcluded      0x0080
+#define EAknListBoxLoopScrolling              0x1000
+#define EAknListBoxEnterMarks                 0x2000
+#define EAknListBoxShiftEnterMarks            0x4000
 // Note there's also EAknListBoxViewerFlags, which is better for apps.
-#define EAknListBoxViewerFlag                0x8000
-#define EAknListBoxPointerMultiselectionList 0x10000
-#define EAknListBoxPointerMarkableList       0x20000
-#define EAknListBoxDisableItemSpecificMenu   0x40000
+#define EAknListBoxViewerFlag                 0x8000
+#define EAknListBoxPointerMultiselectionList  0x10000
+#define EAknListBoxPointerMarkableList        0x20000
+#define EAknListBoxDisableItemSpecificMenu    0x40000
+#define EAknListBoxAlwaysShowItemSpecificMenu 0x80000
 
 
 // These are combined to the viewerflag to make it fit to WORD in resources.
@@ -93,6 +94,7 @@
 
 #define EAknListBoxMenuGrid                   (EAknListBoxMenuList)
 #define EAknListBoxItemSpecificMenuDisabled   ( EAknListBoxDisableItemSpecificMenu )
+#define EAknListBoxItemSpecificMenuAlwaysShown ( EAknListBoxAlwaysShowItemSpecificMenu )
 //
 // Viewers (see Selection service)
 //
--- a/commonuis/CommonDialogs/src/CAknFileSelectionDialog.cpp	Tue May 25 12:58:19 2010 +0300
+++ b/commonuis/CommonDialogs/src/CAknFileSelectionDialog.cpp	Wed Jun 09 09:58:37 2010 +0300
@@ -324,10 +324,10 @@
         KAknsIIDQgnPropNrtypNote, KAvkonBitmapFile,
         EMbmAvkonQgn_prop_nrtyp_note, EMbmAvkonQgn_prop_nrtyp_note_mask );
     
-    // Add sis file icon.
+    // Add app file icon.
     AknCFDUtility::AppendSkinnedImageToArrayL( *eikEnv, *iconArray, skin,
         KAknsIIDQgnPropAmSis, KCommonDialogsBitmapFile,
-        EMbmCommondialogsQgn_prop_am_sis, EMbmCommondialogsQgn_prop_am_sis_mask );
+        EMbmCommondialogsQgn_prop_fmgr_file_apps, EMbmCommondialogsQgn_prop_fmgr_file_apps_mask );
     
     // Add video file icon.
     AknCFDUtility::AppendSkinnedImageToArrayL( *eikEnv, *iconArray, skin,
@@ -338,11 +338,6 @@
     AknCFDUtility::AppendSkinnedImageToArrayL( *eikEnv, *iconArray, skin,
         KAknsIIDQgnPropFmgrFileGame, KCommonDialogsBitmapFile,
         EMbmCommondialogsQgn_prop_fmgr_file_game, EMbmCommondialogsQgn_prop_fmgr_file_game_mask );
-        
-    // Add java file icon.
-    AknCFDUtility::AppendSkinnedImageToArrayL( *eikEnv, *iconArray,         
-        skin, KAknsIIDQgnPropAmMidlet, KCommonDialogsBitmapFile,
-        EMbmCommondialogsQgn_prop_am_midlet, EMbmCommondialogsQgn_prop_am_midlet_mask );
     
     // Add unknow file type icon.
     AknCFDUtility::AppendSkinnedImageToArrayL( *eikEnv, *iconArray,         
--- a/commonuis/CommonDialogs/src/CAknFileSelectionModel.cpp	Tue May 25 12:58:19 2010 +0300
+++ b/commonuis/CommonDialogs/src/CAknFileSelectionModel.cpp	Wed Jun 09 09:58:37 2010 +0300
@@ -51,6 +51,13 @@
 _LIT( KCFDMimeTypeJava, "application/java-archive" );
 _LIT( KCFDMimeTypeFlash, "application/x-shockwave-flash" );
 
+_LIT( KCFDMimeTypeJad, "text/vnd.sun.j2me.app-descriptor" );
+_LIT( KCFDMimeTypePdf, "application/pdf" );
+_LIT( KCFDMimeTypeZip, "application/*zip*");
+_LIT( KCFDMimeTypeDoc, "application/vnd.ms-word");
+_LIT( KCFDMimeTypePpt, "application/vnd.ms-powerpoint");
+_LIT( KCFDMimeTypeXls, "application/vnd.ms-excel");
+
 _LIT( KCFDFileExtSis, ".sis" );
 _LIT( KCFDFileExtSisx, ".sisx");
 _LIT( KCFDFileExtMid, ".mid" );
@@ -714,18 +721,27 @@
             {
             iconIndex = EGameFileIcon;
             }
-        else if( dataTypeBuf.MatchF( KCFDMimeTypeNote ) == 0 )
+        else if( dataTypeBuf.MatchF( KCFDMimeTypeJava ) == 0
+                || dataTypeBuf.MatchF( KCFDMimeTypeJad ) == 0 )
             {
-            iconIndex = ENoteFileIcon;
-            }
-        else if( dataTypeBuf.MatchF( KCFDMimeTypeJava ) == 0 )
-            {
-            iconIndex = EJavaFileIcon;
+            iconIndex = EAppFileIcon;
             }
         else if ( dataTypeBuf.MatchF( KCFDMimeTypeFlash ) == 0 )
             {
             iconIndex = EFlashFileIcon;
             }
+        else if ( dataTypeBuf.MatchF( KCFDMimeTypeZip ) == 0 )
+            {
+            iconIndex = EAppFileIcon;
+            }
+        else if ( dataTypeBuf.MatchF( KCFDMimeTypePdf ) == 0
+                || dataTypeBuf.MatchF( KCFDMimeTypeDoc ) == 0
+                || dataTypeBuf.MatchF( KCFDMimeTypePpt ) == 0
+                || dataTypeBuf.MatchF( KCFDMimeTypeXls ) == 0
+                || dataTypeBuf.MatchF( KCFDMimeTypeNote ) == 0 )
+            {
+            iconIndex = ENoteFileIcon;
+            }
         else
             {
             // Check from the file name extension, if it's a SIS file:
@@ -740,7 +756,7 @@
             if( ext.CompareF( KCFDFileExtSis ) == 0
                 || ext.CompareF( KCFDFileExtSisx ) == 0 )
                 {
-                iconIndex = ESisFileIcon;
+                iconIndex = EAppFileIcon;
                 }
             // RApaLsSession does not recognize .mid's:
             else if( ext.CompareF( KCFDFileExtMid ) == 0 )
--- a/commonuis/CommonDialogs/src/CAknFileSelectionModel.h	Tue May 25 12:58:19 2010 +0300
+++ b/commonuis/CommonDialogs/src/CAknFileSelectionModel.h	Wed Jun 09 09:58:37 2010 +0300
@@ -63,10 +63,9 @@
         EPlaylistFileIcon,
         ECompoFileIcon,
         ENoteFileIcon,
-        ESisFileIcon,
+        EAppFileIcon,
         EVideoFileIcon,
         EGameFileIcon,
-        EJavaFileIcon,
         EUnknowTypeIcon,
         EFolderEmptyIcon,
         EFlashFileIcon
--- a/commonuisupport/uikon/test/scripts/uiktest_T_Backup.script	Tue May 25 12:58:19 2010 +0300
+++ b/commonuisupport/uikon/test/scripts/uiktest_T_Backup.script	Wed Jun 09 09:58:37 2010 +0300
@@ -16,6 +16,10 @@
 //
 PRINT Run TBackup test
 //
+
+// Init MTM before it will be used by backup service
+RUN_WS_PROGRAM mailinit.exe
+
 LOAD_SUITE UiktestServer
 RUN_TEST_STEP 1000 UiktestServer TBackup
 
--- a/lafagnosticuifoundation/bmpanimation/inc/bmpansrv.h	Tue May 25 12:58:19 2010 +0300
+++ b/lafagnosticuifoundation/bmpanimation/inc/bmpansrv.h	Wed Jun 09 09:58:37 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 1997-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"
@@ -272,7 +272,7 @@
 
 // Returns ETrue every time the index frame is valid, otherwise it returns EFalse.
 inline TBool CBitmapAnim::IsFrameDisplayable() const
-	{ return ( (iIndex >= 0) && iBitmapAnimFrameDataArray[iIndex]->iBitmap ); }
+	{ return ( (iIndex >= 0) && (iIndex < Count()) && iBitmapAnimFrameDataArray[iIndex]->iBitmap ); }
 
 // Returns ETrue if the animation is running, otherwise it returns EFalse.
 inline TBool CBitmapAnim::IsRunning() const
--- a/psln/pslnslidesetdialog/data/pslnslidesetdialogrsc.rss	Tue May 25 12:58:19 2010 +0300
+++ b/psln/pslnslidesetdialog/data/pslnslidesetdialogrsc.rss	Wed Jun 09 09:58:37 2010 +0300
@@ -238,7 +238,7 @@
 RESOURCE SLIDER r_psln_duration_slider
     {
     layout = EAknSettingsItemSliderLayout;
-    minvalue = 1;
+    minvalue = 5;
     maxvalue = 60;
     step = 1;
     valuetype = EAknSliderValueBareFigure;
--- a/psln/pslnslidesetdialog/loc/pslnslidesetdialog.loc	Tue May 25 12:58:19 2010 +0300
+++ b/psln/pslnslidesetdialog/loc/pslnslidesetdialog.loc	Wed Jun 09 09:58:37 2010 +0300
@@ -112,7 +112,7 @@
 // l:slider_set_pane_2
 // r:3.2
 //
-#define qtn_sanim_duration_slider_min "1 sec."
+#define qtn_sanim_duration_slider_min "5 sec."
 
 // d:Text in slider control.
 // d:Maximum setting value for Slide set duration.
--- a/psln/pslnslidesetdialog/src/pslnslidesetmodel.cpp	Tue May 25 12:58:19 2010 +0300
+++ b/psln/pslnslidesetdialog/src/pslnslidesetmodel.cpp	Wed Jun 09 09:58:37 2010 +0300
@@ -47,8 +47,8 @@
 const TInt KPslnSlideSetBacklightOff = 0;
 // Slide set interval default value: 10min.
 const TInt KPslnSlideSetDefaultInterval = EPslnSlideSetInterval10Min;
-// Slide set minimum duration is 1 second.
-const TInt KPslnSlideSetMinDuration = 1;
+// Slide set minimum duration is 5 second.
+const TInt KPslnSlideSetMinDuration = 5;
 // Slide set maximum duration is 60 seconds.
 const TInt KPslnSlideSetMaxDuration = 60;
 // Slide set maximum backlight period is 30secs.
--- a/uifw/AknGlobalUI/AknCapServer/src/AknCapServerEntry.cpp	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/AknGlobalUI/AknCapServer/src/AknCapServerEntry.cpp	Wed Jun 09 09:58:37 2010 +0300
@@ -371,10 +371,6 @@
     TFileName fileName(KEikSrvUIResFileName);
     BaflUtils::NearestLanguageFile(iEikonEnv->FsSession(),fileName);
     iResourceFileOffset=iCoeEnv->AddResourceFileL(fileName);
-
-    // Create FSW
-    iFSControl= new (ELeave) CAknFastSwapWindowControl(*this);
-    iFSControl->ConstructL();
     
     // MMC unlocker
     iMMCUnlock = CAknMMCPasswordRequester::NewL();
@@ -489,8 +485,14 @@
 
     // Create capserver discreetpopuphandler     
     CAknCapServerDiscreetPopupHandler::CreateDiscreetPopupHandlerL();     
-	LoadAlternateFsPlugin();
-
+	
+    LoadAlternateFsPlugin();
+    // Create FSW
+    if ( iAlternateFS == NULL )
+        {
+        iFSControl= new (ELeave) CAknFastSwapWindowControl(*this);
+        iFSControl->ConstructL();
+        }
 	ProcessInitFlipStatus();
     }
     
@@ -584,19 +586,22 @@
                     }
                 else
                     {
-                    if ( aMessage.Int0() )
-                        {
-                        TInt err = KErrNone;
-                        TRAP( err, iFSControl->InitializeWindowGroupListL( EFalse ));
-                        if ( !err )
-                            {   
-                            iFSControl->RunFastSwapL();             
+                    if ( iFSControl )
+                    	{
+                        if ( aMessage.Int0() )
+                            {
+                            TInt err = KErrNone;
+                            TRAP( err, iFSControl->InitializeWindowGroupListL( EFalse ));
+                            if ( !err )
+                                {   
+                                iFSControl->RunFastSwapL();             
+                                }
                             }
-                        }
-                    else
-                        {
-                        iFSControl->CloseFastSwap();
-                        }                        
+                        else
+                            {
+                            iFSControl->CloseFastSwap();
+                            }  
+                    	}
                     }
                 }
             aMessage.Complete(KErrNone);
@@ -607,7 +612,10 @@
             TInt err = UpdateTaskListL( ETrue );
             if ( err != KErrNone )
                 {
-                iFSControl->CloseFastSwap();
+                if ( iFSControl )
+                	{
+                    iFSControl->CloseFastSwap();
+                	}
                 }
             aMessage.Complete(err);
             break;
@@ -802,11 +810,15 @@
         iAlternateFS->HandleShortAppKeyPress();
         return ETrue;
         }
-    if (iFSControl->IsVisible())
-        {
-        iFSControl->HandleShortAppsKeyPressL();
-        return ETrue;
-        }
+    if ( iFSControl )
+    	{
+        if (iFSControl->IsVisible())
+            {
+            iFSControl->HandleShortAppsKeyPressL();
+            return ETrue;
+            }
+    	}
+    
         
     return EFalse;
     }
@@ -821,21 +833,25 @@
             }
         else
             {
-            if (iFSControl->IsVisible())
-                {
-                iFSControl->HandleLongAppsKeyPressL();
-                }
-            else
-                {
-                if (iFSControl->VisibleWindowGroupsCountL()<1)
+            if ( iFSControl )
+            	{
+                if ( iFSControl->IsVisible())
                     {
-                    return EFalse;
+                    iFSControl->HandleLongAppsKeyPressL();
                     }
                 else
                     {
-                    iFSControl->RunFastSwapL();
+                    if (iFSControl->VisibleWindowGroupsCountL()<1)
+                        {
+                        return EFalse;
+                        }
+                    else
+                        {
+                        iFSControl->RunFastSwapL();
+                        }
                     }
-                }            
+            	}
+                        
             }
         }
     return ETrue;
@@ -1007,7 +1023,9 @@
     
 void CAknCapAppServerAppUi::HandleWsEventL(const TWsEvent& aEvent,CCoeControl* aDestination)
     {
-    if ( iMessageReaderLongPressDetector && !IsAppsKeySuppressed() && !iFSControl->IsDisplayed() )
+    if ( iMessageReaderLongPressDetector && 
+    	 !IsAppsKeySuppressed() && 
+    	 ( iFSControl == NULL || !iFSControl->IsDisplayed() ) )
         {
         // Message Reader can be launched by long pressing left soft key 
         // events need to be intercepted/consumed before they are forwarded to cba
@@ -1067,7 +1085,7 @@
 TInt CAknCapAppServerAppUi::UpdateTaskListL( TBool aTaskListRefreshNeeded )
     {
     TInt err = KErrNone;
-    if ( iFSControl->IsDisplayed() )
+    if ( iFSControl && iFSControl->IsDisplayed() )
         {
         // update window group list (task list)
         TInt windowGroupListChanged = ETrue;
--- a/uifw/AknGlobalUI/OldStyleNotif/Inc/AknSoftNotificationPlugin.h	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/AknGlobalUI/OldStyleNotif/Inc/AknSoftNotificationPlugin.h	Wed Jun 09 09:58:37 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2008 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"
@@ -31,7 +31,6 @@
 #include <AknNotify.h>
 #include "AknSystemPopup.h"
 #include "AknGroupedNotifierNote.h"
-#include "AknNotifierControllerPlugin.h"
 #include "aknprivatesoftnotificationparameters.h"
 #include "aknmessagereaderlongpressdetector.h" // MAknGroupedNoteObserver    
 
@@ -69,24 +68,15 @@
 NONSHARABLE_CLASS(CAknSoftNotificationSubject) : 
     public CBase, 
     public MEikSrvNotifierBase2, 
-    public MAknGroupedNotifierNoteObserver, 
-    public MAknKeyLockObserver,
+    public MAknGroupedNotifierNoteObserver,
     public MSoftNotificationObserver,
     public MAknMessageNotifierObserver
     {
 public:  // Constructors and destructor
     static CAknSoftNotificationSubject* NewL(
-        MAknKeyLockController* aKeyLockObserver,
-        CAknGlobalNoteSubject* aGlobalNoteController);
+        CAknGlobalNoteSubject* aGlobalNoteController );
         
 public: // Functions from base classes        
-    /**
-     * From MAknKeyLockController 
-     * Called when the status of keylock changes.
-     *
-     * @param aStatus the new status of the keylock.
-     */
-    virtual void KeyLockStatusChange(TKeyLockStatus aStatus);
     
     /**
      * From MEikSrvNotifierBase.
@@ -222,8 +212,7 @@
      * The constructor is private. 
      */
     CAknSoftNotificationSubject(
-        MAknKeyLockController* aKeyLockObserver,
-        CAknGlobalNoteSubject* aGlobalNoteController);
+        CAknGlobalNoteSubject* aGlobalNoteController );
 
     void HandleNotifierMessageL(const TDesC8& aBuffer, TInt& aNoteId );
 
@@ -284,8 +273,6 @@
 
     TBool CheckIfAlreadyExists(TAknSoftNotificationType aType);
 
-    TBool AutoLockEnabled();
-
     void SetNcnFlag(TBool aValue);
     static TInt HandleNcnFlagStateChange(TAny *aPtr);
 
@@ -301,7 +288,7 @@
     
 private: // Data
     TNotifierInfo iInfo;
-    MAknKeyLockController* iKeyLockController;
+
     CAknGlobalNoteSubject* iGlobalNoteController;
     
     // The array keeps track of unselected soft notifications in priority order.
@@ -351,7 +338,6 @@
     TBool iNotificationsSaved;
     CIdle* iIdle;
     static TInt SetIdleStateFalse(TAny* aThis);
-    TBool iKeysLocked;
     
 public: // To allow static method above access this.
     TBool iIdleStateActive;
--- a/uifw/AknGlobalUI/OldStyleNotif/Src/AknSoftNotificationPlugin.cpp	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/AknGlobalUI/OldStyleNotif/Src/AknSoftNotificationPlugin.cpp	Wed Jun 09 09:58:37 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2008 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"
@@ -409,12 +409,10 @@
 // might leave.
 //
 CAknSoftNotificationSubject::CAknSoftNotificationSubject(
-    MAknKeyLockController* aKeyLockController,
-    CAknGlobalNoteSubject* aGlobalNoteController)
-:iKeyLockController(aKeyLockController), 
-    iGlobalNoteController(aGlobalNoteController), 
-    iNotificationsSaved(ETrue), // We'll have to assume there are saved notifications on startup
-    iUniqueIdCounter(KMinimumUniqueId)
+    CAknGlobalNoteSubject* aGlobalNoteController )
+    : iGlobalNoteController( aGlobalNoteController ), 
+      iNotificationsSaved( ETrue ), // We'll have to assume there are saved notifications on startup
+      iUniqueIdCounter( KMinimumUniqueId )
     {
     iMessagingRepository = NULL;
     iDynamicSoftNoteManager = CAknDynamicSoftNoteEventManager::UniqueInstance();
@@ -424,8 +422,6 @@
 // EPOC default constructor can leave.
 void CAknSoftNotificationSubject::ConstructL()
     {
-    iKeyLockController->AddObserverL(this);
-
     iSoftNoteEntryList = new(ELeave)CArrayFixFlat<TSoftNoteEntry>(KSoftNoteGranularity);
     iGlobalNoteController->SetSoftNoteObserver(this);
     // Set initial state to 'non-idle'
@@ -471,11 +467,6 @@
 
     delete iIdle;
     delete iCoverClient;
-    
-    if(iKeyLockController)
-        {
-        iKeyLockController->RemoveObserver(this);
-        }    
 
     if ( iMessagingRepository )
         {
@@ -486,52 +477,17 @@
 
 // Two-phased constructor.
 CAknSoftNotificationSubject* CAknSoftNotificationSubject::NewL(
-    MAknKeyLockController* aKeyLockController,
     CAknGlobalNoteSubject* aGlobalNoteController )
     {
     CAknSoftNotificationSubject* self = new (ELeave) CAknSoftNotificationSubject(
-        aKeyLockController, 
-        aGlobalNoteController);
+        aGlobalNoteController );
         
     CleanupStack::PushL( self );
     self->ConstructL();
-    CleanupStack::Pop( self);
+    CleanupStack::Pop( self );
     return self;
     }
-
-// ---------------------------------------------------------
-// CAknSoftNotificationSubject::KeyLockStatusChange
-// ---------------------------------------------------------
-//
-void CAknSoftNotificationSubject::KeyLockStatusChange(TKeyLockStatus aStatus)
-    {
-    if ( aStatus == EKeyLockEnabled )
-        {
-        iKeysLocked = ETrue;
-        }
-    else if ( aStatus == EKeyLockDisabled )
-        {
-        iKeysLocked = EFalse;
-        }
-        
-    if ( iGroupedNote && iGroupedNote->ListBox())
-        {
-        if ( aStatus == EKeyLockEnabled )
-            {
-            iGroupedNote->ListBox()->View()->ItemDrawer()->SetFlags(
-                CListItemDrawer::EDisableHighlight);
-                
-            iGroupedNote->DrawDeferred();
-            }
-        else if ( aStatus == EKeyLockDisabled )
-            {
-            iGroupedNote->ListBox()->View()->ItemDrawer()->ClearFlags(
-                CListItemDrawer::EDisableHighlight);
-                
-            iGroupedNote->DrawDeferred();
-            }
-        }
-    }    
+  
 
 // ---------------------------------------------------------
 // CAknSoftNotificationSubject::Release()
@@ -1651,11 +1607,6 @@
 
     delete iGroupedNote;
     iGroupedNote = note;
-    if ( iKeysLocked && note )
-        {
-        iGroupedNote->ListBox()->View()->ItemDrawer()->SetFlags(
-            CListItemDrawer::EDisableHighlight );
-        }
     }
 
 // ---------------------------------------------------------
@@ -2323,11 +2274,6 @@
     }
 
 
-TBool CAknSoftNotificationSubject::AutoLockEnabled()
-    {
-    return EFalse;
-    }
-
 void CAknSoftNotificationSubject::AddNewCustomNoteL(
     RReadStream& readStream, TInt aCount, TBool aNewNote )
     {
--- a/uifw/AknGlobalUI/OldStyleNotif/Src/OldStylePlugin.cpp	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/AknGlobalUI/OldStyleNotif/Src/OldStylePlugin.cpp	Wed Jun 09 09:58:37 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2008 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"
@@ -74,8 +74,7 @@
     // Soft note notifier.
     // ----------------------------
     CAknSoftNotificationSubject* softNotificationSubject = CAknSoftNotificationSubject::NewL(
-        keyLockNotifier, 
-        globalNoteSubject);
+        globalNoteSubject );
         
     CleanupStack::PushL(softNotificationSubject);
     subjects->AppendL(softNotificationSubject);
--- a/uifw/AknGlobalUI/OldStyleNotif/Src/aknkeylocknotifier.cpp	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/AknGlobalUI/OldStyleNotif/Src/aknkeylocknotifier.cpp	Wed Jun 09 09:58:37 2010 +0300
@@ -1325,13 +1325,14 @@
                     }
                 }
             }   // PenEnabled()
+        }
 
-        if (aNotifySysApp)
-            {
-            SendMessageToSysAp( EEikKeyLockDisabled );
-            }
-        }
-    if ( iNotif )
+	if (aNotifySysApp)
+		{
+		SendMessageToSysAp( EEikKeyLockDisabled );
+		}
+
+	if ( iNotif )
         {
         iNotif->NotifyStatusChange( EKeyLockDisabled );
         }
@@ -2385,7 +2386,6 @@
     {
     if ( IsKeyLockEnabled() )
         {
-        iKeyLockControl->AutolockEnabled( EFalse );
         iKeyLockControl->DisableKeylock();
         }
     }
--- a/uifw/AvKon/AknExtendedFader/group/perf.txt	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/AvKon/AknExtendedFader/group/perf.txt	Wed Jun 09 09:58:37 2010 +0300
@@ -1,3 +1,19 @@
+# 
+# Copyright (c) 2009 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"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+# 
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+# 
+# Contributors:
+# 
+# Description: 
+#
+
 First:
 ------
 
--- a/uifw/AvKon/src/AknTextSettingPage.cpp	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/AvKon/src/AknTextSettingPage.cpp	Wed Jun 09 09:58:37 2010 +0300
@@ -411,7 +411,14 @@
 	// Construct an appropriate control context for the contained editor areas.
 	// Context produced is owned by CAknSettingPage. 
     SetEditedItemFrameIID( KAknsIIDQsnFrInput, KAknsIIDQsnFrInputCenter );
-	TextControl()->ScrollBarFrame()->VerticalScrollBar()->SetMopParent(this);
+    
+    // ScrollBarFrame always exists in this phase
+    CEikScrollBar* sb = editor->ScrollBarFrame()->VerticalScrollBar();
+    if ( sb )
+        {
+        sb->SetMopParent( this );
+        sb->MakeVisible( ETrue );
+        }
 	}
 
 /**
--- a/uifw/AvKon/src/AknViewAppUi.cpp	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/AvKon/src/AknViewAppUi.cpp	Wed Jun 09 09:58:37 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2005 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"
@@ -235,11 +235,19 @@
 	AddToStackL( iExtension->iNavigator, ECoeStackPriorityDefault - 1, ECoeStackFlagRefusesFocus );
 #endif // RD_SPLIT_VIEW
 
-	if ( iEikonEnv->RootWin().OrdinalPosition() == 0 && // only clear the window for foreground apps
+	// Only clear the window for foreground apps.
+	if ( iEikonEnv->RootWin().OrdinalPosition() == 0 &&
 	     iExtension->iUseDefaultScreenClearer )
-		{
-		iClearer = CAknLocalScreenClearer::NewL( ETrue );
-		}
+        {
+	    if ( !iEikonEnv->StartedAsServerApp() )
+            {
+            iClearer = CAknLocalScreenClearer::NewL( ETrue );
+            }
+        else
+            {
+            iClearer = CAknLocalScreenClearer::NewL( ETrue, ETrue );
+            }
+        }
 	}
 
 // -----------------------------------------------------------------------------
--- a/uifw/AvKon/src/AknVolumePopup.cpp	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/AvKon/src/AknVolumePopup.cpp	Wed Jun 09 09:58:37 2010 +0300
@@ -382,6 +382,7 @@
         {
         TInt feedbackStyle = (TAknFeedbackStyle)reader.ReadInt16();
         iFlags = reader.ReadInt16();
+        reader.Rewind( 4 ); // Rewind to the beginning, then construct slider.
         }
     else
         {
@@ -521,7 +522,7 @@
         iExt->TryLoadDefaultSliderVolumeBitmap();
         iExt->iSliderControl->ReportMarkerDragEvent( ETrue );
         iExt->iSliderControl->SuppressDrawing( ETrue );
-       }           
+        }
     else
         {
         iExt->iSliderControl = new( ELeave )CAknSlider;
--- a/uifw/AvKon/src/Aknslider.cpp	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/AvKon/src/Aknslider.cpp	Wed Jun 09 09:58:37 2010 +0300
@@ -1497,7 +1497,12 @@
     TResourceReader reader;
     CEikonEnv::Static()->CreateResourceReaderLC( reader, aResourceId );
 
-    reader.ReadInt16(); // ignore layout
+    TInt sliderType = reader.ReadInt16();
+    if ( sliderType == EAknSliderWithFeedbackStyle )
+        {
+        reader.ReadInt16(); // ignore type
+        reader.ReadInt16(); // ignore layout
+        }
     TInt minValue = reader.ReadInt16();
     TInt maxValue = reader.ReadInt16();
     CleanupStack::PopAndDestroy(); // reader
@@ -1538,7 +1543,12 @@
     TResourceReader reader;
     CEikonEnv::Static()->CreateResourceReaderLC( reader, aResourceId );
 
-    reader.ReadInt16(); // ignore layout
+    TInt sliderType = reader.ReadInt16();
+    if ( sliderType == EAknSliderWithFeedbackStyle )
+        {
+        reader.ReadInt16(); // ignore type
+        reader.ReadInt16(); // ignore layout
+        }
     TInt minValue = reader.ReadInt16();
     TInt maxValue = reader.ReadInt16();
     CleanupStack::PopAndDestroy(); // reader
@@ -4248,12 +4258,16 @@
     MTouchFeedback* feedback = MTouchFeedback::Instance();
     if ( feedback )
         {
+        TTouchContinuousFeedback type = ETouchContinuousSmooth;
         TInt intensity = KStableFeedbackIntesity;
+        
         if ( SliderData()->iFeedbackStyle == EAknSliderFbDynamic )
             {
+            type = ETouchDynamicSlider;
             intensity = FeedbackIntensity();
             }
-        feedback->StartFeedback( this, ETouchDynamicSlider, aPointerEvent, intensity, aTimeout );
+        
+        feedback->StartFeedback( this, type, aPointerEvent, intensity, aTimeout );
         iExt->SetFlag( CAknSliderExtension::EFlagPlayingContinuousFb );
         }
     }
--- a/uifw/AvKon/src/aknlongtapanimation.cpp	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/AvKon/src/aknlongtapanimation.cpp	Wed Jun 09 09:58:37 2010 +0300
@@ -367,6 +367,11 @@
 		{
 		iExtension->iTimer->Cancel();
 		iExtension->iFlags &= ~EAnimationStarted;
+        MTouchFeedback* feedback = MTouchFeedback::Instance();
+        if ( feedback )
+            {
+            feedback->StopFeedback( this );
+            }
 		}
 	}
 
--- a/uifw/AvKon/src/aknlongtapdetector.cpp	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/AvKon/src/aknlongtapdetector.cpp	Wed Jun 09 09:58:37 2010 +0300
@@ -254,6 +254,7 @@
         {
         StopAnimation();
         }
+    iState = EWaiting;
     }
 
 
@@ -321,7 +322,6 @@
             && aEvent.Pointer()->iType == TPointerEvent::EButton1Up ) )
 		{
         Cancel();
-        iState = EWaiting;		
 	    }
     }
 
--- a/uifw/AvKon/src/aknnavide.cpp	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/AvKon/src/aknnavide.cpp	Wed Jun 09 09:58:37 2010 +0300
@@ -800,20 +800,6 @@
                 {
                 CCoeControl::HandlePointerEventL( aPointerEvent );
                 }
-            
-            // feedback is also given on up event from arrows
-            if ( rightArrowTapped || leftArrowTapped )
-                {
-                MTouchFeedback* feedback = MTouchFeedback::Instance();
-                if ( feedback &&
-                     ( iDecoratedControl && !iDecoratedControl->IsDimmed() ) )
-                    {
-                    feedback->InstantFeedback( this, 
-                                               ETouchFeedbackBasicButton,
-                                               ETouchFeedbackVibra,
-                                               aPointerEvent );
-                    }
-                }
             }
         else
             {
--- a/uifw/AvKon/src/aknview.cpp	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/AvKon/src/aknview.cpp	Wed Jun 09 09:58:37 2010 +0300
@@ -601,8 +601,6 @@
 
 	DoDeactivate();
 
-	AknItemActionMenuRegister::RemoveConstructingMenuBarOwner( this );
-	
 	if ( iCba )
 		{
 		iCba->MakeVisible( EFalse );
@@ -861,7 +859,7 @@
 	if ( iCba )
 		{
 		if ( aVisible )
-			{
+			{			
 			iCba->DrawableWindow()->SetOrdinalPosition( 0 );
 			iCba->MakeVisible( ETrue );
 			iCba->DrawNow(); // This is needed because problems if TRANSPARENCY is set, see MTVN-6HXCN4
--- a/uifw/AvKon/src/eikfrlb.cpp	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/AvKon/src/eikfrlb.cpp	Wed Jun 09 09:58:37 2010 +0300
@@ -827,11 +827,11 @@
 
         TInt lastPotentialItemIndex =
             Min( numberOfItems,
-                 iTopItemIndex + NumberOfItemsThatFitInRect( iViewRect ) );
+                 iTopItemIndex + NumberOfItemsThatFitInRect( iViewRect ) - 1 ) ;
 
         gc->SetClippingRect( iViewRect );
         
-        while ( i < lastPotentialItemIndex )      
+        while ( i <= lastPotentialItemIndex )      
             {
             DrawItem( i++ );
             }
--- a/uifw/AvKon/src/eikfrlbd.cpp	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/AvKon/src/eikfrlbd.cpp	Wed Jun 09 09:58:37 2010 +0300
@@ -2868,9 +2868,18 @@
             &&  iExtension->iMarkingIconArray->Count() == 2 )
 #endif // RD_TOUCH2_MARKING        
         {
-        textRect.iTl.iX += 
+        if ( AknLayoutUtils::LayoutMirrored() )
+            {
+            textRect.iBr.iX -= 
                 AknLayoutScalable_Avkon::list_double_graphic_pane_t1( 
-                        0 ).LayoutLine().il;
+                    0 ).LayoutLine().ir;
+            }
+        else
+            {
+            textRect.iTl.iX += 
+                AknLayoutScalable_Avkon::list_double_graphic_pane_t1( 
+                    0 ).LayoutLine().il;
+            }                    
 
         TAknLayoutRect layoutRect;
         layoutRect.LayoutRect( aItemRect, 
@@ -4227,6 +4236,7 @@
     CEikListBox* listbox = static_cast<CEikListBox*>( Control() ); 
     
     DrawMarkingModeIcons( aProperties, aGc, itemRect );
+    TInt iconOffset = aItemRect.Width() - itemRect.Width();
     
     const TColors* subcellColors = &aColors;
     
@@ -4334,6 +4344,7 @@
             }
         
         TRect bRect = TRect(sc->iPosition,sc->iSize);
+        bRect.iBr.iX -= iconOffset;
         TMargins m = sc->iMargin;
         TRect cRect = TRect(bRect.iTl+TSize(m.iLeft,m.iTop),bRect.Size()-TSize(m.iRight+m.iLeft,m.iBottom+m.iTop));
         const TBool istrans = sc->iTransparent;
@@ -4424,6 +4435,7 @@
         if ( layoutMirrored ) 
             {
             TRect bRect( sc->iPosition, sc->iSize );
+            bRect.iBr.iX -= iconOffset;
             TRect cRect2( bRect.iTl + TSize( m.iLeft, m.iTop ),
                           bRect.Size() - TSize( m.iRight + m.iLeft,
                                                 m.iBottom + m.iTop ) );
--- a/uifw/AvKon/srcdata/smiley.rss	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/AvKon/srcdata/smiley.rss	Wed Jun 09 09:58:37 2010 +0300
@@ -159,7 +159,7 @@
             {
             code = EAknSmileyIconIrritated;
             smileyIconId = EMbmSmileyQgn_indi_smiley_irritated;
-            strings = ":X :-X";
+            strings = ":X :x :-X :-x";
             },
         SMILEY_ICON_ITEM
             {
@@ -201,7 +201,7 @@
             {
             code = EAknSmileyIconNerd;
             smileyIconId = EMbmSmileyQgn_indi_smiley_nerd;
-            strings = "8-)";
+            strings = "8) 8-)";
             },
         SMILEY_ICON_ITEM
             {
@@ -217,7 +217,7 @@
             code = EAknSmileyAnimCoffee;
             smileyIconId = EMbmSmileyQgn_indi_smiley_anim_coffee;
             smileyStaticIconId = EMbmSmileyQgn_indi_smiley_coffee;
-            strings = "c[_]";
+            strings = "c[_] C[_]";
             },
         SMILEY_ICON_ITEM
             {
--- a/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomavkonpsln/readme.txt	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/AvKon/tsrc/bc/bctestdom3.2/bctestdomavkonpsln/readme.txt	Wed Jun 09 09:58:37 2010 +0300
@@ -1,3 +1,19 @@
+# 
+# Copyright (c) 2009 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"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+# 
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+# 
+# Contributors:
+# 
+# Description: 
+#
+
 case : bctestakncase
 tested header files:
 <aknskinnableclock.h>
--- a/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomavkonpsln/readme.txt	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/AvKon/tsrc/bc/bctestdom5.0/bctestdomavkonpsln/readme.txt	Wed Jun 09 09:58:37 2010 +0300
@@ -1,3 +1,19 @@
+# 
+# Copyright (c) 2009 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"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+# 
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+# 
+# Contributors:
+# 
+# Description: 
+#
+
 case : bctestakncase
 tested header files:
 <aknskinnableclock.h>
--- a/uifw/AvKon/tsrc/bc/bctestlauncher/group/uid_range.txt	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/AvKon/tsrc/bc/bctestlauncher/group/uid_range.txt	Wed Jun 09 09:58:37 2010 +0300
@@ -1,3 +1,19 @@
+# 
+# Copyright (c) 2009 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"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+# 
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+# 
+# Contributors:
+# 
+# Description: 
+#
+
 (1)
 0x20004742 - 0x2000474B
 
--- a/uifw/AvKon/tsrc/bc/release_note.txt	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/AvKon/tsrc/bc/release_note.txt	Wed Jun 09 09:58:37 2010 +0300
@@ -1,3 +1,19 @@
+# 
+# Copyright (c) 2006-2009 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"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+# 
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+# 
+# Contributors:
+# 
+# Description: 
+#
+
 2009-12-03, BC test release v2.09
 [what's new]
 1. Added new test driver for single click API changes (bctestsingleclick).
--- a/uifw/AvKon/tsrc/bc/script/codetest_script/readme.txt	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/AvKon/tsrc/bc/script/codetest_script/readme.txt	Wed Jun 09 09:58:37 2010 +0300
@@ -1,3 +1,19 @@
+# 
+# Copyright (c) 2009 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"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+# 
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+# 
+# Contributors:
+# 
+# Description: 
+#
+
 Quick start:
 
 1. build the API table: (If you have built it before, skip this step.)
--- a/uifw/EikStd/EABI/EIKCOCTLU.DEF	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/EikStd/EABI/EIKCOCTLU.DEF	Wed Jun 09 09:58:37 2010 +0300
@@ -2015,4 +2015,6 @@
 	_ZN11CEikListBox14SetMarkingModeEi @ 2014 NONAME
 	_ZN11CEikListBox22SetMarkingModeObserverEP23MAknMarkingModeObserver @ 2015 NONAME
 	_ZN10CAknButton14EnableFeedbackEi @ 2016 NONAME
+	_ZN22CAknLocalScreenClearer4NewLEii @ 2017 NONAME
+	_ZN22CAknLocalScreenClearer5NewLCEii @ 2018 NONAME
 
--- a/uifw/EikStd/bwins/EIKCOCTLU.DEF	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/EikStd/bwins/EIKCOCTLU.DEF	Wed Jun 09 09:58:37 2010 +0300
@@ -1626,4 +1626,5 @@
 	?SetMarkingModeObserver@CEikListBox@@QAEXPAVMAknMarkingModeObserver@@@Z @ 1625 NONAME ; void CEikListBox::SetMarkingModeObserver(class MAknMarkingModeObserver *)
 	?SetMarkingMode@CEikListBox@@QAEXH@Z @ 1626 NONAME ; void CEikListBox::SetMarkingMode(int)
 	?EnableFeedback@CAknButton@@QAEXH@Z @ 1627 NONAME ; void CAknButton::EnableFeedback(int)
-
+	?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)
--- a/uifw/EikStd/coctlsrc/AknClearer.cpp	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/EikStd/coctlsrc/AknClearer.cpp	Wed Jun 09 09:58:37 2010 +0300
@@ -20,7 +20,6 @@
 #include <eikspane.h>
 #include "aknclearer.h"
 #include <aknconsts.h>
-#include <aknnavi.h>
 #include <avkon.mbg>
 #include <AknLayout.lag>
 #include <AknSgcc.h>
@@ -51,153 +50,91 @@
 
 enum TAknScreenClearerBaseFlags
 	{
-	EAknScreenClearerDrawNavi,
-	EAknScreenClearerBlankAppStatusPane,
-	EAknScreenClearerDrawNaviSolid,
+	EAknScreenClearerBlankAppStatusPane
 	};
 
 enum 
     {
-    ELayerCbaBackground=0,
-    ELayerBackground = 1,
-    ELayerExtension = 2,
-    ELayerStripe = 3,
-    ELayerWallpaper = 4,
-    ELayerN = 5
+    ELayerBackground = 0,
+    ELayerExtension = 1,
+    ELayerStripe = 2,
+    ELayerWallpaper = 3,
+    ELayerN = 4
     };
 
-    enum 
-        {
-        ELayerStaconCbaBackground=0,
-        ELayerStaconTop = 1,
-        ELayerStaconBottom = 2,
-        ELayerStaconMain = 3,
-        ELayerStaconWallpaper = 4,
-        ELayerStaconN = 5
-        };
-
 enum 
     {
-    ELayerFlatCbaBackground=0,
-    ELayerFlatBackground = 1,
-    ELayerFlatTl = 2,
-    ELayerFlatTr = 3,
-    ELayerFlatBl = 4,
-    ELayerFlatBr = 5,
-    ELayerFlatT = 6,
-    ELayerFlatB = 7,
-    ELayerFlatR = 8,
-    ELayerFlatL = 9,
-    ELayerFlatCenter = 10,
-    ELayerFlatMain = 11,
-    ELayerFlatWallpaper = 12,
-    ELayerSCtrl1 = 13,
-    ELayerSCtrl2 = 14,
-    ELayerSCtrl3 = 15,
-    ELayerSCtrl4 = 16,
-    ELayerSCtrl5 = 17,
-    ELayerFlatN = 18
+    ELayerStaconTop = 0,
+    ELayerStaconBottom = 1,
+    ELayerStaconMain = 2,
+    ELayerStaconWallpaper = 3,
+    ELayerStaconN = 4
+    };
+
+enum 
+    {
+    ELayerFlatBackground = 0,
+    ELayerFlatTl = 1,
+    ELayerFlatTr = 2,
+    ELayerFlatBl = 3,
+    ELayerFlatBr = 4,
+    ELayerFlatT = 5,
+    ELayerFlatB = 6,
+    ELayerFlatR = 7,
+    ELayerFlatL = 8,
+    ELayerFlatCenter = 9,
+    ELayerFlatMain = 10,
+    ELayerFlatWallpaper = 11,
+    ELayerFlatN = 12
     };
 
 
 class CAknScreenClearerBaseExtension : public CBase
     {
-    public:
-        ~CAknScreenClearerBaseExtension()
-            {
-            delete iNaviWipe;
-            delete iNaviMask;
-            delete iBgContext;
-            }
-    public:
-	    CFbsBitmap* iNaviWipe;
-        CFbsBitmap* iNaviMask;
-        CAknsLayeredBackgroundControlContext* iBgContext;
-        TInt iOrdinalPosition;
+public:
+    ~CAknScreenClearerBaseExtension()
+        {
+        delete iBgContext;
+        }
+public:
+    CAknsLayeredBackgroundControlContext* iBgContext;
+    TInt iOrdinalPosition;
+	TBool iTransparent;
     };
 
-/* THIS FUNCTION IS NOT USED
-
-static void LoadAndFlipBitmapL( 
-    CFbsBitmap* aTrg, const TDesC& aFile, const TInt aIndex )
-    {
-    User::LeaveIfNull(aTrg);
-
-    CFbsBitmap* sourceBitmap = new (ELeave) CFbsBitmap();   
-    CleanupStack::PushL(sourceBitmap);
-    User::LeaveIfError(sourceBitmap->Load(aFile, aIndex, ETrue));    
-    TSize sourceBitmapSize = sourceBitmap->SizeInPixels();
-
-    User::LeaveIfError(aTrg->Create(sourceBitmapSize, sourceBitmap->DisplayMode()));
-
-    CFbsBitmapDevice* destinationDevice = CFbsBitmapDevice::NewL( aTrg );
-    CleanupStack::PushL(destinationDevice);
-
-    CFbsBitGc* destinationGc;
-    User::LeaveIfError( destinationDevice->CreateContext( destinationGc ) );
-
-    TRect sourceBitmapBlittingRect( 0,0,1,sourceBitmapSize.iHeight );  
-
-    for ( TInt xPos=sourceBitmapSize.iWidth-1; xPos >= 0; xPos-- )
-        {
-        destinationGc->BitBlt( TPoint(xPos,0), sourceBitmap, sourceBitmapBlittingRect );
-        sourceBitmapBlittingRect.iTl.iX++;
-        sourceBitmapBlittingRect.iBr.iX++;
-        }
-
-    delete destinationGc;  
-    CleanupStack::PopAndDestroy(2); // sourceBitmap, destinationDevice
-    }
-*/
-
-/* THIS FUNCTION IS NOT USED
-
-static CFbsBitmap* FlipBitmapL( CFbsBitmap* aBitmap )
-    {
-    User::LeaveIfNull(aBitmap);   
-
-    TSize sourceBitmapSize = aBitmap->SizeInPixels();
-
-    // get a copy of wanted rect of source bitmap to tmpBitmap
-    CFbsBitmap* tmpBitmap = new (ELeave) CFbsBitmap();   
-    CleanupStack::PushL( tmpBitmap );                      
-
-    User::LeaveIfError( tmpBitmap->Create( sourceBitmapSize, aBitmap->DisplayMode() ) );
-
-    CFbsBitmapDevice* destinationDevice = CFbsBitmapDevice::NewL( tmpBitmap );
-    CleanupStack::PushL( destinationDevice );
-    
-    CFbsBitGc* destinationGc;
-    User::LeaveIfError( destinationDevice->CreateContext( destinationGc ) );           
-    
-    TRect sourceBitmapBlittingRect( 0,0,1,sourceBitmapSize.iHeight );  
-    
-    for ( TInt xPos=sourceBitmapSize.iWidth-1; xPos >= 0; xPos-- )
-        {
-        destinationGc->BitBlt( TPoint(xPos,0), aBitmap, sourceBitmapBlittingRect );
-        sourceBitmapBlittingRect.iTl.iX++;
-        sourceBitmapBlittingRect.iBr.iX++;
-        }
-    
-    delete destinationGc;  
-    CleanupStack::PopAndDestroy(); // destinationDevice
-    CleanupStack::Pop(); // tmpBitmap
-  
-    return tmpBitmap;
-    }
-*/
 
 EXPORT_C CAknScreenClearerBase::~CAknScreenClearerBase()
 	{
     delete iExtension;
 	}
 
+
+void CAknScreenClearerBase::CreateExtensionL()
+	{
+	if ( !iExtension )
+		{
+		iExtension = new (ELeave) CAknScreenClearerBaseExtension;
+		}
+	}
+
+
+void CAknScreenClearerBase::SetTransparent( TBool aTransparent )
+    {
+    iExtension->iTransparent = aTransparent;
+    }
+
+
 EXPORT_C void CAknScreenClearerBase::ConstructL(RWindowGroup& aParent, TInt aOrdinalPos, TBool aBlankAppStatusPane)
 	{
-    iExtension = new (ELeave) CAknScreenClearerBaseExtension();
+	CreateExtensionL();
 
 	CreateWindowL(&aParent);
 
+	if ( iExtension->iTransparent )
+		{
+		EnableWindowTransparency();
+		}
+
     CAlfEffectObserver* alfEffectObserver = CAlfEffectObserver::NewL(); 
     alfEffectObserver->SetDistractionWindow(*DrawableWindow());
     delete alfEffectObserver;
@@ -231,7 +168,17 @@
 	{
 	CWindowGc& gc = SystemGc();
     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-    AknsDrawUtils::Background( skin, iExtension->iBgContext, this, gc, Rect() );
+
+    if ( !iExtension->iTransparent )
+        {
+        AknsDrawUtils::Background( skin, iExtension->iBgContext, this, gc, Rect() );
+        }
+    else
+        {
+        gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
+        gc.Clear( Rect() );
+        gc.Reset();
+        }
 
     iEikonEnv->WsSession().Flush();
     return;
@@ -264,31 +211,51 @@
 
 	CEikStatusPaneBase* sp = CEikStatusPaneBase::Current();
     
-    if (iFlags[EAknScreenClearerBlankAppStatusPane])
+	// Set the clearer window's size so that it covers the screen in both
+	// portrait and landscape orientations simultaneously.
+	// This is done in order to prevent NGA from drawing control groups
+	// underneath the fullscreen foreground application in cases the clearer
+	// orientation can't be readily updated during the layout switch, due
+	// to e.g. application startup taking a long time.
+	// Note that only the clearer window's size is set to be larger, the
+	// skin background is still the screen size so that the skin background
+	// won't get stretched.
+	TRect screenRect( KWholeScreen );
+	TRect squareScreenRect( screenRect );
+    if ( squareScreenRect.Width() > squareScreenRect.Height() )
         {
-        shape.AddRect(KWholeScreen);
+        squareScreenRect.SetHeight( squareScreenRect.Width() );
         }
     else
         {
-        shape.AddRect(KWholeScreen);
-		sp->GetShapeL(appStatuspaneShape, !iFlags[EAknScreenClearerBlankAppStatusPane], ETrue);
-        shape.SubRegion(appStatuspaneShape);
+        squareScreenRect.SetWidth( squareScreenRect.Height() );
+        }
+	
+    if ( iFlags[EAknScreenClearerBlankAppStatusPane] )
+        {
+        shape.AddRect( squareScreenRect );
+        }
+    else
+        {
+        // Square shape is used only if the clearer is used to clear the
+        // whole screen.
+        shape.AddRect( screenRect );
+		sp->GetShapeL( appStatuspaneShape,
+		               !iFlags[EAknScreenClearerBlankAppStatusPane],
+		               ETrue );
+        shape.SubRegion( appStatuspaneShape );
         }
 
-	if (shape.CheckError())
-		User::Leave(KErrNoMemory);
-
-	SetRect(KWholeScreen);
-	DrawableWindow()->SetShape(shape);
+	if ( shape.CheckError() )
+	    {
+		User::Leave( KErrNoMemory );
+	    }
 
-	CleanupStack::PopAndDestroy(2);		// close shapes	
+	SetRect( iFlags[EAknScreenClearerBlankAppStatusPane] ? squareScreenRect :
+                                                           screenRect );
+	DrawableWindow()->SetShape( shape );
 
-	TBool drawNavi =
-		iFlags[EAknScreenClearerBlankAppStatusPane] && 
-		sp->IsVisible() && 
-		sp->PaneCapabilities(TUid::Uid(EEikStatusPaneUidNavi)).IsInCurrentLayout();
-
-	iFlags.Assign(EAknScreenClearerDrawNavi, drawNavi);
+	CleanupStack::PopAndDestroy( 2, &shape ); // close shapes
 	}
 
 
@@ -508,41 +475,7 @@
             iExtension->iBgContext->SetLayerRect( 0, main_pane.Rect() );
             iExtension->iBgContext->SetLayerRect( 1, staconTop );
             iExtension->iBgContext->SetLayerRect( 2, staconBottom );
-            }                        
-
-	if (Layout_Meta_Data::IsPenEnabled())
-		{
-		TAknLayoutRect area_side_right_pane;
-		TInt variety = 0;
-		area_side_right_pane.LayoutRect(application_window, AknLayoutScalable_Avkon::area_side_right_pane(variety));
-
-		TAknLayoutRect sctrl_sk_top_pane;
-		sctrl_sk_top_pane.LayoutRect(area_side_right_pane.Rect(), AknLayoutScalable_Avkon::sctrl_sk_top_pane(0));
-	
-		TAknLayoutRect sctrl_sk_bottom_pane;
-		sctrl_sk_bottom_pane.LayoutRect(area_side_right_pane.Rect(), AknLayoutScalable_Avkon::sctrl_sk_bottom_pane(0));
-	
-		TAknLayoutRect grid_sctrl_middle_pane;
-		grid_sctrl_middle_pane.LayoutRect(area_side_right_pane.Rect(), AknLayoutScalable_Avkon::grid_sctrl_middle_pane(0));
-	
-		TAknLayoutRect cell_sctrl_middle_pane1;
-		cell_sctrl_middle_pane1.LayoutRect(grid_sctrl_middle_pane.Rect(), AknLayoutScalable_Avkon::cell_sctrl_middle_pane(0,0,0));
-		TAknLayoutRect cell_sctrl_middle_pane2;
-		cell_sctrl_middle_pane2.LayoutRect(grid_sctrl_middle_pane.Rect(), AknLayoutScalable_Avkon::cell_sctrl_middle_pane(0,0,1));
-		TAknLayoutRect cell_sctrl_middle_pane3;
-		cell_sctrl_middle_pane3.LayoutRect(grid_sctrl_middle_pane.Rect(), AknLayoutScalable_Avkon::cell_sctrl_middle_pane(0,0,2));
-	
-
-
-		iExtension->iBgContext->SetLayerImage( ELayerFlatCbaBackground, KAknsIIDQsnBgScreen );
-
-
-		iExtension->iBgContext->SetLayerRect( ELayerFlatCbaBackground, application_window );
-		}
-
-
-
-
+            }
         }
     else
         {
@@ -684,13 +617,35 @@
 	return(self);
 	}
 
+
+EXPORT_C CAknLocalScreenClearer* CAknLocalScreenClearer::NewLC(TBool aBlankAppStatusPane, TBool aTransparent)
+	{
+	CAknLocalScreenClearer* self=new(ELeave) CAknLocalScreenClearer;
+	CleanupStack::PushL(self);
+	self->CreateExtensionL();
+	self->SetTransparent(aTransparent);
+	CEikonEnv& eikEnv = *static_cast<CEikonEnv*>(self->ControlEnv());
+	self->ConstructL(eikEnv.RootWin(), 0, aBlankAppStatusPane);
+	return(self);
+	}
+
+
 EXPORT_C CAknLocalScreenClearer* CAknLocalScreenClearer::NewL(TBool aBlankAppStatusPane)
 	{
 	CAknLocalScreenClearer* self = CAknLocalScreenClearer::NewLC(aBlankAppStatusPane);
 	CleanupStack::Pop(self);
 	return(self);
 	}
-	
+
+
+EXPORT_C CAknLocalScreenClearer* CAknLocalScreenClearer::NewL(TBool aBlankAppStatusPane, TBool aTransparent)
+	{
+	CAknLocalScreenClearer* self = CAknLocalScreenClearer::NewLC(aBlankAppStatusPane, aTransparent);
+	CleanupStack::Pop(self);
+	return(self);
+	}
+
+
 EXPORT_C void CAknLocalScreenClearer::HandleResourceChange(TInt aType)
 	{
 	if (aType == KEikDynamicLayoutVariantSwitch)
--- a/uifw/EikStd/coctlsrc/EIKEDWIN.CPP	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/EikStd/coctlsrc/EIKEDWIN.CPP	Wed Jun 09 09:58:37 2010 +0300
@@ -653,9 +653,9 @@
     {
     TInt length( Min( aLengthToRetrieve, iEdwin.TextLength() - aDocumentPosition ) );
     iEdwin.iText->Extract( aEditorContent, aDocumentPosition, length );
-    if ( iEdwin.IsSmileyEnabled() )
-        {
-        CSmileyManager* smiley( iEdwin.iEdwinExtension->iSmiley );
+    CSmileyManager* smiley( iEdwin.iEdwinExtension->iSmiley );
+    if ( smiley && smiley->HasSmileyIconsInText() )
+        {        
         CAknEdwinState* state( iEdwin.EditorState() );
         if ( state )
             {
@@ -663,17 +663,22 @@
             if ( aDocumentPosition >= inlineText.LowerPos() && 
                 aDocumentPosition + length <= inlineText.HigherPos() )
                 {
-                smiley->ConvertTextForSmileyL( aDocumentPosition, aEditorContent, 
-                    EFalse );
+                TRAP_IGNORE( smiley->ConvertTextForSmileyL( aDocumentPosition, aEditorContent, 
+                    EFalse ); )
                 }
             }
+        TInt smileyEndPos( 0 );
         for ( TInt i( 0 ); i < length; i++ )
             {
-            if ( smiley->SmileyCodeByPos( aDocumentPosition + i ) > 0 &&
-                !CSmileyManager::IsSmileyCode( aEditorContent[i] ) )
+            if ( aEditorContent[i] == CSmileyManager::KCompensateChar && 
+                i < smileyEndPos )
                 {
                 aEditorContent[i] = CSmileyManager::KPlaceHolder;
                 }
+            else if ( smiley->IsSmileyCode( aEditorContent[i] ) )
+                {
+                smileyEndPos = i + smiley->SmileyLength( aDocumentPosition + i );
+                }
             }
         }
     }
@@ -8510,9 +8515,7 @@
         checkPos--;
         checkPos = checkPos >= 0 ? checkPos : 0;
         }
-    if ( CSmileyManager::IsSmileyCode( iEdwinExtension->iSmiley->
-        SmileyCodeByPos( checkPos ) ) && 
-        !iEdwinExtension->iSmiley->IsDisabledSmileyIcon( checkPos ) )
+    if ( iEdwinExtension->iSmiley->SmileyCodeByPos( checkPos ) > 0 )
         {
         TInt codeLength( iEdwinExtension->iSmiley->SmileyLength( checkPos ) );
         iEdwinExtension->iSmiley->DisableSmileyIcon( checkPos );
@@ -8940,7 +8943,6 @@
 		}
     }
 
-
 // ---------------------------------------------------------------------------
 // CEikEdwin::SkipBackgroundDrawer
 // ---------------------------------------------------------------------------
--- a/uifw/EikStd/coctlsrc/EIKLABEL.CPP	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/EikStd/coctlsrc/EIKLABEL.CPP	Wed Jun 09 09:58:37 2010 +0300
@@ -270,7 +270,7 @@
 	
 TInt CEikLabel::HeightInPixels() const
     {
-    return(iMargin.iTop+iMargin.iBottom + iGapBetweenLines*(iNumberOfLines-1) + iNumberOfLines*iFont->HeightInPixels());
+    return(iMargin.iTop+iMargin.iBottom + iGapBetweenLines*(iNumberOfLines-1) + iNumberOfLines*iFont->FontMaxHeight());
     }
 
 TInt CEikLabel::WidthInPixels(TPtrC& aText) const
@@ -403,7 +403,7 @@
     
     const TRect rect = Rect();
 
-    const TInt deltaHeight=rect.Height()-HeightInPixels();
+    const TInt deltaHeight=rect.Height() - HeightInPixels();
     TInt preHeight=iMargin.iTop; // used on first line
     TInt postHeight=iMargin.iBottom; // used on last line
     if (deltaHeight>0)
@@ -437,14 +437,14 @@
         }
     else
         {
-        textPaneTopToBaseline = iFont->AscentInPixels();
-        textPaneHeight = iFont->HeightInPixels();
+        textPaneTopToBaseline = iFont->FontMaxAscent();
+        textPaneHeight = iFont->FontMaxHeight();
         }
     
     // iGapBetweenLines is defined as baseline separation - CFont::HeightInPixels
     // Since we are using the better metrics above, we have to actually use something which is 
     // derived from iGapBetweenLines, but is e.g. reduced if textpaneheight > heightInPixels
-    TInt gapBetweenTextPanes( iGapBetweenLines - (textPaneHeight - iFont->HeightInPixels()) );
+    TInt gapBetweenTextPanes( iGapBetweenLines - (textPaneHeight - iFont->FontMaxHeight() ) );
 
     FOREVER
         {
--- a/uifw/EikStd/coctlsrc/EIKLBV.CPP	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/EikStd/coctlsrc/EIKLBV.CPP	Wed Jun 09 09:58:37 2010 +0300
@@ -657,15 +657,33 @@
 
 EXPORT_C TInt CListBoxView::NumberOfItemsThatFitInRect(const TRect& aRect) const
 	{
+    TInt itemNumber = 0;
 	if (iItemHeight == 0)
 	    {
 	    _AKNTRACE( "Number of items is 0" );
-		return 0;
+		return itemNumber;
 	    }
-    TInt items = aRect.Height() / iItemHeight;
-	if ( ( iVerticalOffset != 0 ) || ( (aRect.Height() - iVerticalOffset) % iItemHeight > 0 ) ) items++;
-	_AKNTRACE( "Number of items is %d", items );
-	return items;
+    TInt items = aRect.Height() / iItemHeight;     
+    TInt extraHeight = aRect.Height() % iItemHeight;
+    // if there is offset or extra height, then there is at least one partical
+    // displayed item
+    if ( iVerticalOffset != 0 || extraHeight > 0 )
+        {
+        items++;
+        }
+    // if extra height is not totally taken by top partically displayed item,
+    // then there is still place to display a partcial item in bottom. consider
+    // a example which view height is 35 and item height is 10, then it's possible
+    // to display 5 items with the height like 3,10,10,10,2
+    if ( iVerticalOffset != 0 && 
+         extraHeight != 0 && 
+         ( iItemHeight + iVerticalOffset ) < extraHeight )
+        {
+        items++;
+        }
+    itemNumber = items;
+	_AKNTRACE( "Number of items is %d", itemNumber );
+	return itemNumber;
 	}
 
 EXPORT_C void CListBoxView::DeselectRangeL(TInt aItemIndex1, TInt aItemIndex2)
@@ -1193,16 +1211,17 @@
     RDebug::Print( _L( "CListBoxView::CalcNewTopItemIndexSoItemIsVisible" ) );
 #endif // _DEBUG
 	TInt newTopItemIndex=iTopItemIndex;
-	const TInt numItemsThatFitInRect=NumberOfItemsThatFitInRect(iViewRect);
-	if (aItemIndex < iTopItemIndex || numItemsThatFitInRect == 0)
+	const TInt numItemsThatFitInRect=NumberOfItemsThatFitInRect( iViewRect );
+	if ( aItemIndex < iTopItemIndex || numItemsThatFitInRect == 0 )
+        {
 		newTopItemIndex = aItemIndex;
-	else if (aItemIndex > iBottomItemIndex)
-		newTopItemIndex = aItemIndex - numItemsThatFitInRect + 1;
-    else if ( ( iVerticalOffset < 0 )
-            && ( aItemIndex == iBottomItemIndex )
-            && ( 0 == iViewRect.Height() % iItemHeight ) )
+        }   
+	else 
         {
-        newTopItemIndex += 1;
+        if (aItemIndex > iBottomItemIndex)
+		   {
+	       newTopItemIndex = aItemIndex - numItemsThatFitInRect + 1;
+		   }
         }
 
 	if (!ITEM_EXISTS_ONCE(newTopItemIndex) && newTopItemIndex != 0 )
@@ -1229,6 +1248,13 @@
             {
             me->SetItemOffsetInPixels( 0 );
             }
+        //after reset vertical offset, 
+        //the number of items which fit in the view maybe change
+        TInt newNumItemsThatFitInRect = NumberOfItemsThatFitInRect( iViewRect );
+        if ( newNumItemsThatFitInRect != numItemsThatFitInRect )
+        	{
+			newTopItemIndex = aItemIndex - newNumItemsThatFitInRect + 1;
+        	}
 	    }
 
 	_AKNTRACE_FUNC_EXIT;
--- a/uifw/EikStd/coctlsrc/EIKLBX.CPP	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/EikStd/coctlsrc/EIKLBX.CPP	Wed Jun 09 09:58:37 2010 +0300
@@ -526,6 +526,11 @@
     void DisableSingleClick();
 
     /**
+     * Enables single click
+     */
+    void EnableSingleClickL();    
+    
+    /**
      * Disables item specific menu.
      */
     void DisableItemSpecificMenu();
@@ -757,6 +762,12 @@
      * Ordinal position of listbox window, before stylus menu is opened.
      */
     TInt iOldWinPos;
+
+    /**
+     * If double click modifier is set on PointerEvent, the event may be ignored
+     * in some situation(To prevent extra dialog launched by AO).
+     */
+    TBool iDoubleClickEventIgnored;
     
 private:
     CMatchBuffer* iBuffer;
@@ -790,7 +801,7 @@
     /**
      * Height of the list in pixels.
      */    
-    TInt iListBottomLimit;
+    TInt iListBottomLimit;    
     };
     
 // CEikListBoxExt    
@@ -1270,6 +1281,28 @@
     _AKNTRACE_FUNC_EXIT;
     }
 
+// -----------------------------------------------------------------------------
+// CListBoxExt::EnableSingleClickL
+// -----------------------------------------------------------------------------
+//
+void CListBoxExt::EnableSingleClickL()
+    {
+    _AKNTRACE_FUNC_ENTER;
+    if ( !iLongTapDetector )
+        {
+        iLongTapDetector = CAknLongTapDetector::NewL( this );
+        }
+    if ( !iItemActionMenu )
+        {
+        iItemActionMenu = CAknItemActionMenu::RegisterCollectionL( 
+            *this, &iListBox );
+        iListBox.iListBoxFlags &= ( ~CEikListBox::EDisableItemSpecificMenu );
+        }    
+    iSingleClickEnabled = ETrue;
+    EnableHighlight( EFalse );
+    // iListBox.UpdateHighlightL( iListBox.iView->CurrentItemIndex() );
+    _AKNTRACE_FUNC_EXIT;
+    }
 
 // -----------------------------------------------------------------------------
 // CListBoxExt::DisableItemSpecificMenu
@@ -1299,8 +1332,9 @@
         // Send event on down only if item specific items were found. 
         // Long tap is also disabled if current item is not marked while
         // there are some marked items or marking mode is active.
-        if ( !( ( iListBox.MarkingMode() || MarkedItems() )
+        if ( ( !( ( iListBox.MarkingMode() || MarkedItems() )
             && !iListBox.View()->ItemIsSelected( iListBox.CurrentItemIndex() ) )
+            || ( iListBox.iListBoxFlags & CEikListBox::EItemSpecificMenuAlwaysShown ) )
             && ( aPointerEvent.iType != TPointerEvent::EButton1Down
             || iItemActionMenu->InitMenuL() ) ) 
             {
@@ -4192,6 +4226,11 @@
         case MEikListBoxObserver::EEventFlickStarted:
         case MEikListBoxObserver::EEventPanningStarted:
             {
+            if ( iListBoxExt && ( iListBoxExt->iWorldSize.iHeight 
+                    <= iListBoxExt->iViewSize.iHeight ) )
+                {
+                return; 
+                }
             iItemDrawer->SetFlags( CListItemDrawer::EDisableMarquee );
             if ( iListBoxExt )
                 { 
@@ -4210,6 +4249,11 @@
         case MEikListBoxObserver::EEventFlickStopped:
         case MEikListBoxObserver::EEventPanningStopped:
             {
+            if ( iListBoxExt && ( iListBoxExt->iWorldSize.iHeight 
+                    <= iListBoxExt->iViewSize.iHeight ) )
+                {
+                return; 
+                }
             iItemDrawer->ClearFlags( CListItemDrawer::EDisableMarquee );
             if ( iListBoxExt )
                 { 
@@ -4999,6 +5043,7 @@
             }
 
         iListBoxExt->iFeedbackType = ETouchFeedbackList;
+        iListBoxExt->iDoubleClickEventIgnored = EFalse;
         
         if ( !iListBoxExt->iSingleClickEnabled &&
             itemIndex != iView->CurrentItemIndex() )
@@ -5068,6 +5113,7 @@
     if(Buffer()->iPressedIndex == itemIndex)
         {
         Buffer()->iPressedIndex = KEikListBoxInvalidIndex;
+        iListBoxExt->iDoubleClickEventIgnored = ETrue;
         _AKNTRACE_FUNC_EXIT;
         return;
         }
@@ -5350,7 +5396,7 @@
 				 ( !( ( iListBoxFlags & EViewerFlag ) && 
 				 ( iListBoxFlags & EDisableItemSpecificMenu ) ) )&& 
 				 ( iListBoxExt->iLastDownTappedItem == itemIndex ) && 
-				 (Buffer()->iPressedIndex != KEikListBoxInvalidIndex) && 
+				 ( !iListBoxExt->iDoubleClickEventIgnored ) && 
 				 itemIndex == iView->CurrentItemIndex() )
                 {
                 TTouchLogicalFeedback fbType = ETouchFeedbackList;
@@ -5411,7 +5457,8 @@
                     }
                 if ( !s60StyleMultiselection )
                     {
-                    if ( !iListBoxExt->iSingleClickEnabled )
+                    if ( !iListBoxExt->iSingleClickEnabled &&
+                         itemIndex == iListBoxExt->iLastDownTappedItem )
                         {
                         ReportListBoxEventL(MEikListBoxObserver::EEventItemClicked);
                         }
@@ -6596,6 +6643,14 @@
         iListBoxExt->DisableSingleClick(); 
         iItemDrawer->ClearFlags( CListItemDrawer::ESingleClickEnabled);
         }
+    else if ( !aDisabled &&
+              iListBoxExt &&
+              !iListBoxExt->iSingleClickEnabled &&
+              iItemDrawer )
+        {
+        TRAP_IGNORE( iListBoxExt->EnableSingleClickL() );
+        iItemDrawer->SetFlags( CListItemDrawer::ESingleClickEnabled );
+        }
     _AKNTRACE_FUNC_EXIT;
     }
 
--- a/uifw/EikStd/coctlsrc/EIKMENUB.CPP	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/EikStd/coctlsrc/EIKMENUB.CPP	Wed Jun 09 09:58:37 2010 +0300
@@ -785,7 +785,12 @@
 EXPORT_C TKeyResponse CEikMenuBar::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType)
     {
     const TInt code=aKeyEvent.iCode;
-
+    //Filter msk event from dialog page.
+    if ( aKeyEvent.iCode == EKeyOK && aKeyEvent.iModifiers & EModifierSpecial )
+    	{
+        return EKeyWasConsumed;
+    	}
+    
     if (MenuHasPane())
         {
         iMenuPane->OfferKeyEventL(aKeyEvent, aType);
@@ -1139,6 +1144,26 @@
         // menu pane captures all pointer events, and forwards them to CBA if neccessary
         iMenuPane->SetGloballyCapturing(ETrue);
         iMenuPane->SetPointerCapture(ETrue);
+        if ( feedback )
+            {
+            TTouchLogicalFeedback fbLogicalType = ETouchFeedbackPopUp;
+            if ( CAknTransitionUtils::TransitionsEnabled( AknTransEffect::EComponentTransitionsOff ) )
+                {
+                if( iExt->iMenuType == EMenuContext || iExt->iMenuType == EMenuEdit )
+                    {
+                    fbLogicalType = ETouchFeedbackIncreasingPopUp;
+                    }
+                else
+                    {
+                    fbLogicalType = ETouchFeedbackOptionsMenuOpened;
+                    }
+                }
+            feedback->InstantFeedback(
+                                   this,
+                                   fbLogicalType,
+                                   ETouchFeedbackVibra,
+                                   TPointerEvent() );
+            }
         }
     
     iMenuPane->MakeVisible( EFalse );
@@ -1149,16 +1174,6 @@
     if( optMenuFg )
         {
         GfxTransEffect::Begin( iMenuPane, KGfxControlAppearAction );
-        if( feedback && CAknTransitionUtils::TransitionsEnabled( AknTransEffect::EComponentTransitionsOff ))
-            {
-            TTouchLogicalFeedback fbLogicalType = ETouchFeedbackOptionsMenuOpened;
-            if( iExt->iMenuType == EMenuContext || iExt->iMenuType == EMenuEdit )
-                {
-                fbLogicalType = ETouchFeedbackIncreasingPopUp;
-                }
-            feedback->InstantFeedback( this, fbLogicalType,
-                                        ETouchFeedbackVibra, TPointerEvent() );
-            }      
         } 
     
     iMenuPane->StartDisplayingMenuPane(NULL, menuPosition, NULL, screenSize.iWidth, EPopupTargetBottomLeft);
@@ -1176,11 +1191,6 @@
         GfxTransEffect::SetDemarcation( iMenuPane, demarcation );
         GfxTransEffect::End( iMenuPane );
         }
-    if( feedback )
-        {
-        feedback->InstantFeedback( this, ETouchFeedbackPopUp,
-                                    ETouchFeedbackVibra, TPointerEvent() );
-        }
     _AKNTRACE_FUNC_EXIT;
     }
 
--- a/uifw/EikStd/coctlsrc/EIKMENUP.CPP	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/EikStd/coctlsrc/EIKMENUP.CPP	Wed Jun 09 09:58:37 2010 +0300
@@ -841,11 +841,6 @@
         {
         cascadeMenuPane->SetParent( iControl );
         GfxTransEffect::Begin( cascadeMenuPane, KGfxControlAppearAction );
-        if ( CAknTransitionUtils::TransitionsEnabled( AknTransEffect::EComponentTransitionsOff ) )
-            {
-            ImmediateFeedback( ETouchFeedbackSubMenuOpened,
-                                            ETouchFeedbackVibra );
-            }
         cascadeMenuPane->StartDisplayingMenuPane( iControl->iHotKeyTable,
                                                   iControl->Position(),
                                                   NULL,
@@ -1256,6 +1251,7 @@
     iFlags.Clear( EContextSensitive );
     iFlags.Clear( EHighlightEnabled );
     iFlags.Clear( EHideViewSpecificCommands );
+    iFlags.Clear( EHideMarkAndUnmark ); 
     _AKNTRACE_FUNC_EXIT;
     }
 
@@ -2287,7 +2283,13 @@
         {
         iExtension->StartCascadeMenuAppearTransition();
         }
-    iExtension->ImmediateFeedback( ETouchFeedbackPopUp,
+
+    TTouchLogicalFeedback fbLogicalType = ETouchFeedbackPopUp;
+    if ( CAknTransitionUtils::TransitionsEnabled( AknTransEffect::EComponentTransitionsOff ) )
+        {
+        fbLogicalType = ETouchFeedbackSubMenuOpened;
+        }
+    iExtension->ImmediateFeedback( fbLogicalType,
                                        ETouchFeedbackVibra );
     _AKNTRACE_FUNC_EXIT;
     }
--- a/uifw/EikStd/coctlsrc/aknitemactionmenuregister.cpp	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/EikStd/coctlsrc/aknitemactionmenuregister.cpp	Wed Jun 09 09:58:37 2010 +0300
@@ -920,11 +920,10 @@
         {
         TAknUnregisteredMenuData& data( iUnregisteredMenus[i] );
 
-        if ( data.iOwner == iMenuBarOwner ) 
+        if ( data.iOwner == aMenuBarOwner ) 
             {
-            data.iOwner = iMenuBarOwner = NULL;
+            data.iOwner = NULL;
             }
-        
         ++i;
         }
     
--- a/uifw/EikStd/coctlsrc/akntoolbarextension.cpp	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/EikStd/coctlsrc/akntoolbarextension.cpp	Wed Jun 09 09:58:37 2010 +0300
@@ -22,6 +22,10 @@
 #include <aknconsts.h>
 #include <akntoolbar.h>
 
+#include <touchfeedback.h>
+#include <akntranseffect.h>
+#include <akntransitionutils.h>
+
 #include "akntoolbarextensionview.h"
 
 
@@ -309,6 +313,28 @@
                     iView->SetFocusing( !nonFocusing ); 
                     if ( IsVisible() )
                         {
+
+                        //
+                        // the pop up feedback for droping out toolbar extention view
+                        //
+                        if ( AknLayoutUtils::PenEnabled() )
+                            {
+                            MTouchFeedback* feedback = MTouchFeedback::Instance();
+                            if ( feedback )
+                                {
+                                TTouchLogicalFeedback fbLogicalType = ETouchFeedbackPopUp;
+                                if ( CAknTransitionUtils::TransitionsEnabled(
+                                        AknTransEffect::EComponentTransitionsOff ) )
+                                    {
+                                    fbLogicalType = ETouchFeedbackIncreasingPopUp;
+                                    }
+
+                                feedback->InstantFeedback( this,
+                                                           fbLogicalType,
+                                                           ETouchFeedbackVibra, TPointerEvent() );
+                                }
+                            }
+
                         iToolbar->DynInitExtensionL( this );
                         iView->MakeVisible( ETrue ); // show view
                         }
--- a/uifw/EikStd/coctlsrc/akntoolbarextensionview.cpp	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/EikStd/coctlsrc/akntoolbarextensionview.cpp	Wed Jun 09 09:58:37 2010 +0300
@@ -873,17 +873,19 @@
     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
     if ( iExtension->ExtensionFlags() & KAknTbExtensionDsaMode )
         {
+        TSize cornerSize(20,20);
         gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
         gc.SetBrushColor( TRgb( KToolbarExtensionBgColor, KToolBarExtensionBgAlpha ) );
         gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
-        gc.DrawRect( rect );
+        gc.DrawRoundRect( rect, cornerSize );
+
         gc.SetDrawMode( CGraphicsContext::EDrawModePEN );
         TSize penSize( 1, 1 );
         gc.SetPenSize( penSize );
-        gc.SetPenStyle( CGraphicsContext::EDottedPen );
-        gc.SetPenColor( KRgbWhite );
+        gc.SetPenStyle( CGraphicsContext::ESolidPen );
+        gc.SetPenColor( KRgbDarkGray );
         gc.SetBrushStyle( CGraphicsContext::ENullBrush );
-        gc.DrawRect( rect );
+        gc.DrawRoundRect( rect, cornerSize );
         }
     else
         {
--- a/uifw/EikStd/coctlsrc/eikspane.cpp	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/EikStd/coctlsrc/eikspane.cpp	Wed Jun 09 09:58:37 2010 +0300
@@ -2612,8 +2612,7 @@
     {
     if ( aParentWindowGroup )
         {
-        MakeVisible( EFalse );
-    
+            
         SetMopParent( iEikonEnv->EikAppUi() );
         SetParent( NULL );
 
@@ -2626,8 +2625,8 @@
             }
 
         CreateWindowL( aParentWindowGroup );
-
-        RWindow& window = Window();
+        
+		RWindow& window = Window();
         if ( aRedrawStoreHandler )
             {
             aRedrawStoreHandler->SetStore( &window, KEnableRedrawStoring );
@@ -2652,6 +2651,10 @@
 
         SetContainersL( *iControl, *this );
 
+        //these 2 lines is to fix the error ou1cimx1#390645
+        MakeVisible( ETrue );
+        MakeVisible( EFalse );
+		
         window.SetFaded( aIsFaded, RWindowTreeNode::EFadeIncludeChildren );
         window.SetOrdinalPosition( ordinalPos );
         
--- a/uifw/EikStd/coctlsrc/smileymanager.cpp	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/EikStd/coctlsrc/smileymanager.cpp	Wed Jun 09 09:58:37 2010 +0300
@@ -265,7 +265,7 @@
 TText CSmileyManager::SmileyCodeByPos( TInt aDocPos )
     {
     CSmileyIcon* icon( iIconRecord->SmileyIconAtPos( aDocPos ) );
-    if ( icon )
+    if ( icon && !icon->IsDisabled() )
         {
         return icon->Code();
         }
--- a/uifw/EikStd/dlgsrc/EIKCAPC.CPP	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/EikStd/dlgsrc/EIKCAPC.CPP	Wed Jun 09 09:58:37 2010 +0300
@@ -3645,7 +3645,7 @@
 		{ // popup field will be same size as text element
 		TAknLayoutText r;
 		r.LayoutText(layoutRect, labelLayout);
-		TRect resultRect = r.TextRect();
+		TRect resultRect( r.TextRect() );
 		aPopfield->SetRect(resultRect);
 		}
 	else
--- a/uifw/EikStd/dlgsrc/EIKCAPCA.CPP	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/EikStd/dlgsrc/EIKCAPCA.CPP	Wed Jun 09 09:58:37 2010 +0300
@@ -653,8 +653,12 @@
     TRect formRect = formtLayoutRect.Rect();
 	
 	CEikCapCArrayExtension *extension_or_null = ExtensionOrNull();
+	
+	TBool rectChanged = ETrue;
+	
 	if (extension_or_null)
 		{
+        rectChanged = ( extension_or_null->iRect != formRect );
 		extension_or_null->iRect = formRect;
 		}
 
@@ -665,7 +669,11 @@
         
         if ( control->DialogPage()->IsForm() )
             {
-            SetRealRect( aRect, aTop, aBottom );
+            if ( rectChanged )
+                {
+                SetRealRect( aRect, aTop, aBottom );
+                }
+
             _AKNTRACE_FUNC_EXIT;
             return;
             }
@@ -1137,7 +1145,12 @@
             topLeft.SetXY( Rect().iTl.iX, LineIndexToYPosition( aLine, aTopY ) );
             }
         
-        line->SetRect( TRect( topLeft, line->Size() ) );
+        TRect newRect( topLeft, line->Size() );
+        
+        if ( newRect != line->Rect() )
+            {
+            line->SetRect( TRect( topLeft, line->Size() ) );
+            }
         }
     _AKNTRACE_FUNC_EXIT;
     }
--- a/uifw/EikStd/dlgsrc/EIKDIALG.CPP	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/EikStd/dlgsrc/EIKDIALG.CPP	Wed Jun 09 09:58:37 2010 +0300
@@ -300,9 +300,9 @@
     // assume that dialog didn't properly call CEikDialog::SizeChanged thus 
     // embedded softkeys won't work.
     // In that case softkeys are deleted and re-created as a window-owning
-    // component in "legacy" way.    
-    if ( checkCba && extension->iDeleteEmbeddedCba 
-	        && extension->iButtonGroupResourceId != 0 )
+    // component in "legacy" way.
+    if (checkCba && extension->iButtonGroupResourceId != 0 &&
+        (extension->iDeleteEmbeddedCba || Size().iWidth <= 0))
         {
         delete iButtonGroupContainer;
         iButtonGroupContainer = NULL;
@@ -1656,15 +1656,23 @@
 #endif
 		GfxTransEffect::Begin(this, KGfxControlAppearAction);
         MTouchFeedback* feedback = NULL;
-		if(AknLayoutUtils::PenEnabled())
-		    {
-            feedback = static_cast<MTouchFeedback*>(ExtensionInterface(KExIfTactileFeedbackUid));
-		    }
-		if(feedback && CAknTransitionUtils::TransitionsEnabled(AknTransEffect::EComponentTransitionsOff ))
-		    {
-            feedback->InstantFeedback(this, ETouchFeedbackIncreasingPopUp,
-                                        ETouchFeedbackVibra, TPointerEvent());
-		    }
+        if( AknLayoutUtils::PenEnabled() )
+            {
+            feedback = static_cast<MTouchFeedback*>( ExtensionInterface( KExIfTactileFeedbackUid ) );
+            }
+        if( feedback )
+            {
+            if( CAknTransitionUtils::TransitionsEnabled( AknTransEffect::EComponentTransitionsOff ) )
+                {
+                feedback->InstantFeedback( this, ETouchFeedbackIncreasingPopUp,
+                                            ETouchFeedbackVibra, TPointerEvent() );
+                }
+            else
+                {
+                feedback->InstantFeedback( this, ETouchFeedbackPopUp,
+                                            ETouchFeedbackVibra, TPointerEvent() );
+                }
+            }
 		GfxTransEffect::NotifyExternalState(ECaptureComponentsBegin, (const TDesC8*)this);
 		
 		TRect demarcation;
@@ -1677,11 +1685,6 @@
 
 		GfxTransEffect::NotifyExternalState(ECaptureComponentsEnd, (const TDesC8*)this);
 		GfxTransEffect::End(this);
-		if(feedback)
-		    {
-            feedback->InstantFeedback(this, ETouchFeedbackPopUp,
-                                        ETouchFeedbackVibra, TPointerEvent());
-		    }
 		}
 	else
 		{
@@ -2432,7 +2435,13 @@
         else if (iExtension)
         	iExtension->iFlags.Set(CEikDialogExtension::ELayoutChangeWhileInvisible);
 
-        CCoeControl::HandleResourceChange(aType);
+        TBool isForm = ( iPageSelector && iPageSelector->IsForm() );
+
+        if ( !isForm )
+            {
+            CCoeControl::HandleResourceChange( aType );
+            }
+
         _AKNTRACE_FUNC_EXIT;
         return;
         }
@@ -2454,16 +2463,22 @@
     // Must work through all pages
 	_AKNTRACE_FUNC_ENTER;
     Layout();
-    SizeChanged();
+    
+    TBool isForm = ( iPageSelector && iPageSelector->IsForm() );
+    
+    if ( !isForm )
+        {
+        SizeChanged();
     
-    TInt lastPage =  ( iPageSelector->PageContainer()->NumPages() - 1 );
-    TInt pageIndex = 0;
-    CEikDialogPage* page;
-
-    while ( pageIndex++ <= lastPage )
-        {
-        page = iPageSelector->PageContainer()->Page( pageIndex );
-        page->HandleResourceChange( KEikDynamicLayoutVariantSwitch );
+        TInt lastPage =  ( iPageSelector->PageContainer()->NumPages() - 1 );
+        TInt pageIndex = 0;
+        CEikDialogPage* page;
+    
+        while ( pageIndex++ <= lastPage )
+            {
+            page = iPageSelector->PageContainer()->Page( pageIndex );
+            page->HandleResourceChange( KEikDynamicLayoutVariantSwitch );
+            }
         }
 
    	if (iExtension)
--- a/uifw/EikStd/dlgsrc/EIKDPAGE.CPP	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/EikStd/dlgsrc/EIKDPAGE.CPP	Wed Jun 09 09:58:37 2010 +0300
@@ -218,44 +218,46 @@
     TInt aCurrentLine )
     {
     CEikCaptionedControl* firstLine( aDPage.LineOnPageOrNull( 0 ) );
-    TBool viewMode( !aDPage.IsEditable() );
     
-    // note, that iFormControl is checked in Feedback()
-    if ( aPointerEvent.iType == TPointerEvent::EButton1Down &&
-         aCurrentLine != aTouchedLineIndex &&
-         firstLine ) 
+    if( aDPage.IsEditable() )
         {
-        // feedback for edit/view mode form, when non-focused line is clicked
-        // feedback for focused item is responsibility of the item
-        // no feedback with focus change when single click is enabled
-        if ( !iUsesSingleClick )
-            {
-            Feedback( aDPage, ETouchFeedbackSensitiveList );
-            }
-        iFocusItemChanged = ETrue;
-        }
-    else if ( viewMode && firstLine )
-        {
+        // note, that iFormControl is checked in Feedback()
         if ( aPointerEvent.iType == TPointerEvent::EButton1Down &&
-             aTouchedLineIndex == aCurrentLine )
+             aCurrentLine != aTouchedLineIndex &&
+             firstLine ) 
+            {
+            // feedback for edit mode form, when non-focused line is clicked
+            // feedback for focused item is responsibility of the item
+            // no feedback with focus change when single click is enabled
+            if ( !iUsesSingleClick )
+                {
+                Feedback( aDPage, ETouchFeedbackSensitiveList );
+                }
+            iFocusItemChanged = ETrue;
+            }
+        else if ( firstLine )
             {
-            // Feedback for view mode form, when focused item is
-            // clicked. Basically same case as for msk simulation later on
-            // the function, but on pointer
-            // down. iExtension->iFocusedClicked is not valid here, since
-            // it can't be known in this phase whether user drags pointer
-            // away.
-            Feedback( aDPage, ETouchFeedbackList );
-            iFocusItemChanged = EFalse;
-            }
-        else if ( aPointerEvent.iType == TPointerEvent::EButton1Up )
-            {
-            // When focus changed, it should not send feedback on up event.
-            // When up event comes, aTouchedLineIndex always equal to
-            // aCurrentLine.
-            if ( !iFocusItemChanged )
+            if ( aPointerEvent.iType == TPointerEvent::EButton1Down &&
+                 aTouchedLineIndex == aCurrentLine )
                 {
-                SilentFeedback( aDPage, ETouchFeedbackList, aPointerEvent );
+                // Feedback for edit mode form, when focused item is
+                // clicked. Basically same case as for msk simulation later on
+                // the function, but on pointer
+                // down. iExtension->iFocusedClicked is not valid here, since
+                // it can't be known in this phase whether user drags pointer
+                // away.
+                Feedback( aDPage, ETouchFeedbackList );
+                iFocusItemChanged = EFalse;
+                }
+            else if ( aPointerEvent.iType == TPointerEvent::EButton1Up )
+                {
+                // When focus changed, it should not send feedback on up event.
+                // When up event comes, aTouchedLineIndex always equal to
+                // aCurrentLine.
+                if ( !iFocusItemChanged )
+                    {
+                    SilentFeedback( aDPage, ETouchFeedbackList, aPointerEvent );
+                    }
                 }
             }
         }
@@ -268,8 +270,7 @@
     if ( iFeedback &&
          aDPage.IsForm() &&
          !aDPage.IsDimmed() &&
-         aDPage.IsVisible() && 
-         aDPage.IsEditable() )
+         aDPage.IsVisible() )
         {
         iFeedback->InstantFeedback( aFeedback );
         }
@@ -284,8 +285,7 @@
     if ( iFeedback &&
          aDPage.IsForm() &&
          !aDPage.IsDimmed() &&
-         aDPage.IsVisible() &&
-         aDPage.IsEditable() )
+         aDPage.IsVisible() )
         {
         iFeedback->InstantFeedback( &aDPage,
                                     aFeedback,
@@ -685,18 +685,16 @@
         AknsUtils::RegisterControlPosition(capCtrl->iTrailer);
         AknsUtils::RegisterControlPosition(capCtrl->iBitmap);
 
-    if ( capCtrl->iIsFormControl && iCurrentLine != i)
-        {
-
-        if (capCtrl->ControlIsAnEdwin(capCtrl->iControlType))
+        if ( capCtrl->iIsFormControl && iCurrentLine != i)
             {
-            CEikEdwin *edwin = (CEikEdwin*)capCtrl->iControl;
-            TRAP_IGNORE(edwin->TextView()->SetDocPosL(0)
-                );
+            if (capCtrl->ControlIsAnEdwin(capCtrl->iControlType))
+                {
+                CEikEdwin *edwin = (CEikEdwin*)capCtrl->iControl;
+                TRAP_IGNORE( edwin->TextView()->SetDocPosL( 0 ) );
+                }
             }
-       }
-
         }
+    
     _AKNTRACE_FUNC_EXIT;
     }
 
@@ -778,12 +776,6 @@
             continue;
         ChangeFocusTo(ii);
         focusSet=ETrue;
-        
-        if ( IsForm() )
-            {
-            // move line with initial focus to the screen
-    		iLines->MoveLineToScreen( ii, iPhysics->ViewTopY(), ETrue );
-            }
         break;
         }
     iExtension->iSetInitialFocusDone = ETrue;
@@ -1516,6 +1508,37 @@
 void CEikDialogPage::SizeChanged()
     {
 	_AKNTRACE_FUNC_ENTER;
+	if ( IsForm() )
+	    {
+        iExtension->iInitialLayoutDone = EFalse;
+	
+        iScroll->SetOutsideRect( Rect() );
+        
+        // force each line to resize
+        TInt count = iLines->Count();
+        
+        for ( TInt i = 0; i < count; ++i )
+            {
+            (*iLines)[i]->HandleResourceChange( KEikDynamicLayoutVariantSwitch );
+            }
+
+        iLines->SetRect( Rect(), iScroll->Top(), iScroll->Middle(), iScroll->Bottom() );
+
+        iExtension->iInitialLayoutDone = ETrue;
+        UpdatePhysics();
+
+        if ( ( count > 0 ) && ( iCurrentLine >= 0 ) )
+            {
+            ExposeLine( iCurrentLine, ETrue );
+            }
+        
+        TRAP_IGNORE( UpdateScrollBarL() ); // ignore any errors.
+        AknsUtils::RegisterControlPosition( this ); 
+
+        _AKNTRACE_FUNC_EXIT;
+        return;
+	    }
+	
     // update form area's size to scroll control
     iScroll->SetOutsideRect( Rect() );
     iLines->SetRect( Rect(), iScroll->Top(), iScroll->Middle(), iScroll->Bottom() );
@@ -1528,7 +1551,6 @@
     TRAP_IGNORE( UpdateScrollBarL() ); // ignore any errors.
     AknsUtils::RegisterControlPosition( this ); 
 
-    UpdatePhysics();
     iExtension->iInitialLayoutDone = ETrue;
     _AKNTRACE_FUNC_EXIT;
     }
@@ -1677,8 +1699,8 @@
             {
             iExtension->iPopFieldEvents = 1;
             }     
-                
-        ReconsiderPageSize();
+  
+        (*iLines)[iCurrentLine]->SetRect( (*iLines)[iCurrentLine]->Rect() );
         ExposeLine( index, ETrue );
         DrawNow();
 
@@ -1814,9 +1836,19 @@
     size.iHeight = height;
 
     // Must force a size change on current captioned contrl even if control doesn't change size (so that edwin is resized by aknutils)
-    aEdwin->SetSize(size);  
-    ReconsiderPageSize();
-    ExposeLine(iCurrentLine, ETrue);
+    aEdwin->SetSize(size);
+    
+    if ( IsForm() )
+        {
+        (*iLines)[iCurrentLine]->SetRect( (*iLines)[iCurrentLine]->Rect() );
+        ExposeLine( iCurrentLine, ETrue );
+        }
+    else
+        {
+        ReconsiderPageSize();
+        ExposeLine(iCurrentLine, ETrue);
+        }
+
     PrepareToDrawVerticalLine(); // do flushes here.
 
 /* improved redraw code
@@ -2146,11 +2178,18 @@
     if ( ( oldLine != iCurrentLine && IsForm() ) && 
             iExtension->iInitialLayoutDone )
         {
+        // Set temporarily for EFalse to prevent one extra physics update
+        // because of two calls to iLines->MoveLineToScreen
+        iExtension->iInitialLayoutDone = EFalse;
+    
         if ( oldLine != -1 )
             {
             iLines->MoveLineToScreen( oldLine, 0, EFalse );
             TRAP_IGNORE( RecordLineL( oldLine ) );
             }
+        
+        // set back to correct value
+        iExtension->iInitialLayoutDone = ETrue;
 
 		TRAP_IGNORE( RecordLineL( iCurrentLine ) );
 		iLines->MoveLineToScreen( iCurrentLine, iPhysics->ViewTopY(), ETrue );
@@ -2182,7 +2221,7 @@
 void CEikDialogPage::HandleResourceChange(TInt aType)
     {
 	_AKNTRACE_FUNC_ENTER;
-    if ( aType==KEikDynamicLayoutVariantSwitch )
+    if ( aType==KEikDynamicLayoutVariantSwitch && !IsForm() )
         {
         const TInt numLines=iLines->Count();
         for ( TInt i=0; i < numLines; i++ )
@@ -2377,6 +2416,9 @@
     _AKNTRACE( "CEikDialogPage::SetEditableL() aEditable: [%d]", aEditable );
     iIsEditable = aEditable;
 
+    TBool initialLayoutDone = iExtension->iInitialLayoutDone;
+    iExtension->iInitialLayoutDone = EFalse;
+    
     HighlightVisible( aEditable );
     
     if ( iExtension->iUsesSingleClick && iExtension->iSetInitialFocusDone )
@@ -2453,6 +2495,14 @@
         {
         ExposeLine(iCurrentLine,ETrue); 
         }
+    
+    iExtension->iInitialLayoutDone = initialLayoutDone;
+    
+    if ( IsForm() )
+        {
+        UpdatePhysics();
+        }
+    
   _AKNTRACE_FUNC_EXIT;
   }
 
@@ -2897,8 +2947,12 @@
                                         iCurrentLine );
         
         iExtension->iWasScrolling = ( iPhysics->OngoingPhysicsAction() != 
-        CAknPhysics::EAknPhysicsActionNone ); 
-        iPhysics->Stop();
+        CAknPhysics::EAknPhysicsActionNone );
+        if(iExtension->iWasScrolling)
+            {
+            iPhysics->Stop();
+            iExtension->Feedback( *this, ETouchFeedbackList );
+            }
         iExtension->iLastTouchedLine = touchedLine;
         iExtension->iDragStartPosition = aPointerEvent.iPosition;
         iExtension->iLastPointerPos = aPointerEvent.iPosition;
@@ -3079,13 +3133,7 @@
         ( iExtension->iFocusedClicked || iExtension->iUsesSingleClick ) &&
         !iExtension->iScrolling )
         {
-        // Not need to sent key event when focus lost.
-        CEikCaptionedControl* currentLine = (*iLines)[iCurrentLine];     
-        if ( currentLine->IsFocused() )
-        	{
-            mskPress = ETrue;
-        	}
-        
+		mskPress = ETrue;
         callDefaultImplementation = EFalse;
         }
     if ( callDefaultImplementation && ( iExtension->iFocusedClicked || 
@@ -3114,7 +3162,7 @@
         {
         TKeyEvent key;
         key.iCode=EKeyOK;
-        key.iModifiers=0;
+        key.iModifiers=EModifierSpecial;
         key.iRepeats = 0;
         iEikonEnv->SimulateKeyEventL( key, EEventKey );
         }
@@ -3303,6 +3351,13 @@
 void CEikDialogPage::UpdateLineInCache( CEikCaptionedControl* aLine )
     {
 	_AKNTRACE_FUNC_ENTER;
+	
+	if ( !IsActivated() )
+	    {
+        _AKNTRACE_FUNC_EXIT;
+        return;
+	    }
+
     TInt lineIndex = iLines->FindLineIndex( aLine );
     
     if ( lineIndex != KErrNotFound )
@@ -4412,7 +4467,9 @@
 
     CCoeControl::HandleResourceChange(aType);
 
-    if(aType==KEikDynamicLayoutVariantSwitch)
+    // if this is a form then its size has been set already by 
+    // CEikDialog::HandleResourceChange
+    if ( aType == KEikDynamicLayoutVariantSwitch && !iForm )
         {
         SizeChanged();
         }
--- a/uifw/EikStd/srvuisrc/EIKSRVUI.CPP	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/EikStd/srvuisrc/EIKSRVUI.CPP	Wed Jun 09 09:58:37 2010 +0300
@@ -624,13 +624,12 @@
 
 EXPORT_C void CEikServAppUiBase::HandleThreadExitL(RThread& aThread)
     {
-    _LIT(KAppArcServerThread, "AppArcServerThread");
     if (aThread.Name() == ASCliDefinitions::ServerAndThreadName()) // alarm server died
         {
         aThread.Close(); // need to Close() before restarting with same name
         iServerToRestart |= EAlwlSvr; // restarted under active object
         }
-    else if (aThread.Name() == KAppArcServerThread) // AppArc server died
+    else if (aThread.Name()==NameApaServServerThread()) // AppArc server died
         {
         aThread.Close();
         iServerToRestart|=EApaSvr;
--- a/uifw/eikctl/src/EIKCLB.CPP	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/eikctl/src/EIKCLB.CPP	Wed Jun 09 09:58:37 2010 +0300
@@ -840,7 +840,7 @@
 
     TInt firstPotentialItemIndex = iTopItemIndex;
     TInt lastPotentialItemIndex =
-        iTopItemIndex + NumberOfItemsThatFitInRect( iViewRect );
+        iTopItemIndex + NumberOfItemsThatFitInRect( iViewRect ) - 1;
     TBool backgroundDrawingSuppressed = ( listbox && listbox->BackgroundDrawingSuppressed() );
 
     if ( iModel->NumberOfItems() == 0 )
--- a/uifw/eikctl/src/EIKCLBD.CPP	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/eikctl/src/EIKCLBD.CPP	Wed Jun 09 09:58:37 2010 +0300
@@ -2076,20 +2076,18 @@
             }
 #endif // RD_UI_TRANSITION_EFFECTS_LIST
         }
- 
+    if ( iExtension->iCurrentRow < listbox->BottomItemIndex() )
+        {
+        AknListUtils::DrawSeparator( aGc, aRect, aColors.iText, skin );
+        }
+    
+    DrawHighLight( aGc, aRect, aHighlight, skin );    
     TRect itemRect( aRect );
     DrawMarkingModeIcons( aItemProperties, aGc, itemRect );
     if ( iExtension->iSubCellsMightIntersect )
         {
         CheckIfSubCellsIntersect( &textLines[0], &rectClipped[0], *aText, itemRect );
         }
-    if ( iExtension->iCurrentRow < listbox->BottomItemIndex() )
-        {
-        AknListUtils::DrawSeparator( aGc, aRect, aColors.iText, skin );
-        }
-    DrawHighLight( aGc, aRect, aHighlight, skin );
-    
-    
     // The column draw loop
     column = 0;
     TInt subCellIndex = 0;
@@ -2464,7 +2462,11 @@
             }
 #endif // RD_UI_TRANSITION_EFFECTS_LIST
         }
-    
+    if ( iExtension->iCurrentRow < listbox->BottomItemIndex() )
+        {
+        AknListUtils::DrawSeparator( aGc, aRect, aColors.iText, skin );
+        }
+    DrawHighLight( aGc, aRect, aHighlight, skin );        
     DrawMarkingModeIcons( aItemProperties, aGc, itemRect );
     TRect textRect( itemRect );
     textRect.iBr.iX = itemRect.iTl.iX;    
@@ -2548,13 +2550,6 @@
     // pass 3 drawing
 
 
-    if ( iExtension->iCurrentRow < listbox->BottomItemIndex() )
-        {
-        AknListUtils::DrawSeparator( aGc, aRect, aColors.iText, skin );
-        }
-    
- // LISTBOX LINES NEED TO BE DRAWN HERE.
-    DrawHighLight( aGc, aRect, aHighlight, skin );
 
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
     if ( transApi )
@@ -2848,9 +2843,18 @@
                 iExtension->iMarkingIconArray->Count() == 2 )
 #endif // RD_TOUCH2_MARKING            
             {
-            textRect.iTl.iX += 
-                AknLayoutScalable_Avkon::list_single_graphic_pane_t1( 
+            if ( AknLayoutUtils::LayoutMirrored() )
+                {
+                textRect.iBr.iX -= 
+                    AknLayoutScalable_Avkon::list_single_graphic_pane_t1( 
+                        0 ).LayoutLine().ir;
+                }
+            else
+                {
+                textRect.iTl.iX += 
+                    AknLayoutScalable_Avkon::list_single_graphic_pane_t1( 
                         0 ).LayoutLine().il;
+                }            
             TAknLayoutRect layoutRect;
             layoutRect.LayoutRect( aItemRect, 
                 AknLayoutScalable_Avkon::list_single_graphic_pane_g1( 0 ) );
--- a/uifw/ganes/src/HgScroller.cpp	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/ganes/src/HgScroller.cpp	Wed Jun 09 09:58:37 2010 +0300
@@ -372,7 +372,7 @@
     iCurrentRow(-1),
     iSelectedIndex(KErrNotFound),
     iScrollBarType( EHgScrollerScrollBar ),
-    iFirstTime(ETrue),
+    iResetViewPosition(ETrue),
     iOldWinPos(KErrNotFound)
     {
     // No implementation required
@@ -423,15 +423,21 @@
     // The world is set to be at least the size of the view.
     TSize worldSize = TotalSize();
     
-    if( !iLandscapeScrolling && (worldSize.iHeight < iHeight) )
+    if( !iLandscapeScrolling && (worldSize.iHeight <= iHeight) )
+        {
         worldSize.iHeight = iHeight;
+        iResetViewPosition = ETrue;
+        }
     
-    if( iLandscapeScrolling && (worldSize.iWidth < iWidth) )
+    if( iLandscapeScrolling && (worldSize.iWidth <= iWidth) )
+        {
         worldSize.iWidth = iWidth;
+        iResetViewPosition = ETrue;
+        }
 
     iPhysics->InitPhysicsL( worldSize, 
-            TSize(iWidth, iHeight), 
-            iLandscapeScrolling);
+                            TSize(iWidth, iHeight), 
+                            iLandscapeScrolling);
     }
 
 // -----------------------------------------------------------------------------
@@ -516,10 +522,10 @@
         iPopupDrawer->Init( Rect(), iPopupFont );
         }
     
-    if(iFirstTime)
+    if(iResetViewPosition)
         {
         iViewPosition = TPoint(iWidth/2, iHeight/2);
-        iFirstTime = EFalse;
+        iResetViewPosition = EFalse;
         }
     
     HandleViewPositionChanged();
@@ -607,7 +613,6 @@
                 iDetector->PointerEventL( aEvent );
             
             HandleUpEventL( aEvent );
-            iPointerDown = EFalse;
             }
         }
     }
@@ -777,15 +782,17 @@
         if(iLandscapeScrolling && AknLayoutUtils::LayoutMirrored())
             drag = -drag;
         iPhysics->StartPhysics(drag, iStartTime);
+        iPointerDown = EFalse;
         }
     else
         {
-        HandleSelectionL();
         MTouchFeedback* feedback = MTouchFeedback::Instance();
         if ( feedback && iSelectedIndex != KErrNotFound )
             {
             feedback->InstantFeedback( this, ETouchFeedbackList, ETouchFeedbackVibra, aEvent );
             }
+
+        HandleSelectionL();
         }
     }
 
@@ -804,6 +811,8 @@
             // this is not usually the case since interval is 50ms but just to be sure.
             SetHighlightL();
             }
+
+        iPointerDown = EFalse;
         
         // selection needs to be valid.
         if( iSelectedIndex >= 0 && iSelectedIndex < iItems.Count() )
@@ -831,6 +840,10 @@
                 }
             }
         }
+    else
+        {
+        iPointerDown = EFalse;
+        }
     }
 
 // -----------------------------------------------------------------------------
@@ -1180,21 +1193,21 @@
             {
             if( iSelectedIndex != KErrNotFound && HasHighlight() )
                 {
+                iShowHighlight = EFalse;
+                iDrawUtils->EnableMarquee(HasHighlight());
                 if( iSelectionObserver )
                     TRAP_IGNORE( iSelectionObserver->HandleOpenL( iSelectedIndex ); )
-                iShowHighlight = EFalse;
-                iDrawUtils->EnableMarquee(HasHighlight());
                 return EKeyWasConsumed;
                 }
             else if( iItemCount )
                 {
                 iSelectedIndex = iCurrentRow;
-                if( iSelectionObserver )
-                    TRAP_IGNORE( iSelectionObserver->HandleSelectL( iSelectedIndex ); )
                 FitSelectionToView();
                 iShowHighlight = ETrue;
                 iDrawUtils->EnableMarquee(HasHighlight());
                 DrawDeferred();
+                if( iSelectionObserver )
+                    TRAP_IGNORE( iSelectionObserver->HandleSelectL( iSelectedIndex ); )
                 return EKeyWasConsumed;
                 }
             return EKeyWasNotConsumed;
--- a/uifw/tsrc/public/basic/AknSoundServerStifTest/group/AknSoundServerStifTest_DoxyFile.txt	Tue May 25 12:58:19 2010 +0300
+++ b/uifw/tsrc/public/basic/AknSoundServerStifTest/group/AknSoundServerStifTest_DoxyFile.txt	Wed Jun 09 09:58:37 2010 +0300
@@ -1,3 +1,19 @@
+# 
+# Copyright (c) 2009 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"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+# 
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+# 
+# Contributors:
+# 
+# Description: 
+#
+
 # Doxyfile 1.4.1
 
 #---------------------------------------------------------------------------