Revision: 201019 RCL_3
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 25 May 2010 12:29:32 +0300
branchRCL_3
changeset 50 137ebc85284b
parent 47 7be2816dbabd
child 52 a1e3af341cc7
child 54 1b758917cafc
Revision: 201019 Kit: 2010121
homescreen_plat/hs_renderingplugin_api/inc/xnextrenderingpluginadapter.h
idlehomescreen/data/qhd_tch/root_2001f482/conf/root2001f482.gcfml
idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48b.confml
idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48b.gcfml
idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bmanifest.gcfml
idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bxuikon.gcfml
idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4.confml
idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4.gcfml
idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4manifest.gcfml
idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4xuikon.gcfml
idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5.confml
idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5.gcfml
idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5manifest.gcfml
idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5xuikon.gcfml
idlehomescreen/sapiwrapper/cpswrapper/inc/cpsconst.h
idlehomescreen/sapiwrapper/cpswrapper/inc/cpswrapper.h
idlehomescreen/sapiwrapper/cpswrapper/src/cpswrapper.cpp
idlehomescreen/sapiwrapper/hspswrapper/bwins/hspswrapper.def
idlehomescreen/sapiwrapper/hspswrapper/eabi/hspswrapper.def
idlehomescreen/sapiwrapper/hspswrapper/inc/hspswrapper.h
idlehomescreen/sapiwrapper/hspswrapper/src/hspswrapper.cpp
idlehomescreen/widgetmanager/src/wmmaincontainer.cpp
idlehomescreen/xmluirendering/uiengine/inc/xneditor.h
idlehomescreen/xmluirendering/uiengine/inc/xnpopupcontroladapter.h
idlehomescreen/xmluirendering/uiengine/inc/xnviewcontroladapter.h
idlehomescreen/xmluirendering/uiengine/src/xncontroladapterimpl.cpp
idlehomescreen/xmluirendering/uiengine/src/xneditor.cpp
idlehomescreen/xmluirendering/uiengine/src/xnpopupcontroladapter.cpp
idlehomescreen/xmluirendering/uiengine/src/xnviewadapter.cpp
idlehomescreen/xmluirendering/uiengine/src/xnviewcontroladapter.cpp
idlehomescreen/xmluirendering/uiengine/src/xnviewmanager.cpp
menufw/hierarchynavigator/hnmetadatamodel/src/hnmdvalueimage.cpp
menufw/hierarchynavigator/hnpresentationmodel/inc/hnextbmpiconholder.h
menufw/hierarchynavigator/hnpresentationmodel/inc/hniconholder.h
menufw/hierarchynavigator/hnpresentationmodel/src/hnextbmpiconholder.cpp
menufw/hierarchynavigator/hnpresentationmodel/src/hniconholder.cpp
menufw/menufwui/matrixmenu/src/mmappui.cpp
menufw/menufwui/mmwidgets/inc/mmlistboxitemdrawer.h
menufw/menufwui/mmwidgets/inc/mmlistboxmodel.h
menufw/menufwui/mmwidgets/src/mmgrid.cpp
menufw/menufwui/mmwidgets/src/mmgridcontainer.cpp
menufw/menufwui/mmwidgets/src/mmlistbox.cpp
menufw/menufwui/mmwidgets/src/mmlistboxitemdrawer.cpp
menufw/menufwui/mmwidgets/src/mmwidgetcontainer.cpp
menufw/menusuites/foldersuite/loc/matrixmenudata.loc
taskswitcher/contextengine/tsfswserver/engine/inc/tsfswdatalist.h
taskswitcher/contextengine/tsfswserver/engine/src/tsfswdatalist.cpp
taskswitcher/contextengine/tsfswserver/engine/src/tsfswengine.cpp
taskswitcher/taskswitcherui/taskswitcherapp/inc/tsfastswaparea.h
taskswitcher/taskswitcherui/taskswitcherapp/src/tsappui.cpp
taskswitcher/taskswitcherui/taskswitcherapp/src/tsappview.cpp
taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswaparea.cpp
--- a/homescreen_plat/hs_renderingplugin_api/inc/xnextrenderingpluginadapter.h	Tue May 11 16:02:39 2010 +0300
+++ b/homescreen_plat/hs_renderingplugin_api/inc/xnextrenderingpluginadapter.h	Tue May 25 12:29:32 2010 +0300
@@ -35,9 +35,52 @@
  *  process. Power save mode must be obeyed in order to maximize
  *  the standby times of the device.
  *
- *
  *  @code
- *
+ *  // External rendering plug-in mandatory functions
+ *  T_RenderingPlugin* T_RenderingPlugin::NewL()
+ *      {
+ *      T_RenderingPlugin* self = T_RenderingPlugin::NewLC();
+ *      CleanupStack::Pop( self );
+ *      return self;
+ *      }
+ *  //
+ *  T_RenderingPlugin* T_RenderingPlugin::NewLC()
+ *      {
+ *      T_RenderingPlugin* self = new( ELeave ) T_RenderingPlugin();
+ *      CleanupStack::PushL( self );
+ *      self->ConstructL();
+ *      return self;
+ *      }
+ *  //
+ *  T_RenderingPlugin::~T_RenderingPlugin()
+ *      {
+ *      }
+ * //
+ *  T_RenderingPlugin::T_RenderingPlugin()
+ *      {
+ *      // Do nothing
+ *      }
+ *  //
+ *  void T_RenderingPlugin::ConstructL()
+ *      {
+ *      }
+ *  //
+ *  const TImplementationProxy KImplementationTable[] =
+ *     {
+ *  #ifdef __EABI__
+ *      IMPLEMENTATION_PROXY_ENTRY( 0x22334455, T_RenderingPlugin::NewL )
+ *  #else
+ *      { { 0x22334455 }, T_RenderingPlugin::NewL }
+ *  #endif
+ *     };
+ *  //
+ *  EXPORT_C const TImplementationProxy* ImplementationGroupProxy(
+ *      TInt& aTableCount )
+ *      {
+ *      aTableCount = sizeof( KImplementationTable ) / sizeof( TImplementationProxy );
+ *      return KImplementationTable;
+ *      }
+ *  
  *  @endcode
  *
  *  @lib extrenderingplugin.lib
--- a/idlehomescreen/data/qhd_tch/root_2001f482/conf/root2001f482.gcfml	Tue May 11 16:02:39 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/root_2001f482/conf/root2001f482.gcfml	Tue May 25 12:29:32 2010 +0300
@@ -1,5 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+	<tag name="target" value="core"/>
+	<tag name="target" value="rofs2"/>
+	<tag name="target" value="rofs3"/>
+	<tag name="target" value="uda"/>
+	<tag name="target" value="emmc"/>
 <file xmlns="http://www.s60.com/xml/genconfml/1" name="rootconfiguration.xml" target="\private\200159c0\install\root_2001f482\hsps\00\">
 	<setting ref="HSViews/MaxPages"/>
 	<setting ref="HSViews/Views"/>
--- a/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48b.confml	Tue May 11 16:02:39 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48b.confml	Tue May 25 12:29:32 2010 +0300
@@ -1,97 +1,56 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<configuration xmlns="http://www.s60.com/xml/confml/1" name="Homescreen 1" version="1">
-  <feature ref="HomescreenPlugins_1" name="Homescreen 1 widgets">
-    <setting ref="MaxWidgets" name="Max Widgets" type="string">
+<configuration name="Homescreen 1" version="1" xmlns="http://www.s60.com/xml/confml/2" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <feature name="Homescreen 1 widgets" ref="HomescreenPlugins_1">
+    <setting name="Max Widgets" ref="MaxWidgets" type="string">
       <desc>Maximum widget amount in Homescreen 1 page. Customizable</desc>
     </setting>
-    <setting ref="UseEmptyWidgets" readOnly="true" name="Use Empty Widgets" type="boolean">
+    <setting name="Use Empty Widgets" readOnly="true" ref="UseEmptyWidgets" type="boolean">
+      <desc>Not customizable!</desc>
+    </setting>
+    <setting name="Item id for empty widgets definition in view" readOnly="true" ref="ItemIdEmptyWidgets" type="string">
       <desc>Not customizable!</desc>
     </setting>
-    <setting ref="ItemIdEmptyWidgets" readOnly="true" name="Item id for empty widgets definition in view" type="string">
-      <desc>Not customizable!</desc>
-    </setting>
-    <setting ref="PropertyEmptyWidgets" readOnly="true" name="Property name for empty widgets definition in view" type="string">
+    <setting name="Property name for empty widgets definition in view" readOnly="true" ref="PropertyEmptyWidgets" type="string">
       <desc>Not customizable!</desc>
     </setting>
-    <setting ref="BackGroundPath" name="background path" type="string">
+    <setting name="background path" ref="BackGroundPath" type="string">
       <desc>Path of the Wallpaper resource. Customizable. </desc>
     </setting>
-    <setting ref="ItemIdWallpaper" readOnly="true" name="Item id wallpaper" type="string">
+    <setting name="Item id wallpaper" readOnly="true" ref="ItemIdWallpaper" type="string">
       <desc>Not customizable!</desc>
     </setting>
-    <setting ref="WallpaperPropertyName" readOnly="true" name="Wallpaper property name" type="string">
+    <setting name="Wallpaper property name" readOnly="true" ref="WallpaperPropertyName" type="string">
       <desc>Not customizable!</desc>
     </setting>
-    <setting ref="Plugins" name="Widgets" type="sequence">
+    <setting name="Widgets" ref="Plugins" type="sequence">
       <desc>Widgets in the Homescreen 1</desc>
-      <setting ref="Uid" name="Widget" type="selection">
-        <desc>Widget name</desc>
-        <!-- S60 Native Widgets -->
-        <option name="Empty" value="0x2001f47f"/>
-        <option name="PhoneSetup" value="0x20021195"/>
-        <option name="ContactsBar" value="0x20022eba"/>
-        <option name="Shortcut" value="0x2001f483"/>
-        <option name="Shortcut2" value="0x2001f484"/>
-        <option name="Desktop" value="0x20026f4f"/>
-        <option name="Topcontacts" value="0x200184cd"/>
-        <option name="Topcontacts2" value="0x200184c9"/>
-        <option name="ShareOnlineAI3" value="0x20010980"/>
-        <option name="wsfwidget" value="0x20026f45"/>
-        <option name="Organizer" value="0x2001f481"/>
-        <option name="MusicWidget" value="0x10207c18"/>
-        <option name="Fmtx" value="0x20021189"/>
-        <option name="EmailWidget" value="0x2001e272"/>
-        <option name="Profile" value="0x2001cb7c"/>
-        <option name="ServiceWidget" value="0x20021383"/>
-        <option name="SocialMixer" value="0x2002699f"/>
-        <!-- S60WRT on eMMC -->
-        <option name="Accuweather eMMC" value="0x2000dd2a"/>
-        <option name="Ap News eMMC" value="0x2000dd2b"/>
-        <option name="Facebook eMMC" value="0x2000dd2c"/>
-        <option name="Bloomberg eMMC" value="0x2000dd2d"/>
-        <option name="Amazon eMMC" value="0x2000dd2e"/>
-        <option name="Hi5 eMMC" value="0x2000dd2f"/>
-        <option name="Reuters eMMC" value="0x2000dd30"/>
-        <option name="CNN Video eMMC" value="0x2000dd31"/>
-        <option name="E! eMMC" value="0x2000dd32"/>
-        <option name="Movie Teasers eMMC" value="0x2000dd33"/>
-        <option name="Nat Geo eMMC" value="0x2000dd34"/>
-        <option name="Chat eMMC" value="0x2000dd35"/>
-        <option name="Web TV Demo eMMC" value="0x2000dd36"/>
-        <option name="Communities eMMC" value="0x2000dd37"/>
-        <option name="Ovi Files eMMC" value="0x2000dd38"/>
-        <option name="YLE Areena eMMC" value="0x2000dd39"/>
-                
-        <!-- S60WRT on eMMC -->
-        <option name="SSOUI eMMC" value="0x2000de24"/>
-        <option name="Timer.A eMMC" value="0x2000de25"/>
-        
+    <setting name="Widget" ref="Uid" type="selection">
+      <desc>Widget name</desc>
+      <!-- S60 Native Widgets -->
+      <option name="Empty" value="0x2001f47f"/>
+      <option name="PhoneSetup" value="0x20021195"/>
+      <option name="ContactsBar" value="0x20022eba"/>
+      <option name="Shortcut" value="0x2001f483"/>
+      <option name="Shortcut2" value="0x2001f484"/>
+      <option name="Desktop" value="0x20026f4f"/>
+      <option name="Topcontacts" value="0x200184cd"/>
+      <option name="Topcontacts2" value="0x200184c9"/>
+      <option name="ShareOnlineAI3" value="0x20010980"/>
+      <option name="wsfwidget" value="0x20026f45"/>
+      <option name="Organizer" value="0x2001f481"/>
+      <option name="MusicWidget" value="0x10207c18"/>
+      <option name="Fmtx" value="0x20021189"/>
+      <option name="EmailWidget" value="0x2001e272"/>
+      <option name="Profile" value="0x2001cb7c"/>
+      <option name="ServiceWidget" value="0x20021383"/>
+      <option name="SocialMixer" value="0x2002699f"/>
+      <!-- Automatic option listing of WRTs on the release -->	
+      <option map="DFSFeatures/HomescreenWidgets"></option>
       </setting>
-      <setting ref="BundleIdentifier" name="Bundle Identifier" type="selection">
+      <setting name="Bundle Identifier" ref="BundleIdentifier" type="selection">
         <desc>Bundle identifier for the (C)WRT widgets. None for the native widgets</desc>
-        <!-- Bundle names of WRT -->
-        <option name="None" value="0"/>
-        <option name="AccuWeather" value="com.accuweather.widget.touchNG"/>
-        option name="Ap News" value="com.nokia.apnews.widget"/>
-        <option name="Facebook" value="com.nokia.facebook.widget.S605th"/>
-        <option name="Bloomberg" value="com.bloomberg.nokia.mobile"/>
-        <option name="Amazon" value="com.nokia.widget.amazon"/>
-        <option name="Hi5" value="com.nokia.widget.s605.hi5"/>
-        <option name="Reuters" value="com.reuters.widget.news"/>
-        <option name="CNN Video" value="com.cnn"/>
-        <option name="E!" value="com.moderati.eonline"/>
-        <option name="Movie Teasers" value="com.movieteasers"/>
-        <option name="Nat Geo" value="com.natgeo"/>
-        <option name="Chat" value="com.nokia.ChatClient"/>
-        <option name="Web TV Demo" value="com.nokia.forum.webtv.widget"/>
-        <option name="Communities" value="com.nokia.socialmixer.v1"/>
-        <option name="Ovi Files" value="com.nokia.ss.sas.filesql"/> 
-        <option name="YLE Areena" value="com.tieto.yle"/> 
-        <option name="SSOUI" value="ovi.serviceui.SSOUI"/>
-        <option name="Timer.A" value="com.nokia.wgt.TIMER.A"/>
-        
-      </setting>
-      <setting ref="TemplateIdentifier" name="Template Identifier" type="selection">
+      <option name="None / Automatic" value="0" />
+    </setting>
+      <setting name="Template Identifier" ref="TemplateIdentifier" type="selection">
         <desc>Templeate identifier for the (C)WRT widgets. None for the native widgets</desc>
         <option name="None" value="0"/>
         <option name="wideimage" value="0x2001f489"/>
@@ -100,130 +59,130 @@
         <option name="tworows" value="0x2001f488"/>
         <option name="onerow" value="0x2001f480"/>
       </setting>
-      <setting ref="LockingStatus" name="locking Status" type="selection">
+      <setting name="locking Status" ref="LockingStatus" type="selection">
         <desc>Locking status for the widget 1 in Homescreen 1 page</desc>
         <option name="None" value="none"/>
         <option name="Locked" value="locked"/>
       </setting>
-      <setting ref="ShortcutWidget" name="Customize Shortcut widget" type="selection">
+      <setting name="Customize Shortcut widget" ref="ShortcutWidget" type="selection">
         <desc>Customize enabler for desktop/shortcut widget</desc>
         <option name="Not Customize desktop Widget" value="0"/>
         <option name="Customize desktop widget" value="1"/>
       </setting>
-      <setting ref="Customize1Shortcut" name="Customize 1st Shortcut" type="selection">
+      <setting name="Customize 1st Shortcut" ref="Customize1Shortcut" type="selection">
         <desc>Customize 1st item in desktop widget</desc>
         <option name="Not Customize 1st shortcut" value="0"/>
         <option name="Customize 1st shortcut" value="1"/>
       </setting>
-      <setting ref="Shortcut1Type" name="1st Shortcut type" type="selection">
+      <setting name="1st Shortcut type" ref="Shortcut1Type" type="selection">
         <desc>Type of the item: Application, bookmark, or shortcut(param specific item)</desc>
         <option name="Application" value="application"/>
         <option name="Bookmark" value="bookmark"/>
         <option name="Shortcut" value="shortcut"/>
       </setting>
-      <setting ref="Shortcut1Uid" name="1st Shortcut Uid" type="string">
+      <setting name="1st Shortcut Uid" ref="Shortcut1Uid" type="string">
         <desc>Uid for the application, Menu content Uid for the bookmarks and shortcuts.</desc>
       </setting>
-      <setting ref="Shortcut1View" name="1st Shortcut View" type="string">
+      <setting name="1st Shortcut View" ref="Shortcut1View" type="string">
         <desc>url for the bookmark based shortcut. for example http://www.google.com</desc>
       </setting>
-      <setting ref="Shortcut1Param" name="1st Shortcut Param" type="string">
+      <setting name="1st Shortcut Param" ref="Shortcut1Param" type="string">
         <desc>Params for shortcut. For example: messaging:msg</desc>
       </setting>
-      <setting ref="Customize2Shortcut" name="Customize 2nd Shortcut" type="selection">
+      <setting name="Customize 2nd Shortcut" ref="Customize2Shortcut" type="selection">
         <desc>Customize 2nd item in desktop widget</desc>
         <option name="Not Customize 2nd shortcut" value="0"/>
         <option name="Customize 2nd shortcut" value="1"/>
       </setting>
-      <setting ref="Shortcut2Type" name="2nd Shortcut Application" type="selection">
+      <setting name="2nd Shortcut Application" ref="Shortcut2Type" type="selection">
         <desc>Type of the item: Application, bookmark, or shortcut(param specific item)</desc>
         <option name="Application" value="application"/>
         <option name="Bookmark" value="bookmark"/>
         <option name="Shortcut" value="shortcut"/>
       </setting>
-      <setting ref="Shortcut2Uid" name="2nd Shortcut Uid" type="string">
+      <setting name="2nd Shortcut Uid" ref="Shortcut2Uid" type="string">
         <desc>Uid for the application, Menu content Uid for the bookmarks and shortcuts</desc>
       </setting>
-      <setting ref="Shortcut2View" name="2nd Shortcut View" type="string">
+      <setting name="2nd Shortcut View" ref="Shortcut2View" type="string">
         <desc>url for the bookmark based shortcut. for example http://www.google.com</desc>
       </setting>
-      <setting ref="Shortcut2Param" name="2nd Shortcut Param" type="string">
+      <setting name="2nd Shortcut Param" ref="Shortcut2Param" type="string">
         <desc>Params for shortcut. messaging:msg</desc>
       </setting>
-      <setting ref="Customize3Shortcut" name="Customize 3rd Shortcut" type="selection">
+      <setting name="Customize 3rd Shortcut" ref="Customize3Shortcut" type="selection">
         <desc>Customize 3rd item in desktop widget</desc>
         <option name="Not Customize 3rd shortcut" value="0"/>
         <option name="Customize 3rd shortcut" value="1"/>
       </setting>
-      <setting ref="Shortcut3Type" name="3rd Shortcut Application" type="selection">
+      <setting name="3rd Shortcut Application" ref="Shortcut3Type" type="selection">
         <desc>Type of the item: Application, bookmark, or shortcut(param specific item)</desc>
         <option name="Application" value="application"/>
         <option name="Bookmark" value="bookmark"/>
         <option name="Shortcut" value="shortcut"/>
       </setting>
-      <setting ref="Shortcut3Uid" name="3rd Shortcut Uid" type="string">
+      <setting name="3rd Shortcut Uid" ref="Shortcut3Uid" type="string">
         <desc>Uid for the application,Menu content  Uid for the bookmarks and shortcuts.</desc>
       </setting>
-      <setting ref="Shortcut3View" name="3rd Shortcut View" type="string">
+      <setting name="3rd Shortcut View" ref="Shortcut3View" type="string">
         <desc>url for the bookmark based shortcut. for example http://www.google.com</desc>
       </setting>
-      <setting ref="Shortcut3Param" name="3rd Shortcut Param" type="string">
+      <setting name="3rd Shortcut Param" ref="Shortcut3Param" type="string">
         <desc>Params for shortcut. messaging:msg</desc>
       </setting>
-      <setting ref="Customize4Shortcut" name="Customize 4th Shortcut" type="selection">
+      <setting name="Customize 4th Shortcut" ref="Customize4Shortcut" type="selection">
         <desc>Customize 4th item in desktop widget</desc>
-        <option name="Not Customize 4th shortcut" value="0"/>
-        <option name="Customize 4th shortcut" value="1"/>
+        <option name="Not Customize 4th shortcut" value="0" />
+        <option name="Customize 4th shortcut" value="1" />
       </setting>
-      <setting ref="Shortcut4Type" name="4th ShortCut Application" type="selection">
+      <setting name="4th ShortCut Application" ref="Shortcut4Type" type="selection">
         <desc>Type of the item: Application, bookmark, or shortcut(param specific item)</desc>
-        <option name="Application" value="application"/>
-        <option name="Bookmark" value="bookmark"/>
-        <option name="Shortcut" value="shortcut"/>
+        <option name="Application" value="application" />
+        <option name="Bookmark" value="bookmark" />
+        <option name="Shortcut" value="shortcut" />
       </setting>
-      <setting ref="Shortcut4Uid" name="4th Shortcut Uid" type="string">
+      <setting name="4th Shortcut Uid" ref="Shortcut4Uid" type="string">
         <desc>Uid for the application, Menu content  ids for the bookmarks and shortcuts </desc>
       </setting>
-      <setting ref="Shortcut4View" name="4th Shortcut View" type="string">
+      <setting name="4th Shortcut View" ref="Shortcut4View" type="string">
         <desc>url for the bookmark based shortcut. for example http://www.google.com</desc>
       </setting>
-      <setting ref="Shortcut4Param" name="4th Shortcut Param" type="string">
+      <setting name="4th Shortcut Param" ref="Shortcut4Param" type="string">
         <desc>Params for shortcut. messaging:msg</desc>
       </setting>
-      <setting ref="Shortcut1ItemId" readOnly="true" name="Shortcut1 ItemId" type="string">
+      <setting name="Shortcut1 ItemId" readOnly="true" ref="Shortcut1ItemId" type="string">
         <desc>Not customizable!</desc>
       </setting>
-      <setting ref="Shortcut1ItemName" readOnly="true" name="Shortcut1 ItemName" type="string">
+      <setting name="Shortcut1 ItemName" readOnly="true" ref="Shortcut1ItemName" type="string">
         <desc>Not customizable!</desc>
       </setting>
-      <setting ref="Shortcut2ItemId" readOnly="true" name="Shortcut2 ItemId" type="string">
+      <setting name="Shortcut2 ItemId" readOnly="true" ref="Shortcut2ItemId" type="string">
         <desc>Not customizable!</desc>
       </setting>
-      <setting ref="Shortcut2ItemName" readOnly="true" name="Shortcut2 ItemName" type="string">
+      <setting name="Shortcut2 ItemName" readOnly="true" ref="Shortcut2ItemName" type="string">
         <desc>Not customizable!</desc>
       </setting>
-      <setting ref="Shortcut3ItemId" readOnly="true" name="Shortcut3 ItemId" type="string">
+      <setting name="Shortcut3 ItemId" readOnly="true" ref="Shortcut3ItemId" type="string">
         <desc>Not customizable!</desc>
       </setting>
-      <setting ref="Shortcut3ItemName" readOnly="true" name="Shortcut3 ItemName" type="string">
+      <setting name="Shortcut3 ItemName" readOnly="true" ref="Shortcut3ItemName" type="string">
         <desc>Not customizable!</desc>
       </setting>
-      <setting ref="Shortcut4ItemId" readOnly="true" name="Shortcut4 ItemId" type="string">
+      <setting name="Shortcut4 ItemId" readOnly="true" ref="Shortcut4ItemId" type="string">
         <desc>Not customizable!</desc>
       </setting>
-      <setting ref="Shortcut4ItemName" readOnly="true" name="Shortcut4 ItemName" type="string">
+      <setting name="Shortcut4 ItemName" readOnly="true" ref="Shortcut4ItemName" type="string">
         <desc>Not customizable!</desc>
       </setting>
-      <setting ref="ShortcutPropertyNameType" readOnly="true" name="Shortcut PropertyNameType" type="string">
+      <setting name="Shortcut PropertyNameType" readOnly="true" ref="ShortcutPropertyNameType" type="string">
         <desc>Not customizable!</desc>
       </setting>
-      <setting ref="ShortcutPropertyNameUid" readOnly="true" name="Shortcut PropertyNameUid" type="string">
+      <setting name="Shortcut PropertyNameUid" readOnly="true" ref="ShortcutPropertyNameUid" type="string">
         <desc>Not customizable!</desc>
       </setting>
-      <setting ref="ShortcutPropertyNameView" readOnly="true" name="Shortcut PropertyNameView" type="string">
+      <setting name="Shortcut PropertyNameView" readOnly="true" ref="ShortcutPropertyNameView" type="string">
         <desc>Not customizable!</desc>
       </setting>
-      <setting ref="ShortcutPropertyNameParam" readOnly="true" name="Shortcut PropertyNameParam" type="string">
+      <setting name="Shortcut PropertyNameParam" readOnly="true" ref="ShortcutPropertyNameParam" type="string">
         <desc>Not customizable!</desc>
       </setting>
     </setting>
