Revision: 201013 RCL_3
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 14 Apr 2010 15:47:59 +0300
branchRCL_3
changeset 34 d05a55b217df
parent 30 b8fae6b8a148
child 37 c2e9d284d779
child 38 79311d856354
Revision: 201013 Kit: 201015
homescreen_plat/hs_renderingplugin_api/hs_renderingplugin_api.metaxml
homescreen_plat/hs_renderingplugin_api/inc/xnextrenderingpluginadapter.h
homescreen_plat/menu_settings_api/menu_settings_api.metaxml
idlehomescreen/data/qhd_tch/root_2001f482/conf/root2001f482.confml
idlehomescreen/data/qhd_tch/root_2001f482/group/bld.inf
idlehomescreen/data/qhd_tch/root_2001f482/rom/root_customer.iby
idlehomescreen/data/qhd_tch/root_2001f482/rom/root_resources.iby
idlehomescreen/data/qhd_tch/root_2001f482/rom/root_variant.iby
idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/00/templateview.xml
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.confml
idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bxuikon.confml
idlehomescreen/data/qhd_tch/view_2001f48b/rom/view_variant.iby
idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/00/View.xml
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.confml
idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4xuikon.confml
idlehomescreen/data/qhd_tch/view_200286e4/xuikon/00/View.xml
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.confml
idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5xuikon.confml
idlehomescreen/data/qhd_tch/view_200286e5/xuikon/00/View.xml
idlehomescreen/data/qhd_tch/wideimage_2001f489/hsps/00/widgetconfiguration.xml
idlehomescreen/data/qhd_tch/wideimage_2001f489/rom/wideimage_resources.iby
idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/00/wideimage.css
idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/00/wideimage.xml
idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/37/wideimage.css
idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/50/wideimage.css
idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/57/wideimage.css
idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/94/wideimage.css
idlehomescreen/inc/xnmenu.h
idlehomescreen/inc/xnmenuadapter.h
idlehomescreen/inc/xnoomsyshandler.h
idlehomescreen/inc/xnpropertysubscriber.h
idlehomescreen/inc/xnuiengine.h
idlehomescreen/inc/xnuiengineappif.h
idlehomescreen/inc/xnuienginepluginif.h
idlehomescreen/inc/xnviewmanager.h
idlehomescreen/loc/activeidle3.loc
idlehomescreen/widgetmanager/conf/widgetmanager.confml
idlehomescreen/widgetmanager/conf/widgetmanager_20026F53.crml
idlehomescreen/widgetmanager/group/widgetmanager.mmp
idlehomescreen/widgetmanager/inc/wmconfiguration.h
idlehomescreen/widgetmanager/inc/wmcrkeys.h
idlehomescreen/widgetmanager/inc/wmlistbox.h
idlehomescreen/widgetmanager/inc/wmmaincontainer.h
idlehomescreen/widgetmanager/inc/wmmaincontainerview.h
idlehomescreen/widgetmanager/inc/wmportalbutton.h
idlehomescreen/widgetmanager/inc/wmspbgcleaner.h
idlehomescreen/widgetmanager/inc/wmwidgetdata.h
idlehomescreen/widgetmanager/inc/wmwidgetdata.inl
idlehomescreen/widgetmanager/src/wmconfiguration.cpp
idlehomescreen/widgetmanager/src/wmdetailsdlg.cpp
idlehomescreen/widgetmanager/src/wmeffectmanager.cpp
idlehomescreen/widgetmanager/src/wminstaller.cpp
idlehomescreen/widgetmanager/src/wmlistbox.cpp
idlehomescreen/widgetmanager/src/wmmaincontainer.cpp
idlehomescreen/widgetmanager/src/wmmaincontainerview.cpp
idlehomescreen/widgetmanager/src/wmplugin.cpp
idlehomescreen/widgetmanager/src/wmportalbutton.cpp
idlehomescreen/widgetmanager/src/wmspbgcleaner.cpp
idlehomescreen/widgetmanager/src/wmwidgetdata.cpp
idlehomescreen/widgetmanager/tsrc/wmunittest/group/wmunittest.mmp
idlehomescreen/xmluicontroller/inc/appui.h
idlehomescreen/xmluicontroller/src/aieventhandler.cpp
idlehomescreen/xmluicontroller/src/appui.cpp
idlehomescreen/xmluicontroller/src/emptycontenttransactionelement.cpp
idlehomescreen/xmluicontroller/src/globalqueryhandler.cpp
idlehomescreen/xmluirendering/renderingplugins/xnmenufactory/src/xnmenu.cpp
idlehomescreen/xmluirendering/renderingplugins/xnmenufactory/src/xnmenuadapter.cpp
idlehomescreen/xmluirendering/uiengine/bwins/xn3layoutengineu.def
idlehomescreen/xmluirendering/uiengine/eabi/xn3layoutengineu.def
idlehomescreen/xmluirendering/uiengine/group/xnlayoutengine.mmp
idlehomescreen/xmluirendering/uiengine/inc/xnappuiadapterimpl.h
idlehomescreen/xmluirendering/uiengine/inc/xnbackgroundmanager.h
idlehomescreen/xmluirendering/uiengine/inc/xncontroladapterimpl.h
idlehomescreen/xmluirendering/uiengine/inc/xngesture.h
idlehomescreen/xmluirendering/uiengine/inc/xngesture.inl
idlehomescreen/xmluirendering/uiengine/inc/xngesturedefs.h
idlehomescreen/xmluirendering/uiengine/inc/xngesturehelper.h
idlehomescreen/xmluirendering/uiengine/inc/xngesturerecogniser.h
idlehomescreen/xmluirendering/uiengine/inc/xnhittest.h
idlehomescreen/xmluirendering/uiengine/inc/xnkeyeventdispatcher.h
idlehomescreen/xmluirendering/uiengine/inc/xnpointarray.h
idlehomescreen/xmluirendering/uiengine/inc/xnpointarray.inl
idlehomescreen/xmluirendering/uiengine/inc/xnspbgcleaner.h
idlehomescreen/xmluirendering/uiengine/inc/xnuiengineimpl.h
idlehomescreen/xmluirendering/uiengine/inc/xnviewadapter.h
idlehomescreen/xmluirendering/uiengine/inc/xnwaitdialog.h
idlehomescreen/xmluirendering/uiengine/inc/xnwallpaperview.h
idlehomescreen/xmluirendering/uiengine/inc/xnwidgetextensionadapter.h
idlehomescreen/xmluirendering/uiengine/src/xnappuiadapterimpl.cpp
idlehomescreen/xmluirendering/uiengine/src/xnbackgroundmanager.cpp
idlehomescreen/xmluirendering/uiengine/src/xncomposer.cpp
idlehomescreen/xmluirendering/uiengine/src/xncontroladapterimpl.cpp
idlehomescreen/xmluirendering/uiengine/src/xneditmode.cpp
idlehomescreen/xmluirendering/uiengine/src/xneditor.cpp
idlehomescreen/xmluirendering/uiengine/src/xngesture.cpp
idlehomescreen/xmluirendering/uiengine/src/xngesturehelper.cpp
idlehomescreen/xmluirendering/uiengine/src/xngesturerecogniser.cpp
idlehomescreen/xmluirendering/uiengine/src/xnhittest.cpp
idlehomescreen/xmluirendering/uiengine/src/xnkeyeventdispatcher.cpp
idlehomescreen/xmluirendering/uiengine/src/xnnodeimpl.cpp
idlehomescreen/xmluirendering/uiengine/src/xnpointarray.cpp
idlehomescreen/xmluirendering/uiengine/src/xnpopupcontroladapter.cpp
idlehomescreen/xmluirendering/uiengine/src/xnpropertysubscriber.cpp
idlehomescreen/xmluirendering/uiengine/src/xnspbgcleaner.cpp
idlehomescreen/xmluirendering/uiengine/src/xnuiengine.cpp
idlehomescreen/xmluirendering/uiengine/src/xnuiengine.rss
idlehomescreen/xmluirendering/uiengine/src/xnuiengineappif.cpp
idlehomescreen/xmluirendering/uiengine/src/xnuiengineimpl.cpp
idlehomescreen/xmluirendering/uiengine/src/xnuienginepluginif.cpp
idlehomescreen/xmluirendering/uiengine/src/xnviewadapter.cpp
idlehomescreen/xmluirendering/uiengine/src/xnviewcontroladapter.cpp
idlehomescreen/xmluirendering/uiengine/src/xnviewmanager.cpp
idlehomescreen/xmluirendering/uiengine/src/xnwaitdialog.cpp
idlehomescreen/xmluirendering/uiengine/src/xnwallpaperview.cpp
idlehomescreen/xmluirendering/uiengine/src/xnwidgetextensionadapter.cpp
menufw/menufwui/matrixmenu/loc/matrix_menu.loc
taskswitcher/contextengine/rom/tscontextservices.iby
taskswitcher/contextengine/tsfswserver/engine/inc/tsfswengine.h
taskswitcher/contextengine/tsfswserver/engine/inc/tsfswobservers.h
taskswitcher/contextengine/tsfswserver/engine/src/tscpsnotifier.cpp
taskswitcher/contextengine/tsfswserver/engine/src/tsfswengine.cpp
taskswitcher/contextengine/tsfswserver/engine/src/tsfswiconcache.cpp
taskswitcher/contextengine/tsfswserver/server/inc/tsfswserver.h
taskswitcher/contextengine/tsfswserver/server/src/tsfswserver.cpp
taskswitcher/taskswitcherui/taskswitcherapp/data/taskswitcher_reg.rss
taskswitcher/taskswitcherui/taskswitcherapp/inc/tsappui.h
taskswitcher/taskswitcherui/taskswitcherapp/inc/tsappview.h
taskswitcher/taskswitcherui/taskswitcherapp/inc/tsfastswaparea.h
taskswitcher/taskswitcherui/taskswitcherapp/inc/tsfastswapgrid.h
taskswitcher/taskswitcherui/taskswitcherapp/src/tsappui.cpp
taskswitcher/taskswitcherui/taskswitcherapp/src/tsappview.cpp
taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswaparea.cpp
taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswapgrid.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreen_plat/hs_renderingplugin_api/hs_renderingplugin_api.metaxml	Wed Apr 14 15:47:59 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<api id="33b42b58fde503a976613f372680ae87" dataversion="2.0">
+  <name>HS Rendering Plug-in API</name>
+  <description>API allows the widget developer to create his own rendering plugin, which can be taken into use in widget declaration.</description>
+  <type>c++</type>
+  <collection>idlehomescreen</collection>
+  <libs>
+    <lib name="extrenderingplugin.lib"/>
+  </libs>
+  <release category="platform" sinceversion="5.2"/>
+  <attributes>
+    <htmldocprovided>no</htmldocprovided>
+    <adaptation>no</adaptation>
+  </attributes>
+</api>
--- a/homescreen_plat/hs_renderingplugin_api/inc/xnextrenderingpluginadapter.h	Wed Mar 31 21:17:19 2010 +0300
+++ b/homescreen_plat/hs_renderingplugin_api/inc/xnextrenderingpluginadapter.h	Wed Apr 14 15:47:59 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  External rendering plugin adapter header
+* Description:  External rendering plugin adapter
 *
 */
 
@@ -28,7 +28,12 @@
 class MXnExtEventHandler;
 
 /**
- *  CXnExtRenderingPluginAdapter class
+ *  Base class for the external rendering plug-ins. Widget developer
+ *  can implement own rendering plug-in if stock plug-ins do not
+ *  provide sufficient functionality. Baddly written plug-in can 
+ *  ruin the Homescreen performance as it runs in the Homescreen
+ *  process. Power save mode must be obeyed in order to maximize
+ *  the standby times of the device.
  *
  *
  *  @code
@@ -36,61 +41,72 @@
  *  @endcode
  *
  *  @lib extrenderingplugin.lib
- *  @since S60 v5.0
+ *  @since S60 v5.2
  */
 class CXnExtRenderingPluginAdapter : public CCoeControl
     {
 public: // Constructor and destructor
     /**
      * Two-phased constructor.
+     *
+     * @since Series 60 5.2
      */
     IMPORT_C static CXnExtRenderingPluginAdapter* NewL( TUid aImplUid );
 
     /**
      * Destructor.
+     *
+     * @since Series 60 5.2
      */
     IMPORT_C virtual ~CXnExtRenderingPluginAdapter();  
 
-private: // Constructors
-    /**
-     * Constructor
-     */
-    // CXnExtRenderingPluginAdapter();
-
-    /** 
-     * Second phase constructor 
-     */
-    // void ConstructL();
-
 public: // New functions,
 
     /**
-     * Returns the implementation uid.
+     * Returns the ECOM implementation uid.
+     *
+     * @since Series 60 5.2
      */
     IMPORT_C TUid ImplUid() const;
 
     /**
-     * Enters power save mode.
+     * Is called when Homescreen enters power save mode.
+     * In power save mode all the timers, outstanding requests and animations
+     * must be cancelled in order to save battery.
+     *
+     * @since Series 60 5.2
      */
     IMPORT_C virtual void EnterPowerSaveModeL();
 
     /**
-     * Exits power save mode.
+     * Is called when Homescreen exists power save mode.
+     *
+     * @since Series 60 5.2
      */    
     IMPORT_C virtual void ExitPowerSaveModeL();
 
     /**
-     * Informs skin change.
+     * Informs skin change. If plug-in is responsible of loading skin
+     * graphics, all the graphics must be reloaded.
+     *
+     * @since Series 60 5.2
      */    
     IMPORT_C virtual void SkinChanged();
     
     /**
-     * Informs focuschange.
+     * Informs that plug-in element has gained a focus and highlight must be
+     * drawn if appropriate.
+     *
+     * @since Series 60 5.2
+     * @param aDrawNow whether plug-in should draw itself.
      */
     IMPORT_C virtual void FocusChanged( TDrawNow aDrawNow );
     
     /**
-     * Informs size change.
+     * Informs that plug-in element size has changed. Size can change if the
+     * plug-in element is declared relatively to parent element.
+     *
+     * @since Series 60 5.2
      */
     IMPORT_C virtual void SizeChanged();
     
--- a/homescreen_plat/menu_settings_api/menu_settings_api.metaxml	Wed Mar 31 21:17:19 2010 +0300
+++ b/homescreen_plat/menu_settings_api/menu_settings_api.metaxml	Wed Apr 14 15:47:59 2010 +0300
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <api id="3f80fb289efe39ff2107c2f067d360f6" dataversion="2.0">
   <name>Menu Settings API</name>
-  <description>Provides infromation about Menu current state.</description>
+  <description>Provides infromation about the current state of Menu application.</description>
   <type>c++</type>
   <collection>menufw</collection>
   <libs/>
Binary file idlehomescreen/data/qhd_tch/root_2001f482/conf/root2001f482.confml has changed
--- a/idlehomescreen/data/qhd_tch/root_2001f482/group/bld.inf	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/root_2001f482/group/bld.inf	Wed Apr 14 15:47:59 2010 +0300
@@ -25,7 +25,6 @@
 // Support for productization and Carbide.Ui customization
 //********************************************************
 ../hsps/00/manifest.dat /epoc32/data/Z/resource/homescreen/root_2001f482/hsps/manifest.dat
-//../hsps/00/rootconfiguration.xml /epoc32/data/Z/resource/homescreen/root_2001f482/hsps/rootconfiguration.xml
 ../xuikon/00/Root.dat /epoc32/data/Z/resource/homescreen/root_2001f482/xuikon/root_2001f482.dat
 ../xuikon/00/Root.css /epoc32/data/Z/resource/homescreen/root_2001f482/xuikon/root.css
 ../xuikon/00/Root.xml /epoc32/data/Z/resource/homescreen/root_2001f482/xuikon/root.xml
@@ -44,9 +43,6 @@
 
 // Support for S60 builds
 //***********************
-../rom/root_resources.iby LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(root_2001f482_resources.iby)
-../rom/root_customer.iby CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(root_2001f482_customer.iby)
-//../rom/root_variant.iby CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(root_2001f482_variant.iby)
 ../rom/root.iby CORE_APP_LAYER_IBY_EXPORT_PATH(root_2001f482.iby)
 
 
--- a/idlehomescreen/data/qhd_tch/root_2001f482/rom/root_customer.iby	Wed Mar 31 21:17:19 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
-* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 
-* Root widget HSPS-plugin language specific IBY file.
-*
-*/
-
-#ifndef __ROOT_2001F482_CUSTOMER_IBY__
-#define __ROOT_2001F482_CUSTOMER_IBY__
-
-#if defined(__LAYOUT_360_640_TOUCH) || defined(__LAYOUT_640_360_TOUCH)          
-
-// Enabled by DTD-localization tools, language specific
-data=ZPRIVATE\200159c0\install\root_2001f482\hsps\00\rootconfiguration.dtd \private\200159c0\install\root_2001f482\hsps\00\rootconfiguration.dtd
-
-#endif // __LAYOUT_360_640_TOUCH || __LAYOUT_640_360_TOUCH
-
-#endif // __ROOT_2001F482_CUSTOMER_IBY__
--- a/idlehomescreen/data/qhd_tch/root_2001f482/rom/root_resources.iby	Wed Mar 31 21:17:19 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
-* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 
-* Root widget HSPS-plugin language specific IBY file.
-*
-*/
-
-#ifndef __ROOT_2001F482_RESOURCES_IBY__
-#define __ROOT_2001F482_RESOURCES_IBY__
-
-#if defined(__LAYOUT_360_640_TOUCH) || defined(__LAYOUT_640_360_TOUCH)          
-
-// Enabled by DTD-localization tools, language specific
-
-#endif // __LAYOUT_360_640_TOUCH || __LAYOUT_640_360_TOUCH
-
-#endif // __ROOT_2001F482_RESOURCES_IBY__
--- a/idlehomescreen/data/qhd_tch/root_2001f482/rom/root_variant.iby	Wed Mar 31 21:17:19 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
-* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 
-* Root widget HSPS-plugin variant specific IBY file.  
-*
-*/
-
-#ifndef __ROOT_2001F482_VARIANT_IBY__
-#define __ROOT_2001F482_VARIANT_IBY__
-
-#if defined(__LAYOUT_360_640_TOUCH) || defined(__LAYOUT_640_360_TOUCH)          
-
-// Enabled by variation tools, variant specific
-//data=ZPRIVATE\200159c0\install\root_2001f482\hsps\00\rootconfiguration.xml \private\200159c0\install\root_2001f482\hsps\00\rootconfiguration.xml
-
-#endif // __LAYOUT_360_640_TOUCH || __LAYOUT_640_360_TOUCH
-
-#endif  // __ROOT_2001F482_VARIANT_IBY__
--- a/idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/00/templateview.xml	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/00/templateview.xml	Wed Apr 14 15:47:59 2010 +0300
@@ -135,6 +135,12 @@
                     <property name="hs_remove_view"/>
                     <property name="hs_change_wallpaper"/>
                 </menuitemgroup>
+                <menuitemgroup id="ContextMenu/EditMode">
+                    <property name="hs_remove_widget"/>
+                    <property name="hs_widget_settings"/>
+                    <property name="hs_widget_general_1"/>
+                    <property name="hs_widget_general_2"/>
+                </menuitemgroup>
                 <!-- These items are always shown, if not otherwise changed in the declaration -->
                 <menuitemgroup id="Menu/AlwaysShown">
                     <property name="hs_show_help"/>
Binary file idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48b.confml has changed
--- a/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48b.gcfml	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48b.gcfml	Wed Apr 14 15:47:59 2010 +0300
@@ -68,7 +68,7 @@
 								<xsl:attribute name="template_id"><xsl:value-of select="TemplateIdentifier"/></xsl:attribute>
 								<xsl:attribute name="locking_status"><xsl:value-of select="LockingStatus"/></xsl:attribute>
 								<xsl:if test="ShortcutWidget = 1">
-								    <intial_settings>
+								    <initial_settings>
 								      <settings>
 								        <xsl:if test="Customize1Shortcut = 1">
 								          <item>
@@ -127,7 +127,7 @@
 								          </item>
 				                </xsl:if>
 				              </settings>
-				            </intial_settings>
+				            </initial_settings>
 			            </xsl:if>
 							</plugin>
 						</xsl:for-each>
Binary file idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bmanifest.confml has changed
Binary file idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bxuikon.confml has changed
--- a/idlehomescreen/data/qhd_tch/view_2001f48b/rom/view_variant.iby	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_2001f48b/rom/view_variant.iby	Wed Apr 14 15:47:59 2010 +0300
@@ -22,7 +22,7 @@
 #if defined(__LAYOUT_360_640_TOUCH) || defined(__LAYOUT_640_360_TOUCH)
 
 // Enabled by variation tools, variant specific
-//data=ZPRIVATE\200159c0\install\view_2001f48b\hsps\00\viewconfiguration.xml \private\200159c0\install\view_2001f48b\hsps\00\viewconfiguration.xml
+data=ZPRIVATE\200159c0\install\view_2001f48b\hsps\00\viewconfiguration.xml \private\200159c0\install\view_2001f48b\hsps\00\viewconfiguration.xml
 
 #endif // __LAYOUT_360_640_TOUCH || __LAYOUT_640_360_TOUCH
 
--- a/idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/00/View.xml	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/00/View.xml	Wed Apr 14 15:47:59 2010 +0300
@@ -135,6 +135,12 @@
                     <property name="hs_remove_view"/>
                     <property name="hs_change_wallpaper"/>
                 </menuitemgroup>
+                <menuitemgroup id="ContextMenu/EditMode">
+                    <property name="hs_remove_widget"/>
+                    <property name="hs_widget_settings"/>
+                    <property name="hs_widget_general_1"/>
+                    <property name="hs_widget_general_2"/>
+                </menuitemgroup>
                 <!-- These items are always shown, if not otherwise changed in the declaration -->
                 <menuitemgroup id="Menu/AlwaysShown">
                     <property name="hs_show_help"/>
Binary file idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4.confml has changed
--- a/idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4.gcfml	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4.gcfml	Wed Apr 14 15:47:59 2010 +0300
@@ -68,7 +68,7 @@
 								<xsl:attribute name="template_id"><xsl:value-of select="TemplateIdentifier"/></xsl:attribute>
 								<xsl:attribute name="locking_status"><xsl:value-of select="LockingStatus"/></xsl:attribute>
 								<xsl:if test="ShortcutWidget = 1">
-								    <intial_settings>
+								    <initial_settings>
 								      <settings>
 								        <xsl:if test="Customize1Shortcut = 1">
 								          <item>
@@ -127,7 +127,7 @@
 								          </item>
 				                </xsl:if>
 				              </settings>
-				            </intial_settings>
+				            </initial_settings>
 			            </xsl:if>
 							</plugin>
 						</xsl:for-each>
Binary file idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4manifest.confml has changed
Binary file idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4xuikon.confml has changed
--- a/idlehomescreen/data/qhd_tch/view_200286e4/xuikon/00/View.xml	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e4/xuikon/00/View.xml	Wed Apr 14 15:47:59 2010 +0300
@@ -135,6 +135,12 @@
                     <property name="hs_remove_view"/>
                     <property name="hs_change_wallpaper"/>
                 </menuitemgroup>
+                <menuitemgroup id="ContextMenu/EditMode">
+                    <property name="hs_remove_widget"/>
+                    <property name="hs_widget_settings"/>
+                    <property name="hs_widget_general_1"/>
+                    <property name="hs_widget_general_2"/>
+                </menuitemgroup>
                 <!-- These items are always shown, if not otherwise changed in the declaration -->
                 <menuitemgroup id="Menu/AlwaysShown">
                     <property name="hs_show_help"/>
Binary file idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5.confml has changed
--- a/idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5.gcfml	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5.gcfml	Wed Apr 14 15:47:59 2010 +0300
@@ -68,7 +68,7 @@
 								<xsl:attribute name="template_id"><xsl:value-of select="TemplateIdentifier"/></xsl:attribute>
 								<xsl:attribute name="locking_status"><xsl:value-of select="LockingStatus"/></xsl:attribute>
 								<xsl:if test="ShortcutWidget = 1">
-								    <intial_settings>
+								    <initial_settings>
 								      <settings>
 								        <xsl:if test="Customize1Shortcut = 1">
 								          <item>
@@ -127,7 +127,7 @@
 								          </item>
 				                </xsl:if>
 				              </settings>
-				            </intial_settings>
+				            </initial_settings>
 			            </xsl:if>
 							</plugin>
 						</xsl:for-each>
Binary file idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5manifest.confml has changed
Binary file idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5xuikon.confml has changed
--- a/idlehomescreen/data/qhd_tch/view_200286e5/xuikon/00/View.xml	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/view_200286e5/xuikon/00/View.xml	Wed Apr 14 15:47:59 2010 +0300
@@ -135,6 +135,12 @@
                     <property name="hs_remove_view"/>
                     <property name="hs_change_wallpaper"/>
                 </menuitemgroup>
+                <menuitemgroup id="ContextMenu/EditMode">
+                    <property name="hs_remove_widget"/>
+                    <property name="hs_widget_settings"/>
+                    <property name="hs_widget_general_1"/>
+                    <property name="hs_widget_general_2"/>
+                </menuitemgroup>                
                 <!-- These items are always shown, if not otherwise changed in the declaration -->
                 <menuitemgroup id="Menu/AlwaysShown">
                     <property name="hs_show_help"/>
--- a/idlehomescreen/data/qhd_tch/wideimage_2001f489/hsps/00/widgetconfiguration.xml	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/wideimage_2001f489/hsps/00/widgetconfiguration.xml	Wed Apr 14 15:47:59 2010 +0300
@@ -1,28 +1,9 @@
 <configuration>
     <control>
         <settings>
-            <item id="wideimage_plugin" name="ContentSource">
-                <property name="name" value=""/>
+            <item id="pub_id" name="ContentSource">
+                <property name="value" value=""/>
             </item>
-            <!--Def value "Test_Publisher"-->
-            <item id="pub_id" name="publisher">
-                <property name="value" value=""/> 
-            </item>          
-            <!-- Template designer choice -->
-             <item id="prop1" name="contentdata">
-                <property name="class" value="def_image"/>  
-            </item> 
-            <item id="prop2" name="contentdata">
-                <property name="class" value="def_text"/>  
-            </item> 
-            <item id="prop3" name="contentdata">
-                <property name="class" value="image1"/>  
-            </item>  
-            
-            <!-- Template designer choice -->
-            <item id="p_trigger" name="pubtrigger">   
-                <property name="name" value="selected"/> 
-            </item>                    
         </settings>
     </control>
 </configuration>
--- a/idlehomescreen/data/qhd_tch/wideimage_2001f489/rom/wideimage_resources.iby	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/wideimage_2001f489/rom/wideimage_resources.iby	Wed Apr 14 15:47:59 2010 +0300
@@ -21,7 +21,18 @@
 #if defined(__LAYOUT_360_640_TOUCH) || defined(__LAYOUT_640_360_TOUCH)
 
 // Enabled by DTD-localization tools, language specific
-data=ZPRIVATE\200159c0\install\wideimage_2001f489\xuikon\00\wideimage.o0000 \private\200159c0\install\wideimage_2001f489\xuikon\00\wideimage.o0000
+#if defined (__LOCALES_37_IBY__)
+data=ZPRIVATE\200159c0\install\wideimage_2001f489\xuikon\37\wideimage.o0037 \private\200159c0\install\wideimage_2001f489\xuikon\37\wideimage.o0037
+#endif
+#if defined  (__LOCALES_50_IBY__)
+data=ZPRIVATE\200159c0\install\wideimage_2001f489\xuikon\50\wideimage.o0050 \private\200159c0\install\wideimage_2001f489\xuikon\50\wideimage.o0050
+#endif
+#if defined  (__LOCALES_57_IBY__)
+data=ZPRIVATE\200159c0\install\wideimage_2001f489\xuikon\57\wideimage.o0057 \private\200159c0\install\wideimage_2001f489\xuikon\57\wideimage.o0057
+#endif
+#if defined  (__LOCALES_94_IBY__)
+data=ZPRIVATE\200159c0\install\wideimage_2001f489\xuikon\94\wideimage.o0094 \private\200159c0\install\wideimage_2001f489\xuikon\94\wideimage.o0094
+#endif
 
 #endif // __LAYOUT_360_640_TOUCH || __LAYOUT_640_360_TOUCH
 
--- a/idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/00/wideimage.css	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/00/wideimage.css	Wed Apr 14 15:47:59 2010 +0300
@@ -16,7 +16,7 @@
    display: block;
 }
 
-image#default_image
+image#w_default_image
 {
     padding-top:9px;
     padding-bottom:9px;
@@ -26,7 +26,7 @@
     width: 64px;
 }
 
-text#default_text
+text#w_default_text
 {
     padding-left:9px;
     padding-right:9px;
--- a/idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/00/wideimage.xml	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/00/wideimage.xml	Wed Apr 14 15:47:59 2010 +0300
@@ -3,7 +3,7 @@
     <widget id="wideimage_template" focusable="true" _s60-initial-focus="1">        
         
         <!-- Data plugin in this widget -->
-        <contentsource id="wideimage_plugin" name="" value="0x200286DD" />
+        <contentsource id="wrt_plugin" name="WRTWidget" value="0x200286DD" />
         <configuration name="service" value="Service.ContentPublishing"/>
         <configuration name="interface" value="IContentPublishing"/>
         <configuration name="command" value="GetList"/>
@@ -12,15 +12,15 @@
         <actions>
             <action>
                 <trigger name="activate"/>
-                <event id="p_trigger" name="" />            
+                <event id="w_trigger" name="WRTWidget/publisher(selected)" />            
             </action>
         </actions>
         <box id="default_container" _s60-initial-focus="1">
-            <image id="default_image">
-	            <property id="prop1" class=""/>
+            <image id="w_default_image">
+	            <property id="default_image" class="WRTWidget/def_image"/>
             </image>
-            <text id="default_text">
-            	<property id="prop2" class=""/>
+            <text id="w_default_text">
+            	<property id="default_text" class="WRTWidget/def_text"/>
             </text>
  			 </box>            
        <box id="image_container" sizeaware="true" _s60-initial-focus="1">   
@@ -31,7 +31,7 @@
                 </action>
             </actions>
             <image id="wide_image">
-                <property id="prop3" class=""/>
+                <property id="w_image" class="WRTWidget/image1"/>
                 <property class="policy/emptyContent" name="image_container" value="display: none;"/>
                 <property class="policy/Content" name="image_container" value="display: block;"/>
                 <property class="policy/Content" name="default_container" value="display: none;"/>
--- a/idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/37/wideimage.css	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/37/wideimage.css	Wed Apr 14 15:47:59 2010 +0300
@@ -16,7 +16,7 @@
    display: block;
 }
 
-image#default_image
+image#w_default_image
 {
     padding-top:9px;
     padding-bottom:9px;
@@ -26,7 +26,7 @@
     width: 64px;
 }
 
-text#default_text
+text#w_default_text
 {
     padding-left:9px;
     padding-right:9px;
--- a/idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/50/wideimage.css	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/50/wideimage.css	Wed Apr 14 15:47:59 2010 +0300
@@ -16,7 +16,7 @@
    display: block;
 }
 
-image#default_image
+image#w_default_image
 {
     padding-top:9px;
     padding-bottom:9px;
@@ -26,7 +26,7 @@
     width: 64px;
 }
 
-text#default_text
+text#w_default_text
 {
     padding-left:9px;
     padding-right:9px;
--- a/idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/57/wideimage.css	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/57/wideimage.css	Wed Apr 14 15:47:59 2010 +0300
@@ -16,7 +16,7 @@
    display: block;
 }
 
-image#default_image
+image#w_default_image
 {
     padding-top:9px;
     padding-bottom:9px;
@@ -26,7 +26,7 @@
     width: 64px;
 }
 
-text#default_text
+text#w_default_text
 {
     padding-left:9px;
     padding-right:9px;
--- a/idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/94/wideimage.css	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/94/wideimage.css	Wed Apr 14 15:47:59 2010 +0300
@@ -16,7 +16,7 @@
    display: block;
 }
 
-image#default_image
+image#w_default_image
 {
     padding-top:9px;
     padding-bottom:9px;
@@ -26,7 +26,7 @@
     width: 64px;
 }
 
-text#default_text
+text#w_default_text
 {
     padding-left:9px;
     padding-right:9px;
--- a/idlehomescreen/inc/xnmenu.h	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/inc/xnmenu.h	Wed Apr 14 15:47:59 2010 +0300
@@ -137,6 +137,12 @@
     */       
     virtual CXnNodePluginIf* SoftKeyL( XnMenuInterface::MXnMenuInterface::TSoftKeyPosition aPos ) = 0;
 
+    /**
+    * Returns softkey node, which should handle key event.     
+    * @return softkey node which should handle key event, NULL if not available. 
+    */           
+    virtual CXnNodePluginIf* KeyEventNode() = 0;
+    
    /**
     * Sets MXnMenuObserver observer
     * @since S60 5.1
@@ -152,10 +158,11 @@
 
    /**
     * Tries to display menubar
-    * @since S60 5.1    
-    * @param aMenuNodeId the menu node id
+    * @since S60 5.2    
+    * @param aMenuNodeId the menu node id        
+    * @param aContextMenu ETrue if context menu should be displayed, EFalse otherwise 
     */                      
-    virtual void TryDisplayingMenuBarL( const TDesC& aMenuNodeId ) = 0;
+    virtual void TryDisplayingMenuBarL( const TDesC& aMenuNodeId, TBool aContextMenu ) = 0;
     };
 }   
     
@@ -220,6 +227,11 @@
         */        
         CXnNodePluginIf* SoftKeyL( XnMenuInterface::MXnMenuInterface::TSoftKeyPosition aPos );
 
+        /**
+         * @see MXnMenuInterface::KeyEventNode
+         */        
+         CXnNodePluginIf* KeyEventNode();
+        
        /**
         * @see MXnMenuInterface::SetObserver
         */                
@@ -233,13 +245,13 @@
        /**
         * @see MXnMenuInterface::TryDisplayingMenuBarL
         */                       
-       void TryDisplayingMenuBarL( const TDesC& aMenuNodeId );
-       
-                              
+       void TryDisplayingMenuBarL( const TDesC& aMenuNodeId, TBool aContextMenu );
+                                                 
       /**
        * @see MXnComponentInterface::MakeInterfaceL
        */
-      XnComponentInterface::MXnComponentInterface* MakeInterfaceL( const TDesC8& aType );   
+      XnComponentInterface::MXnComponentInterface* MakeInterfaceL( const TDesC8& aType );
+      
     private:
     
         /**
--- a/idlehomescreen/inc/xnmenuadapter.h	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/inc/xnmenuadapter.h	Wed Apr 14 15:47:59 2010 +0300
@@ -148,6 +148,12 @@
         CXnNodePluginIf* SoftKeyL( XnMenuInterface::MXnMenuInterface::TSoftKeyPosition aPos );
 
         /**
+        * Returns softkey node, which should handle key event.     
+        * @return softkey node which should handle key event, NULL if not available. 
+        */                   
+        CXnNodePluginIf* KeyEventNode();
+        
+        /**
          * Finds softkey node by given position
          * @since Series 60 5.0         
          */
@@ -155,10 +161,11 @@
 
         /**
          * Tries to display menubar        
-         * @since Series 60 5.1    
+         * @since Series 60 5.2
          * @param aMenuNodeId the menu node id
+         * @param aContextMenu ETrue if context menu should be displayed, EFalse otherwise
          */        
-        void TryDisplayingMenuL( const TDesC& aMenuNodeId );
+        void TryDisplayingMenuL( const TDesC& aMenuNodeId, TBool aContextMenu );
        
     public: // from CCoeControl
 
@@ -384,6 +391,7 @@
         TBool                               iUpdateLskAppearance;
         TBool                               iUpdateMskAppearance;
         TBool                               iUpdateRskAppearance;
+        TBool                               iContextMenu;
         CXnSoftkeyItem*                     iVisibleLSK;
         CXnSoftkeyItem*                     iVisibleRSK;
         CXnSoftkeyItem*                     iVisibleMSK;
--- a/idlehomescreen/inc/xnoomsyshandler.h	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/inc/xnoomsyshandler.h	Wed Apr 14 15:47:59 2010 +0300
@@ -71,7 +71,8 @@
         EMem1MB = 1024000,
         EMem2MB = 2048000,
         EMem3MB = 3072000,
-        EMem4MB = 4096000
+        EMem4MB = 4096000,
+        EMem6MB = 6144000 
         };
 
 public: // Construction / destruction.
--- a/idlehomescreen/inc/xnpropertysubscriber.h	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/inc/xnpropertysubscriber.h	Wed Apr 14 15:47:59 2010 +0300
@@ -94,17 +94,26 @@
 
 private:
     /**
-     * From CActive.
-     * Handle completion
+     * Handles an active object's request completion event.
+     * 
+     * @see CActive::RunL
      */
     void RunL();
 
     /**
-     * From CActive.
-     * How to cancel me
+     * Implements cancellation of an outstanding request.
+     * 
+     * @see CActive::DoCancel
      */
     void DoCancel();
 
+    /**
+     * RunError
+     * 
+     * @see CActive::RunError
+     */
+    TInt RunError(TInt aError);
+    
 private:
     // Data
 
--- a/idlehomescreen/inc/xnuiengine.h	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/inc/xnuiengine.h	Wed Apr 14 15:47:59 2010 +0300
@@ -37,7 +37,6 @@
 class CXnPointerArray;
 class CXnEditor;
 class CXnEditMode;
-class CXnHitTest;
 class CXnKeyEventDispatcher;
 
 // Class declaration
@@ -243,14 +242,6 @@
     void RefreshMenuL();
 
     /**
-     * Activate a view
-     *
-     * @since Series 60 3.1
-     * @param aViewNode View node
-     */
-    void ActivateViewL( CXnNode& aViewNode );
-
-    /**
      * Returns view manager
      *
      * @since S60 5.0
@@ -414,14 +405,6 @@
     RPointerArray< CXnNode >* Plugins();
 
     /**
-     * Gets hit test
-     *
-     * @since S60 5.1
-     * @return the hittest
-     */
-    CXnHitTest& HitTest() const;
-
-    /**
      * Gets theme resource file
      *
      * @since S60 5.1
--- a/idlehomescreen/inc/xnuiengineappif.h	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/inc/xnuiengineappif.h	Wed Apr 14 15:47:59 2010 +0300
@@ -139,14 +139,6 @@
     IMPORT_C void RefreshMenuL();
 
     /**
-     * Activate a view
-     *
-     * @since Series 60 3.1
-     * @param aViewNode View node
-     */
-    IMPORT_C void ActivateViewL( CXnNodeAppIf& aViewNode );
-
-    /**
      * Returns the active view
      *
      * @since Series 60 3.1
--- a/idlehomescreen/inc/xnuienginepluginif.h	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/inc/xnuienginepluginif.h	Wed Apr 14 15:47:59 2010 +0300
@@ -127,12 +127,6 @@
      */
     IMPORT_C void SetFocusedNode( CXnNodePluginIf* aFocusedNode );
 
-    /**
-     * Restore focus to previously focused node
-     *
-     * @since Series 60 3.1
-     */
-    IMPORT_C void RestorePreviousFocusedNode();
 
     /**
      * Get the string pool
@@ -191,14 +185,6 @@
         TInt aReferenceValue );
 
     /**
-     * Activate a view
-     *
-     * @since Series 60 3.1
-     * @param aViewNode View node
-     */
-    IMPORT_C void ActivateViewL( CXnNodePluginIf& aViewNode );
-
-    /**
      * Get the size of the current screen device
      *
      * @since Series 60 3.1
@@ -253,29 +239,6 @@
      * @return ETrue if widgets visible, EFalse otherwise
      */
     IMPORT_C TBool WidgetsVisible() const;
-
-    /**
-     * Gets control defining hit region
-     *
-     * @since Series 60 5.0
-     * @return Control defining the hit region
-     */
-    IMPORT_C CXnControlAdapter* HitRegion() const;
-
-    /**
-     * Deactivates focused node
-     *
-     * @since Series 60 5.0
-     */
-    IMPORT_C void DeactivateFocusedNodeL();
-
-    /**
-     * Queries wheter focus is visible
-     *
-     * @since Series 60 5.0
-     * @return ETrue if focus is shown, EFalse otherwise
-     */
-    IMPORT_C TBool ShowFocus();
     
     /**
      * Gets a plugin node which the given node is.
@@ -285,35 +248,7 @@
      * @return A Plugin node.
      */
     IMPORT_C CXnNodePluginIf& PluginNodeL( CXnNodePluginIf* aNode );
-        
-    /**
-     * Sets focus visibility for active view
-     * @since Series 60 5.0
-     * @param aVisible Visibility state
-     */                
-    IMPORT_C void SetFocusVisibleL( TBool aVisible );
-        
-    /**
-     * Return focus visibility of active view
-     * @since Series 60 5.0
-     * @return ETrue if active view focus is visible, EFalse otherwise
-     */                
-    IMPORT_C TBool FocusVisible();
-        
-    /**
-     * Enables or disables swipe for active view
-     * @since Series 60 5.0
-     * @param aEnable True will enable swipe, false will disable
-     */                
-    IMPORT_C void EnableSwipeL( TBool aEnable );
-        
-    /**
-     * Return whether swipe is enabled or not
-     * @since Series 60 5.0
-     * @return ETrue if swipe is enable, EFalse otherwise
-     */                
-    IMPORT_C TBool SwipeEnabledL();
-    
+                                    
     /**
      * Disables layoyt and redraw, places cleanup item to cleanup stack
      * for enabling layot and redraw
--- a/idlehomescreen/inc/xnviewmanager.h	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/inc/xnviewmanager.h	Wed Apr 14 15:47:59 2010 +0300
@@ -22,7 +22,6 @@
 #include <e32base.h>
 
 // User includes
-#include "xnpropertysubscriber.h"
 
 // Forward declarations
 class CXnUiEngine;
@@ -86,8 +85,7 @@
  * @lib xn3layoutengine.lib
  * @since S60 5.0
  */
-NONSHARABLE_CLASS( CXnViewManager ) : public CBase,
-    public MXnPropertyChangeObserver
+NONSHARABLE_CLASS( CXnViewManager ) : public CBase
     {
 public:
     /**
@@ -119,14 +117,6 @@
      * 2nd phase constructor
      */
     void ConstructL();
-
-private:
-    // from MXnPropertyChangeObserver
-    
-    /**
-     * @see MXnPropertyChangeObserver
-     */
-    void PropertyChangedL( const TUint32 aKey, const TInt aValue );
     
 public:
     // New functions
@@ -212,9 +202,7 @@
     CXnOomSysHandler& OomSysHandler() const;
     
     void UpdatePageManagementInformationL();
-    
-    TBool UiStartupPhaseAllDone() const;
-            
+                  
 private:
     // new functions
     
@@ -295,12 +283,6 @@
      * Not own.
      */
     CXnUiEngine* iUiEngine;
-
-    /**
-     * UI startup phase observer
-     * Own.
-     */
-    CXnPropertySubscriber* iUiStartupPhase;
     
     /**
      * Comopser.
@@ -362,11 +344,6 @@
      * Own.
      */
     CPeriodic* iStabilityTimer;
-
-    /**
-     * Flag to indicate that UI startup phase is ready
-     */
-    TBool iUiStartupPhaseAllDone;
     
 private:   
     // Friend classes
--- a/idlehomescreen/loc/activeidle3.loc	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/loc/activeidle3.loc	Wed Apr 14 15:47:59 2010 +0300
@@ -303,3 +303,9 @@
 // w:
 // r: TB9.2
 #define qtn_hs_error_content_removed "Critical error occurred. Content removed."
+
+// d: Wait/progress note text that is shown when backup or restore process is ongoing.
+// l: popup_note_wait_window
+// w:
+// r: TB9.2
+#define qtn_hs_backup_use_prevented  "Home screen is not in use during backup or restore operation. Wait to finish."
Binary file idlehomescreen/widgetmanager/conf/widgetmanager.confml has changed
Binary file idlehomescreen/widgetmanager/conf/widgetmanager_20026F53.crml has changed
--- a/idlehomescreen/widgetmanager/group/widgetmanager.mmp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/widgetmanager/group/widgetmanager.mmp	Wed Apr 14 15:47:59 2010 +0300
@@ -54,6 +54,7 @@
 SOURCE  wminstaller.cpp
 SOURCE  wmprocessmonitor.cpp
 SOURCE  wmwidgetorderdata.cpp
+SOURCE  wmspbgcleaner.cpp 
 
 SOURCEPATH		../data
 START RESOURCE  20026F53.rss
@@ -118,4 +119,6 @@
 LIBRARY     centralrepository.lib
 LIBRARY     bmpanim.lib // AknBitmap animation
 LIBRARY     inetprotutil.lib 
+LIBRARY     browserlauncher.lib
+
 // End of file
--- a/idlehomescreen/widgetmanager/inc/wmconfiguration.h	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/widgetmanager/inc/wmconfiguration.h	Wed Apr 14 15:47:59 2010 +0300
@@ -35,7 +35,19 @@
 	{
 	
 public: // constructors and destructor
-	
+
+    /** Operator Application type */
+    enum TOpAppType
+        {
+        EUnknown,
+        ES60,
+        ECwrt,
+        EWrt,
+        EJava,
+        EQt,
+		EReserved
+        };
+
     /** Two-phased constructor. */
 	static CWmConfiguration* NewL(
 	        CWmResourceLoader& aResourceLoader );
@@ -88,16 +100,52 @@
      * @param aIndex index of the button, starting at 0
      */
     const TDesC& PortalButtonClientParam( TInt aIndex );
-        
+    
+    /**
+     * Returns bool if buttons are mirrored.
+     * @return true when operator button on left on portraid and 
+     * on top on landscape.
+     */
+    TBool PortalButtonsMirrored();
+    
+    /**
+     * Returns application type by button index
+     * @param aIndex button index
+     * @return application type
+     */
+    TOpAppType PortalButtonApplicationType( TInt aIndex );
+    
+    /**
+     * Returns application id as string
+     * @param aIndex button index
+     * @param aOperatorAppId string to get app id
+     */
+    void PortalButtonApplicationId( TInt aIndex, TDes& aOperatorAppId );
+    
+    /**
+     * Returns application id as uid
+     * @param aIndex button index
+     * @param aOperatorAppId uid to get app id
+     */
+    void PortalButtonApplicationId( TInt aIndex, TUid& aOperatorAppId );
+    
 private: // New functions
     
     void LoadConfigurationL();
     TInt FindCorrectLanguageId();
     HBufC* ReadDescParameterL( TInt aKey );
-    void ReadIntParameter( TInt aKey, TInt32& aValue );
+    void ReadInt32Parameter( TInt aKey, TInt32& aValue );
+    void ReadIntParameter( TInt aKey, TInt& aValue );
     HBufC* ReadLocalisedParameterL( TInt aOffset );
-    void IndexConversion( TInt& aIndex );
-
+    void ReadOperatorApplicationInfoL();
+    TUid StringToUid( const TDesC& aStr );
+    
+    /** Returns uid of the widget with a particular bundle identifier. */
+    TUid FetchWidgetUidFromRegistryL( const TDesC& aBundleId );
+    
+    /** sets operator icon to button if not already defined */
+    void SetOperatorIcon( TUid aUid );
+	
 private:
 
     /**
@@ -132,9 +180,9 @@
     HBufC*                  iOviStoreClientParam;
     
     /**
-     * OVI store laucher ui
+     * OVI store laucher uid
      */
-    TUid                      iOviStoreUid;
+    TUid                    iOviStoreUid;
     
     /**
      * OPERATOR button text
@@ -151,7 +199,36 @@
      */
     HBufC*                  iOperatorButtonUrl;
     
-    };
+    /**
+     * OPERATOR store button application parameter
+     */
+    HBufC*                  iOperatorParam;
+    
+    /**
+     * OPERATOR store application id as string. Used for java
+     */
+    HBufC*                  iOperatorAppIdStr;
+    
+    /**
+     * OPERATOR store application id as uid.
+     */
+    TUid                    iOperatorAppIdUid;
+        
+    /**
+     * OPERATOR store application type
+     */
+    TOpAppType              iOperatorAppType;
+        
+    /**
+     * Tells if operator button is enabled. 
+     */
+    TBool                   iOperatorButtonEnabled;
+        
+    /**
+     * Tells if buttons need to be mirrored for operator. 
+     */
+    TBool                   iButtonsMirrored;
+	};
 
 #endif // WMCONFIGURATION_H
 
--- a/idlehomescreen/widgetmanager/inc/wmcrkeys.h	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/widgetmanager/inc/wmcrkeys.h	Wed Apr 14 15:47:59 2010 +0300
@@ -53,18 +53,46 @@
 
 
 // ************************************************************
-// NON-LOCALISED parameters
+// NON-LOCALISED OVI parameters
 // ************************************************************
 
 /** Key to Ovi Store Client param */
 const TUint32 KOviStoreClientParam = 0x1F;
 
+/** Key to Ovi Store client Uid */
+const TUint32 KOviStoreUid = 0x20;
+
+// ************************************************************
+// NON-LOCALISED Operator parameters
+// ************************************************************
+
 /** Key to Operator button icon */
-const TUint32 KOperatorButtonIcon = 0x20;
+const TUint32 KOperatorButtonEnabled = 0x21;
+
+/** Key to Operator button icon */
+const TUint32 KOperatorButtonIcon = 0x22;
 
-/** Key to Ovi Store client Uid */
-const TUint32 KOviStoreUid = 0x21;
+/** 
+ * Key to Operator application type and id.
+ * Give ':' as separator between type and id.
+ * Type can be s60, cwrt, wrt, java, qt
+ * Examples:
+ * s60:0x10005902                           Application Uid as id
+ * cwrt:ovi.serviceui.SSOUI                 BundleId as id
+ * wrt:com.accuweather.widget.touchNG       BundleId as id
+ * java:c:/sys/bin/javastore.jar            full path for java app
+ * qt:0x2001A9CA                            Application Uid as id
+ */
+const TUint32 KOperatorAppTypeAndId = 0x23;
 
+/** Key to Operator application param */
+const TUint32 KOperatorParam = 0x24;
+
+/** 
+ * Key to define if operator button needs to be placed to left in landscape and
+ * top on portraid. By default it's right and bottom. 
+ */
+const TUint32 KOperatorButtonHigherPriority = 0x25;
 
 
 #endif // __WMCRKEYS_H__
--- a/idlehomescreen/widgetmanager/inc/wmlistbox.h	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/widgetmanager/inc/wmlistbox.h	Wed Apr 14 15:47:59 2010 +0300
@@ -75,6 +75,11 @@
     void ResizeDefaultBitmaps();
     
     /**
+     * sets item height according to layout 
+     */
+    void UpdateItemHeight();
+    
+    /**
      * Responds to skin changed event.
      */
     void HandleSkinChanged();
--- a/idlehomescreen/widgetmanager/inc/wmmaincontainer.h	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/widgetmanager/inc/wmmaincontainer.h	Wed Apr 14 15:47:59 2010 +0300
@@ -158,7 +158,7 @@
     /** 
 	 * executes findbox deactivation 
 	 */
-    void DeactivateFindPaneL();
+    void DeactivateFindPaneL(TBool aLayout = ETrue);
 	
     /** 
      * sorts the widget list in alphabetical order
@@ -194,6 +194,13 @@
 
 public:
 
+	/**
+     * Handles focus changed events.
+     *
+     * @see CCoeControl::FocusChanged
+     */    
+    void FocusChanged( TDrawNow aDrawNow );    
+	
     /**
      * Handles key events.
      * 
@@ -317,6 +324,8 @@
     TKeyResponse HandleSearchKeyEventL( 
             const TKeyEvent& aKeyEvent, 
             TEventCode aType );
+    TInt OperatorButtonHigherPriority( TInt aIndex );
+    
 private:
 
     /**
--- a/idlehomescreen/widgetmanager/inc/wmmaincontainerview.h	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/widgetmanager/inc/wmmaincontainerview.h	Wed Apr 14 15:47:59 2010 +0300
@@ -21,8 +21,8 @@
 
 #include <aknview.h>
 
-
 class CWmMainContainer;
+class CWmSpBgCleaner;
 class CWmPlugin;
 
 /**
@@ -103,13 +103,6 @@
 		TUid aCustomMessageId,
 		const TDesC8& aCustomMessage );
 	
-   /**
-     * Event handler for status pane size changes.
-     * 
-     * @see CAknView::HandleStatusPaneSizeChange
-     */
-	void HandleStatusPaneSizeChange();
-
 protected:	// From MEikMenuObserver
     /*
      * Menu observer interface.
@@ -139,6 +132,11 @@
      */
 	CWmMainContainer* iWmMainContainer;
 
+    /** 
+     * Statuspane background cleaner 
+     */
+	CWmSpBgCleaner* iWmSpBgCleaner;
+	
 	/** 
 	 * the plugin root (not owned) 
 	 */
--- a/idlehomescreen/widgetmanager/inc/wmportalbutton.h	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/widgetmanager/inc/wmportalbutton.h	Wed Apr 14 15:47:59 2010 +0300
@@ -20,6 +20,8 @@
 #define ___WMPORTALBUTTON_H__
 
 #include <aknbutton.h>	// CAknButton
+#include <AknServerApp.h> //MAknServerAppExitObserver
+
 #include "wmimageconverter.h"
 #include "wmcommon.h"
 
@@ -28,6 +30,7 @@
 class CFbsBitmap;
 class CWmConfiguration;
 class CWmProcessMonitor;
+class CBrowserLauncher;
 
 /**
  * Portal button ( ovi, operator ) class for Wm
@@ -36,7 +39,8 @@
  */
 NONSHARABLE_CLASS( CWmPortalButton ) : public CAknButton,
                                        public MConverterObserver,
-                                       public MCoeControlObserver
+                                       public MCoeControlObserver,
+                                       public MAknServerAppExitObserver
     {
 public:
     /*
@@ -83,6 +87,11 @@
     /** Observes the button's own activity  */
     void HandleControlEventL( CCoeControl* aControl, TCoeEvent aEventType );
     
+protected: // from MAknServerAppExitObserver
+
+    /** Observes when browser is exited  */
+    void HandleServerAppExit( TInt aReason );
+    
 protected: // from CCoeControl
 
     /** Handles pointer events.  */
@@ -110,14 +119,25 @@
                    const TDesC& aText, 
                    TAknTextComponentLayout& aLayout,
                    TInt aMargin ) const;
-    /** Runs operator button action */
-    void RunOperatorL( CWmConfiguration& aConf );
     
     /** Runs ovi store launcher */
     void RunOviL( CWmConfiguration& aConf );
     
     /**  Starts browser */ 
-    void StartBrowserL( CWmConfiguration& aConf  );
+    void StartBrowserL( const TDesC& aUrl );
+    
+	/** Starts operator application */
+    void RunOperatorApplicationL( CWmConfiguration& aConf );
+    
+	/** Starts rprocess by given values */
+    void StartProcessL( TUid aUid, const TDesC& aParam );
+    	
+    /**
+     * Opens cwrt/wrt widget to fullscreen. 
+     * @param aAppUid Uid of the widget
+     * @param aParams Optional parameters
+     * */
+    void StartWidgetL( TUid aAppUid, const TDesC& aParams );
     
 private: //data members
 
@@ -142,8 +162,16 @@
     /** icon mask */
     CFbsBitmap* iButtonIconMask;
 	
-    /** Monitors process */
-    CWmProcessMonitor* iProcessMonitor; 
+    /**
+     * Monitors process 
+     */
+    CWmProcessMonitor* iProcessMonitor;
+
+    /** 
+     * Broswer launcher. 
+     */
+    CBrowserLauncher* iBrowserLauncher;
+
  	};
 
 #endif //___WMPORTALBUTTON_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/inc/wmspbgcleaner.h	Wed Apr 14 15:47:59 2010 +0300
@@ -0,0 +1,76 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Declares statuspane's background cleaner.
+*
+*/
+
+#ifndef __WMSPBGCLEANER_
+#define __WMSPBGCLEANER_
+
+// Forward declarations
+
+/**
+ * Statuspane background cleaner.
+ * 
+ * @class   CWmSpBgCleaner wmspbgcleaner.h
+ */
+NONSHARABLE_CLASS( CWmSpBgCleaner ) : public CCoeControl
+    {
+public:
+    /**
+     * Two-phased constructors.
+     */
+    static CWmSpBgCleaner* NewL();
+    static CWmSpBgCleaner* NewLC();
+    
+    /** Destructor */
+    ~CWmSpBgCleaner();
+    
+private:    
+    /** constructor */
+    CWmSpBgCleaner();
+    
+    /** 2nd phase constructor */
+    void ConstructL();
+    
+
+protected: // from base class CCoeControl
+    
+    /**
+     * Handles a change to the control's resources
+     * 
+     * @see CCoeControl::HandleResourceChange
+     */
+    void HandleResourceChange( TInt aType );
+
+    /**
+     * Sets the control's extent, specifying a rectangle.
+     * 
+     * @see CCoeControl::SizeChanged
+     */
+    void SizeChanged();
+
+    /*
+     * Draws the control.
+     * 
+     * @see CCoeControl::Draw
+     */
+    void Draw( const TRect& aRect ) const;
+
+private:
+
+    };
+
+#endif // __WMSPBGCLEANERCTRL_
--- a/idlehomescreen/widgetmanager/inc/wmwidgetdata.h	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/widgetmanager/inc/wmwidgetdata.h	Wed Apr 14 15:47:59 2010 +0300
@@ -193,7 +193,7 @@
     inline const CHsContentInfo& HsContentInfo() const;
 
     /** widget name */
-    inline const TDesC& Name() const;
+    const TDesC& Name() const;
 
     /** widget uid */
     inline TUid Uid() const;
@@ -229,7 +229,7 @@
     void VisualizeUninstallL();
 	
     /** stop uninstallation animation */
-    void StopUninstallAnimationL();
+    void StopUninstallAnimation();
     
 protected: // from MConverterObserver
 
--- a/idlehomescreen/widgetmanager/inc/wmwidgetdata.inl	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/widgetmanager/inc/wmwidgetdata.inl	Wed Apr 14 15:47:59 2010 +0300
@@ -27,10 +27,6 @@
     inline const CHsContentInfo& CWmWidgetData::HsContentInfo() const
         { return *iHsContentInfo; }
 
-    /** widget name */
-    inline const TDesC& CWmWidgetData::Name() const
-        { return iHsContentInfo->Name(); }
-
     /** widget uid */
     inline TUid CWmWidgetData::Uid() const
         { return UidFromString( iHsContentInfo->Uid() ); };
--- a/idlehomescreen/widgetmanager/src/wmconfiguration.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/widgetmanager/src/wmconfiguration.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -20,6 +20,7 @@
 #include <centralrepository.h>
 #include <StringLoader.h>
 #include <AknsConstants.h>
+#include <widgetregistryclient.h> // widget reqistry
 
 #include <widgetmanagerview.rsg>
 #include <widgetmanager.mbg>
@@ -35,6 +36,14 @@
 const TInt KLangGroupSize = KLangId1 - KLangId0;
 const TUint32 KLastLangId = KLangId9;
 
+_LIT( KOpAppTypeS60, "s60" );
+_LIT( KOpAppTypeCwrt, "cwrt" );
+_LIT( KOpAppTypeWrt, "wrt" );
+_LIT( KOpAppTypeJava, "java" );
+_LIT( KOpAppTypeQt, "qt" );
+_LIT( KSeparator, ":" );
+_LIT( KOperatorIcon, "uid(%d)");
+_LIT( KHexPrefix, "0x" );
 
 // ---------------------------------------------------------
 // CWmConfiguration::NewL
@@ -58,14 +67,15 @@
         CWmResourceLoader& aResourceLoader )
     : iResourceLoader( aResourceLoader )
 	{
-    iRepository = NULL;
+
+    // ovi
     iOviStoreUid = KNullUid;
-    iOviStoreClientParam = NULL;
-    iOviButtonTitle = NULL;
-    iOviButtonIcon = NULL;
-    iOperatorButtonTitle = NULL;
-    iOperatorButtonIcon = NULL;
-    iOperatorButtonUrl = NULL;
+
+    // operator
+    iOperatorAppIdUid = KNullUid;
+    iOperatorAppType = EUnknown;
+    iOperatorButtonEnabled = EFalse;
+    iButtonsMirrored = EFalse;
 	}
 
 // ---------------------------------------------------------
@@ -75,12 +85,16 @@
 CWmConfiguration::~CWmConfiguration()
 	{
     delete iRepository;
+    // ovi
     delete iOviStoreClientParam;
     delete iOviButtonTitle;
     delete iOviButtonIcon;
+    // operator
     delete iOperatorButtonTitle;
     delete iOperatorButtonIcon;
     delete iOperatorButtonUrl;
+    delete iOperatorParam;
+    delete iOperatorAppIdStr;
 	}
 
 // ---------------------------------------------------------
@@ -118,18 +132,23 @@
     iRepository = CRepository::NewL( 
             TUid::Uid( KCrWidgetManagerm ) );
 
-    // read fixed parameters
-    ReadIntParameter( KOviStoreUid, iOviStoreUid.iUid );
+    // read Ovi parameters
+    ReadInt32Parameter( KOviStoreUid, iOviStoreUid.iUid );
     iOviStoreClientParam = ReadDescParameterL( KOviStoreClientParam ); 
-    // determine language and read localised parameters
-    iLanguageIndex = FindCorrectLanguageId();
-    iOperatorButtonTitle = ReadLocalisedParameterL( KLangOffsetOperatorText );
-    iOperatorButtonUrl = ReadLocalisedParameterL( KLangOffsetOperatorUrl );
-
-    if ( iOperatorButtonUrl && iOperatorButtonUrl->Length() > 0 )
+    
+    // read operator parameters if operator button enabled
+    ReadIntParameter( KOperatorButtonEnabled, iOperatorButtonEnabled );
+    if ( iOperatorButtonEnabled )
         {
-        // construct the operator button icon.
+        // determine language and read localised parameters
+        iLanguageIndex = FindCorrectLanguageId();
+        iOperatorButtonTitle = ReadLocalisedParameterL( KLangOffsetOperatorText );
+        iOperatorButtonUrl = ReadLocalisedParameterL( KLangOffsetOperatorUrl );
+        // read non-localised parameters
         iOperatorButtonIcon = ReadDescParameterL( KOperatorButtonIcon );
+        ReadOperatorApplicationInfoL();
+        iOperatorParam = ReadDescParameterL( KOperatorParam );
+        ReadIntParameter( KOperatorButtonHigherPriority, iButtonsMirrored );
         }
 
     delete iRepository;
@@ -191,17 +210,26 @@
     }
 
 // ---------------------------------------------------------
+// CWmConfiguration::ReadInt32ParameterIntL
+// ---------------------------------------------------------
+//
+void CWmConfiguration::ReadInt32Parameter( TInt aKey, TInt32& aValue )
+    {
+    TInt value = 0;
+	if ( iRepository->Get( aKey, value ) == KErrNone )
+	    {
+        aValue = value;
+	    }
+    }
+
+// ---------------------------------------------------------
 // CWmConfiguration::ReadIntParameterIntL
 // ---------------------------------------------------------
 //
-void CWmConfiguration::ReadIntParameter( TInt aKey, TInt32& aValue )
+void CWmConfiguration::ReadIntParameter( TInt aKey, TInt& aValue )
     {
-    TInt read = KErrNone;
-    TInt err = iRepository->Get( aKey, read );
-    if( err == KErrNone )
-        {
-        aValue = read;
-        }
+    aValue = 0;
+	iRepository->Get( aKey, aValue );
     }
 
 // ---------------------------------------------------------
@@ -231,14 +259,102 @@
     }
 
 // ---------------------------------------------------------
+// CWmConfiguration::ReadOperatorApplicationInfoL
+// ---------------------------------------------------------
+//
+void CWmConfiguration::ReadOperatorApplicationInfoL()
+    {
+    HBufC* applicationInfo = ReadDescParameterL( KOperatorAppTypeAndId );
+    if ( applicationInfo && applicationInfo->Des().Length() > 0 )
+        {
+        CleanupStack::PushL( applicationInfo );
+        applicationInfo->Des().TrimAll();
+
+        // parse
+        TInt separator = applicationInfo->Des().Find( KSeparator );
+        if ( separator != KErrNotFound )
+            {
+            TPtrC type = applicationInfo->Des().Left( separator );
+            TPtrC appId = applicationInfo->Des().Mid(
+                    separator + KSeparator().Length() );
+            
+            if ( !type.Compare( KOpAppTypeS60 ) )
+                {
+                iOperatorAppType = ES60;
+                iOperatorAppIdUid = StringToUid( appId );
+                SetOperatorIcon( iOperatorAppIdUid );
+                }
+            else if ( !type.Compare( KOpAppTypeCwrt ) )
+                {
+                iOperatorAppType = ECwrt;
+                iOperatorAppIdUid = FetchWidgetUidFromRegistryL( appId );
+                SetOperatorIcon( iOperatorAppIdUid );
+                }
+            else if ( !type.Compare( KOpAppTypeWrt ) )
+                {
+                iOperatorAppType = EWrt;
+                iOperatorAppIdUid = FetchWidgetUidFromRegistryL( appId );
+                SetOperatorIcon( iOperatorAppIdUid );
+                }
+            else if ( !type.Compare( KOpAppTypeJava ) )
+                {
+                //TODO: java support is not fully implemented
+                User::Leave( KErrGeneral );
+                iOperatorAppType = EJava;
+                iOperatorAppIdStr = appId.AllocL();
+                }
+            else if ( !type.Compare( KOpAppTypeQt ) )
+                {
+                iOperatorAppType = EQt;
+                iOperatorAppIdUid = StringToUid( appId );
+                SetOperatorIcon( iOperatorAppIdUid );
+                }
+            }
+        CleanupStack::PopAndDestroy( applicationInfo );
+        }
+    }
+
+// ---------------------------------------------------------
+// CWmConfiguration::SetOperatorIcon
+// ---------------------------------------------------------
+//
+void CWmConfiguration::SetOperatorIcon( TUid aUid )
+    {
+    if ( iOperatorButtonIcon &&
+        !iOperatorButtonIcon->Des().Length() )
+        {
+        delete iOperatorButtonIcon;
+        iOperatorButtonIcon = NULL;
+        TRAP_IGNORE( iOperatorButtonIcon = HBufC::NewL(
+                KMaxUidName + KOperatorIcon().Length() ) );
+        iOperatorButtonIcon->Des().Format(
+                KOperatorIcon(), aUid );
+        }
+    }
+
+// ---------------------------------------------------------
+// CWmConfiguration::FetchWidgetUidFromRegistryL
+// ---------------------------------------------------------
+//
+TUid CWmConfiguration::FetchWidgetUidFromRegistryL(
+    const TDesC& aBundleId )
+    {
+    RWidgetRegistryClientSession clientSession;
+    User::LeaveIfError( clientSession.Connect() );
+    CleanupClosePushL( clientSession );
+    TInt ret = clientSession.GetWidgetUidL( aBundleId );
+    clientSession.Disconnect();
+    CleanupStack::PopAndDestroy( &clientSession );
+    return TUid::Uid( ret );
+    }
+     
+// ---------------------------------------------------------
 // CWmConfiguration::PortalButtonCount
 // ---------------------------------------------------------
 //
 TInt CWmConfiguration::PortalButtonCount()
     {
-    if ( iOperatorButtonUrl && iOperatorButtonUrl->Length() > 0 )
-        return 2;
-    return 1;
+    return ( iOperatorButtonEnabled ? 2 : 1 );
     }
 
 // ---------------------------------------------------------
@@ -247,10 +363,9 @@
 //
 const TDesC& CWmConfiguration::PortalButtonText( TInt aIndex )
     {
-    IndexConversion( aIndex );
     if ( aIndex == 0 && iOviButtonTitle )
         return *iOviButtonTitle;
-    if ( aIndex == 1 && iOperatorButtonTitle )
+    if ( aIndex == 1 && iOperatorButtonTitle && iOperatorButtonEnabled )
         return *iOperatorButtonTitle;
     return KNullDesC;
     }
@@ -261,10 +376,9 @@
 //
 const TDesC& CWmConfiguration::PortalButtonIcon( TInt aIndex )
     {
-    IndexConversion( aIndex );
     if ( aIndex == 0 && iOviButtonIcon )
         return *iOviButtonIcon;
-    if ( aIndex == 1 && iOperatorButtonIcon )
+    if ( aIndex == 1 && iOperatorButtonIcon && iOperatorButtonEnabled )
         return *iOperatorButtonIcon;
     return KNullDesC;
     }
@@ -275,7 +389,8 @@
 //
 const TDesC& CWmConfiguration::PortalButtonBrowserUrl( TInt aIndex )
     {
-    if ( aIndex == 1 && iOperatorButtonUrl )
+    // No support for ovi here
+    if ( aIndex == 1 && iOperatorButtonUrl && iOperatorButtonEnabled )
         return *iOperatorButtonUrl;
     return KNullDesC;
     }
@@ -290,10 +405,8 @@
         {
         return iOviStoreUid;
         } 
-    // Operator client uid not supported. 
-    // If operator client is a widget we can use widget registry 
-    // to fetch uid of operator widget save it to member and return that here
-    
+    // operator not supported. Get operator data using 
+    // PortalButtonApplicationInfoL
     return KNullUid;
     }
 
@@ -307,25 +420,93 @@
         {
         return *iOviStoreClientParam;
         }
-    // Operator client param not supported. Can be added if needed.
+    if ( aIndex == 1 && iOperatorParam && iOperatorButtonEnabled )
+        {
+        return *iOperatorParam;
+        }
     return KNullDesC;
     }
 
+// ---------------------------------------------------------
+// CWmConfiguration::PortalButtonsMirrored
+// ---------------------------------------------------------
+//
+TBool CWmConfiguration::PortalButtonsMirrored()
+    {
+    return iButtonsMirrored;
+    } 
+   
+// ---------------------------------------------------------
+// CWmConfiguration::PortalButtonApplicationType
+// ---------------------------------------------------------
+//
+CWmConfiguration::TOpAppType CWmConfiguration::PortalButtonApplicationType( 
+        TInt aIndex )
+    {
+    if ( aIndex == 1 )
+        {
+        return iOperatorAppType;
+        }
+    // no support for ovi
+    return EUnknown;
+    }
+
+// ---------------------------------------------------------
+// CWmConfiguration::PortalButtonApplicationId
+// ---------------------------------------------------------
+//
+void CWmConfiguration::PortalButtonApplicationId( 
+        TInt aIndex, TDes& aOperatorAppId )
+    {
+    if ( aIndex == 1 )
+        {
+        aOperatorAppId.Copy( *iOperatorAppIdStr );
+        }
+    // no support for ovi
+    }
+
+// ---------------------------------------------------------
+// CWmConfiguration::PortalButtonApplicationId
+// ---------------------------------------------------------
+//
+void CWmConfiguration::PortalButtonApplicationId( 
+        TInt aIndex, TUid& aOperatorAppId )
+    {
+    if ( aIndex == 1 )
+        {
+        aOperatorAppId = iOperatorAppIdUid; 
+        }
+    // no support for ovi
+    }
+
+// ---------------------------------------------------------
+// CWmConfiguration::StringToUid
+// ---------------------------------------------------------
+//
+TUid CWmConfiguration::StringToUid( const TDesC& aStr )
+    {
+    if ( aStr.Length() > 0 && aStr.Find( KHexPrefix ) == 0 )
+        {
+        // hex value 0x12345678
+        TLex lex( aStr.Mid( KHexPrefix().Length() ) );
+        TUint id = 0;
+        if ( lex.Val( id, EHex ) == KErrNone )
+            {
+            return TUid::Uid( (TInt)id );
+            }
+        }
+    else if (  aStr.Length() > 0 )
+        {
+        TLex lex( aStr );
+        TUint id( 0 );
+        if (  KErrNone == lex.Val( id ) )
+            {
+            return TUid::Uid( (TInt)id );
+            }
+        }
+    return KNullUid;
+    }
+
 
-// ---------------------------------------------------------
-// CWmConfiguration::IndexConversion
-// ---------------------------------------------------------
-//
-void CWmConfiguration::IndexConversion( TInt& /*aIndex*/ )
-    {
-    // if there is a need to configure switching button places
-    // (operator button left, then OVI button) then this method
-    // would have something like this:
-    
-    // if ( iSwitchButtons ) aIndex = 1 - aIndex;
-    
-    // but for now, this method is empty.
-    }
-
 // End of File
 
--- a/idlehomescreen/widgetmanager/src/wmdetailsdlg.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/widgetmanager/src/wmdetailsdlg.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -180,12 +180,11 @@
                     EEikEdwinAvkonDisableCursor |
                     EEikEdwinDisplayOnly |
                     EEikEdwinReadOnly );
+    iRtEditor->EnableKineticScrollingL( ETrue );
 
     CEikScrollBarFrame* scrollBarFrame = iRtEditor->CreateScrollBarFrameL();
     scrollBarFrame->SetScrollBarVisibilityL( CEikScrollBarFrame::EOff,
-                                             CEikScrollBarFrame::EOff ); // set to EAuto 
-                                             // when layout fixed. ~wk04_2010
-                                             // currently scrollbar overlaps cba.
+                                             CEikScrollBarFrame::EAuto );
     
     iMarquee = CAknMarqueeControl::NewL();
     TCallBack callback( RedrawCallback, this );
@@ -225,18 +224,12 @@
     TCharFormatMask charFormatMask;
     CParaFormat paraFormat;
     TParaFormatMask paraFormatMask;
-    if ( Layout_Meta_Data::IsMirrored() )
-        {
-        paraFormat.iHorizontalAlignment = CParaFormat::ERightAlign;
-        }
-    else
-        {
-        paraFormat.iHorizontalAlignment = CParaFormat::ELeftAlign;
-        }
+    paraFormat.iHorizontalAlignment = CParaFormat::ELeftAlign;
     charFormat.iFontPresentation.iTextColor = color;
     paraFormatMask.SetAttrib(EAttAlignment);
     charFormatMask.SetAttrib(EAttFontTypeface);
     charFormatMask.SetAttrib(EAttFontHeight);
+    paraFormatMask.SetAttrib(EAttLineSpacing);
     charFormatMask.SetAttrib(EAttColor);
     iRtEditor->ApplyParaFormatL(&paraFormat, paraFormatMask);
     iRtEditor->ApplyCharFormatL(charFormat, charFormatMask);
@@ -401,7 +394,6 @@
     TRect rect = Rect();
     TRect innerRect( rect );
     TRgb color = KRgbBlack;
-    const TInt offSet = 5;
 
     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
     MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
@@ -478,22 +470,6 @@
     const TInt KBorderWidth = 2;
     gc.SetPenSize( TSize( KBorderWidth, KBorderWidth ) );    
     gc.DrawRoundRect( innerRect, TSize( KFrameRoundRadius, KFrameRoundRadius ) );
-    
-    // draw shadow
-    gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
-    gc.SetPenStyle( CGraphicsContext::ESolidPen );
-    gc.SetBrushColor( color );
-    gc.SetPenColor( color );
-    TRect rightShadowArea = Rect();
-    rightShadowArea.iTl.iX = rightShadowArea.iBr.iX - offSet;
-    rightShadowArea.iTl.iY += offSet/2;
-    gc.DrawRect(rightShadowArea);
-    TRect bottomShadowArea = Rect();
-    bottomShadowArea.iTl.iX += offSet/2;
-    bottomShadowArea.iTl.iY += bottomShadowArea.iBr.iY - offSet;
-    gc.DrawRect( bottomShadowArea );
-    gc.SetBrushStyle( CGraphicsContext::ENullBrush );
-    gc.SetPenStyle( CGraphicsContext::ENullPen );
     }
 
 // ---------------------------------------------------------
--- a/idlehomescreen/widgetmanager/src/wmeffectmanager.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/widgetmanager/src/wmeffectmanager.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -131,7 +131,7 @@
     // fullscreen effect may contain unwanted parts (dialog, note, etc.)
     // which was shown when fullscreen effect is about to be started
     iCoeEnv.WsSession().Finish();
-    User::After( 1000 );
+    User::After( 1 );
 
     const TInt flags( AknTransEffect::TParameter::EActivateExplicitCancel );
     const TUid targetAppUid( iAvkonAppUi->Application()->AppDllUid() );
--- a/idlehomescreen/widgetmanager/src/wminstaller.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/widgetmanager/src/wminstaller.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -119,19 +119,19 @@
 void CWmInstaller::RunL()
     {
     // if error has occurred, stop uninstallation animation.
-    if ( iStatus.Int() != KErrNone )
+    CWmWidgetData* widget = 
+            iWmPlugin.GetUninstalledWidgetByUid( iUid );
+    if ( widget )
         {
-        CWmWidgetData* widget = 
-                iWmPlugin.GetUninstalledWidgetByUid( iUid );
-        if ( widget )
-            {
-            widget->StopUninstallAnimationL();
-            }
-        
-        // display error note
+        widget->StopUninstallAnimation();
+        }
+
+    if ( KErrNone !=  iStatus.Int() )
+        {
+        // display error note incase of error
         CEikonEnv::Static()->HandleError( iStatus.Int() );
         }
-    
+
     // close SWI session
     if ( iIdle && iIdle->IsActive() )
         {
@@ -163,7 +163,14 @@
 // ---------------------------------------------------------
 //
 TInt CWmInstaller::RunError(TInt /*aError*/)
-    {   
+    {
+     // if error has occurred, stop uninstallation animation.
+    CWmWidgetData* widget = 
+            iWmPlugin.GetUninstalledWidgetByUid( iUid );
+    if ( widget )
+        {
+        widget->StopUninstallAnimation();
+        }
     // close SWI session
     if ( iIdle && iIdle->IsActive() )
         {
@@ -193,6 +200,9 @@
         {
         delete iMime;
         iMime = NULL;
+        CloseSwiSession( this );
+        
+        // re-open session to swi server
         User::LeaveIfError( iInstaller.Connect() );
         iMime = ( ( aData->WrtType() == CWmWidgetData::EWgt ) ?
             KCWrtMime().AllocL() : KWrtMime().AllocL() );
--- a/idlehomescreen/widgetmanager/src/wmlistbox.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/widgetmanager/src/wmlistbox.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -166,6 +166,26 @@
         iDefaultLogoImageMask, size, EAspectRatioPreserved );
     }
 	
+
+// ---------------------------------------------------------
+// CWmListItemDrawer::UpdateItemHeight
+// ---------------------------------------------------------
+//
+void CWmListItemDrawer::UpdateItemHeight()
+    {
+    // sets item height according to layout
+    TAknWindowLineLayout listPane = AknLayoutScalable_Apps
+        ::list_wgtman_pane().LayoutLine();
+    TAknLayoutRect listPaneRect;
+    listPaneRect.LayoutRect( iListBox->Rect(), listPane );
+    TAknWindowLineLayout listRowPane = AknLayoutScalable_Apps
+        ::listrow_wgtman_pane().LayoutLine();
+    TAknLayoutRect listRowPaneRect;
+    listRowPaneRect.LayoutRect( listPaneRect.Rect(), listRowPane );
+    iListBox->View()->SetItemHeight( listRowPaneRect.Rect().Height() );
+    iListBox->View()->ItemDrawer()->SetItemCellSize( listRowPaneRect.Rect().Size() );
+    }
+
 // ---------------------------------------------------------
 // CWmListItemDrawer::DrawItem
 // ---------------------------------------------------------
@@ -571,7 +591,8 @@
                     static_cast <CWmListItemDrawer*>( iItemDrawer );
     if ( itemDrawer )
         {
-        return itemDrawer->ResizeDefaultBitmaps();
+        itemDrawer->UpdateItemHeight();
+        itemDrawer->ResizeDefaultBitmaps();
         }
     }
 
--- a/idlehomescreen/widgetmanager/src/wmmaincontainer.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/widgetmanager/src/wmmaincontainer.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -68,6 +68,9 @@
 #include "wmconfiguration.h"
 #include "wminstaller.h"
 
+#include <hscontentcontroller.h> // content control api
+#include <hscontentinfoarray.h> // content control api
+
 // CONSTANTS
 const TInt KTextLimit = 40; // Text-limit for find-field
 const TInt KMinWidgets = 1; // minimum number of widgets to show findpane
@@ -93,6 +96,8 @@
 //
 CWmMainContainer::~CWmMainContainer()
 	{
+    TRAP_IGNORE(DeactivateFindPaneL(EFalse));
+    
     delete iWidgetLoader;
 
     RemoveCtrlsFromStack();
@@ -222,8 +227,18 @@
                 ::wgtman_btn_pane( variety ).LayoutLine();
         TAknWindowLineLayout operatorBtnLayout = AknLayoutScalable_Apps
                 ::wgtman_btn_pane_cp_01( variety ).LayoutLine();
-        AknLayoutUtils::LayoutControl( iPortalButtonOne, rect, oviBtnLayout );
-        AknLayoutUtils::LayoutControl( iPortalButtonTwo, rect, operatorBtnLayout );
+        
+        // button placement
+        if ( iConfiguration->PortalButtonsMirrored() )
+            {
+            AknLayoutUtils::LayoutControl( iPortalButtonOne, rect, operatorBtnLayout );
+            AknLayoutUtils::LayoutControl( iPortalButtonTwo, rect, oviBtnLayout );
+            }
+        else
+            {
+            AknLayoutUtils::LayoutControl( iPortalButtonOne, rect, oviBtnLayout );
+            AknLayoutUtils::LayoutControl( iPortalButtonTwo, rect, operatorBtnLayout );
+            }
 	    }
     
 	// layout iWidgetsList
@@ -256,12 +271,15 @@
 
     // This is a bug fix for ou1cimx1#217716 & ou1cimx1#217667.
     // For some weird reason homescreen is genarating one extra EEventKey 
-    // when using Nokia SU-8W bluetooth keyboard & backspace key. This if is to 
+    // when using bluetooth keyboard & backspace key. This if is to 
     // ignore that event. Extra event allways has iModifiers set to 
-    // EModifierAutorepeatable.
+    // EModifierAutorepeatable, EModifierKeyboardExtend and 
+    // EModifierNumLock.
     if ( aType == EEventKey && 
-             aKeyEvent.iScanCode == EStdKeyBackspace && 
-             aKeyEvent.iModifiers == EModifierAutorepeatable )
+         aKeyEvent.iScanCode == EStdKeyBackspace &&
+         aKeyEvent.iModifiers&EModifierKeyboardExtend &&
+         aKeyEvent.iModifiers&EModifierNumLock &&
+         aKeyEvent.iModifiers&EModifierAutorepeatable )
         {
         return EKeyWasConsumed;
         }
@@ -441,7 +459,7 @@
             {
             // widget list top -> up -> ovi button (portrait)
             if ( aType == EEventKey )
-                SetFocusToPortalButton( 0 );
+                SetFocusToPortalButton( OperatorButtonHigherPriority ( 0 ) );
             keyResponse = EKeyWasConsumed;
             }
         else if ( !iLandscape &&
@@ -451,7 +469,7 @@
             {
             // widget list bottom -> down -> ovi button (portrait)
             if ( aType == EEventKey )
-                SetFocusToPortalButton( 0 );
+                SetFocusToPortalButton( OperatorButtonHigherPriority ( 0 ) );
             keyResponse = EKeyWasConsumed;
             }
         else if ( iLandscape && !iMirrored &&
@@ -459,7 +477,7 @@
             {
             // widget list -> right -> ovi button (landscape normal)
             if ( aType == EEventKey )
-                SetFocusToPortalButton( 0 );
+                SetFocusToPortalButton( OperatorButtonHigherPriority ( 0 ) );
             keyResponse = EKeyWasConsumed;
             }
         else if ( iLandscape && iMirrored &&
@@ -493,8 +511,20 @@
             keyResponse = EKeyWasConsumed;
             }
         else if ( !iLandscape && !iMirrored &&
+                aKeyEvent.iScanCode == EStdKeyLeftArrow &&
+                iConfiguration->PortalButtonCount() > 1 && 
+                iConfiguration->PortalButtonsMirrored() )
+            {
+            // right portal -> left -> left portal
+            // (portrait, operator button higher priority )
+            if ( aType == EEventKey )
+                SetFocusToPortalButton( 1 );
+            keyResponse = EKeyWasConsumed;
+            }
+        else if ( !iLandscape && !iMirrored &&
                 aKeyEvent.iScanCode == EStdKeyRightArrow &&
-                iConfiguration->PortalButtonCount() > 1 )
+                iConfiguration->PortalButtonCount() > 1 && 
+                !iConfiguration->PortalButtonsMirrored() )
             {
             // left portal -> right -> right portal (portrait normal)
             if ( aType == EEventKey )
@@ -527,8 +557,20 @@
             keyResponse = EKeyWasConsumed;
             }
         else if ( iLandscape &&
+                aKeyEvent.iScanCode == EStdKeyUpArrow &&
+                iConfiguration->PortalButtonCount() > 1 &&
+                iConfiguration->PortalButtonsMirrored() )
+            {
+            // lower portal -> up -> upper portal 
+            // (landscape, operator button higher priority )
+            if ( aType == EEventKey )
+                SetFocusToPortalButton( 1 );
+            keyResponse = EKeyWasConsumed;
+            }
+        else if ( iLandscape &&
                 aKeyEvent.iScanCode == EStdKeyDownArrow &&
-                iConfiguration->PortalButtonCount() > 1 )
+                iConfiguration->PortalButtonCount() > 1 && 
+                !iConfiguration->PortalButtonsMirrored() )
             {
             // upper portal -> down -> lower portal (landscape)
             if ( aType == EEventKey )
@@ -558,8 +600,20 @@
             keyResponse = EKeyWasConsumed;
             }
         else if ( !iLandscape && !iMirrored &&
+                aKeyEvent.iScanCode == EStdKeyRightArrow &&
+                iConfiguration->PortalButtonCount() > 1  && 
+                iConfiguration->PortalButtonsMirrored() )
+            {
+            // left portal -> right -> right portal
+            // (portrait, operator button higher priority )
+            if ( aType == EEventKey )
+                SetFocusToPortalButton( 0 );
+            keyResponse = EKeyWasConsumed;
+            }
+        else if ( !iLandscape && !iMirrored &&
                 aKeyEvent.iScanCode == EStdKeyLeftArrow &&
-                iConfiguration->PortalButtonCount() > 1 )
+                iConfiguration->PortalButtonCount() > 1  && 
+                !iConfiguration->PortalButtonsMirrored() )
             {
             // right portal -> left -> left portal (portrait normal)
             if ( aType == EEventKey )
@@ -592,7 +646,18 @@
             keyResponse = EKeyWasConsumed;
             }
         else if ( iLandscape &&
-                aKeyEvent.iScanCode == EStdKeyUpArrow )
+                aKeyEvent.iScanCode == EStdKeyDownArrow &&
+                iConfiguration->PortalButtonsMirrored() )
+            {
+            // upper portal -> down -> lower portal 
+            // ( landscape operator button higher priority )
+            if ( aType == EEventKey )
+                SetFocusToPortalButton( 0 );
+            keyResponse = EKeyWasConsumed;
+            }
+        else if ( iLandscape &&
+                aKeyEvent.iScanCode == EStdKeyUpArrow &&
+                !iConfiguration->PortalButtonsMirrored() )
             {
             // lower portal -> up -> upper portal (landscape)
             if ( aType == EEventKey )
@@ -620,6 +685,28 @@
     return keyResponse;
     }
 
+
+// ---------------------------------------------------------
+// CWmMainContainer::OperatorButtonHigherPriority
+// ---------------------------------------------------------
+//
+TInt CWmMainContainer::OperatorButtonHigherPriority( TInt aIndex )
+    {
+    TInt ret = aIndex;
+    if ( iConfiguration->PortalButtonsMirrored() )
+        {
+        if ( aIndex == 0 )
+            {
+            ret = 1;
+            }
+        else if ( aIndex == 1 )
+            {
+            ret = 0;
+            }
+        }
+    return ret;
+    }
+
 // ---------------------------------------------------------
 // CWmMainContainer::SetFocusToPortalButton
 // ---------------------------------------------------------
@@ -1060,7 +1147,7 @@
         {
         if ( iFindbox && iFindPaneIsVisible )
             {
-            DeactivateFindPaneL();
+            DeactivateFindPaneL(EFalse);
             }
         
         if ( data && !data->IsUninstalling() )
@@ -1160,10 +1247,10 @@
 // CWmMainContainer::DeactivateFindPaneL
 // ---------------------------------------------------------------------------
 //
-void CWmMainContainer::DeactivateFindPaneL()
+void CWmMainContainer::DeactivateFindPaneL(TBool aLayout)
     {
     if( iFindbox && iFindPaneIsVisible )
-	    {
+        {
         // notify search field we're shutting down
         TKeyEvent keyEvent = { EKeyNo, EStdKeyNo, 0, 0  };
         iFindbox->OfferKeyEventL( keyEvent, EEventKey );
@@ -1186,20 +1273,23 @@
         iFindPaneIsVisible = EFalse;        
         iWidgetsList->SetFindPaneIsVisible( EFalse );       
         
-        LayoutControls();
-
-        // set soft key set
-        CEikButtonGroupContainer* cbaGroup =
-            CEikButtonGroupContainer::Current();
-        TInt cbaResourceId = ( AknLayoutUtils::MSKEnabled() ?
-                                    R_AVKON_SOFTKEYS_OPTIONS_BACK__SELECT : 
-                                    R_AVKON_SOFTKEYS_OPTIONS_BACK );
-
-        cbaGroup->SetCommandSetL( cbaResourceId );
-        cbaGroup->DrawNow();
-
-        UpdateFocusMode();
-        DrawNow();
+        if (aLayout) //no need to draw UI if exiting list
+            {
+            LayoutControls();
+    
+            // set soft key set
+            CEikButtonGroupContainer* cbaGroup =
+                CEikButtonGroupContainer::Current();
+            TInt cbaResourceId = ( AknLayoutUtils::MSKEnabled() ?
+                                        R_AVKON_SOFTKEYS_OPTIONS_BACK__SELECT : 
+                                        R_AVKON_SOFTKEYS_OPTIONS_BACK );
+    
+            cbaGroup->SetCommandSetL( cbaResourceId );
+            cbaGroup->DrawNow();
+    
+            UpdateFocusMode();
+            DrawNow();
+            }
         }
     }
 
@@ -1351,9 +1441,20 @@
         const CFbsBitmap* mask = ( data->LogoImageMask() ) ? 
                     data->LogoImageMask() : iWidgetsList->DefaultMask();
         
+        // Find out if HS is full
+        TBool hsFull = ETrue;
+        MHsContentController& controller = iWmPlugin.ContentController();
+        CHsContentInfo* activeView = CHsContentInfo::NewLC();
+        if ( controller.ActiveViewL( *activeView ) == KErrNone )
+            {
+            hsFull = activeView->IsFull();
+            }
+        CleanupStack::PopAndDestroy( activeView );
+        
         CWmDetailsDlg* dlg = CWmDetailsDlg::NewL(
-                data->Name(), data->Description(), 
-                data->HsContentInfo().CanBeAdded(),
+                data->Name(), 
+                data->Description(), 
+                !hsFull,
                 logo, mask );
 
         if ( dlg && dlg->ExecuteLD() == ECbaAddToHs )
@@ -1466,5 +1567,24 @@
     return *iWidgetsList;
     }
 
+// ----------------------------------------------------
+// CWmMainContainer::FocusChanged
+// ----------------------------------------------------
+//
+void CWmMainContainer::FocusChanged( TDrawNow aDrawNow )
+    {
+    CCoeControl::FocusChanged( aDrawNow );
+
+    if ( iFindbox && iFindPaneIsVisible && 
+        !iFindbox->IsFocused() && IsFocused() )
+        {
+        // reset focus to find pane if its lost ( ou1cimx1#308019 )
+        ResetFocus();
+        iFindbox->SetFocus( ETrue );
+        UpdateFocusMode();
+        }
+    }
+
+
 // End of File
 
--- a/idlehomescreen/widgetmanager/src/wmmaincontainerview.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/widgetmanager/src/wmmaincontainerview.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -28,14 +28,14 @@
 #include <widgetmanagerview.rsg>
 #include <hscontentcontroller.h>
 #include <AknUtils.h>
+#include <avkon.rsg>
 
 #include "wmplugin.h"
 #include "widgetmanager.hrh"
 #include "wmmaincontainerview.h"
 #include "wmresourceloader.h"
 #include "wmmaincontainer.h"
-#include <avkon.rsg>
-
+#include "wmspbgcleaner.h"
 
 // ---------------------------------------------------------
 // CWmMainContainerView::CWmMainContainerView()
@@ -46,6 +46,7 @@
     iWmPlugin( aWmPlugin )
 	{
 	iWmMainContainer = NULL;
+	iWmSpBgCleaner = NULL;
 	}
 
 // ---------------------------------------------------------
@@ -61,6 +62,13 @@
         delete iWmMainContainer;
         iWmMainContainer = NULL;
         }
+    
+    if ( iWmSpBgCleaner != NULL )
+        {
+        AppUi()->RemoveFromStack( iWmSpBgCleaner );
+        delete iWmSpBgCleaner;
+        iWmSpBgCleaner = NULL;
+        }
 	}
 
 // ---------------------------------------------------------
@@ -180,20 +188,25 @@
 	{
     // setup status pane layout
     StatusPane()->SwitchLayoutL( 
-            R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT );
-    StatusPane()->ApplyCurrentSettingsL();
-    
+            R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT );    
     // disable transparancy 
-    if ( StatusPane()->IsTransparent() )
+    StatusPane()->EnableTransparent( EFalse );
+    // apply changes 
+    StatusPane()->ApplyCurrentSettingsL();
+
+    // create container
+    if ( iWmSpBgCleaner == NULL )
         {
-        StatusPane()->EnableTransparent( EFalse );    
+        iWmSpBgCleaner = CWmSpBgCleaner::NewL();
+        iWmSpBgCleaner->SetMopParent( this );
+        AppUi()->AddToStackL( *this, iWmSpBgCleaner );
         }
 
     // title in status pane
     SetTitleL();
-    
+
     StatusPane()->DrawNow();
-    
+
     // update cba
     CEikButtonGroupContainer* bgc( Cba() );
     CEikCba* cba = static_cast< CEikCba* >( bgc->ButtonGroup() );
@@ -232,27 +245,13 @@
 		iWmMainContainer = NULL;
 		iWmPlugin.MainViewDeactivated();
 		}
-	}
 
-// ---------------------------------------------------------
-// CWmMainContainerView::HandleStatusPaneSizeChange
-// ---------------------------------------------------------
-//
-void CWmMainContainerView::HandleStatusPaneSizeChange()
-	{
-	CAknView::HandleStatusPaneSizeChange();
-	
-	// this may fail, but we're not able to propagate exceptions here
-	TVwsViewId view;
-	AppUi()->GetActiveViewId( view );
-	if ( view.iViewUid == Id() )
-		{
-		if ( iWmMainContainer ) 
-		    {
-		    iWmMainContainer->SetRect( AppUi()->ClientRect() );
-		    }
-		}
-	
+    if ( iWmSpBgCleaner != NULL )
+        {
+        AppUi()->RemoveFromStack( iWmSpBgCleaner );
+        delete iWmSpBgCleaner;
+        iWmSpBgCleaner = NULL;
+        }
 	}
 
 // ---------------------------------------------------------
@@ -429,7 +428,7 @@
 TBool CWmMainContainerView::HandleDeactivateFindPaneL()
     {
     if ( iWmMainContainer )
-        {       
+        {
         iWmMainContainer->DeactivateFindPaneL();
         }
     return ETrue;
--- a/idlehomescreen/widgetmanager/src/wmplugin.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/widgetmanager/src/wmplugin.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -118,10 +118,17 @@
             iViewAppUi->View( TUid::Uid(EWmMainContainerViewId) ) );
     if ( !IsActive() && view && iHsContentController )
         {
+        // stop displaying menubar before starting fullscreen effects
+        CEikMenuBar* menuBar = CEikonEnv::Static()->AppUiFactory()->MenuBar();
+        if ( menuBar && menuBar->IsDisplayed() )
+            {
+            menuBar->StopDisplayingMenuBar();
+            }
+
         TRAP_IGNORE( 
             iEffectManager->BeginFullscreenEffectL( 
                 KAppStartEffectStyle );
-            iViewAppUi->ActivateLocalViewL( 
+            iViewAppUi->ActivateLocalViewL(
                 TUid::Uid( EWmMainContainerViewId ) );
             );
         }
--- a/idlehomescreen/widgetmanager/src/wmportalbutton.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/widgetmanager/src/wmportalbutton.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -32,6 +32,8 @@
 #include <widgetregistryclient.h> // widgetreqistry
 #include <bacline.h>
 #include <escapeutils.h> 
+#include <browserlauncher.h>
+#include <centralrepository.h>
 
 #include "wmportalbutton.h"
 #include "wmcommon.h"
@@ -42,10 +44,7 @@
 #include "wmprocessmonitor.h"
 
 // CONSTANTS
-_LIT( KUrlPrefix, "4 ");
 
-
-const TUid KOSSBrowserUidValue = { 0x10008D39 };
 // MEMBER FUNCTIONS
 
 // ---------------------------------------------------------
@@ -78,7 +77,7 @@
 // ---------------------------------------------------------
 //
 CWmPortalButton::~CWmPortalButton()
-    {    
+    {
     delete iButtonIcon;
     delete iButtonIconMask;
     
@@ -87,6 +86,7 @@
     // for de-reference open file count, so it should be deleted last.
     delete iImageConverter;
     delete iProcessMonitor;
+    delete iBrowserLauncher;
     }
 
 // ---------------------------------------------------------
@@ -102,6 +102,7 @@
     iButtonIcon = NULL;
     iButtonIconMask = NULL;
 	iProcessMonitor = NULL;
+	iBrowserLauncher = NULL;
     }
 
 // ---------------------------------------------------------
@@ -160,18 +161,31 @@
     {
     if ( iPortalButtonIndex == 0 )
         {
+        // OVI button
         if ( !iProcessMonitor )
             {
             iProcessMonitor = CWmProcessMonitor::NewL();
             }
-		if ( !iProcessMonitor->IsActive() )
+        // if process monitor is active laucher was allready started.
+        // this is for ignoring multiple button presses
+        if ( !iProcessMonitor->IsActive() )
             {
             RunOviL( iWmMainContainer->Configuration() );
             }
         }
     else if ( iPortalButtonIndex == 1 )
         {
-        RunOperatorL( iWmMainContainer->Configuration() );
+        // OPERATOR button
+        // if this leaves it means we need to start browser
+        // becouse application info was not given
+        TRAPD( err, RunOperatorApplicationL( 
+                iWmMainContainer->Configuration() ) )
+        if ( err != KErrNone )        
+            {
+            StartBrowserL( 
+                    iWmMainContainer->Configuration().PortalButtonBrowserUrl( 
+                            iPortalButtonIndex ) );
+            }
         } 
     else
         {
@@ -186,8 +200,6 @@
 //
 void CWmPortalButton::RunOviL( CWmConfiguration& aConf )
     {
-    // param is: channel=homescreenwidgets 
-    // laucher uid: 0x2002D07F
     RApaLsSession session;
     User::LeaveIfError( session.Connect() );
     CleanupClosePushL( session );
@@ -197,13 +209,7 @@
     TUid launchUid;
     launchUid = aConf.PortalButtonClientUid( iPortalButtonIndex );
 
-    TInt err = session.GetAppInfo( appInfo, launchUid );
-    if ( err != KErrNone )
-        {
-        //This is temp until we have laucher in SDK
-        StartBrowserL( aConf );
-        }
-    else
+    if ( session.GetAppInfo( appInfo, launchUid ) == KErrNone )
         {
         // Form parameter
         HBufC* param = HBufC::NewLC( aConf.PortalButtonClientParam( iPortalButtonIndex ).Length() );
@@ -226,67 +232,39 @@
 // CWmPortalButton::StartBrowserL
 // ---------------------------------------------------------
 //
-void CWmPortalButton::StartBrowserL( CWmConfiguration& aConf )
+void CWmPortalButton::StartBrowserL( const TDesC& aUrl )
     {
-    RApaLsSession session;
-    User::LeaveIfError( session.Connect() );
-    CleanupClosePushL( session );
+    // already running/or request launch or url is empty
+    if ( iBrowserLauncher || !aUrl.Length() ) { return; } 
 
-    HBufC* param = NULL;
-    if ( iPortalButtonIndex == 1 )
-        {
-        // browser start parameter
-        param = HBufC::NewLC( 
-                aConf.PortalButtonBrowserUrl( iPortalButtonIndex ).Length() + 
-                        KUrlPrefix().Length() );
+    _LIT( KUrlPrefix, "4 ");
+    HBufC* param = HBufC::NewLC( aUrl.Length() + KUrlPrefix().Length() );
+    param->Des().Append( KUrlPrefix );
+    param->Des().Append( aUrl );
         
-        param->Des().Copy( KUrlPrefix );
-        param->Des().Append( aConf.PortalButtonBrowserUrl( iPortalButtonIndex ) );
-        }
-    else
-        {
-        // becouse launcher knows url we need to have it temp here
-        // until laucher is available
-        _LIT( KTempUrl, "4 https://store.ovi.com/applications/");
-        param = HBufC::NewLC( KTempUrl().Length() );
-        param->Des().Copy( KTempUrl );
-        }
+    // Create browser launcher
+    CBrowserLauncher* launcher = CBrowserLauncher::NewLC();
+
+    // Asynchronous operation to launch the browser with given URL
+    launcher->LaunchBrowserEmbeddedL( 
+            *param, NULL, this, NULL );
     
-    TUid id( KOSSBrowserUidValue );
-    TApaTaskList taskList( CEikonEnv::Static()->WsSession() );
-    TApaTask task = taskList.FindApp( id );
-    if( task.Exists() )
-        {
-        task.BringToForeground();
-        HBufC8* param8 = HBufC8::NewLC(param->Length());
-        param8->Des().Append(*param);
-        task.SendMessage(TUid::Uid(0), *param8); // UID not used
-        CleanupStack::PopAndDestroy(param8);
-        }
-    else
-        {
-        if( !session.Handle() )
-            {
-            User::LeaveIfError( session.Connect() );
-            }
-        TThreadId thread;
-        User::LeaveIfError(
-                session.StartDocument(*param, KOSSBrowserUidValue, thread));
-        }
-    
+    CleanupStack::Pop( launcher ); 
+    iBrowserLauncher = launcher;
+    launcher = NULL;
+
     CleanupStack::PopAndDestroy( param );
-    CleanupStack::PopAndDestroy( &session );
     }
 
 // ---------------------------------------------------------
-// CWmPortalButton::RunOperatorL
+// CWmPortalButton::HandleServerAppExit
 // ---------------------------------------------------------
 //
-void CWmPortalButton::RunOperatorL( CWmConfiguration& aConf )
+void CWmPortalButton::HandleServerAppExit( TInt aReason )
     {
-    // Current info is that this will be a widget
-    // meanwhile we just start browser
-    StartBrowserL( aConf );
+    MAknServerAppExitObserver::HandleServerAppExit( aReason );
+    delete iBrowserLauncher;
+    iBrowserLauncher = NULL;
     }
 
 // ---------------------------------------------------------
@@ -573,4 +551,95 @@
             baselineOffset, layoutText.Align() );    
     }
 
+// ---------------------------------------------------------
+// CWmPortalButton::RunOperatorApplicationL
+// ---------------------------------------------------------
+//
+void CWmPortalButton::RunOperatorApplicationL( CWmConfiguration& aConf )
+    {
+    CWmConfiguration::TOpAppType type = aConf.PortalButtonApplicationType( 1 );
+    if ( type == CWmConfiguration::EUnknown ||
+        type >= CWmConfiguration::EReserved )
+        {
+        // Leave if not found
+        User::Leave( KErrArgument );
+        }
+    
+    switch( type )
+        {
+        case CWmConfiguration::ES60:
+        case CWmConfiguration::EQt:    
+            {
+            TUid uid = KNullUid;
+            aConf.PortalButtonApplicationId( 1, uid );
+            StartProcessL( uid, aConf.PortalButtonClientParam( 1 ) );
+            }
+            break;
+        case CWmConfiguration::ECwrt:
+            {
+            TUid uid = KNullUid;
+            aConf.PortalButtonApplicationId( 1, uid );
+            StartWidgetL( uid, aConf.PortalButtonClientParam( 1 ) );
+            }
+            break;
+        case CWmConfiguration::EWrt:
+            {
+            TUid uid = KNullUid;
+            aConf.PortalButtonApplicationId( 1, uid );
+            StartWidgetL( uid, KNullDesC );
+            }
+            break;
+        case CWmConfiguration::EJava:
+            {
+            TBuf<NCentralRepositoryConstants::KMaxUnicodeStringLength> appId;
+            aConf.PortalButtonApplicationId( 1, appId );
+            //TODO:
+            }
+            break;
+        }
+    }
+
+// ---------------------------------------------------------
+// CWmPortalButton::StartProcessL
+// ---------------------------------------------------------
+//
+void CWmPortalButton::StartProcessL( TUid aUid, const TDesC& aParam )
+    {
+    RApaLsSession session;
+    User::LeaveIfError( session.Connect() );
+    CleanupClosePushL( session );
+    
+    //get app info
+    TApaAppInfo appInfo;
+    User::LeaveIfError( session.GetAppInfo( appInfo, aUid ) );
+    // do the launch
+    RProcess process;
+    User::LeaveIfError( process.Create( appInfo.iFullName, aParam ) );
+    process.Resume();
+    
+    CleanupStack::PopAndDestroy( &session );
+    }
+
+// ---------------------------------------------------------
+// CWmPortalButton::StartWidgetL
+// ---------------------------------------------------------
+//
+void CWmPortalButton::StartWidgetL( TUid aAppUid, const TDesC& aParams )
+    {
+    if ( aAppUid == KNullUid )
+        User::Leave( KErrArgument );
+    
+    HBufC* params = aParams.AllocLC();
+    
+    RApaLsSession appArc;
+    User::LeaveIfError( appArc.Connect() );
+    CleanupClosePushL( appArc );
+    
+    TThreadId threadId;
+    User::LeaveIfError( appArc.StartDocument( *params, aAppUid, threadId ) );
+    
+    CleanupStack::PopAndDestroy( &appArc );      
+    CleanupStack::PopAndDestroy( params );
+    }
+
 // End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/src/wmspbgcleaner.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -0,0 +1,131 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* statuspane transparency handling implementation
+*
+*/
+
+#include <e32base.h>
+#include <w32std.h>
+#include <AknUtils.h>
+
+#include "wmspbgcleaner.h"
+
+// CONSTANTS
+
+// ---------------------------------------------------------
+// CWmSpBgCleaner::NewL
+// ---------------------------------------------------------
+//
+CWmSpBgCleaner* CWmSpBgCleaner::NewL()
+    {
+    CWmSpBgCleaner* self = CWmSpBgCleaner::NewLC();
+    CleanupStack::Pop(); // self;
+    return self;
+    }
+
+// ---------------------------------------------------------
+// CWmSpBgCleaner::NewLC
+// ---------------------------------------------------------
+//
+CWmSpBgCleaner* CWmSpBgCleaner::NewLC()
+    {
+    CWmSpBgCleaner* self = new ( ELeave ) CWmSpBgCleaner();
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    return self;
+    }
+
+// ---------------------------------------------------------
+// CWmSpBgCleaner::CWmSpBgCleaner
+// ---------------------------------------------------------
+//
+CWmSpBgCleaner::CWmSpBgCleaner()
+    {
+    }
+
+// ---------------------------------------------------------
+// CWmSpBgCleaner::ConstructL
+// ---------------------------------------------------------
+//
+void CWmSpBgCleaner::ConstructL()
+    {
+    CreateWindowL();
+    
+    TRect statusPaneRect;
+    AknLayoutUtils::LayoutMetricsRect(
+        AknLayoutUtils::EStatusPane, statusPaneRect );
+    
+    SetRect( statusPaneRect );
+    SetNonFocusing();
+
+    Window().SetOrdinalPosition( -1 );
+    Window().SetBackgroundColor( TRgb::Color16MA(0) );
+    Window().SetVisible( ETrue );    
+    
+    ActivateL();
+    }
+
+// ---------------------------------------------------------
+// CWmSpBgCleaner::~CWmSpBgCleaner
+// ---------------------------------------------------------
+//
+CWmSpBgCleaner::~CWmSpBgCleaner()
+    {
+    }
+
+// ---------------------------------------------------------
+// CWmSpBgCleaner::SizeChanged
+// ---------------------------------------------------------
+//
+void CWmSpBgCleaner::SizeChanged()
+    {
+    CCoeControl::SizeChanged();
+    DrawDeferred();
+    }
+
+// ---------------------------------------------------------
+// CWmSpBgCleaner::Draw
+// ---------------------------------------------------------
+//
+void CWmSpBgCleaner::Draw( const TRect& /*aRect*/ ) const
+    {
+    CWindowGc& gc = SystemGc();
+    TRgb color( TRgb::Color16MA(0) );
+    gc.SetPenColor( color );
+    gc.SetBrushColor( color );    
+    gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
+    gc.SetPenStyle(CGraphicsContext::ESolidPen );
+    gc.SetBrushStyle(CGraphicsContext::ESolidBrush );
+    gc.Clear();
+    }
+
+// ---------------------------------------------------------
+// CWmSpBgCleaner::HandleResourceChange
+// ---------------------------------------------------------
+//
+void CWmSpBgCleaner::HandleResourceChange( TInt aType )
+    {
+    CCoeControl::HandleResourceChange( aType );
+    
+    if ( KEikDynamicLayoutVariantSwitch == aType )
+        {
+        TRect statusPaneRect;
+        AknLayoutUtils::LayoutMetricsRect(
+            AknLayoutUtils::EStatusPane, statusPaneRect );
+        SetRect( statusPaneRect );
+        }
+    }
+
+// End of file
--- a/idlehomescreen/widgetmanager/src/wmwidgetdata.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/widgetmanager/src/wmwidgetdata.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -420,6 +420,17 @@
 // CWmWidgetData::Description
 // ---------------------------------------------------------
 //
+const TDesC& CWmWidgetData::Name() const
+    {
+    return ( iAsyncUninstalling ? 
+        iWmResourceLoader.Uninstalling() :
+        iHsContentInfo->Name() );
+    }
+
+// ---------------------------------------------------------
+// CWmWidgetData::Description
+// ---------------------------------------------------------
+//
 const TDesC& CWmWidgetData::Description() const
     {
     if ( iHsContentInfo->Description().Length() <= 0 &&
@@ -447,7 +458,7 @@
         {
         iWait->AsyncStop();
         }
-    
+
     iFireLogoChanged = ETrue;
     iLogoSize = aSize;
     HandleIconString( HsContentInfo().IconPath() );
@@ -517,14 +528,6 @@
     {   
     DestroyAnimData();
     PrepairAnimL();
-    
-    // set copy of widget name for uninstallation error case.
-    if ( iHsContentInfo->Name().Compare( iWmResourceLoader.Uninstalling() ) !=
-        KErrNone )
-        {
-        iWidgetName = iHsContentInfo->Name().AllocL();
-        iHsContentInfo->SetNameL( iWmResourceLoader.Uninstalling() );
-        }
 
     iAsyncUninstalling = ETrue;
     iAnimationIndex = 0;
@@ -690,18 +693,10 @@
 // CWmWidgetData::StopUninstallAnimation
 // ---------------------------------------------------------
 //
-void CWmWidgetData::StopUninstallAnimationL()
+void CWmWidgetData::StopUninstallAnimation()
     {
     iAsyncUninstalling = EFalse;
     DestroyAnimData();
-    // restore widget name
-    if ( iWidgetName )
-        {
-        iHsContentInfo->SetNameL( iWidgetName->Des() );
-        delete iWidgetName;
-        iWidgetName = NULL;
-        }
-    
     FireDataChanged(); //redraw
     }
 
--- a/idlehomescreen/widgetmanager/tsrc/wmunittest/group/wmunittest.mmp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/group/wmunittest.mmp	Wed Apr 14 15:47:59 2010 +0300
@@ -56,6 +56,7 @@
 SOURCE          wminstaller.cpp
 SOURCE          wmprocessmonitor.cpp
 SOURCE          wmwidgetorderdata.cpp
+SOURCE          wmspbgcleaner.cpp 
 
 SOURCEPATH      ../src
 SOURCE          wmunittest.cpp
@@ -108,6 +109,7 @@
 LIBRARY     inetprotutil.lib
 LIBRARY     bitgdi.lib // CFbsBitmapDevice
 LIBRARY     charconv.lib
+LIBRARY     browserlauncher.lib
 
 // libraries needed by the test framework
 LIBRARY     stiftestinterface.lib
--- a/idlehomescreen/xmluicontroller/inc/appui.h	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluicontroller/inc/appui.h	Wed Apr 14 15:47:59 2010 +0300
@@ -129,7 +129,16 @@
      */
     void HandleViewActivation( const TVwsViewId& aNewlyActivatedViewId, 
         const TVwsViewId& aViewIdToBeDeactivated );
-               
+    
+private:
+    // from CCoeAppUi    
+    
+    /**
+     * Gets a list of help contexts for a particular
+     * application user interface.
+     */
+    CArrayFix<TCoeHelpContext>* HelpContextL() const;
+
 public: 
     // new functions
     
--- a/idlehomescreen/xmluicontroller/src/aieventhandler.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluicontroller/src/aieventhandler.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -30,7 +30,6 @@
 #include "xnnodeappif.h"
 #include "aistrcnv.h"
 
-#include <csxhelp/hmsc.hlp.hrh>
 #include <hlplch.h>
 
 using namespace AiXmlUiController;
@@ -59,27 +58,6 @@
 const TUid KVideoCallUid = { 0x101F8681 };
 
 // ======== LOCAL FUNCTIONS ========
-// ----------------------------------------------------------------------------
-// Shows the Homescreen specific help item
-// ----------------------------------------------------------------------------
-//
-static void ShowHelpL( const TDesC& aHelpString )
-    {
-    TUid fwUid = TUid::Uid( AI_UID3_AIFW_COMMON );
-    TCoeContextName helpString;
-    helpString.Copy( aHelpString );
-    
-    CArrayFixFlat<TCoeHelpContext>* array = 
-    new (ELeave) CArrayFixFlat<TCoeHelpContext>(1);
-    CleanupStack::PushL( array );
-    
-    array->AppendL( TCoeHelpContext( fwUid, helpString ) );
-    
-    HlpLauncher::LaunchHelpApplicationL( 
-    CCoeEnv::Static()->WsSession(), array );
-    
-    CleanupStack::Pop( array );
-    }
 
 // ---------------------------------------------------------------------------
 // Activates Phone application either in video call or normal view
@@ -175,14 +153,9 @@
             }    
         else if ( event == AiUiDef::xml::event::KEventShowHelp )
             {
-            if( iUiController.UiEngineL()->IsEditMode() )
-                {
-                ShowHelpL( KSET_HLP_HOME_SCREEN_EDIT );
-                }
-            else
-                {
-                ShowHelpL( KSET_HLP_HOME_SCREEN );
-                }
+            HlpLauncher::LaunchHelpApplicationL(
+                CCoeEnv::Static()->WsSession(), 
+        		CCoeEnv::Static()->AppUi()->AppHelpContextL() );
             }
         else if ( event == AiUiDef::xml::event::KEventActivatePhoneView )
             {
--- a/idlehomescreen/xmluicontroller/src/appui.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluicontroller/src/appui.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -27,6 +27,7 @@
 #include <aknconsts.h>
 #include <akntitle.h>
 #include <StringLoader.h>
+#include <csxhelp/hmsc.hlp.hrh>
 
 // User includes
 #include <hspublisherinfo.h>
@@ -642,4 +643,30 @@
     sp->DrawNow();
     }
 
+// -----------------------------------------------------------------------------
+// CAppUi::HelpContextL
+// Returns the help context
+// -----------------------------------------------------------------------------
+//
+CArrayFix<TCoeHelpContext>* CAppUi::HelpContextL() const
+    {
+	TUid fwUid = TUid::Uid( AI_UID3_AIFW_COMMON );
+	TCoeContextName helpString;
+	if( iUiCtl.UiEngineL()->IsEditMode()) 
+	    {
+	    helpString.Copy( KSET_HLP_HOME_SCREEN_EDIT );
+	    }
+    else
+	    {
+	    helpString.Copy( KSET_HLP_HOME_SCREEN );
+	    }
+    
+    CArrayFixFlat<TCoeHelpContext>* array =
+                   new( ELeave ) CArrayFixFlat<TCoeHelpContext>( 1 );
+    CleanupStack::PushL( array );
+    array->AppendL( TCoeHelpContext( fwUid, helpString  ) );
+    CleanupStack::Pop( array );
+    return array;
+    }
+
 // End of File.
--- a/idlehomescreen/xmluicontroller/src/emptycontenttransactionelement.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluicontroller/src/emptycontenttransactionelement.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -20,6 +20,7 @@
 #include "xnnewsticker.h"
 #include "xnbitmap.h"
 #include "xntext.h"
+#include "xntexteditor.h"
 #include "emptycontenttransactionelement.h"
 #include "aixmluiconstants.h"
 #include "aixmluiutils.h"
@@ -81,15 +82,25 @@
         imageIntr->SetContentBitmaps( NULL, NULL );
         }
     else if ( type->Type() == XnTextInterface::MXnTextInterface::Type() ) // text element
-            {
-            // Get control interface
-            XnTextInterface::MXnTextInterface* textControl = NULL;
-            XnComponentInterface::MakeInterfaceL( textControl, Target() );
-            LeaveIfNull( textControl, KErrNotSupported );
-            
-            // Clears the text from component
-            textControl->SetTextL( KNullDesC );
-            }
+        {
+        // Get control interface
+        XnTextInterface::MXnTextInterface* textControl = NULL;
+        XnComponentInterface::MakeInterfaceL( textControl, Target() );
+        LeaveIfNull( textControl, KErrNotSupported );
+        
+        // Clears the text from component
+        textControl->SetTextL( KNullDesC );
+        }
+    else if ( type->Type() == XnTextEditorInterface::MXnTextEditorInterface::Type() ) // texteditor element
+        {
+        // Get control interface
+        XnTextEditorInterface::MXnTextEditorInterface* editorControl = NULL;
+        XnComponentInterface::MakeInterfaceL( editorControl, Target() );
+        LeaveIfNull( editorControl, KErrNotSupported );
+        
+        // Clears the text from component
+        editorControl->SetTextL( KNullDesC );
+        }
     else
         {
         CXnNodeAppIf* parent = Target().ParentL();
--- a/idlehomescreen/xmluicontroller/src/globalqueryhandler.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluicontroller/src/globalqueryhandler.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -81,6 +81,11 @@
         {
         iUiController.AppUi()->SetOnlineStateL( iSetOnline );
         }
+    else
+        {
+         iUiController.AppUi()->SetOnlineStateL(!iSetOnline );
+        }
+        
     }
 
 // -----------------------------------------------------------------------------
--- a/idlehomescreen/xmluirendering/renderingplugins/xnmenufactory/src/xnmenu.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluirendering/renderingplugins/xnmenufactory/src/xnmenu.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -145,6 +145,17 @@
     }
 
 // -----------------------------------------------------------------------------
+// CXnMenu::KeyEventNode
+// 
+// -----------------------------------------------------------------------------
+//
+CXnNodePluginIf* CXnMenu::KeyEventNode()
+    {
+    CXnMenuAdapter* adapter = static_cast< CXnMenuAdapter* >( ControlAdapter() );
+    return adapter->KeyEventNode();       
+    }
+
+// -----------------------------------------------------------------------------
 // CXnMenu::SetObserver
 // 
 // -----------------------------------------------------------------------------
@@ -171,11 +182,12 @@
 // 
 // -----------------------------------------------------------------------------
 //        
-void CXnMenu::TryDisplayingMenuBarL( const TDesC& aMenuNodeId )
+void CXnMenu::TryDisplayingMenuBarL( const TDesC& aMenuNodeId, 
+    TBool aContextMenu )
     {    
     CXnMenuAdapter* adapter = static_cast< CXnMenuAdapter* >( ControlAdapter() );
            
-    adapter->TryDisplayingMenuL( aMenuNodeId );               
+    adapter->TryDisplayingMenuL( aMenuNodeId, aContextMenu );               
     }
     
 // -----------------------------------------------------------------------------
--- a/idlehomescreen/xmluirendering/renderingplugins/xnmenufactory/src/xnmenuadapter.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluirendering/renderingplugins/xnmenufactory/src/xnmenuadapter.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -57,7 +57,10 @@
 
 _LIT8( KEditMode, "Menu/EditMode" );
 _LIT8( KNormalMode, "Menu/NormalMode" );
+_LIT8( KContextEditMode, "ContextMenu/EditMode" );
+_LIT8( KContextNormalMode, "ContextMenu/NormalMode" );
 _LIT8( KAlwaysShown, "Menu/AlwaysShown" );
+
 _LIT8( KHsShowHelp, "hs_show_help" );
 
 const TInt KMenuCommandFirst         = 6000;
@@ -1479,19 +1482,24 @@
     CleanupClosePushL( groups );
                
     if ( !iUiEngine->IsTextEditorActive() )
-        {    
-        if( iUiEngine->EditMode() )
+        {  
+        if( iUiEngine->EditMode() )        
             {
-            groups.AppendL( &KEditMode );
+            groups.AppendL( 
+                iContextMenu ? &KContextEditMode : &KEditMode );
             }
         else
             {
-            groups.Append( &KNormalMode );
+            groups.AppendL( 
+                iContextMenu ? &KContextNormalMode : &KNormalMode );
             }
         }
-    
-    groups.AppendL( &KAlwaysShown );
-         
+
+    if ( !iContextMenu )
+        {
+        groups.AppendL( &KAlwaysShown );
+        }
+            
     // Recursively add menuitems
     AddMenuItemL( -1, iMenuBarNode, groups );
     
@@ -1514,40 +1522,45 @@
         
         return resp;
         }        
-
-    const TDesC8* pos( &KNullDesC8 );
     
+    TInt pos( KErrNotFound );
+           
     if( aKeyEvent.iScanCode == EStdKeyDevice0 )
         {
-        pos = &XnPropertyNames::softkey::type::KLeft;
+        pos = CEikButtonGroupContainer::ELeftSoftkeyPosition;
         }
     else if( aKeyEvent.iScanCode == EStdKeyDevice1 )
         {
-        pos = &XnPropertyNames::softkey::type::KRight;
+        pos = CEikButtonGroupContainer::ERightSoftkeyPosition;
         }
     else if( aKeyEvent.iScanCode == EStdKeyDevice3 )
         {
-        pos = &XnPropertyNames::softkey::type::KMiddle;
+        pos = CEikButtonGroupContainer::EMiddleSoftkeyPosition;
         }            
     
-    if( aType == EEventKeyDown )
-        {                                  
-        iKeyEventNode = FindSoftkeyNodeL( *pos );           
+    CXnSoftkeyItem* softkey( NULL );
+    
+    if ( pos != KErrNotFound )
+        {
+        softkey = SoftkeyItemL( pos );
         }
-            
-    if( aKeyEvent.iScanCode == EStdKeyDevice0 || 
-        aKeyEvent.iScanCode == EStdKeyDevice1 || 
-        aKeyEvent.iScanCode == EStdKeyDevice3 )
+        
+    if ( softkey )
         {
-        CXnNodePluginIf* node(  FindSoftkeyNodeL( *pos ) );
+        CXnNodePluginIf* node( softkey->iNode );
         
+        if( aType == EEventKeyDown )
+            {                                  
+            iKeyEventNode = node;           
+            }
+                       
         if( node && node == iKeyEventNode )
             {
             // Let base class handle the event           
             resp = CXnControlAdapter::OfferKeyEventL( aKeyEvent, aType );                                        
             }            
         }
-        
+            
     if( aType == EEventKeyUp )
         {
         iKeyEventNode = NULL;
@@ -1725,8 +1738,7 @@
 // -----------------------------------------------------------------------------
 //
 void CXnMenuAdapter::SetContainerL( CEikButtonGroupContainer& aContainer )
-    {
-    
+    {    
     User::LeaveIfNull( &aContainer );
     
     TBool updateNeeded( EFalse );
@@ -1769,16 +1781,19 @@
 
 // -----------------------------------------------------------------------------
 // CXnMenuAdapter::TryDisplayingMenuL
-// Displays options menu if it is defined for the softkey item
+// Displays options menu 
 // -----------------------------------------------------------------------------
 //
-void CXnMenuAdapter::TryDisplayingMenuL( const TDesC& aMenuNodeId )
+void CXnMenuAdapter::TryDisplayingMenuL( const TDesC& aMenuNodeId, 
+    TBool aContextMenu )
     {
     HBufC8* id = CnvUtfConverter::ConvertFromUnicodeToUtf8L( aMenuNodeId );
     CleanupStack::PushL( id );
     CXnNodePluginIf* node( iUiEngine->FindNodeByIdL( *id, iRootNode->Namespace() ) );
     CleanupStack::PopAndDestroy( id );
     
+    iContextMenu = aContextMenu;
+    
     if( node && node->Type()->Type() == KXnMenu )
         {
         TryDisplayingMenuL();
@@ -1817,8 +1832,8 @@
 // -----------------------------------------------------------------------------
 //
 void CXnMenuAdapter::StopDisplayingMenu()
-    {
-    if( iMenuShown && iMenuBar )
+    {       
+    if( iMenuBar )
         {
         iMenuBar->StopDisplayingMenuBar();
         }
@@ -2097,6 +2112,16 @@
     }
 
 // -----------------------------------------------------------------------------
+// CXnMenuAdapter::KeyEventNode
+// 
+// -----------------------------------------------------------------------------
+//
+CXnNodePluginIf* CXnMenuAdapter::KeyEventNode()
+    {
+    return iKeyEventNode;
+    }
+
+// -----------------------------------------------------------------------------
 // CXnMenuAdapter::HandleScreenDeviceChangedL
 // 
 // -----------------------------------------------------------------------------
--- a/idlehomescreen/xmluirendering/uiengine/bwins/xn3layoutengineu.def	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/bwins/xn3layoutengineu.def	Wed Apr 14 15:47:59 2010 +0300
@@ -61,177 +61,167 @@
 	?ResetStylusCounter@CXnControlAdapter@@QAEXXZ @ 60 NONAME ; void CXnControlAdapter::ResetStylusCounter(void)
 	?SetComponent@CXnComponentNodeImpl@@QAEXPAVCXnComponent@@@Z @ 61 NONAME ; void CXnComponentNodeImpl::SetComponent(class CXnComponent *)
 	?LayoutUIL@TXnUiEnginePluginIf@@QAEXPAVCXnNodePluginIf@@@Z @ 62 NONAME ; void TXnUiEnginePluginIf::LayoutUIL(class CXnNodePluginIf *)
-	?FocusVisible@TXnUiEnginePluginIf@@QAEHXZ @ 63 NONAME ; int TXnUiEnginePluginIf::FocusVisible(void)
-	?ExitPowerSaveModeL@CXnControlAdapter@@QAEXW4TModeEvent@1@@Z @ 64 NONAME ; void CXnControlAdapter::ExitPowerSaveModeL(enum CXnControlAdapter::TModeEvent)
-	?GetThemeResource@TXnUiEngineAppIf@@QAEHABVTDesC16@@AAVRFile@@@Z @ 65 NONAME ; int TXnUiEngineAppIf::GetThemeResource(class TDesC16 const &, class RFile &)
-	?ConstructL@CXnComponent@@IAEXXZ @ 66 NONAME ; void CXnComponent::ConstructL(void)
-	?FindResource@CXnUtils@@SAPAVCXnResource@@AAV?$CArrayPtrSeg@VCXnResource@@@@ABVTDesC16@@AAH@Z @ 67 NONAME ; class CXnResource * CXnUtils::FindResource(class CArrayPtrSeg<class CXnResource> &, class TDesC16 const &, int &)
-	?UnsetStateL@CXnNodeAppIf@@QAEXABVTDesC8@@@Z @ 68 NONAME ; void CXnNodeAppIf::UnsetStateL(class TDesC8 const &)
-	?Uid@CXnDocument@@QAE?AVTUid@@XZ @ 69 NONAME ; class TUid CXnDocument::Uid(void)
-	?FocusChanged@CXnControlAdapter@@UAEXW4TDrawNow@@@Z @ 70 NONAME ; void CXnControlAdapter::FocusChanged(enum TDrawNow)
-	?SetBlank@CXnControlAdapter@@QAEXH@Z @ 71 NONAME ; void CXnControlAdapter::SetBlank(int)
-	?ProcessMessageL@CXnAppUiAdapter@@UAEXVTUid@@ABVTDesC8@@@Z @ 72 NONAME ; void CXnAppUiAdapter::ProcessMessageL(class TUid, class TDesC8 const &)
-	?Component@CXnNodeAppIf@@QAEAAVCXnComponent@@XZ @ 73 NONAME ; class CXnComponent & CXnNodeAppIf::Component(void)
-	?SetLayoutCapable@CXnNodePluginIf@@QAEXH@Z @ 74 NONAME ; void CXnNodePluginIf::SetLayoutCapable(int)
-	?MarginRect@CXnNodePluginIf@@QAE?AVTRect@@XZ @ 75 NONAME ; class TRect CXnNodePluginIf::MarginRect(void)
-	?UiEngineL@CXnAppUiAdapter@@QAEPAVTXnUiEngineAppIf@@XZ @ 76 NONAME ; class TXnUiEngineAppIf * CXnAppUiAdapter::UiEngineL(void)
-	?SwipeEnabledL@TXnUiEnginePluginIf@@QAEHXZ @ 77 NONAME ; int TXnUiEnginePluginIf::SwipeEnabledL(void)
-	?SetFocusVisibleL@TXnUiEnginePluginIf@@QAEXH@Z @ 78 NONAME ; void TXnUiEnginePluginIf::SetFocusVisibleL(int)
-	?ActiveView@TXnUiEngineAppIf@@QAEPAVCXnNodeAppIf@@XZ @ 79 NONAME ; class CXnNodeAppIf * TXnUiEngineAppIf::ActiveView(void)
-	?HandleXuikonEventL@CXnAppUiAdapter@@UAEXAAVCXnNodeAppIf@@0AAVCXnDomNode@@1@Z @ 80 NONAME ; void CXnAppUiAdapter::HandleXuikonEventL(class CXnNodeAppIf &, class CXnNodeAppIf &, class CXnDomNode &, class CXnDomNode &)
-	?RenderUIL@TXnUiEngineAppIf@@QAEXPAVCXnNodeAppIf@@@Z @ 81 NONAME ; void TXnUiEngineAppIf::RenderUIL(class CXnNodeAppIf *)
-	?PrepareToExit@CXnAppUiAdapter@@MAEXXZ @ 82 NONAME ; void CXnAppUiAdapter::PrepareToExit(void)
-	?DoHandlePropertyChangeL@CXnControlAdapter@@UAEXPAVCXnProperty@@@Z @ 83 NONAME ; void CXnControlAdapter::DoHandlePropertyChangeL(class CXnProperty *)
-	?ConstructL@CXnControlAdapter@@IAEXAAVCXnNodePluginIf@@@Z @ 84 NONAME ; void CXnControlAdapter::ConstructL(class CXnNodePluginIf &)
-	?FocusedNode@TXnUiEngineAppIf@@QAEPAVCXnNodeAppIf@@XZ @ 85 NONAME ; class CXnNodeAppIf * TXnUiEngineAppIf::FocusedNode(void)
-	?SetDataL@CXnComponent@@QAEXABVTDesC8@@ABVTDesC16@@H@Z @ 86 NONAME ; void CXnComponent::SetDataL(class TDesC8 const &, class TDesC16 const &, int)
-	?OfferKeyEventL@CXnControlAdapter@@UAE?AW4TKeyResponse@@ABUTKeyEvent@@W4TEventCode@@@Z @ 87 NONAME ; enum TKeyResponse CXnControlAdapter::OfferKeyEventL(struct TKeyEvent const &, enum TEventCode)
-	?IsDrawingAllowed@CXnControlAdapter@@QBEHXZ @ 88 NONAME ; int CXnControlAdapter::IsDrawingAllowed(void) const
-	?DisplayL@CXnNodePluginIf@@QAEPAVCXnProperty@@XZ @ 89 NONAME ; class CXnProperty * CXnNodePluginIf::DisplayL(void)
-	?NewL@CXnProperty@@SAPAV1@ABVTDesC8@@PAVCXnDomPropertyValue@@AAVCXnDomStringPool@@@Z @ 90 NONAME ; class CXnProperty * CXnProperty::NewL(class TDesC8 const &, class CXnDomPropertyValue *, class CXnDomStringPool &)
-	?Rect@CXnNodeAppIf@@QAE?AVTRect@@XZ @ 91 NONAME ; class TRect CXnNodeAppIf::Rect(void)
-	?NewL@CXnComponentNodeImpl@@SAPAV1@PAVCXnType@@@Z @ 92 NONAME ; class CXnComponentNodeImpl * CXnComponentNodeImpl::NewL(class CXnType *)
-	?WidgetsVisible@TXnUiEngineAppIf@@QBEHXZ @ 93 NONAME ; int TXnUiEngineAppIf::WidgetsVisible(void) const
-	?Type@CXnNodePluginIf@@QAEPAVCXnType@@XZ @ 94 NONAME ; class CXnType * CXnNodePluginIf::Type(void)
-	?MakeXnComponentL@MXnComponentFactory@@EAE?AW4TXnComponentFactoryResponse@1@AAVCXnNodePluginIf@@AAPAVCXnComponent@@@Z @ 95 NONAME ; enum MXnComponentFactory::TXnComponentFactoryResponse MXnComponentFactory::MakeXnComponentL(class CXnNodePluginIf &, class CXnComponent * &)
-	?ActivateViewL@TXnUiEngineAppIf@@QAEXAAVCXnNodeAppIf@@@Z @ 96 NONAME ; void TXnUiEngineAppIf::ActivateViewL(class CXnNodeAppIf &)
-	?UnsetStateL@CXnNodePluginIf@@QAEXABVTDesC8@@@Z @ 97 NONAME ; void CXnNodePluginIf::UnsetStateL(class TDesC8 const &)
-	?StringValueL@CXnProperty@@QAEPAVHBufC16@@XZ @ 98 NONAME ; class HBufC16 * CXnProperty::StringValueL(void)
-	?DisableRenderUiLC@TXnUiEnginePluginIf@@QAEXXZ @ 99 NONAME ; void TXnUiEnginePluginIf::DisableRenderUiLC(void)
-	?SetPropertyL@CXnNodeAppIf@@QAEXPAVCXnProperty@@@Z @ 100 NONAME ; void CXnNodeAppIf::SetPropertyL(class CXnProperty *)
-	?View@CXnAppUiAdapter@@QBEAAVCAknView@@XZ @ 101 NONAME ; class CAknView & CXnAppUiAdapter::View(void) const
-	?ViewNodeImpl@CXnNodePluginIf@@QAEPAVCXnViewNodeImpl@@XZ @ 102 NONAME ; class CXnViewNodeImpl * CXnNodePluginIf::ViewNodeImpl(void)
-	?StripQuotes@CXnUtils@@SAXAAPAVHBufC16@@@Z @ 103 NONAME ; void CXnUtils::StripQuotes(class HBufC16 * &)
-	?SetPCDataL@CXnNodePluginIf@@QAEXABVTDesC8@@@Z @ 104 NONAME ; void CXnNodePluginIf::SetPCDataL(class TDesC8 const &)
-	?VisibilityL@CXnNodePluginIf@@QAEPAVCXnProperty@@XZ @ 105 NONAME ; class CXnProperty * CXnNodePluginIf::VisibilityL(void)
-	?Draw@CXnControlAdapter@@MBEXABVTRect@@@Z @ 106 NONAME ; void CXnControlAdapter::Draw(class TRect const &) const
-	??1CXnApplication@@UAE@XZ @ 107 NONAME ; CXnApplication::~CXnApplication(void)
-	?DoesNodeNeedComponentImplL@MXnComponentFactory@@QAEHABVTDesC8@@@Z @ 108 NONAME ; int MXnComponentFactory::DoesNodeNeedComponentImplL(class TDesC8 const &)
-	?ConstructL@CXnViewsNodeImpl@@IAEXPAVCXnType@@@Z @ 109 NONAME ; void CXnViewsNodeImpl::ConstructL(class CXnType *)
-	?StringPool@TXnUiEngineAppIf@@QAEAAVCXnDomStringPool@@XZ @ 110 NONAME ; class CXnDomStringPool & TXnUiEngineAppIf::StringPool(void)
-	?UiEngineL@CXnNodePluginIf@@QAEPAVTXnUiEnginePluginIf@@XZ @ 111 NONAME ; class TXnUiEnginePluginIf * CXnNodePluginIf::UiEngineL(void)
-	?ShowFocus@TXnUiEnginePluginIf@@QAEHXZ @ 112 NONAME ; int TXnUiEnginePluginIf::ShowFocus(void)
-	?ResolveSkinItemIDL@CXnUtils@@SAHABVTDesC16@@AAVTAknsItemID@@@Z @ 113 NONAME ; int CXnUtils::ResolveSkinItemIDL(class TDesC16 const &, class TAknsItemID &)
-	?PluginNodeL@TXnUiEnginePluginIf@@QAEAAVCXnNodePluginIf@@PAV2@@Z @ 114 NONAME ; class CXnNodePluginIf & TXnUiEnginePluginIf::PluginNodeL(class CXnNodePluginIf *)
-	?VerticalPixelValueL@TXnUiEnginePluginIf@@QAEHPAVCXnProperty@@H@Z @ 115 NONAME ; int TXnUiEnginePluginIf::VerticalPixelValueL(class CXnProperty *, int)
-	?SetComponent@CXnControlAdapter@@QAEXPAVCXnComponent@@@Z @ 116 NONAME ; void CXnControlAdapter::SetComponent(class CXnComponent *)
-	??0MXnNodePredicate@@QAE@XZ @ 117 NONAME ; MXnNodePredicate::MXnNodePredicate(void)
-	??1CXnViewsNodeImpl@@UAE@XZ @ 118 NONAME ; CXnViewsNodeImpl::~CXnViewsNodeImpl(void)
-	?HandleControlEventL@CXnControlAdapter@@UAEXPAVCCoeControl@@W4TCoeEvent@MCoeControlObserver@@@Z @ 119 NONAME ; void CXnControlAdapter::HandleControlEventL(class CCoeControl *, enum MCoeControlObserver::TCoeEvent)
-	?ActivateViewL@TXnUiEnginePluginIf@@QAEXAAVCXnNodePluginIf@@@Z @ 120 NONAME ; void TXnUiEnginePluginIf::ActivateViewL(class CXnNodePluginIf &)
-	?HandleScreenDeviceChangedL@CXnControlAdapter@@UAEXXZ @ 121 NONAME ; void CXnControlAdapter::HandleScreenDeviceChangedL(void)
-	?SizeChanged@CXnControlAdapter@@MAEXXZ @ 122 NONAME ; void CXnControlAdapter::SizeChanged(void)
-	?CountComponentControls@CXnControlAdapter@@MBEHXZ @ 123 NONAME ; int CXnControlAdapter::CountComponentControls(void) const
-	?HideTooltipsL@CXnNodeAppIf@@QAEXXZ @ 124 NONAME ; void CXnNodeAppIf::HideTooltipsL(void)
-	?GetPropertyL@CXnNodeAppIf@@QBEPAVCXnProperty@@ABVTDesC8@@@Z @ 125 NONAME ; class CXnProperty * CXnNodeAppIf::GetPropertyL(class TDesC8 const &) const
-	?DeactivateFocusedNodeL@TXnUiEnginePluginIf@@QAEXXZ @ 126 NONAME ; void TXnUiEnginePluginIf::DeactivateFocusedNodeL(void)
-	?FindNodeByClassL@TXnUiEngineAppIf@@QAE?AV?$RPointerArray@VCXnNodeAppIf@@@@ABVTDesC8@@0@Z @ 127 NONAME ; class RPointerArray<class CXnNodeAppIf> TXnUiEngineAppIf::FindNodeByClassL(class TDesC8 const &, class TDesC8 const &)
-	?Match@MXnNodePredicate@@UAEHAAVCXnNode@@@Z @ 128 NONAME ; int MXnNodePredicate::Match(class CXnNode &)
-	?GetBitmapAndMask@CXnControlAdapter@@QAEXABVTDesC16@@0AAPAVCFbsBitmap@@1@Z @ 129 NONAME ; void CXnControlAdapter::GetBitmapAndMask(class TDesC16 const &, class TDesC16 const &, class CFbsBitmap * &, class CFbsBitmap * &)
-	?NewL@CXnViewsNodeImpl@@SAPAV1@PAVCXnType@@@Z @ 130 NONAME ; class CXnViewsNodeImpl * CXnViewsNodeImpl::NewL(class CXnType *)
-	?PaddingRect@CXnNodeAppIf@@QAE?AVTRect@@XZ @ 131 NONAME ; class TRect CXnNodeAppIf::PaddingRect(void)
-	?SetMarginRect@CXnNodePluginIf@@QAEXABVTRect@@@Z @ 132 NONAME ; void CXnNodePluginIf::SetMarginRect(class TRect const &)
-	?IsDialogDisplaying@TXnUiEnginePluginIf@@QAEHXZ @ 133 NONAME ; int TXnUiEnginePluginIf::IsDialogDisplaying(void)
-	?HandleEventL@CXnAppUiAdapter@@UAEXABVTDesC16@@AAVCXnNodeAppIf@@@Z @ 134 NONAME ; void CXnAppUiAdapter::HandleEventL(class TDesC16 const &, class CXnNodeAppIf &)
-	?GetPropertyL@CXnNodePluginIf@@QBEPAVCXnProperty@@ABVTDesC8@@@Z @ 135 NONAME ; class CXnProperty * CXnNodePluginIf::GetPropertyL(class TDesC8 const &) const
-	?SetPropertyArrayL@CXnNodeAppIf@@QAEXPAV?$RPointerArray@VCXnProperty@@@@@Z @ 136 NONAME ; void CXnNodeAppIf::SetPropertyArrayL(class RPointerArray<class CXnProperty> *)
-	?RestorePreviousFocusedNode@TXnUiEnginePluginIf@@QAEXXZ @ 137 NONAME ; void TXnUiEnginePluginIf::RestorePreviousFocusedNode(void)
-	?RemoveViewL@CXnAppUiAdapter@@QAEXAAVCAknView@@@Z @ 138 NONAME ; void CXnAppUiAdapter::RemoveViewL(class CAknView &)
-	?EnterPowerSaveModeL@CXnComponent@@UAEXXZ @ 139 NONAME ; void CXnComponent::EnterPowerSaveModeL(void)
-	?SetRect@CXnNodePluginIf@@QAEXABVTRect@@@Z @ 140 NONAME ; void CXnNodePluginIf::SetRect(class TRect const &)
-	??0CXnComponent@@IAE@XZ @ 141 NONAME ; CXnComponent::CXnComponent(void)
-	?CollapseWhiteSpace@CXnUtils@@SAXAAVCXnNodePluginIf@@AAVTDes16@@@Z @ 142 NONAME ; void CXnUtils::CollapseWhiteSpace(class CXnNodePluginIf &, class TDes16 &)
-	?SetHandleTooltip@CXnNodePluginIf@@QAEXH@Z @ 143 NONAME ; void CXnNodePluginIf::SetHandleTooltip(int)
-	??1CXnAppUiAdapter@@UAE@XZ @ 144 NONAME ; CXnAppUiAdapter::~CXnAppUiAdapter(void)
-	?NewL@CXnControlAdapter@@SAPAV1@AAVCXnNodePluginIf@@@Z @ 145 NONAME ; class CXnControlAdapter * CXnControlAdapter::NewL(class CXnNodePluginIf &)
-	?EnableLongTapAnimation@CXnControlAdapter@@QAEXH@Z @ 146 NONAME ; void CXnControlAdapter::EnableLongTapAnimation(int)
-	?SetPaddingRect@CXnNodePluginIf@@QAEXABVTRect@@@Z @ 147 NONAME ; void CXnNodePluginIf::SetPaddingRect(class TRect const &)
-	?SetFocusedNode@TXnUiEnginePluginIf@@QAEXPAVCXnNodePluginIf@@@Z @ 148 NONAME ; void TXnUiEnginePluginIf::SetFocusedNode(class CXnNodePluginIf *)
-	?ExitPowerSaveModeL@CXnComponent@@UAEXXZ @ 149 NONAME ; void CXnComponent::ExitPowerSaveModeL(void)
-	?EnableSwipeL@TXnUiEnginePluginIf@@QAEXH@Z @ 150 NONAME ; void TXnUiEnginePluginIf::EnableSwipeL(int)
-	?GetPCData@CXnNodeAppIf@@QBEABVTDesC8@@XZ @ 151 NONAME ; class TDesC8 const & CXnNodeAppIf::GetPCData(void) const
-	?Namespace@CXnNodeAppIf@@QAEABVTDesC8@@XZ @ 152 NONAME ; class TDesC8 const & CXnNodeAppIf::Namespace(void)
-	??1CXnComponentNodeImpl@@UAE@XZ @ 153 NONAME ; CXnComponentNodeImpl::~CXnComponentNodeImpl(void)
-	?SetPropertyWithoutNotificationL@CXnNodePluginIf@@QAEXPAVCXnProperty@@@Z @ 154 NONAME ; void CXnNodePluginIf::SetPropertyWithoutNotificationL(class CXnProperty *)
-	?GetPCData@CXnNodePluginIf@@QBEABVTDesC8@@XZ @ 155 NONAME ; class TDesC8 const & CXnNodePluginIf::GetPCData(void) const
-	?SetPCDataL@CXnNodeAppIf@@QAEXABVTDesC8@@@Z @ 156 NONAME ; void CXnNodeAppIf::SetPCDataL(class TDesC8 const &)
-	?Resources@TXnUiEnginePluginIf@@QAEAAV?$CArrayPtrSeg@VCXnResource@@@@XZ @ 157 NONAME ; class CArrayPtrSeg<class CXnResource> & TXnUiEnginePluginIf::Resources(void)
-	?SetContentBitmaps@CXnControlAdapter@@QAEXABVTDesC16@@0@Z @ 158 NONAME ; void CXnControlAdapter::SetContentBitmaps(class TDesC16 const &, class TDesC16 const &)
-	??1CXnControlAdapter@@UAE@XZ @ 159 NONAME ; CXnControlAdapter::~CXnControlAdapter(void)
-	??1MXnNodePredicate@@UAE@XZ @ 160 NONAME ; MXnNodePredicate::~MXnNodePredicate(void)
-	?HorizontalTwipValueL@TXnUiEnginePluginIf@@QAEHPAVCXnProperty@@H@Z @ 161 NONAME ; int TXnUiEnginePluginIf::HorizontalTwipValueL(class CXnProperty *, int)
-	?ConstructL@CXnAppUiAdapter@@UAEXXZ @ 162 NONAME ; void CXnAppUiAdapter::ConstructL(void)
-	?CreateFontL@CXnUtils@@SAXAAVCXnNodePluginIf@@AAPAVCFont@@AAH@Z @ 163 NONAME ; void CXnUtils::CreateFontL(class CXnNodePluginIf &, class CFont * &, int &)
-	??0CXnApplication@@QAE@VTUid@@@Z @ 164 NONAME ; CXnApplication::CXnApplication(class TUid)
-	?ComponentControl@CXnControlAdapter@@MBEPAVCCoeControl@@H@Z @ 165 NONAME ; class CCoeControl * CXnControlAdapter::ComponentControl(int) const
-	?HandleLongTapEventL@CXnControlAdapter@@UAEXABVTPoint@@0@Z @ 166 NONAME ; void CXnControlAdapter::HandleLongTapEventL(class TPoint const &, class TPoint const &)
-	?ParentL@CXnNodeAppIf@@QBEPAV1@XZ @ 167 NONAME ; class CXnNodeAppIf * CXnNodeAppIf::ParentL(void) const
-	??1CXnComponent@@UAE@XZ @ 168 NONAME ; CXnComponent::~CXnComponent(void)
-	?ControlAdapter@CXnComponent@@QAEPAVCXnControlAdapter@@XZ @ 169 NONAME ; class CXnControlAdapter * CXnComponent::ControlAdapter(void)
-	?DrawContentImage@CXnControlAdapter@@IBEXXZ @ 170 NONAME ; void CXnControlAdapter::DrawContentImage(void) const
-	?Component@CXnComponentNodeImpl@@QAEPAVCXnComponent@@XZ @ 171 NONAME ; class CXnComponent * CXnComponentNodeImpl::Component(void)
-	?WidgetsVisible@TXnUiEnginePluginIf@@QBEHXZ @ 172 NONAME ; int TXnUiEnginePluginIf::WidgetsVisible(void) const
-	?SetControlAdapter@CXnComponent@@QAEXPAVCXnControlAdapter@@@Z @ 173 NONAME ; void CXnComponent::SetControlAdapter(class CXnControlAdapter *)
-	?SetStateL@CXnNodePluginIf@@QAEXABVTDesC8@@@Z @ 174 NONAME ; void CXnNodePluginIf::SetStateL(class TDesC8 const &)
-	?DoesComponentNeedCreation@CXnComponentNodeImpl@@QBEHXZ @ 175 NONAME ; int CXnComponentNodeImpl::DoesComponentNeedCreation(void) const
-	??0CXnDocument@@QAE@AAVCEikApplication@@VTUid@@@Z @ 176 NONAME ; CXnDocument::CXnDocument(class CEikApplication &, class TUid)
-	?FindNodeByClassL@TXnUiEnginePluginIf@@QAE?AV?$RPointerArray@VCXnNodePluginIf@@@@ABVTDesC16@@@Z @ 177 NONAME ; class RPointerArray<class CXnNodePluginIf> TXnUiEnginePluginIf::FindNodeByClassL(class TDesC16 const &)
-	?InternalDomNodeType@CXnNodeAppIf@@QBEABVTDesC8@@XZ @ 178 NONAME ; class TDesC8 const & CXnNodeAppIf::InternalDomNodeType(void) const
-	?StringPool@TXnUiEnginePluginIf@@QAEAAVCXnDomStringPool@@XZ @ 179 NONAME ; class CXnDomStringPool & TXnUiEnginePluginIf::StringPool(void)
-	?SetStateL@CXnNodeAppIf@@QAEXABVTDesC8@@@Z @ 180 NONAME ; void CXnNodeAppIf::SetStateL(class TDesC8 const &)
-	?Type@CXnNodeAppIf@@QAEPAVCXnType@@XZ @ 181 NONAME ; class CXnType * CXnNodeAppIf::Type(void)
-	?BorderRect@CXnNodeAppIf@@QAE?AVTRect@@XZ @ 182 NONAME ; class TRect CXnNodeAppIf::BorderRect(void)
-	?IdL@CXnNodePluginIf@@QAEPAVCXnProperty@@XZ @ 183 NONAME ; class CXnProperty * CXnNodePluginIf::IdL(void)
-	?RootNodeL@TXnUiEngineAppIf@@QAEAAVCXnNodeAppIf@@XZ @ 184 NONAME ; class CXnNodeAppIf & TXnUiEngineAppIf::RootNodeL(void)
-	?CreateXnComponentL@MXnComponentFactory@@QAE?AW4TXnComponentFactoryResponse@1@AAVCXnNodePluginIf@@AAPAVCXnComponent@@@Z @ 185 NONAME ; enum MXnComponentFactory::TXnComponentFactoryResponse MXnComponentFactory::CreateXnComponentL(class CXnNodePluginIf &, class CXnComponent * &)
-	?RefreshMenuL@TXnUiEngineAppIf@@QAEXXZ @ 186 NONAME ; void TXnUiEngineAppIf::RefreshMenuL(void)
-	?PaddingRect@CXnNodePluginIf@@QAE?AVTRect@@XZ @ 187 NONAME ; class TRect CXnNodePluginIf::PaddingRect(void)
-	?MeasureAdaptiveContentL@CXnControlAdapter@@UAE?AVTSize@@ABV2@@Z @ 188 NONAME ; class TSize CXnControlAdapter::MeasureAdaptiveContentL(class TSize const &)
-	?NewL@CXnProperty@@SAPAV1@ABVTDesC8@@0W4TPrimitiveValueType@CXnDomPropertyValue@@AAVCXnDomStringPool@@@Z @ 189 NONAME ; class CXnProperty * CXnProperty::NewL(class TDesC8 const &, class TDesC8 const &, enum CXnDomPropertyValue::TPrimitiveValueType, class CXnDomStringPool &)
-	?GetPropertyL@CXnNodePluginIf@@QBEPAVCXnProperty@@AAV2@@Z @ 190 NONAME ; class CXnProperty * CXnNodePluginIf::GetPropertyL(class CXnProperty &) const
-	?HitRegion@TXnUiEnginePluginIf@@QBEPAVCXnControlAdapter@@XZ @ 191 NONAME ; class CXnControlAdapter * TXnUiEnginePluginIf::HitRegion(void) const
-	?MarginRect@CXnNodeAppIf@@QAE?AVTRect@@XZ @ 192 NONAME ; class TRect CXnNodeAppIf::MarginRect(void)
-	?MakeInterfaceL@CXnComponent@@UAEPAVMXnComponentInterface@XnComponentInterface@@ABVTDesC8@@@Z @ 193 NONAME ; class XnComponentInterface::MXnComponentInterface * CXnComponent::MakeInterfaceL(class TDesC8 const &)
-	?EditMode@TXnUiEnginePluginIf@@QAEHXZ @ 194 NONAME ; int TXnUiEnginePluginIf::EditMode(void)
-	?FindNodeByIdL@TXnUiEnginePluginIf@@QAEPAVCXnNodePluginIf@@ABVTDesC8@@0@Z @ 195 NONAME ; class CXnNodePluginIf * TXnUiEnginePluginIf::FindNodeByIdL(class TDesC8 const &, class TDesC8 const &)
-	?EnableRenderUi@CXnUiEngineImpl@@CAXPAX@Z @ 196 NONAME ; void CXnUiEngineImpl::EnableRenderUi(void *)
-	?IsMenuDisplaying@TXnUiEnginePluginIf@@QAEHXZ @ 197 NONAME ; int TXnUiEnginePluginIf::IsMenuDisplaying(void)
-	?IsMenuDisplaying@TXnUiEngineAppIf@@QAEHXZ @ 198 NONAME ; int TXnUiEngineAppIf::IsMenuDisplaying(void)
-	?NewL@CXnProperty@@SAPAV1@PAVCXnDomProperty@@@Z @ 199 NONAME ; class CXnProperty * CXnProperty::NewL(class CXnDomProperty *)
-	?ConstructL@CXnComponentNodeImpl@@IAEXPAVCXnType@@@Z @ 200 NONAME ; void CXnComponentNodeImpl::ConstructL(class CXnType *)
-	?ChildrenL@CXnNodeAppIf@@QAE?AV?$RPointerArray@VCXnNodeAppIf@@@@XZ @ 201 NONAME ; class RPointerArray<class CXnNodeAppIf> CXnNodeAppIf::ChildrenL(void)
-	?LoadPublisher@CXnAppUiAdapter@@UAEHAAVCXnNodeAppIf@@H@Z @ 202 NONAME ; int CXnAppUiAdapter::LoadPublisher(class CXnNodeAppIf &, int)
-	?ConvertHslToRgb@CXnUtils@@SA?AVTRgb@@HHH@Z @ 203 NONAME ; class TRgb CXnUtils::ConvertHslToRgb(int, int, int)
-	?LoadBitmap@CXnControlAdapter@@QAEPAVCFbsBitmap@@ABVTDesC16@@@Z @ 204 NONAME ; class CFbsBitmap * CXnControlAdapter::LoadBitmap(class TDesC16 const &)
-	??0MXnComponentFactory@@IAE@XZ @ 205 NONAME ; MXnComponentFactory::MXnComponentFactory(void)
-	?SetComponent@CXnViewsNodeImpl@@QAEXPAVCXnComponent@@@Z @ 206 NONAME ; void CXnViewsNodeImpl::SetComponent(class CXnComponent *)
-	?BorderRect@CXnNodePluginIf@@QAE?AVTRect@@XZ @ 207 NONAME ; class TRect CXnNodePluginIf::BorderRect(void)
-	?CreateDocumentL@CXnApplication@@MAEPAVCApaDocument@@XZ @ 208 NONAME ; class CApaDocument * CXnApplication::CreateDocumentL(void)
-	?HandleUiReadyEventL@CXnAppUiAdapter@@UAEXXZ @ 209 NONAME ; void CXnAppUiAdapter::HandleUiReadyEventL(void)
-	?CreateFontL@CXnUtils@@SAXABVTDesC16@@HVTFontStyle@@AAPAVCFont@@AAH@Z @ 210 NONAME ; void CXnUtils::CreateFontL(class TDesC16 const &, int, class TFontStyle, class CFont * &, int &)
-	?GetPluginNodeArrayL@TXnUiEngineAppIf@@QAEHAAV?$RPointerArray@VCXnNodeAppIf@@@@@Z @ 211 NONAME ; int TXnUiEngineAppIf::GetPluginNodeArrayL(class RPointerArray<class CXnNodeAppIf> &)
-	?MakeXnControlAdapterL@MXnComponentFactory@@EAEPAVCXnControlAdapter@@AAVCXnNodePluginIf@@PAV2@@Z @ 212 NONAME ; class CXnControlAdapter * MXnComponentFactory::MakeXnControlAdapterL(class CXnNodePluginIf &, class CXnControlAdapter *)
-	?IsDrawingAllowed@CXnNodePluginIf@@QBEHXZ @ 213 NONAME ; int CXnNodePluginIf::IsDrawingAllowed(void) const
-	?MakeInterfaceL@CXnNodeAppIf@@QAEPAVMXnComponentInterface@XnComponentInterface@@ABVTDesC8@@@Z @ 214 NONAME ; class XnComponentInterface::MXnComponentInterface * CXnNodeAppIf::MakeInterfaceL(class TDesC8 const &)
-	?VerticalTwipValueL@TXnUiEnginePluginIf@@QAEHPAVCXnProperty@@H@Z @ 215 NONAME ; int TXnUiEnginePluginIf::VerticalTwipValueL(class CXnProperty *, int)
-	?Component@CXnControlAdapter@@QAEPAVCXnComponent@@XZ @ 216 NONAME ; class CXnComponent * CXnControlAdapter::Component(void)
-	?FloatValueL@CXnProperty@@QAENXZ @ 217 NONAME ; double CXnProperty::FloatValueL(void)
-	?SetUiEngine@TXnUiEngineAppIf@@QAEXPAVCXnUiEngine@@@Z @ 218 NONAME ; void TXnUiEngineAppIf::SetUiEngine(class CXnUiEngine *)
-	?FindNodeByIdL@TXnUiEngineAppIf@@QAEPAVCXnNodeAppIf@@ABVTDesC16@@0@Z @ 219 NONAME ; class CXnNodeAppIf * TXnUiEngineAppIf::FindNodeByIdL(class TDesC16 const &, class TDesC16 const &)
-	?IsEditMode@TXnUiEngineAppIf@@QAEHXZ @ 220 NONAME ; int TXnUiEngineAppIf::IsEditMode(void)
-	?ResolveSkinItemIDL@CXnUtils@@SAHABVTDesC16@@AAVTAknsItemID@@AAH@Z @ 221 NONAME ; int CXnUtils::ResolveSkinItemIDL(class TDesC16 const &, class TAknsItemID &, int &)
-	?EnablePartialTouchInput@TXnUiEnginePluginIf@@QAEXAAVCXnNodePluginIf@@H@Z @ 222 NONAME ; void TXnUiEnginePluginIf::EnablePartialTouchInput(class CXnNodePluginIf &, int)
-	?RootNodeL@TXnUiEnginePluginIf@@QAEAAVCXnNodePluginIf@@XZ @ 223 NONAME ; class CXnNodePluginIf & TXnUiEnginePluginIf::RootNodeL(void)
-	?CreateAppUiL@CXnDocument@@UAEPAVCEikAppUi@@XZ @ 224 NONAME ; class CEikAppUi * CXnDocument::CreateAppUiL(void)
-	?PathL@CXnNodePluginIf@@QAEPAVCXnProperty@@XZ @ 225 NONAME ; class CXnProperty * CXnNodePluginIf::PathL(void)
-	?NewL@CXnProperty@@SAPAV1@ABVTDesC8@@NW4TPrimitiveValueType@CXnDomPropertyValue@@AAVCXnDomStringPool@@@Z @ 226 NONAME ; class CXnProperty * CXnProperty::NewL(class TDesC8 const &, double, enum CXnDomPropertyValue::TPrimitiveValueType, class CXnDomStringPool &)
-	?MaskPathL@CXnNodePluginIf@@QAEPAVCXnProperty@@XZ @ 227 NONAME ; class CXnProperty * CXnNodePluginIf::MaskPathL(void)
-	?AppDllUid@CXnApplication@@MBE?AVTUid@@XZ @ 228 NONAME ; class TUid CXnApplication::AppDllUid(void) const
-	?DoExitPowerSaveModeL@CXnControlAdapter@@UAEXW4TModeEvent@1@@Z @ 229 NONAME ; void CXnControlAdapter::DoExitPowerSaveModeL(enum CXnControlAdapter::TModeEvent)
-	?LabelL@CXnNodePluginIf@@QAEPAVCXnProperty@@XZ @ 230 NONAME ; class CXnProperty * CXnNodePluginIf::LabelL(void)
-	?Component@CXnViewsNodeImpl@@QAEPAVCXnComponent@@XZ @ 231 NONAME ; class CXnComponent * CXnViewsNodeImpl::Component(void)
-	?GetRgbValue@CXnUtils@@SAHAAVTRgb@@ABVTDesC8@@@Z @ 232 NONAME ; int CXnUtils::GetRgbValue(class TRgb &, class TDesC8 const &)
-	?StringValue@CXnProperty@@QAEABVTDesC8@@XZ @ 233 NONAME ; class TDesC8 const & CXnProperty::StringValue(void)
-	?SetVisible@CXnControlAdapter@@QAEXH@Z @ 234 NONAME ; void CXnControlAdapter::SetVisible(int)
-	?Node@CXnComponent@@QAEPAVCXnNodePluginIf@@XZ @ 235 NONAME ; class CXnNodePluginIf * CXnComponent::Node(void)
+	?ExitPowerSaveModeL@CXnControlAdapter@@QAEXW4TModeEvent@1@@Z @ 63 NONAME ; void CXnControlAdapter::ExitPowerSaveModeL(enum CXnControlAdapter::TModeEvent)
+	?GetThemeResource@TXnUiEngineAppIf@@QAEHABVTDesC16@@AAVRFile@@@Z @ 64 NONAME ; int TXnUiEngineAppIf::GetThemeResource(class TDesC16 const &, class RFile &)
+	?ConstructL@CXnComponent@@IAEXXZ @ 65 NONAME ; void CXnComponent::ConstructL(void)
+	?FindResource@CXnUtils@@SAPAVCXnResource@@AAV?$CArrayPtrSeg@VCXnResource@@@@ABVTDesC16@@AAH@Z @ 66 NONAME ; class CXnResource * CXnUtils::FindResource(class CArrayPtrSeg<class CXnResource> &, class TDesC16 const &, int &)
+	?UnsetStateL@CXnNodeAppIf@@QAEXABVTDesC8@@@Z @ 67 NONAME ; void CXnNodeAppIf::UnsetStateL(class TDesC8 const &)
+	?Uid@CXnDocument@@QAE?AVTUid@@XZ @ 68 NONAME ; class TUid CXnDocument::Uid(void)
+	?FocusChanged@CXnControlAdapter@@UAEXW4TDrawNow@@@Z @ 69 NONAME ; void CXnControlAdapter::FocusChanged(enum TDrawNow)
+	?SetBlank@CXnControlAdapter@@QAEXH@Z @ 70 NONAME ; void CXnControlAdapter::SetBlank(int)
+	?ProcessMessageL@CXnAppUiAdapter@@UAEXVTUid@@ABVTDesC8@@@Z @ 71 NONAME ; void CXnAppUiAdapter::ProcessMessageL(class TUid, class TDesC8 const &)
+	?Component@CXnNodeAppIf@@QAEAAVCXnComponent@@XZ @ 72 NONAME ; class CXnComponent & CXnNodeAppIf::Component(void)
+	?SetLayoutCapable@CXnNodePluginIf@@QAEXH@Z @ 73 NONAME ; void CXnNodePluginIf::SetLayoutCapable(int)
+	?MarginRect@CXnNodePluginIf@@QAE?AVTRect@@XZ @ 74 NONAME ; class TRect CXnNodePluginIf::MarginRect(void)
+	?UiEngineL@CXnAppUiAdapter@@QAEPAVTXnUiEngineAppIf@@XZ @ 75 NONAME ; class TXnUiEngineAppIf * CXnAppUiAdapter::UiEngineL(void)
+	?ActiveView@TXnUiEngineAppIf@@QAEPAVCXnNodeAppIf@@XZ @ 76 NONAME ; class CXnNodeAppIf * TXnUiEngineAppIf::ActiveView(void)
+	?HandleXuikonEventL@CXnAppUiAdapter@@UAEXAAVCXnNodeAppIf@@0AAVCXnDomNode@@1@Z @ 77 NONAME ; void CXnAppUiAdapter::HandleXuikonEventL(class CXnNodeAppIf &, class CXnNodeAppIf &, class CXnDomNode &, class CXnDomNode &)
+	?RenderUIL@TXnUiEngineAppIf@@QAEXPAVCXnNodeAppIf@@@Z @ 78 NONAME ; void TXnUiEngineAppIf::RenderUIL(class CXnNodeAppIf *)
+	?PrepareToExit@CXnAppUiAdapter@@MAEXXZ @ 79 NONAME ; void CXnAppUiAdapter::PrepareToExit(void)
+	?DoHandlePropertyChangeL@CXnControlAdapter@@UAEXPAVCXnProperty@@@Z @ 80 NONAME ; void CXnControlAdapter::DoHandlePropertyChangeL(class CXnProperty *)
+	?ConstructL@CXnControlAdapter@@IAEXAAVCXnNodePluginIf@@@Z @ 81 NONAME ; void CXnControlAdapter::ConstructL(class CXnNodePluginIf &)
+	?FocusedNode@TXnUiEngineAppIf@@QAEPAVCXnNodeAppIf@@XZ @ 82 NONAME ; class CXnNodeAppIf * TXnUiEngineAppIf::FocusedNode(void)
+	?SetDataL@CXnComponent@@QAEXABVTDesC8@@ABVTDesC16@@H@Z @ 83 NONAME ; void CXnComponent::SetDataL(class TDesC8 const &, class TDesC16 const &, int)
+	?OfferKeyEventL@CXnControlAdapter@@UAE?AW4TKeyResponse@@ABUTKeyEvent@@W4TEventCode@@@Z @ 84 NONAME ; enum TKeyResponse CXnControlAdapter::OfferKeyEventL(struct TKeyEvent const &, enum TEventCode)
+	?IsDrawingAllowed@CXnControlAdapter@@QBEHXZ @ 85 NONAME ; int CXnControlAdapter::IsDrawingAllowed(void) const
+	?DisplayL@CXnNodePluginIf@@QAEPAVCXnProperty@@XZ @ 86 NONAME ; class CXnProperty * CXnNodePluginIf::DisplayL(void)
+	?NewL@CXnProperty@@SAPAV1@ABVTDesC8@@PAVCXnDomPropertyValue@@AAVCXnDomStringPool@@@Z @ 87 NONAME ; class CXnProperty * CXnProperty::NewL(class TDesC8 const &, class CXnDomPropertyValue *, class CXnDomStringPool &)
+	?Rect@CXnNodeAppIf@@QAE?AVTRect@@XZ @ 88 NONAME ; class TRect CXnNodeAppIf::Rect(void)
+	?NewL@CXnComponentNodeImpl@@SAPAV1@PAVCXnType@@@Z @ 89 NONAME ; class CXnComponentNodeImpl * CXnComponentNodeImpl::NewL(class CXnType *)
+	?WidgetsVisible@TXnUiEngineAppIf@@QBEHXZ @ 90 NONAME ; int TXnUiEngineAppIf::WidgetsVisible(void) const
+	?Type@CXnNodePluginIf@@QAEPAVCXnType@@XZ @ 91 NONAME ; class CXnType * CXnNodePluginIf::Type(void)
+	?MakeXnComponentL@MXnComponentFactory@@EAE?AW4TXnComponentFactoryResponse@1@AAVCXnNodePluginIf@@AAPAVCXnComponent@@@Z @ 92 NONAME ; enum MXnComponentFactory::TXnComponentFactoryResponse MXnComponentFactory::MakeXnComponentL(class CXnNodePluginIf &, class CXnComponent * &)
+	?UnsetStateL@CXnNodePluginIf@@QAEXABVTDesC8@@@Z @ 93 NONAME ; void CXnNodePluginIf::UnsetStateL(class TDesC8 const &)
+	?StringValueL@CXnProperty@@QAEPAVHBufC16@@XZ @ 94 NONAME ; class HBufC16 * CXnProperty::StringValueL(void)
+	?DisableRenderUiLC@TXnUiEnginePluginIf@@QAEXXZ @ 95 NONAME ; void TXnUiEnginePluginIf::DisableRenderUiLC(void)
+	?SetPropertyL@CXnNodeAppIf@@QAEXPAVCXnProperty@@@Z @ 96 NONAME ; void CXnNodeAppIf::SetPropertyL(class CXnProperty *)
+	?View@CXnAppUiAdapter@@QBEAAVCAknView@@XZ @ 97 NONAME ; class CAknView & CXnAppUiAdapter::View(void) const
+	?ViewNodeImpl@CXnNodePluginIf@@QAEPAVCXnViewNodeImpl@@XZ @ 98 NONAME ; class CXnViewNodeImpl * CXnNodePluginIf::ViewNodeImpl(void)
+	?StripQuotes@CXnUtils@@SAXAAPAVHBufC16@@@Z @ 99 NONAME ; void CXnUtils::StripQuotes(class HBufC16 * &)
+	?SetPCDataL@CXnNodePluginIf@@QAEXABVTDesC8@@@Z @ 100 NONAME ; void CXnNodePluginIf::SetPCDataL(class TDesC8 const &)
+	?VisibilityL@CXnNodePluginIf@@QAEPAVCXnProperty@@XZ @ 101 NONAME ; class CXnProperty * CXnNodePluginIf::VisibilityL(void)
+	?Draw@CXnControlAdapter@@MBEXABVTRect@@@Z @ 102 NONAME ; void CXnControlAdapter::Draw(class TRect const &) const
+	??1CXnApplication@@UAE@XZ @ 103 NONAME ; CXnApplication::~CXnApplication(void)
+	?DoesNodeNeedComponentImplL@MXnComponentFactory@@QAEHABVTDesC8@@@Z @ 104 NONAME ; int MXnComponentFactory::DoesNodeNeedComponentImplL(class TDesC8 const &)
+	?ConstructL@CXnViewsNodeImpl@@IAEXPAVCXnType@@@Z @ 105 NONAME ; void CXnViewsNodeImpl::ConstructL(class CXnType *)
+	?StringPool@TXnUiEngineAppIf@@QAEAAVCXnDomStringPool@@XZ @ 106 NONAME ; class CXnDomStringPool & TXnUiEngineAppIf::StringPool(void)
+	?UiEngineL@CXnNodePluginIf@@QAEPAVTXnUiEnginePluginIf@@XZ @ 107 NONAME ; class TXnUiEnginePluginIf * CXnNodePluginIf::UiEngineL(void)
+	?ResolveSkinItemIDL@CXnUtils@@SAHABVTDesC16@@AAVTAknsItemID@@@Z @ 108 NONAME ; int CXnUtils::ResolveSkinItemIDL(class TDesC16 const &, class TAknsItemID &)
+	?PluginNodeL@TXnUiEnginePluginIf@@QAEAAVCXnNodePluginIf@@PAV2@@Z @ 109 NONAME ; class CXnNodePluginIf & TXnUiEnginePluginIf::PluginNodeL(class CXnNodePluginIf *)
+	?VerticalPixelValueL@TXnUiEnginePluginIf@@QAEHPAVCXnProperty@@H@Z @ 110 NONAME ; int TXnUiEnginePluginIf::VerticalPixelValueL(class CXnProperty *, int)
+	?SetComponent@CXnControlAdapter@@QAEXPAVCXnComponent@@@Z @ 111 NONAME ; void CXnControlAdapter::SetComponent(class CXnComponent *)
+	??0MXnNodePredicate@@QAE@XZ @ 112 NONAME ; MXnNodePredicate::MXnNodePredicate(void)
+	??1CXnViewsNodeImpl@@UAE@XZ @ 113 NONAME ; CXnViewsNodeImpl::~CXnViewsNodeImpl(void)
+	?HandleControlEventL@CXnControlAdapter@@UAEXPAVCCoeControl@@W4TCoeEvent@MCoeControlObserver@@@Z @ 114 NONAME ; void CXnControlAdapter::HandleControlEventL(class CCoeControl *, enum MCoeControlObserver::TCoeEvent)
+	?HandleScreenDeviceChangedL@CXnControlAdapter@@UAEXXZ @ 115 NONAME ; void CXnControlAdapter::HandleScreenDeviceChangedL(void)
+	?SizeChanged@CXnControlAdapter@@MAEXXZ @ 116 NONAME ; void CXnControlAdapter::SizeChanged(void)
+	?CountComponentControls@CXnControlAdapter@@MBEHXZ @ 117 NONAME ; int CXnControlAdapter::CountComponentControls(void) const
+	?HideTooltipsL@CXnNodeAppIf@@QAEXXZ @ 118 NONAME ; void CXnNodeAppIf::HideTooltipsL(void)
+	?GetPropertyL@CXnNodeAppIf@@QBEPAVCXnProperty@@ABVTDesC8@@@Z @ 119 NONAME ; class CXnProperty * CXnNodeAppIf::GetPropertyL(class TDesC8 const &) const
+	?FindNodeByClassL@TXnUiEngineAppIf@@QAE?AV?$RPointerArray@VCXnNodeAppIf@@@@ABVTDesC8@@0@Z @ 120 NONAME ; class RPointerArray<class CXnNodeAppIf> TXnUiEngineAppIf::FindNodeByClassL(class TDesC8 const &, class TDesC8 const &)
+	?Match@MXnNodePredicate@@UAEHAAVCXnNode@@@Z @ 121 NONAME ; int MXnNodePredicate::Match(class CXnNode &)
+	?GetBitmapAndMask@CXnControlAdapter@@QAEXABVTDesC16@@0AAPAVCFbsBitmap@@1@Z @ 122 NONAME ; void CXnControlAdapter::GetBitmapAndMask(class TDesC16 const &, class TDesC16 const &, class CFbsBitmap * &, class CFbsBitmap * &)
+	?NewL@CXnViewsNodeImpl@@SAPAV1@PAVCXnType@@@Z @ 123 NONAME ; class CXnViewsNodeImpl * CXnViewsNodeImpl::NewL(class CXnType *)
+	?PaddingRect@CXnNodeAppIf@@QAE?AVTRect@@XZ @ 124 NONAME ; class TRect CXnNodeAppIf::PaddingRect(void)
+	?SetMarginRect@CXnNodePluginIf@@QAEXABVTRect@@@Z @ 125 NONAME ; void CXnNodePluginIf::SetMarginRect(class TRect const &)
+	?IsDialogDisplaying@TXnUiEnginePluginIf@@QAEHXZ @ 126 NONAME ; int TXnUiEnginePluginIf::IsDialogDisplaying(void)
+	?HandleEventL@CXnAppUiAdapter@@UAEXABVTDesC16@@AAVCXnNodeAppIf@@@Z @ 127 NONAME ; void CXnAppUiAdapter::HandleEventL(class TDesC16 const &, class CXnNodeAppIf &)
+	?GetPropertyL@CXnNodePluginIf@@QBEPAVCXnProperty@@ABVTDesC8@@@Z @ 128 NONAME ; class CXnProperty * CXnNodePluginIf::GetPropertyL(class TDesC8 const &) const
+	?SetPropertyArrayL@CXnNodeAppIf@@QAEXPAV?$RPointerArray@VCXnProperty@@@@@Z @ 129 NONAME ; void CXnNodeAppIf::SetPropertyArrayL(class RPointerArray<class CXnProperty> *)
+	?RemoveViewL@CXnAppUiAdapter@@QAEXAAVCAknView@@@Z @ 130 NONAME ; void CXnAppUiAdapter::RemoveViewL(class CAknView &)
+	?EnterPowerSaveModeL@CXnComponent@@UAEXXZ @ 131 NONAME ; void CXnComponent::EnterPowerSaveModeL(void)
+	?SetRect@CXnNodePluginIf@@QAEXABVTRect@@@Z @ 132 NONAME ; void CXnNodePluginIf::SetRect(class TRect const &)
+	??0CXnComponent@@IAE@XZ @ 133 NONAME ; CXnComponent::CXnComponent(void)
+	?CollapseWhiteSpace@CXnUtils@@SAXAAVCXnNodePluginIf@@AAVTDes16@@@Z @ 134 NONAME ; void CXnUtils::CollapseWhiteSpace(class CXnNodePluginIf &, class TDes16 &)
+	?SetHandleTooltip@CXnNodePluginIf@@QAEXH@Z @ 135 NONAME ; void CXnNodePluginIf::SetHandleTooltip(int)
+	??1CXnAppUiAdapter@@UAE@XZ @ 136 NONAME ; CXnAppUiAdapter::~CXnAppUiAdapter(void)
+	?NewL@CXnControlAdapter@@SAPAV1@AAVCXnNodePluginIf@@@Z @ 137 NONAME ; class CXnControlAdapter * CXnControlAdapter::NewL(class CXnNodePluginIf &)
+	?EnableLongTapAnimation@CXnControlAdapter@@QAEXH@Z @ 138 NONAME ; void CXnControlAdapter::EnableLongTapAnimation(int)
+	?SetPaddingRect@CXnNodePluginIf@@QAEXABVTRect@@@Z @ 139 NONAME ; void CXnNodePluginIf::SetPaddingRect(class TRect const &)
+	?SetFocusedNode@TXnUiEnginePluginIf@@QAEXPAVCXnNodePluginIf@@@Z @ 140 NONAME ; void TXnUiEnginePluginIf::SetFocusedNode(class CXnNodePluginIf *)
+	?ExitPowerSaveModeL@CXnComponent@@UAEXXZ @ 141 NONAME ; void CXnComponent::ExitPowerSaveModeL(void)
+	?GetPCData@CXnNodeAppIf@@QBEABVTDesC8@@XZ @ 142 NONAME ; class TDesC8 const & CXnNodeAppIf::GetPCData(void) const
+	?Namespace@CXnNodeAppIf@@QAEABVTDesC8@@XZ @ 143 NONAME ; class TDesC8 const & CXnNodeAppIf::Namespace(void)
+	??1CXnComponentNodeImpl@@UAE@XZ @ 144 NONAME ; CXnComponentNodeImpl::~CXnComponentNodeImpl(void)
+	?SetPropertyWithoutNotificationL@CXnNodePluginIf@@QAEXPAVCXnProperty@@@Z @ 145 NONAME ; void CXnNodePluginIf::SetPropertyWithoutNotificationL(class CXnProperty *)
+	?GetPCData@CXnNodePluginIf@@QBEABVTDesC8@@XZ @ 146 NONAME ; class TDesC8 const & CXnNodePluginIf::GetPCData(void) const
+	?SetPCDataL@CXnNodeAppIf@@QAEXABVTDesC8@@@Z @ 147 NONAME ; void CXnNodeAppIf::SetPCDataL(class TDesC8 const &)
+	?Resources@TXnUiEnginePluginIf@@QAEAAV?$CArrayPtrSeg@VCXnResource@@@@XZ @ 148 NONAME ; class CArrayPtrSeg<class CXnResource> & TXnUiEnginePluginIf::Resources(void)
+	?SetContentBitmaps@CXnControlAdapter@@QAEXABVTDesC16@@0@Z @ 149 NONAME ; void CXnControlAdapter::SetContentBitmaps(class TDesC16 const &, class TDesC16 const &)
+	??1CXnControlAdapter@@UAE@XZ @ 150 NONAME ; CXnControlAdapter::~CXnControlAdapter(void)
+	??1MXnNodePredicate@@UAE@XZ @ 151 NONAME ; MXnNodePredicate::~MXnNodePredicate(void)
+	?HorizontalTwipValueL@TXnUiEnginePluginIf@@QAEHPAVCXnProperty@@H@Z @ 152 NONAME ; int TXnUiEnginePluginIf::HorizontalTwipValueL(class CXnProperty *, int)
+	?ConstructL@CXnAppUiAdapter@@UAEXXZ @ 153 NONAME ; void CXnAppUiAdapter::ConstructL(void)
+	?CreateFontL@CXnUtils@@SAXAAVCXnNodePluginIf@@AAPAVCFont@@AAH@Z @ 154 NONAME ; void CXnUtils::CreateFontL(class CXnNodePluginIf &, class CFont * &, int &)
+	??0CXnApplication@@QAE@VTUid@@@Z @ 155 NONAME ; CXnApplication::CXnApplication(class TUid)
+	?ComponentControl@CXnControlAdapter@@MBEPAVCCoeControl@@H@Z @ 156 NONAME ; class CCoeControl * CXnControlAdapter::ComponentControl(int) const
+	?HandleLongTapEventL@CXnControlAdapter@@UAEXABVTPoint@@0@Z @ 157 NONAME ; void CXnControlAdapter::HandleLongTapEventL(class TPoint const &, class TPoint const &)
+	?ParentL@CXnNodeAppIf@@QBEPAV1@XZ @ 158 NONAME ; class CXnNodeAppIf * CXnNodeAppIf::ParentL(void) const
+	??1CXnComponent@@UAE@XZ @ 159 NONAME ; CXnComponent::~CXnComponent(void)
+	?ControlAdapter@CXnComponent@@QAEPAVCXnControlAdapter@@XZ @ 160 NONAME ; class CXnControlAdapter * CXnComponent::ControlAdapter(void)
+	?DrawContentImage@CXnControlAdapter@@IBEXXZ @ 161 NONAME ; void CXnControlAdapter::DrawContentImage(void) const
+	?Component@CXnComponentNodeImpl@@QAEPAVCXnComponent@@XZ @ 162 NONAME ; class CXnComponent * CXnComponentNodeImpl::Component(void)
+	?WidgetsVisible@TXnUiEnginePluginIf@@QBEHXZ @ 163 NONAME ; int TXnUiEnginePluginIf::WidgetsVisible(void) const
+	?SetControlAdapter@CXnComponent@@QAEXPAVCXnControlAdapter@@@Z @ 164 NONAME ; void CXnComponent::SetControlAdapter(class CXnControlAdapter *)
+	?SetStateL@CXnNodePluginIf@@QAEXABVTDesC8@@@Z @ 165 NONAME ; void CXnNodePluginIf::SetStateL(class TDesC8 const &)
+	?DoesComponentNeedCreation@CXnComponentNodeImpl@@QBEHXZ @ 166 NONAME ; int CXnComponentNodeImpl::DoesComponentNeedCreation(void) const
+	??0CXnDocument@@QAE@AAVCEikApplication@@VTUid@@@Z @ 167 NONAME ; CXnDocument::CXnDocument(class CEikApplication &, class TUid)
+	?FindNodeByClassL@TXnUiEnginePluginIf@@QAE?AV?$RPointerArray@VCXnNodePluginIf@@@@ABVTDesC16@@@Z @ 168 NONAME ; class RPointerArray<class CXnNodePluginIf> TXnUiEnginePluginIf::FindNodeByClassL(class TDesC16 const &)
+	?InternalDomNodeType@CXnNodeAppIf@@QBEABVTDesC8@@XZ @ 169 NONAME ; class TDesC8 const & CXnNodeAppIf::InternalDomNodeType(void) const
+	?StringPool@TXnUiEnginePluginIf@@QAEAAVCXnDomStringPool@@XZ @ 170 NONAME ; class CXnDomStringPool & TXnUiEnginePluginIf::StringPool(void)
+	?SetStateL@CXnNodeAppIf@@QAEXABVTDesC8@@@Z @ 171 NONAME ; void CXnNodeAppIf::SetStateL(class TDesC8 const &)
+	?Type@CXnNodeAppIf@@QAEPAVCXnType@@XZ @ 172 NONAME ; class CXnType * CXnNodeAppIf::Type(void)
+	?BorderRect@CXnNodeAppIf@@QAE?AVTRect@@XZ @ 173 NONAME ; class TRect CXnNodeAppIf::BorderRect(void)
+	?IdL@CXnNodePluginIf@@QAEPAVCXnProperty@@XZ @ 174 NONAME ; class CXnProperty * CXnNodePluginIf::IdL(void)
+	?RootNodeL@TXnUiEngineAppIf@@QAEAAVCXnNodeAppIf@@XZ @ 175 NONAME ; class CXnNodeAppIf & TXnUiEngineAppIf::RootNodeL(void)
+	?CreateXnComponentL@MXnComponentFactory@@QAE?AW4TXnComponentFactoryResponse@1@AAVCXnNodePluginIf@@AAPAVCXnComponent@@@Z @ 176 NONAME ; enum MXnComponentFactory::TXnComponentFactoryResponse MXnComponentFactory::CreateXnComponentL(class CXnNodePluginIf &, class CXnComponent * &)
+	?RefreshMenuL@TXnUiEngineAppIf@@QAEXXZ @ 177 NONAME ; void TXnUiEngineAppIf::RefreshMenuL(void)
+	?PaddingRect@CXnNodePluginIf@@QAE?AVTRect@@XZ @ 178 NONAME ; class TRect CXnNodePluginIf::PaddingRect(void)
+	?MeasureAdaptiveContentL@CXnControlAdapter@@UAE?AVTSize@@ABV2@@Z @ 179 NONAME ; class TSize CXnControlAdapter::MeasureAdaptiveContentL(class TSize const &)
+	?NewL@CXnProperty@@SAPAV1@ABVTDesC8@@0W4TPrimitiveValueType@CXnDomPropertyValue@@AAVCXnDomStringPool@@@Z @ 180 NONAME ; class CXnProperty * CXnProperty::NewL(class TDesC8 const &, class TDesC8 const &, enum CXnDomPropertyValue::TPrimitiveValueType, class CXnDomStringPool &)
+	?GetPropertyL@CXnNodePluginIf@@QBEPAVCXnProperty@@AAV2@@Z @ 181 NONAME ; class CXnProperty * CXnNodePluginIf::GetPropertyL(class CXnProperty &) const
+	?MarginRect@CXnNodeAppIf@@QAE?AVTRect@@XZ @ 182 NONAME ; class TRect CXnNodeAppIf::MarginRect(void)
+	?EditMode@TXnUiEnginePluginIf@@QAEHXZ @ 183 NONAME ; int TXnUiEnginePluginIf::EditMode(void)
+	?FindNodeByIdL@TXnUiEnginePluginIf@@QAEPAVCXnNodePluginIf@@ABVTDesC8@@0@Z @ 184 NONAME ; class CXnNodePluginIf * TXnUiEnginePluginIf::FindNodeByIdL(class TDesC8 const &, class TDesC8 const &)
+	?MakeInterfaceL@CXnComponent@@UAEPAVMXnComponentInterface@XnComponentInterface@@ABVTDesC8@@@Z @ 185 NONAME ; class XnComponentInterface::MXnComponentInterface * CXnComponent::MakeInterfaceL(class TDesC8 const &)
+	?EnableRenderUi@CXnUiEngineImpl@@CAXPAX@Z @ 186 NONAME ; void CXnUiEngineImpl::EnableRenderUi(void *)
+	?IsMenuDisplaying@TXnUiEnginePluginIf@@QAEHXZ @ 187 NONAME ; int TXnUiEnginePluginIf::IsMenuDisplaying(void)
+	?IsMenuDisplaying@TXnUiEngineAppIf@@QAEHXZ @ 188 NONAME ; int TXnUiEngineAppIf::IsMenuDisplaying(void)
+	?NewL@CXnProperty@@SAPAV1@PAVCXnDomProperty@@@Z @ 189 NONAME ; class CXnProperty * CXnProperty::NewL(class CXnDomProperty *)
+	?ConstructL@CXnComponentNodeImpl@@IAEXPAVCXnType@@@Z @ 190 NONAME ; void CXnComponentNodeImpl::ConstructL(class CXnType *)
+	?ChildrenL@CXnNodeAppIf@@QAE?AV?$RPointerArray@VCXnNodeAppIf@@@@XZ @ 191 NONAME ; class RPointerArray<class CXnNodeAppIf> CXnNodeAppIf::ChildrenL(void)
+	?ConvertHslToRgb@CXnUtils@@SA?AVTRgb@@HHH@Z @ 192 NONAME ; class TRgb CXnUtils::ConvertHslToRgb(int, int, int)
+	?LoadPublisher@CXnAppUiAdapter@@UAEHAAVCXnNodeAppIf@@H@Z @ 193 NONAME ; int CXnAppUiAdapter::LoadPublisher(class CXnNodeAppIf &, int)
+	?LoadBitmap@CXnControlAdapter@@QAEPAVCFbsBitmap@@ABVTDesC16@@@Z @ 194 NONAME ; class CFbsBitmap * CXnControlAdapter::LoadBitmap(class TDesC16 const &)
+	??0MXnComponentFactory@@IAE@XZ @ 195 NONAME ; MXnComponentFactory::MXnComponentFactory(void)
+	?SetComponent@CXnViewsNodeImpl@@QAEXPAVCXnComponent@@@Z @ 196 NONAME ; void CXnViewsNodeImpl::SetComponent(class CXnComponent *)
+	?BorderRect@CXnNodePluginIf@@QAE?AVTRect@@XZ @ 197 NONAME ; class TRect CXnNodePluginIf::BorderRect(void)
+	?CreateDocumentL@CXnApplication@@MAEPAVCApaDocument@@XZ @ 198 NONAME ; class CApaDocument * CXnApplication::CreateDocumentL(void)
+	?HandleUiReadyEventL@CXnAppUiAdapter@@UAEXXZ @ 199 NONAME ; void CXnAppUiAdapter::HandleUiReadyEventL(void)
+	?CreateFontL@CXnUtils@@SAXABVTDesC16@@HVTFontStyle@@AAPAVCFont@@AAH@Z @ 200 NONAME ; void CXnUtils::CreateFontL(class TDesC16 const &, int, class TFontStyle, class CFont * &, int &)
+	?GetPluginNodeArrayL@TXnUiEngineAppIf@@QAEHAAV?$RPointerArray@VCXnNodeAppIf@@@@@Z @ 201 NONAME ; int TXnUiEngineAppIf::GetPluginNodeArrayL(class RPointerArray<class CXnNodeAppIf> &)
+	?MakeXnControlAdapterL@MXnComponentFactory@@EAEPAVCXnControlAdapter@@AAVCXnNodePluginIf@@PAV2@@Z @ 202 NONAME ; class CXnControlAdapter * MXnComponentFactory::MakeXnControlAdapterL(class CXnNodePluginIf &, class CXnControlAdapter *)
+	?IsDrawingAllowed@CXnNodePluginIf@@QBEHXZ @ 203 NONAME ; int CXnNodePluginIf::IsDrawingAllowed(void) const
+	?MakeInterfaceL@CXnNodeAppIf@@QAEPAVMXnComponentInterface@XnComponentInterface@@ABVTDesC8@@@Z @ 204 NONAME ; class XnComponentInterface::MXnComponentInterface * CXnNodeAppIf::MakeInterfaceL(class TDesC8 const &)
+	?VerticalTwipValueL@TXnUiEnginePluginIf@@QAEHPAVCXnProperty@@H@Z @ 205 NONAME ; int TXnUiEnginePluginIf::VerticalTwipValueL(class CXnProperty *, int)
+	?Component@CXnControlAdapter@@QAEPAVCXnComponent@@XZ @ 206 NONAME ; class CXnComponent * CXnControlAdapter::Component(void)
+	?FloatValueL@CXnProperty@@QAENXZ @ 207 NONAME ; double CXnProperty::FloatValueL(void)
+	?SetUiEngine@TXnUiEngineAppIf@@QAEXPAVCXnUiEngine@@@Z @ 208 NONAME ; void TXnUiEngineAppIf::SetUiEngine(class CXnUiEngine *)
+	?FindNodeByIdL@TXnUiEngineAppIf@@QAEPAVCXnNodeAppIf@@ABVTDesC16@@0@Z @ 209 NONAME ; class CXnNodeAppIf * TXnUiEngineAppIf::FindNodeByIdL(class TDesC16 const &, class TDesC16 const &)
+	?IsEditMode@TXnUiEngineAppIf@@QAEHXZ @ 210 NONAME ; int TXnUiEngineAppIf::IsEditMode(void)
+	?ResolveSkinItemIDL@CXnUtils@@SAHABVTDesC16@@AAVTAknsItemID@@AAH@Z @ 211 NONAME ; int CXnUtils::ResolveSkinItemIDL(class TDesC16 const &, class TAknsItemID &, int &)
+	?EnablePartialTouchInput@TXnUiEnginePluginIf@@QAEXAAVCXnNodePluginIf@@H@Z @ 212 NONAME ; void TXnUiEnginePluginIf::EnablePartialTouchInput(class CXnNodePluginIf &, int)
+	?RootNodeL@TXnUiEnginePluginIf@@QAEAAVCXnNodePluginIf@@XZ @ 213 NONAME ; class CXnNodePluginIf & TXnUiEnginePluginIf::RootNodeL(void)
+	?CreateAppUiL@CXnDocument@@UAEPAVCEikAppUi@@XZ @ 214 NONAME ; class CEikAppUi * CXnDocument::CreateAppUiL(void)
+	?PathL@CXnNodePluginIf@@QAEPAVCXnProperty@@XZ @ 215 NONAME ; class CXnProperty * CXnNodePluginIf::PathL(void)
+	?NewL@CXnProperty@@SAPAV1@ABVTDesC8@@NW4TPrimitiveValueType@CXnDomPropertyValue@@AAVCXnDomStringPool@@@Z @ 216 NONAME ; class CXnProperty * CXnProperty::NewL(class TDesC8 const &, double, enum CXnDomPropertyValue::TPrimitiveValueType, class CXnDomStringPool &)
+	?MaskPathL@CXnNodePluginIf@@QAEPAVCXnProperty@@XZ @ 217 NONAME ; class CXnProperty * CXnNodePluginIf::MaskPathL(void)
+	?AppDllUid@CXnApplication@@MBE?AVTUid@@XZ @ 218 NONAME ; class TUid CXnApplication::AppDllUid(void) const
+	?DoExitPowerSaveModeL@CXnControlAdapter@@UAEXW4TModeEvent@1@@Z @ 219 NONAME ; void CXnControlAdapter::DoExitPowerSaveModeL(enum CXnControlAdapter::TModeEvent)
+	?LabelL@CXnNodePluginIf@@QAEPAVCXnProperty@@XZ @ 220 NONAME ; class CXnProperty * CXnNodePluginIf::LabelL(void)
+	?Component@CXnViewsNodeImpl@@QAEPAVCXnComponent@@XZ @ 221 NONAME ; class CXnComponent * CXnViewsNodeImpl::Component(void)
+	?GetRgbValue@CXnUtils@@SAHAAVTRgb@@ABVTDesC8@@@Z @ 222 NONAME ; int CXnUtils::GetRgbValue(class TRgb &, class TDesC8 const &)
+	?StringValue@CXnProperty@@QAEABVTDesC8@@XZ @ 223 NONAME ; class TDesC8 const & CXnProperty::StringValue(void)
+	?SetVisible@CXnControlAdapter@@QAEXH@Z @ 224 NONAME ; void CXnControlAdapter::SetVisible(int)
+	?Node@CXnComponent@@QAEPAVCXnNodePluginIf@@XZ @ 225 NONAME ; class CXnNodePluginIf * CXnComponent::Node(void)
 
--- a/idlehomescreen/xmluirendering/uiengine/eabi/xn3layoutengineu.def	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/eabi/xn3layoutengineu.def	Wed Apr 14 15:47:59 2010 +0300
@@ -127,163 +127,153 @@
 	_ZN16TXnUiEngineAppIf11FocusedNodeEv @ 126 NONAME
 	_ZN16TXnUiEngineAppIf11SetUiEngineEP11CXnUiEngine @ 127 NONAME
 	_ZN16TXnUiEngineAppIf12RefreshMenuLEv @ 128 NONAME
-	_ZN16TXnUiEngineAppIf13ActivateViewLER12CXnNodeAppIf @ 129 NONAME
-	_ZN16TXnUiEngineAppIf13FindNodeByIdLERK6TDesC8S2_ @ 130 NONAME
-	_ZN16TXnUiEngineAppIf13FindNodeByIdLERK7TDesC16S2_ @ 131 NONAME
-	_ZN16TXnUiEngineAppIf16FindNodeByClassLERK6TDesC8S2_ @ 132 NONAME
-	_ZN16TXnUiEngineAppIf16FindNodeByClassLERK7TDesC16S2_ @ 133 NONAME
-	_ZN16TXnUiEngineAppIf16GetThemeResourceERK7TDesC16R5RFile @ 134 NONAME
-	_ZN16TXnUiEngineAppIf16IsMenuDisplayingEv @ 135 NONAME
-	_ZN16TXnUiEngineAppIf19GetPluginNodeArrayLER13RPointerArrayI12CXnNodeAppIfE @ 136 NONAME
-	_ZN16TXnUiEngineAppIf23FindContentSourceNodesLERK6TDesC8 @ 137 NONAME
-	_ZN16TXnUiEngineAppIf9RenderUILEP12CXnNodeAppIf @ 138 NONAME
-	_ZN16TXnUiEngineAppIf9RootNodeLEv @ 139 NONAME
-	_ZN17CXnControlAdapter10ConstructLER15CXnNodePluginIf @ 140 NONAME
-	_ZN17CXnControlAdapter10LoadBitmapERK7TDesC16 @ 141 NONAME
-	_ZN17CXnControlAdapter10SetVisibleEi @ 142 NONAME
-	_ZN17CXnControlAdapter11SizeChangedEv @ 143 NONAME
-	_ZN17CXnControlAdapter11SkinChangedEv @ 144 NONAME
-	_ZN17CXnControlAdapter12FocusChangedE8TDrawNow @ 145 NONAME
-	_ZN17CXnControlAdapter12SetComponentEP12CXnComponent @ 146 NONAME
-	_ZN17CXnControlAdapter14ContentBitmapsERP10CFbsBitmapS2_ @ 147 NONAME
-	_ZN17CXnControlAdapter14OfferKeyEventLERK9TKeyEvent10TEventCode @ 148 NONAME
-	_ZN17CXnControlAdapter15SetLocalUiZoomLE10TAknUiZoom @ 149 NONAME
-	_ZN17CXnControlAdapter16GetBitmapAndMaskERK7TDesC16S2_RP10CFbsBitmapS5_ @ 150 NONAME
-	_ZN17CXnControlAdapter17SetContentBitmapsEP10CFbsBitmapS1_ @ 151 NONAME
-	_ZN17CXnControlAdapter17SetContentBitmapsERK7TDesC16S2_ @ 152 NONAME
-	_ZN17CXnControlAdapter18ExitPowerSaveModeLENS_10TModeEventE @ 153 NONAME
-	_ZN17CXnControlAdapter18ResetStylusCounterEv @ 154 NONAME
-	_ZN17CXnControlAdapter19EnterPowerSaveModeLENS_10TModeEventE @ 155 NONAME
-	_ZN17CXnControlAdapter19HandleControlEventLEP11CCoeControlN19MCoeControlObserver9TCoeEventE @ 156 NONAME
-	_ZN17CXnControlAdapter19HandleLongTapEventLERK6TPointS2_ @ 157 NONAME
-	_ZN17CXnControlAdapter19HandlePointerEventLERK13TPointerEvent @ 158 NONAME
-	_ZN17CXnControlAdapter20DoExitPowerSaveModeLENS_10TModeEventE @ 159 NONAME
-	_ZN17CXnControlAdapter21DoEnterPowerSaveModeLENS_10TModeEventE @ 160 NONAME
-	_ZN17CXnControlAdapter21HandlePropertyChangeLEP11CXnProperty @ 161 NONAME
-	_ZN17CXnControlAdapter22EnableLongTapAnimationEi @ 162 NONAME
-	_ZN17CXnControlAdapter23DoHandlePropertyChangeLEP11CXnProperty @ 163 NONAME
-	_ZN17CXnControlAdapter23MeasureAdaptiveContentLERK5TSize @ 164 NONAME
-	_ZN17CXnControlAdapter26HandleScreenDeviceChangedLEv @ 165 NONAME
-	_ZN17CXnControlAdapter4NewLER15CXnNodePluginIf @ 166 NONAME
-	_ZN17CXnControlAdapter8SetBlankEi @ 167 NONAME
-	_ZN17CXnControlAdapter8SetDataLERK6TDesC8RK7TDesC16i @ 168 NONAME
-	_ZN17CXnControlAdapter9ComponentEv @ 169 NONAME
-	_ZN17CXnControlAdapterC1Ev @ 170 NONAME
-	_ZN17CXnControlAdapterC2Ev @ 171 NONAME
-	_ZN17CXnControlAdapterD0Ev @ 172 NONAME
-	_ZN17CXnControlAdapterD1Ev @ 173 NONAME
-	_ZN17CXnControlAdapterD2Ev @ 174 NONAME
-	_ZN19MXnComponentFactory16MakeXnComponentLER15CXnNodePluginIfRP12CXnComponent @ 175 NONAME
-	_ZN19MXnComponentFactory18CreateXnComponentLER15CXnNodePluginIfRP12CXnComponent @ 176 NONAME
-	_ZN19MXnComponentFactory21MakeXnControlAdapterLER15CXnNodePluginIfP17CXnControlAdapter @ 177 NONAME
-	_ZN19MXnComponentFactory26DoesNodeNeedComponentImplLERK6TDesC8 @ 178 NONAME
-	_ZN19MXnComponentFactoryC2Ev @ 179 NONAME
-	_ZN19MXnComponentFactoryD0Ev @ 180 NONAME
-	_ZN19MXnComponentFactoryD1Ev @ 181 NONAME
-	_ZN19MXnComponentFactoryD2Ev @ 182 NONAME
-	_ZN19TXnUiEnginePluginIf10StringPoolEv @ 183 NONAME
-	_ZN19TXnUiEnginePluginIf11PluginNodeLEP15CXnNodePluginIf @ 184 NONAME
-	_ZN19TXnUiEnginePluginIf12EnableSwipeLEi @ 185 NONAME
-	_ZN19TXnUiEnginePluginIf12FocusVisibleEv @ 186 NONAME
-	_ZN19TXnUiEnginePluginIf12FocusedNodeLEv @ 187 NONAME
-	_ZN19TXnUiEnginePluginIf13ActivateViewLER15CXnNodePluginIf @ 188 NONAME
-	_ZN19TXnUiEnginePluginIf13AddDirtyNodeLER15CXnNodePluginIf @ 189 NONAME
-	_ZN19TXnUiEnginePluginIf13FindNodeByIdLERK6TDesC8S2_ @ 190 NONAME
-	_ZN19TXnUiEnginePluginIf13FindNodeByIdLERK7TDesC16S2_ @ 191 NONAME
-	_ZN19TXnUiEnginePluginIf13SwipeEnabledLEv @ 192 NONAME
-	_ZN19TXnUiEnginePluginIf14SetFocusedNodeEP15CXnNodePluginIf @ 193 NONAME
-	_ZN19TXnUiEnginePluginIf16FindNodeByClassLERK7TDesC16 @ 194 NONAME
-	_ZN19TXnUiEnginePluginIf16IsMenuDisplayingEv @ 195 NONAME
-	_ZN19TXnUiEnginePluginIf16ScreenDeviceSizeEv @ 196 NONAME
-	_ZN19TXnUiEnginePluginIf16SetFocusVisibleLEi @ 197 NONAME
-	_ZN19TXnUiEnginePluginIf17DisableRenderUiLCEv @ 198 NONAME
-	_ZN19TXnUiEnginePluginIf18IsDialogDisplayingEv @ 199 NONAME
-	_ZN19TXnUiEnginePluginIf18IsTextEditorActiveEv @ 200 NONAME
-	_ZN19TXnUiEnginePluginIf18VerticalTwipValueLEP11CXnPropertyi @ 201 NONAME
-	_ZN19TXnUiEnginePluginIf19VerticalPixelValueLEP11CXnPropertyi @ 202 NONAME
-	_ZN19TXnUiEnginePluginIf20HorizontalTwipValueLEP11CXnPropertyi @ 203 NONAME
-	_ZN19TXnUiEnginePluginIf21HorizontalPixelValueLEP11CXnPropertyi @ 204 NONAME
-	_ZN19TXnUiEnginePluginIf22DeactivateFocusedNodeLEv @ 205 NONAME
-	_ZN19TXnUiEnginePluginIf23EnablePartialTouchInputER15CXnNodePluginIfi @ 206 NONAME
-	_ZN19TXnUiEnginePluginIf26RestorePreviousFocusedNodeEv @ 207 NONAME
-	_ZN19TXnUiEnginePluginIf8EditModeEv @ 208 NONAME
-	_ZN19TXnUiEnginePluginIf9LayoutUILEP15CXnNodePluginIf @ 209 NONAME
-	_ZN19TXnUiEnginePluginIf9RenderUILEP15CXnNodePluginIf @ 210 NONAME
-	_ZN19TXnUiEnginePluginIf9ResourcesEv @ 211 NONAME
-	_ZN19TXnUiEnginePluginIf9RootNodeLEv @ 212 NONAME
-	_ZN19TXnUiEnginePluginIf9ShowFocusEv @ 213 NONAME
-	_ZN20CXnComponentNodeImpl10ConstructLEP7CXnType @ 214 NONAME
-	_ZN20CXnComponentNodeImpl12SetComponentEP12CXnComponent @ 215 NONAME
-	_ZN20CXnComponentNodeImpl14MakeInterfaceLERK6TDesC8 @ 216 NONAME
-	_ZN20CXnComponentNodeImpl25SetComponentNeedsCreationEi @ 217 NONAME
-	_ZN20CXnComponentNodeImpl4NewLEP7CXnType @ 218 NONAME
-	_ZN20CXnComponentNodeImpl9ComponentEv @ 219 NONAME
-	_ZN20CXnComponentNodeImplC1Ev @ 220 NONAME
-	_ZN20CXnComponentNodeImplC2Ev @ 221 NONAME
-	_ZN20CXnComponentNodeImplD0Ev @ 222 NONAME
-	_ZN20CXnComponentNodeImplD1Ev @ 223 NONAME
-	_ZN20CXnComponentNodeImplD2Ev @ 224 NONAME
-	_ZN8CXnUtils11CreateFontLER15CXnNodePluginIfRP5CFontRi @ 225 NONAME
-	_ZN8CXnUtils11CreateFontLERK7TDesC16i10TFontStyleRP5CFontRi @ 226 NONAME
-	_ZN8CXnUtils11GetRgbValueER4TRgbRK6TDesC8 @ 227 NONAME
-	_ZN8CXnUtils11StripQuotesERP7HBufC16 @ 228 NONAME
-	_ZN8CXnUtils12FindResourceER12CArrayPtrSegI11CXnResourceERK7TDesC16Ri @ 229 NONAME
-	_ZN8CXnUtils12ScaleBitmapLERK5TRectP10CFbsBitmapS4_ @ 230 NONAME
-	_ZN8CXnUtils13TextAlignmentER15CXnNodePluginIf @ 231 NONAME
-	_ZN8CXnUtils15ConvertHslToRgbEiii @ 232 NONAME
-	_ZN8CXnUtils18CollapseWhiteSpaceER15CXnNodePluginIfR6TDes16 @ 233 NONAME
-	_ZN8CXnUtils18ResolveSkinItemIDLERK7TDesC16R11TAknsItemIDRi @ 234 NONAME
-	_ZN8CXnUtils20HandlePowerSaveModeLEP7CXnNodeii @ 235 NONAME
-	_ZNK11CXnProperty7EqualsLERS_ @ 236 NONAME
-	_ZNK12CXnNodeAppIf12GetPropertyLER11CXnProperty @ 237 NONAME
-	_ZNK12CXnNodeAppIf12GetPropertyLERK6TDesC8 @ 238 NONAME
-	_ZNK12CXnNodeAppIf19InternalDomNodeTypeEv @ 239 NONAME
-	_ZNK12CXnNodeAppIf7ParentLEv @ 240 NONAME
-	_ZNK12CXnNodeAppIf9GetPCDataEv @ 241 NONAME
-	_ZNK14CXnApplication9AppDllUidEv @ 242 NONAME
-	_ZNK15CXnAppUiAdapter4ViewEv @ 243 NONAME
-	_ZNK15CXnNodePluginIf12GetPropertyLER11CXnProperty @ 244 NONAME
-	_ZNK15CXnNodePluginIf12GetPropertyLERK6TDesC8 @ 245 NONAME
-	_ZNK15CXnNodePluginIf7ControlEv @ 246 NONAME
-	_ZNK15CXnNodePluginIf7ParentLEv @ 247 NONAME
-	_ZNK15CXnNodePluginIf9GetPCDataEv @ 248 NONAME
-	_ZNK16TXnUiEngineAppIf14WidgetsVisibleEv @ 249 NONAME
-	_ZNK17CXnControlAdapter15LongTapDetectorEv @ 250 NONAME
-	_ZNK17CXnControlAdapter16ComponentControlEi @ 251 NONAME
-	_ZNK17CXnControlAdapter16DrawContentImageEv @ 252 NONAME
-	_ZNK17CXnControlAdapter16IsDrawingAllowedEv @ 253 NONAME
-	_ZNK17CXnControlAdapter22CountComponentControlsEv @ 254 NONAME
-	_ZNK17CXnControlAdapter4DrawERK5TRect @ 255 NONAME
-	_ZNK17CXnControlAdapter4DrawERK5TRectR9CWindowGc @ 256 NONAME
-	_ZNK19TXnUiEnginePluginIf14WidgetsVisibleEv @ 257 NONAME
-	_ZNK19TXnUiEnginePluginIf9HitRegionEv @ 258 NONAME
-	_ZNK20CXnComponentNodeImpl25DoesComponentNeedCreationEv @ 259 NONAME
-	_ZTI11CXnDocument @ 260 NONAME
-	_ZTI11CXnProperty @ 261 NONAME
-	_ZTI12CXnComponent @ 262 NONAME
-	_ZTI14CXnApplication @ 263 NONAME
-	_ZTI15CXnAppUiAdapter @ 264 NONAME
-	_ZTI16CXnViewsNodeImpl @ 265 NONAME
-	_ZTI16MXnNodePredicate @ 266 NONAME
-	_ZTI17CXnControlAdapter @ 267 NONAME
-	_ZTI18CXnListQueryDialog @ 268 NONAME
-	_ZTI19MXnComponentFactory @ 269 NONAME
-	_ZTI20CXnComponentNodeImpl @ 270 NONAME
-	_ZTI27CXnNodeBreadthFirstIteratorI7CXnNodeE @ 271 NONAME
-	_ZTIN21CXnControlAdapterImpl13TIconProviderE @ 272 NONAME
-	_ZTV11CXnDocument @ 273 NONAME
-	_ZTV11CXnProperty @ 274 NONAME
-	_ZTV12CXnComponent @ 275 NONAME
-	_ZTV14CXnApplication @ 276 NONAME
-	_ZTV15CXnAppUiAdapter @ 277 NONAME
-	_ZTV16CXnViewsNodeImpl @ 278 NONAME
-	_ZTV16MXnNodePredicate @ 279 NONAME
-	_ZTV17CXnControlAdapter @ 280 NONAME
-	_ZTV18CXnListQueryDialog @ 281 NONAME
-	_ZTV19MXnComponentFactory @ 282 NONAME
-	_ZTV20CXnComponentNodeImpl @ 283 NONAME
-	_ZTV27CXnNodeBreadthFirstIteratorI7CXnNodeE @ 284 NONAME
-	_ZTVN21CXnControlAdapterImpl13TIconProviderE @ 285 NONAME
-	_ZThn52_N17CXnControlAdapter19HandleControlEventLEP11CCoeControlN19MCoeControlObserver9TCoeEventE @ 286 NONAME
-	_ZThn60_N17CXnControlAdapter19HandleLongTapEventLERK6TPointS2_ @ 287 NONAME
+	_ZN16TXnUiEngineAppIf13FindNodeByIdLERK6TDesC8S2_ @ 129 NONAME
+	_ZN16TXnUiEngineAppIf13FindNodeByIdLERK7TDesC16S2_ @ 130 NONAME
+	_ZN16TXnUiEngineAppIf16FindNodeByClassLERK6TDesC8S2_ @ 131 NONAME
+	_ZN16TXnUiEngineAppIf16FindNodeByClassLERK7TDesC16S2_ @ 132 NONAME
+	_ZN16TXnUiEngineAppIf16GetThemeResourceERK7TDesC16R5RFile @ 133 NONAME
+	_ZN16TXnUiEngineAppIf16IsMenuDisplayingEv @ 134 NONAME
+	_ZN16TXnUiEngineAppIf19GetPluginNodeArrayLER13RPointerArrayI12CXnNodeAppIfE @ 135 NONAME
+	_ZN16TXnUiEngineAppIf23FindContentSourceNodesLERK6TDesC8 @ 136 NONAME
+	_ZN16TXnUiEngineAppIf9RenderUILEP12CXnNodeAppIf @ 137 NONAME
+	_ZN16TXnUiEngineAppIf9RootNodeLEv @ 138 NONAME
+	_ZN17CXnControlAdapter10ConstructLER15CXnNodePluginIf @ 139 NONAME
+	_ZN17CXnControlAdapter10LoadBitmapERK7TDesC16 @ 140 NONAME
+	_ZN17CXnControlAdapter10SetVisibleEi @ 141 NONAME
+	_ZN17CXnControlAdapter11SizeChangedEv @ 142 NONAME
+	_ZN17CXnControlAdapter11SkinChangedEv @ 143 NONAME
+	_ZN17CXnControlAdapter12FocusChangedE8TDrawNow @ 144 NONAME
+	_ZN17CXnControlAdapter12SetComponentEP12CXnComponent @ 145 NONAME
+	_ZN17CXnControlAdapter14ContentBitmapsERP10CFbsBitmapS2_ @ 146 NONAME
+	_ZN17CXnControlAdapter14OfferKeyEventLERK9TKeyEvent10TEventCode @ 147 NONAME
+	_ZN17CXnControlAdapter15SetLocalUiZoomLE10TAknUiZoom @ 148 NONAME
+	_ZN17CXnControlAdapter16GetBitmapAndMaskERK7TDesC16S2_RP10CFbsBitmapS5_ @ 149 NONAME
+	_ZN17CXnControlAdapter17SetContentBitmapsEP10CFbsBitmapS1_ @ 150 NONAME
+	_ZN17CXnControlAdapter17SetContentBitmapsERK7TDesC16S2_ @ 151 NONAME
+	_ZN17CXnControlAdapter18ExitPowerSaveModeLENS_10TModeEventE @ 152 NONAME
+	_ZN17CXnControlAdapter18ResetStylusCounterEv @ 153 NONAME
+	_ZN17CXnControlAdapter19EnterPowerSaveModeLENS_10TModeEventE @ 154 NONAME
+	_ZN17CXnControlAdapter19HandleControlEventLEP11CCoeControlN19MCoeControlObserver9TCoeEventE @ 155 NONAME
+	_ZN17CXnControlAdapter19HandleLongTapEventLERK6TPointS2_ @ 156 NONAME
+	_ZN17CXnControlAdapter19HandlePointerEventLERK13TPointerEvent @ 157 NONAME
+	_ZN17CXnControlAdapter20DoExitPowerSaveModeLENS_10TModeEventE @ 158 NONAME
+	_ZN17CXnControlAdapter21DoEnterPowerSaveModeLENS_10TModeEventE @ 159 NONAME
+	_ZN17CXnControlAdapter21HandlePropertyChangeLEP11CXnProperty @ 160 NONAME
+	_ZN17CXnControlAdapter22EnableLongTapAnimationEi @ 161 NONAME
+	_ZN17CXnControlAdapter23DoHandlePropertyChangeLEP11CXnProperty @ 162 NONAME
+	_ZN17CXnControlAdapter23MeasureAdaptiveContentLERK5TSize @ 163 NONAME
+	_ZN17CXnControlAdapter26HandleScreenDeviceChangedLEv @ 164 NONAME
+	_ZN17CXnControlAdapter4NewLER15CXnNodePluginIf @ 165 NONAME
+	_ZN17CXnControlAdapter8SetBlankEi @ 166 NONAME
+	_ZN17CXnControlAdapter8SetDataLERK6TDesC8RK7TDesC16i @ 167 NONAME
+	_ZN17CXnControlAdapter9ComponentEv @ 168 NONAME
+	_ZN17CXnControlAdapterC1Ev @ 169 NONAME
+	_ZN17CXnControlAdapterC2Ev @ 170 NONAME
+	_ZN17CXnControlAdapterD0Ev @ 171 NONAME
+	_ZN17CXnControlAdapterD1Ev @ 172 NONAME
+	_ZN17CXnControlAdapterD2Ev @ 173 NONAME
+	_ZN19MXnComponentFactory16MakeXnComponentLER15CXnNodePluginIfRP12CXnComponent @ 174 NONAME
+	_ZN19MXnComponentFactory18CreateXnComponentLER15CXnNodePluginIfRP12CXnComponent @ 175 NONAME
+	_ZN19MXnComponentFactory21MakeXnControlAdapterLER15CXnNodePluginIfP17CXnControlAdapter @ 176 NONAME
+	_ZN19MXnComponentFactory26DoesNodeNeedComponentImplLERK6TDesC8 @ 177 NONAME
+	_ZN19MXnComponentFactoryC2Ev @ 178 NONAME
+	_ZN19MXnComponentFactoryD0Ev @ 179 NONAME
+	_ZN19MXnComponentFactoryD1Ev @ 180 NONAME
+	_ZN19MXnComponentFactoryD2Ev @ 181 NONAME
+	_ZN19TXnUiEnginePluginIf10StringPoolEv @ 182 NONAME
+	_ZN19TXnUiEnginePluginIf11PluginNodeLEP15CXnNodePluginIf @ 183 NONAME
+	_ZN19TXnUiEnginePluginIf12FocusedNodeLEv @ 184 NONAME
+	_ZN19TXnUiEnginePluginIf13AddDirtyNodeLER15CXnNodePluginIf @ 185 NONAME
+	_ZN19TXnUiEnginePluginIf13FindNodeByIdLERK6TDesC8S2_ @ 186 NONAME
+	_ZN19TXnUiEnginePluginIf13FindNodeByIdLERK7TDesC16S2_ @ 187 NONAME
+	_ZN19TXnUiEnginePluginIf14SetFocusedNodeEP15CXnNodePluginIf @ 188 NONAME
+	_ZN19TXnUiEnginePluginIf16FindNodeByClassLERK7TDesC16 @ 189 NONAME
+	_ZN19TXnUiEnginePluginIf16IsMenuDisplayingEv @ 190 NONAME
+	_ZN19TXnUiEnginePluginIf16ScreenDeviceSizeEv @ 191 NONAME
+	_ZN19TXnUiEnginePluginIf17DisableRenderUiLCEv @ 192 NONAME
+	_ZN19TXnUiEnginePluginIf18IsDialogDisplayingEv @ 193 NONAME
+	_ZN19TXnUiEnginePluginIf18IsTextEditorActiveEv @ 194 NONAME
+	_ZN19TXnUiEnginePluginIf18VerticalTwipValueLEP11CXnPropertyi @ 195 NONAME
+	_ZN19TXnUiEnginePluginIf19VerticalPixelValueLEP11CXnPropertyi @ 196 NONAME
+	_ZN19TXnUiEnginePluginIf20HorizontalTwipValueLEP11CXnPropertyi @ 197 NONAME
+	_ZN19TXnUiEnginePluginIf21HorizontalPixelValueLEP11CXnPropertyi @ 198 NONAME
+	_ZN19TXnUiEnginePluginIf23EnablePartialTouchInputER15CXnNodePluginIfi @ 199 NONAME
+	_ZN19TXnUiEnginePluginIf8EditModeEv @ 200 NONAME
+	_ZN19TXnUiEnginePluginIf9LayoutUILEP15CXnNodePluginIf @ 201 NONAME
+	_ZN19TXnUiEnginePluginIf9RenderUILEP15CXnNodePluginIf @ 202 NONAME
+	_ZN19TXnUiEnginePluginIf9ResourcesEv @ 203 NONAME
+	_ZN19TXnUiEnginePluginIf9RootNodeLEv @ 204 NONAME
+	_ZN20CXnComponentNodeImpl10ConstructLEP7CXnType @ 205 NONAME
+	_ZN20CXnComponentNodeImpl12SetComponentEP12CXnComponent @ 206 NONAME
+	_ZN20CXnComponentNodeImpl14MakeInterfaceLERK6TDesC8 @ 207 NONAME
+	_ZN20CXnComponentNodeImpl25SetComponentNeedsCreationEi @ 208 NONAME
+	_ZN20CXnComponentNodeImpl4NewLEP7CXnType @ 209 NONAME
+	_ZN20CXnComponentNodeImpl9ComponentEv @ 210 NONAME
+	_ZN20CXnComponentNodeImplC1Ev @ 211 NONAME
+	_ZN20CXnComponentNodeImplC2Ev @ 212 NONAME
+	_ZN20CXnComponentNodeImplD0Ev @ 213 NONAME
+	_ZN20CXnComponentNodeImplD1Ev @ 214 NONAME
+	_ZN20CXnComponentNodeImplD2Ev @ 215 NONAME
+	_ZN8CXnUtils11CreateFontLER15CXnNodePluginIfRP5CFontRi @ 216 NONAME
+	_ZN8CXnUtils11CreateFontLERK7TDesC16i10TFontStyleRP5CFontRi @ 217 NONAME
+	_ZN8CXnUtils11GetRgbValueER4TRgbRK6TDesC8 @ 218 NONAME
+	_ZN8CXnUtils11StripQuotesERP7HBufC16 @ 219 NONAME
+	_ZN8CXnUtils12FindResourceER12CArrayPtrSegI11CXnResourceERK7TDesC16Ri @ 220 NONAME
+	_ZN8CXnUtils12ScaleBitmapLERK5TRectP10CFbsBitmapS4_ @ 221 NONAME
+	_ZN8CXnUtils13TextAlignmentER15CXnNodePluginIf @ 222 NONAME
+	_ZN8CXnUtils15ConvertHslToRgbEiii @ 223 NONAME
+	_ZN8CXnUtils18CollapseWhiteSpaceER15CXnNodePluginIfR6TDes16 @ 224 NONAME
+	_ZN8CXnUtils18ResolveSkinItemIDLERK7TDesC16R11TAknsItemIDRi @ 225 NONAME
+	_ZN8CXnUtils20HandlePowerSaveModeLEP7CXnNodeii @ 226 NONAME
+	_ZNK11CXnProperty7EqualsLERS_ @ 227 NONAME
+	_ZNK12CXnNodeAppIf12GetPropertyLER11CXnProperty @ 228 NONAME
+	_ZNK12CXnNodeAppIf12GetPropertyLERK6TDesC8 @ 229 NONAME
+	_ZNK12CXnNodeAppIf19InternalDomNodeTypeEv @ 230 NONAME
+	_ZNK12CXnNodeAppIf7ParentLEv @ 231 NONAME
+	_ZNK12CXnNodeAppIf9GetPCDataEv @ 232 NONAME
+	_ZNK14CXnApplication9AppDllUidEv @ 233 NONAME
+	_ZNK15CXnAppUiAdapter4ViewEv @ 234 NONAME
+	_ZNK15CXnNodePluginIf12GetPropertyLER11CXnProperty @ 235 NONAME
+	_ZNK15CXnNodePluginIf12GetPropertyLERK6TDesC8 @ 236 NONAME
+	_ZNK15CXnNodePluginIf7ControlEv @ 237 NONAME
+	_ZNK15CXnNodePluginIf7ParentLEv @ 238 NONAME
+	_ZNK15CXnNodePluginIf9GetPCDataEv @ 239 NONAME
+	_ZNK16TXnUiEngineAppIf14WidgetsVisibleEv @ 240 NONAME
+	_ZNK17CXnControlAdapter15LongTapDetectorEv @ 241 NONAME
+	_ZNK17CXnControlAdapter16ComponentControlEi @ 242 NONAME
+	_ZNK17CXnControlAdapter16DrawContentImageEv @ 243 NONAME
+	_ZNK17CXnControlAdapter16IsDrawingAllowedEv @ 244 NONAME
+	_ZNK17CXnControlAdapter22CountComponentControlsEv @ 245 NONAME
+	_ZNK17CXnControlAdapter4DrawERK5TRect @ 246 NONAME
+	_ZNK17CXnControlAdapter4DrawERK5TRectR9CWindowGc @ 247 NONAME
+	_ZNK19TXnUiEnginePluginIf14WidgetsVisibleEv @ 248 NONAME
+	_ZNK20CXnComponentNodeImpl25DoesComponentNeedCreationEv @ 249 NONAME
+	_ZTI11CXnDocument @ 250 NONAME
+	_ZTI11CXnProperty @ 251 NONAME
+	_ZTI12CXnComponent @ 252 NONAME
+	_ZTI14CXnApplication @ 253 NONAME
+	_ZTI15CXnAppUiAdapter @ 254 NONAME
+	_ZTI16CXnViewsNodeImpl @ 255 NONAME
+	_ZTI16MXnNodePredicate @ 256 NONAME
+	_ZTI17CXnControlAdapter @ 257 NONAME
+	_ZTI18CXnListQueryDialog @ 258 NONAME
+	_ZTI19MXnComponentFactory @ 259 NONAME
+	_ZTI20CXnComponentNodeImpl @ 260 NONAME
+	_ZTI27CXnNodeBreadthFirstIteratorI7CXnNodeE @ 261 NONAME
+	_ZTIN21CXnControlAdapterImpl13TIconProviderE @ 262 NONAME
+	_ZTV11CXnDocument @ 263 NONAME
+	_ZTV11CXnProperty @ 264 NONAME
+	_ZTV12CXnComponent @ 265 NONAME
+	_ZTV14CXnApplication @ 266 NONAME
+	_ZTV15CXnAppUiAdapter @ 267 NONAME
+	_ZTV16CXnViewsNodeImpl @ 268 NONAME
+	_ZTV16MXnNodePredicate @ 269 NONAME
+	_ZTV17CXnControlAdapter @ 270 NONAME
+	_ZTV18CXnListQueryDialog @ 271 NONAME
+	_ZTV19MXnComponentFactory @ 272 NONAME
+	_ZTV20CXnComponentNodeImpl @ 273 NONAME
+	_ZTV27CXnNodeBreadthFirstIteratorI7CXnNodeE @ 274 NONAME
+	_ZTVN21CXnControlAdapterImpl13TIconProviderE @ 275 NONAME
+	_ZThn52_N17CXnControlAdapter19HandleControlEventLEP11CCoeControlN19MCoeControlObserver9TCoeEventE @ 276 NONAME
+	_ZThn60_N17CXnControlAdapter19HandleLongTapEventLERK6TPointS2_ @ 277 NONAME
 
--- a/idlehomescreen/xmluirendering/uiengine/group/xnlayoutengine.mmp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/group/xnlayoutengine.mmp	Wed Apr 14 15:47:59 2010 +0300
@@ -65,11 +65,6 @@
 SOURCE    xneditmode.cpp
 SOURCE    xneditor.cpp
 SOURCE    xnpropertysubscriber.cpp
-SOURCE    xngesturehelper.cpp
-SOURCE    xngesture.cpp
-SOURCE    xngesturerecogniser.cpp
-SOURCE    xnpointarray.cpp
-SOURCE    xnhittest.cpp
 SOURCE    xnplugindata.cpp
 SOURCE    xnviewdata.cpp
 SOURCE    xnrootdata.cpp
@@ -86,6 +81,8 @@
 SOURCE    xnextrenderingpluginwrapper.cpp
 SOURCE    xnbackgroundmanager.cpp
 SOURCE    xnviewcontroladapter.cpp
+SOURCE    xnspbgcleaner.cpp
+SOURCE    xnwaitdialog.cpp
 
 START RESOURCE  xnuiengine.rss
 HEADER
@@ -113,6 +110,7 @@
 LIBRARY    bafl.lib
 LIBRARY    eikcoctl.lib
 LIBRARY    eikcore.lib
+LIBRARY    eikdlg.lib
 LIBRARY    egul.lib
 LIBRARY    fbscli.lib
 LIBRARY    ws32.lib
@@ -156,6 +154,7 @@
 LIBRARY    disknotifyhandler.lib
 LIBRARY	   platformenv.lib
 LIBRARY    hspluginsettings.lib
+LIBRARY    akntouchgesturefw.lib
 
 #if defined(_XN3_DEBUG_) || defined(AI3_DEBUG_PERFORMANCE)
 LIBRARY    flogger.lib
--- a/idlehomescreen/xmluirendering/uiengine/inc/xnappuiadapterimpl.h	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/inc/xnappuiadapterimpl.h	Wed Apr 14 15:47:59 2010 +0300
@@ -21,7 +21,8 @@
 
 // System includes
 #include <e32base.h>
-
+#include <AknProgressDialog.h> // for MProgressDialogCallback
+#include "xnpropertysubscriber.h" // for CXnPropertySubscriber
 
 // Forward declarations
 class CXnUiEngine;
@@ -34,6 +35,7 @@
 class CHsCcProviderClient;
 class CXnEffectManager;
 class MHsContentControl;
+class CXnWaitDialog;
 
 // Constants
 
@@ -46,7 +48,9 @@
 *  @lib xn3layoutengine.lib
 *  @since Series 60 3.1
 */
-NONSHARABLE_CLASS( CXnAppUiAdapterImpl ) : public CBase    
+NONSHARABLE_CLASS( CXnAppUiAdapterImpl ) : public CBase,
+                                           public MXnPropertyChangeObserver,
+                                           public MProgressDialogCallback    
     {
 public:
     // Constructors and destructor
@@ -156,6 +160,15 @@
      */
     void HandleResourceChangeL( TInt aType );
     
+public: // From MProgressDialogCallback
+
+    /**
+     * Callback method from MProgressDialogCallback interface.
+     * Gets called when a dialog is dismissed.
+     * @param aButtonId Id of the pushed button.
+     */
+    void DialogDismissedL( TInt aButtonId );
+
 private:
     
     /**
@@ -164,6 +177,18 @@
     CXnAppUiAdapterImpl( TUid aApplicationUid,    
             CXnAppUiAdapter& aAdapter );
 
+private:    
+    // from MXnPropertyChangeObserver    
+    void PropertyChangedL( const TUint32 aKey, const TInt aValue );
+
+private:    
+    // new functions
+    
+    /**
+     * Launches wait dialog during backup/restore.
+     */
+    void DisplayWaitDialogL();
+    
 private:
     // Data
     /** AppUi, Not owned. */
@@ -185,7 +210,11 @@
     /** Effect manager, Owned */
     CXnEffectManager* iEffectManager;
     /** Resource offset */
-    TInt iResourceOffset;    
+    TInt iResourceOffset;
+    /** Wait dialog, Owned */
+    CXnWaitDialog* iXnWaitDialog;
+    /** Publish&Subscribe observer for Backup & Restore, Owned */
+    CXnPropertySubscriber* iBackupRestoreObserver;  
     };
 
 #endif      // XNAPPUIADAPTERIMPL_H
--- a/idlehomescreen/xmluirendering/uiengine/inc/xnbackgroundmanager.h	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/inc/xnbackgroundmanager.h	Wed Apr 14 15:47:59 2010 +0300
@@ -261,6 +261,13 @@
      */   
     CFbsBitmap* iBgImage;
     
+    /**
+     * Pointer to status pane mask. Drawn on top of a wallpaper in 
+     * the status pane area.
+     * Own.
+     */
+    CFbsBitmap* iSpMask;
+    
     /** 
      * Path of the wallpaper image, including filename. 
      * This is used only if same wallpaper 
--- a/idlehomescreen/xmluirendering/uiengine/inc/xncontroladapterimpl.h	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/inc/xncontroladapterimpl.h	Wed Apr 14 15:47:59 2010 +0300
@@ -25,9 +25,7 @@
 #include <AknIconUtils.h>
 #include <AknsEffectAnim.h>
 #include <AknsItemID.h>
-
-// User includes
-#include "xngesturehelper.h"
+#include <akntouchgesturefw.h>
 
 // Forward declarations
 class CXnNodePluginIf;
@@ -45,19 +43,7 @@
 const TInt KSpaceChar = 32;
 const TInt KRightParenthesis = ')';
 
-/**
- * XnGestureHelper namespace
- * Used for the whole gesture family - Gesture recognizer, gesture helper, 
- * Point array
- */
-namespace XnGestureHelper
-    {
-    class CXnGestureHelper;
-    }
-
-using XnGestureHelper::CXnGestureHelper;
-
-
+using namespace AknTouchGestureFw;
 // Class declaration
 
 /**
@@ -68,7 +54,8 @@
 *  @since Series 60 3.1
 */
 NONSHARABLE_CLASS( CXnControlAdapterImpl ) : public CBase, 
-    public MAknsEffectAnimObserver
+    public MAknsEffectAnimObserver,
+    public MAknTouchGestureFwObserver
     {
 public:
     
@@ -444,12 +431,11 @@
         CXnProperty* aProperty );
 
     /**
-     * Forwards event to gesture helper
+     * Sets up gesture on buttondown event
      * 
      * @param aPointerEvent Event to be forwarded
-     * @return ETrue when swipe took place, EFalse otherwise
      */
-    TBool PassEventToGestureHelperL(
+    void InitializeGestureL(
         const TPointerEvent& aPointerEvent );
 
     /*
@@ -464,6 +450,14 @@
      */
     RPointerArray< CXnControlAdapter >& ChildAdapters();
 
+private: // from MAknTouchGestureFwObserver
+    /**
+     * Implements gesture handling
+     * 
+     * @see MAknTouchGestureFwObserver
+     */
+    void HandleTouchGestureL( MAknTouchGestureFwEvent& aEvent );
+
 protected:
     // New functions
 
@@ -493,6 +487,7 @@
     void DrawBackgroundImageL( const TRect& aRect, CXnNode& aNode,
         CWindowGc& aGc, CFbsBitmap* aBitmap, CFbsBitmap* aMask );
     RFs& FsSession();
+    TBool IsDragThresholdExceeded( const TPoint& aPoint );
 
 private:
     // Data 
@@ -551,14 +546,16 @@
     TAknsItemID iAnimIID;
     /** flag: skin animation id is resolved from the CSS property */
     TBool iAnimIDResolved;
-    /** pointer to gesturehelper */
-    CXnGestureHelper* iGestureHelper;
     /** flag: for storing blank state */
     TBool iBlank;
     /** flag: to detect whether longtap occured */
     TBool iLongtap;    
-    /** record right softkey node of menubar when keydown event happened */
-    mutable CXnNode* iKeyDownNode;
+    /** Gesture framework, owned. */
+    CAknTouchGestureFw* iGestureFw;
+    /** Gesture destination, Not owned. */        
+    CXnNode* iGestureDestination;
+    /** Starting point of button down event. */        
+    TPoint iButtonDownStartPoint;
     };
 
 #endif //__XNCONTROLADAPTERIMPL_H__
--- a/idlehomescreen/xmluirendering/uiengine/inc/xngesture.h	Wed Mar 31 21:17:19 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,369 +0,0 @@
-/*
-* Copyright (c) 2008-2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Gesture class
-*
-*/
-
-
-#ifndef _XNGESTURE_H_
-#define _XNGESTURE_H_
-
-// System includes
-#include <e32base.h>
-
-// User includes
-#include "xnpointarray.h"
-#include "xngesturerecogniser.h"
-
-// Namespace declaration
-
-/**
- * XnGestureHelper namespace
- * Used for the whole gesture family - Gesture recognizer, gesture helper, 
- * Point array
- */
-namespace XnGestureHelper
-    {
-    
-    /**
-     * Struct for a point in floating-point represanation 
-     */
-    NONSHARABLE_STRUCT( TRealPoint )
-        {
-        inline TRealPoint();
-        inline TRealPoint( const TRealPoint& aPoint );
-        inline TRealPoint( TReal aX, TReal aY );
-        inline TBool operator==( const TRealPoint& aPoint ) const;
-
-        TReal32 iX;
-        TReal32 iY;
-        };
-    
-    // Class declaration
-
-    /**  
-     *  TGesture represents the gesture that the user has made.
-     *  Implements MGestureEvent interface to allow clients to 
-     *  inspect the gesture
-     *  
-     *  @ingroup group_xnlayoutengine 
-     */
-    NONSHARABLE_CLASS( CXnGesture ) : public CBase
-        {
-    public:
-        
-        /** 
-         * X and Y axes, or both 
-         */
-        enum TAxis
-            {
-            EAxisBoth, 
-            EAxisHorizontal, 
-            EAxisVertical
-            };
-
-    public:
-        
-        /** destructor */
-        ~CXnGesture();
-
-        /** 
-         * Sets the gesture as empty. resets timers to receive points
-         * immediately
-         */
-        void Reset();
-
-        /** 
-         * Check the gesture if it is empty
-         * 
-         * @return ETrue if the gesture has no points 
-         */
-        TBool IsEmpty() const;
-
-        /**
-         * Add a point to the sequence of points that forms the gesture
-         * Call Reset() just before adding the first point
-         * 
-         * @param aPoint the point to add
-         * @return error code
-         */
-        TInt AddPoint( const TPoint& aPoint );
-
-        /** 
-         * Checks if the point it is close to holding point
-         * 
-         * @param aPoint Point to be examined
-         * @return ETrue if the point is very near the holding point
-         */
-        TBool IsNearHoldingPoint( const TPoint& aPoint ) const;
-
-        /** 
-         * Set the latest point as the holding point
-         */
-        void SetHoldingPoint();
-
-        /** 
-         * Checks if the examined point is at the last point's position
-         * 
-         * @param aPoint Point to be examined
-         * @return ETrue if aPoint is the same as point added last 
-         */
-        TBool IsLatestPoint( const TPoint& aPoint ) const;
-
-        /** 
-         * After call, Code(...) will return appropriate holding gesture code.
-         */
-        void StartHolding();
-
-        /** 
-         * After call, Code(...) will return a "hold released" gesture code 
-         * when the gesture is completed. Meanwhile, code will be drag.
-         */
-        void ContinueHolding();
-
-        /** 
-         * Set as stylus released 
-         */
-        void SetReleased();
-
-        /** 
-         * Set the gesture as complete. Gesture is completed at pointer up 
-         */
-        void SetComplete();
-
-        /** 
-         * After call, Code(...) will return a "cancelled" gesture code 
-         */
-        void SetCancelled();
-
-        /** 
-         * Checks if the gesture is a tap
-         * 
-         * @return Whether the current gesture is a tap 
-         *         (and hence not a swipe). Does not consider holding or 
-         *         other state information (such as whether the gesture was 
-         *         just started or is dragging). Results are based purely on 
-         *         the current stream of points.
-         */
-        TBool IsTap() const;
-
-        /**
-         * From MGestureEvent
-         * Checks and return current gesture status at desired axis
-         * 
-         * @param aRelevantAxis Axis to be examined
-         * @return Gesture status
-         */
-        TXnGestureCode Code( TAxis aRelevantAxis ) const;
-
-        /**
-         * From MGestureEvent
-         * Checks and returns holding status
-         * 
-         * @return Return holding
-         */
-        TBool IsHolding() const;
-
-        /**
-         * From MGestureEvent
-         * Returns first position form iPoints
-         * 
-         * @return Returns first point
-         */
-        TPoint StartPos() const;
-
-        /**
-         * From MGestureEvent
-         * Returns current (last) position from iPoints
-         * 
-         * @return Returns last point
-         */
-        TPoint CurrentPos() const;
-
-        /**
-         * From MGestureEvent
-         * Returns speed of X, Y movement 
-         * 
-         * @return Speed in X, Y axis
-         */
-        TRealPoint Speed() const;
-
-        /**
-         * From MGestureEvent
-         * Scales the speed
-         * 
-         * @return Scaled speed
-         */
-        TRealPoint SpeedPercent( const TRect& aEdges ) const;
-
-        /**
-         * From MGestureEvent
-         * Cheks and returns distance between start and current position
-         * 
-         * @return Distance between two points
-         */
-        TPoint Distance() const;
-        
-        /**
-         * Checks and returns gesture
-         * 
-         * @param aRelevantAxis See @ref MGestureEvent::Code
-         * @return gesture code by analysing the sequence of points
-         */
-        TXnGestureCode CodeFromPoints( TAxis aRelevantAxis ) const;
-        
-        TXnGestureCode LastDirection( TAxis aRelevantAxis ) const;
-
-    private:
-        
-        /** Information of an earlier gesture */
-        struct TGestureRecord
-            {
-            enum TType
-                {
-                ETypeOther, 
-                ETypeTap, 
-                ETypeDoubleTap
-                };
-
-            TGestureRecord();
-            TGestureRecord( TType aType, TTime aCompletionTime, TPoint aPos );
-
-            /** type of the gesture */
-            TType iType;
-            /** completion time fo the gesture */
-            TTime iCompletionTime;
-            /** point of completion */
-            TPoint iPos;
-            };
-
-        /** 
-         * Returns elapsed time
-         *
-         * @return elapsed time between the latest and previous points 
-         */
-        inline TTimeIntervalMicroSeconds32 TimeFromPreviousPoint() const;
-
-        /** 
-         * Checks whether the movement has stopped
-         *
-         * @return ETrue if user has stopped moving the stylus before lifting 
-         *         it 
-         */
-        inline TBool IsMovementStopped() const;
-
-        /** 
-         * Offset of the last entry
-         *  
-         * @return aOffset'th last entry in the list of points 
-         */
-        inline const TXnPointEntry& NthLastEntry( TInt aOffset ) const;
-
-        /** 
-         * Calles NthLastEntry for previous point
-         * 
-         * @return previous point (may not be exactly the point before last)
-         */
-        inline const TXnPointEntry& PreviousEntry() const;
-
-        /** 
-         * Returns the point before the last one
-         * 
-         * @return position of point received just before the latest point 
-         */
-        inline TPoint PreviousPos() const;
-
-        /** 
-         * Return if the tap was a double tap
-         * 
-         * @return ETrue if tap should be a double tap 
-         */
-        TBool IsTapDoubleTap() const;
-
-        /** 
-         * Returns current gesture type
-         * 
-         * @return the type of the current gesture 
-         */
-        TGestureRecord::TType Type() const;
-
-    private:
-        // Enumerators for holding and completion state
-        
-        /**
-         * the different states that indicate whether user has made a holding 
-         * gesture
-         */
-        enum THoldingState
-            {
-            /** before holding activated (i.e., holding not activated) */
-            ENotHolding = 0,
-            /** holding activated just now (lasts just one callback round) */
-            EHoldStarting,
-            /** holding activated earlier */
-            EHolding
-            };
-
-        /**
-         * Completion states
-         */                 
-        enum TCompletionState
-            {
-            // Note: implementation assumes this order of enums
-            ENotComplete = 0, 
-            ECancelled, 
-            EComplete, 
-            EReleased
-            };
-    
-    private:
-        // Members
-        
-        /** 
-         * sequence of points that make up the gesture, owned. 
-         */
-        RArray< TXnPointEntry > iPoints;
-        
-        /** 
-         * index in iPoints of the point in which user started holding 
-         */
-        TInt iHoldingPointIndex;     
-        
-        /**
-         * state that indicates is user has held the pointer down in one 
-         * position for long time to indicate a holding gesture 
-         */
-        THoldingState iHoldingState;
-        
-        /** 
-         * gesture only becomes complete when user lifts the pointer 
-         */ 
-        TCompletionState iState;
-        
-        /** 
-         * time when the stylus was lifted. 
-         */
-        TTime iCompletionTime;
-        
-        /** 
-         * previous gesture information for double tap
-         */
-        TGestureRecord iPreviousGesture;
-        };
-    } // namespace XnGestureHelper
-
-// Inline functions
-#include "xngesture.inl"
-
-#endif // _XNGESTURE_H_
--- a/idlehomescreen/xmluirendering/uiengine/inc/xngesture.inl	Wed Mar 31 21:17:19 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-/*
-* Copyright (c) 2008-2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Gesture class - inline section
-*
-*/
-
-
-// Protection for nested includes
-#ifndef _XNGESTURE_INL_
-#define _XNGESTURE_INL_
-
-// -----------------------------------------------------------------------------
-// TRealPoint inline implementation
-// -----------------------------------------------------------------------------
-//
-namespace XnGestureHelper
-    {
-
-    // -------------------------------------------------------------------------
-    // Default Constructor for the real point
-    // -------------------------------------------------------------------------
-    //
-    inline TRealPoint::TRealPoint() :
-        iX( 0 ), iY( 0 )
-        {
-        }
-    
-
-    // -------------------------------------------------------------------------
-    // Copy constructor for real point
-    // -------------------------------------------------------------------------
-    //
-    inline TRealPoint::TRealPoint( const TRealPoint& aPoint ) :
-        iX( aPoint.iX ), iY( aPoint.iY )
-        {
-        }
-
-    // -------------------------------------------------------------------------
-    // Copy constructor for real point
-    // -------------------------------------------------------------------------
-    //
-    inline TRealPoint::TRealPoint( TReal aX, TReal aY ) :
-        iX( aX ), iY( aY )
-        {
-        }
-
-    // -------------------------------------------------------------------------
-    // Default constructor for real point
-    // -------------------------------------------------------------------------
-    //
-    inline TBool TRealPoint::operator==( const TRealPoint& aPoint ) const
-        {
-        return iX == aPoint.iX && iY == aPoint.iY;
-        }
-    }
-	
-#endif //_XNGESTURE_INL_
--- a/idlehomescreen/xmluirendering/uiengine/inc/xngesturedefs.h	Wed Mar 31 21:17:19 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Gesture helper constant definitions
-*
-*/
-
-
-#ifndef _XNGESTUREDEFS_H_
-#define _XNGESTUREDEFS_H_
-
-// System includes
-#include <e32std.h>
-
-/** 
- * This flag controls whether helpers emits a double tap or a tap gesture 
- * for a second tap 
- */
-#define _GESTURE_DOUBLE_TAP_SUPPORT
-
-/**
- * XnGestureHelper namespace
- * Used for the whole gesture family - Gesture recognizer, gesture helper, 
- * Point array
- */
-namespace XnGestureHelper
-    {
-    /** time to hold the stylus in the same position to activate 
-     * holding, in microseconds 
-     */
-    const TInt KHoldDuration = 500000; 
-
-    /** 
-     * time to tap again for the second tap to be a double tap, in 
-     * microseconds 
-     */
-    const TInt KMaxDoubleTapDuration = 400000; 
-
-    /** 
-     * time in which speed becomes zero if user stops stylus movement before
-     * lifting the pointer, in microseconds
-     */ 
-    const TInt KSpeedStopTime = 100000; 
-
-    /** 
-     * tolerance in degrees to either side of an angle, for direction to be 
-     * the same as reference angle
-     */
-    const TReal KAngleTolerance = 80;
-    
-    /**  
-     * maximum pointer movement from pointer down position for a gesture be 
-     * a tap or hold gesture
-     */
-    const TInt KSamePointTolerance = 3;
-    
-    /** 
-     * minimum length of a valid swipe in pixels. should be larger than 
-     * KTapTolerance
-     */
-    const TReal KMinSwipeLength = 10;
-    
-    /** Nth pointer event before the latest point */
-    const TInt KPreviousPointOffset = 3;
-    
-    
-    /** 
-     * Panic codes 
-     */
-    enum TGesturePanic
-        {
-        EGesturePanicIllegalLogic
-        };
-    
-    /** 
-     * Panics the thread 
-     * 
-     * @param aReason Panic reason
-     */
-    inline void Panic( TGesturePanic aReason )
-        {
-        _LIT( KComponentName, "XnGestureHelper" );
-        User::Panic( KComponentName, aReason );
-        }   
-    } // namespace XnGestureHelper
-
-#endif // _XNGESTUREDEFS_H_
--- a/idlehomescreen/xmluirendering/uiengine/inc/xngesturehelper.h	Wed Mar 31 21:17:19 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,178 +0,0 @@
-/*
-* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Gesture helper implementation
-*
-*/
-
-
-#ifndef _XNGESTUREHELPER_H_
-#define _XNGESTUREHELPER_H_
-
-// System includes
-#include <e32base.h>
-
-// User includes
-#include "xngesturerecogniser.h"
-
-// Forward declarations
-class CXnNode;
-struct TPointerEvent;
-
-/**
- * XnGestureHelper namespace
- * Used for the whole gesture family - Gesture recognizer, gesture helper, 
- * Point array
- */
-namespace XnGestureHelper
-    {
-    
-    // Forward declarations
-    class CHoldingTimer;
-    class CXnGesture;
-    
-    // Constants
-    const TInt KGestureMinSpeed = 25;
-    const TInt KGestureMinLength = 100;
-        
-    /**
-     *  Implementation of CGestureHelper interface
-     *
-     *  @ingroup group_xnlayoutengine
-     */
-    NONSHARABLE_CLASS( CXnGestureHelper ) : public CBase
-        {
-    
-        /** private implementation class */
-        friend class CHoldingTimer;
-    
-    public:
-        
-        /** 2-phase constructor */
-        static CXnGestureHelper* NewL( CXnNode& aNode );
-
-        /** Destructor */
-        ~CXnGestureHelper();
-
-        /** 
-         * See GestureHelper, SetHoldingEnabled function
-         * 
-         * @see CGestureHelper::SetHoldingEnabled 
-         */
-        void SetHoldingEnabled( TBool aEnabled );
-        
-        /** 
-         * See Gesturehelper, IsHoldingEnabled function
-         * 
-         * @see CGestureHelper::IsHoldingEnabled 
-         */
-        TBool IsHoldingEnabled() const;
-
-        /** 
-         * Gets the owner
-         * 
-         * @return Owner
-         */                
-        CXnNode* Owner() const;
-        
-        /** 
-         * Sets destination
-         * 
-         * @aParam Destination
-         */        
-        void SetDestination( CXnNode* aDestination );
-
-        /** 
-         * Gets destination
-         * 
-         * @return Destination
-         */                         
-        CXnNode* Destination() const;
-        
-        /** 
-         * See GestureHelper Handlepointervent
-         * 
-         * @see CGestureHelper::HandlePointerEventL 
-         */ 
-        TXnGestureCode HandlePointerEventL( const TPointerEvent& aEvent ); 
-                    
-        /** Reset helper state */
-        void Reset();
-
-    private:
-        
-        /** Constructor */
-        CXnGestureHelper( CXnNode& aNode );
-
-        /** 
-         * Returns if the helper is processing
-         *         
-         * @return ETrue if the helper has not started processing a gesture
-         */
-        inline TBool IsIdle() const; 
-        
-        /** 
-         * Add a point to the sequence of points that make up the gesture 
-         */
-        inline void AddPointL( const TPointerEvent& aEvent );
-        
-        /** 
-         * Add a point to the sequence of points that make up the gesture
-         * 
-         * @return                    
-         */
-        inline TInt AddPoint( const TPointerEvent& aEvent );
-        
-        /** 
-         * Activates holding and notifies observer that holding has been 
-         * started 
-         */
-        void StartHoldingL();
-        
-        /** 
-         * Check if swipe if between defined values 
-         * 
-         * @return Swiping left/right/none 
-         */
-        TXnGestureCode ValidSwipe() const;
-
-    private:
-
-        /** 
-         * Gesture owner, Not owned.
-         */        
-        CXnNode& iOwner;        
-        
-        /** 
-         * Gesture is the logical representation of a sequence of points 
-         * arriving at certain times
-         */ 
-        CXnGesture* iGesture;
-
-        /** 
-         * holding is activated when user keeps pointer down in the same place 
-         * for a longer period. the holding timer activates off when enough 
-         * time has passed.
-         */
-        CHoldingTimer* iHoldingTimer;
-
-        /** 
-         * Gesture destination, Not owned.
-         */        
-        CXnNode* iDestination;
-        
-        TXnGestureCode iDirection;
-        };
-    } // GestureHelper
-
-#endif // _XNGESTUREHELPER_H_
--- a/idlehomescreen/xmluirendering/uiengine/inc/xngesturerecogniser.h	Wed Mar 31 21:17:19 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +0,0 @@
-/*
-* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Algorithm to recognise gesture from a stream of points
-*
-*/
-
-
-#ifndef _XNGESTURERECOGNISER_H_
-#define _XNGESTURERECOGNISER_H_
-
-// System includes
-#include <e32std.h>
-
-
-/**
- * XnGestureHelper namespace
- * Used for the whole gesture family - Gesture recognizer, gesture helper, 
- * Point array
- */
-namespace XnGestureHelper
-    {
-    
-    // Forward declarations
-    class TXnPointArray;
-    
-    /**
-     * flag that indicates gesture code is a holding code
-     * clients should use MGestureEvent::IsHolding
-     */
-    const TInt EFlagHold = 0x10000000;
-    
-    /**
-     * Gesture codes and states
-     */
-    enum TXnGestureCode
-        {
-        // states
-        /** gesture just started (user pressed stylus down)*/ 
-        EGestureStart = 0x00000001, 
-        /** user moved stylus (may be holding or not holding) */
-        EGestureDrag = 0x00000002, 
-        /** user lifted stylus while user was holding */
-        EGestureReleased = 0x00000003, 
-        
-        // gestures  
-        /** gesture was not recognised */
-        EGestureUnknown = 0x00000005, 
-        /** these codes are sent when user lifts stylus 
-         * (if holding not started)
-         */
-        EGestureTap = 0x00000006,
-        /** first tap emits EGestureTap */
-        EGestureDoubleTap = 0x00000007, 
-        /** swipe left */
-        EGestureSwipeLeft = 0x00000008,
-        /** swipe right */
-        EGestureSwipeRight = 0x00000009,
-        /** swipe up */
-        EGestureSwipeUp = 0x0000000A,
-        /** swipe down */
-        EGestureSwipeDown = 0x0000000B,
-        EGestureCanceled = 0x0000000C,
-        /** 
-         * these codes are sent when user initiates holding by keeping stylus 
-         * in same place for a longer duration
-         */
-        EGestureHoldLeft = EGestureSwipeLeft | EFlagHold,
-        EGestureHoldRight = EGestureSwipeRight | EFlagHold,
-        EGestureHoldUp = EGestureSwipeUp | EFlagHold,
-        EGestureHoldDown = EGestureSwipeDown | EFlagHold
-        };
-    
-    //Class declaration
-    
-    /**
-     *  Set of algorithms to recognise gesture from a stream of points
-     *  Note: Not a static class or a function pointer, just to make it 
-     *  sligthly easier to replace it with a heavier implementation
-     *
-     *  @ingroup group_xnlayoutengine
-     */
-    NONSHARABLE_CLASS( TXnGestureRecogniser )
-        {
-    public:
-        
-        /** 
-         * Translates points into a gesture code
-         * @param aPoints Points that form the gestures. Client is not 
-         *        required to pass in repeated points (sequential 
-         *        points that are almost in the same place)
-         * @param aIsHolding ETrue if gesture was ended at pointer being held 
-         *        down at same position
-         *        EFalse if gesture ended at pointer being released 
-         * @return recognised gesture id or EUnknownGesture
-         */
-        TXnGestureCode GestureCode( const TXnPointArray& aPoints ) const;
-        
-        TXnGestureCode LastDirection( const TXnPointArray& aPoints ) const;
-        };
-    } // namespace XnGestureHelper
-
-#endif // _XNGESTURERECOGNISER_H_
--- a/idlehomescreen/xmluirendering/uiengine/inc/xnhittest.h	Wed Mar 31 21:17:19 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,176 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Class to hold hit region information
-*
-*/
-
-
-#ifndef _XNHITTEST_H
-#define _XNHITTEST_H
-
-// System includes
-#include <e32base.h>
-#include <coemain.h>
-
-// Forward declarations
-class CXnControlAdapter;
-
-namespace XnHitTest
-    {
-    const TInt EIgnoreEventsUntilNextPointerUp = 0x01;
-    const TInt EIgnoreStylusUpTriggers = 0x02;
-    }
- 
-// Class declaration
-
-/**
- *  Holds hit region information
- * 
- *  @ingroup group_xnlayoutengine
- *  @lib xn3layoutengine.lib
- *  @since S60 5.0
- */    
-NONSHARABLE_CLASS( CXnHitTest ) : public CBase,
-    public MCoeMessageMonitorObserver
-    {
-public:
-    // Constructors and destructor
-
-    /**
-     * Two-phased constructor.
-     */
-    static CXnHitTest* NewL();
-    
-    /**
-     * Two-phased constructor. Leaving on stack
-     */    
-    static CXnHitTest* NewLC();
-
-    ~CXnHitTest();
-
-private:
-    CXnHitTest();
-
-private: 
-    // from MCoeMessageMonitorObserver
-    
-    /**
-    * @see MCoeMessageMonitorObserver documentation
-    */
-    void MonitorWsMessage( const TWsEvent& aEvent );
-    
-public:
-    // New functions
-
-    /**
-     * Adds a control to hit region.
-     * 
-     * @since S60 5.0
-     * @param aControl The control to be added.
-     */
-    void AddControl( CXnControlAdapter* aControl );
-
-    /**
-     * Removes a control from hit region.
-     * 
-     * @since S60 5.0
-     * @param aControl The control to be removed.
-     */
-    void RemoveControl( CXnControlAdapter* aControl );
-
-    /**
-     * Set flags
-     * 
-     * @since S60 5.0
-     * @param aFlags flags to be added
-     */
-    void SetFlags( const TInt aFlags );
-
-    /**
-     * Clear flags
-     * 
-     * @since S60 5.0
-     * @param aFlags flags to be cleared, 0x0F default 
-     */
-    void ClearFlags( const TInt aFlags = 0x0F );
-
-    /**
-     * Get flags
-     * 
-     * @since S60 5.0
-     * @return Flags
-     */
-    TInt Flags() const;
-
-    /**
-     * Flushes hit test state
-     * 
-     * @since S60 5.0	
-     */
-    void Flush();
-
-    /**
-     * Gets hit region count
-     * 
-     * @since S60 5.0	
-     * @return Count
-     */
-    TInt HitRegionCount() const;
-
-    /**
-     * Gets hit region
-     * 
-     * @since S60 5.0    
-     * @return Region
-     */
-    CXnControlAdapter* HitRegion() const;
-
-    /**
-     * Tests whether a pointer event occurred inside the control's hit region.    
-     * 
-     * @since S60 5.0
-     * @param aPointEvent The pointer event.
-     * @param aControl
-     * @return ETrue if the specified point lies inside the hit region, 
-     *         EFalse if not.
-     */
-    TBool HitRegionContainsL( const TPointerEvent& aPointerEvent,
-        const CXnControlAdapter& aControl );
-
-    /**
-     * Gets the last pointer event
-     * 
-     * @since S60 5.0		
-     * @return Last pointer event 
-     */
-    const TPointerEvent& PointerEvent() const;
-    
-protected:
-    /**
-     * Two-phased constructor.
-     */
-    void ConstructL();
-
-private:
-    // data
-
-    /** Hit region */
-    RPointerArray< CXnControlAdapter > iHitRegion;
-    /** Pointer event */
-    TPointerEvent iPointerEvent;
-    /** Flags */
-    TInt iFlags;
-    };
-
-#endif // _XNHITTEST_H
--- a/idlehomescreen/xmluirendering/uiengine/inc/xnkeyeventdispatcher.h	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/inc/xnkeyeventdispatcher.h	Wed Apr 14 15:47:59 2010 +0300
@@ -160,15 +160,28 @@
      */
     void ClearPassiveFocusedNodesL();
 
+    /**
+     * Clears dispatcher's internal state.
+     * 
+     * @since S60 5.2
+     */
+    void ClearStateL();
+    
+    /** 
+     * Returns the last pointer event
+     * 
+     * @since S60 5.2
+     * @return Last pointer event
+     */
+    const TPointerEvent& PointerEvent() const;
+            
 private:
     // new functions
     
     void SetNodeL( CXnNode* aToLose, CXnNode* aToGain, TBool aNotify,
         TInt aSource = 0 );
     
-    void ResolveAndSetFocusL();
-    
-    void ClearStateL();
+    void ResolveAndSetFocusL();       
     
 protected:
     // New functions
@@ -223,6 +236,8 @@
     CEikButtonGroupContainer* iCbaContainer;
     /** For storing the nodes that have passive focus. */
     RPointerArray< CXnNode > iPassiveFocusedNodes;
+    /** Last pointer event */
+    TPointerEvent iPointerEvent;
     };
 
 #endif //__XNKEYEVENTDISPATCHER_H__
--- a/idlehomescreen/xmluirendering/uiengine/inc/xnpointarray.h	Wed Mar 31 21:17:19 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Array of points
-*
-*/
-
-
-#ifndef _XNPOINTARRAY_H_
-#define _XNPOINTARRAY_H_
-
-// System includes
-#include <e32std.h>
-
-/**
- * XnGestureHelper namespace
- * Used for the whole gesture family - Gesture recognizer, gesture helper, 
- * Point array
- */
-namespace XnGestureHelper
-    {
-    
-    /** 
-     * Represents a single point given at certain time
-     */
-    struct TXnPointEntry
-        {
-        
-        /** constructor */
-        inline TXnPointEntry( const TPoint& aPos, const TTime& aTime );
-        
-        TPoint iPos;
-        TTime iTime;
-        };
-    
-    /**
-     *  Array of points that wraps another point array
-     *  The purpose of this class is to allow deriving classes to override []
-     *  and in that member function adjust the point, e.g., by setting one
-     *  axis to always a constant value. This allows providing a sequence of
-     *  points to the recogniser in which the other axis is ignored.
-     *
-     *  @ingroup group_xnlayoutengine
-     */
-    NONSHARABLE_CLASS( TXnPointArray )
-        {
-    public:
-        
-        /** 
-         * Constructor
-         * 
-         * @param aPoints points array to wrap (and filter)
-         */
-        TXnPointArray( const RArray< TXnPointEntry >& aPoints );
-        
-        /**
-         * Length of the array
-         * 
-         * @return Length of the array 
-         */
-        TInt Count() const;
-        
-        /** 
-         * Returns point at position, may be filtered
-         * virtual so deriving classes can modify the point 
-         * (e.g., filter one axis)
-         *
-         * @return A filtered point at aIndex. Default implementation same
-         *          as Raw(...)
-         */
-        virtual TPoint operator[]( TInt aIndex ) const;
-        
-        /** 
-         * Nonfiltered index
-         * 
-         * @return An raw, non-filtered point at aIndex 
-         */
-        const TPoint& Raw( TInt aIndex ) const;
-
-    private:
-        
-        /** Array of points, Not owned */
-        const RArray< TXnPointEntry >& iPoints;
-        };
-    } // namespace XnGestureHelper
-
-
-// Inline functions
-#include "xnpointarray.inl"
-
-#endif // _XNPOINTARRAY_H_
--- a/idlehomescreen/xmluirendering/uiengine/inc/xnpointarray.inl	Wed Mar 31 21:17:19 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Array of points - inline functions
-*
-*/
-
-
-#ifndef _XNPOINTARRAY_INL_
-#define _XNPOINTARRAY_INL_
-
-namespace XnGestureHelper
-    {
-
-    // -----------------------------------------------------------------------
-    // TXnPointEntry's Constructor
-    // -----------------------------------------------------------------------
-    //    
-    inline TXnPointEntry::TXnPointEntry( const TPoint& aPos, 
-        const TTime& aTime ) : iPos( aPos ), iTime( aTime )
-        {
-        };  
-    }
-
-#endif // _XNPOINTARRAY_INL_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/xmluirendering/uiengine/inc/xnspbgcleaner.h	Wed Apr 14 15:47:59 2010 +0300
@@ -0,0 +1,73 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Declares statuspane's background cleaner.
+*
+*/
+
+#ifndef __XNSPBGCLEANER_
+#define __XNSPBGCLEANER_
+
+// Forward declarations
+
+/**
+ * Statuspane background cleaner.
+ * 
+ * @class   CXnSpBgCleaner xnspbgcleaner.h
+ */
+NONSHARABLE_CLASS( CXnSpBgCleaner ) : public CCoeControl
+    {
+public:
+    /**
+     * Two-phased constructors.
+     */
+    static CXnSpBgCleaner* NewL();
+    static CXnSpBgCleaner* NewLC();
+    
+    /** Destructor */
+    ~CXnSpBgCleaner();
+    
+private:    
+    /** constructor */
+    CXnSpBgCleaner();
+    
+    /** 2nd phase constructor */
+    void ConstructL();
+
+protected: // from base class CCoeControl
+    
+    /**
+     * Handles a change to the control's resources
+     * 
+     * @see CCoeControl::HandleResourceChange
+     */
+    void HandleResourceChange( TInt aType );
+
+    /**
+     * Sets the control's extent, specifying a rectangle.
+     * 
+     * @see CCoeControl::SizeChanged
+     */
+    void SizeChanged();
+
+    /*
+     * Draws the control.
+     * 
+     * @see CCoeControl::Draw
+     */
+    void Draw( const TRect& aRect ) const;
+
+    };
+
+#endif // __XNSPBGCLEANER_
--- a/idlehomescreen/xmluirendering/uiengine/inc/xnuiengineimpl.h	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/inc/xnuiengineimpl.h	Wed Apr 14 15:47:59 2010 +0300
@@ -38,7 +38,6 @@
 class CXnEditor;
 class CXnResource;
 class CXnEditMode;
-class CXnHitTest;
 class CXnViewManager;
 class CXnViewData;
 class CXnPluginData;
@@ -80,14 +79,13 @@
     /** Is partial screen input open */
     TBool iPartialScreenOpen;
     /** Partial screen block progression. Own. */
-    HBufC8* iPartialScreenBlock;
-
-    TXnSplitScreenState(): iPartialScreenBlock( NULL ){}
-
-    ~TXnSplitScreenState()
-        {
-        delete iPartialScreenBlock;
-        }
+    const TDesC8* iPartialScreenBlock;
+    
+    // ctor
+    TXnSplitScreenState() : 
+        iPartialScreenEditorNode( NULL ),
+        iPartialScreenOpen( EFalse ),
+        iPartialScreenBlock( NULL ) {}
     };
 
 
@@ -470,14 +468,6 @@
     RPointerArray< CXnNode >* Plugins();
 
     /**
-     * Gets hit test
-     * 
-     * @since S60 5.1         
-     * @return the hittest
-     */
-    CXnHitTest& HitTest() const;
-
-    /**
      * Gets theme resource file
      * 
      * @since S60 5.1         
@@ -615,19 +605,13 @@
     /**
       * Set partial screen block
       * 
-      * @since Series 60 5.2 
+      * @since Series 60 5.2
+      * @param CXnNode aParent parent node 
       * @param TDesC8 aBlockProgression set layout direction
       */     
-    void SetPartialScreenBlockProgressionL( const TDesC8& aBlockProgression );
-    
-    /**
-      * Store partial screen block
-      * 
-      * @since Series 60 5.2 
-      * @param TDesC8 aBlockProgression set layout direction
-      */     
-    void StorePartialScreenBlockProgressionL();
-    
+    void SetPartialScreenBlockProgressionL( 
+            CXnNode* aParent, const TDesC8& aBlockProgression );
+   
     /**
       * Handles skin change resource change
       * 
@@ -752,8 +736,6 @@
     TRect iClientRect;
     /** Owned. Edit mode storage; */
     CXnEditMode* iEditMode;
-    /** Owned. hittest */
-    CXnHitTest* iHitTest;
     /** Disable count */
     TInt iDisableCount;   
 	/**Split screen states*/
--- a/idlehomescreen/xmluirendering/uiengine/inc/xnviewadapter.h	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/inc/xnviewadapter.h	Wed Apr 14 15:47:59 2010 +0300
@@ -182,9 +182,11 @@
      * @since S60 5.0
      * @param aContainer Container to activate
      * @param aEnterEditState ETrue if activated container should be set to edit state.
+     * @param aForceActivation if ETrue forces deactivation and then activation even if
+     *        the conntainer remains the same 
      */
     void ActivateContainerL( CXnViewData& aContainer, 
-        TBool aEnterEditState = EFalse );
+        TBool aEnterEditState = EFalse, TBool aForceActivation = EFalse );
 
     /**
      * Deactivates the current container from view.      
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/xmluirendering/uiengine/inc/xnwaitdialog.h	Wed Apr 14 15:47:59 2010 +0300
@@ -0,0 +1,82 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Declares wait dialog that doesn't consume key events.
+*
+*/
+
+
+#ifndef _XNWAITDIALOG_H
+#define _XNWAITDIALOG_H
+
+//  INCLUDES
+#include <AknWaitDialog.h>
+
+// CONSTANTS
+
+// MACROS
+
+// DATA TYPES
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS   
+
+// CLASS DECLARATION
+
+
+/**  
+ * Wait Dialog without key event handling
+ * 
+ * @ingroup group_xnlayoutengine
+ * @lib xn3layoutengine.lib
+ * @since S60 5.0
+ */
+NONSHARABLE_CLASS( CXnWaitDialog ) : public CAknWaitDialog
+  {
+
+public: 		
+    // Constructors and destructor
+
+    /**
+     * Class constructor
+     *
+     * @param    aSelfPtr            Pointer to itself. The pointer needs to be
+     *                               valid when the dialog is dismissed and must not
+     *                               be on the stack.
+     * @param    aVisibilityDelayOff If set ETrue the dialog will be visible
+     *                               immediality. Use only when the length of
+     *                               the process is ALWAYS over 1.5 seconds.
+     */
+    CXnWaitDialog( CEikDialog** aSelfPtr, TBool aVisibilityDelayOff );
+    
+    /**
+     * Destructor
+     */
+    ~CXnWaitDialog();
+
+public: // From CAknWaitDialog
+ 
+    /**
+     * From CAknWaitDialog
+     * @since S60 5.2
+     * @param aKeyEvent the key event
+     * @param aType the type of the event
+     * @return TKeyResponse key event was used by this control or not
+     */
+    TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent,
+                                       TEventCode aType );
+  };
+#endif // _XNWAITDIALOG_H
+
--- a/idlehomescreen/xmluirendering/uiengine/inc/xnwallpaperview.h	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/inc/xnwallpaperview.h	Wed Apr 14 15:47:59 2010 +0300
@@ -32,6 +32,7 @@
 class CXnUiEngine;
 class TVwsViewId;
 class CPeriodic;
+class CXnSpBgCleaner;
 
 // Constants
 const TUid KWallpaperViewUid = { 0x200286DB };
@@ -139,6 +140,13 @@
      * Resource file offset
      */
     TInt iResourceOffset;    
+    
+    /** 
+     * Statuspane background cleaner. 
+     * Own.
+     */
+	CXnSpBgCleaner* iXnSpBgCleaner;
+
     };
 
 #endif      // CXNWALLPAPERVIEW_H
--- a/idlehomescreen/xmluirendering/uiengine/inc/xnwidgetextensionadapter.h	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/inc/xnwidgetextensionadapter.h	Wed Apr 14 15:47:59 2010 +0300
@@ -81,12 +81,17 @@
     /**
     * see CCoeControl 
     */
-    void HandlePointerEventL(const TPointerEvent& aPointerEvent);
+    void HandlePointerEventL( const TPointerEvent& aPointerEvent );
 
     /**
     * see CCoeControl 
     */
-    void Draw(const TRect& aRect) const;        
+    void Draw( const TRect& aRect ) const;        
+
+    /**
+    * @see CXnControlAdapter
+    */
+    void DoHandlePropertyChangeL( CXnProperty* aProperty = NULL );
 
 private:
     // from MXnUiStateObserver
@@ -135,7 +140,9 @@
     // New functions
     
     void HidePopupL();
-        
+
+    void ChangePopupPosition();
+
     void CalculatePosition();
     
 private:    
--- a/idlehomescreen/xmluirendering/uiengine/src/xnappuiadapterimpl.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnappuiadapterimpl.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -22,6 +22,9 @@
 #include <hspluginsettings.h>
 #include <bautils.h>
 #include <data_caging_path_literals.hrh>
+#include <connect/sbdefs.h>
+#include <e32property.h>
+#include <xnuiengine.rsg>
 
 // User includes
 #include "xnappuiadapter.h"
@@ -34,6 +37,7 @@
 #include "xneditor.h"
 #include "xnwallpaperview.h"
 #include "xneffectmanager.h"
+#include "xnwaitdialog.h"
 
 #include "xnappuiadapterimpl.h"
 
@@ -121,6 +125,9 @@
     
     iEffectManager = CXnEffectManager::NewL();   
     
+    iBackupRestoreObserver = CXnPropertySubscriber::NewL( 
+            KUidSystemCategory, conn::KUidBackupRestoreKey, *this );
+
     __TIME_ENDMARK( "CXnAppUiAdapterImpl::ConstructL, done", time );    
     }
 
@@ -147,7 +154,14 @@
 // -----------------------------------------------------------------------------
 //
 CXnAppUiAdapterImpl::~CXnAppUiAdapterImpl()
-    {  
+    {
+    if ( iXnWaitDialog )
+        {
+        TRAP_IGNORE( iXnWaitDialog->ProcessFinishedL(); );
+        }
+    
+    delete iBackupRestoreObserver;
+    
     delete iUiEngine;
     
     delete iUiStateListener;
@@ -256,4 +270,54 @@
     iUiStateListener->HandleResourceChangeL( aType );    
     }
 
+// -----------------------------------------------------------------------------
+// CXnAppUiAdapterImpl::DisplayWaitDialogL
+// Displays wait dialog during backup/restore. 
+// -----------------------------------------------------------------------------
+//
+void CXnAppUiAdapterImpl::DisplayWaitDialogL()
+    {
+    if ( !iXnWaitDialog )
+       {
+       iXnWaitDialog = new( ELeave ) CXnWaitDialog(
+               reinterpret_cast<CEikDialog**>( &iXnWaitDialog ), ETrue );       
+       iXnWaitDialog->SetCallback( this );
+       iXnWaitDialog->ExecuteLD( R_BACKUP_RESTORE_WAIT_DIALOG );
+       }
+    }
+
+// -----------------------------------------------------------------------------
+// CXnAppUiAdapterImpl::BackupRestoreEvent
+// Property changed notification callback
+// -----------------------------------------------------------------------------
+//
+void CXnAppUiAdapterImpl::PropertyChangedL( const TUint32 aKey, const TInt aValue )
+    {
+    const TUint mask( conn::KBURPartTypeMask ^ conn::EBURNormal );
+    if ( aKey == conn::KUidBackupRestoreKey )
+        {
+        if ( aValue & mask )
+            {
+            // Any type of backup or restore operation started
+            DisplayWaitDialogL();
+            }
+        else if ( iXnWaitDialog )
+            {
+            // Any type of backup or restore operation ended
+            iXnWaitDialog->ProcessFinishedL();
+            // ProcessFinishedL() will NULL iXnWaitDialog
+            }
+        }
+    }
+
+// ----------------------------------------------------------------------------
+// CXnAppUiAdapterImpl::DialogDismissedL()
+// Callback method from MProgressDialogCallback interface.
+// ----------------------------------------------------------------------------
+//
+void CXnAppUiAdapterImpl::DialogDismissedL(TInt /*aButtonId*/)
+    {
+    // No implementation required.
+    }
+
 // End of file
--- a/idlehomescreen/xmluirendering/uiengine/src/xnbackgroundmanager.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnbackgroundmanager.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -141,6 +141,7 @@
     delete iBgImage;
     delete iBgImagePath;
     delete iOomSysHandler;
+    delete iSpMask;   
     }
 
 // -----------------------------------------------------------------------------
@@ -182,7 +183,7 @@
             {
             SystemGc().DrawBitmap( iRect, wallpaper );
             }
-	        DrawStatusPaneMask();		
+        DrawStatusPaneMask();
         }
     
     // Skin bg is used by default
@@ -220,6 +221,34 @@
             }
         }
     iBgContext->SetRect( iRect );
+    
+    // create status pane mask image and set size
+    if( iSpMask )
+        {
+        delete iSpMask;
+        iSpMask = NULL;
+        }
+    
+    TRect spRect;
+    AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EStatusPane, spRect );
+    
+    TInt err( KErrNone );    
+    
+    if( Layout_Meta_Data::IsLandscapeOrientation() )
+        {
+        TRAP( err, iSpMask = AknsUtils::CreateBitmapL( AknsUtils::SkinInstance(),
+                KAknsIIDQgnGrafBgLscTopMaskIcon ) );
+        }
+    else
+        {
+        TRAP( err, iSpMask = AknsUtils::CreateBitmapL( AknsUtils::SkinInstance(),
+                KAknsIIDQgnGrafBgPrtTopMaskIcon ) );        
+        }
+    
+    if( iSpMask )
+        {
+        AknIconUtils::SetSize( iSpMask, spRect.Size(), EAspectRatioNotPreserved );
+        }
     }
 
 // -----------------------------------------------------------------------------
@@ -511,7 +540,7 @@
             }
         else if ( selectedIndex == 1 )
             {
-            if ( CXnOomSysHandler::HeapAvailable( CXnOomSysHandler::EMem2MB ) )
+            if ( CXnOomSysHandler::HeapAvailable( CXnOomSysHandler::EMem6MB ) )
                 {
             CXnAppUiAdapter& appui( iViewManager.AppUiAdapter() );
             
@@ -674,7 +703,7 @@
             if( path != KNullDesC && !bitmap )
                 {
                 TInt err = CacheWallpaperL( path, *viewData );
-                if( err == KErrNone )
+                if( err == KErrNone && viewData == &iViewManager.ActiveViewData() )
                     {
                     drawingNeeded = ETrue;
                     }
@@ -683,6 +712,13 @@
         if( drawingNeeded )
             {
             UpdateScreen();
+            
+            TInt err = AknsWallpaperUtils::SetIdleWallpaper( 
+                iViewManager.ActiveViewData().WallpaperImagePath(), NULL );
+            if( err == KErrNone )
+                {
+                iIntUpdate++;
+                }   
             }    
         }
     else
@@ -948,34 +984,11 @@
 //
 void CXnBackgroundManager::DrawStatusPaneMask() const
     {
-    TRect spRect;
-    AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EStatusPane, spRect );
-    
-    CFbsBitmap* maskBmp( NULL );
-    TInt err( KErrNone );
-    
-    if( Layout_Meta_Data::IsLandscapeOrientation() )
-        {
-        TRAP( err, maskBmp = AknsUtils::CreateBitmapL( AknsUtils::SkinInstance(),
-                KAknsIIDQgnGrafBgLscTopMaskIcon ) );
-        }
-    else
+    if( iSpMask )
         {
-        TRAP( err, maskBmp = AknsUtils::CreateBitmapL( AknsUtils::SkinInstance(),
-                KAknsIIDQgnGrafBgPrtTopMaskIcon ) );        
-        }
-    
-    if( err )
-        {
-        return;
-        }
-    
-    // draw mask
-    if( maskBmp )
-        {
-        AknIconUtils::SetSize( maskBmp, spRect.Size(), EAspectRatioNotPreserved );
-        SystemGc().DrawBitmap( spRect, maskBmp );
-        delete maskBmp;        
+        TSize bmpSize = iSpMask->SizeInPixels();
+        TRect spRect( 0, 0, bmpSize.iWidth, bmpSize.iHeight );
+        SystemGc().DrawBitmap( spRect, iSpMask );
         }
     }
 
--- a/idlehomescreen/xmluirendering/uiengine/src/xncomposer.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xncomposer.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -102,7 +102,7 @@
 // @return    returns pointer to desired node, NULL if nothing found 
 // ---------------------------------------------------------------------------
 //
-CXnDomNode* FindNodeByName( CXnDomNode* aNode, const TDesC8& aName )
+static CXnDomNode* FindNodeByName( CXnDomNode* aNode, const TDesC8& aName )
     {
     if ( !aNode )
         {        
@@ -131,12 +131,57 @@
     }
 
 // ---------------------------------------------------------------------------
+// Finds template publisher name
+//  
+// ---------------------------------------------------------------------------
+//
+static const TDesC8& FindTemplatePublisherName( CXnDomNode* aNode )
+    {
+    if ( !aNode )
+        {        
+        return KNullDesC8();
+        }
+
+    CXnDomList& list( aNode->ChildNodes() );
+    
+    for ( TInt i = 0; i < list.Length(); i++ )
+        {
+        CXnDomNode* node = static_cast< CXnDomNode* >( list.Item( i ) );
+
+        // Find <configuration> element
+        if ( node->Name() == KConfigurationModel )
+            {
+            CXnDomList& attributes( node->AttributeList() );
+    
+            CXnDomAttribute* name(
+                static_cast< CXnDomAttribute* >(
+                    attributes.FindByName( XnPropertyNames::action::KName ) ) );
+        
+            // Find attribute name="publisher" 
+            if ( name && name->Value() == KPublisher )
+                {
+                CXnDomAttribute* value(
+                    static_cast< CXnDomAttribute* >(
+                        attributes.FindByName( XnPropertyNames::action::KValue ) ) );
+                
+                if ( value )
+                    {                    
+                    return value->Value();
+                    }
+                }            
+            }
+        }
+    
+    return KNullDesC8();
+    }
+
+// ---------------------------------------------------------------------------
 // FindNodeById
 // Finds recursively node by id
 // @return    returns pointer to desired node, NULL if nothing found 
 // ---------------------------------------------------------------------------
 //
-CXnDomNode* FindNodeById( CXnDomNode* aNode, const TDesC8& aId )
+static CXnDomNode* FindNodeById( CXnDomNode* aNode, const TDesC8& aId )
     {
     if ( !aNode )
         {        
@@ -595,12 +640,16 @@
         if( bgManager.WallpaperType() == CXnBackgroundManager::EPageSpecific )
             {
             HBufC* bgImage = ItemValueL( *configuration, KWallpaper, KPath );
-            CleanupStack::PushL( bgImage );
-            if( bgImage && bgImage->Length() > 0 )
+            if ( bgImage )
                 {
-                bgManager.CacheWallpaperL( bgImage->Des(), aViewData );
+                CleanupStack::PushL( bgImage );
+                bgImage->Des().Trim();
+                if( bgImage && bgImage->Length() > 0 )
+                    {                
+                    bgManager.CacheWallpaperL( bgImage->Des(), aViewData );
+                    }
+                CleanupStack::PopAndDestroy( bgImage );
                 }
-            CleanupStack::PopAndDestroy( bgImage );
             }
         if ( pluginNode )
             {            
@@ -736,20 +785,9 @@
         
         if ( info.Type() == KKeyTemplate )
             {
-            CXnDomNode* node( FindNodeByName( widgetRoot, KContentSourceNode ) );
+            const TDesC8& name( FindTemplatePublisherName( widgetRoot ) );
             
-            if ( node )
-                {
-                CXnDomList& attributes( node->AttributeList() );
-                 
-                CXnDomAttribute* attribute( static_cast< CXnDomAttribute* >(
-                    attributes.FindByName( KName ) ) );
-                
-                if ( attribute )
-                    {
-                    aPluginData.SetPublisherNameL( attribute->Value() );
-                    }
-                }
+            aPluginData.SetPublisherNameL( name );
             }
                 
         retval = KErrNone;                       
--- a/idlehomescreen/xmluirendering/uiengine/src/xncontroladapterimpl.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xncontroladapterimpl.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -53,7 +53,6 @@
 #include "xndomlist.h"
 #include "xnodt.h"
 #include "xnresource.h"
-#include "xnhittest.h"
 #include "xnplugindata.h"
 #include "xnnode.h"
 #include "xnpanic.h"
@@ -63,9 +62,6 @@
 #include "xneditmode.h"
 
 _LIT8(KScrollableBoxNodeName, "scrollablebox");
-        
-using namespace XnGestureHelper;
-#include "xngesture.h"
 
 // Constants
 const TInt KSkinGfxInnerRectShrink = 5;
@@ -74,7 +70,9 @@
 const TInt KLongTapStartShortDelay( 150000 ); // 0.15s for Sk
 const TInt KLongTapStartLongDelay( 500000 ); // 0.5s
 const TInt KLongTapTimeShortDelay( 600000 ); // 0.6s for SK
-const TInt KLongTapTimeLongDelay( 1500000 ); // 1.5s 
+const TInt KLongTapTimeLongDelay( 1500000 ); // 1.5s
+
+const TInt KDragThreshold = 20; // pixels
 
 // LOCAL FUNCTION PROTOTYPES
 static TRgb ConvertHslToRgb( TInt aHue, TInt aSaturation, TInt aLightness );
@@ -3356,44 +3354,6 @@
 
 // -----------------------------------------------------------------------------
 // SoftkeyNode
-// Gets the node of softkey according to index
-// -----------------------------------------------------------------------------
-//
-static CXnNode* SoftkeyNodeL( CXnNode* aMenuBarNode, const TDesC8& aSoftkey )
-    {
-    if ( aMenuBarNode )
-        {
-        XnMenuInterface::MXnMenuInterface* menuIf( NULL );
-        XnComponentInterface::MakeInterfaceL( menuIf, aMenuBarNode->AppIfL() );
-        CXnNodePluginIf* skNode( NULL );
-        if ( menuIf )
-            {
-            if ( aSoftkey == XnPropertyNames::softkey::type::KLeft )
-                {
-                skNode = menuIf->SoftKeyL(
-                    XnMenuInterface::MXnMenuInterface::ELeft );
-                }
-            else if ( aSoftkey == XnPropertyNames::softkey::type::KMiddle )
-                {
-                skNode = menuIf->SoftKeyL(
-                    XnMenuInterface::MXnMenuInterface::ECenter );
-                }
-            else if ( aSoftkey == XnPropertyNames::softkey::type::KRight )
-                {
-                skNode = menuIf->SoftKeyL(
-                    XnMenuInterface::MXnMenuInterface::ERight );
-                }
-            }
-        if ( skNode )
-            {
-            return &skNode->Node();
-            }
-        }
-    return NULL;
-    }
-
-// -----------------------------------------------------------------------------
-// SoftkeyNode
 // Gets the node of softkey according to pointer location
 // -----------------------------------------------------------------------------
 //
@@ -3654,11 +3614,8 @@
         iAnimation->Stop();
         delete iAnimation;
         }
-
-    if ( iGestureHelper )
-        {
-        delete iGestureHelper;
-        }
+    
+    delete iGestureFw;
     }
 
 // -----------------------------------------------------------------------------
@@ -3722,29 +3679,21 @@
     for ( ; temp; temp = temp->Parent() )
         {
         if ( temp == menuBar )
-            {
-            // This is softkey node
-            const TDesC8* pos( NULL );
-            node = NULL;
-
-            if ( aKeyEvent.iScanCode == EStdKeyDevice0 )
-                {
-                pos = &XnPropertyNames::softkey::type::KLeft;
-                }
-            else if ( aKeyEvent.iScanCode == EStdKeyDevice1 )
+            {            
+            // This is softkey node        
+            XnMenuInterface::MXnMenuInterface* menuIf( NULL );
+            XnComponentInterface::MakeInterfaceL( menuIf, menuBar->AppIfL() );
+        
+            if ( menuIf )
                 {
-                pos = &XnPropertyNames::softkey::type::KRight;
-                }
-            else if ( aKeyEvent.iScanCode == EStdKeyDevice3 )
-                {
-                pos = &XnPropertyNames::softkey::type::KMiddle;
+                CXnNodePluginIf* eventNode( menuIf->KeyEventNode() );
+                
+                if ( eventNode )
+                    {
+                    node = &eventNode->Node();
+                    }
                 }
-
-            if ( pos )
-                {
-                node = SoftkeyNodeL( menuBar, *pos );
-                }
-
+            
             break;
             }
         }
@@ -3759,8 +3708,7 @@
          aKeyEvent.iScanCode == EStdKeyDevice3 )  // MSK
         {
         if ( aType == EEventKeyDown )
-            {
-            iKeyDownNode = node;
+            {            
             iLongtap = EFalse;
             
             if ( aKeyEvent.iScanCode == EStdKeyDevice3 ||
@@ -3789,10 +3737,6 @@
             }
         else if( aType == EEventKey )
             {
-            if( iKeyDownNode != node)
-            	{
-                node = iKeyDownNode;
-            	}
             if ( aKeyEvent.iRepeats == 0 )
                 {
                 if ( !HasHoldTrigger( node->DomNode() ) )
@@ -3821,10 +3765,6 @@
             {
             if ( !iLongtap )
                 {
-              if( iKeyDownNode != node)
-                {
-                node = iKeyDownNode;
-                }   
                 if ( HasHoldTrigger( node->DomNode() ) )
                     {
                     // Hold trigger defined, report activate event here                   
@@ -3934,6 +3874,23 @@
     }
 
 // -----------------------------------------------------------------------------
+// CXnControlAdapterImpl::IsDragThresholdExceeded
+// Checks if drag threshold is exceeded
+// -----------------------------------------------------------------------------
+//
+TBool CXnControlAdapterImpl::IsDragThresholdExceeded( const TPoint& aPoint )
+    {
+    TBool ret = EFalse;
+    TPoint distance = aPoint - iButtonDownStartPoint;
+    if ( Abs( distance.iX ) >= KDragThreshold ||
+         Abs( distance.iY ) >= KDragThreshold )
+        {
+        ret = ETrue;
+        }
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
 // CXnControlAdapterImpl::HandlePointerEventL
 // Handle pointer events
 // -----------------------------------------------------------------------------
@@ -3945,24 +3902,15 @@
     
     CXnNode* node( &iNode.Node() );
     CXnUiEngine* engine( node->UiEngine() );
- 
-    if(!engine->IsPartialInputActive())
-        {
-        // Forward event to gesture helper
-        if( PassEventToGestureHelperL( aPointerEvent ) )
-            { 
-            CXnAppUiAdapter& appui( engine->AppUiAdapter() );
-            CXnViewData& data( appui.ViewManager().ActiveViewData() );
-            
-            CXnViewControlAdapter* control = 
-                static_cast< CXnViewControlAdapter* >( data.ViewNode()->Control() );
-            
-            control->ResetGrabbing();
-
-            // Swipe took place, consume this event
-            return ETrue;
-            }
-
+    
+    if ( !engine->IsPartialInputActive() )
+        {
+        InitializeGestureL( aPointerEvent );
+        }
+    else
+        {
+        // reset destination
+        iGestureDestination = NULL;
         }
     
     TBool menuBar( node == engine->MenuBarNode() );
@@ -4031,6 +3979,8 @@
                         
         if ( !menuBar && !engine->FocusedNode() )
             {
+            // save starting point
+            iButtonDownStartPoint = event.iPosition;
             // Require focus to be shown
             engine->AppUiAdapter().ShowFocus();                
             
@@ -4045,25 +3995,18 @@
             node->SetStateL( 
                 XnPropertyNames::style::common::KFocus, 
                 XnEventSource::EStylus );
-            node->SetStateL( 
-                XnPropertyNames::style::common::KPressedDown );
             }        
         }
     else if ( event.iType == TPointerEvent::EDrag )
         {        
         if ( node->IsStateSet( XnPropertyNames::style::common::KFocus ) )
             {
-            if ( !node->MarginRect().Contains( event.iPosition ) )
+            if ( IsDragThresholdExceeded( event.iPosition ) ||
+                 !node->MarginRect().Contains( event.iPosition ) )
                 {
-                // Remove pressed down
+                // Remove focus
                 node->UnsetStateL(
-                    XnPropertyNames::style::common::KPressedDown );
-                }
-            if ( node->MarginRect().Contains( event.iPosition ) )
-                {
-                // Add pressed down
-                node->SetStateL(
-                    XnPropertyNames::style::common::KPressedDown );
+                    XnPropertyNames::style::common::KFocus );
                 }
             }
         }
@@ -4076,8 +4019,7 @@
                 node->SetStateL( XnPropertyNames::style::common::KActive );
                 }          
             else if ( ( node->MarginRect().Contains( event.iPosition ) &&
-               node->IsStateSet( XnPropertyNames::style::common::KFocus ) &&
-               node->IsStateSet( XnPropertyNames::style::common::KPressedDown ) ) )
+               node->IsStateSet( XnPropertyNames::style::common::KFocus ) ) )
                 {
 #ifdef RD_TACTILE_FEEDBACK            
                 MTouchFeedback* feedback( MTouchFeedback::Instance() );
@@ -5525,7 +5467,8 @@
 
     if ( CreateGestureHelperL( aNode.Node() ) )
         {
-        iGestureHelper = CXnGestureHelper::NewL( aNode.Node() );
+        iGestureFw = CAknTouchGestureFw::NewL( *this, aAdapter );
+        iGestureFw->SetGestureInterestL( EAknTouchGestureFwGroupFlick );
         }
     }
 
@@ -5865,104 +5808,58 @@
     }
 
 // -----------------------------------------------------------------------------
-// PassEventToGestureHelperL
-// Forwards event to gesturehelper
+// InitializeGestureL
+// Sets up gesture
 // -----------------------------------------------------------------------------
 //
-TBool CXnControlAdapterImpl::PassEventToGestureHelperL(
+void CXnControlAdapterImpl::InitializeGestureL(
     const TPointerEvent& aPointerEvent )
     {
-    TBool ret( EFalse );
+    if ( !iGestureFw || aPointerEvent.iType != TPointerEvent::EButton1Down )
+        {
+        return;
+        }
+    
+    CXnUiEngine* engine( iNode.Node().UiEngine() );                               
+    // Set default destination                     
+    iGestureDestination = &iNode.Node();
+    
+    RPointerArray< CXnPluginData >& plugins( 
+        engine->ViewManager()->ActiveViewData().PluginData() );
     
-    CXnNode* node( &iNode.Node() );
-    CXnUiEngine* engine( node->UiEngine() );
-
-    if ( iGestureHelper && iGestureHelper->Owner() == node )
-        {
-        if ( aPointerEvent.iType == TPointerEvent::EButton1Down )
-            {                               
-            // Set default destination                     
-            iGestureHelper->SetDestination( iGestureHelper->Owner() );
+    for ( TInt i = 0; i < plugins.Count(); i++ )
+        {
+        CXnPluginData* plugin( plugins[i] );
+                                   
+        if ( plugin->Occupied() )
+            {
+            CXnNode* widget( plugin->Node()->LayoutNode() );
             
-            RPointerArray< CXnPluginData >& plugins( 
-                engine->ViewManager()->ActiveViewData().PluginData() );
-            
-            for ( TInt i = 0; i < plugins.Count(); i++ )
+            if ( widget->MarginRect().Contains( aPointerEvent.iPosition ) )
                 {
-                CXnPluginData* plugin( plugins[i] );
-                                           
-                if ( plugin->Occupied() )
+                // Resolve swipe destination
+                CXnProperty* prop( widget->GetPropertyL( 
+                    XnPropertyNames::common::KSwipeDestination ) );
+                
+                if ( prop )
                     {
-                    CXnNode* widget( plugin->Node()->LayoutNode() );
-                    
-                    if ( widget->MarginRect().Contains( aPointerEvent.iPosition ) )
-                        {
-                        // Resolve swipe destination
-                        CXnProperty* prop( widget->GetPropertyL( 
-                            XnPropertyNames::common::KSwipeDestination ) );
+                    const TDesC8& value( prop->StringValue() );
                         
-                        if ( prop )
-                            {
-                            const TDesC8& value( prop->StringValue() );
-                                
-                            if( value == XnPropertyNames::KWidget )
-                                {
-                                // Set widget as destination    
-                                iGestureHelper->SetDestination( widget );
-                                }
-                            else if( value == XnPropertyNames::KNone )
-                                {
-                                // Set no destination    
-                                iGestureHelper->SetDestination( NULL );
-                                }
-                            }
-                        
-                        break;
+                    if( value == XnPropertyNames::KWidget )
+                        {
+                        // Set widget as destination    
+                        iGestureDestination = widget;
+                        }
+                    else if( value == XnPropertyNames::KNone )
+                        {
+                        // Set no destination    
+                        iGestureDestination = NULL;
                         }
                     }
+                break;
                 }
             }
-
-        TXnGestureCode result( iGestureHelper->HandlePointerEventL( aPointerEvent ) );
-        
-        const TDesC8* swipe( NULL );
-    
-        if ( result == EGestureSwipeLeft )
-            {
-            swipe = &XnPropertyNames::action::trigger::name::swipe::direction::KLeft;
-            }
-        else if ( result == EGestureSwipeRight )
-            {
-            swipe = &XnPropertyNames::action::trigger::name::swipe::direction::KRight;
-            }
-
-        if ( swipe )
-            {
-            CXnNode* destination( iGestureHelper->Destination() );
-            
-            if ( destination )
-                {
-                if ( destination == iGestureHelper->Owner() )
-                    {
-                    CancelFocusRefusalL( *engine );
-                    }
-                
-                // Remove focus
-                engine->AppUiAdapter().HideFocus();
-
-                CXnNode* trigger( BuildSwipeTriggerNodeLC( *engine, *swipe ) );
-                destination->ReportXuikonEventL( *trigger );
-                CleanupStack::PopAndDestroy( trigger );
-                       
-                // If needed we can call here for example HandleSwipeL()
-                
-                // Consume this event
-                ret = ETrue;
-                }
-            }
-        }
-
-    return ret;
+        }
     }
 
 // -----------------------------------------------------------------------------
@@ -5989,6 +5886,52 @@
     return iAdapter->ControlEnv()->FsSession();
     }
 
+// -----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
+//
+void CXnControlAdapterImpl::HandleTouchGestureL( MAknTouchGestureFwEvent& aEvent )
+    {
+    if ( aEvent.Group() == EAknTouchGestureFwGroupFlick )
+        {
+        TAknTouchGestureFwType type = aEvent.Type();
+        
+        const TDesC8* swipe( NULL );
+    
+        if ( type == EAknTouchGestureFwFlickLeft )
+            {
+            swipe = &XnPropertyNames::action::trigger::name::swipe::direction::KLeft;
+            }
+        else if ( type == EAknTouchGestureFwFlickRight )
+            {
+            swipe = &XnPropertyNames::action::trigger::name::swipe::direction::KRight;
+            }
+
+        if ( swipe && iGestureDestination )
+            {
+            CXnUiEngine* engine = iNode.Node().UiEngine();
+            if ( iGestureDestination == &iNode.Node() )
+                {
+                CancelFocusRefusalL( *engine );
+                }
+            
+            // Remove focus
+            engine->AppUiAdapter().HideFocus();
+
+            CXnNode* trigger( BuildSwipeTriggerNodeLC( *engine, *swipe ) );
+            iGestureDestination->ReportXuikonEventL( *trigger );
+            CleanupStack::PopAndDestroy( trigger );
+            
+            CXnAppUiAdapter& appui( engine->AppUiAdapter() );
+            CXnViewData& data( appui.ViewManager().ActiveViewData() );
+            
+            CXnViewControlAdapter* control = 
+                static_cast< CXnViewControlAdapter* >( data.ViewNode()->Control() );
+            
+            control->ResetGrabbing();
+            }
+        }
+    }
+
 
 // ============================= TIconProvider ===============================
 
--- a/idlehomescreen/xmluirendering/uiengine/src/xneditmode.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xneditmode.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -335,41 +335,51 @@
 // -----------------------------------------------------------------------------
 //
 void CXnEditMode::MakeVisible( TBool aVisible )
-    {        
+    {                
+    CXnAppUiAdapter& appui( iUiEngine.AppUiAdapter() );
+    CXnViewControlAdapter* control = 
+        static_cast< CXnViewControlAdapter* >(
+            appui.ViewManager().ActiveViewData().ViewNode()->Control() );
+    RWindow& window( Window() );
+    
     TBool visible( IsVisible() ? ETrue : EFalse );
-    
     if ( aVisible == visible )
         {
-        return;
+        if( aVisible )
+            {
+            // If a new Homescreen page has been added in Edit mode, bring the control back to the front       
+            control->DrawableWindow()->SetPointerGrab( EFalse );
+        
+        	window.SetOrdinalPosition( 0 );
+    	    window.SetPointerGrab( ETrue );
+	        window.ClaimPointerGrab();   
+            }
+    
+        return;    
         }
         
     CCoeControl::MakeVisible( aVisible );
-
-    CXnAppUiAdapter& appui( iUiEngine.AppUiAdapter() );
     
     // Remove focus
     appui.HideFocus();
-    
-    CXnViewControlAdapter* control = static_cast< CXnViewControlAdapter* >(
-        appui.ViewManager().ActiveViewData().ViewNode()->Control() );
-            
+                    
     if ( aVisible )
         {
         control->DrawableWindow()->SetPointerGrab( EFalse );
         
-        Window().SetOrdinalPosition( 0 );
-        Window().SetPointerGrab( ETrue );
-        Window().ClaimPointerGrab();      
+        window.SetOrdinalPosition( 0 );
+        window.SetPointerGrab( ETrue );
+        window.ClaimPointerGrab();      
         
         TRAP_IGNORE( appui.HandleEnterEditModeL( ETrue ) );                                
         }
     else
         {
-        Window().SetPointerGrab( EFalse );
+        window.SetPointerGrab( EFalse );
         
         control->DrawableWindow()->SetPointerGrab( ETrue );               
         
-        TRAP_IGNORE( appui.HandleEnterEditModeL( EFalse ) );                                                
+        TRAP_IGNORE( appui.HandleEnterEditModeL( EFalse ) );               
         }
     
     // Update background
@@ -646,7 +656,7 @@
         CXnNode* focused( iUiEngine.FocusedNode() );
         
         if ( focused && ( aKeyEvent.iScanCode == EStdKeyDevice3 ||
-            aKeyEvent.iScanCode == EStdKeyEnter ) )
+            aKeyEvent.iCode == EKeyEnter ) )
             {
             CXnPluginData* plugin( iUiEngine.ViewManager()->
                     ActiveViewData().Plugin( focused ) );
@@ -670,7 +680,7 @@
                         
                         if ( menuIf )
                             {
-                            menuIf->TryDisplayingMenuBarL( *id );
+                            menuIf->TryDisplayingMenuBarL( *id, ETrue );
                             iUiEngine.Editor()->SetTargetPlugin( focused );
                             }                        
                         }
@@ -831,6 +841,8 @@
         {                
         iDraggingNode = NULL;
         iTargetNode = NULL;
+                
+        iUiEngine.Editor()->SetTargetPlugin( NULL );
         
         iState = aState;
                 
--- a/idlehomescreen/xmluirendering/uiengine/src/xneditor.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xneditor.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -95,7 +95,6 @@
 // ====================== LOCAL FUNTION PROTOTYPES ============================
 static void DeletePluginInfos( TAny* aObject );
 static void DeleteItemMaps( TAny* aObject );
-static void DeleteWidgetInfo( TAny* aObject );
 
 static TPtrC ParseWidgetName( const CHsContentInfo& aContentInfo );
 static void SetPropertyL( CXnNode& aNode, const TDesC8& aAttribute, 
@@ -132,16 +131,6 @@
     }
 
 // ---------------------------------------------------------------------------
-// DeleteWidgetInfo
-// ---------------------------------------------------------------------------
-// 
-static void DeleteWidgetInfo( TAny* aObject )    
-    {
-    reinterpret_cast<
-        RPointerArray< CHsContentInfo >* >( aObject )->ResetAndDestroy();
-    }
-
-// ---------------------------------------------------------------------------
 // ParseWidgetName
 // ---------------------------------------------------------------------------
 // 
@@ -641,6 +630,7 @@
     return iRepository->Get( KAICCPluginUIDKey, aUid );
     }
 
+// ---------------------------------------------------------------------------
 // CXnEditor::AddWidgetL
 // ---------------------------------------------------------------------------
 //
@@ -1050,10 +1040,14 @@
 //
 void CXnEditor::SetTargetPlugin( CXnNode* aNode )
     {
-    iTargetPlugin = aNode;
+    TBool editState( iViewManager.UiEngine().EditMode()->EditState() );
+    
+    if ( editState )
+        {
+        iTargetPlugin = aNode;
+        }    
     }
 
-// ---------------------------------------------------------------------------
 // -----------------------------------------------------------------------------
 // CXnEditor::NotifyViewActivatedL
 // -----------------------------------------------------------------------------
@@ -1138,9 +1132,7 @@
     HBufC8* publisherId = CnvUtfConverter::ConvertFromUnicodeToUtf8L(
         info->PublisherId() );
     CleanupStack::PushL( publisherId );
-
-    aPluginData.SetPublisherNameL( info->PublisherId() );
-
+    
     CItemMap* itemMap( 0 );
     CPropertyMap* property( 0 );
     CPropertyMap* propertyIn( 0 );
@@ -1945,44 +1937,44 @@
     {
 
     TInt err( KErrNone );
+        
+    CXnViewData& viewData( iViewManager.ActiveViewData() );
     
-    // Get active application configuration
-    CHspsConfiguration* app( iHspsWrapper->GetAppConfigurationL() );
-    CleanupStack::PushL( app );
-
-    // Get list of views included in active application configuration
-    RPointerArray< CPluginMap >& plugins( app->PluginMaps() );
-    CPluginMap* plugin( NULL );
-    
-    // Find active view
-    for ( TInt i = 0; i < plugins.Count() && !plugin; i++ )
+    CHspsConfiguration* view( iHspsWrapper->GetPluginConfigurationL( viewData.PluginId() ) );
+    CleanupStack::PushL( view );
+    if ( view )
         {
-        if ( plugins[ i ]->ActivationState() )
-            {
-            plugin = plugins[ i ];
-            }
-        }
-    
-    if ( plugin )
-        {
-        CHspsConfiguration* view( iHspsWrapper->GetPluginConfigurationL( plugin->PluginId() ) );
-        CleanupStack::PushL( view );
-        
         aInfo.SetNameL( view->PluginInfo().Name() );
-        aInfo.SetPluginIdL( plugin->PluginId() );
+        aInfo.SetPluginIdL( viewData.PluginId() );
         aInfo.SetUidL( view->PluginInfo().Uid() );
         aInfo.SetTypeL( view->PluginInfo().Type() );
         aInfo.SetDescriptionL( view->PluginInfo().Description() );
         aInfo.SetIconPathL( view->PluginInfo().LogoIcon() );
-        
-        CleanupStack::PopAndDestroy( view );
+
+        // Check if there is empty space
+        RPointerArray< CXnNode > nodes;
+        viewData.PluginNodesL( nodes );
+        TBool isFull( ETrue );
+        for ( TInt i = 0; i < nodes.Count(); i++ )
+            {
+            CXnNode* node( nodes[i] );
+            CXnPluginData* plugin = viewData.Plugin( node );
+
+            if ( plugin && !plugin->Occupied() )
+                {
+                isFull = EFalse;
+                break;
+                }
+            }
+        aInfo.SetIsFull( isFull );
         }
     else
         {
         err = KErrNotFound;
         }
+        
+    CleanupStack::PopAndDestroy( view );
     
-    CleanupStack::PopAndDestroy( app );
     return err;     
     }
 
@@ -1992,7 +1984,7 @@
 //
 TInt CXnEditor::ActiveAppL( CHsContentInfo& aInfo )
     {
-
+    
     TInt err( KErrNone );
     CHspsConfiguration* app = iHspsWrapper->GetAppConfigurationL();
     CleanupStack::PushL( app );
@@ -2004,6 +1996,16 @@
         aInfo.SetTypeL( app->PluginInfo().Type() );
         aInfo.SetDescriptionL( app->PluginInfo().Description() );
         aInfo.SetIconPathL( app->PluginInfo().LogoIcon() );
+
+        CXnRootData& appData( iViewManager.ActiveAppData() );
+        if ( appData.PluginData().Count() < appData.MaxPages() )
+            {
+            aInfo.SetIsFull( EFalse );
+            }
+        else
+            {
+            aInfo.SetIsFull( ETrue );
+            }
         }
     else
         {
--- a/idlehomescreen/xmluirendering/uiengine/src/xngesture.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,776 +0,0 @@
-/*
-* Copyright (c) 2008-2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Gesture class
-*
-*/
-
-#include <e32math.h>
-
-#include "xngesture.h"
-#include "xngesturedefs.h"
-
-using namespace XnGestureHelper;
-
-// ======== LOCAL FUNCTIONS ===================================================
-
-/**
- * Point array for which only x axis is relevant
- */
-class TXAxisPointArray : public TXnPointArray
-    {
-public:
-    TXAxisPointArray( const RArray< TXnPointEntry >& aPoints )
-        : TXnPointArray( aPoints )
-        {
-        }
-
-    // from TXnPointArray
-    TPoint operator[]( TInt aIndex ) const
-        {
-        return TPoint( Raw( aIndex ).iX, 0 );
-        }
-    };
-
-/**
- * Point array for which only y axis is relevant
- */
-class TYAxisPointArray : public TXnPointArray
-    {
-public:
-    TYAxisPointArray( const RArray< TXnPointEntry >& aPoints )
-        : TXnPointArray( aPoints )
-        {
-        }
-
-    // from TXnPointArray
-    TPoint operator[]( TInt aIndex ) const
-        {
-        return TPoint( 0, Raw( aIndex ).iY );
-        }
-    };
-
-/** @return the current time */
-TTime CurrentTime()
-    {
-    TTime time;
-    time.UniversalTime();
-    return time;
-    }
-
-// ----------------------------------------------------------------------------
-// destructor
-// ----------------------------------------------------------------------------
-//
-CXnGesture::~CXnGesture()
-    {
-    iPoints.Close();
-    }
-
-// ----------------------------------------------------------------------------
-// Reset
-// ----------------------------------------------------------------------------
-//
-void CXnGesture::Reset()
-    {
-    // store previous gesture data before resetting the state
-    if ( iPoints.Count() > 0 )
-        {
-        iPreviousGesture = TGestureRecord( Type(), iCompletionTime,
-            iPoints[iPoints.Count() - 1].iPos );
-        }
-    else
-        {
-        iPreviousGesture = TGestureRecord();
-        }
-
-    iPoints.Reset();
-    iHoldingState = ENotHolding;
-    iState = ENotComplete;
-    iHoldingPointIndex = 0;
-    }
-
-// ----------------------------------------------------------------------------
-// Reset
-// ----------------------------------------------------------------------------
-//
-TBool CXnGesture::IsEmpty() const
-    {
-    return iPoints.Count() == 0;
-    }
-
-// ----------------------------------------------------------------------------
-// Add a point to the sequence of points that together make up the gesture
-// ----------------------------------------------------------------------------
-//
-TInt CXnGesture::AddPoint( const TPoint& aPoint )
-    {
-    if ( !IsLatestPoint( aPoint ) )
-        {
-        return iPoints.Append( TXnPointEntry( aPoint, CurrentTime() ) );
-        }
-    return KErrNone;
-    }
-
-/**
- * @return ETrue if the point is within a specified distance of the other point
- */
-inline TBool IsNear( const TPoint& aPointUnderTest, const TPoint& aPoint,
-        TInt aMargin )
-    {
-    TRect rect(
-        aPoint.iX - aMargin, aPoint.iY - aMargin,
-        aPoint.iX + aMargin, aPoint.iY + aMargin );
-    return rect.Contains( aPointUnderTest );
-    }
-
-// ----------------------------------------------------------------------------
-// IsNearHoldingPoint
-// ----------------------------------------------------------------------------
-//
-TBool CXnGesture::IsNearHoldingPoint( const TPoint& aPoint ) const
-    {
-    return IsNear( aPoint, iPoints[iHoldingPointIndex].iPos,
-        KSamePointTolerance );
-    }
-
-// ----------------------------------------------------------------------------
-// IsLatestPoint
-// ----------------------------------------------------------------------------
-//
-TBool CXnGesture::IsLatestPoint( const TPoint& aPoint ) const
-    {
-    if ( iPoints.Count() > 0 )
-        {
-        return aPoint == CurrentPos();
-        }
-    return EFalse;
-    }
-
-// ----------------------------------------------------------------------------
-// StartHolding
-// ----------------------------------------------------------------------------
-//
-void CXnGesture::StartHolding()
-    {
-    iHoldingState = EHoldStarting;
-
-    // remove all points that were introduced after holding started
-    for ( TInt i = iPoints.Count() - 1; i > iHoldingPointIndex; i-- )
-        {
-        iPoints.Remove( i );
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// SetHoldingPoint
-// ----------------------------------------------------------------------------
-//
-void CXnGesture::SetHoldingPoint()
-    {
-    iHoldingPointIndex = iPoints.Count() - 1;
-    }
-
-// ----------------------------------------------------------------------------
-// ContinueHolding
-// ----------------------------------------------------------------------------
-//
-void CXnGesture::ContinueHolding()
-    {
-    iHoldingState = EHolding;
-    }
-
-// ----------------------------------------------------------------------------
-// SetReleased
-// ----------------------------------------------------------------------------
-//
-void CXnGesture::SetReleased()
-    {
-    // IsMovementStopped expects SetComplete to be called before SetRelea
-    __ASSERT_DEBUG( EComplete == iState, Panic( EGesturePanicIllegalLogic ) );
-    iState = EReleased;
-    }
-
-/**
- * @return elapsed time between aStartTime and aEndTime
- */
-inline TTimeIntervalMicroSeconds32 Elapsed(
-    const TTime& aStartTime,
-    const TTime& aEndTime )
-    {
-    return aEndTime.MicroSecondsFrom( aStartTime ).Int64();
-    }
-
-// ----------------------------------------------------------------------------
-// SetComplete
-// ----------------------------------------------------------------------------
-//
-void CXnGesture::SetComplete()
-    {
-    __ASSERT_DEBUG( iPoints.Count() > 0, Panic( EGesturePanicIllegalLogic ) );
-    iState = EComplete;
-    iCompletionTime = CurrentTime();
-    }
-
-// ----------------------------------------------------------------------------
-// SetComplete
-// ----------------------------------------------------------------------------
-//
-void CXnGesture::SetCancelled()
-    {
-    iState = ECancelled;
-    }
-
-// ----------------------------------------------------------------------------
-// IsTap
-// ----------------------------------------------------------------------------
-//
-TBool CXnGesture::IsTap() const
-    {
-    return CodeFromPoints( EAxisBoth ) == EGestureTap;
-    }
-
-/**
- * Translates a non-holding code into a holding code
- * @param aCode original gesture code
- * @return a gesture code with hold flag applied
- */
-inline TXnGestureCode Hold( TXnGestureCode aCode )
-    {
-    if ( aCode != EGestureStart &&
-         aCode != EGestureDrag &&
-         aCode != EGestureReleased &&
-         aCode != EGestureUnknown )
-        {
-        return static_cast< TXnGestureCode >( aCode | EFlagHold );
-        }
-    return aCode;
-    }
-
-// ----------------------------------------------------------------------------
-// Code
-// ----------------------------------------------------------------------------
-//
-TXnGestureCode CXnGesture::Code( TAxis aRelevantAxis ) const
-    {
-    switch ( iState )
-        {
-        case ENotComplete:
-            // "start" event if only first point received
-            // need to check that not holding, in case user pressed stylus
-            // down, and activated holding without moving the stylus
-            if ( iPoints.Count() == 1 && !IsHolding() )
-                {
-                return EGestureStart;
-                }
-            // "drag" event if holding not started or holding started earlier
-            else if ( iHoldingState != EHoldStarting )
-                {
-                return EGestureDrag;
-                }
-            // holding was just started
-            else
-                {
-                return Hold( CodeFromPoints( aRelevantAxis ) );
-                }
-
-        case EComplete:
-            {
-            TXnGestureCode code = CodeFromPoints( aRelevantAxis );
-
-#ifdef _GESTURE_DOUBLE_TAP_SUPPORT
-            if ( EGestureTap == code && IsTapDoubleTap() )
-                {
-                code = EGestureDoubleTap;
-                }
-#endif // _GESTURE_DOUBLE_TAP_SUPPORT
-
-            return code;
-            }
-
-        case EReleased:
-            return EGestureReleased;
-
-        case ECancelled: // fallthrough
-        default:
-            return EGestureUnknown;
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// IsHolding
-// ----------------------------------------------------------------------------
-//
-TBool CXnGesture::IsHolding() const
-    {
-    return iHoldingState >= EHoldStarting;
-    }
-
-// ----------------------------------------------------------------------------
-// StartPos
-// ----------------------------------------------------------------------------
-//
-TPoint CXnGesture::StartPos() const
-    {
-    // at least one point will be in the array during callback (pointer down pos)
-    return iPoints[0].iPos;
-    }
-
-// ----------------------------------------------------------------------------
-// CurrentPos
-// ----------------------------------------------------------------------------
-//
-TPoint CXnGesture::CurrentPos() const
-    {
-    // at least on point will be in the array during callback (pointer down pos)
-    return iPoints[iPoints.Count() - 1].iPos;
-    }
-
-// ----------------------------------------------------------------------------
-// IsMovementStopped
-// ----------------------------------------------------------------------------
-//
-inline TBool CXnGesture::IsMovementStopped() const
-    {
-    // iCompletionTime is only only valid if client has called SetComplete
-    if ( iState >= EComplete )
-        {
-        return Elapsed( NthLastEntry( 1 ).iTime, iCompletionTime )
-            .Int() > KSpeedStopTime;
-        }
-    return EFalse;
-    }
-
-namespace
-    {
-    const TInt KFloatingPointAccuracy = 0.000001;
-
-    /** @return percentage (0.0-1.0) how far aPos is from aEdge1 towards aEdge2 */
-    inline TReal32 Proportion( TReal32 aPos, TReal32 aEdge1, TReal32 aEdge2 )
-        {
-        if ( Abs( aEdge2 - aEdge1 ) > KFloatingPointAccuracy )
-            {
-            return ( aPos - aEdge1 ) / ( aEdge2 - aEdge1 );
-            }
-        return 0; // avoid division by zero
-        }
-
-    /** Edges (pixels) at which speed should be -100% or 100% */
-    NONSHARABLE_STRUCT( TEdges )
-        {
-        TReal32 iMin;
-        TReal32 iMax;
-        };
-
-    /**
-     * scale which allows different (coordinate -> percentage) mapping
-     * between -100% to 0% and 0 and 100%
-     */
-    NONSHARABLE_STRUCT( TScale )
-        {
-        TScale( TInt aZero, const TEdges& aEdges )
-                : iMin( aEdges.iMin ), iZero( aZero ), iMax( aEdges.iMax )
-            {
-            }
-
-        /** @return aPos as a percentage between -100% and 100% in aScale */
-        TReal32 Percent( TReal32 aPos ) const;
-
-        /// coordinate where speed is -100%
-        TReal32 iMin;
-        /// coordinate where speed is 0%
-        TReal32 iZero;
-        /// coordinate where speed is 100%
-        TReal32 iMax;
-        };
-
-    /** @convert aPos into a percentage between -100% and 100% in aScale */
-    TReal32 TScale::Percent( TReal32 aPos ) const
-        {
-        TReal32 percent;
-        if ( aPos < iZero )
-            {
-            // return negative percentages on the lower side of zero point
-            percent = -1 * Proportion( aPos, iZero, iMin );
-            }
-        else
-            {
-            percent = Proportion( aPos, iZero, iMax );
-            }
-        // constrain between -100% and 100%
-        return Min( Max( percent, -1.0F ), 1.0F );
-        }
-
-    /** Scale in x and y dimensions */
-    NONSHARABLE_STRUCT( TScale2D )
-        {
-        TRealPoint Percent( const TPoint& aPos ) const
-            {
-            return TRealPoint(
-                iX.Percent( aPos.iX ),
-                iY.Percent( aPos.iY ) );
-            }
-
-        TScale iX;
-        TScale iY;
-        };
-
-    enum TDirection { ESmaller, ELarger };
-
-    /** @return the direction of pos compared to the previous pos */
-    inline TDirection Direction( TInt aPos, TInt aPreviousPos )
-        {
-        return aPos < aPreviousPos ? ESmaller : ELarger;
-        }
-
-    /** Direction in x and y dimensions */
-    NONSHARABLE_STRUCT( TDirection2D )
-        {
-        TDirection iX;
-        TDirection iY;
-        };
-
-    /** Return the direction (up/down) of signal at aIndex */
-    inline TDirection2D Direction(
-        TInt aIndex,
-        const RArray< TXnPointEntry >& aPoints )
-        {
-        const TPoint& pos = aPoints[aIndex].iPos;
-        const TPoint& prevPos = aPoints[aIndex - 1].iPos;
-        TDirection2D dir = {
-            Direction( pos.iX, prevPos.iX ),
-            Direction( pos.iY, prevPos.iY ) };
-        return dir;
-        }
-
-    /**
-     * @return a position in the aLow and aHigh, so that it aProportion of
-     *         of length is above the pos
-     */
-    TReal32 ProportionalLength( TReal32 aLow, TReal32 aHigh, TReal32 aProportion )
-        {
-        return ( aHigh - aLow ) * aProportion / ( 1 + aProportion );
-        }
-
-    /**
-     * @return aVariableEdge scaled to new position, when the other edge changes
-     *         from aOldEdge to aNewEdge, so that aOrigin maintains the *same
-     *         relative position* between aVariableEdge and the other edge
-     */
-    inline TReal32 ScaledEdge(
-        TReal32 aOrigin,
-        TReal32 aVariableEdge,
-        TReal32 aOldEdge,
-        TReal aNewEdge )
-        {
-        TReal32 proportion = Proportion( aOrigin, aVariableEdge, aOldEdge );
-        return ( proportion * aNewEdge - aOrigin ) / ( proportion - 1 );
-        }
-
-    TScale Rescale(
-        TReal32 aPos,
-        TDirection aDir,
-        TDirection aPrevDir,
-        const TScale& aPrevScale,
-        const TEdges& aEdges )
-        {
-        TScale scale( aPrevScale );
-        if ( aPrevDir != aDir )
-            {
-            // the code duplication is accepted here, since it is difficult
-            // to factor out while maintaining the understandability of this
-            // anyway complex algorithm
-            if ( aDir == ESmaller )
-                {
-                scale.iMin = aEdges.iMin;
-                if ( aPrevScale.iZero < aPos )
-                    {
-                    TReal32 proportionAboveZero = Proportion(
-                        aPos, aPrevScale.iZero, aPrevScale.iMax );
-                    scale.iZero = aPos - ProportionalLength(
-                        aEdges.iMin, aPos, proportionAboveZero );
-                    }
-                else
-                    {
-                    // adjust zero pos so that proportion between aPos, Min,
-                    // and Zero pos stay the same (Min will move to 0,
-                    // aPos stays the same)
-                    scale.iZero = ScaledEdge( aPos, aPrevScale.iZero,
-                        aPrevScale.iMin, aEdges.iMin );
-                    }
-
-                // adjust the upper edge to take into account the movement of
-                // zero pos
-                scale.iMax = ScaledEdge( aPos, aPrevScale.iMax,
-                    aPrevScale.iZero, scale.iZero );
-                }
-            else // ELarger
-                {
-                scale.iMax = aEdges.iMax;
-                if ( aPos < aPrevScale.iZero )
-                    {
-                    TReal32 proportionBelowZero = Proportion(
-                        aPos, aPrevScale.iZero, aPrevScale.iMin );
-                    scale.iZero = aPos + ProportionalLength(
-                        aPos, aEdges.iMax, proportionBelowZero );
-                    }
-                else
-                    {
-                    // adjust zero pos so that proportion between aPos, Max, and
-                    // Zero pos stay the same (Max will move edge, aPos stays
-                    // the same)
-                    scale.iZero = ScaledEdge( aPos, aPrevScale.iZero,
-                        aPrevScale.iMax, aEdges.iMax );
-                    }
-
-                // adjust the lower edge to take into account the movement of
-                // zero pos
-                scale.iMin = ScaledEdge( aPos, aPrevScale.iMin,
-                    aPrevScale.iZero, scale.iZero );
-                }
-            }
-        return scale;
-        }
-
-    /** Edges in x and y dimensions */
-    NONSHARABLE_STRUCT( TEdges2D )
-        {
-        TEdges iX;
-        TEdges iY;
-        };
-
-    /**
-     * @param aEdges edges of the area in which gesture points are accepted
-     * @return the scale of latest point in the list of points
-     */
-    TScale2D Scale( const RArray< TXnPointEntry >& aPoints, const TEdges2D& aEdges )
-        {
-        TScale2D scale = { TScale( aPoints[0].iPos.iX, aEdges.iX ),
-                           TScale( aPoints[0].iPos.iY, aEdges.iY ) };
-        TInt count = aPoints.Count();
-        if ( count > 1 )
-            {
-            // iterate the whole point list to arrive to the current scale
-            TDirection2D dir( Direction( 1, aPoints ) );
-            for ( TInt i = 1; i < count; i++ )
-                {
-                // get direction at i
-                TDirection2D newDir( Direction( i, aPoints ) );
-                // get new scale at i
-                scale.iX = Rescale(
-                    aPoints[i - 1].iPos.iX,
-                    newDir.iX,
-                    dir.iX,
-                    scale.iX,
-                    aEdges.iX );
-                scale.iY = Rescale(
-                    aPoints[i - 1].iPos.iY,
-                    newDir.iY,
-                    dir.iY,
-                    scale.iY,
-                    aEdges.iY );
-                dir = newDir;
-                }
-            }
-        return scale;
-        }
-    } // unnamed namespace
-
-TRealPoint CXnGesture::SpeedPercent( const TRect& aEdges ) const
-    {
-    // x and y coordinates are easier to handle separately, extract from TRect:
-    // ((iMinX, iMinY), (iMaxX, iMaxY)) -> ((iMinX, iMaxX), (iMinY, iMaxY))
-    TEdges2D edges = {
-        { aEdges.iTl.iX, aEdges.iBr.iX },
-        { aEdges.iTl.iY, aEdges.iBr.iY } };
-    // work out the current scale (coordinate -> percentage mapping) from
-    // the history of points (i.e., points of current gesture). Then
-    // calculate the percentage of the current position.
-    return Scale( iPoints, edges ).Percent( CurrentPos() );
-    }
-
-// ----------------------------------------------------------------------------
-// Speed
-// ----------------------------------------------------------------------------
-//
-TRealPoint CXnGesture::Speed() const
-    {
-    const TReal32 KMicroSecondsInSecond = 1000000;
-
-    // Speed is only evaluated at the end of the swipe
-    // if user stops at the end of the swipe before lifting stylus,
-    // speed is zero. If time is zero, return 0 speed (infinite does
-    // not make sense either). Will need to consider also earlier points
-    // and their times or start time, if this zero-speed behavior is a problem
-    TRealPoint speed;
-    TReal32 time = static_cast< TReal32 >( TimeFromPreviousPoint().Int() )
-        / KMicroSecondsInSecond;
-    if ( !IsMovementStopped() && time > 0 )
-        {
-        TPoint distance = CurrentPos() - PreviousPos();
-        speed.iX = static_cast< TReal32 >( distance.iX ) / time;
-        speed.iY = static_cast< TReal32 >( distance.iY ) / time;
-        }
-    return speed;
-    }
-
-// ----------------------------------------------------------------------------
-// Distance
-// ----------------------------------------------------------------------------
-//
-TPoint CXnGesture::Distance() const
-    {
-    return CurrentPos() - StartPos();
-    }
-
-// ----------------------------------------------------------------------------
-// TimeFromPreviousPoint
-// ----------------------------------------------------------------------------
-//
-inline TTimeIntervalMicroSeconds32 CXnGesture::TimeFromPreviousPoint() const
-    {
-    const TInt KLatestEntryOffset = 1;
-    return Elapsed( PreviousEntry().iTime, NthLastEntry( KLatestEntryOffset ).iTime );
-    }
-
-// ----------------------------------------------------------------------------
-// CodeFromPoints
-// ----------------------------------------------------------------------------
-//
-TXnGestureCode CXnGesture::CodeFromPoints( TAxis aRelevantAxis ) const
-    {
-    // select the correct filter based on aRelevantAxis
-    // these filter_ objects are array decorators that will eliminate either
-    // x, y or neither coordinate of each point
-    TXAxisPointArray filterY( iPoints );
-    TYAxisPointArray filterX( iPoints );
-    TXnPointArray filterNone( iPoints );
-    TXnPointArray& filter =
-        aRelevantAxis == EAxisHorizontal ? static_cast< TXnPointArray& >( filterY ) :
-        aRelevantAxis == EAxisVertical   ? static_cast< TXnPointArray& >( filterX ) :
-        /* otherwise EAxisBoth */          filterNone;
-
-    // currently the gesture recogniser does not have any state, so it is fast
-    // to instantiate. The call is not static however, to allow the recogniser
-    // to be replaced by a more complicated implementation that has state.
-    // then it may make sense to make the recogniser a member variable.
-    return TXnGestureRecogniser().GestureCode( filter );
-    }
-
-// ----------------------------------------------------------------------------
-// CodeFromPoints
-// ----------------------------------------------------------------------------
-//
-TXnGestureCode CXnGesture::LastDirection( TAxis aRelevantAxis ) const
-    {
-    // select the correct filter based on aRelevantAxis
-    // these filter_ objects are array decorators that will eliminate either
-    // x, y or neither coordinate of each point
-    TXAxisPointArray filterY( iPoints );
-    TYAxisPointArray filterX( iPoints );
-    TXnPointArray filterNone( iPoints );
-    TXnPointArray& filter =
-        aRelevantAxis == EAxisHorizontal ? static_cast< TXnPointArray& >( filterY ) :
-        aRelevantAxis == EAxisVertical   ? static_cast< TXnPointArray& >( filterX ) :
-        /* otherwise EAxisBoth */          filterNone;
-
-    // currently the gesture recogniser does not have any state, so it is fast
-    // to instantiate. The call is not static however, to allow the recogniser
-    // to be replaced by a more complicated implementation that has state.
-    // then it may make sense to make the recogniser a member variable.
-    return TXnGestureRecogniser().LastDirection( filter );
-    }
-
-// ----------------------------------------------------------------------------
-// return nth point from the end of the points array
-// ----------------------------------------------------------------------------
-//
-inline const TXnPointEntry& CXnGesture::NthLastEntry( TInt aOffset ) const
-    {
-    return iPoints[Max( iPoints.Count() - aOffset, 0 )];
-    }
-
-// ----------------------------------------------------------------------------
-// PreviousEntry
-// ----------------------------------------------------------------------------
-//
-inline const TXnPointEntry& CXnGesture::PreviousEntry() const
-    {
-    return NthLastEntry( KPreviousPointOffset );
-    }
-
-// ----------------------------------------------------------------------------
-// PreviousPos
-// ----------------------------------------------------------------------------
-//
-inline TPoint CXnGesture::PreviousPos() const
-    {
-    return NthLastEntry( KPreviousPointOffset - 1 ).iPos;
-    }
-
-// ----------------------------------------------------------------------------
-// SetComplete
-// ----------------------------------------------------------------------------
-//
-TBool CXnGesture::IsTapDoubleTap() const
-    {
-    return iPreviousGesture.iType == TGestureRecord::ETypeTap &&
-           Elapsed( iPreviousGesture.iCompletionTime, iCompletionTime ).Int() <=
-               KMaxDoubleTapDuration &&
-           IsNear( iPreviousGesture.iPos, iPoints[iPoints.Count() - 1].iPos,
-               KSamePointTolerance );
-    }
-
-// ----------------------------------------------------------------------------
-// Type
-// ----------------------------------------------------------------------------
-//
-CXnGesture::TGestureRecord::TType CXnGesture::Type() const
-    {
-    if ( CodeFromPoints( EAxisBoth ) == EGestureTap && !IsHolding() )
-        {
-        if ( IsTapDoubleTap() )
-            {
-            return CXnGesture::TGestureRecord::ETypeDoubleTap;
-            }
-        else
-            {
-            return CXnGesture::TGestureRecord::ETypeTap;
-            }
-        }
-    else
-        {
-        return CXnGesture::TGestureRecord::ETypeOther;
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// TGestureRecord constructor
-// ----------------------------------------------------------------------------
-//
-CXnGesture::TGestureRecord::TGestureRecord()
-    {
-    iType = ETypeOther;
-    }
-
-// ----------------------------------------------------------------------------
-// TGestureRecord constructor
-// ----------------------------------------------------------------------------
-//
-CXnGesture::TGestureRecord::TGestureRecord(
-    CXnGesture::TGestureRecord::TType aType,
-    TTime aCompletionTime,
-    TPoint aPos )
-        : iType( aType ), iCompletionTime( aCompletionTime ), iPos( aPos )
-    {
-    }
--- a/idlehomescreen/xmluirendering/uiengine/src/xngesturehelper.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,384 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Gesture helper implementation
-*
-*/
-
-// System includes
-#include <e32base.h>
-#include <w32std.h>
-
-// User includes
-#include "xngesturehelper.h"
-#include "xngesture.h"
-#include "xngesturedefs.h"
-#include "xnnode.h"
-
-using namespace XnGestureHelper;
-
-namespace XnGestureHelper
-    {
-    NONSHARABLE_CLASS( CHoldingTimer ) : public CTimer
-        {
-    public:
-        /** Two-phase constructor */
-        static CHoldingTimer* NewL( CXnGestureHelper& aHelper )
-            {
-            CHoldingTimer* self = new ( ELeave ) CHoldingTimer( aHelper );
-            CleanupStack::PushL( self );
-            self->ConstructL();
-            // "hold event" sending is enabled by default
-            self->iIsEnabled = ETrue;
-            CActiveScheduler::Add( self );
-            CleanupStack::Pop( self );
-            return self;
-            }
-
-        /** Destructor */
-        ~CHoldingTimer()
-            {
-            Cancel();
-            }
-
-        /** Set whether sending holding events is currently enabled */
-        void SetEnabled( TBool aEnabled )
-            {
-            iIsEnabled = aEnabled;
-            // cancel in case hold timer is already running
-            Cancel();
-            }
-
-        /** @return whether sending holding events is currently enabled */
-        TBool IsEnabled() const
-            {
-            return iIsEnabled;
-            }
-
-        /** Start the timer. Calls CXnGestureHelper::StartHoldingL upon
-          * completion */
-        void Start()
-            {
-            // if sending hold events is disabled, do not ever start the hold
-            // timer, and hence hold events will never be triggered
-            if ( iIsEnabled )
-                {
-                Cancel();
-                After( KHoldDuration );
-                }
-            }
-
-    private:
-        /** Constructor */
-        CHoldingTimer( CXnGestureHelper& aHelper )
-            : // give higher priority to new pointer events with - 1
-              CTimer( EPriorityUserInput - 1 ),
-              iHelper( aHelper )
-            {
-            }
-
-        void RunL() // From CActive
-            {
-            iHelper.StartHoldingL();
-            }
-
-    private:
-        /// helper object that will be called back when timer is triggered
-        CXnGestureHelper& iHelper;
-        /// whether sending holding events is currently enabled
-        TBool iIsEnabled;
-        };
-    } // namespace GestureHelper
-
-/**
-* @return position from event. Use this instead of using aEvent direction to
-*         avoid accidentally using TPointerEvent::iPosition
-*/
-inline TPoint Position( const TPointerEvent& aEvent )
-    {
-    // use parent position, since the capturer is using full screen area,
-    // and because the (Alfred) drag events are not local to visual even when
-    // coming from the client
-    return aEvent.iParentPosition;
-    }
-
-// ----------------------------------------------------------------------------
-// Two-phase constructor
-// ----------------------------------------------------------------------------
-//
-CXnGestureHelper* CXnGestureHelper::NewL( CXnNode& aNode )
-    {
-    CXnGestureHelper* self = new ( ELeave ) CXnGestureHelper( aNode );
-    CleanupStack::PushL( self );
-    self->iHoldingTimer = CHoldingTimer::NewL( *self );
-    self->iGesture = new ( ELeave ) CXnGesture();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ----------------------------------------------------------------------------
-// Constructor
-// ----------------------------------------------------------------------------
-//
-CXnGestureHelper::CXnGestureHelper( CXnNode& aNode )
-    : iOwner( aNode )
-    {
-    }
-
-// ----------------------------------------------------------------------------
-// Destructor
-// ----------------------------------------------------------------------------
-//
-CXnGestureHelper::~CXnGestureHelper()
-    {
-    delete iHoldingTimer;
-    delete iGesture;
-    }
-
-// ----------------------------------------------------------------------------
-// SetHoldingEnabled
-// ----------------------------------------------------------------------------
-//
-void CXnGestureHelper::SetHoldingEnabled( TBool aEnabled )
-    {
-    iHoldingTimer->SetEnabled( aEnabled );
-    }
-
-// ----------------------------------------------------------------------------
-// IsHoldingEnabled
-// ----------------------------------------------------------------------------
-//
-TBool CXnGestureHelper::IsHoldingEnabled() const
-    {
-    return iHoldingTimer->IsEnabled();
-    }
-
-// ----------------------------------------------------------------------------
-// Reset state
-// ----------------------------------------------------------------------------
-//
-void CXnGestureHelper::Reset()
-    {
-    iHoldingTimer->Cancel();
-    iGesture->Reset();
-    }
-
-/**
-* Helper function that calls Reset on the pointer to CXnGestureHelper
-*/
-static void ResetHelper( TAny* aHelper )
-    {
-    static_cast< CXnGestureHelper* >( aHelper )->Reset();
-    }
-
-// ----------------------------------------------------------------------------
-// Sets gesture destination
-// ----------------------------------------------------------------------------
-//
-void CXnGestureHelper::SetDestination( CXnNode* aDestination )
-    {
-    iDestination = aDestination;
-    }
-
-// ----------------------------------------------------------------------------
-// Gets gesture destination
-// ----------------------------------------------------------------------------
-//    
-CXnNode* CXnGestureHelper::Destination() const
-    {
-    return iDestination;
-    }
-
-// ----------------------------------------------------------------------------
-// Gets gesture owner
-// ----------------------------------------------------------------------------
-//    
-CXnNode* CXnGestureHelper::Owner() const
-    {
-    return &iOwner;
-    }
-    
-// ----------------------------------------------------------------------------
-// Handle a pointer event
-// ----------------------------------------------------------------------------
-//
-TXnGestureCode CXnGestureHelper::HandlePointerEventL( 
-    const TPointerEvent& aEvent )
-    {
-    TXnGestureCode ret( EGestureUnknown );
-    
-    switch ( aEvent.iType )
-        {
-        case TPointerEvent::EButton1Down:
-            // If no up event was received during previous gesture, cancel
-            // previous event and reset state
-            if ( !IsIdle() )
-                {
-                iGesture->SetCancelled();
-                // ambiguous what is the right thing when "cancel" event leaves
-                // and "start" does not. Leaving for cancel *after* "start" could
-                // be unexpected to client, as client would have handled start
-                // event successfully. Assume that leaving upon cancellation
-                // can be ignored.
-                Reset();
-                }
-            // adding the first point implicitly makes the state "not idle"
-            AddPointL( aEvent );
-            // If AddPointL leaves, IsIdle will return EFalse for other events
-            // types, hence further pointer events will be ignored.
-            // Therefore, holding will NOT be started if AddPointL leaves,
-            // since the callback would trigger a gesture callback, and that
-            // would access an empty points array.
-            iHoldingTimer->Start();
-            iDirection = EGestureUnknown;
-            break;
-
-        case TPointerEvent::EDrag:
-            // ignore the event in case not in "recording" state. this may
-            // happen if holding was triggered, or client sends up event after
-            // down event was received in a different *client* state, and
-            // client did not forward the down event to here.
-            // Also, while stylus down, the same event is received repeatedly
-            // even if stylus does not move. Filter out by checking if point
-            // is the same as the latest point
-            iDirection = iGesture->LastDirection( CXnGesture::EAxisHorizontal );
-            
-            if ( !IsIdle() && !iGesture->IsLatestPoint( Position( aEvent ) ) )
-                {
-                AddPointL( aEvent );
-                if ( !( iGesture->IsHolding() ||
-                        iGesture->IsNearHoldingPoint( Position( aEvent ) ) ) )
-                    {
-                    // restart hold timer, since pointer has moved
-                    iHoldingTimer->Start();
-                    // Remember the point in which holding was started
-                    iGesture->SetHoldingPoint();
-                    }
-                }
-            break;
-
-        case TPointerEvent::EButton1Up:
-            // ignore up event if no down event received
-            if ( !IsIdle() )
-                {
-                // reset in case the down event is not received for a reason
-                // in client, and instead drag or up events are received.
-                // reset via cleanup stack to ensure Reset is run even if
-                // observer leaves
-                CleanupStack::PushL( TCleanupItem( &ResetHelper, this ) );
-                iGesture->SetComplete();
-                // if adding of the point fails, notify client with a
-                // cancelled event. It would be wrong to send another
-                // gesture code when the up point is not known
-                if ( AddPoint( aEvent ) != KErrNone )
-                    {
-                    iGesture->SetCancelled();
-                    }
-                else
-                    {
-                    // send gesture code if holding has not been started
-                    if ( !iGesture->IsHolding() )
-                        {
-                        // if client leaves, the state is automatically reset.
-                        // In this case the client will not get the released event
-                        ret = iDirection;
-                        }
-                    // send an event that stylus was lifted
-                    iGesture->SetReleased();
-                    }
-                // reset state
-                CleanupStack::PopAndDestroy( this );
-                }
-            break;
-
-        default:
-            break;
-        }
-    
-    return ret;
-    }
-
-// ----------------------------------------------------------------------------
-// Is the helper idle?
-// inline ok in cpp file for a private member function
-// ----------------------------------------------------------------------------
-//
-inline TBool CXnGestureHelper::IsIdle() const
-    {
-    return iGesture->IsEmpty();
-    }
-
-// ----------------------------------------------------------------------------
-// Add a point to the sequence of points that together make up the gesture
-// inline ok in cpp file for a private member function
-// ----------------------------------------------------------------------------
-//
-inline void CXnGestureHelper::AddPointL( const TPointerEvent& aEvent )
-    {
-    User::LeaveIfError( AddPoint( aEvent ) );
-    }
-
-// ----------------------------------------------------------------------------
-// Add a point to the sequence of points that together make up the gesture
-// inline ok in cpp file for a private member function
-// ----------------------------------------------------------------------------
-//
-inline TInt CXnGestureHelper::AddPoint( const TPointerEvent& aEvent )
-    {
-    return iGesture->AddPoint( Position ( aEvent ) );
-    }
-
-/**
-* Helper function that calls ContinueHolding on the pointer to TGesture
-*/
-static void ContinueHolding( TAny* aGesture )
-    {
-    static_cast< CXnGesture* >( aGesture )->ContinueHolding();
-    }
-
-// ----------------------------------------------------------------------------
-// Add a point to the sequence of points that together make up the gesture
-// ----------------------------------------------------------------------------
-//
-void CXnGestureHelper::StartHoldingL()
-    {
-    // hold & tap event is specifically filtered out. Use case: in list fast
-    // scrolling activation (e.g. enhanced coverflow), tap & hold should not
-    // start fast scroll. In addition, after long tap on start position,
-    // drag and drag & hold swiping should emit normal swipe and swipe&hold
-    // events. Therefore, tap & hold is not supported.
-    if ( !iGesture->IsTap() )
-        {
-        // holding has just started, and gesture code should be provided to client.
-        // set gesture state so that it produces a gesture code (other than drag)
-        iGesture->StartHolding();
-
-        // create an item in the cleanup stack that will set the gesture state
-        // to holding-was-started-earlier state. NotifyL may leave, but the
-        // holding-was-started-earlier state must still be successfully set,
-        // otherwise, the holding gesture code will be sent twice
-        CleanupStack::PushL( TCleanupItem( &ContinueHolding, iGesture ) );
-
-        // set holding state to "post holding"
-        CleanupStack::PopAndDestroy( iGesture );
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// Check if swipe is valid
-// ----------------------------------------------------------------------------
-//
-TXnGestureCode CXnGestureHelper::ValidSwipe() const
-    {                        
-    return iGesture->Code( CXnGesture::EAxisBoth );
-    }
--- a/idlehomescreen/xmluirendering/uiengine/src/xngesturerecogniser.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,234 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Gesture helper implementation
-*
-*/
-
-#include <e32math.h>
-
-#include "xngesturerecogniser.h"
-#include "xngesturedefs.h"
-#include "xnpointarray.h"
-
-using namespace XnGestureHelper;
-
-const TInt minPointCount = 5;
-
-/**
- * Vector class (math)
- */
-NONSHARABLE_CLASS( TVector )
-    {
-public:
-    /**
-     * Constructor
-     * @param aFrom starting point of the vector
-     * @param aTo ending point of the vector
-     */
-    TVector( const TPoint& aFrom, const TPoint& aTo )
-            : iX( aTo.iX - aFrom.iX ),
-              iY( aTo.iY - aFrom.iY )
-        {
-        }
-
-    /** @return angle of the vector */
-    TReal Angle() const
-        {
-        TReal angle = 0;
-        TReal length = Length();
-        if ( length != 0 )
-            {
-            Math::ACos( angle, iX / Length() );
-            if ( iY < 0 )
-                {
-                angle = 2 * KPi - angle;
-                }
-            }
-        return Degrees( angle );
-        }
-
-    /** @return length of the vector */
-    TReal Length() const
-        {
-        TReal length = 0;
-        Math::Sqrt( length, iX * iX + iY * iY );
-        return length;
-        }
-
-private:
-    /** @return radians in degrees */
-    inline TReal Degrees( TReal aRadians ) const
-        {
-        return aRadians * 180 / KPi;
-        }
-
-public:
-    /// x coordinate that represent the vector
-    TReal iX;
-    /// y coordinate that represent the vector
-    TReal iY;
-    };
-
-/**
- * @return ETrue if points for a tap event
- */
-inline TBool IsTap( const TXnPointArray& aPoints )
-    {
-    // with tap, the pointer is not allowed to leave the tap area and come back
-    // therefore, gesture length is not an acceptable test for tap, as it tests
-    // only the last point. therefore, check if *any* point is outside tap area.
-    TInt i = aPoints.Count(); // latest point if most likely to be outside tap area
-    while ( --i >= 0 )
-        {
-        // use the raw point (from which no axis has been filtered out)
-        // because tap should consider both axes even when Code() ignores one axis
-        if ( KSamePointTolerance < Abs( aPoints.Raw( i ).iX - aPoints.Raw( 0 ).iX ) ||
-             KSamePointTolerance < Abs( aPoints.Raw( i ).iY - aPoints.Raw( 0 ).iY ) )
-            {
-            return EFalse;
-            }
-        }
-    return ETrue;
-    }
-
-/**
- * @return Length of the gesture in points
- */
-inline TReal GestureLength( const TXnPointArray& aPoints )
-    {
-    return TVector( aPoints[0], aPoints[aPoints.Count() - 1] ).Length();
-    }
-
-/**
- * @return ETrue if aAngleUnderTest is almost aAngle
- *         Closeness of the angles is controlled by KAngleTolerance
- */
-static TBool IsNear( TReal aAngleUnderTest, TReal aAngle )
-    {
-    return aAngle - KAngleTolerance <= aAngleUnderTest &&
-           aAngleUnderTest <= aAngle + KAngleTolerance;
-    }
-
-/**
- * @return the angle as a direction flags of TGesture
- */
-inline TXnGestureCode Direction( TReal aAngle )
-    {
-    TXnGestureCode direction = EGestureUnknown;
-
-    if ( IsNear( aAngle, 90.0 ) )
-        {
-        direction = EGestureSwipeDown;
-        }
-    else if ( IsNear( aAngle, 180.0 ) )
-        {
-        direction = EGestureSwipeLeft;
-        }
-    else if ( IsNear( aAngle, 270.0 ) )
-        {
-        direction = EGestureSwipeUp;
-        }
-    else if ( 360.0 - KAngleTolerance <= aAngle || aAngle <= KAngleTolerance )
-        {
-        direction = EGestureSwipeRight;
-        }
-    else // for lint warning
-        {
-        // unknown angle
-        }
-
-    return direction;
-    }
-
-/** @return direction between points */
-inline TXnGestureCode Direction( const TPoint& aFromPoint, const TPoint& aToPoint )
-    {
-    return Direction( TVector( aFromPoint, aToPoint ).Angle() );
-    }
-
-/** @return overall direction between points */
-static TXnGestureCode GeneralDirection( const TXnPointArray& aPoints )
-    {
-    return Direction( aPoints[0], aPoints[aPoints.Count() - 1]);
-    }
-
-/**
-* @return the last received point that is different that the latest point,
-*         or first point if no point is different than latest
-*/
-inline TPoint PreviousPoint( const TXnPointArray& aPoints )
-    {
-    TPoint latestPoint = aPoints[aPoints.Count() - 1];
-    TInt i = aPoints.Count() - 1;
-    while ( --i >= 0 )
-        {
-        if ( latestPoint != aPoints[i] )
-            {
-            return aPoints[i];
-            }
-        }
-    return aPoints[0];
-    }
-
-/** @return direction between last two points */
-TXnGestureCode TXnGestureRecogniser::LastDirection( const TXnPointArray& aPoints ) const
-    {
-    TXnGestureCode ret = EGestureUnknown;
-    
-    if ( ( aPoints.Count() > 0 ) &&
-         ( GestureLength( aPoints ) >= KMinSwipeLength ))
-        {
-        if ( aPoints.Count() > minPointCount )
-            {
-            // return direction between latest and previous points.
-            // pick the previous point that is different than the last point
-            // because while using an x or y filter array, more than one
-            // sequential points may look like the same point because
-            // the differing coordinate coordinate is filtered out. For example,
-            // if dragging left and slightly up, many y coordinates will have the
-            // same value, while only x differs.
-            ret = Direction( aPoints[ aPoints.Count() - minPointCount ],
-                              aPoints[ aPoints.Count() - 1 ] );
-            }
-        else
-            {
-            ret = GeneralDirection( aPoints );
-            }
-        }
-    
-    return ret;
-    }
-
-// ----------------------------------------------------------------------------
-// Return gesture code of a gesture formed by a sequence of points
-// ----------------------------------------------------------------------------
-//
-TXnGestureCode TXnGestureRecogniser::GestureCode( const TXnPointArray& aPoints ) const
-    {
-    __ASSERT_DEBUG( aPoints.Count() > 0, Panic( EGesturePanicIllegalLogic ) );
-
-    if (aPoints.Count() <= 0)
-        {
-        return EGestureUnknown;
-        }
-
-    if ( GestureLength( aPoints ) >= KMinSwipeLength )
-        {
-        return GeneralDirection( aPoints );
-        }
-
-    // the pointer was moved but was either not moved far enough, or was
-    // brought back to close to the starting point
-    return EGestureUnknown;
-    }
--- a/idlehomescreen/xmluirendering/uiengine/src/xnhittest.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,193 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Data class to hold widget info
-*
-*/
-
-// INCLUDES
-#include <e32base.h>
-
-#include "xncontroladapter.h"
-#include "xnhittest.h"
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CXnHitTest::NewL()
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CXnHitTest* CXnHitTest::NewL()
-    {
-    CXnHitTest* self = CXnHitTest::NewLC();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CXnHitTest::NewLC()
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CXnHitTest* CXnHitTest::NewLC()
-    {
-    CXnHitTest* self = new ( ELeave ) CXnHitTest;
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CXnHitTest::CXnHitTest()
-// C++ default constructor
-// -----------------------------------------------------------------------------
-//
-CXnHitTest::CXnHitTest()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CXnHitTest::~CXnHitTest()
-// C++ default destructor.
-// -----------------------------------------------------------------------------
-//
-CXnHitTest::~CXnHitTest()
-    {
-    CCoeEnv::Static()->RemoveMessageMonitorObserver( *this );    
-    iHitRegion.Reset();
-    }
-
-// -----------------------------------------------------------------------------
-// CXnHitTest::ConstructL()
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-void CXnHitTest::ConstructL()
-    {
-    CCoeEnv::Static()->AddMessageMonitorObserverL( *this );    
-    }
-
-// -----------------------------------------------------------------------------
-// CXnHitTest::MonitorWsMessage()
-// -----------------------------------------------------------------------------
-//
-void CXnHitTest::MonitorWsMessage( const TWsEvent& aEvent )
-    {
-    TInt type( aEvent.Type() );
-    
-    if ( type == EEventPointer )
-        {
-        iPointerEvent = *aEvent.Pointer();
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CXnHitTest::AddControl()
-// -----------------------------------------------------------------------------
-//
-void CXnHitTest::AddControl( CXnControlAdapter* aControl )
-    {
-    if ( iHitRegion.Find( aControl ) == KErrNotFound )
-        {
-        iHitRegion.Append( aControl );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CXnHitTest::RemoveControl()
-// -----------------------------------------------------------------------------
-//
-void CXnHitTest::RemoveControl( CXnControlAdapter* aControl )
-    {
-    TInt index( iHitRegion.Find( aControl ) );
-
-    if ( index != KErrNotFound )
-        {
-        iHitRegion.Remove( index );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CXnHitTest::SetFlags()
-// -----------------------------------------------------------------------------
-//
-void CXnHitTest::SetFlags( const TInt aFlags )
-    {
-    iFlags |= aFlags;
-    }
-
-// -----------------------------------------------------------------------------
-// CXnHitTest::ClearFlags()
-// -----------------------------------------------------------------------------
-//
-void CXnHitTest::ClearFlags( const TInt aFlags )
-    {
-    iFlags &= ~aFlags;
-    }
-
-// -----------------------------------------------------------------------------
-// CXnHitTest::Flags()
-// -----------------------------------------------------------------------------
-//
-TInt CXnHitTest::Flags() const
-    {
-    return iFlags;
-    }
-
-// -----------------------------------------------------------------------------
-// CXnHitTest::Flush()
-// -----------------------------------------------------------------------------
-//
-void CXnHitTest::Flush()
-    {
-    iFlags = 0;
-
-    iHitRegion.Reset();
-    }
-
-// -----------------------------------------------------------------------------
-// CXnHitTest::HitRegionCount()
-// -----------------------------------------------------------------------------
-//
-TInt CXnHitTest::HitRegionCount() const
-    {
-    return iHitRegion.Count();
-    }
-
-// -----------------------------------------------------------------------------
-// CXnHitTest::HitRegion()
-// -----------------------------------------------------------------------------
-//
-CXnControlAdapter* CXnHitTest::HitRegion() const
-    {
-    TInt count( HitRegionCount() );
-
-    if ( count > 0 )
-        {
-        return iHitRegion[count - 1];
-        }
-
-    return NULL;
-    }
-
-// -----------------------------------------------------------------------------
-// CXnHitTest::PointerEvent()
-// -----------------------------------------------------------------------------
-//
-const TPointerEvent& CXnHitTest::PointerEvent() const
-    {
-    return iPointerEvent;
-    }
-
-// End of file
--- a/idlehomescreen/xmluirendering/uiengine/src/xnkeyeventdispatcher.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnkeyeventdispatcher.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -192,6 +192,9 @@
         CCoeControl* destination = reinterpret_cast< CCoeControl* >( handle );        
                                        
         TPointerEvent& event( *aEvent.Pointer() );
+        
+        // Store event
+        iPointerEvent = *aEvent.Pointer();
                 
         if ( iCbaContainer )
             {
@@ -225,6 +228,16 @@
     }
 
 // -----------------------------------------------------------------------------
+// CXnKeyEventDispatcher::PointerEvent()
+//
+// -----------------------------------------------------------------------------
+//
+const TPointerEvent& CXnKeyEventDispatcher::PointerEvent() const
+    {
+    return iPointerEvent;
+    }
+
+// -----------------------------------------------------------------------------
 // CXnKeyEventDispatcher::OfferKeyEventL
 // Handles key events.
 // -----------------------------------------------------------------------------
@@ -234,9 +247,7 @@
     TEventCode aType )
     {
     TKeyResponse resp( EKeyWasNotConsumed );
-    
-    iEventCode = aType;
-    
+           
     CXnNode* node( NULL );
     
     TBool keyYesNoApps( EFalse );
@@ -249,7 +260,7 @@
         // When menu is focused or LSK/RSK is pressed,
         // then forward events to menuadapter.
         // Note that MSK is handled directly in the base class as it used only
-        // for activating
+        // for activation
         node = iMenuNode;
         }
     else if ( aKeyEvent.iScanCode == EStdKeyApplication0 ||
@@ -259,8 +270,9 @@
         keyYesNoApps = ETrue;
         
         iFocusChanged = EFalse;
+        
         // AppsKey, YesKey, NoKey events must be always handled, and if we don't
-        // have a focused node, then let the view node do the job
+        // have a focused node, then let the view handle the event
         node = ( !iNode ) ? iUiEngine.ActiveView() : iNode;
         }
     else
@@ -309,6 +321,10 @@
         
         if ( editmode->OfferKeyEventL( aKeyEvent, aType ) == EKeyWasConsumed )
             {
+            iFocusChanged = EFalse;
+            iKeyEventNode = NULL;
+            iEventCode = EEventNull;
+            
             return EKeyWasConsumed;
             }
         
@@ -324,8 +340,7 @@
 
         if ( iFocusChanged && ( aType == EEventKeyUp ) )
             {
-            // Pass keyup event to
-            // previously focused node
+            // Pass keyup event to the previously focused node            
             node = iKeyEventNode;
             }
         }
@@ -336,7 +351,9 @@
             {    
             // We are waiting for down event
             return resp;
-            }        
+            }
+        
+        iEventCode = aType;
         }
         
     if ( !node )
--- a/idlehomescreen/xmluirendering/uiengine/src/xnnodeimpl.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnnodeimpl.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -43,7 +43,6 @@
 #include "xneditmode.h"
 #include "xneditor.h"
 #include "xntext.h"
-#include "xnhittest.h"
 #include "xnscrollablecontroladapter.h"
 #include "xnviewdata.h"
 #include "xnrootdata.h"
@@ -266,8 +265,6 @@
     CXnDomNode& aEventNode, CXnDomNode& aTriggerNode, CXnNode& aEventData );
 static void RunFullScreenEffectL(
     CXnUiEngine& aEngine, CXnDomNode& aEventNode );
-static void RunActivateViewL(
-    CXnNodeImpl* aThis, CXnUiEngine& aEngine, CXnDomNode& aEventNode );
 static void RunActivateNextViewL( CXnUiEngine& aEngine, CXnDomNode& aEventNode );
 static void RunActivatePreviousViewL( CXnUiEngine& aEngine, CXnDomNode& aEventNode );
 static void RunAddViewL( CXnUiEngine& aEngine, CXnDomNode& aEventNode );
@@ -2773,39 +2770,6 @@
     }
 
 // -----------------------------------------------------------------------------
-// RunActivateViewL
-// -----------------------------------------------------------------------------
-//
-static void RunActivateViewL(
-    CXnNodeImpl* aThis,
-    CXnUiEngine& aEngine,
-    CXnDomNode& aEventNode )
-    {
-    CXnDomList& children( aEventNode.ChildNodes() );
-
-    TInt count( children.Length() );
-
-    for ( TInt i = 0; i < count; ++i )
-        {
-        CXnDomNode* node = static_cast< CXnDomNode* >( children.Item( i ) );
-
-        const TDesC8& type( node->Name() );
-
-        if ( type == XnPropertyNames::action::KProperty )
-            {
-            const TDesC8& id( node->AttributeValue( XnPropertyNames::action::KValue ) );
-
-            CXnNode* viewNode( aEngine.FindNodeByIdL( id, aThis->Namespace() ) );
-
-            if ( viewNode )
-                {
-                aEngine.ActivateViewL( *viewNode );
-                }
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
 // RunActivateNextViewL
 // -----------------------------------------------------------------------------
 //
@@ -3560,7 +3524,8 @@
 
                     if ( menuIf )
                         {
-                        menuIf->TryDisplayingMenuBarL( *menuId );
+                        aEngine.Editor()->SetTargetPlugin( aEngine.FocusedNode() );
+                        menuIf->TryDisplayingMenuBarL( *menuId, EFalse );
                         }
 
                     CleanupStack::PopAndDestroy( menuId );
@@ -3947,10 +3912,6 @@
         {
         RunRemoveViewL( aEngine, aEventNode );
         }
-    else if ( nameString == XnPropertyNames::action::event::KActivateView )
-        {
-        RunActivateViewL( aThis, aEngine, aEventNode );
-        }
     else if ( nameString == XnPropertyNames::action::event::KActivate )
         {
         RunActivateL( aThis, aEngine, aEventNode );
--- a/idlehomescreen/xmluirendering/uiengine/src/xnpointarray.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Array of points
-*
-*/
-
-#include "xnpointarray.h"
-
-using namespace XnGestureHelper;
-
-// ----------------------------------------------------------------------------
-// TXnPointArray constructor
-// ----------------------------------------------------------------------------
-//
-TXnPointArray::TXnPointArray( const RArray< TXnPointEntry >& aPoints )
-    : iPoints( aPoints )
-    {
-    }
-
-// ----------------------------------------------------------------------------
-// TXnPointArray length
-// ----------------------------------------------------------------------------
-//
-TInt TXnPointArray::Count() const
-    {
-    return iPoints.Count();
-    }
-
-// ----------------------------------------------------------------------------
-// point at index, no filtering
-// ----------------------------------------------------------------------------
-//
-TPoint TXnPointArray::operator[]( TInt aIndex ) const
-    {
-    return iPoints[aIndex].iPos;
-    }
-
-// ----------------------------------------------------------------------------
-// Unfiltered point at index
-// ----------------------------------------------------------------------------
-//
-const TPoint& TXnPointArray::Raw( TInt aIndex ) const
-    {
-    return iPoints[aIndex].iPos;
-    }
--- a/idlehomescreen/xmluirendering/uiengine/src/xnpopupcontroladapter.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnpopupcontroladapter.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -24,6 +24,8 @@
 
 // User includes
 #include "xnappuiadapter.h"
+#include "xnviewadapter.h"
+#include "xnkeyeventdispatcher.h"
 #include "xnviewmanager.h"
 #include "xnviewdata.h"
 #include "xnplugindata.h"
@@ -35,7 +37,6 @@
 #include "xntype.h"
 #include "xnuiengine.h"
 #include "xneditor.h"
-#include "xnhittest.h"
 #include "xnfocuscontrol.h"
 
 #include "xnpopupcontroladapter.h"
@@ -165,6 +166,8 @@
             }
         }        
 
+    iUiEngine->Editor()->SetTargetPlugin( NULL );
+    
     iMenuItems.Reset();
     iCommandId = 0;
     
@@ -197,13 +200,18 @@
 void CXnPopupControlAdapter::TryDisplayingStylusPopupL( CXnNode& aPlugin )
     {
     HideMenuL();
+    
     CXnViewManager* manager( iUiEngine->ViewManager() );            
     CXnPluginData* plugin( manager->ActiveViewData().Plugin( &aPlugin ) );
+    
     if ( !plugin )
         {
         return;
         }
-    TPointerEvent event( iUiEngine->HitTest().PointerEvent() );
+    
+    CXnViewAdapter& adapter( iUiEngine->AppUiAdapter().ViewAdapter() );
+    
+    const TPointerEvent& event( adapter.EventDispatcher()->PointerEvent() );
     
     delete iStylusPopupMenu;
     iStylusPopupMenu = NULL;
--- a/idlehomescreen/xmluirendering/uiengine/src/xnpropertysubscriber.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnpropertysubscriber.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -85,7 +85,7 @@
 //
 void CXnPropertySubscriber::DoCancel()
     {
-    iProperty.Close();
+    iProperty.Cancel();
     }
 
 // -----------------------------------------------------------------------------
@@ -103,3 +103,14 @@
         iPropertyChangeObserver.PropertyChangedL( iKey, intValue );
         }
     }
+
+// ---------------------------------------------------------
+// ---------------------------------------------------------
+//
+TInt CXnPropertySubscriber::RunError(TInt /*aError*/)
+    {   
+    return KErrNone;
+    }
+
+// End of file
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnspbgcleaner.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -0,0 +1,137 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* statuspane's background cleaner implementation
+*
+*/
+
+// System includes
+#include <e32base.h>
+#include <w32std.h>
+#include <AknUtils.h>
+
+// User includes
+#include "xnspbgcleaner.h"
+
+// CONSTANTS
+
+// ============================ LOCAL FUNCTIONS ================================
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// ---------------------------------------------------------
+// CXnSpBgCleaner::NewL
+// ---------------------------------------------------------
+//
+CXnSpBgCleaner* CXnSpBgCleaner::NewL()
+    {
+    CXnSpBgCleaner* self = CXnSpBgCleaner::NewLC();
+    CleanupStack::Pop(); // self;
+    return self;
+    }
+
+// ---------------------------------------------------------
+// CXnSpBgCleaner::NewLC
+// ---------------------------------------------------------
+//
+CXnSpBgCleaner* CXnSpBgCleaner::NewLC()
+    {
+    CXnSpBgCleaner* self = new ( ELeave ) CXnSpBgCleaner();
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    return self;
+    }
+
+// ---------------------------------------------------------
+// CXnSpBgCleaner::CXnSpBgCleaner
+// ---------------------------------------------------------
+//
+CXnSpBgCleaner::CXnSpBgCleaner()
+    {
+    }
+
+// ---------------------------------------------------------
+// CXnSpBgCleaner::ConstructL
+// ---------------------------------------------------------
+//
+void CXnSpBgCleaner::ConstructL()
+    {
+    CreateWindowL();
+    
+    TRect statusPaneRect;
+    AknLayoutUtils::LayoutMetricsRect(
+        AknLayoutUtils::EStatusPane, statusPaneRect );
+    
+    SetRect( statusPaneRect );
+    SetNonFocusing();
+
+    Window().SetOrdinalPosition( -1 );
+    Window().SetBackgroundColor( TRgb::Color16MA(0) );
+    Window().SetVisible( ETrue );    
+    
+    ActivateL();
+    }
+
+// ---------------------------------------------------------
+// CXnSpBgCleaner::~CXnSpBgCleaner
+// ---------------------------------------------------------
+//
+CXnSpBgCleaner::~CXnSpBgCleaner()
+    {
+    }
+
+// ---------------------------------------------------------
+// CXnSpBgCleaner::SizeChanged
+// ---------------------------------------------------------
+//
+void CXnSpBgCleaner::SizeChanged()
+    {
+    CCoeControl::SizeChanged();
+    DrawDeferred();
+    }
+
+// ---------------------------------------------------------
+// CXnSpBgCleaner::Draw
+// ---------------------------------------------------------
+//
+void CXnSpBgCleaner::Draw( const TRect& /*aRect*/ ) const
+    {
+    CWindowGc& gc = SystemGc();
+    TRgb color( TRgb::Color16MA(0) );
+    gc.SetPenColor( color );
+    gc.SetBrushColor( color );    
+    gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
+    gc.SetPenStyle(CGraphicsContext::ESolidPen );
+    gc.SetBrushStyle(CGraphicsContext::ESolidBrush );
+    gc.Clear();
+    }
+
+// ---------------------------------------------------------
+// CXnSpBgCleaner::HandleResourceChange
+// ---------------------------------------------------------
+//
+void CXnSpBgCleaner::HandleResourceChange( TInt aType )
+    {
+    CCoeControl::HandleResourceChange( aType );
+    
+    if ( KEikDynamicLayoutVariantSwitch == aType )
+        {
+        TRect statusPaneRect;
+        AknLayoutUtils::LayoutMetricsRect(
+            AknLayoutUtils::EStatusPane, statusPaneRect );
+        SetRect( statusPaneRect );
+        }
+    }
+
+// End of file
--- a/idlehomescreen/xmluirendering/uiengine/src/xnuiengine.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnuiengine.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -264,15 +264,6 @@
     }
 
 // -----------------------------------------------------------------------------
-// CXnUiEngine::ActivateViewL
-// Activate a view
-// -----------------------------------------------------------------------------
-//
-void CXnUiEngine::ActivateViewL( CXnNode& /*aViewNode*/ )
-    {    
-    }
-
-// -----------------------------------------------------------------------------
 // CXnUiEngine::ViewManager
 // -----------------------------------------------------------------------------
 //
@@ -498,15 +489,6 @@
     }
 
 // -----------------------------------------------------------------------------
-// CXnUiEngine::HitTest
-// -----------------------------------------------------------------------------
-//
-CXnHitTest& CXnUiEngine::HitTest() const
-    {
-    return iUiEngineImpl->HitTest();
-    }
-
-// -----------------------------------------------------------------------------
 // CXnUiEngine::GetThemeResource
 // -----------------------------------------------------------------------------
 //
--- a/idlehomescreen/xmluirendering/uiengine/src/xnuiengine.rss	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnuiengine.rss	Wed Apr 14 15:47:59 2010 +0300
@@ -185,4 +185,24 @@
     buf = qtn_hs_operation_failed_no_disk; 
     }
 
+RESOURCE DIALOG r_backup_restore_wait_dialog
+    {
+    flags = EAknWaitNoteFlags;
+    buttons = R_AVKON_SOFTKEYS_EMPTY;
+    items =
+        {
+        DLG_LINE
+            {
+            type = EAknCtNote;
+            id = EGeneralNote;
+            control= AVKON_NOTE
+                {
+                layout = EWaitLayout;
+                singular_label = qtn_hs_backup_use_prevented;
+                animation = R_QGN_GRAF_WAIT_BAR_ANIM;
+                };
+            }
+        };
+    }
+
 // End of file
--- a/idlehomescreen/xmluirendering/uiengine/src/xnuiengineappif.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnuiengineappif.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -197,16 +197,6 @@
     }
 
 // -----------------------------------------------------------------------------
-// TXnUiEngineAppIf::ActivateViewL
-// Activate a view
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void TXnUiEngineAppIf::ActivateViewL( CXnNodeAppIf& aViewNode )
-    {
-    iUiEngine->ActivateViewL( aViewNode.Node() );
-    }
-
-// -----------------------------------------------------------------------------
 // TXnUiEngineAppIf::ActiveView
 // Return the active view
 // -----------------------------------------------------------------------------
--- a/idlehomescreen/xmluirendering/uiengine/src/xnuiengineimpl.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnuiengineimpl.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -51,7 +51,6 @@
 #include "xndomdocument.h"
 #include "xndomnode.h"
 #include "xneditmode.h"
-#include "xnhittest.h"
 #include "xnnode.h"
 #include "xnpanic.h"
 #include "xneffectmanager.h"
@@ -8067,9 +8066,7 @@
 void CXnUiEngineImpl::ConstructL()
     {                  
     iEditMode = CXnEditMode::NewL( *iUiEngine );
-
-    iHitTest = CXnHitTest::NewL();
-
+   
     iCurrentGraphicsDevice = CCoeEnv::Static()->ScreenDevice();
 
     // Update the units here, even the refence client rect is only a quess.
@@ -8104,7 +8101,6 @@
     iViewManager.RemoveObserver( *this );
            
     delete iEditMode;
-    delete iHitTest;
 
     iFocusCandidateList.Reset();
 
@@ -8291,7 +8287,15 @@
                         {
                         AddToRedrawListL( node, rect );
                         
-                        adapter->SetRect( rect );
+                        // popup calculates its position based on _s60-position-hint property
+                        if( node->Type()->Type() == KPopUpNodeName )
+                            {
+                            adapter->DoHandlePropertyChangeL();
+                            }
+                        else
+                            {
+                            adapter->SetRect( rect );                        
+                            }
                         CXnProperty* prop = node->GetPropertyL(
                             XnPropertyNames::common::KSizeAware );
                         if ( prop && prop->StringValue() ==
@@ -9669,15 +9673,6 @@
     }
 
 // -----------------------------------------------------------------------------
-// CXnUiEngineImpl::HitTest
-// -----------------------------------------------------------------------------
-//
-CXnHitTest& CXnUiEngineImpl::HitTest() const
-    {
-    return *iHitTest;
-    }
-
-// -----------------------------------------------------------------------------
 // CXnUiEngineImpl::GetThemeResource
 // -----------------------------------------------------------------------------
 //
@@ -9882,11 +9877,15 @@
 // -----------------------------------------------------------------------------
 void CXnUiEngineImpl::HandlePartialTouchInputL( CXnNode& aNode, TBool aEnable )
     {
+    CXnNode* editorplugin = FindPlugin( aNode );
+    if ( !editorplugin )
+        {
+        User::Leave( KErrNotFound );
+        }
+    
     DisableRenderUiLC();
-    CXnNode* editorplugin = FindPlugin( aNode );
-
-    if ( aEnable ) 
-    
+
+    if ( aEnable )    
         {        
         iSplitScreenState.iPartialScreenOpen = ETrue;           
         iSplitScreenState.iPartialScreenEditorNode = &aNode;           
@@ -9896,6 +9895,25 @@
             iViewManager.ActiveViewData().ViewNode()->Control() );            
                    
         control->ResetGrabbing();  
+         
+        // Block progression must be bottom-to-top when partial screen is open
+        // Previous value needs to be stored first
+        CXnProperty* prop( 
+                editorplugin->Parent()->GetPropertyL( 
+                        XnPropertyNames::style::common::KBlockProgression ) );                
+        if ( prop )
+            {
+            iSplitScreenState.iPartialScreenBlock = &prop->StringValue();
+            }
+        else
+            {
+            iSplitScreenState.iPartialScreenBlock = 
+                    &XnPropertyNames::style::common::block_progression::KTB();
+            }
+
+        SetPartialScreenBlockProgressionL( 
+                editorplugin->Parent(), 
+                XnPropertyNames::style::common::block_progression::KBT );
 
         // Hide all plugins except the one that contains given editor node
         RPointerArray< CXnNode >& plugins( *Plugins() );                   
@@ -9907,13 +9925,6 @@
                 SetNodeVisibleL(pluginNode, EFalse);
                 }      
              }
-         
-        // Block progression must be bottom-to-top when partial screen is open
-        // Previous value needs to be stored first
-        StorePartialScreenBlockProgressionL();
-           
-        SetPartialScreenBlockProgressionL( 
-            XnPropertyNames::style::common::block_progression::KBT );
         
         // Hide statuspane
         iAppUiAdapter.StatusPane()->MakeVisible( EFalse );
@@ -9922,30 +9933,23 @@
     else
         { 
         // Show plugin nodes again
-        RPointerArray< CXnNode >& plugins( *Plugins() );                   
+        RPointerArray< CXnNode >& plugins( *Plugins() );
 
         for( TInt i=0; i<plugins.Count(); i++ )
            {           
-           CXnNode* pluginNode = plugins[i];               
+           CXnNode* pluginNode = plugins[i];
            
            if ( pluginNode != editorplugin )
                 {
                 SetNodeVisibleL(pluginNode, ETrue);
-                }           
+                }
            }
-            
-        if( iSplitScreenState.iPartialScreenBlock == NULL )
-            {
-            SetPartialScreenBlockProgressionL( 
-                        XnPropertyNames::style::common::block_progression::KTB );
-            }
-        else
-            {
-            SetPartialScreenBlockProgressionL(iSplitScreenState.iPartialScreenBlock->Des());
-            delete iSplitScreenState.iPartialScreenBlock; 
-            iSplitScreenState.iPartialScreenBlock = NULL;
-            }
+
+        SetPartialScreenBlockProgressionL( 
+                editorplugin->Parent(),
+                *iSplitScreenState.iPartialScreenBlock );
         
+        iSplitScreenState.iPartialScreenBlock = NULL;
         iSplitScreenState.iPartialScreenEditorNode = NULL;
         iSplitScreenState.iPartialScreenOpen = EFalse;
                  
@@ -10096,59 +10100,23 @@
 // -----------------------------------------------------------------------------
 // SetPartialScreenBlockProgressionL
 // -----------------------------------------------------------------------------
-void CXnUiEngineImpl::SetPartialScreenBlockProgressionL( const TDesC8& aBlockProgression )
-    {
-    CXnNode* plugin = FindPlugin( *iSplitScreenState.iPartialScreenEditorNode );
-    CXnNode* parent( NULL );    
-    if( plugin )
-        {
-        parent = plugin->Parent();
-        }
-    
-    CXnDomStringPool* sp( iUiEngine->ODT()->DomDocument().StringPool());   
-    if(parent)
-        {
+void CXnUiEngineImpl::SetPartialScreenBlockProgressionL( 
+        CXnNode* aParent, const TDesC8& aBlockProgression )
+    {
+    CXnDomStringPool* sp( iUiEngine->ODT()->DomDocument().StringPool());
+    if( aParent && sp )
+        {        
         CXnProperty* block_progression = CXnProperty::NewL(
-        XnPropertyNames::style::common::KBlockProgression,
-        aBlockProgression,
-        CXnDomPropertyValue::EString, *sp );
-        
-        CleanupStack::PushL( block_progression );            
-        parent->SetPropertyL(block_progression);            
-        CleanupStack::Pop( block_progression );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// SetPartialScreenBlockProgressionL
-// -----------------------------------------------------------------------------
-void CXnUiEngineImpl::StorePartialScreenBlockProgressionL()
-    {    
-    CXnNode* parent = iSplitScreenState.iPartialScreenEditorNode->Parent();
-    
-    if(parent)
-        {
-        CXnProperty* blocProgressionProperty( 
-          parent->GetPropertyL( XnPropertyNames::style::common::KBlockProgression ) );               
-        if ( !blocProgressionProperty )
-            {
-            User::Leave( KErrNotFound );
-            }
-        HBufC* blocProgressionValue (blocProgressionProperty->StringValueL());
-        if ( !blocProgressionValue )
-            {
-            User::Leave( KErrNotFound );
-            }
-        CleanupStack::PushL( blocProgressionValue );
-        if(iSplitScreenState.iPartialScreenBlock)
-            {
-            delete iSplitScreenState.iPartialScreenBlock;
-            iSplitScreenState.iPartialScreenBlock = NULL;
-            }
-        iSplitScreenState.iPartialScreenBlock =
-                CnvUtfConverter::ConvertFromUnicodeToUtf8L(blocProgressionValue->Des() );
-        CleanupStack::PopAndDestroy( blocProgressionValue );
-        }    
+                XnPropertyNames::style::common::KBlockProgression,
+                aBlockProgression,
+                CXnDomPropertyValue::EString, *sp );
+        if ( block_progression )
+            {
+            CleanupStack::PushL( block_progression );            
+            aParent->SetPropertyL(block_progression);            
+            CleanupStack::Pop( block_progression );
+            }
+        }
     }
 
 // -----------------------------------------------------------------------------
--- a/idlehomescreen/xmluirendering/uiengine/src/xnuienginepluginif.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnuienginepluginif.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -28,7 +28,6 @@
 #include "xneditor.h"
 #include "xnviewdata.h"
 #include "xndomnode.h"
-#include "xnhittest.h"
 #include "xnpanic.h"
 
 // ============================ MEMBER FUNCTIONS ===============================
@@ -182,15 +181,6 @@
     }
 
 // -----------------------------------------------------------------------------
-// TXnUiEnginePluginIf::RestorePreviousFocusedNode
-// Forwards the call to the ui engine implementation
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void TXnUiEnginePluginIf::RestorePreviousFocusedNode()
-    {    
-    }
-
-// -----------------------------------------------------------------------------
 // TXnUiEnginePluginIf::StringPool
 // Forwards the call to the ui engine implementation
 // -----------------------------------------------------------------------------
@@ -245,16 +235,6 @@
     }
 
 // -----------------------------------------------------------------------------
-// TXnUiEnginePluginIf::ActivateViewL
-// Activate a view
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void TXnUiEnginePluginIf::ActivateViewL( CXnNodePluginIf& aViewNode )
-    {
-    iUiEngine->ActivateViewL( aViewNode.Node() );
-    }
-
-// -----------------------------------------------------------------------------
 // TXnUiEnginePluginIf::ScreenDeviceSize
 // Get the size of the current screen device
 // -----------------------------------------------------------------------------
@@ -330,35 +310,8 @@
     }
 
 // -----------------------------------------------------------------------------
-// TXnUiEnginePluginIf::HitRegion
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CXnControlAdapter* TXnUiEnginePluginIf::HitRegion() const
-    {
-    return iUiEngine->HitTest().HitRegion();
-    }
-
-// -----------------------------------------------------------------------------
-// TXnUiEnginePluginIf::DeactivateFocusedNodeL
-// Deactivates focused node
-// -----------------------------------------------------------------------------
+// TXnUiEnginePluginIf::PluginNodeL
 //
-EXPORT_C void TXnUiEnginePluginIf::DeactivateFocusedNodeL()
-    {    
-    }
-
-// -----------------------------------------------------------------------------
-// TXnUiEnginePluginIf::ShowFocus
-// Queries wheter focus is visible
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool TXnUiEnginePluginIf::ShowFocus()
-    {
-    return EFalse;
-    }
-
-// -----------------------------------------------------------------------------
-// TXnUiEnginePluginIf::PluginNodeL
 // -----------------------------------------------------------------------------
 //
 EXPORT_C CXnNodePluginIf& TXnUiEnginePluginIf::PluginNodeL(
@@ -393,44 +346,6 @@
     }
 
 // -----------------------------------------------------------------------------
-// TXnUiEnginePluginIf::SetFocusVisibleL
-// Sets focus visibility of active view
-// -----------------------------------------------------------------------------
-//               
-EXPORT_C void TXnUiEnginePluginIf::SetFocusVisibleL( TBool /*aVisible*/ )
-    {    
-    }
-
-// -----------------------------------------------------------------------------
-// TXnUiEnginePluginIf::FocusVisible
-// Gets focus visibility of active view
-// -----------------------------------------------------------------------------
-//               
-EXPORT_C TBool TXnUiEnginePluginIf::FocusVisible()
-    {    
-    return EFalse;    
-    }
-
-// -----------------------------------------------------------------------------
-// TXnUiEnginePluginIf::EnableSwipeL
-// Sets swipe enabled or disabled
-// -----------------------------------------------------------------------------
-//               
-EXPORT_C void TXnUiEnginePluginIf::EnableSwipeL( TBool /*aEnable*/ )
-    {    
-    }
-
-// -----------------------------------------------------------------------------
-// TXnUiEnginePluginIf::SwipeEnabledL
-// queries whether swipe is enabled or not
-// -----------------------------------------------------------------------------
-//               
-EXPORT_C TBool TXnUiEnginePluginIf::SwipeEnabledL()
-    {    
-    return EFalse;    
-    }
-
-// -----------------------------------------------------------------------------
 // TXnUiEnginePluginIf::DisableRenderUiLC
 // 
 // -----------------------------------------------------------------------------
@@ -461,6 +376,5 @@
     return iUiEngine->IsTextEditorActive();
     }
 
-
 // End of file
 
--- a/idlehomescreen/xmluirendering/uiengine/src/xnviewadapter.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnviewadapter.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -367,6 +367,8 @@
     
     iFlags.Set( EIsActivated );
     
+    // State must be cleared before adding to stack
+    iEventDispatcher->ClearStateL();
     iAppUiAdapter.AddToStackL( *this, iEventDispatcher );
 
     // enable statuspane transparancy 
@@ -484,18 +486,20 @@
 // -----------------------------------------------------------------------------
 //
 void CXnViewAdapter::ActivateContainerL( CXnViewData& aContainer, 
-    TBool aEnterEditState )
-    {   
-    if ( iContainer == &aContainer || iFlags.IsSet( EIsDestructionRunning ) )   
-        {            
+    TBool aEnterEditState, TBool aForceActivation )
+    {
+    // Returns if the container remains the same and activation is not forced
+    // Otherwise the old container is deactivated and the new is activated
+    if ( iFlags.IsSet( EIsDestructionRunning ) ||
+        ( ( !aForceActivation ) &&  ( iContainer == &aContainer ) ) )
+        {
         return;
         }
 
+    // Find previous container and then deactivate it
     const CXnViewData* previous( iContainer );
-    
-    // Deactivate previous
     DeactivateContainerL();
-    
+
     if ( iFlags.IsClear( EIsActivated ) )
         {
         // Some other view than this in this appui is currently active,
@@ -569,17 +573,15 @@
         return;
         }    
     
-    // Deactivate container even though it hasn't changed to close all popups
-    // and other windows
-    DeactivateContainerL();
-    
     // first view is default
     CXnViewData* viewData = static_cast<CXnViewData*>( views[0] );
     
     if ( viewData )
         {
         EnterEditStateL( *viewData, aEnterEditState );
-        ActivateContainerL( *viewData, aEnterEditState );
+        // Deactivate container even though it hasn't changed to close all 
+        // popups and other windows
+        ActivateContainerL( *viewData, aEnterEditState, ETrue );
         }
     }
 
--- a/idlehomescreen/xmluirendering/uiengine/src/xnviewcontroladapter.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnviewcontroladapter.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -59,9 +59,9 @@
 //
 void CXnViewControlAdapter::ConstructL( CXnNodePluginIf& aNode )
     {
+    CreateWindowL();
+    
     CXnControlAdapter::ConstructL( aNode );
-            
-    CreateWindowL();
 
     if( Window().SetTransparencyAlphaChannel() == KErrNone )      
         {       
--- a/idlehomescreen/xmluirendering/uiengine/src/xnviewmanager.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnviewmanager.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -277,9 +277,7 @@
 // -----------------------------------------------------------------------------
 //
 CXnViewManager::~CXnViewManager()
-    {
-    delete iUiStartupPhase;
-    
+    {        
     delete iStabilityTimer;
     
     iObservers.Reset();
@@ -304,33 +302,6 @@
     }
 
 // -----------------------------------------------------------------------------
-// CXnViewManager::PropertyChangedL()
-// 
-// -----------------------------------------------------------------------------
-//
-void CXnViewManager::PropertyChangedL( const TUint32 aKey, const TInt aValue )
-    {
-    if ( aKey == KPSStartupUiPhase && aValue == EStartupUiPhaseAllDone )
-        {
-	    iUiStartupPhaseAllDone = ETrue;
-				
-        iAppUiAdapter.ViewAdapter().ActivateContainerL( ActiveViewData() );    
-        }
-    
-    iUiStartupPhaseAllDone = ETrue;
-    }
-
-// -----------------------------------------------------------------------------
-// CXnViewManager::UiStartupPhaseAllDone()
-// 
-// -----------------------------------------------------------------------------
-//
-TBool CXnViewManager::UiStartupPhaseAllDone() const
-    {
-    return iUiStartupPhaseAllDone;        
-    }
-    
-// -----------------------------------------------------------------------------
 // CXnViewManager::ConstructL()
 // 2nd phase constructor
 // -----------------------------------------------------------------------------
@@ -374,14 +345,8 @@
            
     CleanupStack::PopAndDestroy(); // DisableRenderUiLC();
     
-    // Determine UI startup phase
-    delete iUiStartupPhase;
-    iUiStartupPhase = NULL;
-    
-    iUiStartupPhaseAllDone = EFalse;
-                   
-    iUiStartupPhase = CXnPropertySubscriber::NewL( 
-        KPSUidStartup, KPSStartupUiPhase, *this );
+    // Activate initial view already here to get publishers loaded        
+    ActiveViewData().SetActive( ETrue );    
     }
 
 // -----------------------------------------------------------------------------
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnwaitdialog.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -0,0 +1,59 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies)..
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* implementation of wait dialog that doesn't consume key events.
+*
+*/
+
+// System includes
+
+// User includes
+#include "xnwaitdialog.h"
+
+// CONSTANTS
+
+// ============================ LOCAL FUNCTIONS ================================
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// ---------------------------------------------------------------------------
+// CXnWaitDialog::CXnWaitDialog
+// ---------------------------------------------------------------------------
+//
+CXnWaitDialog::CXnWaitDialog( CEikDialog** aSelfPtr,
+                              TBool aVisibilityDelayOff )
+  : CAknWaitDialog( aSelfPtr, aVisibilityDelayOff )
+  {
+  }
+
+// ---------------------------------------------------------------------------
+// CXnWaitDialog::~CXnWaitDialog
+// ---------------------------------------------------------------------------
+//
+CXnWaitDialog::~CXnWaitDialog()
+  {
+  }
+
+// ---------------------------------------------------------------------------
+// CXnWaitDialog::OfferKeyEventL
+// ---------------------------------------------------------------------------
+//
+TKeyResponse CXnWaitDialog::OfferKeyEventL( 
+        const TKeyEvent& /*aKeyEvent*/,
+        TEventCode /*aType*/ )
+  {
+  return EKeyWasConsumed; // consume all keys while open
+  }
+
+// End of file
--- a/idlehomescreen/xmluirendering/uiengine/src/xnwallpaperview.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnwallpaperview.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -37,6 +37,7 @@
 #include "xnbackgroundmanager.h"
 #include "xneffectmanager.h"
 #include "xnviewmanager.h"
+#include "xnspbgcleaner.h"
 
 // Constants
 _LIT( KResourceDrive, "z:" );
@@ -100,7 +101,8 @@
     {    
     CCoeEnv::Static()->DeleteResourceFile( iResourceOffset );    
     
-    delete iContainer;    
+    delete iContainer;
+    delete iXnSpBgCleaner;
     delete iTimer;
     }
 
@@ -123,15 +125,22 @@
     // switch layout 
     CEikStatusPane* sp( iAppUi.StatusPane() );
     
+    // setup status pane layout
     sp->SwitchLayoutL( R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT );
+    // apply changes 
     sp->ApplyCurrentSettingsL();
-            
     // disable transparancy
-    if ( sp->IsTransparent() )
+    sp->EnableTransparent( EFalse );
+    
+    // create background cleaner for sp
+    if ( !iXnSpBgCleaner )
         {
-        sp->EnableTransparent( EFalse );
+        iXnSpBgCleaner = CXnSpBgCleaner::NewL();
+        AppUi()->AddToStackL( *this, iXnSpBgCleaner );
         }
-    
+
+    // update sp
+    iXnSpBgCleaner->DrawNow();
     sp->DrawNow();
     
     // update cba
@@ -181,6 +190,13 @@
         iContainer = NULL;
         }
     
+    if ( iXnSpBgCleaner )
+        {
+        AppUi()->RemoveFromStack( iXnSpBgCleaner );
+        delete iXnSpBgCleaner;
+        iXnSpBgCleaner = NULL;
+        }
+
     iAppUi.EffectManager()->UiRendered();
     }
 
--- a/idlehomescreen/xmluirendering/uiengine/src/xnwidgetextensionadapter.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnwidgetextensionadapter.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -19,16 +19,15 @@
 #include <coecntrl.h>
 #include <coemain.h>
 #include <AknUtils.h>
+#include <gfxtranseffect/gfxtranseffect.h>
+#include <akntransitionutils.h>
 
 // User includes
 #include "xnwidgetextensionadapter.h"
 #include "xncontroladapter.h"
-
 #include "xncomponentnodeimpl.h"
 #include "xncomponent.h"
-
 #include "xnuiengine.h"
-#include "xnhittest.h"
 
 #include "xnnode.h"
 #include "xnnodepluginif.h"
@@ -46,9 +45,6 @@
 #include "xnviewdata.h"
 #include "xnplugindata.h"
 
-#include <gfxtranseffect/gfxtranseffect.h>
-#include <akntransitionutils.h>
-
 // Constants
 _LIT8( KPopup, "popup" );
 _LIT8( KPositionHint, "_s60-position-hint" );
@@ -215,60 +211,9 @@
     
     if ( aVisible && iPopup )
         {        
-        // read position-hint property and set-up its variable
-        CXnProperty* positionHintProp = NULL;
-        TRAP_IGNORE( positionHintProp = iNode.Node().GetPropertyL( KPositionHint ) );
-                   
-        if ( positionHintProp )
-            {
-            const TDesC8& displayHintVal = positionHintProp->StringValue();
-                    
-            if ( displayHintVal == XnPropertyNames::tooltip::positionhint::KAboveLeft )
-                {
-                iPositionHint = EAboveLeft;
-                }
-            else if ( displayHintVal == XnPropertyNames::tooltip::positionhint::KAboveRight )
-                {
-                iPositionHint = EAboveRight;
-                }
-            else if ( displayHintVal == XnPropertyNames::tooltip::positionhint::KBelowLeft )
-                {
-                iPositionHint = EBelowLeft;
-                }
-            else if ( displayHintVal == XnPropertyNames::tooltip::positionhint::KBelowRight )
-                {
-                iPositionHint = EBelowRight;
-                }
-            else if ( displayHintVal == XnPropertyNames::tooltip::positionhint::KRight )
-                {
-                iPositionHint = ERight;
-                }
-            else if ( displayHintVal == XnPropertyNames::tooltip::positionhint::KLeft )
-                {
-                iPositionHint = ELeft;
-                }
-            else 
-                {
-                 // if the value if of unknown type, use default one
-                 if ( AknLayoutUtils::LayoutMirrored() )
-                     {
-                     iPositionHint = EAboveRight;
-                     }
-                     else
-                     {
-                     iPositionHint = EAboveLeft; 
-                     }
-                 }
-        
-            if ( iPositionHint != ENone )
-                {    
-                // the popup is going visible and position-hind is available
-                // calculate its position
-                CalculatePosition();
-                }
-            }        
+        ChangePopupPosition();
         }
-
+    
     TBool effectStarted = EFalse;
     if ( iAppUiAdapter->IsForeground() )
         {
@@ -373,10 +318,88 @@
 //    
 void CXnWidgetExtensionAdapter::Draw( const TRect& aRect ) const
     {
+    SystemGc().Clear( aRect );
     CXnControlAdapter::Draw( aRect );
     }
 
 // -----------------------------------------------------------------------------
+// CXnWidgetExtensionAdapter::DoHandlePropertyChangeL
+// 
+// -----------------------------------------------------------------------------
+//    
+void CXnWidgetExtensionAdapter::DoHandlePropertyChangeL( CXnProperty* /*aProperty*/ )
+    {
+    if( iNode.Node().IsLaidOut() && IsVisible() )
+        {
+        ChangePopupPosition();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CXnWidgetExtensionAdapter::ChangePopupPosition
+// 
+// -----------------------------------------------------------------------------
+// 
+void CXnWidgetExtensionAdapter::ChangePopupPosition()
+    {
+    if ( iPopup )
+        { 
+        // read position-hint property and set-up its variable
+        CXnProperty* positionHintProp = NULL;
+        TRAP_IGNORE( positionHintProp = iNode.Node().GetPropertyL( KPositionHint ) );
+                   
+        if ( positionHintProp )
+            {
+            const TDesC8& displayHintVal = positionHintProp->StringValue();
+                    
+            if ( displayHintVal == XnPropertyNames::tooltip::positionhint::KAboveLeft )
+                {
+                iPositionHint = EAboveLeft;
+                }
+            else if ( displayHintVal == XnPropertyNames::tooltip::positionhint::KAboveRight )
+                {
+                iPositionHint = EAboveRight;
+                }
+            else if ( displayHintVal == XnPropertyNames::tooltip::positionhint::KBelowLeft )
+                {
+                iPositionHint = EBelowLeft;
+                }
+            else if ( displayHintVal == XnPropertyNames::tooltip::positionhint::KBelowRight )
+                {
+                iPositionHint = EBelowRight;
+                }
+            else if ( displayHintVal == XnPropertyNames::tooltip::positionhint::KRight )
+                {
+                iPositionHint = ERight;
+                }
+            else if ( displayHintVal == XnPropertyNames::tooltip::positionhint::KLeft )
+                {
+                iPositionHint = ELeft;
+                }
+            else 
+                {
+                 // if the value if of unknown type, use default one
+                 if ( AknLayoutUtils::LayoutMirrored() )
+                     {
+                     iPositionHint = EAboveRight;
+                     }
+                     else
+                     {
+                     iPositionHint = EAboveLeft; 
+                     }
+                 }
+        
+            if ( iPositionHint != ENone )
+                {    
+                // the popup is going visible and position-hind is available
+                // calculate its position
+                CalculatePosition();
+                }
+            }        
+        }
+    }
+
+// -----------------------------------------------------------------------------
 // CalculatePosition
 // This is used only for popup element with position hint
 // -----------------------------------------------------------------------------
@@ -385,8 +408,8 @@
     // widget's rectangle
     TRect controlRect;
 
-    // get popup's window size
-    TRect popupRect = this->Rect();
+    // get popup's size.
+    TSize popupSize = iNode.BorderRect().Size();
 
     TRect clientRect = static_cast<CEikAppUi&>( *iAppUiAdapter ).ClientRect();
 
@@ -434,16 +457,16 @@
             
             // if this position does not fit the screen,
             // and if below left is more suitable, use it
-            if ( spaceAbove < popupRect.Height() && spaceBelow > spaceAbove )
+            if ( spaceAbove < popupSize.iHeight && spaceBelow > spaceAbove )
                 {
                 rect = TRect( TPoint( controlRect.iTl.iX, controlRect.iBr.iY ), 
-                              TPoint( controlRect.iTl.iX + popupRect.Width(), controlRect.iBr.iY + popupRect.Height() ) );
+                              TPoint( controlRect.iTl.iX + popupSize.iWidth, controlRect.iBr.iY + popupSize.iHeight ) );
                 }
             else
                 {
                 // use the above-left position
-                rect = TRect( TPoint( controlRect.iTl.iX, controlRect.iTl.iY - popupRect.Height() ), 
-                              TPoint( controlRect.iTl.iX + popupRect.Width(), controlRect.iTl.iY ) );
+                rect = TRect( TPoint( controlRect.iTl.iX, controlRect.iTl.iY - popupSize.iHeight ), 
+                              TPoint( controlRect.iTl.iX + popupSize.iWidth, controlRect.iTl.iY ) );
                 
                 }
             break;
@@ -452,15 +475,15 @@
             
             // if this position does not fit the screen,
             // and if below right is more suitable, use it
-            if ( spaceAbove < popupRect.Height() && spaceBelow > spaceAbove )
+            if ( spaceAbove < popupSize.iHeight && spaceBelow > spaceAbove )
                 {
-                rect = TRect( TPoint( controlRect.iBr.iX - popupRect.Width(), controlRect.iBr.iY ), 
-                              TPoint( controlRect.iBr.iX, controlRect.iBr.iY + popupRect.Height() ) );
+                rect = TRect( TPoint( controlRect.iBr.iX - popupSize.iWidth, controlRect.iBr.iY ), 
+                              TPoint( controlRect.iBr.iX, controlRect.iBr.iY + popupSize.iHeight ) );
                 }
             else
                 {
                 // use the above-right position
-                rect = TRect( TPoint( controlRect.iBr.iX - popupRect.Width(), controlRect.iTl.iY - popupRect.Height() ), 
+                rect = TRect( TPoint( controlRect.iBr.iX - popupSize.iWidth, controlRect.iTl.iY - popupSize.iHeight ), 
                               TPoint( controlRect.iBr.iX,  controlRect.iTl.iY ) );
                 }
             break;
@@ -469,16 +492,16 @@
             
             // if this position does not fit the screen,
             // and if above left is more suitable, use it
-            if ( spaceBelow < popupRect.Height() && spaceBelow < spaceAbove )
+            if ( spaceBelow < popupSize.iHeight && spaceBelow < spaceAbove )
                 {
-                rect = TRect( TPoint( controlRect.iTl.iX, controlRect.iTl.iY - popupRect.Height() ), 
-                              TPoint( controlRect.iTl.iX + popupRect.Width(), controlRect.iTl.iY ) );
+                rect = TRect( TPoint( controlRect.iTl.iX, controlRect.iTl.iY - popupSize.iHeight ), 
+                              TPoint( controlRect.iTl.iX + popupSize.iWidth, controlRect.iTl.iY ) );
                 }
             else
                 {
                 // use the below-left position
                 rect = TRect( TPoint( controlRect.iTl.iX, controlRect.iBr.iY ), 
-                              TPoint( controlRect.iTl.iX + popupRect.Width(), controlRect.iBr.iY + popupRect.Height() ) );
+                              TPoint( controlRect.iTl.iX + popupSize.iWidth, controlRect.iBr.iY + popupSize.iHeight ) );
                 }
             break;
 
@@ -486,16 +509,16 @@
 
               // if this position does not fit the screen,
               // and if above right is more suitable, use it
-              if ( spaceBelow < popupRect.Height() && spaceBelow < spaceAbove )
+              if ( spaceBelow < popupSize.iHeight && spaceBelow < spaceAbove )
                   {
-                  rect = TRect( TPoint( controlRect.iBr.iX - popupRect.Width(), controlRect.iTl.iY - popupRect.Height() ), 
+                  rect = TRect( TPoint( controlRect.iBr.iX - popupSize.iWidth, controlRect.iTl.iY - popupSize.iHeight ), 
                                 TPoint( controlRect.iBr.iX,  controlRect.iTl.iY ) );
                   }
               else
                   {
                   // use the below-right position
-                  rect = TRect( TPoint( controlRect.iBr.iX - popupRect.Width(), controlRect.iBr.iY ), 
-                                TPoint( controlRect.iBr.iX, controlRect.iBr.iY + popupRect.Height() ) );
+                  rect = TRect( TPoint( controlRect.iBr.iX - popupSize.iWidth, controlRect.iBr.iY ), 
+                                TPoint( controlRect.iBr.iX, controlRect.iBr.iY + popupSize.iHeight ) );
                   }
             break;
 
@@ -503,33 +526,33 @@
 
             // if this position does not fit the screen,
             // and if left or above-left is more suitable, use it
-            if ( spaceRight < popupRect.Width() )
+            if ( spaceRight < popupSize.iWidth )
                 {
                 // use the left position if the space is big enough
-                if ( spaceLeft >= popupRect.Width() )
+                if ( spaceLeft >= popupSize.iWidth )
                     {
                     // use left position
-                    rect = TRect( TPoint( controlRect.iTl.iX - popupRect.Width(), controlRect.iTl.iY ), 
-                                  TPoint( controlRect.iTl.iX, controlRect.iTl.iY + popupRect.Height() ) );
+                    rect = TRect( TPoint( controlRect.iTl.iX - popupSize.iWidth, controlRect.iTl.iY ), 
+                                  TPoint( controlRect.iTl.iX, controlRect.iTl.iY + popupSize.iHeight ) );
                     }
-                else if ( spaceAbove >= popupRect.Height() )
+                else if ( spaceAbove >= popupSize.iHeight )
                     {
                     // use the above-right position
-                    rect = TRect( TPoint( controlRect.iBr.iX - popupRect.Width(), controlRect.iTl.iY - popupRect.Height() ), 
+                    rect = TRect( TPoint( controlRect.iBr.iX - popupSize.iWidth, controlRect.iTl.iY - popupSize.iHeight ), 
                                   TPoint( controlRect.iBr.iX,  controlRect.iTl.iY ) );  
                     }
                 else
                     {
                     // use the below-right position
-                    rect = TRect( TPoint( controlRect.iBr.iX - popupRect.Width(), controlRect.iBr.iY ), 
-                                  TPoint( controlRect.iBr.iX, controlRect.iBr.iY + popupRect.Height() ) );
+                    rect = TRect( TPoint( controlRect.iBr.iX - popupSize.iWidth, controlRect.iBr.iY ), 
+                                  TPoint( controlRect.iBr.iX, controlRect.iBr.iY + popupSize.iHeight ) );
                     }
                 }
             else
                 {
                 // use the right position
                 rect = TRect( TPoint( controlRect.iBr.iX, controlRect.iTl.iY ), 
-                              TPoint( controlRect.iBr.iX + popupRect.Width(), controlRect.iTl.iY + popupRect.Height() ) );
+                              TPoint( controlRect.iBr.iX + popupSize.iWidth, controlRect.iTl.iY + popupSize.iHeight ) );
                 }
                 
             break;
@@ -538,32 +561,32 @@
             
             // if this position does not fit the screen,
             // and if right is more suitable, use it
-            if ( spaceLeft < popupRect.Width() )
+            if ( spaceLeft < popupSize.iWidth )
                 {
                 // use the right position, if it the space is big enough
-                if ( spaceRight >= popupRect.Width() )
+                if ( spaceRight >= popupSize.iWidth )
                     {    
                     rect = TRect( TPoint( controlRect.iBr.iX, controlRect.iTl.iY ), 
-                                  TPoint( controlRect.iBr.iX + popupRect.Width(), controlRect.iTl.iY + popupRect.Height() ) );
+                                  TPoint( controlRect.iBr.iX + popupSize.iWidth, controlRect.iTl.iY + popupSize.iHeight ) );
                     }
-                else if ( spaceAbove >= popupRect.Height() )
+                else if ( spaceAbove >= popupSize.iHeight )
                     {
                     // use the above-left position
-                    rect = TRect( TPoint( controlRect.iTl.iX, controlRect.iTl.iY - popupRect.Height() ), 
-                                  TPoint( controlRect.iTl.iX + popupRect.Width(), controlRect.iTl.iY ) );
+                    rect = TRect( TPoint( controlRect.iTl.iX, controlRect.iTl.iY - popupSize.iHeight ), 
+                                  TPoint( controlRect.iTl.iX + popupSize.iWidth, controlRect.iTl.iY ) );
                     }
                 else
                     {
                     // use the below-left position
                     rect = TRect( TPoint( controlRect.iTl.iX, controlRect.iBr.iY ), 
-                                  TPoint( controlRect.iTl.iX + popupRect.Width(), controlRect.iBr.iY + popupRect.Height() ) );
+                                  TPoint( controlRect.iTl.iX + popupSize.iWidth, controlRect.iBr.iY + popupSize.iHeight ) );
                     }
                 }
             else
                 {
                 // use the left position  
-                rect = TRect( TPoint( controlRect.iTl.iX - popupRect.Width(), controlRect.iTl.iY ), 
-                              TPoint( controlRect.iTl.iX, controlRect.iTl.iY + popupRect.Height() ) );
+                rect = TRect( TPoint( controlRect.iTl.iX - popupSize.iWidth, controlRect.iTl.iY ), 
+                              TPoint( controlRect.iTl.iX, controlRect.iTl.iY + popupSize.iHeight ) );
                 }
             break;
         default:
--- a/menufw/menufwui/matrixmenu/loc/matrix_menu.loc	Wed Mar 31 21:17:19 2010 +0300
+++ b/menufw/menufwui/matrixmenu/loc/matrix_menu.loc	Wed Apr 14 15:47:59 2010 +0300
@@ -29,13 +29,13 @@
 //d: Displayed in Status Pane.
 //l: title_pane_t2/opt9
 //r: 1.0
-#define qtn_org_root_editing_title "Organizing Menu"
+#define qtn_org_root_editing_title "Editing Menu"
 
 //d: Title of a folder in Edit Mode.
 //d: Displayed in Status Pane. %U is the name of the opened folder.
 //l: title_pane_t2/opt9
 //r: 1.0
-#define qtn_org_folder_editing_title "Organizing %U"
+#define qtn_org_folder_editing_title "Editing %U"
 
 //d: Label of the menu item.
 //d: Opens selected item.
--- a/taskswitcher/contextengine/rom/tscontextservices.iby	Wed Mar 31 21:17:19 2010 +0300
+++ b/taskswitcher/contextengine/rom/tscontextservices.iby	Wed Apr 14 15:47:59 2010 +0300
@@ -21,10 +21,5 @@
 // Context Services binaries
 file=ABI_DIR/BUILD_DIR/tscontextservicesutils.dll    SHARED_LIB_DIR/tscontextservicesutils.dll
 
-// backup registration
-data=DATAZ_/private/20011417/backup_registration.xml    private/20011417/backup_registration.xml
-
-// stub sis
-data=ZSYSTEM/install/tsctxsrv_stub.sis    system/install/tsctxsrv_stub.sis
 
 #endif // TSCONTEXTSERVICES
--- a/taskswitcher/contextengine/tsfswserver/engine/inc/tsfswengine.h	Wed Mar 31 21:17:19 2010 +0300
+++ b/taskswitcher/contextengine/tsfswserver/engine/inc/tsfswengine.h	Wed Apr 14 15:47:59 2010 +0300
@@ -105,6 +105,7 @@
      */
     IMPORT_C TUid ForegroundAppUidL( TInt aType );
 
+public:
     /**
      * Callback for rotation completion. Takes ownership of a given
      * bitmap.
@@ -168,17 +169,6 @@
     TUid AppUidForWgIdL( TInt aWgId );
 
     /**
-     * Finds out the application name.
-     * @param   aWindowName window group name or NULL
-     * @param   aAppUId     application uid
-     * @param   aWgId       window group id
-     * @return  application name, ownership transferred to caller
-     */
-    HBufC* FindAppNameLC( CApaWindowGroupName* aWindowName,
-            const TUid& aAppUid,
-            TInt aWgId );
-
-    /**
      * Makes a copy of the bitmap with the given handle.
      * @param   aFbsHandle          bitmap handle
      * @param   aKeepAspectRatio    if true then aspect ratio is kept
--- a/taskswitcher/contextengine/tsfswserver/engine/inc/tsfswobservers.h	Wed Mar 31 21:17:19 2010 +0300
+++ b/taskswitcher/contextengine/tsfswserver/engine/inc/tsfswobservers.h	Wed Apr 14 15:47:59 2010 +0300
@@ -56,12 +56,6 @@
      * Called when there is a change in the task list.
      */
     virtual void FswDataChanged() = 0;
-
-    /**
-     * Called to find out how many clients are subscribed
-     * for fsw content change notifications.
-     */
-    virtual TInt FswDataListenerCount() = 0;
     };
 
 /**
--- a/taskswitcher/contextengine/tsfswserver/engine/src/tscpsnotifier.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/taskswitcher/contextengine/tsfswserver/engine/src/tscpsnotifier.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -18,10 +18,10 @@
 
 #include "tscpsnotifier.h"
 #include "tsfswengine.h"
-#include <LiwServiceHandler.h>
-#include <LiwVariant.h>
-#include <LiwGenericParam.h>
-#include <Liwcommon.h>
+#include <liwservicehandler.h>
+#include <liwvariant.h>
+#include <liwgenericparam.h>
+#include <liwcommon.h>
 #include <liwcommon.hrh>
 
 _LIT8( KCPService, "Service.ContentPublishing" );
--- a/taskswitcher/contextengine/tsfswserver/engine/src/tsfswengine.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/taskswitcher/contextengine/tsfswserver/engine/src/tsfswengine.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -380,55 +380,6 @@
     }
 
 // --------------------------------------------------------------------------
-// CTsFswEngine::FindAppNameLC
-// --------------------------------------------------------------------------
-//
-HBufC* CTsFswEngine::FindAppNameLC( CApaWindowGroupName* aWindowName,
-                                  const TUid& aAppUid,
-                                  TInt aWgId )
-    {
-    //Retrieve the app name
-    TApaAppInfo info;
-    iAppArcSession.GetAppInfo( info, aAppUid );
-    TPtrC caption = info.iShortCaption;
-
-    HBufC* tempName = 0;
-    if ( !caption.Length() && aWindowName ) // if not set - use thread name instead
-        {
-        if ( aWindowName->Caption().Length() )
-            {
-            tempName = aWindowName->Caption().AllocL();
-            //put on cleanupstack after the if
-            }
-        else
-            {
-            TThreadId threadId;
-            TInt err = iWsSession.GetWindowGroupClientThreadId(
-                    aWgId, threadId );
-            if ( err == KErrNone )
-                {
-                RThread thread;
-                CleanupClosePushL( thread );
-                err = thread.Open ( threadId );
-                if ( err==KErrNone )
-                    {
-                    tempName = thread.Name().AllocL(); // codescanner::forgottoputptroncleanupstack
-                    // tempName put on cleanupstack after the if
-                    }
-                CleanupStack::PopAndDestroy( &thread );
-                }
-            }
-        }
-    else
-        {
-        tempName = caption.AllocL();
-        //put on cleanupstack after the if
-        }
-    CleanupStack::PushL( tempName );
-    return tempName;
-    }
-
-// --------------------------------------------------------------------------
 // CTsFswEngine::CopyBitmapL
 // --------------------------------------------------------------------------
 //
--- a/taskswitcher/contextengine/tsfswserver/engine/src/tsfswiconcache.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/taskswitcher/contextengine/tsfswserver/engine/src/tsfswiconcache.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -23,8 +23,8 @@
 #include <avkon.mbg>
 
 // size for the created app icons
-const TInt KAppIconWidth = 96;
-const TInt KAppIconHeight = 96;
+const TInt KAppIconWidth = 300;
+const TInt KAppIconHeight = 300;
 
 // --------------------------------------------------------------------------
 // CTsFswIconCache::NewL
--- a/taskswitcher/contextengine/tsfswserver/server/inc/tsfswserver.h	Wed Mar 31 21:17:19 2010 +0300
+++ b/taskswitcher/contextengine/tsfswserver/server/inc/tsfswserver.h	Wed Apr 14 15:47:59 2010 +0300
@@ -66,8 +66,6 @@
         
     // from MTsFswEngineObserver
     void FswDataChanged();
-    TInt FswDataListenerCount();
-
 private:
     TInt iSessionCount;
     CTsFswEngine* iEngine;
--- a/taskswitcher/contextengine/tsfswserver/server/src/tsfswserver.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/taskswitcher/contextengine/tsfswserver/server/src/tsfswserver.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -188,25 +188,6 @@
     }
 
 // --------------------------------------------------------------------------
-// CTsFswServer::FswDataListenersCount
-// callback from engine
-// --------------------------------------------------------------------------
-//
-TInt CTsFswServer::FswDataListenerCount()
-    {
-    TInt n = 0;
-    iSessionIter.SetToFirst();
-    while ( CTsFswSession* session = static_cast<CTsFswSession*>( iSessionIter++ ) )
-        {
-        if ( session->IsListening() )
-            {
-            ++n;
-            }
-        }
-    return n;
-    }
-
-// --------------------------------------------------------------------------
 // RunServerL
 // --------------------------------------------------------------------------
 //
--- a/taskswitcher/taskswitcherui/taskswitcherapp/data/taskswitcher_reg.rss	Wed Mar 31 21:17:19 2010 +0300
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/data/taskswitcher_reg.rss	Wed Apr 14 15:47:59 2010 +0300
@@ -27,5 +27,6 @@
 	app_file="taskswitcher";
 	localisable_resource_file="\\resource\\apps\\taskswitcher";
 	localisable_resource_id = R_LOCALISABLE_APP_INFO;
-	hidden=KAppIsHidden;
+	hidden = KAppIsHidden;
+	launch = KAppLaunchInBackground;
 	}
--- a/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsappui.h	Wed Mar 31 21:17:19 2010 +0300
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsappui.h	Wed Apr 14 15:47:59 2010 +0300
@@ -51,7 +51,8 @@
     ENoneTransition = 0,
     EForegroundTransition = 3,
     EBackgroundTransition = 4,
-    EActivationTransition = 5
+    EActivationTransition = 5,
+    EActivationAppShowTransition = 1507,
     
     };
     /**
@@ -80,7 +81,9 @@
     /**
      * Function start transition  
      */
-    void StartTransion( TUint aTransitionType );
+    void StartTransion( TUint aTransitionType,
+            TUid aNextAppUid = TUid::Null(),
+            TInt aWgId = 0 );
     
     /**
      * from MGfxTransEffectObserver
@@ -88,7 +91,9 @@
     void TransitionFinished(const CCoeControl* aControl, TUint aAction);
     
     void MoveAppToForeground( TUint aTransitionType );
-    void MoveAppToBackground( TUint aTransitionType );
+    void MoveAppToBackground( TUint aTransitionType,
+            TUid aAppUid = TUid::Null(),
+            TInt aWgId = 0 );
     
     /**
      * Functions for showing/hiding popups.
@@ -117,11 +122,15 @@
     void HandleResourceChangeL( TInt aType );
     void HandleForegroundEventL( TBool aForeground );
     void HandleCommandL( TInt aCommand );
+    void HandleWsEventL(const TWsEvent& aEvent,
+            CCoeControl* aDestination);
     
     void StartTransition( TUint aTranstionId,
                           TBool aVisibility,
                           TBool aLayers, 
                           TUint aSubCom );
+    
+    void StartAppActivateTransition( TUid aNextAppUid, TInt aWgId );
 
 private: // New functions
     
@@ -149,8 +158,33 @@
      * task switcher app
      */
     void FreeMemoryRequest();
+    
+    /**
+     * Returns id of window group lying beneath task
+     * switcher window group. 
+     * In case of embeded app it returns top paren window group.
+     * 
+     * @param  aIgnoreParentChild  if set to ETrue, parent/child relationship
+     *                             will be ignored when deteriminig window
+     *                             group id
+     */
+    TInt WgIdOfUnderlyingApp( TBool aIgnoreParentChild );
 
     static TInt GoToBackgroundTimerCallback( TAny* aParam );
+    
+    /*
+     * Returns id of top parent window group for embeded window group.
+     * @param aChildWg embeded window group id
+     * @return top parent window group id or 0 in case od standlalone 
+     */
+    TInt GetTopParentWg( TInt aChildWg);
+
+    /*
+     * Returns id of parent window group for embeded window group.
+     * @param aChildWg embeded window group id
+     * @return parent window group id or 0 in case od standlalone 
+     */
+    TInt GetParentWg( TInt aChildWg );
 
 private:
 
@@ -191,6 +225,8 @@
     TBool iUiStarted;
     TBool iDisableAppKeyHandling;
     
+    TInt iUnderAppWgId;
+    
     };
 
 #endif // TSAPPUI_H
--- a/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsappview.h	Wed Mar 31 21:17:19 2010 +0300
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsappview.h	Wed Apr 14 15:47:59 2010 +0300
@@ -108,6 +108,15 @@
      * background redraw.
      */
     void EnableDragEvents( TBool aEnable );
+    
+    /**
+     * Checks if app with the given wg id is closing
+     * 
+     * @param  aWgId  id of window group which is checked
+     *                if it is closing
+     * @return  ETrue if application is being closed, EFalse otherwise
+     */
+    TBool AppCloseInProgress( TInt aWgId );
 
 protected:
     // from MCoeControlObserver
@@ -192,8 +201,11 @@
 		TTouchFeedbackType aFeedbackType,
 		const TPointerEvent& aPointerEvent);
     
-
-    
+    /**
+     * Area, where drag events are being handled.
+     */
+    TRect DragArea();
+        
 public://From MTsEventControlerObserver
     /**
      * Declare drag gesture handling.
--- a/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsfastswaparea.h	Wed Mar 31 21:17:19 2010 +0300
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsfastswaparea.h	Wed Apr 14 15:47:59 2010 +0300
@@ -218,6 +218,11 @@
      */
     TPoint ViewPos()const;
     
+    /**
+     * Checks if the app with the given window group id is closing
+     */
+    TBool IsAppClosing( TInt aWgId );
+    
 public:    
     // from CCoeControl    
     TInt CountComponentControls() const;
@@ -270,6 +275,11 @@
     void ReCreateGridL();
     
     /**
+     * Setup grid layout
+     */
+    void LayoutGridL();
+    
+    /**
      * Returns rectangles for fast swap area controls
      */
     void GetFastSwapAreaRects( RArray<TAknLayoutRect>& aRects );
@@ -431,6 +441,7 @@
     // Key event handling
     TBool iConsumeEvent;
     TBool iKeyEvent;
+    RArray<TInt> iIsClosing;
     };
 
 #endif // TSFASTSWAPAREA_H
--- a/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsfastswapgrid.h	Wed Mar 31 21:17:19 2010 +0300
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsfastswapgrid.h	Wed Apr 14 15:47:59 2010 +0300
@@ -175,6 +175,21 @@
      * Returns visible view. Items outside of visible rectangle are not drawn.
      */
     TRect VisibleViewRect();
+    
+    /**
+     * Updates layout data for item drawer. Should be called when
+     * layout maybe out of date
+     */
+    void UpdateItemDrawerLayoutDataL();
+    
+    /**
+     * Enables/disables avkon event handling.
+     * 
+     * @param  aEnable  if set to ETrue, pointer events will be forwarded
+     *                  to CAknGrid base class if necessary. If set to EFalse,
+     *                  no pointer events will be forwarded.
+     */
+    void EnableAknEventHandling( TBool aEnable );
 
 private: // From CAknGrid
     virtual void CreateItemDrawerL();
@@ -211,6 +226,9 @@
     
     // Visible view rectangle (horizontal scrolling support)
     TRect iVisibleViewRect;
+    
+    // Flag controlling input handling by grid
+    TBool iAknEventHandlingEnabled;
     };
 
 
@@ -223,8 +241,7 @@
 
 public: // Constructor and destructor
     CTsGridItemDrawer( CTsFastSwapGrid* aGrid,
-                       CFormattedCellListBoxData* aData,
-                       TRect aScreenRect );
+                       CFormattedCellListBoxData* aData );
     ~CTsGridItemDrawer();
 
 public: // New functions
@@ -292,6 +309,14 @@
      * @param aStrokeSize     size of the stroke rectangle
      */
     void SetStrokeOffset( TPoint aStrokeOffset, TSize aStrokeSize );
+    
+    /**
+     * Set screen rectangle, used by the item drawer to determine
+     * drawn area.
+     * 
+     * @param  aRect  screen rectangle
+     */
+    void SetScreenRect( TRect aRect );
 
 private: // From CFormattedCellListBoxItemDrawer
     void DrawActualItem( TInt aItemIndex, const TRect& aActualItemRect,
--- a/taskswitcher/taskswitcherui/taskswitcherapp/src/tsappui.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsappui.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -60,7 +60,9 @@
 
 // time to wait before sending the task to background
 // (must give time to animation)
-const TInt KWaitBeforeGoingToBackground = 175000;
+const TInt KWaitBeforeGoingToBackground = 200000;
+
+const TUid KTsAppUid = { KTsAppUidValue };
 
 // -----------------------------------------------------------------------------
 // CTsAppUi::ConstructL()
@@ -118,6 +120,7 @@
     // Create custom window group
     iWg = RWindowGroup(CCoeEnv::Static()->WsSession());
     iWg.Construct((TUint32)&iWg, ETrue);
+    iWg.EnableScreenChangeEvents(); 
     
     // Create UI
     iAppView = CTsAppView::NewL( ApplicationRect(), *iDeviceState, iWg );
@@ -147,6 +150,9 @@
     iEikonEnv->RootWin().SetOrdinalPosition(-1, ECoeWinPriorityNeverAtFront);
     iEikonEnv->RootWin().EnableReceiptOfFocus(EFalse);
     
+    RWindowGroup& windowGroup = CCoeEnv::Static()->RootWin();
+    windowGroup.EnableGroupListChangeEvents();
+    
     iIsPopUpShown = EFalse;
     iUiStarted = EFalse;
     iDisableAppKeyHandling = EFalse;
@@ -209,7 +215,7 @@
 // CTsAppUi::StartTransion
 // -----------------------------------------------------------------------------
 //
-void CTsAppUi::StartTransion( TUint aTransitionType )
+void CTsAppUi::StartTransion( TUint aTransitionType, TUid aNextAppUid, TInt aWgId )
     {
     if( !EffectsEnabled() )
         {
@@ -230,10 +236,7 @@
                          CAknTransitionUtils::EForceInvisible );
         break;
     case EActivationTransition:
-        StartTransition( aTransitionType, 
-                         EFalse, 
-                         ETrue, 
-                         CAknTransitionUtils::EForceInvisible );
+        StartAppActivateTransition( aNextAppUid, aWgId );
         break;
         }
     }
@@ -262,6 +265,46 @@
     }
 
 // -----------------------------------------------------------------------------
+// CTsAppUi::StartAppActivateTransition
+// -----------------------------------------------------------------------------
+//
+void CTsAppUi::StartAppActivateTransition( TUid aNextAppUid, TInt aWgId )
+    {
+    // Check what type of transition will be trigerred
+    if ( aWgId == iUnderAppWgId )
+        {
+        // App under task switcher was launched
+        StartTransition( EActivationTransition, 
+                         EFalse, 
+                         ETrue, 
+                         CAknTransitionUtils::EForceInvisible );
+        }
+    else
+        {
+        // App start animation
+        TRAP_IGNORE( RequestPopUpL() );
+        const TDesC8* ptr = reinterpret_cast<const TDesC8*>(iAppView);
+        GfxTransEffect::Abort(iAppView);
+        TInt groupId = GfxTransEffect::BeginGroup();
+        GfxTransEffect::BeginFullScreen(
+                 EActivationAppShowTransition, ApplicationRect(),
+                 AknTransEffect::EParameterType,
+                 AknTransEffect::GfxTransParam( aNextAppUid , KTsAppUid ) );
+        GfxTransEffect::Begin( iAppView, EActivationTransition );
+        GfxTransEffect::SetDemarcation( iAppView, iAppView->Rect() );
+        GfxTransEffect::NotifyExternalState( ECaptureComponentsBegin, ptr );
+        iAppView->MakeVisible( EFalse );
+        CAknTransitionUtils::MakeVisibleSubComponents( 
+            iAppView,
+            static_cast<CAknTransitionUtils::TMakeVisibleSubComponentsInfo>(CAknTransitionUtils::EForceInvisible) );
+        GfxTransEffect::NotifyExternalState( ECaptureComponentsEnd, ptr );
+        GfxTransEffect::End( iAppView );
+        GfxTransEffect::EndFullScreen();
+        GfxTransEffect::EndGroup(groupId);
+        }
+    }
+
+// -----------------------------------------------------------------------------
 // CTsAppUi::TransitionFinished
 // -----------------------------------------------------------------------------
 //
@@ -446,7 +489,7 @@
 // CTsAppUi::MoveAppToBackground()
 // -----------------------------------------------------------------------------
 //
-void CTsAppUi::MoveAppToBackground( TUint aTransitionType )
+void CTsAppUi::MoveAppToBackground( TUint aTransitionType, TUid aAppUid, TInt aWgId )
     {
     TSLOG_CONTEXT( MoveAppToBackground, TSLOG_LOCAL );
     TSLOG_IN();
@@ -457,7 +500,7 @@
         }
     else
         {
-        StartTransion(aTransitionType);
+        StartTransion(aTransitionType, aAppUid, aWgId);
         iGoToBackgroundTimer->Cancel();
         iGoToBackgroundTimer->Start( 
                 KWaitBeforeGoingToBackground, 
@@ -698,4 +741,98 @@
     return retVal;  
     }
 
+
+// -----------------------------------------------------------------------------
+// CTsAppUi::HandleWsEventL
+// -----------------------------------------------------------------------------
+//
+void CTsAppUi::HandleWsEventL(const TWsEvent& aEvent,
+        CCoeControl* aDestination)
+    {
+    CAknAppUi::HandleWsEventL(aEvent, aDestination);
+    TInt eventType = aEvent.Type();
+    if ( eventType == EEventWindowGroupListChanged )
+        {
+        TInt wgId = WgIdOfUnderlyingApp(EFalse);
+        if ( iForeground &&
+             wgId != iUnderAppWgId &&
+             !iAppView->AppCloseInProgress(iUnderAppWgId) )
+            {
+            MoveAppToBackground( ENoneTransition );
+            }
+        if ( WgIdOfUnderlyingApp(ETrue) != iUnderAppWgId )
+            {
+            HandleResourceChangeL(KEikDynamicLayoutVariantSwitch);
+            }
+        iUnderAppWgId = wgId;
+        }
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsAppUi::WgIdOfUnderlyingApp
+// -----------------------------------------------------------------------------
+//
+TInt CTsAppUi::WgIdOfUnderlyingApp( TBool aIgnoreParentChild )
+    {
+    TInt retVal(0);
+    TApaTaskList taskList( iEikonEnv->WsSession() );
+    TInt underlyingWg = taskList.FindByPos(0).WgId();
+    if ( aIgnoreParentChild )
+        {
+        retVal = underlyingWg;
+        }
+    else
+        {
+        TInt parentWg = GetTopParentWg( underlyingWg );
+        retVal = parentWg ? parentWg : underlyingWg;
+        }
+    return retVal;
+    }
+
+// -----------------------------------------------------------------------------
+// CTsAppUi::GetTopParentWg
+// -----------------------------------------------------------------------------
+//
+TInt CTsAppUi::GetTopParentWg( TInt aChildWg )
+	{
+	TInt parentWg = GetParentWg( aChildWg );
+	if( parentWg )
+		{
+		TInt topParentWg = GetTopParentWg( parentWg );
+		if( topParentWg )
+			{
+			parentWg = topParentWg; 
+			}
+		}
+	return parentWg;
+	}
+
+// -----------------------------------------------------------------------------
+// CTsAppUi::GetParentWg
+// -----------------------------------------------------------------------------
+//
+TInt CTsAppUi::GetParentWg( TInt aChildWg )
+    {
+	TInt retVal(0);
+    RArray<RWsSession::TWindowGroupChainInfo> allWgIds;
+    // Ask for window group list from RWsSession
+    TInt error = iEikonEnv->WsSession().WindowGroupList( 0, &allWgIds );
+    if ( !error )
+        {
+        TInt count( allWgIds.Count() );
+        for ( TInt i( 0 ); i < count; i++ )
+            {
+            RWsSession::TWindowGroupChainInfo info = allWgIds[i];
+            if ( info.iId == aChildWg && info.iParentId > 0)
+                {
+				retVal = info.iParentId;
+                break;
+                }
+            }
+        }
+    allWgIds.Close();
+	return retVal;
+	}
+
 // End of file
--- a/taskswitcher/taskswitcherui/taskswitcherapp/src/tsappview.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsappview.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -457,6 +457,10 @@
     TSLOG_CONTEXT( CTsAppView::HandleSwitchToForegroundEvent, TSLOG_LOCAL );
     TSLOG_IN();
     
+    // Forward event to interested controls
+    iFastSwapArea->HandleSwitchToForegroundEvent();
+    iFastSwapArea->UpdateComponentVisibility();
+    
     // Check for layout updates
     CTsAppUi* appUi = static_cast<CTsAppUi*>(iCoeEnv->AppUi());
     if ( iViewRect != appUi->ApplicationRect() &&
@@ -477,10 +481,6 @@
     // Focus jumps back to fsw
     ChangeFocus( iFastSwapArea );
 
-    // Forward event to interested controls
-    iFastSwapArea->HandleSwitchToForegroundEvent();
-    iFastSwapArea->UpdateComponentVisibility();
-
     // Start animation
     CTsAppUi* appui =
         static_cast<CTsAppUi*>( iEikonEnv->AppUi() );
@@ -614,9 +614,8 @@
         {
 		LaunchFeedback(ETouchFeedbackBasic, TTouchFeedbackType(
 				ETouchFeedbackVibra | ETouchFeedbackAudio), aPointerEvent);
-		if ( !( iFastSwapArea->Rect().Contains(aPointerEvent.iParentPosition) ||
-		        iAppsHeading->Rect().Contains(aPointerEvent.iParentPosition)
-		       ) )
+
+		if( !DragArea().Contains(aPointerEvent.iParentPosition))
 		    {
 		    //move task switcher to background
 		    iEvtHandler->EnableEventHandling(EFalse);
@@ -730,13 +729,7 @@
 //
 void CTsAppView::DragL(const MAknTouchGestureFwDragEvent& aEvent)
     {
-	if( aEvent.State() == EAknTouchGestureFwStop )
-		{
-		LaunchFeedback(ETouchFeedbackBasic, TTouchFeedbackType(
-				ETouchFeedbackVibra | ETouchFeedbackAudio), TPointerEvent());
-		}
-    if( iFastSwapArea->Rect().Contains(aEvent.StartPosition()) ||
-		iAppsHeading->Rect().Contains(aEvent.StartPosition()) )
+    if(DragArea().Contains(aEvent.StartPosition()))
         {
 		iFastSwapArea->DragL(aEvent);
         }
@@ -778,6 +771,34 @@
 	}
 
 
+// -----------------------------------------------------------------------------
+// CTsAppView::AppCloseInProgress()
+// -----------------------------------------------------------------------------
+//
+TBool CTsAppView::AppCloseInProgress( TInt aWgId )
+    {
+    return iFastSwapArea->IsAppClosing(aWgId);
+    }
+// -----------------------------------------------------------------------------
+// CTsAppView::DragArea
+// -----------------------------------------------------------------------------
+//
+TRect CTsAppView::DragArea()
+	{
+	TRect dragArea;
+	if (Layout_Meta_Data::IsLandscapeOrientation())
+		{
+		dragArea.SetRect(iAppsHeading->Rect().iTl.iX,
+				iAppsHeading->Rect().iTl.iY, iFastSwapArea->Rect().iBr.iX,
+				iFastSwapArea->Rect().iBr.iY);
+		}
+	else
+		{
+		dragArea.SetRect(Rect().iTl.iX, iAppsHeading->Rect().iTl.iY,
+				Rect().iBr.iX, iFastSwapArea->Rect().iBr.iY);
+		}
+	return dragArea;
+	}    
 
 
 // End of file
--- a/taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswaparea.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswaparea.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -115,6 +115,7 @@
 CTsFastSwapArea::~CTsFastSwapArea()
     {
     iArray.ResetAndDestroy();
+    iIsClosing.Close();
     delete iGrid;
     delete iFSClient;
     delete iPopup;
@@ -134,7 +135,7 @@
 
     SetRect( aRect );
 
-    // setup ganes grid
+    // setup grid
     ReCreateGridL();
 
     // create stylus popup instance
@@ -188,6 +189,44 @@
     
     AknListBoxLayouts::SetupStandardGrid( *iGrid );
     
+    // Setup layout
+    LayoutGridL();
+    
+    if( wasHighlight )
+        {
+        iGrid->ShowHighlight();
+        }
+    else
+        {
+        iGrid->HideHighlight();
+        }
+    
+    // Setup empty text
+    HBufC* text = StringLoader::LoadLC( R_TS_FSW_NO_APPS );
+    iGrid->SetEmptyGridTextL( *text );
+    CleanupStack::PopAndDestroy( text );
+    
+    // Setup grid observers
+    if ( obs )
+        {
+        iGrid->SetObserver( obs );
+        }
+    iGrid->SetListBoxObserver(this);
+    iGrid->SetFastSwapGridObserver(this);
+    iGrid->SetContainerWindowL(*this);
+	
+    // Make sure that there is an ActivateL call even when we are not
+    // called from ConstructL. (in order to have the grid's parent ptr set properly)
+    ActivateL();
+    }
+
+
+// --------------------------------------------------------------------------
+// CTsFastSwapArea::LayoutGridL
+// --------------------------------------------------------------------------
+//
+void CTsFastSwapArea::LayoutGridL()
+    {
     RArray<TAknLayoutRect> rects;
     CleanupClosePushL(rects);
     rects.ReserveL(KLayoutItemCount);
@@ -222,22 +261,13 @@
     AknsUtils::GetCachedColor( AknsUtils::SkinInstance(), highlightTextColor,
             KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG11 );
     CFormattedCellListBoxData::TColors colors;
-    colors.iText =  textColor;
+    colors.iText = textColor;
     colors.iBack = iGrid->ItemDrawer()->BackColor();
     colors.iHighlightedText = highlightTextColor;
     colors.iHighlightedBack = iGrid->ItemDrawer()->HighlightedBackColor();
     iGrid->ItemDrawer()->FormattedCellData()->SetSubCellColorsL(1, colors);
     iGrid->SetStrokeColors(textColor, highlightTextColor);
     
-    // Setup grid observers
-    if ( obs )
-        {
-        iGrid->SetObserver( obs );
-        }
-    iGrid->SetListBoxObserver(this);
-    iGrid->SetFastSwapGridObserver(this);
-    iGrid->SetContainerWindowL(*this);
-    
     if ( AknLayoutUtils::LayoutMirrored() )
         {
         iGridItemGap = gridItem.Rect().iTl.iX - gridNextItem.Rect().iBr.iX;
@@ -258,24 +288,11 @@
         }
     iGridItemWidth = gridItem.Rect().Width();
     
+    // Update item drawer
+    iGrid->UpdateItemDrawerLayoutDataL();
+    
     // Update state
     HandleDeviceStateChanged( EDeviceType );
-    if( wasHighlight )
-        {
-        iGrid->ShowHighlight();
-        }
-    else
-        {
-        iGrid->HideHighlight();
-        }
-    
-	HBufC* text = StringLoader::LoadLC( R_TS_FSW_NO_APPS );
-	iGrid->SetEmptyGridTextL( *text );
-	CleanupStack::PopAndDestroy( text );
-	
-    // Make sure that there is an ActivateL call even when we are not
-    // called from ConstructL. (in order to have the grid's parent ptr set properly)
-    ActivateL();
     }
 
 
@@ -333,11 +350,11 @@
         // data with new layout values
         TInt selIdx = SelectedIndex();
         TRAPD(err, 
-              ReCreateGridL();
-              /*iEvtHandler.ReInitPhysicsL(GridWorldSize(), ViewSize(), ETrue);*/);
+              /*ReCreateGridL()*/
+              LayoutGridL() );
         if ( err != KErrNone )
             {
-            TSLOG1( TSLOG_INFO, "ReCreateGridL leaves with %d", err );
+            TSLOG1( TSLOG_INFO, "LayoutGridL leaves with %d", err );
             }
         HandleFswContentChanged();
         iGrid->SetCurrentDataIndex(selIdx);
@@ -380,6 +397,7 @@
     if ( aIndex >= 0 && aIndex < iArray.Count() )
         {
         TInt wgId = iArray[aIndex]->WgId();
+        TUid appUid = iArray[aIndex]->AppUid();
         // Move other app to foreground and then move ourselves to background.
         // Order is important and cannot be reversed.
         iFSClient->SwitchToApp( wgId );
@@ -389,7 +407,7 @@
         iIgnoreLayoutSwitch = ETrue;
         CTsAppUi* appui =
             static_cast<CTsAppUi*>( iEikonEnv->AppUi() );
-        appui->MoveAppToBackground( CTsAppUi::EActivationTransition );
+        appui->MoveAppToBackground( CTsAppUi::EActivationTransition, appUid, wgId );
         iIgnoreLayoutSwitch = EFalse;
         
         // Orientation update
@@ -418,6 +436,7 @@
             }
         TInt wgId = iArray[aIndex]->WgId();
         iFSClient->CloseApp( wgId );
+        iIsClosing.Append(wgId);
         // The fsw content will change sooner or later
         // but the updated content (without the closed app) will not
         // come very fast. It looks better to the user if the item
@@ -689,9 +708,9 @@
         }
     
     // refresh the items in the grid
-    iGrid->HandleItemAdditionL();
     iEvtHandler.ReInitPhysicsL( GridWorldSize(), ViewSize(), ETrue );
     UpdateGrid( ETrue, !aSuppressAnimation );
+    iGrid->HandleItemAdditionL();
     
     TSLOG_OUT();
     }
@@ -753,6 +772,11 @@
     {
     // stop listening for changes in fsw content
     iFSClient->CancelSubscribe();
+    // Hide highlight
+    if ( iGrid->GridBehaviour() == CTsFastSwapGrid::ETouchOnly )
+        {
+        iGrid->HideHighlight();
+        }
     }
 
 // -----------------------------------------------------------------------------
@@ -764,8 +788,20 @@
     TSLOG_CONTEXT( CTsFastSwapArea::HandleSwitchToForegroundEvent, TSLOG_LOCAL );
     TSLOG_IN();
     
+    iIsClosing.Reset();
+    
+    CTsGridItemDrawer* itemDrawer =
+        static_cast<CTsGridItemDrawer*>( iGrid->ItemDrawer() );
+    itemDrawer->SetRedrawBackground(ETrue);
+    
+    // Update Layout
+    CTsAppUi* appUi = static_cast<CTsAppUi*>(iEikonEnv->AppUi());
+    if ( appUi && appUi->EffectsEnabled() )
+        {
+        TRAP_IGNORE( LayoutGridL() );
+        }
+    
     // Reset grid
-    TRAP_IGNORE( ReCreateGridL() );
     if ( iDeviceState.DeviceType() == CTsDeviceState::EFullTouch )
         {
         iGrid->HideHighlight();
@@ -786,6 +822,8 @@
     iRedrawTimer->Cancel();
     iRedrawTimer->After(KRedrawTime);
     
+    itemDrawer->SetRedrawBackground(EFalse);
+    
     // give feedback
     LaunchPopupFeedback();
 
@@ -923,6 +961,9 @@
     if(aPointerEvent.iType == TPointerEvent::EButton1Down)
         {
         iTapEvent = aPointerEvent;
+        iGrid->EnableAknEventHandling(EFalse);
+        iGrid->HandlePointerEventL(aPointerEvent);
+        iGrid->EnableAknEventHandling(ETrue);
         }
     }
 
@@ -1669,4 +1710,24 @@
     return availableRect.iPixelSize.iWidth > availableRect.iPixelSize.iHeight;
     }
 
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapArea::IsAppClosing
+// -----------------------------------------------------------------------------
+//
+TBool CTsFastSwapArea::IsAppClosing( TInt aWgId )
+    {
+    TBool retVal(EFalse);
+    if ( iIsClosing.Count() )
+        {
+        TInt idx = iIsClosing.Find(aWgId);
+        retVal = idx != KErrNotFound;
+        if ( retVal )
+            {
+            iIsClosing.Remove(idx);
+            }
+        }
+    return retVal;
+    }
+
 // End of file
--- a/taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswapgrid.cpp	Wed Mar 31 21:17:19 2010 +0300
+++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswapgrid.cpp	Wed Apr 14 15:47:59 2010 +0300
@@ -42,7 +42,8 @@
 : CAknGrid(),
   iCloseIconHitIdx( KErrNotFound ),
   iBehaviour( ETouchOnly ),
-  iHighlightVisible( EFalse )
+  iHighlightVisible( EFalse ),
+  iAknEventHandlingEnabled(ETrue)
     {
     }
 
@@ -112,27 +113,27 @@
             if ( closeIconRect.Contains( aPointerEvent.iParentPosition ) )
                 {
                 // Close icon hit
+                TInt hitDataIdx(hitItem);
+                if ( AknLayoutUtils::LayoutMirrored() )
+                    {
+                    // Calculate logical item index
+                    hitDataIdx = Model()->ItemTextArray()->MdcaCount() - 1 - hitItem;
+                    }
+                iCloseIconHitIdx = hitDataIdx;
+                eventHandled = ETrue;
+                
                 if ( aPointerEvent.iType == TPointerEvent::EButton1Down )
                     {
-                    // pointer down - finish processing but do not forward to grid
-                    eventHandled = ETrue;
+                    // Update current item and redraw grid
+                    SetCurrentItemIndex( hitItem );
+                    DrawNow();
+                    
+                    iCloseIconRedrawTimer->Cancel();
+                    iCloseIconRedrawTimer->After(KCloseIconRedrawTime);
                     }
                 else
                     {
                     // Pointer up
-                    TInt hitDataIdx(hitItem);
-                    if ( AknLayoutUtils::LayoutMirrored() )
-                        {
-                        // Calculate logical item index
-                        hitDataIdx = Model()->ItemTextArray()->MdcaCount() - 1 - hitItem;
-                        }
-                    iCloseIconHitIdx = hitDataIdx;
-                    eventHandled = ETrue;
-                    // Hide highlight to mark close icon
-                    HideHighlight();
-                    // Update current item and redraw grid
-                    SetCurrentItemIndex( hitItem );
-                    DrawNow();
                     if ( iFastSwapGridObserver )
                         {
                         MTouchFeedback* feedback = MTouchFeedback::Instance();
@@ -140,8 +141,6 @@
                                                   ETouchFeedbackBasicButton, 
                                                   ETouchFeedbackVibra, 
                                                   aPointerEvent);
-                        iCloseIconRedrawTimer->Cancel();
-                        iCloseIconRedrawTimer->After(KCloseIconRedrawTime);
                         }
                     if ( GridBehaviour() == EHybrid )
                         {
@@ -151,6 +150,8 @@
                         {
                         Redraw();
                         }
+                    iFastSwapGridObserver->HandleCloseEventL( hitDataIdx );
+                    ResetCloseHit();
                     }
                 }
             }
@@ -168,7 +169,10 @@
             {
             itemDrawer->SetRedrawBackground( EFalse );
             }
-        CAknGrid::HandlePointerEventL( aPointerEvent );
+        if ( iAknEventHandlingEnabled )
+            {
+            CAknGrid::HandlePointerEventL( aPointerEvent );
+            }
         Redraw();
         }
     
@@ -255,9 +259,31 @@
     TSLOG_CONTEXT( CTsFastSwapGrid::CreateItemDrawerL, TSLOG_LOCAL );
     TSLOG_IN();
     
+    CFormattedCellGridData* data = CFormattedCellGridData::NewL();
+    CleanupStack::PushL( data );
+    CTsGridItemDrawer* itemDrawer =
+        new ( ELeave ) CTsGridItemDrawer( this, data );
+    iItemDrawer = itemDrawer;
+    CleanupStack::Pop( data );
+    
+    TSLOG_OUT();
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapGrid::UpdateItemDrawerLayoutDataL
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapGrid::UpdateItemDrawerLayoutDataL()
+    {
+    CTsGridItemDrawer* itemDrawer =
+        static_cast<CTsGridItemDrawer*>( ItemDrawer() );
+    
     TPixelsAndRotation screenSize;
     iEikonEnv->ScreenDevice()->GetDefaultScreenSizeAndRotation(screenSize);
     TRect availableRect = TRect( TPoint(0,0), screenSize.iPixelSize );
+    itemDrawer->SetScreenRect(availableRect);
+    
     TAknLayoutRect fastSwapAreaPane;
     TInt variety = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
     fastSwapAreaPane.LayoutRect( availableRect,
@@ -265,19 +291,19 @@
     const TInt leftOffset = iParent->Rect().iTl.iX;
     const TInt rightOffset = availableRect.Width() - iParent->Rect().iBr.iX;
     SetVisibleViewRect(fastSwapAreaPane.Rect());
+    itemDrawer->SetEdgeOffset( leftOffset, rightOffset );
     
-    CFormattedCellGridData* data = CFormattedCellGridData::NewL();
-    CleanupStack::PushL( data );
-    CTsGridItemDrawer* itemDrawer =
-        new ( ELeave ) CTsGridItemDrawer( this, data, availableRect );
-    CleanupStack::PushL( itemDrawer );
-    itemDrawer->SetEdgeOffset( leftOffset, rightOffset );
-    iItemDrawer = itemDrawer;
-    CleanupStack::Pop( itemDrawer );
-    CleanupStack::Pop( data );
     LoadCloseIconAndStrokeParams();
-    
-    TSLOG_OUT();
+    }
+
+
+// -----------------------------------------------------------------------------
+// CTsFastSwapGrid::EnableAknEventHandling
+// -----------------------------------------------------------------------------
+//
+void CTsFastSwapGrid::EnableAknEventHandling( TBool aEnable )
+    {
+    iAknEventHandlingEnabled = aEnable;
     }
 
 // -----------------------------------------------------------------------------
@@ -288,9 +314,7 @@
     {
     if ( aSource == iCloseIconRedrawTimer )
         {
-        TInt itemToClose = iCloseIconHitIdx;
         ResetCloseHit();
-        iFastSwapGridObserver->HandleCloseEventL( itemToClose );
         }
     }
 
@@ -569,13 +593,11 @@
 //
 CTsGridItemDrawer::CTsGridItemDrawer(
         CTsFastSwapGrid* aGrid,
-        CFormattedCellListBoxData* aData,
-        TRect aScreenRect )
+        CFormattedCellListBoxData* aData )
 : CFormattedCellListBoxItemDrawer( aGrid->Model(),
         NULL,
         aData ),
   iGrid( aGrid ),
-  iScreenRect( aScreenRect ),
   iStrokeColor( KRgbBlack ),
   iHighlightStrokeColor( KRgbBlack )
     {
@@ -697,6 +719,16 @@
 
 
 // -----------------------------------------------------------------------------
+// CTsGridItemDrawer::SetScreenRect
+// -----------------------------------------------------------------------------
+//
+void CTsGridItemDrawer::SetScreenRect( TRect aRect )
+    {
+    iScreenRect = aRect;
+    }
+
+
+// -----------------------------------------------------------------------------
 // CTsGridItemDrawer::DrawActualItem
 // -----------------------------------------------------------------------------
 //