@@ -236,13 +195,241 @@
       <PropertyEmptyWidgets>use_empty_widget</PropertyEmptyWidgets>
       <ItemIdWallpaper>wallpaper</ItemIdWallpaper>
       <WallpaperPropertyName>path</WallpaperPropertyName>
-      <BackGroundPath></BackGroundPath>
-      <Plugins extensionPolicy="replace"><Uid>0x2001cb7c</Uid><BundleIdentifier>0</BundleIdentifier><TemplateIdentifier>0</TemplateIdentifier><LockingStatus>locked</LockingStatus><ShortcutWidget>0</ShortcutWidget><Customize1Shortcut></Customize1Shortcut><Shortcut1Type></Shortcut1Type><Shortcut1Uid></Shortcut1Uid><Shortcut1View></Shortcut1View><Shortcut1Param></Shortcut1Param><Customize2Shortcut></Customize2Shortcut><Shortcut2Type></Shortcut2Type><Shortcut2Uid></Shortcut2Uid><Shortcut2View></Shortcut2View><Shortcut2Param></Shortcut2Param><Customize3Shortcut></Customize3Shortcut><Shortcut3Type></Shortcut3Type><Shortcut3Uid></Shortcut3Uid><Shortcut3View></Shortcut3View><Shortcut3Param></Shortcut3Param><Customize4Shortcut></Customize4Shortcut><Shortcut4Type></Shortcut4Type><Shortcut4Uid></Shortcut4Uid><Shortcut4View></Shortcut4View><Shortcut4Param></Shortcut4Param><Shortcut1ItemId>first</Shortcut1ItemId><Shortcut1ItemName>Shortcut1</Shortcut1ItemName><Shortcut2ItemId>second</Shortcut2ItemId><Shortcut2ItemName>Shortcut2</Shortcut2ItemName><Shortcut3ItemId>third</Shortcut3ItemId><Shortcut3ItemName>Shortcut3</Shortcut3ItemName><Shortcut4ItemId>fourth</Shortcut4ItemId><Shortcut4ItemName>Shortcut4</Shortcut4ItemName><ShortcutPropertyNameType>type</ShortcutPropertyNameType><ShortcutPropertyNameUid>uid</ShortcutPropertyNameUid><ShortcutPropertyNameView>view</ShortcutPropertyNameView><ShortcutPropertyNameParam>param</ShortcutPropertyNameParam></Plugins>
-      <Plugins><Uid>0x20026f4f</Uid><BundleIdentifier>0</BundleIdentifier><TemplateIdentifier>0</TemplateIdentifier><LockingStatus>none</LockingStatus><ShortcutWidget>0</ShortcutWidget><Customize1Shortcut>0</Customize1Shortcut><Shortcut1Type></Shortcut1Type><Shortcut1Uid></Shortcut1Uid><Shortcut1View></Shortcut1View><Shortcut1Param></Shortcut1Param><Customize2Shortcut></Customize2Shortcut><Shortcut2Type></Shortcut2Type><Shortcut2Uid></Shortcut2Uid><Shortcut2View></Shortcut2View><Shortcut2Param></Shortcut2Param><Customize3Shortcut></Customize3Shortcut><Shortcut3Type></Shortcut3Type><Shortcut3Uid></Shortcut3Uid><Shortcut3View></Shortcut3View><Shortcut3Param></Shortcut3Param><Customize4Shortcut></Customize4Shortcut><Shortcut4Type></Shortcut4Type><Shortcut4Uid></Shortcut4Uid><Shortcut4View></Shortcut4View><Shortcut4Param></Shortcut4Param><Shortcut1ItemId>first</Shortcut1ItemId><Shortcut1ItemName>Shortcut1</Shortcut1ItemName><Shortcut2ItemId>second</Shortcut2ItemId><Shortcut2ItemName>Shortcut2</Shortcut2ItemName><Shortcut3ItemId>third</Shortcut3ItemId><Shortcut3ItemName>Shortcut3</Shortcut3ItemName><Shortcut4ItemId>fourth</Shortcut4ItemId><Shortcut4ItemName>Shortcut4</Shortcut4ItemName><ShortcutPropertyNameType>type</ShortcutPropertyNameType><ShortcutPropertyNameUid>uid</ShortcutPropertyNameUid><ShortcutPropertyNameView>view</ShortcutPropertyNameView><ShortcutPropertyNameParam>param</ShortcutPropertyNameParam></Plugins>
-      <Plugins><Uid>0x10207c18</Uid><BundleIdentifier>0</BundleIdentifier><TemplateIdentifier>0</TemplateIdentifier><LockingStatus>none</LockingStatus><ShortcutWidget>0</ShortcutWidget><Customize1Shortcut>0</Customize1Shortcut><Shortcut1Type></Shortcut1Type><Shortcut1Uid></Shortcut1Uid><Shortcut1View></Shortcut1View><Shortcut1Param></Shortcut1Param><Customize2Shortcut></Customize2Shortcut><Shortcut2Type></Shortcut2Type><Shortcut2Uid></Shortcut2Uid><Shortcut2View></Shortcut2View><Shortcut2Param></Shortcut2Param><Customize3Shortcut></Customize3Shortcut><Shortcut3Type></Shortcut3Type><Shortcut3Uid></Shortcut3Uid><Shortcut3View></Shortcut3View><Shortcut3Param></Shortcut3Param><Customize4Shortcut></Customize4Shortcut><Shortcut4Type></Shortcut4Type><Shortcut4Uid></Shortcut4Uid><Shortcut4View></Shortcut4View><Shortcut4Param></Shortcut4Param><Shortcut1ItemId>first</Shortcut1ItemId><Shortcut1ItemName>Shortcut1</Shortcut1ItemName><Shortcut2ItemId>second</Shortcut2ItemId><Shortcut2ItemName>Shortcut2</Shortcut2ItemName><Shortcut3ItemId>third</Shortcut3ItemId><Shortcut3ItemName>Shortcut3</Shortcut3ItemName><Shortcut4ItemId>fourth</Shortcut4ItemId><Shortcut4ItemName>Shortcut4</Shortcut4ItemName><ShortcutPropertyNameType>type</ShortcutPropertyNameType><ShortcutPropertyNameUid>uid</ShortcutPropertyNameUid><ShortcutPropertyNameView>view</ShortcutPropertyNameView><ShortcutPropertyNameParam>param</ShortcutPropertyNameParam></Plugins>
-      <Plugins><Uid>0x2001f481</Uid><BundleIdentifier>0</BundleIdentifier><TemplateIdentifier>0</TemplateIdentifier><LockingStatus>none</LockingStatus><ShortcutWidget>0</ShortcutWidget><Customize1Shortcut>0</Customize1Shortcut><Shortcut1Type></Shortcut1Type><Shortcut1Uid></Shortcut1Uid><Shortcut1View></Shortcut1View><Shortcut1Param></Shortcut1Param><Customize2Shortcut></Customize2Shortcut><Shortcut2Type></Shortcut2Type><Shortcut2Uid></Shortcut2Uid><Shortcut2View></Shortcut2View><Shortcut2Param></Shortcut2Param><Customize3Shortcut></Customize3Shortcut><Shortcut3Type></Shortcut3Type><Shortcut3Uid></Shortcut3Uid><Shortcut3View></Shortcut3View><Shortcut3Param></Shortcut3Param><Customize4Shortcut></Customize4Shortcut><Shortcut4Type></Shortcut4Type><Shortcut4Uid></Shortcut4Uid><Shortcut4View></Shortcut4View><Shortcut4Param></Shortcut4Param><Shortcut1ItemId>first</Shortcut1ItemId><Shortcut1ItemName>Shortcut1</Shortcut1ItemName><Shortcut2ItemId>second</Shortcut2ItemId><Shortcut2ItemName>Shortcut2</Shortcut2ItemName><Shortcut3ItemId>third</Shortcut3ItemId><Shortcut3ItemName>Shortcut3</Shortcut3ItemName><Shortcut4ItemId>fourth</Shortcut4ItemId><Shortcut4ItemName>Shortcut4</Shortcut4ItemName><ShortcutPropertyNameType>type</ShortcutPropertyNameType><ShortcutPropertyNameUid>uid</ShortcutPropertyNameUid><ShortcutPropertyNameView>view</ShortcutPropertyNameView><ShortcutPropertyNameParam>param</ShortcutPropertyNameParam></Plugins>
-      <Plugins><Uid>0x2001f47f</Uid><BundleIdentifier>0</BundleIdentifier><TemplateIdentifier>0</TemplateIdentifier><LockingStatus>none</LockingStatus><ShortcutWidget>0</ShortcutWidget><Customize1Shortcut>0</Customize1Shortcut><Shortcut1Type></Shortcut1Type><Shortcut1Uid></Shortcut1Uid><Shortcut1View></Shortcut1View><Shortcut1Param></Shortcut1Param><Customize2Shortcut></Customize2Shortcut><Shortcut2Type></Shortcut2Type><Shortcut2Uid></Shortcut2Uid><Shortcut2View></Shortcut2View><Shortcut2Param></Shortcut2Param><Customize3Shortcut></Customize3Shortcut><Shortcut3Type></Shortcut3Type><Shortcut3Uid></Shortcut3Uid><Shortcut3View></Shortcut3View><Shortcut3Param></Shortcut3Param><Customize4Shortcut></Customize4Shortcut><Shortcut4Type></Shortcut4Type><Shortcut4Uid></Shortcut4Uid><Shortcut4View></Shortcut4View><Shortcut4Param></Shortcut4Param><Shortcut1ItemId>first</Shortcut1ItemId><Shortcut1ItemName>Shortcut1</Shortcut1ItemName><Shortcut2ItemId>second</Shortcut2ItemId><Shortcut2ItemName>Shortcut2</Shortcut2ItemName><Shortcut3ItemId>third</Shortcut3ItemId><Shortcut3ItemName>Shortcut3</Shortcut3ItemName><Shortcut4ItemId>fourth</Shortcut4ItemId><Shortcut4ItemName>Shortcut4</Shortcut4ItemName><ShortcutPropertyNameType>type</ShortcutPropertyNameType><ShortcutPropertyNameUid>uid</ShortcutPropertyNameUid><ShortcutPropertyNameView>view</ShortcutPropertyNameView><ShortcutPropertyNameParam>param</ShortcutPropertyNameParam></Plugins>
-      <Plugins><Uid>0x2001f47f</Uid><BundleIdentifier>0</BundleIdentifier><TemplateIdentifier>0</TemplateIdentifier><LockingStatus>none</LockingStatus><ShortcutWidget>0</ShortcutWidget><Customize1Shortcut>0</Customize1Shortcut><Shortcut1Type></Shortcut1Type><Shortcut1Uid></Shortcut1Uid><Shortcut1View></Shortcut1View><Shortcut1Param></Shortcut1Param><Customize2Shortcut></Customize2Shortcut><Shortcut2Type></Shortcut2Type><Shortcut2Uid></Shortcut2Uid><Shortcut2View></Shortcut2View><Shortcut2Param></Shortcut2Param><Customize3Shortcut></Customize3Shortcut><Shortcut3Type></Shortcut3Type><Shortcut3Uid></Shortcut3Uid><Shortcut3View></Shortcut3View><Shortcut3Param></Shortcut3Param><Customize4Shortcut></Customize4Shortcut><Shortcut4Type></Shortcut4Type><Shortcut4Uid></Shortcut4Uid><Shortcut4View></Shortcut4View><Shortcut4Param></Shortcut4Param><Shortcut1ItemId>first</Shortcut1ItemId><Shortcut1ItemName>Shortcut1</Shortcut1ItemName><Shortcut2ItemId>second</Shortcut2ItemId><Shortcut2ItemName>Shortcut2</Shortcut2ItemName><Shortcut3ItemId>third</Shortcut3ItemId><Shortcut3ItemName>Shortcut3</Shortcut3ItemName><Shortcut4ItemId>fourth</Shortcut4ItemId><Shortcut4ItemName>Shortcut4</Shortcut4ItemName><ShortcutPropertyNameType>type</ShortcutPropertyNameType><ShortcutPropertyNameUid>uid</ShortcutPropertyNameUid><ShortcutPropertyNameView>view</ShortcutPropertyNameView><ShortcutPropertyNameParam>param</ShortcutPropertyNameParam></Plugins>
+      <BackGroundPath />
+      <Plugins extensionPolicy="replace">
+        <Uid>0x2001cb7c</Uid>
+        <BundleIdentifier>0</BundleIdentifier>
+        <TemplateIdentifier>0</TemplateIdentifier>
+        <LockingStatus>locked</LockingStatus>
+        <ShortcutWidget>0</ShortcutWidget>
+        <Customize1Shortcut />
+        <Shortcut1Type />
+        <Shortcut1Uid />
+        <Shortcut1View />
+        <Shortcut1Param />
+        <Customize2Shortcut />
+        <Shortcut2Type />
+        <Shortcut2Uid />
+        <Shortcut2View />
+        <Shortcut2Param />
+        <Customize3Shortcut />
+        <Shortcut3Type />
+        <Shortcut3Uid />
+        <Shortcut3View />
+        <Shortcut3Param />
+        <Customize4Shortcut />
+        <Shortcut4Type />
+        <Shortcut4Uid />
+        <Shortcut4View />
+        <Shortcut4Param />
+        <Shortcut1ItemId>first</Shortcut1ItemId>
+        <Shortcut1ItemName>Shortcut1</Shortcut1ItemName>
+        <Shortcut2ItemId>second</Shortcut2ItemId>
+        <Shortcut2ItemName>Shortcut2</Shortcut2ItemName>
+        <Shortcut3ItemId>third</Shortcut3ItemId>
+        <Shortcut3ItemName>Shortcut3</Shortcut3ItemName>
+        <Shortcut4ItemId>fourth</Shortcut4ItemId>
+        <Shortcut4ItemName>Shortcut4</Shortcut4ItemName>
+        <ShortcutPropertyNameType>type</ShortcutPropertyNameType>
+        <ShortcutPropertyNameUid>uid</ShortcutPropertyNameUid>
+        <ShortcutPropertyNameView>view</ShortcutPropertyNameView>
+        <ShortcutPropertyNameParam>param</ShortcutPropertyNameParam>
+      </Plugins>
+      <Plugins>
+        <Uid>0x20026f4f</Uid>
+        <BundleIdentifier>0</BundleIdentifier>
+        <TemplateIdentifier>0</TemplateIdentifier>
+        <LockingStatus>none</LockingStatus>
+        <ShortcutWidget>0</ShortcutWidget>
+        <Customize1Shortcut>0</Customize1Shortcut>
+        <Shortcut1Type />
+        <Shortcut1Uid />
+        <Shortcut1View />
+        <Shortcut1Param />
+        <Customize2Shortcut />
+        <Shortcut2Type />
+        <Shortcut2Uid />
+        <Shortcut2View />
+        <Shortcut2Param />
+        <Customize3Shortcut />
+        <Shortcut3Type />
+        <Shortcut3Uid />
+        <Shortcut3View />
+        <Shortcut3Param />
+        <Customize4Shortcut />
+        <Shortcut4Type />
+        <Shortcut4Uid />
+        <Shortcut4View />
+        <Shortcut4Param />
+        <Shortcut1ItemId>first</Shortcut1ItemId>
+        <Shortcut1ItemName>Shortcut1</Shortcut1ItemName>
+        <Shortcut2ItemId>second</Shortcut2ItemId>
+        <Shortcut2ItemName>Shortcut2</Shortcut2ItemName>
+        <Shortcut3ItemId>third</Shortcut3ItemId>
+        <Shortcut3ItemName>Shortcut3</Shortcut3ItemName>
+        <Shortcut4ItemId>fourth</Shortcut4ItemId>
+        <Shortcut4ItemName>Shortcut4</Shortcut4ItemName>
+        <ShortcutPropertyNameType>type</ShortcutPropertyNameType>
+        <ShortcutPropertyNameUid>uid</ShortcutPropertyNameUid>
+        <ShortcutPropertyNameView>view</ShortcutPropertyNameView>
+        <ShortcutPropertyNameParam>param</ShortcutPropertyNameParam>
+      </Plugins>
+      <Plugins>
+        <Uid>0x10207c18</Uid>
+        <BundleIdentifier>0</BundleIdentifier>
+        <TemplateIdentifier>0</TemplateIdentifier>
+        <LockingStatus>none</LockingStatus>
+        <ShortcutWidget>0</ShortcutWidget>
+        <Customize1Shortcut>0</Customize1Shortcut>
+        <Shortcut1Type />
+        <Shortcut1Uid />
+        <Shortcut1View />
+        <Shortcut1Param />
+        <Customize2Shortcut />
+        <Shortcut2Type />
+        <Shortcut2Uid />
+        <Shortcut2View />
+        <Shortcut2Param />
+        <Customize3Shortcut />
+        <Shortcut3Type />
+        <Shortcut3Uid />
+        <Shortcut3View />
+        <Shortcut3Param />
+        <Customize4Shortcut />
+        <Shortcut4Type />
+        <Shortcut4Uid />
+        <Shortcut4View />
+        <Shortcut4Param />
+        <Shortcut1ItemId>first</Shortcut1ItemId>
+        <Shortcut1ItemName>Shortcut1</Shortcut1ItemName>
+        <Shortcut2ItemId>second</Shortcut2ItemId>
+        <Shortcut2ItemName>Shortcut2</Shortcut2ItemName>
+        <Shortcut3ItemId>third</Shortcut3ItemId>
+        <Shortcut3ItemName>Shortcut3</Shortcut3ItemName>
+        <Shortcut4ItemId>fourth</Shortcut4ItemId>
+        <Shortcut4ItemName>Shortcut4</Shortcut4ItemName>
+        <ShortcutPropertyNameType>type</ShortcutPropertyNameType>
+        <ShortcutPropertyNameUid>uid</ShortcutPropertyNameUid>
+        <ShortcutPropertyNameView>view</ShortcutPropertyNameView>
+        <ShortcutPropertyNameParam>param</ShortcutPropertyNameParam>
+      </Plugins>
+      <Plugins>
+        <Uid>0x2001f481</Uid>
+        <BundleIdentifier>0</BundleIdentifier>
+        <TemplateIdentifier>0</TemplateIdentifier>
+        <LockingStatus>none</LockingStatus>
+        <ShortcutWidget>0</ShortcutWidget>
+        <Customize1Shortcut>0</Customize1Shortcut>
+        <Shortcut1Type />
+        <Shortcut1Uid />
+        <Shortcut1View />
+        <Shortcut1Param />
+        <Customize2Shortcut />
+        <Shortcut2Type />
+        <Shortcut2Uid />
+        <Shortcut2View />
+        <Shortcut2Param />
+        <Customize3Shortcut />
+        <Shortcut3Type />
+        <Shortcut3Uid />
+        <Shortcut3View />
+        <Shortcut3Param />
+        <Customize4Shortcut />
+        <Shortcut4Type />
+        <Shortcut4Uid />
+        <Shortcut4View />
+        <Shortcut4Param />
+        <Shortcut1ItemId>first</Shortcut1ItemId>
+        <Shortcut1ItemName>Shortcut1</Shortcut1ItemName>
+        <Shortcut2ItemId>second</Shortcut2ItemId>
+        <Shortcut2ItemName>Shortcut2</Shortcut2ItemName>
+        <Shortcut3ItemId>third</Shortcut3ItemId>
+        <Shortcut3ItemName>Shortcut3</Shortcut3ItemName>
+        <Shortcut4ItemId>fourth</Shortcut4ItemId>
+        <Shortcut4ItemName>Shortcut4</Shortcut4ItemName>
+        <ShortcutPropertyNameType>type</ShortcutPropertyNameType>
+        <ShortcutPropertyNameUid>uid</ShortcutPropertyNameUid>
+        <ShortcutPropertyNameView>view</ShortcutPropertyNameView>
+        <ShortcutPropertyNameParam>param</ShortcutPropertyNameParam>
+      </Plugins>
+      <Plugins>
+        <Uid>0x2001f47f</Uid>
+        <BundleIdentifier>0</BundleIdentifier>
+        <TemplateIdentifier>0</TemplateIdentifier>
+        <LockingStatus>none</LockingStatus>
+        <ShortcutWidget>0</ShortcutWidget>
+        <Customize1Shortcut>0</Customize1Shortcut>
+        <Shortcut1Type />
+        <Shortcut1Uid />
+        <Shortcut1View />
+        <Shortcut1Param />
+        <Customize2Shortcut />
+        <Shortcut2Type />
+        <Shortcut2Uid />
+        <Shortcut2View />
+        <Shortcut2Param />
+        <Customize3Shortcut />
+        <Shortcut3Type />
+        <Shortcut3Uid />
+        <Shortcut3View />
+        <Shortcut3Param />
+        <Customize4Shortcut />
+        <Shortcut4Type />
+        <Shortcut4Uid />
+        <Shortcut4View />
+        <Shortcut4Param />
+        <Shortcut1ItemId>first</Shortcut1ItemId>
+        <Shortcut1ItemName>Shortcut1</Shortcut1ItemName>
+        <Shortcut2ItemId>second</Shortcut2ItemId>
+        <Shortcut2ItemName>Shortcut2</Shortcut2ItemName>
+        <Shortcut3ItemId>third</Shortcut3ItemId>
+        <Shortcut3ItemName>Shortcut3</Shortcut3ItemName>
+        <Shortcut4ItemId>fourth</Shortcut4ItemId>
+        <Shortcut4ItemName>Shortcut4</Shortcut4ItemName>
+        <ShortcutPropertyNameType>type</ShortcutPropertyNameType>
+        <ShortcutPropertyNameUid>uid</ShortcutPropertyNameUid>
+        <ShortcutPropertyNameView>view</ShortcutPropertyNameView>
+        <ShortcutPropertyNameParam>param</ShortcutPropertyNameParam>
+      </Plugins>
+     <Plugins>
+        <Uid>0x2001f47f</Uid>
+        <BundleIdentifier>0</BundleIdentifier>
+        <TemplateIdentifier>0</TemplateIdentifier>
+        <LockingStatus>none</LockingStatus>
+        <ShortcutWidget>0</ShortcutWidget>
+        <Customize1Shortcut>0</Customize1Shortcut>
+        <Shortcut1Type />
+        <Shortcut1Uid />
+        <Shortcut1View />
+        <Shortcut1Param />
+        <Customize2Shortcut />
+        <Shortcut2Type />
+        <Shortcut2Uid />
+        <Shortcut2View />
+        <Shortcut2Param />
+        <Customize3Shortcut />
+        <Shortcut3Type />
+        <Shortcut3Uid />
+        <Shortcut3View />
+        <Shortcut3Param />
+        <Customize4Shortcut />
+        <Shortcut4Type />
+        <Shortcut4Uid />
+        <Shortcut4View />
+        <Shortcut4Param />
+        <Shortcut1ItemId>first</Shortcut1ItemId>
+        <Shortcut1ItemName>Shortcut1</Shortcut1ItemName>
+        <Shortcut2ItemId>second</Shortcut2ItemId>
+        <Shortcut2ItemName>Shortcut2</Shortcut2ItemName>
+        <Shortcut3ItemId>third</Shortcut3ItemId>
+        <Shortcut3ItemName>Shortcut3</Shortcut3ItemName>
+        <Shortcut4ItemId>fourth</Shortcut4ItemId>
+        <Shortcut4ItemName>Shortcut4</Shortcut4ItemName>
+        <ShortcutPropertyNameType>type</ShortcutPropertyNameType>
+        <ShortcutPropertyNameUid>uid</ShortcutPropertyNameUid>
+        <ShortcutPropertyNameView>view</ShortcutPropertyNameView>
+        <ShortcutPropertyNameParam>param</ShortcutPropertyNameParam>
+      </Plugins>
     </HomescreenPlugins_1>
   </data>
 </configuration>
\ No newline at end of file
--- a/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48b.gcfml	Tue May 11 16:02:39 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48b.gcfml	Tue May 25 12:29:32 2010 +0300
@@ -1,5 +1,38 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+	<tag name="target" value="core"/>
+	<tag name="target" value="rofs2"/>
+	<tag name="target" value="rofs3"/>
+	<tag name="target" value="uda"/>
+	<tag name="target" value="emmc"/>
+<phase name='post'/> <!-- post phase for making sure that data for all homescreen widgets is available in sequence -->
+
+  <ruleml xmlns="http://www.s60.com/xml/ruleml/3">
+    <rule>True configures ${HomescreenPlugins_1.Plugins} = {% mapBundleIds(@{DFSFeatures.HomescreenWidgets}, @{HomescreenPlugins_1.Plugins}) %}</rule>
+<eval_globals>      
+import logging
+#logger = logging.getLogger('cone.homescreen3')
+def mapBundleIds(dfswidgets, plugins):
+  # create a uid-bundle dictionary
+  dict = {}
+  #logger.debug('ws %s' % dfswidgets.value)
+  for widget in dfswidgets.value:
+    dict[widget[dfswidgets._order.index('Uid')].lower()] = widget[dfswidgets._order.index('Bundle')]
+  
+  #logger.debug('d %s' % dict)
+  new_plugins = []    
+  for plugin in plugins.value:
+    # update bundle only if it's 0 or None
+    if plugin[plugins._order.index('Uid')] is not None and (plugin[plugins._order.index('BundleIdentifier')] == '0' or plugin[plugins._order.index('BundleIdentifier')] == None):
+      bundle = dict.get(plugin[plugins._order.index('Uid')].lower())
+      if bundle is not None:
+        #logger.debug('Bundle id updated %s' % bundle)
+        plugin[plugins._order.index('BundleIdentifier')] = bundle
+    new_plugins.append(plugin)
+  
+  return new_plugins
+</eval_globals>
+  </ruleml>
 <file xmlns="http://www.s60.com/xml/genconfml/1" name="viewconfiguration.xml" target="\private\200159c0\install\view_2001f48b\hsps\00\">
 	<setting ref="HomescreenPlugins_1/MaxWidgets"/>
 	<setting ref="HomescreenPlugins_1/UseEmptyWidgets"/>
--- a/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bmanifest.gcfml	Tue May 11 16:02:39 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bmanifest.gcfml	Tue May 25 12:29:32 2010 +0300
@@ -1,5 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+	<tag name="target" value="core"/>
+	<tag name="target" value="rofs2"/>
+	<tag name="target" value="rofs3"/>
+	<tag name="target" value="uda"/>
+	<tag name="target" value="emmc"/>
 <file xmlns="http://www.s60.com/xml/genconfml/1" name="manifest.dat" target="\private\200159c0\install\view_2001f48b\hsps\00\">
 	<setting ref="Homescreen1manifest/PackageVersion"/>
 	<setting ref="Homescreen1manifest/DeviceFamily"/>
--- a/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bxuikon.gcfml	Tue May 11 16:02:39 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bxuikon.gcfml	Tue May 25 12:29:32 2010 +0300
@@ -1,5 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+	<tag name="target" value="core"/>
+	<tag name="target" value="rofs2"/>
+	<tag name="target" value="rofs3"/>
+	<tag name="target" value="uda"/>
+	<tag name="target" value="emmc"/>
 <file xmlns="http://www.s60.com/xml/genconfml/1" name="empty.foo" target="\private\200159c0\install\view_2001f48b\xuikon\">
 	<setting ref="Homescreen1XuikonFolder/FolderCFG"/>
 		<xsl:stylesheet version="1.0" 
Binary file idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4.confml has changed
--- a/idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4.gcfml	Tue May 11 16:02:39 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4.gcfml	Tue May 25 12:29:32 2010 +0300
@@ -1,5 +1,38 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+	<tag name="target" value="core"/>
+	<tag name="target" value="rofs2"/>
+	<tag name="target" value="rofs3"/>
+	<tag name="target" value="uda"/>
+	<tag name="target" value="emmc"/>
+<phase name='post'/> <!-- post phase for making sure that data for all homescreen widgets is available in sequence -->
+
+  <ruleml xmlns="http://www.s60.com/xml/ruleml/3">
+    <rule>True configures ${HomescreenPlugins_2.Plugins} = {% mapBundleIds(@{DFSFeatures.HomescreenWidgets}, @{HomescreenPlugins_2.Plugins}) %}</rule>
+<eval_globals>      
+import logging
+#logger = logging.getLogger('cone.homescreen3')
+def mapBundleIds(dfswidgets, plugins):
+  # create a uid-bundle dictionary
+  dict = {}
+  #logger.debug('ws %s' % dfswidgets.value)
+  for widget in dfswidgets.value:
+    dict[widget[dfswidgets._order.index('Uid')].lower()] = widget[dfswidgets._order.index('Bundle')]
+  
+  #logger.debug('d %s' % dict)
+  new_plugins = []    
+  for plugin in plugins.value:
+    # update bundle only if it's 0 or None
+    if plugin[plugins._order.index('Uid')] is not None and (plugin[plugins._order.index('BundleIdentifier')] == '0' or plugin[plugins._order.index('BundleIdentifier')] == None):
+      bundle = dict.get(plugin[plugins._order.index('Uid')].lower())
+      if bundle is not None:
+        #logger.debug('Bundle id updated %s' % bundle)
+        plugin[plugins._order.index('BundleIdentifier')] = bundle
+    new_plugins.append(plugin)
+  
+  return new_plugins
+</eval_globals>
+  </ruleml>
 <file xmlns="http://www.s60.com/xml/genconfml/1" name="viewconfiguration.xml" target="\private\200159c0\install\view_200286e4\hsps\00\">
 	<setting ref="HomescreenPlugins_2/MaxWidgets"/>
 	<setting ref="HomescreenPlugins_2/UseEmptyWidgets"/>
--- a/idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4manifest.gcfml	Tue May 11 16:02:39 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4manifest.gcfml	Tue May 25 12:29:32 2010 +0300
@@ -1,5 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+	<tag name="target" value="core"/>
+	<tag name="target" value="rofs2"/>
+	<tag name="target" value="rofs3"/>
+	<tag name="target" value="uda"/>
+	<tag name="target" value="emmc"/>
 <file xmlns="http://www.s60.com/xml/genconfml/1" name="manifest.dat" target="\private\200159c0\install\view_200286e4\hsps\00\">
 	<setting ref="Homescreen2manifest/PackageVersion"/>
 	<setting ref="Homescreen2manifest/DeviceFamily"/>
--- a/idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4xuikon.gcfml	Tue May 11 16:02:39 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4xuikon.gcfml	Tue May 25 12:29:32 2010 +0300
@@ -1,5 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+	<tag name="target" value="core"/>
+	<tag name="target" value="rofs2"/>
+	<tag name="target" value="rofs3"/>
+	<tag name="target" value="uda"/>
+	<tag name="target" value="emmc"/>
 <file xmlns="http://www.s60.com/xml/genconfml/1" name="empty.foo" target="\private\200159c0\install\view_200286e4\xuikon\">
 	<setting ref="Homescreen2XuikonFolder/FolderCFG"/>
 		<xsl:stylesheet version="1.0" 
Binary file idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5.confml has changed
--- a/idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5.gcfml	Tue May 11 16:02:39 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5.gcfml	Tue May 25 12:29:32 2010 +0300
@@ -1,5 +1,38 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+	<tag name="target" value="core"/>
+	<tag name="target" value="rofs2"/>
+	<tag name="target" value="rofs3"/>
+	<tag name="target" value="uda"/>
+	<tag name="target" value="emmc"/>
+<phase name='post'/> <!-- post phase for making sure that data for all homescreen widgets is available in sequence -->
+
+  <ruleml xmlns="http://www.s60.com/xml/ruleml/3">
+    <rule>True configures ${HomescreenPlugins_3.Plugins} = {% mapBundleIds(@{DFSFeatures.HomescreenWidgets}, @{HomescreenPlugins_3.Plugins}) %}</rule>
+<eval_globals>      
+import logging
+#logger = logging.getLogger('cone.homescreen3')
+def mapBundleIds(dfswidgets, plugins):
+  # create a uid-bundle dictionary
+  dict = {}
+  #logger.debug('ws %s' % dfswidgets.value)
+  for widget in dfswidgets.value:
+    dict[widget[dfswidgets._order.index('Uid')].lower()] = widget[dfswidgets._order.index('Bundle')]
+  
+  #logger.debug('d %s' % dict)
+  new_plugins = []    
+  for plugin in plugins.value:
+    # update bundle only if it's 0 or None
+    if plugin[plugins._order.index('Uid')] is not None and (plugin[plugins._order.index('BundleIdentifier')] == '0' or plugin[plugins._order.index('BundleIdentifier')] == None):
+      bundle = dict.get(plugin[plugins._order.index('Uid')].lower())
+      if bundle is not None:
+        #logger.debug('Bundle id updated %s' % bundle)
+        plugin[plugins._order.index('BundleIdentifier')] = bundle
+    new_plugins.append(plugin)
+  
+  return new_plugins
+</eval_globals>
+  </ruleml>
 <file xmlns="http://www.s60.com/xml/genconfml/1" name="viewconfiguration.xml" target="\private\200159c0\install\view_200286e5\hsps\00\">
 	<setting ref="HomescreenPlugins_3/MaxWidgets"/>
 	<setting ref="HomescreenPlugins_3/UseEmptyWidgets"/>
--- a/idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5manifest.gcfml	Tue May 11 16:02:39 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5manifest.gcfml	Tue May 25 12:29:32 2010 +0300
@@ -1,5 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+	<tag name="target" value="core"/>
+	<tag name="target" value="rofs2"/>
+	<tag name="target" value="rofs3"/>
+	<tag name="target" value="uda"/>
+	<tag name="target" value="emmc"/>
 <file xmlns="http://www.s60.com/xml/genconfml/1" name="manifest.dat" target="\private\200159c0\install\view_200286e5\hsps\00\">
 	<setting ref="Homescreen3manifest/PackageVersion"/>
 	<setting ref="Homescreen3manifest/DeviceFamily"/>
--- a/idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5xuikon.gcfml	Tue May 11 16:02:39 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5xuikon.gcfml	Tue May 25 12:29:32 2010 +0300
@@ -1,5 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <container xmlns="http://www.symbianfoundation.org/xml/implml/1">
+	<tag name="target" value="core"/>
+	<tag name="target" value="rofs2"/>
+	<tag name="target" value="rofs3"/>
+	<tag name="target" value="uda"/>
+	<tag name="target" value="emmc"/>
 <file xmlns="http://www.s60.com/xml/genconfml/1" name="empty.foo" target="\private\200159c0\install\view_200286e5\xuikon\">
 	<setting ref="Homescreen3XuikonFolder/FolderCFG"/>
 		<xsl:stylesheet version="1.0" 
--- a/idlehomescreen/sapiwrapper/cpswrapper/inc/cpsconst.h	Tue May 11 16:02:39 2010 +0300
+++ b/idlehomescreen/sapiwrapper/cpswrapper/inc/cpsconst.h	Tue May 25 12:29:32 2010 +0300
@@ -38,6 +38,9 @@
 	_LIT( KDelete16, "delete" );
 	_LIT8( KAdd, "add" );
 	_LIT( KAdd16, "add" );
+	_LIT( KUpdate16, "update" );
+	_LIT8( KUpdate, "update" );
+	_LIT8( KAddUpdateDelete , "add:update:delete" );
 	_LIT8( KRequestNotification, "RequestNotification" );
 	_LIT8( KType, "type" );
 	_LIT8( KGetList, "GetList" );
--- a/idlehomescreen/sapiwrapper/cpswrapper/inc/cpswrapper.h	Tue May 11 16:02:39 2010 +0300
+++ b/idlehomescreen/sapiwrapper/cpswrapper/inc/cpswrapper.h	Tue May 25 12:29:32 2010 +0300
@@ -61,6 +61,11 @@
          * Callback methot for registered widget notify.
          */
         virtual void NotifyWidgetRegisteredL() = 0;
+        
+        /**
+         * Callback method for updated widget notify.
+         */
+        virtual void NotifyWidgetUpdatedL() = 0;
         };
 
     /**
--- a/idlehomescreen/sapiwrapper/cpswrapper/src/cpswrapper.cpp	Tue May 11 16:02:39 2010 +0300
+++ b/idlehomescreen/sapiwrapper/cpswrapper/src/cpswrapper.cpp	Tue May 25 12:29:32 2010 +0300
@@ -386,17 +386,11 @@
     //
     void CCpsWrapper::StartListeningPublisherRegistryL()
         {
-        // Start Listening all the HS template using widgets unregistration
-        RequestForNotificationL( KAll, KHSTemplate, KAll, KDelete, KPublisher16 );
-                 
-        // Start Listening all the WRT widgets unregistration
-        RequestForNotificationL( KAll, KWRTTemplate, KAll, KDelete, KPublisher16 );
-        
         // Start Listening all the WRT widgets registrations
-        RequestForNotificationL( KAll, KWRTTemplate, KAll, KAdd, KPublisher16 );
+        RequestForNotificationL( KAll, KWRTTemplate, KAll, KAddUpdateDelete, KPublisher16 );
         
         // Start Listening all the HS template widgets registrations
-        RequestForNotificationL( KAll, KHSTemplate, KAll, KAdd, KPublisher16 );
+        RequestForNotificationL( KAll, KHSTemplate, KAll, KAddUpdateDelete , KPublisher16 );
         }
     
     // -----------------------------------------------------------------------
@@ -414,6 +408,10 @@
             {
             iObserver.NotifyWidgetRegisteredL();
             }
+        else if ( aOperation == KUpdate16 )
+            {
+            iObserver.NotifyWidgetUpdatedL();
+            }
     	}
     }
 
--- a/idlehomescreen/sapiwrapper/hspswrapper/bwins/hspswrapper.def	Tue May 11 16:02:39 2010 +0300
+++ b/idlehomescreen/sapiwrapper/hspswrapper/bwins/hspswrapper.def	Tue May 25 12:29:32 2010 +0300
@@ -66,9 +66,9 @@
 	?ItemId@CItemMap@hspswrapper@@QBEABVTDesC8@@XZ @ 65 NONAME ; class TDesC8 const & hspswrapper::CItemMap::ItemId(void) const
 	?GetAppConfigurationL@CHspsWrapper@hspswrapper@@QAEPAVCHspsConfiguration@2@XZ @ 66 NONAME ; class hspswrapper::CHspsConfiguration * hspswrapper::CHspsWrapper::GetAppConfigurationL(void)
 	?NewL@CItemMap@hspswrapper@@SAPAV12@XZ @ 67 NONAME ; class hspswrapper::CItemMap * hspswrapper::CItemMap::NewL(void)
-	?SetPathL@CObjectMap@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 68 NONAME ; class hspswrapper::CObjectMap & hspswrapper::CObjectMap::SetPathL(class TDesC8 const &)
-	?PluginId@CAddPluginResult@hspswrapper@@QBEABVTDesC8@@XZ @ 69 NONAME ; class TDesC8 const & hspswrapper::CAddPluginResult::PluginId(void) const
-	?RestoreRootL@CHspsWrapper@hspswrapper@@QAEHXZ @ 70 NONAME ; int hspswrapper::CHspsWrapper::RestoreRootL(void)
+	?RestoreRomConfL@CHspsWrapper@hspswrapper@@QAEHXZ @ 68 NONAME ; int hspswrapper::CHspsWrapper::RestoreRomConfL(void)
+	?SetPathL@CObjectMap@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 69 NONAME ; class hspswrapper::CObjectMap & hspswrapper::CObjectMap::SetPathL(class TDesC8 const &)
+	?PluginId@CAddPluginResult@hspswrapper@@QBEABVTDesC8@@XZ @ 70 NONAME ; class TDesC8 const & hspswrapper::CAddPluginResult::PluginId(void) const
 	??1CAddPluginResult@hspswrapper@@UAE@XZ @ 71 NONAME ; hspswrapper::CAddPluginResult::~CAddPluginResult(void)
 	?NewLC@CPluginMap@hspswrapper@@SAPAV12@XZ @ 72 NONAME ; class hspswrapper::CPluginMap * hspswrapper::CPluginMap::NewLC(void)
 	?ReplacePluginL@CHspsWrapper@hspswrapper@@QAEHABVTDesC8@@0@Z @ 73 NONAME ; int hspswrapper::CHspsWrapper::ReplacePluginL(class TDesC8 const &, class TDesC8 const &)
@@ -76,8 +76,8 @@
 	?MaxChild@CPluginInfo@hspswrapper@@QBEABJXZ @ 75 NONAME ; long const & hspswrapper::CPluginInfo::MaxChild(void) const
 	?SetLockingStatusL@CPluginMap@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 76 NONAME ; class hspswrapper::CPluginMap & hspswrapper::CPluginMap::SetLockingStatusL(class TDesC8 const &)
 	?ServiceHandler@CHspsWrapper@hspswrapper@@QBEPAVCLiwServiceHandler@@XZ @ 77 NONAME ; class CLiwServiceHandler * hspswrapper::CHspsWrapper::ServiceHandler(void) const
-	?Interface@CPluginInfo@hspswrapper@@QBEABVTDesC8@@XZ @ 78 NONAME ; class TDesC8 const & hspswrapper::CPluginInfo::Interface(void) const
-	?SetActivePluginL@CHspsWrapper@hspswrapper@@QAEHABVTDesC8@@@Z @ 79 NONAME ; int hspswrapper::CHspsWrapper::SetActivePluginL(class TDesC8 const &)
+	?SetActivePluginL@CHspsWrapper@hspswrapper@@QAEHABVTDesC8@@@Z @ 78 NONAME ; int hspswrapper::CHspsWrapper::SetActivePluginL(class TDesC8 const &)
+	?Interface@CPluginInfo@hspswrapper@@QBEABVTDesC8@@XZ @ 79 NONAME ; class TDesC8 const & hspswrapper::CPluginInfo::Interface(void) const
 	?SetDescriptionL@CPluginInfo@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 80 NONAME ; class hspswrapper::CPluginInfo & hspswrapper::CPluginInfo::SetDescriptionL(class TDesC8 const &)
 	?AddPluginL@CHspsWrapper@hspswrapper@@QAEPAVCAddPluginResult@2@ABVTDesC8@@0H@Z @ 81 NONAME ; class hspswrapper::CAddPluginResult * hspswrapper::CHspsWrapper::AddPluginL(class TDesC8 const &, class TDesC8 const &, int)
 	?SetPluginIdL@CAddPluginResult@hspswrapper@@QAEXABVTDesC8@@@Z @ 82 NONAME ; void hspswrapper::CAddPluginResult::SetPluginIdL(class TDesC8 const &)
@@ -85,18 +85,19 @@
 	?SetTagL@CObjectMap@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 84 NONAME ; class hspswrapper::CObjectMap & hspswrapper::CObjectMap::SetTagL(class TDesC8 const &)
 	?NewLC@CPluginInfo@hspswrapper@@SAPAV12@XZ @ 85 NONAME ; class hspswrapper::CPluginInfo * hspswrapper::CPluginInfo::NewLC(void)
 	?SetNameL@CPluginInfo@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 86 NONAME ; class hspswrapper::CPluginInfo & hspswrapper::CPluginInfo::SetNameL(class TDesC8 const &)
-	?SetMediaTypeL@CObjectMap@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 87 NONAME ; class hspswrapper::CObjectMap & hspswrapper::CObjectMap::SetMediaTypeL(class TDesC8 const &)
-	?Tag@CObjectMap@hspswrapper@@QBEABVTDesC8@@XZ @ 88 NONAME ; class TDesC8 const & hspswrapper::CObjectMap::Tag(void) const
-	?SetItemIdL@CItemMap@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 89 NONAME ; class hspswrapper::CItemMap & hspswrapper::CItemMap::SetItemIdL(class TDesC8 const &)
-	?NewLC@CItemMap@hspswrapper@@SAPAV12@XZ @ 90 NONAME ; class hspswrapper::CItemMap * hspswrapper::CItemMap::NewLC(void)
-	?SetLogoIconL@CPluginInfo@hspswrapper@@QAEAAV12@ABVTDesC16@@@Z @ 91 NONAME ; class hspswrapper::CPluginInfo & hspswrapper::CPluginInfo::SetLogoIconL(class TDesC16 const &)
-	?SetInterfaceL@CPluginInfo@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 92 NONAME ; class hspswrapper::CPluginInfo & hspswrapper::CPluginInfo::SetInterfaceL(class TDesC8 const &)
-	?AddPluginMapL@CHspsConfiguration@hspswrapper@@QAEAAV12@PAVCPluginMap@2@@Z @ 93 NONAME ; class hspswrapper::CHspsConfiguration & hspswrapper::CHspsConfiguration::AddPluginMapL(class hspswrapper::CPluginMap *)
-	?RemovePluginL@CHspsWrapper@hspswrapper@@QAEHABVTDesC8@@@Z @ 94 NONAME ; int hspswrapper::CHspsWrapper::RemovePluginL(class TDesC8 const &)
-	?LockingStatus@CPluginMap@hspswrapper@@QBEABVTDesC8@@XZ @ 95 NONAME ; class TDesC8 const & hspswrapper::CPluginMap::LockingStatus(void) const
+	?RestoreViewsL@CHspsWrapper@hspswrapper@@QAEHXZ @ 87 NONAME ; int hspswrapper::CHspsWrapper::RestoreViewsL(void)
+	?SetMediaTypeL@CObjectMap@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 88 NONAME ; class hspswrapper::CObjectMap & hspswrapper::CObjectMap::SetMediaTypeL(class TDesC8 const &)
+	?Tag@CObjectMap@hspswrapper@@QBEABVTDesC8@@XZ @ 89 NONAME ; class TDesC8 const & hspswrapper::CObjectMap::Tag(void) const
+	?SetItemIdL@CItemMap@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 90 NONAME ; class hspswrapper::CItemMap & hspswrapper::CItemMap::SetItemIdL(class TDesC8 const &)
+	?NewLC@CItemMap@hspswrapper@@SAPAV12@XZ @ 91 NONAME ; class hspswrapper::CItemMap * hspswrapper::CItemMap::NewLC(void)
+	?SetLogoIconL@CPluginInfo@hspswrapper@@QAEAAV12@ABVTDesC16@@@Z @ 92 NONAME ; class hspswrapper::CPluginInfo & hspswrapper::CPluginInfo::SetLogoIconL(class TDesC16 const &)
+	?SetInterfaceL@CPluginInfo@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 93 NONAME ; class hspswrapper::CPluginInfo & hspswrapper::CPluginInfo::SetInterfaceL(class TDesC8 const &)
+	?AddPluginMapL@CHspsConfiguration@hspswrapper@@QAEAAV12@PAVCPluginMap@2@@Z @ 94 NONAME ; class hspswrapper::CHspsConfiguration & hspswrapper::CHspsConfiguration::AddPluginMapL(class hspswrapper::CPluginMap *)
+	?RemovePluginL@CHspsWrapper@hspswrapper@@QAEHABVTDesC8@@@Z @ 95 NONAME ; int hspswrapper::CHspsWrapper::RemovePluginL(class TDesC8 const &)
 	?SetActivationStateL@CPluginMap@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 96 NONAME ; class hspswrapper::CPluginMap & hspswrapper::CPluginMap::SetActivationStateL(class TDesC8 const &)
-	?Type@CPluginInfo@hspswrapper@@QBEABVTDesC8@@XZ @ 97 NONAME ; class TDesC8 const & hspswrapper::CPluginInfo::Type(void) const
-	?SetConfIdL@CHspsConfiguration@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 98 NONAME ; class hspswrapper::CHspsConfiguration & hspswrapper::CHspsConfiguration::SetConfIdL(class TDesC8 const &)
-	?NewLC@CPropertyMap@hspswrapper@@SAPAV12@XZ @ 99 NONAME ; class hspswrapper::CPropertyMap * hspswrapper::CPropertyMap::NewLC(void)
-	??0CAddPluginResult@hspswrapper@@AAE@XZ @ 100 NONAME ; hspswrapper::CAddPluginResult::CAddPluginResult(void)
+	?LockingStatus@CPluginMap@hspswrapper@@QBEABVTDesC8@@XZ @ 97 NONAME ; class TDesC8 const & hspswrapper::CPluginMap::LockingStatus(void) const
+	?Type@CPluginInfo@hspswrapper@@QBEABVTDesC8@@XZ @ 98 NONAME ; class TDesC8 const & hspswrapper::CPluginInfo::Type(void) const
+	?SetConfIdL@CHspsConfiguration@hspswrapper@@QAEAAV12@ABVTDesC8@@@Z @ 99 NONAME ; class hspswrapper::CHspsConfiguration & hspswrapper::CHspsConfiguration::SetConfIdL(class TDesC8 const &)
+	?NewLC@CPropertyMap@hspswrapper@@SAPAV12@XZ @ 100 NONAME ; class hspswrapper::CPropertyMap * hspswrapper::CPropertyMap::NewLC(void)
+	??0CAddPluginResult@hspswrapper@@AAE@XZ @ 101 NONAME ; hspswrapper::CAddPluginResult::CAddPluginResult(void)
 
--- a/idlehomescreen/sapiwrapper/hspswrapper/eabi/hspswrapper.def	Tue May 11 16:02:39 2010 +0300
+++ b/idlehomescreen/sapiwrapper/hspswrapper/eabi/hspswrapper.def	Tue May 25 12:29:32 2010 +0300
@@ -36,100 +36,101 @@
 	_ZN11hspswrapper12CHspsWrapper10AddPluginLERK6TDesC8S3_i @ 35 NONAME
 	_ZN11hspswrapper12CHspsWrapper11GetPluginsLER13RPointerArrayINS_11CPluginInfoEERK6TDesC8S7_ @ 36 NONAME
 	_ZN11hspswrapper12CHspsWrapper12MovePluginsLERK6TDesC8RK11MDesC8Array @ 37 NONAME
-	_ZN11hspswrapper12CHspsWrapper12RestoreRootLEv @ 38 NONAME
-	_ZN11hspswrapper12CHspsWrapper13RemovePluginLERK6TDesC8 @ 39 NONAME
+	_ZN11hspswrapper12CHspsWrapper13RemovePluginLERK6TDesC8 @ 38 NONAME
+	_ZN11hspswrapper12CHspsWrapper13RestoreViewsLEv @ 39 NONAME
 	_ZN11hspswrapper12CHspsWrapper13SetConfStateLERK6TDesC8S3_i @ 40 NONAME
 	_ZN11hspswrapper12CHspsWrapper14ReplacePluginLERK6TDesC8S3_ @ 41 NONAME
-	_ZN11hspswrapper12CHspsWrapper16SetActivePluginLERK6TDesC8 @ 42 NONAME
-	_ZN11hspswrapper12CHspsWrapper18SetPluginSettingsLERK6TDesC8RK13RPointerArrayINS_8CItemMapEE @ 43 NONAME
-	_ZN11hspswrapper12CHspsWrapper19RestoreDefaultConfLEv @ 44 NONAME
-	_ZN11hspswrapper12CHspsWrapper20GetAppConfigurationLEv @ 45 NONAME
-	_ZN11hspswrapper12CHspsWrapper20SetAppConfigurationLERK6TDesC8 @ 46 NONAME
-	_ZN11hspswrapper12CHspsWrapper21GetAppConfigurationsLER13RPointerArrayINS_11CPluginInfoEE @ 47 NONAME
-	_ZN11hspswrapper12CHspsWrapper23GetPluginConfigurationLERK6TDesC8 @ 48 NONAME
-	_ZN11hspswrapper12CHspsWrapper4NewLERK6TDesC8PNS_20MHspsWrapperObserverE @ 49 NONAME
-	_ZN11hspswrapper12CHspsWrapper5NewLCERK6TDesC8PNS_20MHspsWrapperObserverE @ 50 NONAME
-	_ZN11hspswrapper12CHspsWrapperD0Ev @ 51 NONAME
-	_ZN11hspswrapper12CHspsWrapperD1Ev @ 52 NONAME
-	_ZN11hspswrapper12CHspsWrapperD2Ev @ 53 NONAME
-	_ZN11hspswrapper12CPropertyMap4NewLEv @ 54 NONAME
-	_ZN11hspswrapper12CPropertyMap5NewLCEv @ 55 NONAME
-	_ZN11hspswrapper12CPropertyMap8SetNameLERK6TDesC8 @ 56 NONAME
-	_ZN11hspswrapper12CPropertyMap9SetValueLERK6TDesC8 @ 57 NONAME
-	_ZN11hspswrapper12CPropertyMapD0Ev @ 58 NONAME
-	_ZN11hspswrapper12CPropertyMapD1Ev @ 59 NONAME
-	_ZN11hspswrapper12CPropertyMapD2Ev @ 60 NONAME
-	_ZN11hspswrapper16CAddPluginResult12SetPluginIdLERK6TDesC8 @ 61 NONAME
-	_ZN11hspswrapper16CAddPluginResult4NewLEv @ 62 NONAME
-	_ZN11hspswrapper16CAddPluginResult9SetStatusEi @ 63 NONAME
-	_ZN11hspswrapper16CAddPluginResultC1Ev @ 64 NONAME
-	_ZN11hspswrapper16CAddPluginResultC2Ev @ 65 NONAME
-	_ZN11hspswrapper16CAddPluginResultD0Ev @ 66 NONAME
-	_ZN11hspswrapper16CAddPluginResultD1Ev @ 67 NONAME
-	_ZN11hspswrapper16CAddPluginResultD2Ev @ 68 NONAME
-	_ZN11hspswrapper18CHspsConfiguration10PluginInfoEv @ 69 NONAME
-	_ZN11hspswrapper18CHspsConfiguration10PluginMapsEv @ 70 NONAME
-	_ZN11hspswrapper18CHspsConfiguration10SetConfIdLERK6TDesC8 @ 71 NONAME
-	_ZN11hspswrapper18CHspsConfiguration11AddItemMapLEPNS_8CItemMapE @ 72 NONAME
-	_ZN11hspswrapper18CHspsConfiguration13AddObjectMapLEPNS_10CObjectMapE @ 73 NONAME
-	_ZN11hspswrapper18CHspsConfiguration13AddPluginMapLEPNS_10CPluginMapE @ 74 NONAME
-	_ZN11hspswrapper18CHspsConfiguration4NewLEv @ 75 NONAME
-	_ZN11hspswrapper18CHspsConfiguration5NewLCEv @ 76 NONAME
-	_ZN11hspswrapper18CHspsConfiguration8SettingsEv @ 77 NONAME
-	_ZN11hspswrapper18CHspsConfiguration9ResourcesEv @ 78 NONAME
-	_ZN11hspswrapper18CHspsConfigurationD0Ev @ 79 NONAME
-	_ZN11hspswrapper18CHspsConfigurationD1Ev @ 80 NONAME
-	_ZN11hspswrapper18CHspsConfigurationD2Ev @ 81 NONAME
-	_ZN11hspswrapper8CItemMap10SetItemIdLERK6TDesC8 @ 82 NONAME
-	_ZN11hspswrapper8CItemMap12SetItemNameLERK6TDesC8 @ 83 NONAME
-	_ZN11hspswrapper8CItemMap15AddPropertyMapLEPNS_12CPropertyMapE @ 84 NONAME
-	_ZN11hspswrapper8CItemMap4NewLEv @ 85 NONAME
-	_ZN11hspswrapper8CItemMap5NewLCEv @ 86 NONAME
-	_ZN11hspswrapper8CItemMapD0Ev @ 87 NONAME
-	_ZN11hspswrapper8CItemMapD1Ev @ 88 NONAME
-	_ZN11hspswrapper8CItemMapD2Ev @ 89 NONAME
-	_ZNK11hspswrapper10CObjectMap3TagEv @ 90 NONAME
-	_ZNK11hspswrapper10CObjectMap4PathEv @ 91 NONAME
-	_ZNK11hspswrapper10CObjectMap5NameLEv @ 92 NONAME
-	_ZNK11hspswrapper10CObjectMap9MediaTypeEv @ 93 NONAME
-	_ZNK11hspswrapper10CPluginMap13LockingStatusEv @ 94 NONAME
-	_ZNK11hspswrapper10CPluginMap15ActivationStateEv @ 95 NONAME
-	_ZNK11hspswrapper10CPluginMap8PluginIdEv @ 96 NONAME
-	_ZNK11hspswrapper10CPluginMap9PluginUidEv @ 97 NONAME
-	_ZNK11hspswrapper11CPluginInfo11DescriptionEv @ 98 NONAME
-	_ZNK11hspswrapper11CPluginInfo13MultiInstanceEv @ 99 NONAME
-	_ZNK11hspswrapper11CPluginInfo18ConfigurationStateEv @ 100 NONAME
-	_ZNK11hspswrapper11CPluginInfo3UidEv @ 101 NONAME
-	_ZNK11hspswrapper11CPluginInfo4NameEv @ 102 NONAME
-	_ZNK11hspswrapper11CPluginInfo4TypeEv @ 103 NONAME
-	_ZNK11hspswrapper11CPluginInfo8LogoIconEv @ 104 NONAME
-	_ZNK11hspswrapper11CPluginInfo8MaxChildEv @ 105 NONAME
-	_ZNK11hspswrapper11CPluginInfo9InterfaceEv @ 106 NONAME
-	_ZNK11hspswrapper12CHspsWrapper11HspsServiceEv @ 107 NONAME
-	_ZNK11hspswrapper12CHspsWrapper13HspsInterfaceEv @ 108 NONAME
-	_ZNK11hspswrapper12CHspsWrapper14ServiceHandlerEv @ 109 NONAME
-	_ZNK11hspswrapper12CPropertyMap4NameEv @ 110 NONAME
-	_ZNK11hspswrapper12CPropertyMap5ValueEv @ 111 NONAME
-	_ZNK11hspswrapper16CAddPluginResult6StatusEv @ 112 NONAME
-	_ZNK11hspswrapper16CAddPluginResult8PluginIdEv @ 113 NONAME
-	_ZNK11hspswrapper18CHspsConfiguration6ConfIdEv @ 114 NONAME
-	_ZNK11hspswrapper8CItemMap10PropertiesEv @ 115 NONAME
-	_ZNK11hspswrapper8CItemMap6ItemIdEv @ 116 NONAME
-	_ZNK11hspswrapper8CItemMap8ItemNameEv @ 117 NONAME
-	_ZTIN11hspswrapper10CObjectMapE @ 118 NONAME
-	_ZTIN11hspswrapper10CPluginMapE @ 119 NONAME
-	_ZTIN11hspswrapper11CPluginInfoE @ 120 NONAME
-	_ZTIN11hspswrapper12CHspsWrapperE @ 121 NONAME
-	_ZTIN11hspswrapper12CPropertyMapE @ 122 NONAME
-	_ZTIN11hspswrapper16CAddPluginResultE @ 123 NONAME
-	_ZTIN11hspswrapper18CHspsConfigurationE @ 124 NONAME
-	_ZTIN11hspswrapper8CItemMapE @ 125 NONAME
-	_ZTVN11hspswrapper10CObjectMapE @ 126 NONAME
-	_ZTVN11hspswrapper10CPluginMapE @ 127 NONAME
-	_ZTVN11hspswrapper11CPluginInfoE @ 128 NONAME
-	_ZTVN11hspswrapper12CHspsWrapperE @ 129 NONAME
-	_ZTVN11hspswrapper12CPropertyMapE @ 130 NONAME
-	_ZTVN11hspswrapper16CAddPluginResultE @ 131 NONAME
-	_ZTVN11hspswrapper18CHspsConfigurationE @ 132 NONAME
-	_ZTVN11hspswrapper8CItemMapE @ 133 NONAME
+	_ZN11hspswrapper12CHspsWrapper15RestoreRomConfLEv @ 42 NONAME
+	_ZN11hspswrapper12CHspsWrapper16SetActivePluginLERK6TDesC8 @ 43 NONAME
+	_ZN11hspswrapper12CHspsWrapper18SetPluginSettingsLERK6TDesC8RK13RPointerArrayINS_8CItemMapEE @ 44 NONAME
+	_ZN11hspswrapper12CHspsWrapper19RestoreDefaultConfLEv @ 45 NONAME
+	_ZN11hspswrapper12CHspsWrapper20GetAppConfigurationLEv @ 46 NONAME
+	_ZN11hspswrapper12CHspsWrapper20SetAppConfigurationLERK6TDesC8 @ 47 NONAME
+	_ZN11hspswrapper12CHspsWrapper21GetAppConfigurationsLER13RPointerArrayINS_11CPluginInfoEE @ 48 NONAME
+	_ZN11hspswrapper12CHspsWrapper23GetPluginConfigurationLERK6TDesC8 @ 49 NONAME
+	_ZN11hspswrapper12CHspsWrapper4NewLERK6TDesC8PNS_20MHspsWrapperObserverE @ 50 NONAME
+	_ZN11hspswrapper12CHspsWrapper5NewLCERK6TDesC8PNS_20MHspsWrapperObserverE @ 51 NONAME
+	_ZN11hspswrapper12CHspsWrapperD0Ev @ 52 NONAME
+	_ZN11hspswrapper12CHspsWrapperD1Ev @ 53 NONAME
+	_ZN11hspswrapper12CHspsWrapperD2Ev @ 54 NONAME
+	_ZN11hspswrapper12CPropertyMap4NewLEv @ 55 NONAME
+	_ZN11hspswrapper12CPropertyMap5NewLCEv @ 56 NONAME
+	_ZN11hspswrapper12CPropertyMap8SetNameLERK6TDesC8 @ 57 NONAME
+	_ZN11hspswrapper12CPropertyMap9SetValueLERK6TDesC8 @ 58 NONAME
+	_ZN11hspswrapper12CPropertyMapD0Ev @ 59 NONAME
+	_ZN11hspswrapper12CPropertyMapD1Ev @ 60 NONAME
+	_ZN11hspswrapper12CPropertyMapD2Ev @ 61 NONAME
+	_ZN11hspswrapper16CAddPluginResult12SetPluginIdLERK6TDesC8 @ 62 NONAME
+	_ZN11hspswrapper16CAddPluginResult4NewLEv @ 63 NONAME
+	_ZN11hspswrapper16CAddPluginResult9SetStatusEi @ 64 NONAME
+	_ZN11hspswrapper16CAddPluginResultC1Ev @ 65 NONAME
+	_ZN11hspswrapper16CAddPluginResultC2Ev @ 66 NONAME
+	_ZN11hspswrapper16CAddPluginResultD0Ev @ 67 NONAME
+	_ZN11hspswrapper16CAddPluginResultD1Ev @ 68 NONAME
+	_ZN11hspswrapper16CAddPluginResultD2Ev @ 69 NONAME
+	_ZN11hspswrapper18CHspsConfiguration10PluginInfoEv @ 70 NONAME
+	_ZN11hspswrapper18CHspsConfiguration10PluginMapsEv @ 71 NONAME
+	_ZN11hspswrapper18CHspsConfiguration10SetConfIdLERK6TDesC8 @ 72 NONAME
+	_ZN11hspswrapper18CHspsConfiguration11AddItemMapLEPNS_8CItemMapE @ 73 NONAME
+	_ZN11hspswrapper18CHspsConfiguration13AddObjectMapLEPNS_10CObjectMapE @ 74 NONAME
+	_ZN11hspswrapper18CHspsConfiguration13AddPluginMapLEPNS_10CPluginMapE @ 75 NONAME
+	_ZN11hspswrapper18CHspsConfiguration4NewLEv @ 76 NONAME
+	_ZN11hspswrapper18CHspsConfiguration5NewLCEv @ 77 NONAME
+	_ZN11hspswrapper18CHspsConfiguration8SettingsEv @ 78 NONAME
+	_ZN11hspswrapper18CHspsConfiguration9ResourcesEv @ 79 NONAME
+	_ZN11hspswrapper18CHspsConfigurationD0Ev @ 80 NONAME
+	_ZN11hspswrapper18CHspsConfigurationD1Ev @ 81 NONAME
+	_ZN11hspswrapper18CHspsConfigurationD2Ev @ 82 NONAME
+	_ZN11hspswrapper8CItemMap10SetItemIdLERK6TDesC8 @ 83 NONAME
+	_ZN11hspswrapper8CItemMap12SetItemNameLERK6TDesC8 @ 84 NONAME
+	_ZN11hspswrapper8CItemMap15AddPropertyMapLEPNS_12CPropertyMapE @ 85 NONAME
+	_ZN11hspswrapper8CItemMap4NewLEv @ 86 NONAME
+	_ZN11hspswrapper8CItemMap5NewLCEv @ 87 NONAME
+	_ZN11hspswrapper8CItemMapD0Ev @ 88 NONAME
+	_ZN11hspswrapper8CItemMapD1Ev @ 89 NONAME
+	_ZN11hspswrapper8CItemMapD2Ev @ 90 NONAME
+	_ZNK11hspswrapper10CObjectMap3TagEv @ 91 NONAME
+	_ZNK11hspswrapper10CObjectMap4PathEv @ 92 NONAME
+	_ZNK11hspswrapper10CObjectMap5NameLEv @ 93 NONAME
+	_ZNK11hspswrapper10CObjectMap9MediaTypeEv @ 94 NONAME
+	_ZNK11hspswrapper10CPluginMap13LockingStatusEv @ 95 NONAME
+	_ZNK11hspswrapper10CPluginMap15ActivationStateEv @ 96 NONAME
+	_ZNK11hspswrapper10CPluginMap8PluginIdEv @ 97 NONAME
+	_ZNK11hspswrapper10CPluginMap9PluginUidEv @ 98 NONAME
+	_ZNK11hspswrapper11CPluginInfo11DescriptionEv @ 99 NONAME
+	_ZNK11hspswrapper11CPluginInfo13MultiInstanceEv @ 100 NONAME
+	_ZNK11hspswrapper11CPluginInfo18ConfigurationStateEv @ 101 NONAME
+	_ZNK11hspswrapper11CPluginInfo3UidEv @ 102 NONAME
+	_ZNK11hspswrapper11CPluginInfo4NameEv @ 103 NONAME
+	_ZNK11hspswrapper11CPluginInfo4TypeEv @ 104 NONAME
+	_ZNK11hspswrapper11CPluginInfo8LogoIconEv @ 105 NONAME
+	_ZNK11hspswrapper11CPluginInfo8MaxChildEv @ 106 NONAME
+	_ZNK11hspswrapper11CPluginInfo9InterfaceEv @ 107 NONAME
+	_ZNK11hspswrapper12CHspsWrapper11HspsServiceEv @ 108 NONAME
+	_ZNK11hspswrapper12CHspsWrapper13HspsInterfaceEv @ 109 NONAME
+	_ZNK11hspswrapper12CHspsWrapper14ServiceHandlerEv @ 110 NONAME
+	_ZNK11hspswrapper12CPropertyMap4NameEv @ 111 NONAME
+	_ZNK11hspswrapper12CPropertyMap5ValueEv @ 112 NONAME
+	_ZNK11hspswrapper16CAddPluginResult6StatusEv @ 113 NONAME
+	_ZNK11hspswrapper16CAddPluginResult8PluginIdEv @ 114 NONAME
+	_ZNK11hspswrapper18CHspsConfiguration6ConfIdEv @ 115 NONAME
+	_ZNK11hspswrapper8CItemMap10PropertiesEv @ 116 NONAME
+	_ZNK11hspswrapper8CItemMap6ItemIdEv @ 117 NONAME
+	_ZNK11hspswrapper8CItemMap8ItemNameEv @ 118 NONAME
+	_ZTIN11hspswrapper10CObjectMapE @ 119 NONAME
+	_ZTIN11hspswrapper10CPluginMapE @ 120 NONAME
+	_ZTIN11hspswrapper11CPluginInfoE @ 121 NONAME
+	_ZTIN11hspswrapper12CHspsWrapperE @ 122 NONAME
+	_ZTIN11hspswrapper12CPropertyMapE @ 123 NONAME
+	_ZTIN11hspswrapper16CAddPluginResultE @ 124 NONAME
+	_ZTIN11hspswrapper18CHspsConfigurationE @ 125 NONAME
+	_ZTIN11hspswrapper8CItemMapE @ 126 NONAME
+	_ZTVN11hspswrapper10CObjectMapE @ 127 NONAME
+	_ZTVN11hspswrapper10CPluginMapE @ 128 NONAME
+	_ZTVN11hspswrapper11CPluginInfoE @ 129 NONAME
+	_ZTVN11hspswrapper12CHspsWrapperE @ 130 NONAME
+	_ZTVN11hspswrapper12CPropertyMapE @ 131 NONAME
+	_ZTVN11hspswrapper16CAddPluginResultE @ 132 NONAME
+	_ZTVN11hspswrapper18CHspsConfigurationE @ 133 NONAME
+	_ZTVN11hspswrapper8CItemMapE @ 134 NONAME
 
--- a/idlehomescreen/sapiwrapper/hspswrapper/inc/hspswrapper.h	Tue May 11 16:02:39 2010 +0300
+++ b/idlehomescreen/sapiwrapper/hspswrapper/inc/hspswrapper.h	Tue May 25 12:29:32 2010 +0300
@@ -235,21 +235,30 @@
      * @return Operation status. KErrNone (success), KErrNotFound
      */
     IMPORT_C TInt SetActivePluginL(const TDesC8& aPluginId);     
-    
-    /**
-      * Removes all but one view and removes all plugins from it.
-      *
-      * @return Operation status. KErrNone (success), KErrNotFound
-      */
-    IMPORT_C TInt RestoreRootL();        
-
+              
      /**
-       * Restore (re-install) default configuration from ROM.
+       * Restores plug-in configurations from eMMC, UDA and ROM drives.       
        *
        * @return Operation status. KErrNone (success), KErrNotFound
        */
     IMPORT_C TInt RestoreDefaultConfL();      
-     
+            
+    /**
+      * Restores plug-in configurations from ROM only. To be used if content
+      * in UDA and eMMC drives is causing panics.
+      *
+      * @return Operation status. KErrNone (success), KErrNotFound
+      */
+    IMPORT_C TInt RestoreRomConfL();
+    
+     /**
+      * Restores active application configuration by removing all extra views,
+      * all plug-ins will be removed also.     
+      *
+      * @return Operation status. KErrNone (success), KErrNotFound
+      */
+    IMPORT_C TInt RestoreViewsL();
+            
     /**
      * Replace plugin in the active configuration.
      *
--- a/idlehomescreen/sapiwrapper/hspswrapper/src/hspswrapper.cpp	Tue May 11 16:02:39 2010 +0300
+++ b/idlehomescreen/sapiwrapper/hspswrapper/src/hspswrapper.cpp	Tue May 25 12:29:32 2010 +0300
@@ -68,8 +68,9 @@
 _LIT8( KRequestNotification, "RequestNotification" );
 _LIT8( KHSPSCommandRestoreConfigurations, "RestoreConfigurations" );
 _LIT8( KRestore, "restore" );
-_LIT8( KActive, "active" );
-_LIT8( KAll, "all" );
+_LIT8( KRestoreDefault, "default" );
+_LIT8( KRestoreRom, "rom" );
+_LIT8( KRestoreViews, "views" );
 _LIT8( K0, "0" );
 _LIT8( K1, "1" );
 _LIT8( KPluginIdNotSet, "-1" );
@@ -785,14 +786,50 @@
 // ---------------------------------------------------------------------------
 // ---------------------------------------------------------------------------
 //
-EXPORT_C TInt CHspsWrapper::RestoreRootL()
+EXPORT_C TInt CHspsWrapper::RestoreViewsL()
     {
     CLiwGenericParamList& inParamList = iServiceHandler->InParamListL();
     CLiwGenericParamList& outParamList = iServiceHandler->OutParamListL();
          
     // Compose Liw message
     TLiwGenericParam restoreTypeParam;
-    restoreTypeParam.SetNameAndValueL( KRestore, TLiwVariant( KAll ) );
+    restoreTypeParam.SetNameAndValueL( KRestore, TLiwVariant( KRestoreViews ) );
+    restoreTypeParam.PushL();
+    inParamList.AppendL( restoreTypeParam );
+    CleanupStack::Pop( &restoreTypeParam );
+    restoreTypeParam.Reset();
+      
+    iHspsInterface->ExecuteCmdL( KHSPSCommandRestoreConfigurations, 
+                                 inParamList, 
+                                 outParamList ); 
+      
+    inParamList.Reset();
+      
+    // check success
+    const TLiwGenericParam* outParam = NULL;
+    TInt pos(0);
+    outParam = outParamList.FindFirst( pos, KOutKeyStatus );
+    TInt status(KErrGeneral);
+    
+    if ( outParam )
+        {
+        status = outParam->Value().AsTInt32();
+        }
+    outParamList.Reset();
+    return status;
+    }
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CHspsWrapper::RestoreRomConfL()
+    {
+    CLiwGenericParamList& inParamList = iServiceHandler->InParamListL();
+    CLiwGenericParamList& outParamList = iServiceHandler->OutParamListL();
+         
+    // Compose Liw message
+    TLiwGenericParam restoreTypeParam;
+    restoreTypeParam.SetNameAndValueL( KRestore, TLiwVariant( KRestoreRom ) );
     restoreTypeParam.PushL();
     inParamList.AppendL( restoreTypeParam );
     CleanupStack::Pop( &restoreTypeParam );
@@ -828,7 +865,7 @@
          
     // Compose Liw message
     TLiwGenericParam restoreTypeParam;
-    restoreTypeParam.SetNameAndValueL( KRestore, TLiwVariant( KActive ) );
+    restoreTypeParam.SetNameAndValueL( KRestore, TLiwVariant( KRestoreDefault ) );
     restoreTypeParam.PushL();
     inParamList.AppendL( restoreTypeParam );
     CleanupStack::Pop( &restoreTypeParam );
--- a/idlehomescreen/widgetmanager/src/wmmaincontainer.cpp	Tue May 11 16:02:39 2010 +0300
+++ b/idlehomescreen/widgetmanager/src/wmmaincontainer.cpp	Tue May 25 12:29:32 2010 +0300
@@ -1224,8 +1224,17 @@
     if ( iFindbox && !iFindPaneIsVisible &&
             iWidgetsList->Model()->NumberOfItems() > KMinWidgets )
         {
-        // reset focus
-        ResetFocus();
+        // set focus
+        if ( iWidgetsList->ItemDrawer()->Flags() 
+                & CListItemDrawer::ESingleClickDisabledHighlight )
+            {
+            ResetFocus();
+            }
+        else
+            {
+            iWidgetsList->SetFocus( ETrue, EDrawNow );                
+            }
+        
         
         // set column filter flag
         TBitFlags32 bitFlag;
@@ -1296,7 +1305,16 @@
             m->RemoveFilter();
             }
         
-        ResetFocus();
+        //set focus
+        if ( iWidgetsList->ItemDrawer()->Flags() 
+                & CListItemDrawer::ESingleClickDisabledHighlight )
+            {
+            ResetFocus();
+            }
+        else
+            {
+            iWidgetsList->SetFocus( ETrue, EDrawNow );                
+            }
 
         iFindbox->MakeVisible( EFalse );        
         iFindPaneIsVisible = EFalse;        
@@ -1488,6 +1506,19 @@
             {
             AddWidgetToHomeScreenL();
             }
+        else
+            {
+            if ( iWidgetsList->ItemDrawer()->Flags() 
+                    & CListItemDrawer::ESingleClickDisabledHighlight )
+                {
+                ResetFocus();
+                }
+            else
+                {
+                iWidgetsList->SetFocus( ETrue, EDrawNow );
+                UpdateFocusMode();
+                }
+            }
         }
     }
 
--- a/idlehomescreen/xmluirendering/uiengine/inc/xneditor.h	Tue May 11 16:02:39 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/inc/xneditor.h	Tue May 25 12:29:32 2010 +0300
@@ -281,9 +281,9 @@
             RPointerArray< CHsContentInfo >& aWidgets );
     
     /**
-     * Resets runtime cache.
+     * Resets pluging configurations and templated publishers.
      */
-    void ResetCache();
+    void ResetPluginsAndPublishers();
     
     /**
      * Retrieves native application configuration plugins from HSPS
@@ -311,6 +311,9 @@
      */
     TBool IsViewFull( CXnViewData& aViewData );
     
+    /** callback for notify widget launcher */
+    static TInt WidgetListChangedCallBack( TAny* aSelf );
+    
 private:
     // from MXnViewObserver    
     
@@ -336,6 +339,8 @@
     
     void NotifyWidgetRegisteredL();
     
+    void NotifyWidgetUpdatedL();
+    
 private:
     // from MHspsWrapperObserver
 
@@ -362,9 +367,12 @@
     TBool iWidgetsVisibilityState;    
     /** Central repository , to choose plugin, owned*/
     CRepository* iRepository;
-	/** Plugins cache, owned */
-    RPointerArray< hspswrapper::CPluginInfo > iPluginsCache;
+	/** Widget/template plugin configurations, owned */
+    RPointerArray< hspswrapper::CPluginInfo > iPluginConfigurations;
+	/** Oom handler, owned. */
     CXnOomSysHandler* iOomSysHandler;
+	/** Launcher for notifying widget updates */    
+    CPeriodic* iNotifyWidgetUpdate;
     };
 
 #endif // C_XNEDITOR_H
--- a/idlehomescreen/xmluirendering/uiengine/inc/xnpopupcontroladapter.h	Tue May 11 16:02:39 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/inc/xnpopupcontroladapter.h	Tue May 25 12:29:32 2010 +0300
@@ -102,11 +102,15 @@
      */
     void HandleScreenDeviceChangedL();
     
+    /*
+     * Closes stylus popup menu if it is open
+     */
+    void HideMenuL();
+    
 private:
     // New functions
     void PopulateMenuL( CXnPluginData& aPlugin, CXnNode* aItem );                                  
     void ShowMenuL( CXnPluginData& aPlugin, TPoint aPosition );
-    void HideMenuL();
                            
 private:
     // Data
--- a/idlehomescreen/xmluirendering/uiengine/inc/xnviewcontroladapter.h	Tue May 11 16:02:39 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/inc/xnviewcontroladapter.h	Tue May 25 12:29:32 2010 +0300
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  View control adater.
+* Description:  View control adapter
 *
 */
 
@@ -27,9 +27,7 @@
 
 // Forward declarations
 class CXnNodePluginIf;
-class CXnBackgroundManager;
 class CXnAppUiAdapter;
-class CXnViewFlicker;
 
 // Class declaration
 /**
@@ -75,18 +73,12 @@
     // new functions
     
     /**
-     * Resets grabbing
+     * Resets pointer grabbing
      * 
      * @since S60 5.2
      */
     void ResetGrabbing();
-
-private:    
-    // new functions
-    
-    void RemoveGrabbingControL( 
-        const CCoeControl* aControl, const TPointerEvent& aEvent ) const;
-    
+            
 private:
     // from MXnUiStateObserver
     
@@ -125,10 +117,8 @@
     CXnNodePluginIf& iNode;
     /** AppUi */
     CXnAppUiAdapter& iAppUi;
-    /** stored point of EButton1Down */
-    TPoint iHitpoint;   
     };
     
-#endif      // _XNVIEWCONTROLADAPTER_H
+#endif // _XNVIEWCONTROLADAPTER_H
             
 // End of File
--- a/idlehomescreen/xmluirendering/uiengine/src/xncontroladapterimpl.cpp	Tue May 11 16:02:39 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xncontroladapterimpl.cpp	Tue May 25 12:29:32 2010 +0300
@@ -3791,12 +3791,22 @@
                 {
                 CXnViewControlAdapter* control = static_cast< CXnViewControlAdapter* >(
                     appui.ViewManager().ActiveViewData().ViewNode()->Control() );
-                
-                control->IgnoreEventsUntilNextPointerUp();
+                                
                 control->ResetGrabbing();                      
+                
+#ifdef RD_TACTILE_FEEDBACK            
+                MTouchFeedback* feedback( MTouchFeedback::Instance() );
+                
+                if ( feedback )
+                    {
+                    feedback->InstantFeedback( iAdapter, ETouchFeedbackBasic, 
+                       ETouchFeedbackVibra, TPointerEvent() );
+                                               
+                    }
+#endif                
                 }
 
-          // Indicate long tap has taken place
+          	// Indicate long tap has taken place
             iLongtap = ETrue;
             
             CXnNode* hold = BuildTriggerNodeL( *engine,
--- a/idlehomescreen/xmluirendering/uiengine/src/xneditor.cpp	Tue May 11 16:02:39 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xneditor.cpp	Tue May 25 12:29:32 2010 +0300
@@ -57,6 +57,7 @@
 #include "xnviewdata.h"
 #include "xnwallpaperview.h"
 #include "xnbackgroundmanager.h"
+#include "xnpopupcontroladapter.h"
 
 #include "xneditor.h"
 #include "xnpanic.h"
@@ -92,6 +93,8 @@
     ECanBeRemoved
     };
 
+const TInt KNotifyWidgetUpdateDelay( 1000000 ); //1sec
+
 // ====================== LOCAL FUNTION PROTOTYPES ============================
 static void DeletePluginInfos( TAny* aObject );
 static void DeleteItemMaps( TAny* aObject );
@@ -309,6 +312,7 @@
     iHspsWrapper = CHspsWrapper::NewL( aUid, this );
     iRepository= CRepository::NewL( TUid::Uid( KCRUidActiveIdleLV ) );
     iOomSysHandler = CXnOomSysHandler::NewL();
+    iNotifyWidgetUpdate = CPeriodic::New( CActive::EPriorityIdle );
     }
 
 // ---------------------------------------------------------------------------
@@ -317,10 +321,16 @@
 // 
 CXnEditor::~CXnEditor()
     {
+    if ( iNotifyWidgetUpdate->IsActive() )
+        {
+        iNotifyWidgetUpdate->Cancel();
+        }
+    delete iNotifyWidgetUpdate;
+    
     iViewManager.RemoveObserver( *this );
-    if( iPluginsCache.Count() )
+    if( iPluginConfigurations.Count() )
         {
-        iPluginsCache.ResetAndDestroy();
+        iPluginConfigurations.ResetAndDestroy();
         }    
     delete iCpsWrapper;
     delete iHspsWrapper;
@@ -609,6 +619,18 @@
         }
     if( ui )
         {
+        CXnNode* popup( iViewManager.UiEngine().StylusPopupNode() );
+        if ( popup )
+            {
+            CXnPopupControlAdapter* control =
+                static_cast< CXnPopupControlAdapter* >(
+                        popup->Control() );
+           
+            if ( control )
+                {
+                control->HideMenuL();
+                }
+            }
         ui->SetContentController( this );
         ui->Activate();
         
@@ -872,11 +894,10 @@
 void CXnEditor::CpsWidgetPluginsL( RPointerArray< CHsContentInfo >& aWidgets )
     {
     // Get publishers from CPS
+    delete iPublisherMap;
+    iPublisherMap = NULL;
     
-    if( !iPublisherMap )
-        {
-        iPublisherMap = iCpsWrapper->GetTemplatedPublishersL();
-        }
+    iPublisherMap = iCpsWrapper->GetTemplatedPublishersL();
     
     RPointerArray< CPublisherInfo >& publisherInfo( iPublisherMap->PublisherInfo() );
     
@@ -885,13 +906,13 @@
         {
         CPublisherInfo* info( publisherInfo[i] );
 
-        for ( TInt j = 0; j < iPluginsCache.Count(); j++ )
+        for ( TInt j = 0; j < iPluginConfigurations.Count(); j++ )
             {        
-            if( iPluginsCache[j]->Name().Length() > 0 )
+            if( iPluginConfigurations[j]->Name().Length() > 0 )
                 {               
                 // 8 to 16bit conv
-                HBufC* nameBuf = HBufC::NewLC( iPluginsCache[j]->Name().Length() );
-                nameBuf->Des().Copy( iPluginsCache[j]->Name() );
+                HBufC* nameBuf = HBufC::NewLC( iPluginConfigurations[j]->Name().Length() );
+                nameBuf->Des().Copy( iPluginConfigurations[j]->Name() );
                 TBool matchingNames = ( nameBuf->Des() == info->TemplateType() );
                 CleanupStack::PopAndDestroy();
                 if ( matchingNames )
@@ -903,8 +924,8 @@
                     contentInfo->SetNameL( info->WidgetName() );
                     contentInfo->SetPublisherIdL( info->PublisherId() );
                     contentInfo->SetMaxWidgets( info->MaxWidgets() );
-                    contentInfo->SetUidL( iPluginsCache[j]->Uid() );
-                    contentInfo->SetTypeL( iPluginsCache[j]->Type() );
+                    contentInfo->SetUidL( iPluginConfigurations[j]->Uid() );
+                    contentInfo->SetTypeL( iPluginConfigurations[j]->Type() );
                     contentInfo->SetDescriptionL( info->Description() );
                     contentInfo->SetIconPathL( info->LogoIcon() );                                
                     contentInfo->SetIsWrt( info->ContentType() == KWRTTemplate() );
@@ -1328,7 +1349,7 @@
 //
 void CXnEditor::NotifyWidgetUnregisteredL( const TDesC& aPublisher )
     {
-    ResetCache();
+    ResetPluginsAndPublishers();
     RemoveUnRegisteredWidgetL( aPublisher );
     WidgetListChanged();    
     }
@@ -1339,11 +1360,46 @@
 //
 void CXnEditor::NotifyWidgetRegisteredL()
     {
-    ResetCache();        
+    ResetPluginsAndPublishers();        
     WidgetListChanged();
     }
 
 // ---------------------------------------------------------------------------
+// CXnEditor::NotifyWidgetUpdatedL
+// ---------------------------------------------------------------------------
+//
+void CXnEditor::NotifyWidgetUpdatedL()
+    {
+    if ( iNotifyWidgetUpdate->IsActive() )
+        {
+        iNotifyWidgetUpdate->Cancel();
+        }
+    // start waiting for widget updates (wait time is 1sec).
+	// if no new updates, notify views about changes. otherwise
+	// start waiting for new updates again. 
+    iNotifyWidgetUpdate->Start(
+        KNotifyWidgetUpdateDelay,
+        KNotifyWidgetUpdateDelay,
+        TCallBack( WidgetListChangedCallBack, this ) );
+    }
+
+// ---------------------------------------------------------------------------
+// CXnEditor::WidgetListChangedCallBack
+// ---------------------------------------------------------------------------
+//
+TInt CXnEditor::WidgetListChangedCallBack( TAny* aSelf )
+    {
+    CXnEditor* editor = static_cast<CXnEditor*>( aSelf );
+    if ( editor && editor->iNotifyWidgetUpdate->IsActive() )
+        {
+        // prevent multiple events
+        editor->iNotifyWidgetUpdate->Cancel();
+        editor->WidgetListChanged();
+        }
+    return KErrNone;
+    }
+
+// ---------------------------------------------------------------------------
 // CXnEditor::NotifyViewDeactivatedL
 // ---------------------------------------------------------------------------
 //
@@ -1403,7 +1459,7 @@
     {
     if ( aEvent == KEventPluginUnInstalled )
         {
-        ResetCache();
+        ResetPluginsAndPublishers();
                 
         CHsContentInfo* info = CHsContentInfo::NewLC();
 
@@ -1422,13 +1478,13 @@
         }
     else if ( aEvent == KEventPluginInstalled )
         {        
-        ResetCache();
+        ResetPluginsAndPublishers();
         
         WidgetListChanged();        
         }
     else if ( aEvent == KEventPluginUpdated )
         {
-        ResetCache();
+        ResetPluginsAndPublishers();
         
         // If the plugin is in use then reload the widget
         if ( aPluginId.Length() > 0 )
@@ -1540,13 +1596,13 @@
     }
 
 // -----------------------------------------------------------------------------
-// CXnEditor::ResetCache
+// CXnEditor::ResetPluginsAndPublishers
 // -----------------------------------------------------------------------------
 //
-void CXnEditor::ResetCache()
+void CXnEditor::ResetPluginsAndPublishers()
     {
     // Force loading of widget/template plugin configurations
-    iPluginsCache.ResetAndDestroy();
+    iPluginConfigurations.ResetAndDestroy();
     
     // Forece reloading of CPS publishers 
     delete iPublisherMap;
@@ -1596,19 +1652,19 @@
     __ASSERT_DEBUG( aWidgets.Count() == 0, User::Leave( KErrGeneral ) );
     
     // If widget/template plugins haven't been fetched yet
-    if( iPluginsCache.Count() == 0 )
+    if( iPluginConfigurations.Count() == 0 )
         {
         // Fetch the plugins into the runtime cache
         TRAPD( err, DoHspsWidgetPluginsL() );
         if( err )
             {            
-            ResetCache();
+            ResetPluginsAndPublishers();
             User::LeaveIfError( err );
             }  
         }    
         
     // Append plugins to the content info array
-    AppendPluginsL( iPluginsCache, aWidgets );            
+    AppendPluginsL( iPluginConfigurations, aWidgets );            
     }
 
 // -----------------------------------------------------------------------------
@@ -1617,8 +1673,8 @@
 //
 void CXnEditor::DoHspsWidgetPluginsL()
     {        
-    iHspsWrapper->GetPluginsL( iPluginsCache, KPluginInterface, KKeyWidget );        
-    iHspsWrapper->GetPluginsL( iPluginsCache, KPluginInterface, KKeyTemplate );            
+    iHspsWrapper->GetPluginsL( iPluginConfigurations, KPluginInterface, KKeyWidget );        
+    iHspsWrapper->GetPluginsL( iPluginConfigurations, KPluginInterface, KKeyTemplate );            
     }
 
 // -----------------------------------------------------------------------------
--- a/idlehomescreen/xmluirendering/uiengine/src/xnpopupcontroladapter.cpp	Tue May 11 16:02:39 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnpopupcontroladapter.cpp	Tue May 25 12:29:32 2010 +0300
@@ -19,7 +19,6 @@
 #include <e32base.h>
 #include <e32const.h>
 #include <coecntrl.h>
-#include <AknUtils.h>
 #include <aknstyluspopupmenu.h>
 
 // User includes
@@ -145,6 +144,8 @@
     
     iNode = &aNode.Node();
     iUiEngine = iNode->UiEngine();
+    
+    iMenuShown = EFalse;
     }
 
 // -----------------------------------------------------------------------------
@@ -341,17 +342,9 @@
         CXnNode* plugin( aPlugin.Owner()->LayoutNode() );
         
         iUiEngine->Editor()->SetTargetPlugin( plugin );
-                       
-        if ( AknLayoutUtils::LayoutMirrored() )
-            {
-            iStylusPopupMenu->SetPosition( aPosition, 
-                CAknStylusPopUpMenu::EPositionTypeRightBottom );                        
-            }
-        else
-            {
-            iStylusPopupMenu->SetPosition( aPosition, 
-                CAknStylusPopUpMenu::EPositionTypeLeftBottom );                        
-            }
+                                      
+        iStylusPopupMenu->SetPosition( aPosition, 
+            CAknStylusPopUpMenu::EPositionTypeRightBottom );                        
         
         iStylusPopupMenu->ShowMenu();
         iMenuShown = ETrue;
@@ -375,4 +368,5 @@
         }    
     }
 
+
 // End of file
--- a/idlehomescreen/xmluirendering/uiengine/src/xnviewadapter.cpp	Tue May 11 16:02:39 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnviewadapter.cpp	Tue May 25 12:29:32 2010 +0300
@@ -591,6 +591,17 @@
 
     CXnNode* node( aContainer.Node()->LayoutNode() );
     
+    CXnDomStringPool* sp( node->DomNode()->StringPool() );
+    
+    CXnProperty* prop = CXnProperty::NewL(
+        XnPropertyNames::style::common::KDisplay, 
+        XnPropertyNames::style::common::display::KBlock,
+        CXnDomPropertyValue::EString, *sp );
+    CleanupStack::PushL( prop );    
+    
+    node->SetPropertyWithoutNotificationL( prop );
+    CleanupStack::Pop( prop );
+    
     node->ReportXuikonEventL( *iActivate );
                            
     if ( iFlags.IsSet( EIsInCall ) )
@@ -731,15 +742,26 @@
     // Run controls to powersave mode
     ChangeControlsStateL( EFalse );
 
+    CXnNode* node( iContainer->Node()->LayoutNode() );
+    
+    CXnDomStringPool* sp( node->DomNode()->StringPool() );
+    
+    CXnProperty* prop = CXnProperty::NewL(
+        XnPropertyNames::style::common::KDisplay, 
+        XnPropertyNames::style::common::display::KNone,
+        CXnDomPropertyValue::EString, *sp );
+    CleanupStack::PushL( prop );    
+    
+    node->SetPropertyWithoutNotificationL( prop );
+    CleanupStack::Pop( prop );
+    
     if ( !iDeactivate )
         {
         iDeactivate = BuildDeactivateTriggerL( iAppUiAdapter.UiEngine() );
         }
-
-    CXnNode* node( iContainer->Node()->LayoutNode() );
-                
+                  
     node->ReportXuikonEventL( *iDeactivate );
-    
+       
     if ( aHide )
         {
         node->Control()->MakeVisible( EFalse );
--- a/idlehomescreen/xmluirendering/uiengine/src/xnviewcontroladapter.cpp	Tue May 11 16:02:39 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnviewcontroladapter.cpp	Tue May 25 12:29:32 2010 +0300
@@ -11,29 +11,53 @@
 *
 * Contributors:
 *
-* Description:  Implementation for wrapper for a box
+* Description:  View control adapter
 *
 */
 
 // System includes
-#include <gfxtranseffect/gfxtranseffect.h>
-#include <akntransitionutils.h>
 
 // User includes
 #include "xnappuiadapter.h"
 #include "xnuiengine.h"
+#include "xnnodepluginif.h"
 #include "xnnode.h"
+
+#include "xndomdocument.h"
 #include "xndomnode.h"
-#include "xnnodepluginif.h"
 #include "xnproperty.h"
-#include "xnviewadapter.h"
-#include "xnbackgroundmanager.h"
-#include "xnviewdata.h"
-#include "xnviewmanager.h"
+
 #include "xnviewcontroladapter.h"
 
 // Constants
     
+// ============================ LOCAL FUNCTIONS ================================
+// -----------------------------------------------------------------------------
+// ResetGrabbingL
+// Removes recursively grabbing controls
+// -----------------------------------------------------------------------------
+//
+static void ResetGrabbingL( CXnControlAdapter* aControl, 
+    const TPointerEvent& aEvent ) 
+    {       
+    if ( aControl )
+        {                              
+        CCoeControl* grabber( aControl->GrabbingComponent() );
+        
+        if ( grabber )
+            {                        
+            grabber->IgnoreEventsUntilNextPointerUp();
+            
+            aControl->CCoeControl::HandlePointerEventL( aEvent );
+            
+            CXnControlAdapter* adapter = 
+                dynamic_cast< CXnControlAdapter* >( grabber );
+            
+            ResetGrabbingL( adapter, aEvent );            
+            }        
+        }    
+    }
+
 // ============================ MEMBER FUNCTIONS ===============================
 
 // -----------------------------------------------------------------------------
@@ -77,6 +101,18 @@
     SetComponentsToInheritVisibility( ETrue );
         
     iAppUi.UiStateListener().AddObserver( *this );
+    
+    // By default all views are invisible during construction phase    
+    CXnDomStringPool* sp( aNode.Node().DomNode()->StringPool() );
+    
+    CXnProperty* prop = CXnProperty::NewL(
+        XnPropertyNames::style::common::KDisplay, 
+        XnPropertyNames::style::common::display::KNone,
+        CXnDomPropertyValue::EString, *sp );
+    CleanupStack::PushL( prop );    
+    
+    aNode.SetPropertyWithoutNotificationL( prop );
+    CleanupStack::Pop( prop );    
     }
     
 // -----------------------------------------------------------------------------
@@ -85,8 +121,7 @@
 // -----------------------------------------------------------------------------
 //
 CXnViewControlAdapter::CXnViewControlAdapter( CXnNodePluginIf& aNode ) 
-    : iNode( aNode ), iAppUi( static_cast< CXnAppUiAdapter& >( *iAvkonAppUi ) ),
-    iHitpoint( TPoint( -1,-1 ) )
+    : iNode( aNode ), iAppUi( static_cast< CXnAppUiAdapter& >( *iAvkonAppUi ) )    
     {    
     }
 
@@ -146,14 +181,9 @@
 //
 void CXnViewControlAdapter::HandlePointerEventL( 
     const TPointerEvent& aPointerEvent )
-    {
-    if ( aPointerEvent.iType == TPointerEvent::EButton1Down )
-        {
-        iHitpoint = aPointerEvent.iPosition;
-        }
-    
+    {    
     iAppUi.UiEngine().DisableRenderUiLC();
-            
+        
     CXnControlAdapter::HandlePointerEventL( aPointerEvent );
     
     iAppUi.UiEngine().RenderUIL();
@@ -169,33 +199,13 @@
 void CXnViewControlAdapter::ResetGrabbing()
     {
     TPointerEvent event;
+    
+    event.iModifiers = 0;
+    event.iPosition = TPoint();
+    event.iParentPosition = TPoint();
     event.iType = TPointerEvent::EButton1Up;
     
-    TRAP_IGNORE( RemoveGrabbingControL( this, event ) );
-    
-    iHitpoint.SetXY( -1, -1 );
-    }
-
-// -----------------------------------------------------------------------------
-// CXnViewControlAdapter::RemoveGrabbingControL()
-// Removes recursively grabbing controls
-// -----------------------------------------------------------------------------
-//
-void CXnViewControlAdapter::RemoveGrabbingControL( const CCoeControl* aControl,
-    const TPointerEvent& aEvent ) const
-    {
-    TInt count( aControl->CountComponentControls() );
-    
-    for( TInt i = 0; i < count; i++ )
-        {
-        CCoeControl* child( aControl->ComponentControl( i ) );
-        
-        if( child && child->Rect().Contains( iHitpoint ) )
-            {
-            child->CCoeControl::HandlePointerEventL( aEvent ); 
-            RemoveGrabbingControL( child, aEvent );
-            }
-        }
+    TRAP_IGNORE( ResetGrabbingL( this, event ) );        
     }
 
 // -----------------------------------------------------------------------------
--- a/idlehomescreen/xmluirendering/uiengine/src/xnviewmanager.cpp	Tue May 11 16:02:39 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnviewmanager.cpp	Tue May 25 12:29:32 2010 +0300
@@ -66,7 +66,8 @@
 const TInt KStabilityInterval( 60000000 ); // 1 minute
 const TInt KActivationCompleteInterval( 2000000 ); // 2s
 const TInt KCrashRestoreDefaultThreshold( 3 );
-const TInt KCrashRestoreAllTreshold( 4 );
+const TInt KCrashRestoreRomTreshold( 4 );
+const TInt KCrashRestoreViewsTreshold( 5 );
 
 // ============================ LOCAL FUNCTIONS ===============================
 // -----------------------------------------------------------------------------
@@ -1791,10 +1792,14 @@
 
         query->RunLD();           
         }
-    else if( crashCount >= KCrashRestoreAllTreshold )
-        {       
-        iHspsWrapper->RestoreRootL();
-        
+    else if( crashCount == KCrashRestoreRomTreshold )
+        {
+        iHspsWrapper->RestoreRomConfL();                         
+        }
+    else if( crashCount >= KCrashRestoreViewsTreshold )
+        {
+        iHspsWrapper->RestoreViewsL();
+                 
         ResetCrashCount();
         return;
         }
--- a/menufw/hierarchynavigator/hnmetadatamodel/src/hnmdvalueimage.cpp	Tue May 11 16:02:39 2010 +0300
+++ b/menufw/hierarchynavigator/hnmetadatamodel/src/hnmdvalueimage.cpp	Tue May 25 12:29:32 2010 +0300
@@ -278,11 +278,25 @@
     {
     DEBUG16(("_MM_: CHnMdValueImage::FindMatchigMifFileL IN"));
 
+    _LIT( KGridRootMif, "gridroot.mif" );
+
     // whole path to the mif file was not specified
     TDriveList driveList;
     HBufC* ret = NULL;
 
-    if ( KErrNone == aFs.DriveList( driveList ) )
+    if ( aFileName == KGridRootMif )
+        {
+        ret = HBufC::NewL(
+                1 + KRscPath().Length() + // 1 - drive letter len.
+                aFileName.Length() );
+        TPtr ptr( ret->Des() );
+        TChar driveLetter;
+        aFs.DriveToChar( EDriveZ, driveLetter );
+        ptr.Append( driveLetter );
+        ptr.Append( KRscPath );
+        ptr.Append( aFileName );
+        }
+    else if ( KErrNone == aFs.DriveList( driveList ) )
         {
         TInt driveNumber( EDriveY ); // start with drive Y
         do // iterates through drives: Y, X, W, ..., C, B, A, Z
@@ -336,15 +350,18 @@
     CleanupClosePushL( tmpBuf );
 
     TInt errCode = HnLiwUtils::GetStringL( *iParamList, iMifFile8, iPos, tmpBuf );
-    if ( !BaflUtils::FileExists( iCmnPtrs->iFs, tmpBuf ) && tmpBuf.Length() )
+    if ( tmpBuf.Length() )
         {
-        // fileName was retrieved but corresponding file was not found
-        ret = FindMatchigMifFileL( iCmnPtrs->iFs, tmpBuf );
-        }
-    else if ( tmpBuf.Length() )
-        {
-        // return fileName as it is
-        ret = tmpBuf.AllocL();
+        if ( BaflUtils::FileExists( iCmnPtrs->iFs, tmpBuf ) )
+            {
+            // return fileName as it is
+            ret = tmpBuf.AllocL();
+            }
+        else
+            {
+            // fileName was retrieved but corresponding file was not found
+            ret = FindMatchigMifFileL( iCmnPtrs->iFs, tmpBuf );
+            }
         }
     
     // clean up
--- a/menufw/hierarchynavigator/hnpresentationmodel/inc/hnextbmpiconholder.h	Tue May 11 16:02:39 2010 +0300
+++ b/menufw/hierarchynavigator/hnpresentationmodel/inc/hnextbmpiconholder.h	Tue May 25 12:29:32 2010 +0300
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:
 *
 */
 
@@ -26,7 +26,7 @@
 /**
  * This is an extended version of @c CHnIconHolder which holds a CGulIcon that does
  * not own the bitmaps and CLiwBitmapBuffer objects that do.
- * 
+ *
  * Such class was needed because some of the bitmaps for icons are obtained from
  * CLiwBitmapBuffer objects and there is no way to transfer ownership of that
  * bitmaps from them. It is not possible to make copies of that bitmaps either,
@@ -40,26 +40,32 @@
      * This method should be called only once. If you want to store another icon
      * simply call Close() on this icon holder and then create a new icon holder
      * to store the new icon.
-     * 
+     *
      * @param aGulIcon Icon to store in this icon holder.
      * @param aBmpBuffer The buffer that owns the primary bitmap.
-     * @param aMaskBuffer The buffer that owns the mask bitmap. 
+     * @param aMaskBuffer The buffer that owns the mask bitmap.
      */
     IMPORT_C void SetGulIcon( CGulIcon* aGulIcon, CLiwBitmapBuffer* aBmpBuffer, CLiwBitmapBuffer* aMaskBuffer );
-    
+
+    /**
+     * Clean both liw bitmap buffer and liw maskbitmap buffer.
+     * Allows set new mask and new bitmap for the icon.
+     */
+    virtual void CleanBmpBuffer();
+
     /**
      * Standard C++ virtual destructor.
      */
     virtual ~CHnExtBmpIconHolder();
 
 private: // data
-    
+
     /**
      * Liw bitmap buffer that owns the primary bitmap for the icon.
      * Co-owns (CLiwBitmapBuffer are ref-counted).
      */
     CLiwBitmapBuffer* iBmpBuffer;
-    
+
     /**
      * Liw bitmap buffer that owns the mask bitmap for the icon.
      * Co-owns (CLiwBitmapBuffer are ref-counted).
--- a/menufw/hierarchynavigator/hnpresentationmodel/inc/hniconholder.h	Tue May 11 16:02:39 2010 +0300
+++ b/menufw/hierarchynavigator/hnpresentationmodel/inc/hniconholder.h	Tue May 25 12:29:32 2010 +0300
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:
 *
 */
 
@@ -39,25 +39,25 @@
      * This method should be called only once. If you want to store another icon
      * simply call Close() on this icon holder and then create a new icon holder
      * to store the new icon.
-     * 
+     *
      * @param aGulIcon Icon to store in this icon holder.
      */
     IMPORT_C void SetGulIcon( CGulIcon* aGulIcon );
-    
+
     /**
      * Returns the icon held by this icon holder.
-     * 
+     *
      * @return Icon held by this object (NULL value possible).
      */
     IMPORT_C CGulIcon* GetGulIcon() const;
-    
+
     /**
      * Standard C++ destructor.
      */
     ~CHnIconHolder();
-    
+
 private: // data
-    
+
     /**
      * A CGulIcon object owned by this icon holder.
      * Can possibly be NULL.
--- a/menufw/hierarchynavigator/hnpresentationmodel/src/hnextbmpiconholder.cpp	Tue May 11 16:02:39 2010 +0300
+++ b/menufw/hierarchynavigator/hnpresentationmodel/src/hnextbmpiconholder.cpp	Tue May 25 12:29:32 2010 +0300
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:
 *
 */
 
@@ -28,10 +28,10 @@
         CLiwBitmapBuffer* aBmpBuffer, CLiwBitmapBuffer* aMaskBuffer )
     {
     __ASSERT_DEBUG( aGulIcon && aBmpBuffer, User::Invariant() );
-    
+
     if ( aGulIcon )
         {
-        __ASSERT_DEBUG( aGulIcon->BitmapsOwnedExternally(), User::Invariant() ); 
+        __ASSERT_DEBUG( aGulIcon->BitmapsOwnedExternally(), User::Invariant() );
         CHnIconHolder::SetGulIcon( aGulIcon );
         aGulIcon->SetBitmapsOwnedExternally( ETrue );
         if ( aBmpBuffer )
@@ -56,9 +56,27 @@
     if ( iBmpBuffer )
         {
         iBmpBuffer->DecRef();
-        }
+         }
     if ( iMaskBuffer )
         {
         iMaskBuffer->DecRef();
         }
     }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CHnExtBmpIconHolder::CleanBmpBuffer()
+    {
+    if ( iBmpBuffer )
+        {
+        iBmpBuffer->DecRef();
+        iBmpBuffer = NULL;
+        }
+    if ( iMaskBuffer )
+        {
+        iMaskBuffer->DecRef();
+        iMaskBuffer = NULL;
+        }
+    }
--- a/menufw/hierarchynavigator/hnpresentationmodel/src/hniconholder.cpp	Tue May 11 16:02:39 2010 +0300
+++ b/menufw/hierarchynavigator/hnpresentationmodel/src/hniconholder.cpp	Tue May 25 12:29:32 2010 +0300
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:
 *
 */
 
@@ -37,7 +37,7 @@
     {
     return iGulIcon;
     }
-    
+
 // ---------------------------------------------------------------------------
 //
 // ---------------------------------------------------------------------------
--- a/menufw/menufwui/matrixmenu/src/mmappui.cpp	Tue May 11 16:02:39 2010 +0300
+++ b/menufw/menufwui/matrixmenu/src/mmappui.cpp	Tue May 25 12:29:32 2010 +0300
@@ -12,8 +12,8 @@
 * Contributors:
 *
 * Description:  Application UI class
-*  Version     : %version: MM_176.1.28.1.75 % << Don't touch! Updated by Synergy at check-out.
-*  Version     : %version: MM_176.1.28.1.75 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_176.1.28.1.78 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_176.1.28.1.78 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -46,7 +46,7 @@
 #include <AknDlgShut.h>
 #include <mmenuinternalPSkeys.h>
 #include <aknstyluspopupmenu.h> //stylus popup for long tap event
-#include <APGWGNAM.H>
+#include <apgwgnam.h>
 
 #include "mmgui.hrh"
 #include "mmguiconstants.h"
@@ -332,10 +332,13 @@
             {
             //make dummy container visible when returning
             //to menu by AppKey
-            iDummyContainer->MakeVisible( ETrue );
-            RefreshUiPanesL( ETrue );
-            iCurrentContainer->MakeVisible( EFalse );
-            iDummyContainer->DrawNow();
+            if( iDummyContainer && iCurrentContainer )
+                {
+                iDummyContainer->MakeVisible( ETrue );
+                RefreshUiPanesL( ETrue );
+                iCurrentContainer->MakeVisible( EFalse );
+                iDummyContainer->DrawNow();
+                }
             CleanupForExitL( EExitKeyApplication );
             User::LeaveIfError( iCoeEnv->WsSession().SetWindowGroupOrdinalPosition(
             CEikonEnv::Static()->RootWin().Identifier(), 0 ) );
@@ -1448,9 +1451,9 @@
         RefreshCbaL();
         iGarbage.ResetAndDestroy();
         ResetContainerMap();
-      iCurrentSuiteModel = NULL;
-      iCurrentContainer = NULL;
-      }
+        iCurrentSuiteModel = NULL;
+        iCurrentContainer = NULL;
+        }
 
     TRAPD( err, iHNInterface->LoadSuitesFromUriL( aMessage ) );
 
@@ -1806,9 +1809,10 @@
         iToolbar->SetToolbarVisibility( EFalse );
         }
 
+    TBool scrollView( EFalse );
     if( iCurrentContainer != aWidgetContainer )
         {
-        // During open new folder cancel longTap. 
+        // During open new folder cancel longTap.
         if( iCurrentContainer && iCurrentContainer->IsEditMode() )
             iCurrentContainer->EnableLongTapAnimation( EFalse );
 
@@ -1827,26 +1831,7 @@
             {
             iCurrentContainer->SetHighlightVisibilityL( ETrue );
             }
-
-        // force scroll view to highlighted item in case we've been backing back
-        // and change presentation mode (to list view) had been done.
-        if( iCurrentContainer->WidgetType() == EListWidget )
-            {
-            TInt offsetBottom =
-                    iCurrentContainer->Widget()->View()->ItemPos(
-                        iCurrentSuiteModel->GetSuiteHighlight() ).iY
-                        + iCurrentContainer->Widget()->ItemHeight()
-                        - iCurrentContainer->Widget()->View()->ViewRect().Height();
-            TInt offsetTop = iCurrentContainer->Widget()->View()->ItemPos(
-                    iCurrentSuiteModel->GetSuiteHighlight() ).iY;
-            TBool takeTop = Abs( offsetTop ) < Abs( offsetBottom );
-            TInt offset = ( takeTop ) ? offsetTop : offsetBottom;
-            if( offset != 0 )
-                {
-                iCurrentContainer->Widget()->HandlePhysicsScrollEventL(
-                        offset );
-                }
-            }
+        scrollView = ETrue;
         }
     else
         {
@@ -1896,6 +1881,16 @@
 
                 // restore the correct widget position
                 iCurrentContainer->RestoreWidgetPosition();
+                // force scroll view to highlighted item in case we've been backing back
+                // and change presentation mode (to list view) had been done.
+                if( scrollView && iCurrentContainer->WidgetType() == EListWidget
+                        && iCurrentSuiteModel->GetSuiteHighlight() > KErrNotFound
+                        && !iCurrentContainer->ItemIsFullyVisible(
+                                iCurrentSuiteModel->GetSuiteHighlight() ))
+                    {
+                    iCurrentContainer->ScrollToItemL(
+                            iCurrentSuiteModel->GetSuiteHighlight() );
+                    }
                 }
 
             // refresh changed items only
--- a/menufw/menufwui/mmwidgets/inc/mmlistboxitemdrawer.h	Tue May 11 16:02:39 2010 +0300
+++ b/menufw/menufwui/mmwidgets/inc/mmlistboxitemdrawer.h	Tue May 25 12:29:32 2010 +0300
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:  CMmListBoxItemDrawer
-*  Version     : %version: MM_38.1.17 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_38.1.18 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -65,12 +65,12 @@
      * @param aFormattedCellData Cell data.
      * @param aWidgetType Widget type.
      */
-	static CMmListBoxItemDrawer* NewL(
-	        CMmListBoxModel* aMmListBoxModel,
-		    const CFont* aFont,
-		    CFormattedCellListBoxData* aFormattedCellData,
-		    TMmWidgetType aWidgetType,
-		    CMmTemplateLibrary* aTemplateLibrary );
+  static CMmListBoxItemDrawer* NewL(
+          CMmListBoxModel* aMmListBoxModel,
+        const CFont* aFont,
+        CFormattedCellListBoxData* aFormattedCellData,
+        TMmWidgetType aWidgetType,
+        CMmTemplateLibrary* aTemplateLibrary );
 
     /**
      * Two-phased constructor.
@@ -81,12 +81,12 @@
      * @param aFormattedCellData Cell data.
      * @param aWidgetType Widget type.
      */
-	static CMmListBoxItemDrawer* NewLC(
-	        CMmListBoxModel* aMmListBoxModel,
-		    const CFont* aFont,
-		    CFormattedCellListBoxData* aFormattedCellData,
-		    TMmWidgetType aWidgetType,
-		    CMmTemplateLibrary* aTemplateLibrary );
+  static CMmListBoxItemDrawer* NewLC(
+          CMmListBoxModel* aMmListBoxModel,
+        const CFont* aFont,
+        CFormattedCellListBoxData* aFormattedCellData,
+        TMmWidgetType aWidgetType,
+        CMmTemplateLibrary* aTemplateLibrary );
 
     /**
      * Destructor.
@@ -226,8 +226,8 @@
      * @since S60 5.0
      * @param aBgContext Background context.
      */
-	void SetBgContext(
-			CAknsBasicBackgroundControlContext* aBgContext );
+  void SetBgContext(
+      CAknsBasicBackgroundControlContext* aBgContext );
 
     /**
      * Sets condition if background should be redrawn.
@@ -458,7 +458,7 @@
      * @since S60 v3.0
      * @param aIsRunning Is scrollbar event running.
      */
-	void SetScrollbarEventRunning( TBool aIsRunning );
+  void SetScrollbarEventRunning( TBool aIsRunning );
 
     /**
      * Sets number of columns in view.
@@ -466,16 +466,16 @@
      * @since S60 v3.0
      * @param aNumberOfColumns Number of columns in view.
      */
-	void SetNumberOfColsInView( TInt aNumberOfColumns );
+  void SetNumberOfColsInView( TInt aNumberOfColumns );
 
-	/**
-	 * Used in non-touch edit mode to block drawing of move indicators and highlight
-	 * to clean screen for animation.
-	 *
-	 * @since S60 v3.0
-	 * @param aDrawn Should highlight and move indicators be drawn.
-	 */
-	void SetHighlightShown( TBool aDrawn );
+  /**
+   * Used in non-touch edit mode to block drawing of move indicators and highlight
+   * to clean screen for animation.
+   *
+   * @since S60 v3.0
+   * @param aDrawn Should highlight and move indicators be drawn.
+   */
+  void SetHighlightShown( TBool aDrawn );
 
     /**
      * Draws background.
@@ -512,8 +512,8 @@
      * @param aItemIsSelected Is item selected.
      */
     void DrawItemText( TInt aItemIndex, const TRect& aItemTextRect,
-    		TBool aItemIsCurrent, TBool aViewIsEmphasized,
-    		TBool aItemIsSelected ) const;
+        TBool aItemIsCurrent, TBool aViewIsEmphasized,
+        TBool aItemIsSelected ) const;
     /**
      * Draws the actual item contents for the specified item in the specified
      * rectangle.
@@ -526,8 +526,8 @@
      * @param aItemIsSelected @c ETrue if the item is selected.
      */
     void DrawActualItem(TInt aItemIndex, const TRect& aActualItemRect,
-			TBool aItemIsCurrent, TBool aViewIsEmphasized, TBool aViewIsDimmed,
-			TBool aItemIsSelected) const;
+      TBool aItemIsCurrent, TBool aViewIsEmphasized, TBool aViewIsDimmed,
+      TBool aItemIsSelected) const;
 
     /**
      * Sets up item currently drawn item subcells.
@@ -660,7 +660,7 @@
      * @param aSubcellIncrement Is incremented if backdrop subcell template is appended.
      */
     void SetupBackdropSubcellL(
-    		RArray<TTemplateChild>& aTemplateChildArray, TInt aItemIndex,
+        RArray<TTemplateChild>& aTemplateChildArray, TInt aItemIndex,
             RBuf& aItemText, TInt& aSubcellIncrement ) const;
 
     /**
@@ -674,8 +674,8 @@
      * @param aSubcellIncrement Is incremented if backdrop subcell template is appended.
      */
     void SetupIconSubcellL(
-    		RArray<TTemplateChild>& aTemplateChildArray, TInt aChildIndex, TInt aItemIndex,
-    		RBuf& aItemText, TInt& aSubcellIncrement ) const;
+        RArray<TTemplateChild>& aTemplateChildArray, TInt aChildIndex, TInt aItemIndex,
+        RBuf& aItemText, TInt& aSubcellIncrement ) const;
 
     /**
      * Determines whether a bitmap of given size needs scaling to be displayed
@@ -711,8 +711,8 @@
      * @param aChildIndex Index of a template child.
      */
     void SetupTextSubcellL(
-    		RArray<TTemplateChild>& aTemplateChildArray, TInt aChildIndex, TInt aItemIndex,
-    		RBuf& aItemText, TInt& aSubcellIncrement ) const;
+        RArray<TTemplateChild>& aTemplateChildArray, TInt aChildIndex, TInt aItemIndex,
+        RBuf& aItemText, TInt& aSubcellIncrement ) const;
 
     /**
      * Appends text if there is enough free memory.
@@ -742,7 +742,7 @@
      * @return ETrue if highlight is drawn for the actually drawn item.
      */
     TBool GetHighlightVisibility(  TInt aItemIndex,
-    		TBool aItemIsCurrent, TBool aAllowHighlightForNonDraggedItem  ) const;
+        TBool aItemIsCurrent, TBool aAllowHighlightForNonDraggedItem  ) const;
 
     /**
      * Returns backdrop visibility.
@@ -943,6 +943,11 @@
      */
     mutable TBool iLastDrawnItemWasFloating;
 
-	};
+    /**
+     * ETrue if the drawing item is floating item of swap transition type.
+     */
+    mutable TBool iIsSwapFloating;
+
+  };
 
 #endif // MMLISTBOXITEMDRAWER_H
--- a/menufw/menufwui/mmwidgets/inc/mmlistboxmodel.h	Tue May 11 16:02:39 2010 +0300
+++ b/menufw/menufwui/mmwidgets/inc/mmlistboxmodel.h	Tue May 25 12:29:32 2010 +0300
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:  CMmListBoxItemModel
-*  Version     : %version: MM_18.1.4 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_18.1.5 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -43,133 +43,133 @@
 NONSHARABLE_CLASS( CMmListBoxModel ):
     public CAknFilteredTextListBoxModel,
     public MHnSuiteObserver
-	{
+  {
 public:
-	// Constructors and destructor
+  // Constructors and destructor
 
-	/**
-	 * Destructor.
-	 */
-	~CMmListBoxModel();
+  /**
+   * Destructor.
+   */
+  ~CMmListBoxModel();
 
-	/**
-	 * Two-phased constructor.
-	 */
-	static CMmListBoxModel* NewL( );
+  /**
+   * Two-phased constructor.
+   */
+  static CMmListBoxModel* NewL( );
 
-	/**
-	 * Two-phased constructor.
-	 */
-	static CMmListBoxModel* NewLC( );
-	
-	/**
-	 * Gets the text attribute for a specific item by the name of the attribute.
-	 * 
-	 * @since S60 v3.0
-	 * @param aIndex The index of the item for which the text is requested.
-	 * @param aAttributeName The name of the text attribute to be returned.
-	 * @return Size of item.
-	 */
-	const TDesC8& GetAttributeAsText( TInt aIndex, const TDesC8 & aAttributeName );
-    
+  /**
+   * Two-phased constructor.
+   */
+  static CMmListBoxModel* NewLC( );
+
+  /**
+   * Gets the text attribute for a specific item by the name of the attribute.
+   *
+   * @since S60 v3.0
+   * @param aIndex The index of the item for which the text is requested.
+   * @param aAttributeName The name of the text attribute to be returned.
+   * @return Size of item.
+   */
+  const TDesC8& GetAttributeAsText( TInt aIndex, const TDesC8 & aAttributeName );
+
     /**
      * Gets the graphical attribute for a specific item by the name of the attribute.
      * The attribute is returned as an icon holder. Please see @c CHnIconHolder for
      * infomation on what icon holder is and what
      * it is useful for.
-     * 
+     *
      * @param aIndex The index of the item for which the graphic is requested.
      * @param aAttributeName The name of the graphical attribute to be returned.
-     * @param aDesiredIconSize The desired icon size. 
+     * @param aDesiredIconSize The desired icon size.
      * @return An icon holder object.
      */
     CHnIconHolder* GetAttributeAsRefCountedGraphics( TInt aIndex,
             const TDesC8& aAttributeName, TSize* aDesiredIconSize = NULL );
-	
-	/**
-	 * Sets the suite model. This method is used by matrix menu application when suite is loaded.
-	 * 
-	 * @since S60 v3.0
-	 * @param aSuiteModel The suite model to be set.
-	 */ 
-	void SetSuiteModelL( CHnSuiteModel * aSuiteModel );	
-	
-	/**
-	 * Gets the suite model of the currently visible suite.
-	 * 
-	 * @since S60 v3.0
-	 * @return The current suite model.
-	 */
-	CHnSuiteModel* GetSuiteModel(); 
-	
-	/**
-	 * Reorders the model when item positions are edited in edit mode.
-	 * 
-	 * @since S60 v3.0
-	 * @param aFromIndex The starting index of items to be shifted.
-	 * @param aToIndex The end index of items to be shifted.
-	 */
-	void ReorderModelL(TInt aFromIndex, TInt aToIndex);
-	
-	/**
-	 * Handle event triggered by suite.
-	 * 
-	 * @since S60 v3.0
-	 * @param aCustomSuiteEvent Type of suite event.
-	 * @param aModel The suite model that the event concerns.
-	 */
-    void HandleSuiteEventL( THnCustomSuiteEvent aCustomSuiteEvent, 
+
+  /**
+   * Sets the suite model. This method is used by matrix menu application when suite is loaded.
+   *
+   * @since S60 v3.0
+   * @param aSuiteModel The suite model to be set.
+   */
+  void SetSuiteModelL( CHnSuiteModel * aSuiteModel );
+
+  /**
+   * Gets the suite model of the currently visible suite.
+   *
+   * @since S60 v3.0
+   * @return The current suite model.
+   */
+  CHnSuiteModel* GetSuiteModel();
+
+  /**
+   * Reorders the model when item positions are edited in edit mode.
+   *
+   * @since S60 v3.0
+   * @param aFromIndex The starting index of items to be shifted.
+   * @param aToIndex The end index of items to be shifted.
+   */
+  void ReorderModelL(TInt aFromIndex, TInt aToIndex);
+
+  /**
+   * Handle event triggered by suite.
+   *
+   * @since S60 v3.0
+   * @param aCustomSuiteEvent Type of suite event.
+   * @param aModel The suite model that the event concerns.
+   */
+    void HandleSuiteEventL( THnCustomSuiteEvent aCustomSuiteEvent,
             CHnSuiteModel* aModel );
-    
+
     /**
      * Determines the number of item-specific menu items for given item.
-     * 
+     *
      * @since S60 v3.0
      * @param aItemIndex Item index.
      * @return Number of item-specific menu items.
      */
     TInt GetNumberOfSpecificMenuItemsL( TInt aItemIndex );
-    
+
 private:
 
-	/**
-	 * Gets the attribute by name.
-	 * 
-	 * @since S60 v3.0
-	 * @param aIndex The index of the item for which the attribute is requested.
-	 * @param aAttributeName The name of the requested attribute.
-	 * @return Size of item.
-	 */
+  /**
+   * Gets the attribute by name.
+   *
+   * @since S60 v3.0
+   * @param aIndex The index of the item for which the attribute is requested.
+   * @param aAttributeName The name of the requested attribute.
+   * @return Size of item.
+   */
     CHnAttributeBase* GetAttribute( TInt aIndex, const TDesC8 & aAttributeName );
-	
-	/**
-	 * Updates the item text array when model is reordered or new model is loaded.
-	 * It is important that the number of elements in the array is the same
-	 * as number of items in the suite.
-	 * 
-	 * @since S60 v3.0
-	 */
-    void UpdateDummyArrayDataL();  
+
+  /**
+   * Updates the item text array when model is reordered or new model is loaded.
+   * It is important that the number of elements in the array is the same
+   * as number of items in the suite.
+   *
+   * @since S60 v3.0
+   */
+    void UpdateDummyArrayDataL();
 
-	
+
     /**
-	 * Constructor for performing 1st stage construction
-	 */
-	CMmListBoxModel( );
+   * Constructor for performing 1st stage construction
+   */
+  CMmListBoxModel( );
 
-	/**
-	 * Default symbian 2nd stage constructor.
-	 */
-	void ConstructL();
+  /**
+   * Default symbian 2nd stage constructor.
+   */
+  void ConstructL();
 
 
 private:
-    
+
     /**
      * Not own. Suite model being the container for the data.
      */
     CHnSuiteModel* iSuiteModel;
-    
-	};
+
+  };
 
 #endif // CMMLISTBOXMODEL_H
--- a/menufw/menufwui/mmwidgets/src/mmgrid.cpp	Tue May 11 16:02:39 2010 +0300
+++ b/menufw/menufwui/mmwidgets/src/mmgrid.cpp	Tue May 25 12:29:32 2010 +0300
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:
-*  Version     : %version: MM_103 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_104 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -277,7 +277,7 @@
         {
         TBool highlightWasVisible = parent->IsHighlightVisible();
         CAknGrid::HandlePointerEventL( aPointerEvent );
-        // Tricky: Do not allow the base class implementation of HandlePointerEventL 
+        // Tricky: Do not allow the base class implementation of HandlePointerEventL
         //         to remove the highlight on EButton1Up event when context menu
         //         is displayed for an item
         if ( aPointerEvent.iType == TPointerEvent::EButton1Up &&
@@ -293,19 +293,19 @@
         if ( CurrentItemIndex() != itemUnderPointerIndex )
             {
             CMmWidgetContainer* parent = static_cast<CMmWidgetContainer*>( Parent() );
-    		if ( parent->IsNoItemDragged() )
-    			{
-    			if ( ItemDrawer()->Flags() & CListItemDrawer::EPressedDownState )
-    				{
-    				ItemDrawer()->ClearFlags( CListItemDrawer::EPressedDownState );
-    				iView->DrawItem( CurrentItemIndex() );
-    				}
-    			}
-    		else
-    			{
-    			iView->SetCurrentItemIndex( itemUnderPointerIndex );
-				iView->DrawItem(itemUnderPointerIndex);
-    			}
+        if ( parent->IsNoItemDragged() )
+          {
+          if ( ItemDrawer()->Flags() & CListItemDrawer::EPressedDownState )
+            {
+            ItemDrawer()->ClearFlags( CListItemDrawer::EPressedDownState );
+            iView->DrawItem( CurrentItemIndex() );
+            }
+          }
+        else
+          {
+          iView->SetCurrentItemIndex( itemUnderPointerIndex );
+        iView->DrawItem(itemUnderPointerIndex);
+          }
             }
         }
 
@@ -389,23 +389,23 @@
         ++totalNumberOfRows;
         }
     const TInt topItemRowIndex = TopItemIndex() / numOfCols;
-    
+
     // desired view position relative to the first item in grid (always positive)
     TInt desiredViewPosition = rowHeight * topItemRowIndex - VerticalItemOffset();
-    
+
     desiredViewPosition += distanceInPixels;
-    
+
     const TInt viewPositionMin = 0;
-    const TInt viewPositionMax = 
-		Max( 0, ( totalNumberOfRows * rowHeight ) - view->ViewRect().Height() );
-    
+    const TInt viewPositionMax =
+    Max( 0, ( totalNumberOfRows * rowHeight ) - view->ViewRect().Height() );
+
     desiredViewPosition = Min( desiredViewPosition, viewPositionMax );
     desiredViewPosition = Max( desiredViewPosition, viewPositionMin );
-   
+
     ASSERT( desiredViewPosition >= 0 );
-    
+
     TInt newTopItemIndex = ( desiredViewPosition / rowHeight ) * numOfCols;
-    TInt newVerticalOffset = -( desiredViewPosition % rowHeight ); 
+    TInt newVerticalOffset = -( desiredViewPosition % rowHeight );
     SetTopItemIndex( newTopItemIndex );
     SetVerticalItemOffset( newVerticalOffset );
     }
@@ -420,43 +420,43 @@
     TInt nextScrollDelay = 0;
 
     TBool readyForScrolling = iMmDrawer->GetAnimator()->IsReadyForNewAnimation()
-		&& iMmDrawer->GetFloatingItemCount() != 0;
+    && iMmDrawer->GetFloatingItemCount() != 0;
 
-	if ( IsPointerInTopScrollingThreshold( aPointerEvent ) )
-		{
-		// scroll up by one row
-		TInt newCurrentItemIndex = CurrentItemIndex() - view->NumberOfColsInView();
+  if ( IsPointerInTopScrollingThreshold( aPointerEvent ) )
+    {
+    // scroll up by one row
+    TInt newCurrentItemIndex = CurrentItemIndex() - view->NumberOfColsInView();
         if ( newCurrentItemIndex < 0 )
             {
             newCurrentItemIndex = CurrentItemIndex();
             }
 
        nextScrollDelay = MmEffects::KEditModeScrollingDelayFactor *
-		   Max( 1, aPointerEvent.iPosition.iY - Rect().iTl.iY );
+       Max( 1, aPointerEvent.iPosition.iY - Rect().iTl.iY );
 
-		if ( readyForScrolling )
-			{
-			ScrollWithoutRedraw( -iItemHeight );
-			View()->SetCurrentItemIndex( newCurrentItemIndex );
-			}
-		}
-	else if ( IsPointerInBottomScrollingThreshold( aPointerEvent) )
-		{
-		TInt newCurrentItemIndex = CurrentItemIndex() + view->NumberOfColsInView();
-		if ( newCurrentItemIndex > iModel->NumberOfItems() - 1 )
-			{
-			newCurrentItemIndex = CurrentItemIndex();
-			}
-	
-		nextScrollDelay = MmEffects::KEditModeScrollingDelayFactor *
-			Max( 1, Rect().iBr.iY - aPointerEvent.iPosition.iY );
+    if ( readyForScrolling )
+      {
+      ScrollWithoutRedraw( -iItemHeight );
+      View()->SetCurrentItemIndex( newCurrentItemIndex );
+      }
+    }
+  else if ( IsPointerInBottomScrollingThreshold( aPointerEvent) )
+    {
+    TInt newCurrentItemIndex = CurrentItemIndex() + view->NumberOfColsInView();
+    if ( newCurrentItemIndex > iModel->NumberOfItems() - 1 )
+      {
+      newCurrentItemIndex = CurrentItemIndex();
+      }
 
-		if ( readyForScrolling )
-			{
-			ScrollWithoutRedraw( iItemHeight );
-			View()->SetCurrentItemIndex( newCurrentItemIndex );
-			}
-		}
+    nextScrollDelay = MmEffects::KEditModeScrollingDelayFactor *
+      Max( 1, Rect().iBr.iY - aPointerEvent.iPosition.iY );
+
+    if ( readyForScrolling )
+      {
+      ScrollWithoutRedraw( iItemHeight );
+      View()->SetCurrentItemIndex( newCurrentItemIndex );
+      }
+    }
 
     return nextScrollDelay;
     }
@@ -691,12 +691,18 @@
 
     TInt topRow = TopItemIndex() / numOfCols;
 
-    if ( !( TopItemIndex() % numOfCols == 0 &&
-         topRow <= maxPossibleTopRow ) )
+    if( !( TopItemIndex() % numOfCols == 0
+            && topRow <= maxPossibleTopRow ) )
         {
         topRow = Min( topRow, maxPossibleTopRow );
         SetTopItemIndex( topRow * numOfCols );
         }
+    else if( ( (CMmWidgetContainer* ) Parent() )->IsEditMode()
+            && ( Abs(maxPossibleTopRow - topRow) == 1) // prevention scrolling both scrollbar and view too much rows
+            && !View()->ItemIsPartiallyVisible(TopItemIndex())) // prevention scrolling view during remove item via menu
+        {
+        SetTopItemIndex( maxPossibleTopRow * numOfCols );
+        }
 
     // prevent problems with view being scrolled up beyond limits
     if ( topRow == maxPossibleTopRow && VerticalItemOffset() < 0 )
@@ -924,13 +930,13 @@
 //
 // -----------------------------------------------------------------------------
 //
-void CMmGrid::ProcessScrollEventL( CEikScrollBar* aScrollBar, 
+void CMmGrid::ProcessScrollEventL( CEikScrollBar* aScrollBar,
             TEikScrollEvent aEventType )
     {
     CAknGrid::HandleScrollEventL( aScrollBar, aEventType );
     iCurrentTopItemIndex = TopItemIndex();
 
-    // setting default highligh in order not to overwrite the top item index
+    // setting default highlight in order not to overwrite the top item index
     // set before in the SetLayout method
     CMmWidgetContainer* parent = static_cast< CMmWidgetContainer* > ( Parent() );
     if (!parent->IsHighlightVisible())
@@ -964,7 +970,7 @@
         }
     iSkippedScrollbarEventsCount = 0;
     }
-    
+
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
@@ -983,37 +989,37 @@
 // -----------------------------------------------------------------------------
 //
 void CMmGrid::SetVerticalItemOffset(TInt aOffset)
-	{
-	static_cast<CMmGridView*> (View())->SetItemOffsetInPixels(aOffset);
-	UpdateScrollBarThumbs();
-	}
+  {
+  static_cast<CMmGridView*> (View())->SetItemOffsetInPixels(aOffset);
+  UpdateScrollBarThumbs();
+  }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 TInt CMmGrid::VerticalItemOffset() const
-	{
-	return static_cast<CMmGridView*> (View())->VerticalItemOffset();
-	}
+  {
+  return static_cast<CMmGridView*> (View())->VerticalItemOffset();
+  }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 void CMmGrid::SetItemHeight( TInt aItemHeight )
-	{
-	iItemHeight = aItemHeight;
-	}
+  {
+  iItemHeight = aItemHeight;
+  }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 void CMmGrid::UpdateScrollBarThumbs()
-	{
-	CAknGrid::UpdateScrollBarThumbs();
-	}
+  {
+  CAknGrid::UpdateScrollBarThumbs();
+  }
 
 // -----------------------------------------------------------------------------
 //
@@ -1023,9 +1029,9 @@
     {
     TInt componentControls(0);
     if ( !iDisableChildComponentDrawing )
-    	{
+      {
         componentControls = CAknGrid::CountComponentControls();
-    	}
+      }
     return componentControls;
     }
 // -----------------------------------------------------------------------------
--- a/menufw/menufwui/mmwidgets/src/mmgridcontainer.cpp	Tue May 11 16:02:39 2010 +0300
+++ b/menufw/menufwui/mmwidgets/src/mmgridcontainer.cpp	Tue May 25 12:29:32 2010 +0300
@@ -12,8 +12,8 @@
 * Contributors:
 *
 * Description:
-*  Version     : %version: MM_74 % << Don't touch! Updated by Synergy at check-out.
-*  Version     : %version: MM_74 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_75 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_75 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -92,9 +92,9 @@
 // -----------------------------------------------------------------------------
 //
 THnSuiteWidgetType CMmGridContainer::WidgetType()
-	{
-	return EGridWidget;
-	}
+  {
+  return EGridWidget;
+  }
 // -----------------------------------------------------------------------------
 // CMmGridContainer::ConstructL()
 // 2nd phase constructor
@@ -125,15 +125,15 @@
 CMmGrid* CMmGridContainer::CreateGridL( CMmTemplateLibrary* aTemplateLibrary )
     {
     iGrid = CMmGrid::NewL( this,
-    		EAknListBoxSelectionList | EAknListBoxLoopScrolling | EAknListBoxDisableHighlight , aTemplateLibrary );
+        EAknListBoxSelectionList | EAknListBoxLoopScrolling | EAknListBoxDisableHighlight , aTemplateLibrary );
     iGrid->SetContainerWindowL( *this );
     iGrid->CreateScrollBarFrameL( ETrue );
     iGrid->SetPrimaryScrollingType(
-    			CAknGridView::EScrollFollowsItemsAndLoops );
+          CAknGridView::EScrollFollowsItemsAndLoops );
     iGrid->SetSecondaryScrollingType(
-    			CAknGridView::EScrollFollowsGrid );
+          CAknGridView::EScrollFollowsGrid );
     iGrid->ScrollBarFrame()->SetScrollBarVisibilityL(
-    		CEikScrollBarFrame::EAuto, CEikScrollBarFrame::EAuto );
+        CEikScrollBarFrame::EAuto, CEikScrollBarFrame::EAuto );
     iGrid->ScrollBarFrame()->DrawBackground( EFalse, EFalse );
     return iGrid;
     }
@@ -146,7 +146,7 @@
     {
     CMmWidgetContainer::SizeChanged();
     if ( iGrid )
-    	{
+      {
 //    	iGrid->SetRect( Rect() );
         iGrid->SetupLayout();
         }
@@ -157,34 +157,34 @@
 //
 void CMmGridContainer::SetEditModeL( TBool aIsEditMode )
     {
-	if (aIsEditMode && !AknLayoutUtils::PenEnabled() )
-		{
-		iGrid->SetPrimaryScrollingType(
-				CAknGridView::EScrollStops );
-		iGrid->SetSecondaryScrollingType(
-				CAknGridView::EScrollStops );
+  if (aIsEditMode && !AknLayoutUtils::PenEnabled() )
+    {
+    iGrid->SetPrimaryScrollingType(
+        CAknGridView::EScrollStops );
+    iGrid->SetSecondaryScrollingType(
+        CAknGridView::EScrollStops );
         }
     else
-    	{
-    	iGrid->SetPrimaryScrollingType(
-    	    			CAknGridView::EScrollFollowsItemsAndLoops );
-    	iGrid->SetSecondaryScrollingType(
-    	    			CAknGridView::EScrollFollowsGrid );
+      {
+      iGrid->SetPrimaryScrollingType(
+                CAknGridView::EScrollFollowsItemsAndLoops );
+      iGrid->SetSecondaryScrollingType(
+                CAknGridView::EScrollFollowsGrid );
 
-    	}
+      }
 
-	// In EditMode we allow Avkon to redraw scrollbar background
-	// to prevent scrollbar flicking.
-	// When edit mode is disabled, this redrawing causes performance problems
-	// (and disabling it does not produce erroneous side-effects).
-	if( aIsEditMode )
-		{
-	    iGrid->ScrollBarFrame()->DrawBackground( EFalse, ETrue );
-		}
-	else
-		{
-	    iGrid->ScrollBarFrame()->DrawBackground( EFalse, EFalse );
-		}
+  // In EditMode we allow Avkon to redraw scrollbar background
+  // to prevent scrollbar flicking.
+  // When edit mode is disabled, this redrawing causes performance problems
+  // (and disabling it does not produce erroneous side-effects).
+  if( aIsEditMode )
+    {
+      iGrid->ScrollBarFrame()->DrawBackground( EFalse, ETrue );
+    }
+  else
+    {
+      iGrid->ScrollBarFrame()->DrawBackground( EFalse, EFalse );
+    }
 
     CMmWidgetContainer::SetEditModeL( aIsEditMode );
     }
@@ -214,18 +214,18 @@
 // -----------------------------------------------------------------------------
 //
 TInt CMmGridContainer::DefaultHighlightOffset()
-	{
-	TInt topVisibleItemIndex = iGrid->View()->TopItemIndex();
-	TInt hiddenPixels = -iGrid->View()->ItemOffsetInPixels();
+  {
+  TInt topVisibleItemIndex = iGrid->View()->TopItemIndex();
+  TInt hiddenPixels = -iGrid->View()->ItemOffsetInPixels();
 
-	if ( iGrid->View()->ItemIsPartiallyVisible( topVisibleItemIndex )
-		&& hiddenPixels > iGrid->View()->ItemSize().iHeight / 2 )
-		{
-		topVisibleItemIndex += ColumnsInCurrentView();
-		}
+  if ( iGrid->View()->ItemIsPartiallyVisible( topVisibleItemIndex )
+    && hiddenPixels > iGrid->View()->ItemSize().iHeight / 2 )
+    {
+    topVisibleItemIndex += ColumnsInCurrentView();
+    }
 
-	return topVisibleItemIndex;
-	}
+  return topVisibleItemIndex;
+  }
 
 // -----------------------------------------------------------------------------
 //
@@ -243,10 +243,10 @@
 // -----------------------------------------------------------------------------
 //
 void CMmGridContainer::SetItemDrawerAndViewBgContext(
-		CAknsBasicBackgroundControlContext * aBgContext )
-	{
-	iGrid->SetItemDrawerAndViewBgContext (aBgContext);
-	}
+    CAknsBasicBackgroundControlContext * aBgContext )
+  {
+  iGrid->SetItemDrawerAndViewBgContext (aBgContext);
+  }
 
 // -----------------------------------------------------------------------------
 //
@@ -254,10 +254,10 @@
 // -----------------------------------------------------------------------------
 //
 void CMmGridContainer::SetupWidgetLayoutL()
-	{
-	User::LeaveIfNull( iGrid );
-	iGrid->SetupLayout();
-	}
+  {
+  User::LeaveIfNull( iGrid );
+  iGrid->SetupLayout();
+  }
 
 // -----------------------------------------------------------------------------
 //
@@ -286,9 +286,9 @@
 // ---------------------------------------------------------------------------
 //
 void CMmGridContainer::HandleItemAdditionL()
-	{
-	iGrid->HandleItemAdditionL();
-	}
+  {
+  iGrid->HandleItemAdditionL();
+  }
 
 
 // ---------------------------------------------------------------------------
@@ -296,47 +296,49 @@
 // ---------------------------------------------------------------------------
 //
 void CMmGridContainer::HandleItemRemovalL()
-	{
+  {
 
-	GetMmModel()->HandleSuiteEventL( ESuiteItemsRemoved, GetMmModel()->GetSuiteModel() );
-	ValidateWidgetCurrentItemIndex();
-	iDrawer->RemoveFloatingItems();
-	if( IsEditMode() )
-		{
-		iDrawer->GetAnimator()->SetNextRedrawToWholeScreen();
-		}
+  GetMmModel()->HandleSuiteEventL( ESuiteItemsRemoved, GetMmModel()->GetSuiteModel() );
+  ValidateWidgetCurrentItemIndex();
+  iDrawer->RemoveFloatingItems();
+  if( IsEditMode() )
+    {
+    iDrawer->GetAnimator()->SetNextRedrawToWholeScreen();
+    }
 
-	CacheWidgetPosition();
-	iGrid->HandleItemRemovalL();
-	RestoreWidgetPosition();
-	CacheWidgetPosition();
+  CacheWidgetPosition();
+  iGrid->View()->SetDisableRedraw( ETrue ); //prevention scroll view
+  iGrid->HandleItemRemovalL();
+  iGrid->View()->SetDisableRedraw( EFalse );
+  RestoreWidgetPosition();
+  CacheWidgetPosition();
 
-	if ( iCurrentHighlight != iGrid->CurrentItemIndex() )
-		{
-		iCurrentHighlight = iGrid->CurrentItemIndex();
-		if( !iCurrentHighlight && !iGrid->Model()->NumberOfItems() )
-			{
-			iCurrentHighlight = KErrNotFound ;
-			}
-		CHnSuiteModel* suiteModel = GetSuiteModelL();
-		if ( suiteModel )
-		    {
-		    suiteModel->SetSuiteHighlightL( iCurrentHighlight );
-		    }
-		}
-	static_cast<CMmListBoxItemDrawer*>( iGrid->ItemDrawer() )->TrimCacheSize(
+  if ( iCurrentHighlight != iGrid->CurrentItemIndex() )
+    {
+    iCurrentHighlight = iGrid->CurrentItemIndex();
+    if( !iCurrentHighlight && !iGrid->Model()->NumberOfItems() )
+      {
+      iCurrentHighlight = KErrNotFound ;
+      }
+    CHnSuiteModel* suiteModel = GetSuiteModelL();
+    if ( suiteModel )
+        {
+        suiteModel->SetSuiteHighlightL( iCurrentHighlight );
+        }
+    }
+  static_cast<CMmListBoxItemDrawer*>( iGrid->ItemDrawer() )->TrimCacheSize(
             GetMmModel()->NumberOfItems() );
-	}
+  }
 
 // ---------------------------------------------------------------------------
 //
 // ---------------------------------------------------------------------------
 //
 TInt CMmGridContainer::ColumnsInCurrentView()
-	{
-	CAknGridView* view ( (CAknGridView*) iGrid->View() );
-	return view->NumberOfColsInView();
-	}
+  {
+  CAknGridView* view ( (CAknGridView*) iGrid->View() );
+  return view->NumberOfColsInView();
+  }
 // ---------------------------------------------------------------------------
 //
 // ---------------------------------------------------------------------------
@@ -361,27 +363,27 @@
 // -----------------------------------------------------------------------------
 //
 void CMmGridContainer::SetVerticalItemOffset( TInt aOffset )
-	{
-	iGrid->SetVerticalItemOffset( aOffset );
-	}
+  {
+  iGrid->SetVerticalItemOffset( aOffset );
+  }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 TInt CMmGridContainer::VerticalItemOffset() const
-	{
-	return iGrid->VerticalItemOffset();
-	}
+  {
+  return iGrid->VerticalItemOffset();
+  }
 
 //----------------------------------------------------------------------------
 //
 // ---------------------------------------------------------------------------
 //
 void CMmGridContainer::UpdateViewScrollBarThumbs()
-	{
-	iGrid->UpdateScrollBarThumbs();
-	}
+  {
+  iGrid->UpdateScrollBarThumbs();
+  }
 
 // -----------------------------------------------------------------------------
 //
--- a/menufw/menufwui/mmwidgets/src/mmlistbox.cpp	Tue May 11 16:02:39 2010 +0300
+++ b/menufw/menufwui/mmwidgets/src/mmlistbox.cpp	Tue May 25 12:29:32 2010 +0300
@@ -705,20 +705,20 @@
 // -----------------------------------------------------------------------------
 //
 void CMmListBox::UpdateScrollBarsNoRedrawL()
-  {
-  HandleScrollbarVisibilityChangeL();
-  if ( ScrollBarFrame()->VerticalScrollBar()->IsVisible() )
     {
-    CMmListBoxView* view = static_cast<CMmListBoxView*>( View() );
-    view->DisableScrollToItem( ETrue );
-    TScrollToItemEnabler reverter = { view };
-    CleanupClosePushL( reverter );
-    CEikFormattedCellListBoxTypedef::UpdateScrollBarsL();
-    CleanupStack::PopAndDestroy( &reverter );
-    iMmDrawer->TemplateLibrary()->SetScrollbarWidthL(
-            ScrollBarFrame()->VerticalScrollBar()->Rect().Width() );
+    HandleScrollbarVisibilityChangeL();
+    if ( ScrollBarFrame()->VerticalScrollBar()->IsVisible() )
+        {
+        CMmListBoxView* view = static_cast<CMmListBoxView*>( View() );
+        view->DisableScrollToItem( ETrue );
+        TScrollToItemEnabler reverter = { view };
+        CleanupClosePushL( reverter );
+        CEikFormattedCellListBoxTypedef::UpdateScrollBarsL();
+        CleanupStack::PopAndDestroy( &reverter );
+        iMmDrawer->TemplateLibrary()->SetScrollbarWidthL(
+                ScrollBarFrame()->VerticalScrollBar()->Rect().Width() );
+        }
     }
-  }
 
 // -----------------------------------------------------------------------------
 //
--- a/menufw/menufwui/mmwidgets/src/mmlistboxitemdrawer.cpp	Tue May 11 16:02:39 2010 +0300
+++ b/menufw/menufwui/mmwidgets/src/mmlistboxitemdrawer.cpp	Tue May 25 12:29:32 2010 +0300
@@ -29,6 +29,7 @@
 #include <AknBidiTextUtils.h>
 #include <AknDef.hrh>
 #include <AknLayoutFont.h>
+#include <avkon.mbg>
 
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
 #include <aknlistloadertfx.h>
@@ -53,6 +54,7 @@
 #include "mmwidgetcontainer.h"
 #include "hnsuitemodel.h"
 #include "menudebug.h"
+#include "hnextbmpiconholder.h"
 
 // -----------------------------------------------------------------------------
 //
@@ -77,6 +79,7 @@
   // this is needed to get iColors initialized on first use:
   iLastDrawnItemWasFloating = ETrue;
     SetFlags( CListItemDrawer::EDisableHighlight );
+    iIsSwapFloating = EFalse;
     }
 
 // -----------------------------------------------------------------------------
@@ -314,13 +317,13 @@
                 iZoomIconIndex = iFloatingItems[i].GetDrawnItemIndex();
                 iIconAnimationZoomRatio = iFloatingItems[i].GetCurrentZoomRatio();
 
-        if ( ItemHasFloatingType( drawnItemIndex, EDrag) ||
-            ItemHasFloatingType( drawnItemIndex, EDragTransition) )
+                if ( ItemHasFloatingType( drawnItemIndex, EDrag) ||
+                        ItemHasFloatingType( drawnItemIndex, EDragTransition) )
                     {
                     ClearFlags( CListItemDrawer::EPressedDownState );
                     }
-
-        DrawActualItem( drawnItemIndex, rect, ETrue, EFalse, EFalse, EFalse );
+                type == ESwapTransition ? iIsSwapFloating = ETrue : iIsSwapFloating = EFalse;
+                DrawActualItem( drawnItemIndex, rect, ETrue, EFalse, EFalse, EFalse );
                 iIconAnimationZoomRatio = tempZoomRatio;
                 iZoomIconIndex = tempZoomIconIndex;
                 }
@@ -399,6 +402,7 @@
             }
         }
 
+    iIsSwapFloating = EFalse;
     DrawActualItem(aItemIndex, actualItemRect, aItemIsCurrent, aViewIsEmphasized,
             aViewIsDimmed, aItemIsSelected);
     const_cast<CMmListBoxItemDrawer*>(this)->iLeftOverAreaUnderAnimatedItem = EFalse;
@@ -505,7 +509,7 @@
         }
 #endif
 
-  if( iDrawSeparatorLines )
+  if( iDrawSeparatorLines && !iIsSwapFloating )
         {
         CMmListBoxView* view = static_cast<CMmListBoxView*>( iWidget->View() );
         if( aItemIndex != ( view->ModelItemsCount() - 1  ))
@@ -1183,30 +1187,65 @@
         {
         CFbsBitmap* bitmap = icon->Bitmap();
         ASSERT( bitmap );
+        TInt errTooBig( KErrNone );
         //resize the item if it is a move indicator
         if( iIsIndicatorItem )
             {
-                AknIconUtils::SetSize( bitmap, child.iRectAccordingToParent.Size(),
+            errTooBig = AknIconUtils::SetSize( bitmap,
+                    child.iRectAccordingToParent.Size(),
                     EAspectRatioNotPreserved );
             }
         else
             {
-                TSize bmpSize = bitmap->SizeInPixels();
-                TBool setSizeRequired = bitmap->DisplayMode() == ENone;
-                if ( targetSize.iWidth && targetSize.iHeight &&
-                        ( setSizeRequired || !BitmapFitsIntoTarget( bmpSize, targetSize ) ) )
-                    {
+            TSize bmpSize = bitmap->SizeInPixels();
+            TBool setSizeRequired = bitmap->DisplayMode() == ENone;
+            if ( targetSize.iWidth && targetSize.iHeight &&
+                    ( setSizeRequired || !BitmapFitsIntoTarget( bmpSize, targetSize ) ) )
+                {
                 CFbsBitmap* mask = icon->Mask();
                 if( mask )
                     {
-                        __ASSERT_DEBUG( bmpSize == mask->SizeInPixels(), User::Invariant() );
-                        AknIconUtils::SetSize( mask, targetSize, EAspectRatioPreservedAndUnusedSpaceRemoved );
-                        }
-                    AknIconUtils::SetSize( bitmap, targetSize, EAspectRatioPreservedAndUnusedSpaceRemoved );
+                    __ASSERT_DEBUG( bmpSize == mask->SizeInPixels(), User::Invariant() );
+                    errTooBig = AknIconUtils::SetSize( mask, targetSize,
+                            EAspectRatioPreservedAndUnusedSpaceRemoved );
+                    }
+                if( !errTooBig )
+                    errTooBig = AknIconUtils::SetSize( bitmap, targetSize,
+                        EAspectRatioPreservedAndUnusedSpaceRemoved );
                 }
             }
 
-            TInt iconIndex = iItemsDataCache->GetItemCacheL( aItemIndex )->AppendIconL( iconHolder );
+        if( errTooBig == KErrTooBig )
+            {
+            // If icon is not created, try to create default application icon
+            MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+            CFbsBitmap* bitmap( NULL );
+            CFbsBitmap* maskBitmap( NULL );
+            TRAPD( err,
+                {
+                AknsUtils::CreateIconLC( skin,
+                    KAknsIIDQgnMenuUnknownLst, bitmap, maskBitmap,
+                    AknIconUtils::AvkonIconFileName(),
+                    EMbmAvkonQgn_menu_unknown_lst,
+                    EMbmAvkonQgn_menu_unknown_lst_mask );
+                CleanupStack::Pop( 2 ); // for trap
+                }
+                );
+            if( !err )
+                {
+                if( maskBitmap)
+                    AknIconUtils::SetSize( maskBitmap, targetSize,
+                            EAspectRatioPreservedAndUnusedSpaceRemoved );
+                AknIconUtils::SetSize( bitmap, targetSize,
+                        EAspectRatioPreservedAndUnusedSpaceRemoved );
+                static_cast<CHnExtBmpIconHolder*>(iconHolder)->CleanBmpBuffer();
+                icon->SetBitmap(bitmap);
+                icon->SetMask(maskBitmap);
+                icon->SetBitmapsOwnedExternally(EFalse);
+                }
+            }
+
+        TInt iconIndex = iItemsDataCache->GetItemCacheL( aItemIndex )->AppendIconL( iconHolder );
 
         HBufC8* number = HnConvUtils::NumToStr8LC( iconIndex );
         const TInt newLength = aItemText.Length() + number->Length();
@@ -1322,7 +1361,8 @@
             {
             TSize itemSize = GetItemSize( aItemIndex,
                 aItemIndex == iWidget->View()->CurrentItemIndex() );
-            CHnIconHolder* iconHolder = iMmModel->GetAttributeAsRefCountedGraphics( aItemIndex, child.iData, &itemSize );
+            CHnIconHolder* iconHolder = iMmModel->GetAttributeAsRefCountedGraphics(
+                    aItemIndex, child.iData, &itemSize );
             icon = iconHolder ? iconHolder->GetGulIcon() : NULL;
             if( icon )
                 {
@@ -1331,7 +1371,8 @@
                         TPoint( itemSize.iWidth, itemSize.iHeight ) );
                 AknIconUtils::SetSize( bitmap, itemSize,
                         EAspectRatioNotPreserved );
-        TInt iconIndex = iItemsDataCache->GetItemCacheL( aItemIndex )->AppendIconL( iconHolder );
+                TInt iconIndex = iItemsDataCache->GetItemCacheL( aItemIndex )->
+                        AppendIconL( iconHolder );
 
                 HBufC8* number = HnConvUtils::NumToStr8LC( iconIndex );
                 TInt newLength = aItemText.Length() + number->Length();
@@ -1399,10 +1440,13 @@
 
     //Backdrop icon as first element to draw
     TInt subcellIncrement( 0 );
-    if( GetBackdropVisibility( aItemIndex, aItemIsCurrent ) )
+    if( ( GetBackdropVisibility( aItemIndex, aItemIsCurrent )
+                || ItemHasFloatingType( aItemIndex, ESwapTransition ) )
+            && !iIsSwapFloating )
         {
         SetupBackdropSubcellL( templateChildArray, aItemIndex, itemText, subcellIncrement );
         iItemHasBackdrop = ETrue;
+        iIsSwapFloating = EFalse;
         }
     else
         {
@@ -1519,9 +1563,9 @@
     TBool highlightVisibility( EFalse );
     if( !iItemHasBackdrop && !iLeftOverAreaUnderAnimatedItem ) //never draw highlight when item has backdrop or when left over area under animated item
         {
-    TBool currentlyDraggedItem =
-      ItemHasFloatingType( aItemIndex, EDrag ) ||
-      ItemHasFloatingType( aItemIndex, EDragTransition );
+        TBool currentlyDraggedItem =
+                ItemHasFloatingType( aItemIndex, EDrag ) ||
+                ItemHasFloatingType( aItemIndex, EDragTransition );
 
         if( ( STATIC_CAST(CMmWidgetContainer*,Widget()->Parent())->IsHighlightVisible()
                 && aItemIsCurrent && aAllowHighlightForNonDraggedItem )
@@ -1540,7 +1584,7 @@
 TBool CMmListBoxItemDrawer::GetBackdropVisibility( TInt aItemIndex,
         TBool aItemIsCurrent ) const
     {
-  TBool currentlyDraggedItem =
+    TBool currentlyDraggedItem =
     ItemHasFloatingType( aItemIndex, EDrag ) ||
     ItemHasFloatingType( aItemIndex, EDragTransition );
 
--- a/menufw/menufwui/mmwidgets/src/mmwidgetcontainer.cpp	Tue May 11 16:02:39 2010 +0300
+++ b/menufw/menufwui/mmwidgets/src/mmwidgetcontainer.cpp	Tue May 25 12:29:32 2010 +0300
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:
-*  Version     : %version: MM_71.1.17.1.64 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: MM_71.1.17.1.65 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -1745,6 +1745,9 @@
     SetHighlightVisibilityL( EFalse );
     if( aChange == EItemsAdded )
         {
+        // force update scrollbar to go down
+        if( WidgetType() == EGridWidget && NumberOfItems() > 0)
+            Widget()->SetCurrentItemIndex( NumberOfItems() - 1 );
         HandleItemAdditionL();
         }
     else if( aChange == EItemsRemoved )
Binary file menufw/menusuites/foldersuite/loc/matrixmenudata.loc has changed
--- a/taskswitcher/contextengine/tsfswserver/engine/inc/tsfswdatalist.h	Tue May 11 16:02:39 2010 +0300
+++ b/taskswitcher/contextengine/tsfswserver/engine/inc/tsfswdatalist.h	Tue May 25 12:29:32 2010 +0300
@@ -94,11 +94,6 @@
     CTsFsWidgetList* Widgets();
 
     /**
-     * Set flag iTaskListDirty;
-     */
-    void SetDirty();
-
-    /**
      * Set flag iAppDataRefreshNeeded
      */
     void SetAppDataRefreshNeeded();
@@ -122,7 +117,7 @@
      * Moves entry on given window app/widget id to 
      * the first position on conten data list
      */
-    void MoveEntryAtStart( TInt aAppId, TBool aWidget );
+    TBool MoveEntryAtStart( TInt aAppId, TBool aWidget );
     
     /**
      * If application uid exists in the contained CTsFsAlwaysShownAppList 
@@ -266,6 +261,19 @@
      */
     TBool CheckIfExists( const CTsFswEntry& aEntry,
             const RTsFswArray& aNewList ) const;
+    
+    /**
+     * Set flag iTaskListDirty;
+     * @param aDirty new flag value. 
+     */
+    void SetDirty( TBool aDirty );
+    
+    /**
+     * Removes the screenshot handle from content entry.
+     * Reverts to parental screenshot, if previously was set to embeded.
+     * @param aBmpHandle handle of removed screenshot. 
+     */
+    TBool RemoveScreenshotFromParent( TInt aBmpHandle );
 
 private:
     CTsFswEngine& iEngine;
--- a/taskswitcher/contextengine/tsfswserver/engine/src/tsfswdatalist.cpp	Tue May 11 16:02:39 2010 +0300
+++ b/taskswitcher/contextengine/tsfswserver/engine/src/tsfswdatalist.cpp	Tue May 25 12:29:32 2010 +0300
@@ -28,7 +28,8 @@
 #include <featmgr.h>
 #include <apgwgnam.h>
 
-
+// Special case: ovi store secure widget UID
+const TUid KTsOviStoreSecureWidgetUid = { 0x2001A93E };
 
 // ================= MEMBER FUNCTIONS =======================
 
@@ -113,7 +114,8 @@
     if ( iTaskListDirty )
         {
         CollectTasksL();
-        // dirty flag is cleared in the above call
+        // clear dirty flag
+		SetDirty(EFalse);
         }
     
     // Get app icon for entries without screenshot,
@@ -153,8 +155,7 @@
 TBool CTsFswDataList::CollectTasksL()
     {
     // clear dirty flag
-    iTaskListDirty = EFalse;
-    TBool changed = EFalse;
+    TBool changed = iTaskListDirty;
     
     RTsFswArray newAppsList;
     RTsFswArray newWidgetsList;
@@ -206,9 +207,9 @@
 // CTsFswDataList::SetDirty()
 // --------------------------------------------------------------------------
 //
-void CTsFswDataList::SetDirty()
+void CTsFswDataList::SetDirty(TBool aDirty)
     {
-    iTaskListDirty = ETrue;
+    iTaskListDirty = aDirty;
     }
 
 // --------------------------------------------------------------------------
@@ -252,15 +253,19 @@
     {
     TBool changed = EFalse;
     CFbsBitmap** bmp = iScreenshots.Find( aId );
+
     if ( bmp )
         {
+        changed |= AssignScreenshotHandle( aId, 0 );
+        changed |= RemoveScreenshotFromParent( (*bmp)->Handle());
         delete *bmp;
         iScreenshots.Remove( aId );
-        changed = AssignScreenshotHandle( aId, 0 );
         }
     return changed;
     }
 
+
+
 // --------------------------------------------------------------------------
 // CTsFswDataList::FindScreenshotByWgId
 // --------------------------------------------------------------------------
@@ -276,10 +281,11 @@
 // CTsFswDataList::MoveEntryAtStart
 // --------------------------------------------------------------------------
 //
-void CTsFswDataList::MoveEntryAtStart(TInt aAppId, TBool aWidget)
+TBool CTsFswDataList::MoveEntryAtStart(TInt aAppId, TBool aWidget)
     {
     TSLOG_CONTEXT( MoveEntryAtStart, TSLOG_LOCAL );
     
+    TBool wasMoved(EFalse);
     TInt appId(0);
     //check embeded case
     if( !aWidget )
@@ -302,15 +308,19 @@
  
     for ( TInt i = 0; i < iData.Count(); ++i )
         {
-        if( iData[i]->AppUid().iUid == appId && iData[i]->Widget() == aWidget)
+        if( iData[i]->AppUid().iUid == appId &&
+            ((iData[i]->Widget() == aWidget) || (iData[i]->AppUid() == KTsOviStoreSecureWidgetUid )))
             {
             CTsFswEntry* entry = iData[i];
             iData.Remove(i);
             iData.Insert(entry, 0);
+            SetDirty(ETrue);
+            wasMoved = ETrue;
             break;
             }
         }
     TSLOG_OUT();
+    return wasMoved;
     }
 
 // --------------------------------------------------------------------------
@@ -629,13 +639,14 @@
     aAsigned = EFalse;
     for (TInt i = 0, ie = iData.Count(); i != ie; ++i)
         {
-        if (iData[i]->Widget())
+        if (iData[i]->Widget() || iData[i]->AppUid() == KTsOviStoreSecureWidgetUid )
             {
             TInt widgetId = iData[i]->AppUid().iUid;
             if (widgetId == aWgIdForScreenshot)
                 {
                 iData[i]->SetScreenshotHandle(aBitmapHandle);
                 aAsigned = ETrue;
+                SetDirty(ETrue);
                 break;
                 }  
 			continue;          
@@ -645,6 +656,7 @@
             {
             iData[i]->SetScreenshotHandle(aBitmapHandle);
             aAsigned = ETrue;
+            SetDirty(ETrue);          
             break;
             }
         }
@@ -800,4 +812,24 @@
     return appUid;
     }
 
+// --------------------------------------------------------------------------
+// CTsFswDataList::RemoveScreenshotFromParent
+// --------------------------------------------------------------------------
+//
+TBool CTsFswDataList::RemoveScreenshotFromParent( TInt aBmpHandle )
+    {
+    TBool changed(EFalse);
+    for( TInt i = 0; i < iData.Count(); ++i)
+        {
+        if ( !iData[i]->Widget() && iData[i]->ScreenshotHandle() == aBmpHandle )
+            {
+            changed = ETrue;
+            iData[i]->SetScreenshotHandle(
+                    LookupScreenshotHandle( iData[i]->WgId()) );
+            }
+        }
+    return changed;
+    }
+
+
 // end of file
--- a/taskswitcher/contextengine/tsfswserver/engine/src/tsfswengine.cpp	Tue May 11 16:02:39 2010 +0300
+++ b/taskswitcher/contextengine/tsfswserver/engine/src/tsfswengine.cpp	Tue May 25 12:29:32 2010 +0300
@@ -238,20 +238,19 @@
     TSLOG_CONTEXT( UpdateTaskList, TSLOG_LOCAL );
     TSLOG_IN();
 
+    // screenshot taking support - call Register and Unregister when needed
+    UpdatePreviewContent();
+
+    // get the foreground app uid and publish it to CFW if different than before
+    TRAP_IGNORE( PublishFgAppUidL() );
+
     // There can be many calls in a row, use a timer to prevent degrading
     // device performance.
-    iDataList->SetDirty();
     if ( !iUpdateStarter->IsActive() )
         {
         iUpdateStarter->Start( KContentRefreshDelay, 0,
                 TCallBack( UpdateStarterCallback, this ) );
         }
-
-    // screenshot taking support - call Register and Unregister when needed
-    UpdatePreviewContent();
-
-    // get the foreground app uid and publish it to CFW if different than before
-    TRAP_IGNORE( PublishFgAppUidL() );
     
     TSLOG_OUT();
     }
@@ -316,6 +315,11 @@
         {
         iFgAppUid = newUid;
         iDataList->MoveEntryAtStart(newUid.iUid, EFalse);
+        TBool change( iDataList->MoveEntryAtStart(newUid.iUid, EFalse) );
+        if( change )
+            {
+            iObserver.FswDataChanged();
+            }
         }
 
     TSLOG_OUT();
@@ -755,10 +759,9 @@
     {
 	TSLOG_CONTEXT( HandleWidgetUpdateL, TSLOG_LOCAL );
     
-	iDataList->MoveEntryAtStart(aWidgetId, ETrue);
+	TBool contentChanged( iDataList->MoveEntryAtStart(aWidgetId, ETrue) );
     
 	CFbsBitmap* bmp = 0;
-    TBool contentChanged(EFalse); 
     if( aBitmapHandle )
     	{
 		TRAPD( err, bmp = CopyBitmapL( aBitmapHandle, EFalse ) );
--- a/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsfastswaparea.h	Tue May 11 16:02:39 2010 +0300
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsfastswaparea.h	Tue May 25 12:29:32 2010 +0300
@@ -161,12 +161,6 @@
      * Handling short/long app key.
      */
     void HandleAppKey(TInt aType);
-    
-    /*
-     * Updates components visibility, used to switch off
-     * grid scrollbar visibility for transition effects
-     */
-    void UpdateComponentVisibility();
 
 private:
 
--- a/taskswitcher/taskswitcherui/taskswitcherapp/src/tsappui.cpp	Tue May 11 16:02:39 2010 +0300
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsappui.cpp	Tue May 25 12:29:32 2010 +0300
@@ -254,7 +254,6 @@
                                 TBool /*aLayers*/, 
                                 TUint aSubCom )
     {
-    TRAP_IGNORE( RequestPopUpL() );
     const TDesC8* ptr = reinterpret_cast<const TDesC8*>(iAppView);
     GfxTransEffect::Abort(iAppView);
     GfxTransEffect::Begin( iAppView, aTranstionId );
@@ -286,7 +285,6 @@
     else
         {
         // App start animation
-        TRAP_IGNORE( RequestPopUpL() );
         const TDesC8* ptr = reinterpret_cast<const TDesC8*>(iAppView);
         GfxTransEffect::Abort(iAppView);
         TInt groupId = GfxTransEffect::BeginGroup();
@@ -312,13 +310,9 @@
 // CTsAppUi::TransitionFinished
 // -----------------------------------------------------------------------------
 //
-void CTsAppUi::TransitionFinished(const CCoeControl* aControl, 
+void CTsAppUi::TransitionFinished(const CCoeControl* /*aControl*/, 
                                   TUint /*aAction*/)
     {
-    if ( aControl == iAppView )
-        {
-        TRAP_IGNORE( DisablePopUpL() );
-        }
     }
 
 // -----------------------------------------------------------------------------
@@ -697,6 +691,7 @@
             {
             SetOrientationL(EAppUiOrientationPortrait);
             }
+        SetFullScreenApp(EFalse);
         iEikonEnv->RootWin().SetOrdinalPosition(0, ECoeWinPriorityAlwaysAtFront);
         }
     TSLOG_OUT();
--- a/taskswitcher/taskswitcherui/taskswitcherapp/src/tsappview.cpp	Tue May 11 16:02:39 2010 +0300
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsappview.cpp	Tue May 25 12:29:32 2010 +0300
@@ -446,7 +446,6 @@
     
     // Forward event to interested controls
     iFastSwapArea->HandleSwitchToForegroundEvent();
-    iFastSwapArea->UpdateComponentVisibility();
     
     // Check for layout updates
     CTsAppUi* appUi = static_cast<CTsAppUi*>(iCoeEnv->AppUi());
@@ -483,7 +482,6 @@
         MakeVisible( ETrue );
         }
     
-    iFastSwapArea->UpdateComponentVisibility();
     DrawDeferred();
     
     TSLOG_OUT();
@@ -601,8 +599,6 @@
         {
         iEvtHandler->EnableEventHandling(ETrue);
         iExitOnPointerUp = EFalse;
-		LaunchFeedback(ETouchFeedbackBasic, TTouchFeedbackType(
-				ETouchFeedbackVibra | ETouchFeedbackAudio), aPointerEvent);
 
 		if( !DragArea().Contains(aPointerEvent.iParentPosition) ||
 		    !iFastSwapArea->Count() )
@@ -615,6 +611,13 @@
 		        iExitOnPointerUp = ETrue;
 		        }
 		    }
+		else if ( !iAppsHeading->Rect().Contains( aPointerEvent.iParentPosition ) ||
+                  !iFastSwapArea->Count() )
+		    {
+		    // Feedback only on "active" areas of UI
+		    LaunchFeedback(ETouchFeedbackBasic, TTouchFeedbackType(
+		            ETouchFeedbackVibra | ETouchFeedbackAudio), aPointerEvent);
+		    }
         }
     else if( TPointerEvent::EButton1Up == aPointerEvent.iType && iExitOnPointerUp )
         {
@@ -623,6 +626,8 @@
               !iAppsHeading->Rect().Contains(aPointerEvent.iParentPosition) ) ||
             !iFastSwapArea->Count() )
             {
+            LaunchFeedback(ETouchFeedbackBasic, TTouchFeedbackType(
+                    ETouchFeedbackVibra | ETouchFeedbackAudio), aPointerEvent);
             iEikonEnv->EikAppUi()->HandleCommandL(EAknSoftkeyExit);
             }
         }
--- a/taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswaparea.cpp	Tue May 11 16:02:39 2010 +0300
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswaparea.cpp	Tue May 25 12:29:32 2010 +0300
@@ -394,7 +394,7 @@
         HandleFswContentChanged();
         iGrid->SetCurrentDataIndex(selIdx);
         UpdateGrid(ETrue, EFalse);
-        DrawDeferred();
+        iGrid->DrawDeferred();
         
         // Order full redraw after switch
         if(iRedrawTimer)
@@ -413,14 +413,14 @@
 //
 void CTsFastSwapArea::Draw( const TRect& /*aRect*/ ) const
     {
-    CWindowGc& gc = SystemGc();
-    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-    MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
-    AknsDrawUtils::Background( skin,
-           cc,
-           this,
-           gc,
-           Rect() );
+//    CWindowGc& gc = SystemGc();
+//    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+//    MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
+//    AknsDrawUtils::Background( skin,
+//           cc,
+//           this,
+//           gc,
+//           Rect() );
     }
 
 // --------------------------------------------------------------------------
@@ -720,7 +720,7 @@
         static_cast<CTsAppView*>(&iParent)->EnableDragEvents(EFalse);
         }
         
-    for ( TInt i = 0, ie = iArray.Count(); i != ie; ++i )
+    for ( TInt i = 0; i < iArray.Count(); ++i )
         {
         const TDesC& appName( iArray[i]->AppName() );
         const TInt formatLen = 3 + 2;
@@ -785,18 +785,18 @@
     iGrid->SetCloseItemsL(closeItemArray);
     iGrid->SetStrokeItemsL(strokeItemArray);
     
+    // Update scrollbar visibility
+    if( iGrid->ScrollBarFrame() )
+        {
+        iGrid->SetScrollBarFrame(NULL,CEikListBox::EOwnedExternally);
+        }
+    
     // Cleanup
     CleanupStack::PopAndDestroy(&strokeItemArray);
     CleanupStack::PopAndDestroy(&closeItemArray);
     CleanupStack::Pop(textArray);
     CleanupStack::Pop(iconArray);
     
-    if( iGrid->ScrollBarFrame() )
-        {
-        iGrid->ScrollBarFrame()->SetScrollBarVisibilityL(
-                CEikScrollBarFrame::EOff, CEikScrollBarFrame::EOff);
-        }
-    
     // refresh the items in the grid
     iEvtHandler.ReInitPhysicsL( GridWorldSize(), ViewSize(), ETrue );
     UpdateGrid( ETrue, !aSuppressAnimation );
@@ -868,6 +868,8 @@
         iGrid->HideHighlight();
         }
     CancelLongTapAnimation();
+    iGrid->MakeVisible(EFalse);
+    iGrid->DrawNow();
     }
 
 // -----------------------------------------------------------------------------
@@ -915,12 +917,12 @@
     iRedrawTimer->Cancel();
     iRedrawTimer->After(KRedrawTime);
     
-    itemDrawer->SetRedrawBackground(EFalse);
-    
     // give feedback
     LaunchPopupFeedback();
     
     iPrevAppCount = iArray.Count();
+    
+    iGrid->MakeVisible(ETrue);
 
     TSLOG_OUT();
     }
@@ -959,6 +961,14 @@
     CancelLongTapAnimation();
     
     iKeyEvent = ETrue;
+    
+    //do not forward the event until item is higlighted
+    TKeyResponse response = ShowHighlightOnKeyEvent(aKeyEvent, aType);
+    if( response == EKeyWasConsumed )
+        {
+        return EKeyWasConsumed;
+        }
+    
     // handle the 'clear' key
     if ( aType == EEventKey && aKeyEvent.iCode == EKeyBackspace )
         {
@@ -970,13 +980,6 @@
         return EKeyWasConsumed;
         }
     
-    //do not forward the event until item is higlighted
-    TKeyResponse response = ShowHighlightOnKeyEvent(aKeyEvent, aType);
-    if( response == EKeyWasConsumed )
-    	{
-    	return EKeyWasConsumed;
-    	}
-    
     // pass the event to grid
     // do not pass down and up arrow key events
     if ( aKeyEvent.iScanCode != EStdKeyUpArrow &&
@@ -1022,8 +1025,11 @@
 	TKeyResponse retVal(EKeyWasNotConsumed);
 	
 	if (aKeyEvent.iScanCode == EStdKeyLeftArrow ||
-		aKeyEvent.iScanCode == EStdKeyRightArrow)
-		{
+		aKeyEvent.iScanCode == EStdKeyRightArrow ||
+		aKeyEvent.iScanCode == EStdKeyDevice3 ||
+        aKeyEvent.iScanCode == EStdKeyBackspace ||
+        aKeyEvent.iScanCode == EStdKeyEnter )
+	    {
 		if (!iGrid->IsHighlightVisible())
 			{
 			if (aType == EEventKey)
@@ -1075,6 +1081,7 @@
         CancelLongTapAnimation( EFalse );
         if( iActivateOnPointerRelease != TPoint() )
             {
+            iHandlePointerCandidate = ETrue;
             TapL(iActivateOnPointerRelease);
             iActivateOnPointerRelease = TPoint();
             }
@@ -1433,7 +1440,8 @@
         if(visibleItem != SelectedIndex())
             {
             iGrid->SetCurrentDataIndex( visibleItem );
-            DrawDeferred();
+            iParent.DrawDeferred();
+            iGrid->DrawDeferred();
             }
         }
 
@@ -1516,12 +1524,6 @@
 //
 void CTsFastSwapArea::MoveOffset(const TPoint& aPoint, TBool aDrawNow)
     {
-    TSLOG_CONTEXT( CTsFastSwapArea::MoveOffset, TSLOG_LOCAL );
-    TSLOG2_IN("Old position x: %d, y:%d", ViewPos().iX, ViewPos().iY);
-    TSLOG2_IN("New position x: %d, y:%d", aPoint.iX, aPoint.iY);
-    TSLOG_OUT();
-    
-    
     if( iHandlePointerCandidate )
         {
 		//pointer was pressed and it's being waiting for handling
@@ -1548,7 +1550,8 @@
             // Center view
             gridViewRect.iTl.iX += ( Rect().Width() - GridItemCount() * iGridItemWidth ) / 2;
             }
-        DrawDeferred();
+        //iParent.DrawDeferred();
+        iGrid->DrawDeferred();
         iGrid->SetRect( gridViewRect );
         iLogicalViewPosOffset = 0;
         }
@@ -1650,7 +1653,7 @@
 void CTsFastSwapArea::Stop()
     {    
     CenterItem( KUpdateGridTime );
-    DrawNow();
+    DrawDeferred();
     }
 
 // -----------------------------------------------------------------------------
@@ -1789,22 +1792,33 @@
         }
     else
         {
+        TInt retItemPosX(0);
         TInt offsetCheck = GridWorldSize().iWidth;
         // View inside of grid world rect
         for ( TInt i = 0 ; i < GridItemCount(); i++ )
             {
-            TInt offset = aViewPos.iX - ItemViewPosition( i ).iX;
+            TInt itemPosX = ItemViewPosition( i ).iX;
+            TInt offset = aViewPos.iX - itemPosX;
             if ( Abs( offset ) <= offsetCheck )
                 {
                 offsetCheck = Abs( offset );
                 retVal = i;
+                retItemPosX = itemPosX;
                 }
             else
                 {
                 break;
                 }
             }
+        // Check if item is fully visible. If not
+        // return next one if possible
+        if ( retItemPosX - iGridItemWidth / 2 < absViewPos.iX &&
+             retVal + 1 < GridItemCount() )
+            {
+            retVal++;
+            }
         }
+    
     return retVal;
     }
 
@@ -1836,22 +1850,6 @@
 
 
 // -----------------------------------------------------------------------------
-// CTsFastSwapArea::UpdateComponentVisibility
-// -----------------------------------------------------------------------------
-//
-void CTsFastSwapArea::UpdateComponentVisibility()
-    {
-    // Switch off scrollbars
-    CEikScrollBarFrame* scrollBar = iGrid->ScrollBarFrame();
-    if(scrollBar)
-        {
-        TRAP_IGNORE( scrollBar->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff, 
-                                                        CEikScrollBarFrame::EOff));
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
 // CTsFastSwapArea::GetCurrentScreenOrientation
 // -----------------------------------------------------------------------------
 //
@@ -1916,12 +1914,13 @@
     {
     TBool retVal(EFalse);
     TInt appCount = iArray.Count();
+    
+    TApaTaskList taskList( iEikonEnv->WsSession() );
+    TApaTask task = taskList.FindApp( KTsHomescreenUid );
+    TInt homescrWgId = task.WgId();
+    
     if ( iPrevAppCount != appCount )
         {
-        TApaTaskList taskList( iEikonEnv->WsSession() );
-        TApaTask task = taskList.FindApp( KTsHomescreenUid );
-        TInt homescrWgId = task.WgId();
-        
         for ( TInt i = 0; i < iArray.Count(); i++ )
             {
             TInt wgId = iArray[i]->WgId();
@@ -1932,6 +1931,10 @@
                 }
             }
         }
+    else if ( aWgId == homescrWgId )
+        {
+        retVal = ETrue;
+        }
     iPrevAppCount = appCount;
     return retVal;
     }
@@ -1966,13 +1969,11 @@
     {
     if ( Rect().Contains(aHitPoint) )
         {
-        for ( TInt i = 0; i < GridItemCount(); i++ )
+        TInt itemIdx;
+        TBool isItemHit = iGrid->GridView()->XYPosToItemIndex( aHitPoint, itemIdx );
+        if ( isItemHit && ( CanClose( itemIdx ) || CanCloseAll( itemIdx ) ) )
             {
-            TBool isItemHit = iGrid->GridView()->XYPosToItemIndex( aHitPoint, i );
-            if ( isItemHit && ( CanClose( i ) || CanCloseAll( i ) ) )
-                {
-                return ETrue;
-                }
+            return ETrue;
             }
         }
     return EFalse;