Index: toolkit/inc/toolkit/awt/vclxcontainer.hxx
===================================================================
RCS file: /cvs/gsl/toolkit/toolkit/inc/toolkit/awt/vclxcontainer.hxx,v
retrieving revision 1.3
diff -u -p -u -r1.3 vclxcontainer.hxx
--- toolkit/inc/toolkit/awt/vclxcontainer.hxx	9 Sep 2005 12:43:16 -0000	1.3
+++ toolkit/inc/toolkit/awt/vclxcontainer.hxx	8 Jun 2007 13:58:57 -0000
@@ -89,6 +89,8 @@ public:	
     void SAL_CALL setTabOrder( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow > >& WindowOrder, const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& Tabs, sal_Bool GroupControl ) throw(::com::sun::star::uno::RuntimeException);
     void SAL_CALL setGroup( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow > >& Windows ) throw(::com::sun::star::uno::RuntimeException);
 
+    static void     ImplGetPropertyIds( std::list< sal_uInt16 > &aIds );
+    virtual void    GetPropertyIds( std::list< sal_uInt16 > &aIds ) { return ImplGetPropertyIds( aIds ); }
 };
 
 
Index: toolkit/inc/toolkit/awt/vclxtopwindow.hxx
===================================================================
RCS file: /cvs/gsl/toolkit/toolkit/inc/toolkit/awt/vclxtopwindow.hxx,v
retrieving revision 1.4
diff -u -p -u -r1.4 vclxtopwindow.hxx
--- toolkit/inc/toolkit/awt/vclxtopwindow.hxx	9 Sep 2005 12:46:57 -0000	1.4
+++ toolkit/inc/toolkit/awt/vclxtopwindow.hxx	8 Jun 2007 13:58:58 -0000
@@ -89,6 +89,9 @@ public:	
     void SAL_CALL toFront(  ) throw(::com::sun::star::uno::RuntimeException);
     void SAL_CALL toBack(  ) throw(::com::sun::star::uno::RuntimeException);
     void SAL_CALL setMenuBar( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XMenuBar >& xMenu ) throw(::com::sun::star::uno::RuntimeException);
+
+    static void     ImplGetPropertyIds( std::list< sal_uInt16 > &aIds );
+    virtual void    GetPropertyIds( std::list< sal_uInt16 > &aIds ) { return ImplGetPropertyIds( aIds ); }
 };
 
 
Index: toolkit/inc/toolkit/awt/vclxwindow.hxx
===================================================================
RCS file: /cvs/gsl/toolkit/toolkit/inc/toolkit/awt/vclxwindow.hxx,v
retrieving revision 1.24
diff -u -p -u -r1.24 vclxwindow.hxx
--- toolkit/inc/toolkit/awt/vclxwindow.hxx	9 Sep 2005 12:47:13 -0000	1.24
+++ toolkit/inc/toolkit/awt/vclxwindow.hxx	8 Jun 2007 13:58:58 -0000
@@ -64,6 +64,7 @@
 #ifndef _COM_SUN_STAR_BEANS_XPROPERTYCHANGELISTENER_HPP_
 #include <com/sun/star/beans/XPropertyChangeListener.hpp>
 #endif
+#include <com/sun/star/beans/XPropertySetInfo.hpp>
 #ifndef _COM_SUN_STAR_ACCESSIBILITY_XACCESSIBLE_HPP_
 #include <com/sun/star/accessibility/XAccessible.hpp>
 #endif
@@ -91,6 +92,9 @@
 #include <tools/link.hxx>
 #endif
 
+#include <stdarg.h>
+#include <list>
+
 class Window;
 class VclSimpleEvent;
 class VclWindowEvent;
@@ -102,6 +106,7 @@ struct SystemParentData;
 //	class VCLXWINDOW
 //	----------------------------------------------------
 
+class UnoPropertyArrayHelper;
 class VCLXWindowImpl;
 class TOOLKIT_DLLPUBLIC VCLXWindow :	public ::com::sun::star::awt::XWindow2,
 					public ::com::sun::star::awt::XVclWindowPeer,
@@ -110,6 +115,7 @@ class TOOLKIT_DLLPUBLIC VCLXWindow :	pub
 					public ::com::sun::star::awt::XDockableWindow,
 					public ::com::sun::star::accessibility::XAccessible,
 					public ::com::sun::star::lang::XEventListener,
+					public ::com::sun::star::beans::XPropertySetInfo,
 					public VCLXDevice
 {
 private:
@@ -132,14 +138,16 @@ private:
 	ULONG                           mnListenerLockLevel;
 	ULONG                           nDummy2;
     VCLXWindowImpl*                 mpImpl;
-	void*                           pDummy2;
+    UnoPropertyArrayHelper         *mpPropHelper;
 
-	sal_Bool						mbDisposing;
-	sal_Bool						mbDesignMode;
-	sal_Bool						mbSynthesizingVCLEvent;
+	sal_Bool						mbDisposing : 1;
+	sal_Bool						mbDesignMode : 1;
+	sal_Bool						mbSynthesizingVCLEvent : 1;
+	sal_Bool						mbWithDefaultProps : 1;
 	sal_Bool						mbDrawingOntoParent;
 
-
+    UnoPropertyArrayHelper *GetPropHelper();
+	
 protected:
 	Size			ImplCalcWindowSize( const Size& rOutSz ) const;
 	DECL_LINK(      WindowEventListener, VclSimpleEvent* );
@@ -152,8 +159,17 @@ protected:
     BOOL            IsSynthesizingVCLEvent() const          { return mbSynthesizingVCLEvent; }
     void 	    SetSystemParent_Impl( sal_Int64 nHandle );
 
+    // helper ...
+    static void     PushPropertyIds( std::list< sal_uInt16 > &aIds, int nFirstId, ...);
+    // for use in controls/
+    static void     ImplGetPropertyIds( std::list< sal_uInt16 > &aIds,
+                                        bool bWithDefaults = false );
+    virtual void    GetPropertyIds( std::list< sal_uInt16 > &aIds )
+        { return ImplGetPropertyIds( aIds, mbWithDefaultProps ); }
+
 public:
 	VCLXWindow();
+	VCLXWindow( bool bWithDefaultProps );
 	~VCLXWindow();
 
 	virtual void	SetWindow( Window* pWindow );
@@ -268,6 +281,10 @@ public:
     sal_Bool SAL_CALL isEnabled(  ) throw (::com::sun::star::uno::RuntimeException);
     sal_Bool SAL_CALL hasFocus(  ) throw (::com::sun::star::uno::RuntimeException);
 
+    // ::com::sun::star::beans::XPropertySetInfo
+    ::com::sun::star::uno::Sequence< ::com::sun::star::beans::Property > SAL_CALL getProperties(  ) throw (::com::sun::star::uno::RuntimeException);
+    ::com::sun::star::beans::Property SAL_CALL getPropertyByName( const ::rtl::OUString& aName ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException);
+    ::sal_Bool SAL_CALL hasPropertyByName( const ::rtl::OUString& Name ) throw (::com::sun::star::uno::RuntimeException);
 };
 
 #endif // _TOOLKIT_AWT_VCLXWINDOW_HXX_
Index: toolkit/inc/toolkit/awt/vclxwindows.hxx
===================================================================
RCS file: /cvs/gsl/toolkit/toolkit/inc/toolkit/awt/vclxwindows.hxx,v
retrieving revision 1.36
diff -u -p -u -r1.36 vclxwindows.hxx
--- toolkit/inc/toolkit/awt/vclxwindows.hxx	18 Oct 2006 13:13:42 -0000	1.36
+++ toolkit/inc/toolkit/awt/vclxwindows.hxx	8 Jun 2007 13:58:58 -0000
@@ -265,6 +265,10 @@ protected:
         @see GetBitmap
     */
     virtual void    ImplSetNewImage();
+public:
+    static void     ImplGetPropertyIds( std::list< sal_uInt16 > &aIds );
+    virtual void    GetPropertyIds( std::list< sal_uInt16 > &aIds ) { return ImplGetPropertyIds( aIds ); }
+
 };
 
 //	----------------------------------------------------
@@ -310,6 +314,9 @@ public:
 	// ::com::sun::star::awt::VclWindowPeer
     void SAL_CALL setProperty( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Any& Value ) throw(::com::sun::star::uno::RuntimeException);
     ::com::sun::star::uno::Any SAL_CALL getProperty( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::uno::RuntimeException);
+
+    static void     ImplGetPropertyIds( std::list< sal_uInt16 > &aIds );
+    virtual void    GetPropertyIds( std::list< sal_uInt16 > &aIds ) { return ImplGetPropertyIds( aIds ); }
 };
 
 //	----------------------------------------------------
@@ -330,6 +337,8 @@ public:
     void SAL_CALL setProperty( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Any& Value ) throw(::com::sun::star::uno::RuntimeException);
     ::com::sun::star::uno::Any SAL_CALL getProperty( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::uno::RuntimeException);
 
+    static void     ImplGetPropertyIds( std::list< sal_uInt16 > &aIds );
+    virtual void    GetPropertyIds( std::list< sal_uInt16 > &aIds ) { return ImplGetPropertyIds( aIds ); }
 protected:
     virtual void    ImplSetNewImage();
 };
@@ -387,6 +396,9 @@ public:
 	// ::com::sun::star::awt::VclWindowPeer
     void SAL_CALL setProperty( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Any& Value ) throw(::com::sun::star::uno::RuntimeException);
     ::com::sun::star::uno::Any SAL_CALL getProperty( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::uno::RuntimeException);
+
+    static void     ImplGetPropertyIds( std::list< sal_uInt16 > &aIds );
+    virtual void    GetPropertyIds( std::list< sal_uInt16 > &aIds ) { return ImplGetPropertyIds( aIds ); }
 };
 
 //	----------------------------------------------------
@@ -406,7 +418,6 @@ protected:
     void            ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent );
 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > CreateAccessibleContext();
 
-
 public:
 					VCLXRadioButton();
 
@@ -442,6 +453,9 @@ public:
 	// ::com::sun::star::awt::VclWindowPeer
     void SAL_CALL setProperty( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Any& Value ) throw(::com::sun::star::uno::RuntimeException);
     ::com::sun::star::uno::Any SAL_CALL getProperty( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::uno::RuntimeException);
+
+    static void     ImplGetPropertyIds( std::list< sal_uInt16 > &aIds );
+    virtual void    GetPropertyIds( std::list< sal_uInt16 > &aIds ) { return ImplGetPropertyIds( aIds ); }
 };
 
 //	----------------------------------------------------
@@ -470,6 +484,9 @@ public:
     void SAL_CALL setMessageText( const ::rtl::OUString& aText ) throw(::com::sun::star::uno::RuntimeException);
     ::rtl::OUString SAL_CALL getMessageText(  ) throw(::com::sun::star::uno::RuntimeException);
     sal_Int16 SAL_CALL execute(  ) throw(::com::sun::star::uno::RuntimeException);
+
+    static void     ImplGetPropertyIds( std::list< sal_uInt16 > &aIds );
+    virtual void    GetPropertyIds( std::list< sal_uInt16 > &aIds ) { return ImplGetPropertyIds( aIds ); }
 };
 
 
@@ -504,6 +521,9 @@ public:
 
 	// ::com::sun::star::awt::XDevice,
 	::com::sun::star::awt::DeviceInfo SAL_CALL getInfo() throw(::com::sun::star::uno::RuntimeException);
+
+    static void     ImplGetPropertyIds( std::list< sal_uInt16 > &aIds );
+    virtual void    GetPropertyIds( std::list< sal_uInt16 > &aIds ) { return ImplGetPropertyIds( aIds ); }
 };
 
 //	----------------------------------------------------
@@ -538,6 +558,9 @@ public:
     ::com::sun::star::awt::Size SAL_CALL getMinimumSize(  ) throw(::com::sun::star::uno::RuntimeException);
     ::com::sun::star::awt::Size SAL_CALL getPreferredSize(  ) throw(::com::sun::star::uno::RuntimeException);
     ::com::sun::star::awt::Size SAL_CALL calcAdjustedSize( const ::com::sun::star::awt::Size& rNewSize ) throw(::com::sun::star::uno::RuntimeException);
+
+    static void     ImplGetPropertyIds( std::list< sal_uInt16 > &aIds );
+    virtual void    GetPropertyIds( std::list< sal_uInt16 > &aIds ) { return ImplGetPropertyIds( aIds ); }
 };
 
 //	----------------------------------------------------
@@ -553,7 +576,6 @@ protected:
     void            ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent );
 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > CreateAccessibleContext();
 
-
 public:
 					VCLXScrollBar();
 	// ::com::sun::star::uno::XInterface
@@ -593,6 +615,9 @@ public:
 	// ::com::sun::star::awt::VclWindowPeer
     void SAL_CALL setProperty( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Any& Value ) throw(::com::sun::star::uno::RuntimeException);
     ::com::sun::star::uno::Any SAL_CALL getProperty( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::uno::RuntimeException);
+
+    static void     ImplGetPropertyIds( std::list< sal_uInt16 > &aIds );
+    virtual void    GetPropertyIds( std::list< sal_uInt16 > &aIds ) { return ImplGetPropertyIds( aIds ); }
 };
 
 //	----------------------------------------------------
@@ -658,6 +683,9 @@ public:
 	// ::com::sun::star::awt::VclWindowPeer
     void SAL_CALL setProperty( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Any& Value ) throw(::com::sun::star::uno::RuntimeException);
     ::com::sun::star::uno::Any SAL_CALL getProperty( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::uno::RuntimeException);
+
+    static void     ImplGetPropertyIds( std::list< sal_uInt16 > &aIds );
+    virtual void    GetPropertyIds( std::list< sal_uInt16 > &aIds ) { return ImplGetPropertyIds( aIds ); }
 };
 
 //	----------------------------------------------------
@@ -729,6 +757,9 @@ public:
 	// ::com::sun::star::awt::VclWindowPeer
     void SAL_CALL setProperty( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Any& Value ) throw(::com::sun::star::uno::RuntimeException);
     ::com::sun::star::uno::Any SAL_CALL getProperty( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::uno::RuntimeException);
+
+    static void     ImplGetPropertyIds( std::list< sal_uInt16 > &aIds );
+    virtual void    GetPropertyIds( std::list< sal_uInt16 > &aIds ) { return ImplGetPropertyIds( aIds ); }
 };
 
 //	----------------------------------------------------
@@ -787,6 +818,9 @@ public:
 	// ::com::sun::star::awt::VclWindowPeer
     void SAL_CALL setProperty( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Any& Value ) throw(::com::sun::star::uno::RuntimeException);
     ::com::sun::star::uno::Any SAL_CALL getProperty( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::uno::RuntimeException);
+
+    static void     ImplGetPropertyIds( std::list< sal_uInt16 > &aIds );
+    virtual void    GetPropertyIds( std::list< sal_uInt16 > &aIds ) { return ImplGetPropertyIds( aIds ); }
 };
 
 //	----------------------------------------------------
@@ -822,6 +856,9 @@ public:
     void SAL_CALL first(  ) throw(::com::sun::star::uno::RuntimeException);
     void SAL_CALL last(  ) throw(::com::sun::star::uno::RuntimeException);
     void SAL_CALL enableRepeat( sal_Bool bRepeat ) throw(::com::sun::star::uno::RuntimeException);
+
+    static void     ImplGetPropertyIds( std::list< sal_uInt16 > &aIds );
+    virtual void    GetPropertyIds( std::list< sal_uInt16 > &aIds ) { return ImplGetPropertyIds( aIds ); }
 };
 
 //	----------------------------------------------------
@@ -847,6 +884,9 @@ public:
 	// ::com::sun::star::awt::VclWindowPeer
     void SAL_CALL setProperty( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Any& Value ) throw(::com::sun::star::uno::RuntimeException);
     ::com::sun::star::uno::Any SAL_CALL getProperty( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::uno::RuntimeException);
+
+    static void     ImplGetPropertyIds( std::list< sal_uInt16 > &aIds );
+    virtual void    GetPropertyIds( std::list< sal_uInt16 > &aIds ) { return ImplGetPropertyIds( aIds ); }
 };
 
 //	----------------------------------------------------
@@ -890,6 +930,9 @@ public:
 	// ::com::sun::star::awt::VclWindowPeer
     void SAL_CALL setProperty( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Any& Value ) throw(::com::sun::star::uno::RuntimeException);
     ::com::sun::star::uno::Any SAL_CALL getProperty( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::uno::RuntimeException);
+
+    static void     ImplGetPropertyIds( std::list< sal_uInt16 > &aIds );
+    virtual void    GetPropertyIds( std::list< sal_uInt16 > &aIds ) { return ImplGetPropertyIds( aIds ); }
 };
 
 //	----------------------------------------------------
@@ -930,6 +973,9 @@ public:
 	// ::com::sun::star::awt::VclWindowPeer
     void SAL_CALL setProperty( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Any& Value ) throw(::com::sun::star::uno::RuntimeException);
     ::com::sun::star::uno::Any SAL_CALL getProperty( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::uno::RuntimeException);
+
+    static void     ImplGetPropertyIds( std::list< sal_uInt16 > &aIds );
+    virtual void    GetPropertyIds( std::list< sal_uInt16 > &aIds ) { return ImplGetPropertyIds( aIds ); }
 };
 
 //	----------------------------------------------------
@@ -972,6 +1018,9 @@ public:
 	// ::com::sun::star::awt::VclWindowPeer
     void SAL_CALL setProperty( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Any& Value ) throw(::com::sun::star::uno::RuntimeException);
     ::com::sun::star::uno::Any SAL_CALL getProperty( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::uno::RuntimeException);
+
+    static void     ImplGetPropertyIds( std::list< sal_uInt16 > &aIds );
+    virtual void    GetPropertyIds( std::list< sal_uInt16 > &aIds ) { return ImplGetPropertyIds( aIds ); }
 };
 
 //	----------------------------------------------------
@@ -1015,6 +1064,9 @@ public:
 	// ::com::sun::star::awt::VclWindowPeer
     void SAL_CALL setProperty( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Any& Value ) throw(::com::sun::star::uno::RuntimeException);
     ::com::sun::star::uno::Any SAL_CALL getProperty( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::uno::RuntimeException);
+
+    static void     ImplGetPropertyIds( std::list< sal_uInt16 > &aIds );
+    virtual void    GetPropertyIds( std::list< sal_uInt16 > &aIds ) { return ImplGetPropertyIds( aIds ); }
 };
 
 //	----------------------------------------------------
@@ -1048,6 +1100,9 @@ public:
 	// ::com::sun::star::awt::VclWindowPeer
     void SAL_CALL setProperty( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Any& Value ) throw(::com::sun::star::uno::RuntimeException);
     ::com::sun::star::uno::Any SAL_CALL getProperty( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::uno::RuntimeException);
+
+    static void     ImplGetPropertyIds( std::list< sal_uInt16 > &aIds );
+    virtual void    GetPropertyIds( std::list< sal_uInt16 > &aIds ) { return ImplGetPropertyIds( aIds ); }
 };
 
 //	----------------------------------------------------
Index: toolkit/inc/toolkit/controls/unocontrolmodel.hxx
===================================================================
RCS file: /cvs/gsl/toolkit/toolkit/inc/toolkit/controls/unocontrolmodel.hxx,v
retrieving revision 1.7.46.1
diff -u -p -u -r1.7.46.1 unocontrolmodel.hxx
--- toolkit/inc/toolkit/controls/unocontrolmodel.hxx	14 Feb 2007 15:32:17 -0000	1.7.46.1
+++ toolkit/inc/toolkit/controls/unocontrolmodel.hxx	8 Jun 2007 13:58:58 -0000
@@ -75,6 +75,8 @@
 #include <cppuhelper/propshlp.hxx>
 #include <cppuhelper/interfacecontainer.hxx>
 
+#include <list>
+
 class ImplPropertyTable; 
 
 //	----------------------------------------------------
@@ -99,6 +101,7 @@ private:
 
 protected:
 	void										ImplRegisterProperty( sal_uInt16 nPropType );
+	void										ImplRegisterProperties( const std::list< sal_uInt16 > &rIds );
 	void										ImplRegisterProperty( sal_uInt16 nPropId, const ::com::sun::star::uno::Any& rDefault );
 	::com::sun::star::uno::Sequence<sal_Int32>	ImplGetPropertyIds() const;
 	virtual void								ImplPropertyChanged( sal_uInt16 nPropId );
@@ -193,8 +196,12 @@ public:	
     void SAL_CALL setPropertyValues( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& PropertyNames, const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& Values ) throw(::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
 };
 
-
-
+#define UNO_CONTROL_MODEL_REGISTER_PROPERTIES(a) \
+    do { \
+        std::list< sal_uInt16 > aIds; \
+        a::ImplGetPropertyIds( aIds ); \
+        ImplRegisterProperties( aIds ); \
+    } while (0)
 
 #endif // _TOOLKIT_AWT_UNOCONTROLMODEL_HXX_
 
Index: toolkit/inc/toolkit/helper/unopropertyarrayhelper.hxx
===================================================================
RCS file: /cvs/gsl/toolkit/toolkit/inc/toolkit/helper/unopropertyarrayhelper.hxx,v
retrieving revision 1.3
diff -u -p -u -r1.3 unopropertyarrayhelper.hxx
--- toolkit/inc/toolkit/helper/unopropertyarrayhelper.hxx	9 Sep 2005 12:59:45 -0000	1.3
+++ toolkit/inc/toolkit/helper/unopropertyarrayhelper.hxx	8 Jun 2007 13:58:58 -0000
@@ -40,6 +40,8 @@
 
 #include <tools/table.hxx>
 
+#include <list>
+
 //	----------------------------------------------------
 //	class UnoPropertyArrayHelper
 //	----------------------------------------------------
@@ -53,6 +55,7 @@ protected:
 
 public:
 				UnoPropertyArrayHelper( const ::com::sun::star::uno::Sequence<sal_Int32>& rIDs );
+				UnoPropertyArrayHelper( const std::list< sal_uInt16 > &rIDs );
 	
 	// ::cppu::IPropertyArrayHelper
 	sal_Bool SAL_CALL fillPropertyMembersByHandle( ::rtl::OUString * pPropName, sal_Int16 * pAttributes, sal_Int32 nHandle );
Index: toolkit/source/awt/vclxcontainer.cxx
===================================================================
RCS file: /cvs/gsl/toolkit/toolkit/source/awt/vclxcontainer.cxx,v
retrieving revision 1.6
diff -u -p -u -r1.6 vclxcontainer.cxx
--- toolkit/source/awt/vclxcontainer.cxx	16 Sep 2006 12:13:10 -0000	1.6
+++ toolkit/source/awt/vclxcontainer.cxx	8 Jun 2007 13:58:58 -0000
@@ -50,6 +50,12 @@
 //	----------------------------------------------------
 //	class VCLXContainer
 //	----------------------------------------------------
+
+void VCLXContainer::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds )
+{
+    VCLXWindow::ImplGetPropertyIds( rIds );
+}
+
 VCLXContainer::VCLXContainer()
 {
 }
Index: toolkit/source/awt/vclxtopwindow.cxx
===================================================================
RCS file: /cvs/gsl/toolkit/toolkit/source/awt/vclxtopwindow.cxx,v
retrieving revision 1.8
diff -u -p -u -r1.8 vclxtopwindow.cxx
--- toolkit/source/awt/vclxtopwindow.cxx	16 Sep 2006 12:15:39 -0000	1.8
+++ toolkit/source/awt/vclxtopwindow.cxx	8 Jun 2007 13:58:59 -0000
@@ -67,6 +67,11 @@
 //	class VCLXTopWindow
 //	----------------------------------------------------
 
+void VCLXTopWindow::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds )
+{
+    VCLXContainer::ImplGetPropertyIds( rIds );
+}
+
 VCLXTopWindow::VCLXTopWindow(bool bWHWND)
     : m_bWHWND(bWHWND)
 {
Index: toolkit/source/awt/vclxwindow.cxx
===================================================================
RCS file: /cvs/gsl/toolkit/toolkit/source/awt/vclxwindow.cxx,v
retrieving revision 1.71.14.1
diff -u -p -u -r1.71.14.1 vclxwindow.cxx
--- toolkit/source/awt/vclxwindow.cxx	15 Jan 2007 15:52:05 -0000	1.71.14.1
+++ toolkit/source/awt/vclxwindow.cxx	8 Jun 2007 13:59:00 -0000
@@ -148,6 +148,8 @@
 #include <toolkit/helper/solarrelease.hxx>
 #endif
 
+#include <toolkit/helper/unopropertyarrayhelper.hxx>
+#include <stdio.h>
 using namespace ::com::sun::star;
 
 using ::com::sun::star::uno::Reference;
@@ -623,6 +625,40 @@ VCLXWindow::VCLXWindow()
 	  maTopWindowListeners( *this ),
       mnListenerLockLevel( 0 ),
       mpImpl( NULL ),
+	  mpPropHelper( NULL ),
+      mbDisposing( false ),
+      mbDesignMode( false ),
+      mbSynthesizingVCLEvent( false ),
+      mbWithDefaultProps( false ),
+      mbDrawingOntoParent( false )
+{
+	DBG_CTOR( VCLXWindow, 0 );
+
+    mpImpl = new VCLXWindowImpl( *this, GetMutex() );
+    mpImpl->acquire();
+
+    mbDisposing = sal_False;
+	mbDesignMode = sal_False;
+    mbSynthesizingVCLEvent = sal_False;
+}
+
+VCLXWindow::VCLXWindow( bool bWithDefaultProps )
+	: maEventListeners( *this ),
+	  maFocusListeners( *this ),
+	  maWindowListeners( *this ),
+	  maKeyListeners( *this ),
+	  maMouseListeners( *this ),
+	  maMouseMotionListeners( *this ),
+	  maPaintListeners( *this ),
+	  maContainerListeners( *this ),
+	  maTopWindowListeners( *this ),
+      mnListenerLockLevel( 0 ),
+      mpImpl( NULL ),
+	  mpPropHelper( NULL ),
+      mbDisposing( false ),
+      mbDesignMode( false ),
+      mbSynthesizingVCLEvent( false ),
+      mbWithDefaultProps( !!bWithDefaultProps ),
       mbDrawingOntoParent( false )
 {
 	DBG_CTOR( VCLXWindow, 0 );
@@ -644,6 +647,8 @@ VCLXWindow::~VCLXWindow()
 {
 	DBG_DTOR( VCLXWindow, 0 );
 
+    delete mpPropHelper;
+
 	if ( GetWindow() )
     {
         GetWindow()->RemoveEventListener( LINK( this, VCLXWindow, WindowEventListener ) );
@@ -1178,6 +1183,7 @@ Size VCLXWindow::ImplCalcWindowSize( con
 										SAL_STATIC_CAST( ::com::sun::star::awt::XView*, this ),
 										SAL_STATIC_CAST( ::com::sun::star::accessibility::XAccessible*, this ),
 										SAL_STATIC_CAST( ::com::sun::star::lang::XEventListener*, this ),
+										SAL_STATIC_CAST( ::com::sun::star::beans::XPropertySetInfo*, this ),
 										SAL_STATIC_CAST( ::com::sun::star::awt::XWindow2*, this ),
    										SAL_STATIC_CAST( ::com::sun::star::awt::XDockableWindow*, this ) );
 	return (aRet.hasValue() ? aRet : VCLXDevice::queryInterface( rType ));
@@ -1196,6 +1202,7 @@ IMPL_XTYPEPROVIDER_START( VCLXWindow )
 	getCppuType( ( ::com::sun::star::uno::Reference< ::com::sun::star::awt::XLayoutConstrains>* ) NULL ),
 	getCppuType( ( ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible>* ) NULL ),
 	getCppuType( ( ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener>* ) NULL ),
+	getCppuType( ( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo>* ) NULL ),
 	getCppuType( ( ::com::sun::star::uno::Reference< ::com::sun::star::awt::XView>* ) NULL ),
 	getCppuType( ( ::com::sun::star::uno::Reference< ::com::sun::star::awt::XDockableWindow>* ) NULL ),
 	VCLXDevice::getTypes()
@@ -1609,6 +1616,59 @@ namespace toolkit
     }
 }
 
+// Terminated by BASEPROPERTY_NOTFOUND (or 0)
+void VCLXWindow::PushPropertyIds( std::list< sal_uInt16 > &rIds,
+                                  int nFirstId, ...)
+{
+	va_list pVarArgs;
+	va_start( pVarArgs, nFirstId );
+
+	for ( int nId = nFirstId; nId != BASEPROPERTY_NOTFOUND;
+          nId = va_arg( pVarArgs, int ) )
+        rIds.push_back( nId );
+
+	va_end( pVarArgs );
+}
+
+void VCLXWindow::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds,
+                                     bool bWithDefaults )
+{
+    // These are common across ~all VCLXWindow derived classes
+    if( bWithDefaults )
+        PushPropertyIds( rIds,
+                         BASEPROPERTY_ALIGN,
+                         BASEPROPERTY_BACKGROUNDCOLOR,
+                         BASEPROPERTY_BORDER,
+                         BASEPROPERTY_BORDERCOLOR,
+                         BASEPROPERTY_DEFAULTCONTROL,
+                         BASEPROPERTY_ENABLED,
+                         BASEPROPERTY_FONTDESCRIPTOR,
+                         BASEPROPERTY_HELPTEXT,
+                         BASEPROPERTY_HELPURL,
+                         BASEPROPERTY_TEXT,
+                         BASEPROPERTY_PRINTABLE,
+                         BASEPROPERTY_TABSTOP,
+                         0);
+    
+    // lovely hack from:
+    // void UnoControlModel::ImplRegisterProperty( sal_uInt16 nPropId )
+    std::list< sal_uInt16 >::const_iterator iter;
+    for( iter = rIds.begin(); iter != rIds.end(); iter++) {
+        if( *iter == BASEPROPERTY_FONTDESCRIPTOR )
+        {
+            // some properties are not included in the FontDescriptor, but everytime
+            // when we have a FontDescriptor we want to have these properties too.
+            // => Easier to register the here, istead everywhere where I register the FontDescriptor...
+            
+            rIds.push_back( BASEPROPERTY_TEXTCOLOR );
+            rIds.push_back( BASEPROPERTY_TEXTLINECOLOR );
+            rIds.push_back( BASEPROPERTY_FONTRELIEF );
+            rIds.push_back( BASEPROPERTY_FONTEMPHASISMARK );
+            break;
+        }
+    }
+}
+
 void VCLXWindow::setProperty( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Any& Value ) throw(::com::sun::star::uno::RuntimeException)
 {
 	::vos::OGuard aGuard( GetMutex() );
@@ -2028,6 +2070,15 @@ void VCLXWindow::setProperty( const ::rt
             case BASEPROPERTY_BORDERCOLOR:
                 ::toolkit::setColorSettings( pWindow, Value, &StyleSettings::SetMonoColor, &StyleSettings::GetMonoColor);
                 break;
+		    case BASEPROPERTY_DEFAULTCONTROL:
+			{
+			    rtl::OUString aName;
+				Value >>= aName;
+			    fprintf (stderr, " default control '%s'\n",
+						 rtl::OUStringToOString (aName,
+												 RTL_TEXTENCODING_UTF8).getStr());
+			    break;
+			}
 		}
 	}
 }
@@ -2621,3 +2672,34 @@ sal_Bool SAL_CALL VCLXWindow::hasFocus( 
         return FALSE;
 }
 
+// ::com::sun::star::beans::XPropertySetInfo
+
+UnoPropertyArrayHelper *
+VCLXWindow::GetPropHelper()
+{
+	::vos::OGuard aGuard( GetMutex() );
+    if (mpPropHelper == NULL)
+	{
+	    std::list< sal_uInt16 > aIDs;
+		GetPropertyIds( aIDs );
+		mpPropHelper = new UnoPropertyArrayHelper( aIDs );
+	}
+	return mpPropHelper;
+}
+
+::com::sun::star::uno::Sequence< ::com::sun::star::beans::Property > SAL_CALL
+VCLXWindow::getProperties() throw (::com::sun::star::uno::RuntimeException)
+{
+    return GetPropHelper()->getProperties();
+}
+::com::sun::star::beans::Property SAL_CALL
+VCLXWindow::getPropertyByName( const ::rtl::OUString& rName ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException)
+{
+    return GetPropHelper()->getPropertyByName( rName );
+}
+
+::sal_Bool SAL_CALL
+VCLXWindow::hasPropertyByName( const ::rtl::OUString& rName ) throw (::com::sun::star::uno::RuntimeException)
+{
+    return GetPropHelper()->hasPropertyByName( rName );
+}
Index: toolkit/source/awt/vclxwindows.cxx
===================================================================
RCS file: /cvs/gsl/toolkit/toolkit/source/awt/vclxwindows.cxx,v
retrieving revision 1.60
diff -u -p -u -r1.60 vclxwindows.cxx
--- toolkit/source/awt/vclxwindows.cxx	21 Nov 2006 17:02:58 -0000	1.60
+++ toolkit/source/awt/vclxwindows.cxx	8 Jun 2007 13:59:01 -0000
@@ -280,6 +280,12 @@ namespace toolkit
 //	----------------------------------------------------
 //	class VCLXImageConsumer
 //	----------------------------------------------------
+
+void VCLXImageConsumer::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds )
+{
+    VCLXWindow::ImplGetPropertyIds( rIds );
+}
+
 void VCLXImageConsumer::ImplSetNewImage()
 {
     OSL_PRECOND( GetWindow(), "VCLXImageConsumer::ImplSetNewImage: window is required to be not-NULL!" );
@@ -452,6 +458,37 @@ void VCLXImageConsumer::setProperty( con
 //--------------------------------------------------------------------
 //	class VCLXButton
 //	----------------------------------------------------
+
+void VCLXButton::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds )
+{
+    PushPropertyIds( rIds,
+                     BASEPROPERTY_BACKGROUNDCOLOR,
+                     BASEPROPERTY_DEFAULTBUTTON,
+                     BASEPROPERTY_DEFAULTCONTROL,
+                     BASEPROPERTY_ENABLED,
+                     BASEPROPERTY_FONTDESCRIPTOR,
+                     BASEPROPERTY_GRAPHIC,
+                     BASEPROPERTY_HELPTEXT,
+                     BASEPROPERTY_HELPURL,
+                     BASEPROPERTY_IMAGEALIGN,
+                     BASEPROPERTY_IMAGEPOSITION,
+                     BASEPROPERTY_IMAGEURL,
+                     BASEPROPERTY_LABEL,
+                     BASEPROPERTY_PRINTABLE,
+                     BASEPROPERTY_PUSHBUTTONTYPE,
+                     BASEPROPERTY_REPEAT,
+                     BASEPROPERTY_REPEAT_DELAY,
+                     BASEPROPERTY_STATE,
+                     BASEPROPERTY_TABSTOP,
+                     BASEPROPERTY_TOGGLE,
+                     BASEPROPERTY_FOCUSONCLICK,
+                     BASEPROPERTY_MULTILINE,
+                     BASEPROPERTY_ALIGN,
+                     BASEPROPERTY_VERTICALALIGN,
+                     0);
+    VCLXImageConsumer::ImplGetPropertyIds( rIds );
+}
+
 VCLXButton::VCLXButton()
     :maActionListeners( *this )
     ,maItemListeners( *this )
@@ -693,6 +730,26 @@ void VCLXButton::ProcessWindowEvent( con
 //	----------------------------------------------------
 //	class VCLXImageControl
 //	----------------------------------------------------
+
+void VCLXImageControl::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds )
+{
+    PushPropertyIds( rIds,
+                     BASEPROPERTY_BACKGROUNDCOLOR,
+                     BASEPROPERTY_BORDER,
+                     BASEPROPERTY_BORDERCOLOR,
+                     BASEPROPERTY_DEFAULTCONTROL,
+                     BASEPROPERTY_ENABLED,
+                     BASEPROPERTY_GRAPHIC,
+                     BASEPROPERTY_HELPTEXT,
+                     BASEPROPERTY_HELPURL,
+                     BASEPROPERTY_IMAGEURL,
+                     BASEPROPERTY_PRINTABLE,
+                     BASEPROPERTY_SCALEIMAGE,
+                     BASEPROPERTY_TABSTOP,
+                     0);
+    VCLXImageConsumer::ImplGetPropertyIds( rIds );
+}
+
 VCLXImageControl::VCLXImageControl()
 {
 }
@@ -785,6 +842,33 @@ void VCLXImageControl::setProperty( cons
 //	----------------------------------------------------
 //	class VCLXCheckBox
 //	----------------------------------------------------
+
+
+void VCLXCheckBox::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds )
+{
+    PushPropertyIds( rIds,
+                     BASEPROPERTY_DEFAULTCONTROL,
+                     BASEPROPERTY_ENABLED,
+                     BASEPROPERTY_FONTDESCRIPTOR,
+                     BASEPROPERTY_GRAPHIC,
+                     BASEPROPERTY_HELPTEXT,
+                     BASEPROPERTY_HELPURL,
+                     BASEPROPERTY_IMAGEPOSITION,
+                     BASEPROPERTY_IMAGEURL,
+                     BASEPROPERTY_LABEL,
+                     BASEPROPERTY_PRINTABLE,
+                     BASEPROPERTY_STATE,
+                     BASEPROPERTY_TABSTOP,
+                     BASEPROPERTY_TRISTATE,
+                     BASEPROPERTY_VISUALEFFECT,
+                     BASEPROPERTY_MULTILINE,
+                     BASEPROPERTY_BACKGROUNDCOLOR,
+                     BASEPROPERTY_ALIGN,
+                     BASEPROPERTY_VERTICALALIGN,
+                     0);
+    VCLXImageConsumer::ImplGetPropertyIds( rIds );
+}
+
 VCLXCheckBox::VCLXCheckBox() :  maActionListeners( *this ), maItemListeners( *this )
 {
 }
@@ -1057,6 +1141,31 @@ void VCLXCheckBox::ProcessWindowEvent( c
 //	----------------------------------------------------
 //	class VCLXRadioButton
 //	----------------------------------------------------
+void VCLXRadioButton::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds )
+{
+    PushPropertyIds( rIds,
+                     BASEPROPERTY_DEFAULTCONTROL,
+                     BASEPROPERTY_ENABLED,
+                     BASEPROPERTY_FONTDESCRIPTOR,
+                     BASEPROPERTY_GRAPHIC,
+                     BASEPROPERTY_HELPTEXT,
+                     BASEPROPERTY_HELPURL,
+                     BASEPROPERTY_IMAGEPOSITION,
+                     BASEPROPERTY_IMAGEURL,
+                     BASEPROPERTY_LABEL,
+                     BASEPROPERTY_PRINTABLE,
+                     BASEPROPERTY_STATE,
+                     BASEPROPERTY_TABSTOP,
+                     BASEPROPERTY_VISUALEFFECT,
+                     BASEPROPERTY_MULTILINE,
+                     BASEPROPERTY_BACKGROUNDCOLOR,
+                     BASEPROPERTY_ALIGN,
+                     BASEPROPERTY_VERTICALALIGN,
+                     0);
+    VCLXImageConsumer::ImplGetPropertyIds( rIds );
+}
+
+
 VCLXRadioButton::VCLXRadioButton() : maItemListeners( *this ), maActionListeners( *this )
 {
 }
@@ -1311,6 +1420,11 @@ void VCLXRadioButton::ImplClickedOrToggl
 //	----------------------------------------------------
 //	class VCLXSpinField
 //	----------------------------------------------------
+void VCLXSpinField::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds )
+{
+    VCLXEdit::ImplGetPropertyIds( rIds );
+}
+
 VCLXSpinField::VCLXSpinField() : maSpinListeners( *this )
 {
 }
@@ -1438,6 +1552,31 @@ void VCLXSpinField::ProcessWindowEvent( 
 //	----------------------------------------------------
 //	class VCLXListBox
 //	----------------------------------------------------
+void VCLXListBox::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds )
+{
+    PushPropertyIds( rIds,
+                     BASEPROPERTY_BACKGROUNDCOLOR,
+                     BASEPROPERTY_BORDER,
+                     BASEPROPERTY_BORDERCOLOR,
+                     BASEPROPERTY_DEFAULTCONTROL,
+                     BASEPROPERTY_DROPDOWN,
+                     BASEPROPERTY_ENABLED,
+                     BASEPROPERTY_FONTDESCRIPTOR,
+                     BASEPROPERTY_HELPTEXT,
+                     BASEPROPERTY_HELPURL,
+                     BASEPROPERTY_LINECOUNT,
+                     BASEPROPERTY_MULTISELECTION,
+                     BASEPROPERTY_PRINTABLE,
+                     BASEPROPERTY_SELECTEDITEMS,
+                     BASEPROPERTY_STRINGITEMLIST,
+                     BASEPROPERTY_TABSTOP,
+                     BASEPROPERTY_READONLY,
+                     BASEPROPERTY_ALIGN,
+                     0);
+    VCLXWindow::ImplGetPropertyIds( rIds );
+}
+
+
 VCLXListBox::VCLXListBox()
 	: maActionListeners( *this ),
 	  maItemListeners( *this )
@@ -1995,6 +2134,12 @@ void VCLXListBox::ImplCallItemListeners(
 //	----------------------------------------------------
 //	class VCLXMessageBox
 //	----------------------------------------------------
+
+void VCLXMessageBox::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds )
+{
+    VCLXTopWindow::ImplGetPropertyIds( rIds );
+}
+
 VCLXMessageBox::VCLXMessageBox()
 {
 }
@@ -2070,6 +2215,11 @@ sal_Int16 VCLXMessageBox::execute() thro
 //	----------------------------------------------------
 //	class VCLXDialog
 //	----------------------------------------------------
+void VCLXDialog::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds )
+{
+    VCLXTopWindow::ImplGetPropertyIds( rIds );
+}
+
 VCLXDialog::VCLXDialog()
 {
 }
@@ -2178,6 +2328,27 @@ void SAL_CALL VCLXDialog::draw( sal_Int3
 //	----------------------------------------------------
 //	class VCLXFixedText
 //	----------------------------------------------------
+void VCLXFixedText::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds )
+{
+    PushPropertyIds( rIds,
+                     BASEPROPERTY_ALIGN,
+                     BASEPROPERTY_BACKGROUNDCOLOR,
+                     BASEPROPERTY_BORDER,
+                     BASEPROPERTY_BORDERCOLOR,
+                     BASEPROPERTY_DEFAULTCONTROL,
+                     BASEPROPERTY_ENABLED,
+                     BASEPROPERTY_FONTDESCRIPTOR,
+                     BASEPROPERTY_HELPTEXT,
+                     BASEPROPERTY_HELPURL,
+                     BASEPROPERTY_LABEL,
+                     BASEPROPERTY_MULTILINE,
+                     BASEPROPERTY_PRINTABLE,
+                     BASEPROPERTY_TABSTOP,
+                     BASEPROPERTY_VERTICALALIGN,
+                     0);
+    VCLXWindow::ImplGetPropertyIds( rIds );
+}
+
 VCLXFixedText::VCLXFixedText()
 {
 }
@@ -2296,6 +2467,32 @@ short VCLXFixedText::getAlignment() thro
 //	----------------------------------------------------
 //	class VCLXScrollBar
 //	----------------------------------------------------
+void VCLXScrollBar::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds )
+{
+    PushPropertyIds( rIds,
+                     BASEPROPERTY_BACKGROUNDCOLOR,
+                     BASEPROPERTY_BLOCKINCREMENT,
+                     BASEPROPERTY_BORDER,
+                     BASEPROPERTY_BORDERCOLOR,
+                     BASEPROPERTY_DEFAULTCONTROL,
+                     BASEPROPERTY_ENABLED,
+                     BASEPROPERTY_HELPTEXT,
+                     BASEPROPERTY_HELPURL,
+                     BASEPROPERTY_LINEINCREMENT,
+                     BASEPROPERTY_LIVE_SCROLL,
+                     BASEPROPERTY_ORIENTATION,
+                     BASEPROPERTY_PRINTABLE,
+                     BASEPROPERTY_REPEAT_DELAY,
+                     BASEPROPERTY_SCROLLVALUE,
+                     BASEPROPERTY_SCROLLVALUE_MAX,
+                     BASEPROPERTY_SCROLLVALUE_MIN,
+                     BASEPROPERTY_SYMBOL_COLOR,
+                     BASEPROPERTY_TABSTOP,
+                     BASEPROPERTY_VISIBLESIZE,
+                     0);
+    VCLXWindow::ImplGetPropertyIds( rIds );
+}
+
 VCLXScrollBar::VCLXScrollBar() : maAdjustmentListeners( *this )
 {
 }
@@ -2733,6 +2930,34 @@ void VCLXScrollBar::ProcessWindowEvent( 
 //	class VCLXEdit
 //	----------------------------------------------------
 
+void VCLXEdit::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds )
+{
+    PushPropertyIds( rIds,
+                     BASEPROPERTY_ALIGN, 
+                     BASEPROPERTY_BACKGROUNDCOLOR, 
+                     BASEPROPERTY_BORDER, 
+                     BASEPROPERTY_BORDERCOLOR, 
+                     BASEPROPERTY_DEFAULTCONTROL, 
+                     BASEPROPERTY_ECHOCHAR, 
+                     BASEPROPERTY_ENABLED, 
+                     BASEPROPERTY_FONTDESCRIPTOR, 
+                     BASEPROPERTY_HARDLINEBREAKS, 
+                     BASEPROPERTY_HELPTEXT, 
+                     BASEPROPERTY_HELPURL, 
+                     BASEPROPERTY_HSCROLL, 
+                     BASEPROPERTY_LINE_END_FORMAT, 
+                     BASEPROPERTY_MAXTEXTLEN, 
+                     BASEPROPERTY_MULTILINE, 
+                     BASEPROPERTY_PRINTABLE, 
+                     BASEPROPERTY_READONLY, 
+                     BASEPROPERTY_TABSTOP, 
+                     BASEPROPERTY_TEXT, 
+                     BASEPROPERTY_VSCROLL, 
+                     BASEPROPERTY_HIDEINACTIVESELECTION,
+                     0);
+    VCLXWindow::ImplGetPropertyIds( rIds );
+}
+
 VCLXEdit::VCLXEdit() : maTextListeners( *this )
 {
 }
@@ -3075,6 +3300,33 @@ void VCLXEdit::ProcessWindowEvent( const
 //	----------------------------------------------------
 //	class VCLXComboBox
 //	----------------------------------------------------
+
+void VCLXComboBox::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds )
+{
+    PushPropertyIds( rIds,
+                     BASEPROPERTY_AUTOCOMPLETE,
+                     BASEPROPERTY_BACKGROUNDCOLOR,
+                     BASEPROPERTY_BORDER,
+                     BASEPROPERTY_BORDERCOLOR,
+                     BASEPROPERTY_DEFAULTCONTROL,
+                     BASEPROPERTY_DROPDOWN,
+                     BASEPROPERTY_ENABLED,
+                     BASEPROPERTY_FONTDESCRIPTOR,
+                     BASEPROPERTY_HELPTEXT,
+                     BASEPROPERTY_HELPURL,
+                     BASEPROPERTY_LINECOUNT,
+                     BASEPROPERTY_MAXTEXTLEN,
+                     BASEPROPERTY_PRINTABLE,
+                     BASEPROPERTY_READONLY,
+                     BASEPROPERTY_STRINGITEMLIST,
+                     BASEPROPERTY_TABSTOP,
+                     BASEPROPERTY_TEXT,
+                     BASEPROPERTY_HIDEINACTIVESELECTION,
+                     BASEPROPERTY_ALIGN,
+                     0);
+    VCLXEdit::ImplGetPropertyIds( rIds );
+}
+
 VCLXComboBox::VCLXComboBox()
 	: maActionListeners( *this ), maItemListeners( *this )
 {
@@ -3451,6 +3703,14 @@ void VCLXComboBox::getColumnsAndLines( s
 //	----------------------------------------------------
 //	class VCLXFormattedSpinField
 //	----------------------------------------------------
+void VCLXFormattedSpinField::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds )
+{
+    // Interestingly in the UnoControl API this is
+    // - not derived from XEdit ultimately, (correct ?) - so cut this here ...
+//    VCLXSpinField::ImplGetPropertyIds( rIds );
+    VCLXWindow::ImplGetPropertyIds( rIds );
+}
+
 VCLXFormattedSpinField::VCLXFormattedSpinField()
 {
 }
@@ -3548,6 +3808,38 @@ void VCLXFormattedSpinField::setProperty
 //	----------------------------------------------------
 //	class VCLXDateField
 //	----------------------------------------------------
+
+void VCLXDateField::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds )
+{
+    PushPropertyIds( rIds,
+                     BASEPROPERTY_BACKGROUNDCOLOR,
+                     BASEPROPERTY_BORDER,
+                     BASEPROPERTY_BORDERCOLOR,
+                     BASEPROPERTY_DATE,
+                     BASEPROPERTY_DATEMAX,
+                     BASEPROPERTY_DATEMIN,
+                     BASEPROPERTY_DATESHOWCENTURY,
+                     BASEPROPERTY_DEFAULTCONTROL,
+                     BASEPROPERTY_DROPDOWN,
+                     BASEPROPERTY_ENABLED,
+                     BASEPROPERTY_EXTDATEFORMAT,
+                     BASEPROPERTY_FONTDESCRIPTOR,
+                     BASEPROPERTY_HELPTEXT,
+                     BASEPROPERTY_HELPURL,
+                     BASEPROPERTY_PRINTABLE,
+                     BASEPROPERTY_READONLY,
+                     BASEPROPERTY_REPEAT,
+                     BASEPROPERTY_REPEAT_DELAY,
+                     BASEPROPERTY_SPIN,
+                     BASEPROPERTY_STRICTFORMAT,
+                     BASEPROPERTY_TABSTOP,
+                     BASEPROPERTY_ENFORCE_FORMAT,
+                     BASEPROPERTY_TEXT,
+                     BASEPROPERTY_HIDEINACTIVESELECTION,
+                     0);
+    VCLXFormattedSpinField::ImplGetPropertyIds( rIds );
+}
+
 VCLXDateField::VCLXDateField()
 {
 }
@@ -3854,6 +4146,36 @@ sal_Bool VCLXDateField::isStrictFormat()
 //	----------------------------------------------------
 //	class VCLXTimeField
 //	----------------------------------------------------
+
+void VCLXTimeField::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds )
+{
+    PushPropertyIds( rIds,
+                     BASEPROPERTY_BACKGROUNDCOLOR,
+                     BASEPROPERTY_BORDER,
+                     BASEPROPERTY_BORDERCOLOR,
+                     BASEPROPERTY_DEFAULTCONTROL,
+                     BASEPROPERTY_ENABLED,
+                     BASEPROPERTY_EXTTIMEFORMAT,
+                     BASEPROPERTY_FONTDESCRIPTOR,
+                     BASEPROPERTY_HELPTEXT,
+                     BASEPROPERTY_HELPURL,
+                     BASEPROPERTY_PRINTABLE,
+                     BASEPROPERTY_READONLY,
+                     BASEPROPERTY_REPEAT,
+                     BASEPROPERTY_REPEAT_DELAY,
+                     BASEPROPERTY_SPIN,
+                     BASEPROPERTY_STRICTFORMAT,
+                     BASEPROPERTY_TABSTOP,
+                     BASEPROPERTY_TIME,
+                     BASEPROPERTY_TIMEMAX,
+                     BASEPROPERTY_TIMEMIN,
+                     BASEPROPERTY_ENFORCE_FORMAT,
+                     BASEPROPERTY_TEXT,
+                     BASEPROPERTY_HIDEINACTIVESELECTION,
+                     0);
+    VCLXFormattedSpinField::ImplGetPropertyIds( rIds );
+}
+
 VCLXTimeField::VCLXTimeField()
 {
 }
@@ -4121,6 +4443,37 @@ void VCLXTimeField::setProperty( const :
 //	----------------------------------------------------
 //	class VCLXNumericField
 //	----------------------------------------------------
+
+void VCLXNumericField::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds )
+{
+    PushPropertyIds( rIds,
+                     BASEPROPERTY_BACKGROUNDCOLOR,
+                     BASEPROPERTY_BORDER,
+                     BASEPROPERTY_BORDERCOLOR,
+                     BASEPROPERTY_DECIMALACCURACY,
+                     BASEPROPERTY_DEFAULTCONTROL,
+                     BASEPROPERTY_ENABLED,
+                     BASEPROPERTY_FONTDESCRIPTOR,
+                     BASEPROPERTY_HELPTEXT,
+                     BASEPROPERTY_HELPURL,
+                     BASEPROPERTY_NUMSHOWTHOUSANDSEP,
+                     BASEPROPERTY_PRINTABLE,
+                     BASEPROPERTY_READONLY,
+                     BASEPROPERTY_REPEAT,
+                     BASEPROPERTY_REPEAT_DELAY,
+                     BASEPROPERTY_SPIN,
+                     BASEPROPERTY_STRICTFORMAT,
+                     BASEPROPERTY_TABSTOP,
+                     BASEPROPERTY_VALUEMAX_DOUBLE,
+                     BASEPROPERTY_VALUEMIN_DOUBLE,
+                     BASEPROPERTY_VALUESTEP_DOUBLE,
+                     BASEPROPERTY_VALUE_DOUBLE,
+                     BASEPROPERTY_ENFORCE_FORMAT,
+                     BASEPROPERTY_HIDEINACTIVESELECTION,
+                     0);
+    VCLXFormattedSpinField::ImplGetPropertyIds( rIds );
+}
+
 VCLXNumericField::VCLXNumericField()
 {
 }
@@ -4427,6 +4780,39 @@ void VCLXNumericField::setProperty( cons
 //	----------------------------------------------------
 //	class VCLXCurrencyField
 //	----------------------------------------------------
+
+void VCLXCurrencyField::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds )
+{
+    PushPropertyIds( rIds,
+                     BASEPROPERTY_BACKGROUNDCOLOR,
+                     BASEPROPERTY_BORDER,
+                     BASEPROPERTY_BORDERCOLOR,
+                     BASEPROPERTY_CURRENCYSYMBOL,
+                     BASEPROPERTY_CURSYM_POSITION,
+                     BASEPROPERTY_DECIMALACCURACY,
+                     BASEPROPERTY_DEFAULTCONTROL,
+                     BASEPROPERTY_ENABLED,
+                     BASEPROPERTY_FONTDESCRIPTOR,
+                     BASEPROPERTY_HELPTEXT,
+                     BASEPROPERTY_HELPURL,
+                     BASEPROPERTY_NUMSHOWTHOUSANDSEP,
+                     BASEPROPERTY_PRINTABLE,
+                     BASEPROPERTY_READONLY,
+                     BASEPROPERTY_REPEAT,
+                     BASEPROPERTY_REPEAT_DELAY,
+                     BASEPROPERTY_SPIN,
+                     BASEPROPERTY_STRICTFORMAT,
+                     BASEPROPERTY_TABSTOP,
+                     BASEPROPERTY_VALUEMAX_DOUBLE,
+                     BASEPROPERTY_VALUEMIN_DOUBLE,
+                     BASEPROPERTY_VALUESTEP_DOUBLE,
+                     BASEPROPERTY_VALUE_DOUBLE,
+                     BASEPROPERTY_ENFORCE_FORMAT,
+                     BASEPROPERTY_HIDEINACTIVESELECTION,
+                     0);
+    VCLXFormattedSpinField::ImplGetPropertyIds( rIds );
+}
+
 VCLXCurrencyField::VCLXCurrencyField()
 {
 }
@@ -4744,6 +5130,31 @@ void VCLXCurrencyField::setProperty( con
 //	----------------------------------------------------
 //	class VCLXPatternField
 //	----------------------------------------------------
+
+void VCLXPatternField::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds )
+{
+    PushPropertyIds( rIds,
+                     BASEPROPERTY_BACKGROUNDCOLOR,
+                     BASEPROPERTY_BORDER,
+                     BASEPROPERTY_BORDERCOLOR,
+                     BASEPROPERTY_DEFAULTCONTROL,
+                     BASEPROPERTY_EDITMASK,
+                     BASEPROPERTY_ENABLED,
+                     BASEPROPERTY_FONTDESCRIPTOR,
+                     BASEPROPERTY_HELPTEXT,
+                     BASEPROPERTY_HELPURL,
+                     BASEPROPERTY_LITERALMASK,
+                     BASEPROPERTY_MAXTEXTLEN,
+                     BASEPROPERTY_PRINTABLE,
+                     BASEPROPERTY_READONLY,
+                     BASEPROPERTY_STRICTFORMAT,
+                     BASEPROPERTY_TABSTOP,
+                     BASEPROPERTY_TEXT,
+                     BASEPROPERTY_HIDEINACTIVESELECTION,
+                     0);
+    VCLXFormattedSpinField::ImplGetPropertyIds( rIds );
+}
+
 VCLXPatternField::VCLXPatternField()
 {
 }
Index: toolkit/source/controls/tkscrollbar.cxx
===================================================================
RCS file: /cvs/gsl/toolkit/toolkit/source/controls/tkscrollbar.cxx,v
retrieving revision 1.7
diff -u -p -u -r1.7 tkscrollbar.cxx
--- toolkit/source/controls/tkscrollbar.cxx	16 Sep 2006 12:18:48 -0000	1.7
+++ toolkit/source/controls/tkscrollbar.cxx	8 Jun 2007 13:59:01 -0000
@@ -53,6 +53,9 @@
 #include <tools/debug.hxx>
 #endif
 
+// for introspection
+#include <toolkit/awt/vclxwindows.hxx>
+
 //........................................................................
 namespace toolkit
 {
@@ -66,6 +69,7 @@ namespace toolkit
 	//--------------------------------------------------------------------
     UnoControlScrollBarModel::UnoControlScrollBarModel()
     {
+#ifdef VERIFY_PROPS
 	    ImplRegisterProperty( BASEPROPERTY_BACKGROUNDCOLOR );
 	    ImplRegisterProperty( BASEPROPERTY_BLOCKINCREMENT );
         ImplRegisterProperty( BASEPROPERTY_BORDER );
@@ -85,6 +89,8 @@ namespace toolkit
         ImplRegisterProperty( BASEPROPERTY_SYMBOL_COLOR );
         ImplRegisterProperty( BASEPROPERTY_TABSTOP );
         ImplRegisterProperty( BASEPROPERTY_VISIBLESIZE );
+#endif
+    UNO_CONTROL_MODEL_REGISTER_PROPERTIES( VCLXScrollBar );
     }
 
 	//--------------------------------------------------------------------
Index: toolkit/source/controls/unocontrolmodel.cxx
===================================================================
RCS file: /cvs/gsl/toolkit/toolkit/source/controls/unocontrolmodel.cxx,v
retrieving revision 1.52.22.1
diff -u -p -u -r1.52.22.1 unocontrolmodel.cxx
--- toolkit/source/controls/unocontrolmodel.cxx	14 Feb 2007 15:33:23 -0000	1.52.22.1
+++ toolkit/source/controls/unocontrolmodel.cxx	8 Jun 2007 13:59:02 -0000
@@ -519,6 +520,32 @@ void UnoControlModel::ImplRegisterProper
         ImplRegisterProperty( BASEPROPERTY_FONTRELIEF );
         ImplRegisterProperty( BASEPROPERTY_FONTEMPHASISMARK );
     }
+}
+
+void UnoControlModel::ImplRegisterProperties( const std::list< sal_uInt16 > &rIds )
+{
+#ifdef VERIFY_PROPS // just check we have the right answer ...
+    if (mpData->Count() > rIds.size()) { // NB. we may have a complete set ...
+        fprintf (stderr, "Property mismatch %d vs %d\n",
+                 (int)mpData->Count(), (int) rIds.size());
+        fscanf (stderr, "");
+    }
+    std::list< sal_uInt16 >::const_iterator iter;
+    for( iter = rIds.begin(); iter != rIds.end(); iter++)
+    {
+        if ( mpData->Get (*iter) == NULL )
+        {
+            rtl::OString aName = rtl::OUStringToOString( GetPropertyName( *iter ), RTL_TEXTENCODING_UTF8 );
+            fprintf( stderr, "   missing property %d (%s)\n", *iter, aName.getStr() );
+        }
+    }
+#else
+    std::list< sal_uInt16 >::const_iterator iter;
+    for( iter = rIds.begin(); iter != rIds.end(); iter++) {
+        if( !ImplHasProperty( *iter ) )
+            ImplRegisterProperty( *iter, ImplGetDefaultValue( *iter ) );
+    }
+#endif
 }
 
 // ::com::sun::star::uno::XInterface
Index: toolkit/source/controls/unocontrols.cxx
===================================================================
RCS file: /cvs/gsl/toolkit/toolkit/source/controls/unocontrols.cxx,v
retrieving revision 1.79.2.1
diff -u -p -u -r1.79.2.1 unocontrols.cxx
--- toolkit/source/controls/unocontrols.cxx	14 Feb 2007 15:33:38 -0000	1.79.2.1
+++ toolkit/source/controls/unocontrols.cxx	8 Jun 2007 13:59:02 -0000
@@ -96,6 +96,9 @@
 #include <toolkit/helper/imagealign.hxx>
 #endif
 
+// for introspection
+#include <toolkit/awt/vclxwindows.hxx>
+
 #ifndef _CPPUHELPER_TYPEPROVIDER_HXX_
 #include <cppuhelper/typeprovider.hxx>
 #endif
@@ -186,6 +189,7 @@ static void lcl_knitImageComponents( con
 //	----------------------------------------------------
 UnoControlEditModel::UnoControlEditModel()
 {
+#ifdef VERIFY_PROPS
 	ImplRegisterProperty( BASEPROPERTY_ALIGN );
 	ImplRegisterProperty( BASEPROPERTY_BACKGROUNDCOLOR );
 	ImplRegisterProperty( BASEPROPERTY_BORDER );
@@ -207,6 +211,8 @@ UnoControlEditModel::UnoControlEditModel
 	ImplRegisterProperty( BASEPROPERTY_TEXT );
 	ImplRegisterProperty( BASEPROPERTY_VSCROLL );
 	ImplRegisterProperty( BASEPROPERTY_HIDEINACTIVESELECTION );
+#endif
+    UNO_CONTROL_MODEL_REGISTER_PROPERTIES( VCLXEdit );
 }
 
 ::rtl::OUString UnoControlEditModel::getServiceName( ) throw(::com::sun::star::uno::RuntimeException)
@@ -845,6 +851,7 @@ void ImageConsumerControl::ImplSetPeerPr
 //	----------------------------------------------------
 UnoControlButtonModel::UnoControlButtonModel()
 {
+#ifdef VERIFY_PROPS
 	ImplRegisterProperty( BASEPROPERTY_BACKGROUNDCOLOR );
 	ImplRegisterProperty( BASEPROPERTY_DEFAULTBUTTON );
 	ImplRegisterProperty( BASEPROPERTY_DEFAULTCONTROL );
@@ -868,6 +875,8 @@ UnoControlButtonModel::UnoControlButtonM
 	ImplRegisterProperty( BASEPROPERTY_MULTILINE );
 	ImplRegisterProperty( BASEPROPERTY_ALIGN );
 	ImplRegisterProperty( BASEPROPERTY_VERTICALALIGN );
+#endif
+    UNO_CONTROL_MODEL_REGISTER_PROPERTIES( VCLXButton );
 
     osl_incrementInterlockedCount( &m_refCount );
     {
@@ -1062,6 +1071,7 @@ awt::Size UnoButtonControl::calcAdjusted
 //	----------------------------------------------------
 UnoControlImageControlModel::UnoControlImageControlModel()
 {
+#ifdef VERIFY_PROPS
 	ImplRegisterProperty( BASEPROPERTY_BACKGROUNDCOLOR );
 	ImplRegisterProperty( BASEPROPERTY_BORDER );
 	ImplRegisterProperty( BASEPROPERTY_BORDERCOLOR );
@@ -1074,6 +1084,8 @@ UnoControlImageControlModel::UnoControlI
 	ImplRegisterProperty( BASEPROPERTY_PRINTABLE );
 	ImplRegisterProperty( BASEPROPERTY_SCALEIMAGE );
 	ImplRegisterProperty( BASEPROPERTY_TABSTOP );
+#endif
+    UNO_CONTROL_MODEL_REGISTER_PROPERTIES( VCLXImageControl );
 }
 
 ::rtl::OUString UnoControlImageControlModel::getServiceName() throw(::com::sun::star::uno::RuntimeException)
@@ -1156,6 +1168,7 @@ awt::Size UnoImageControlControl::calcAd
 //	----------------------------------------------------
 UnoControlRadioButtonModel::UnoControlRadioButtonModel()
 {
+#ifdef VERIFY_PROPS
 	ImplRegisterProperty( BASEPROPERTY_DEFAULTCONTROL );
 	ImplRegisterProperty( BASEPROPERTY_ENABLED );
 	ImplRegisterProperty( BASEPROPERTY_FONTDESCRIPTOR );
@@ -1173,6 +1186,8 @@ UnoControlRadioButtonModel::UnoControlRa
 	ImplRegisterProperty( BASEPROPERTY_BACKGROUNDCOLOR );
 	ImplRegisterProperty( BASEPROPERTY_ALIGN );
 	ImplRegisterProperty( BASEPROPERTY_VERTICALALIGN );
+#endif
+    UNO_CONTROL_MODEL_REGISTER_PROPERTIES( VCLXRadioButton );
 }
 
 ::rtl::OUString UnoControlRadioButtonModel::getServiceName() throw(::com::sun::star::uno::RuntimeException)
@@ -1379,6 +1394,7 @@ awt::Size UnoRadioButtonControl::calcAdj
 //	----------------------------------------------------
 UnoControlCheckBoxModel::UnoControlCheckBoxModel()
 {
+#ifdef VERIFY_PROPS
 	ImplRegisterProperty( BASEPROPERTY_DEFAULTCONTROL );
 	ImplRegisterProperty( BASEPROPERTY_ENABLED );
 	ImplRegisterProperty( BASEPROPERTY_FONTDESCRIPTOR );
@@ -1397,6 +1413,8 @@ UnoControlCheckBoxModel::UnoControlCheck
 	ImplRegisterProperty( BASEPROPERTY_BACKGROUNDCOLOR );
 	ImplRegisterProperty( BASEPROPERTY_ALIGN );
 	ImplRegisterProperty( BASEPROPERTY_VERTICALALIGN );
+#endif
+    UNO_CONTROL_MODEL_REGISTER_PROPERTIES( VCLXCheckBox );
 }
 
 ::rtl::OUString UnoControlCheckBoxModel::getServiceName() throw(::com::sun::star::uno::RuntimeException)
@@ -1579,6 +1597,7 @@ awt::Size UnoCheckBoxControl::calcAdjust
 //	----------------------------------------------------
 UnoControlFixedTextModel::UnoControlFixedTextModel()
 {
+#ifdef VERIFY_PROPS
 	ImplRegisterProperty( BASEPROPERTY_ALIGN );
 	ImplRegisterProperty( BASEPROPERTY_BACKGROUNDCOLOR );
 	ImplRegisterProperty( BASEPROPERTY_BORDER );
@@ -1593,6 +1612,8 @@ UnoControlFixedTextModel::UnoControlFixe
 	ImplRegisterProperty( BASEPROPERTY_PRINTABLE );
 	ImplRegisterProperty( BASEPROPERTY_TABSTOP );
 	ImplRegisterProperty( BASEPROPERTY_VERTICALALIGN );
+#endif
+    UNO_CONTROL_MODEL_REGISTER_PROPERTIES( VCLXFixedText );
 }
 
 ::rtl::OUString UnoControlFixedTextModel::getServiceName() throw(::com::sun::star::uno::RuntimeException)
@@ -1789,6 +1810,7 @@ sal_Bool UnoGroupBoxControl::isTranspare
 //	----------------------------------------------------
 UnoControlListBoxModel::UnoControlListBoxModel()
 {
+#ifdef VERIFY_PROPS
 	ImplRegisterProperty( BASEPROPERTY_BACKGROUNDCOLOR );
 	ImplRegisterProperty( BASEPROPERTY_BORDER );
 	ImplRegisterProperty( BASEPROPERTY_BORDERCOLOR );
@@ -1806,6 +1828,8 @@ UnoControlListBoxModel::UnoControlListBo
 	ImplRegisterProperty( BASEPROPERTY_TABSTOP );
 	ImplRegisterProperty( BASEPROPERTY_READONLY );
 	ImplRegisterProperty( BASEPROPERTY_ALIGN );
+#endif
+    UNO_CONTROL_MODEL_REGISTER_PROPERTIES( VCLXListBox );
 }
 
 ::rtl::OUString UnoControlListBoxModel::getServiceName() throw(::com::sun::star::uno::RuntimeException)
@@ -2245,6 +2269,7 @@ void UnoListBoxControl::getColumnsAndLin
 //	----------------------------------------------------
 UnoControlComboBoxModel::UnoControlComboBoxModel()
 {
+#ifdef VERIFY_PROPS
 	ImplRegisterProperty( BASEPROPERTY_AUTOCOMPLETE );
 	ImplRegisterProperty( BASEPROPERTY_BACKGROUNDCOLOR );
 	ImplRegisterProperty( BASEPROPERTY_BORDER );
@@ -2264,6 +2289,8 @@ UnoControlComboBoxModel::UnoControlCombo
 	ImplRegisterProperty( BASEPROPERTY_TEXT );
 	ImplRegisterProperty( BASEPROPERTY_HIDEINACTIVESELECTION );
 	ImplRegisterProperty( BASEPROPERTY_ALIGN );
+#endif
+    UNO_CONTROL_MODEL_REGISTER_PROPERTIES( VCLXComboBox );
 }
 
 ::rtl::OUString UnoControlComboBoxModel::getServiceName() throw(::com::sun::star::uno::RuntimeException)
@@ -2601,6 +2628,7 @@ void UnoSpinFieldControl::enableRepeat( 
 //	----------------------------------------------------
 UnoControlDateFieldModel::UnoControlDateFieldModel()
 {
+#ifdef VERIFY_PROPS
 	ImplRegisterProperty( BASEPROPERTY_BACKGROUNDCOLOR );
 	ImplRegisterProperty( BASEPROPERTY_BORDER );
 	ImplRegisterProperty( BASEPROPERTY_BORDERCOLOR );
@@ -2625,6 +2653,8 @@ UnoControlDateFieldModel::UnoControlDate
 	ImplRegisterProperty( BASEPROPERTY_ENFORCE_FORMAT );
 	ImplRegisterProperty( BASEPROPERTY_TEXT );
 	ImplRegisterProperty( BASEPROPERTY_HIDEINACTIVESELECTION );
+#endif
+    UNO_CONTROL_MODEL_REGISTER_PROPERTIES( VCLXDateField );
 }
 
 ::rtl::OUString UnoControlDateFieldModel::getServiceName() throw(::com::sun::star::uno::RuntimeException)
@@ -2864,6 +2894,7 @@ sal_Bool UnoDateFieldControl::isStrictFo
 //	----------------------------------------------------
 UnoControlTimeFieldModel::UnoControlTimeFieldModel()
 {
+#ifdef VERIFY_PROPS
 	ImplRegisterProperty( BASEPROPERTY_BACKGROUNDCOLOR );
 	ImplRegisterProperty( BASEPROPERTY_BORDER );
 	ImplRegisterProperty( BASEPROPERTY_BORDERCOLOR );
@@ -2886,6 +2917,8 @@ UnoControlTimeFieldModel::UnoControlTime
     ImplRegisterProperty( BASEPROPERTY_ENFORCE_FORMAT );
     ImplRegisterProperty( BASEPROPERTY_TEXT );
 	ImplRegisterProperty( BASEPROPERTY_HIDEINACTIVESELECTION );
+#endif
+    UNO_CONTROL_MODEL_REGISTER_PROPERTIES( VCLXTimeField );
 }
 
 ::rtl::OUString UnoControlTimeFieldModel::getServiceName() throw(::com::sun::star::uno::RuntimeException)
@@ -3084,6 +3117,7 @@ sal_Bool UnoTimeFieldControl::isStrictFo
 //	----------------------------------------------------
 UnoControlNumericFieldModel::UnoControlNumericFieldModel()
 {
+#ifdef VERIFY_PROPS
 	ImplRegisterProperty( BASEPROPERTY_BACKGROUNDCOLOR );
 	ImplRegisterProperty( BASEPROPERTY_BORDER );
 	ImplRegisterProperty( BASEPROPERTY_BORDERCOLOR );
@@ -3107,6 +3141,8 @@ UnoControlNumericFieldModel::UnoControlN
 	ImplRegisterProperty( BASEPROPERTY_VALUE_DOUBLE );
     ImplRegisterProperty( BASEPROPERTY_ENFORCE_FORMAT );
 	ImplRegisterProperty( BASEPROPERTY_HIDEINACTIVESELECTION );
+#endif
+    UNO_CONTROL_MODEL_REGISTER_PROPERTIES( VCLXNumericField );
 }
 
 ::rtl::OUString UnoControlNumericFieldModel::getServiceName() throw(::com::sun::star::uno::RuntimeException)
@@ -3302,6 +3338,7 @@ sal_Int16 UnoNumericFieldControl::getDec
 //	----------------------------------------------------
 UnoControlCurrencyFieldModel::UnoControlCurrencyFieldModel()
 {
+#ifdef VERIFY_PROPS
 	ImplRegisterProperty( BASEPROPERTY_BACKGROUNDCOLOR );
 	ImplRegisterProperty( BASEPROPERTY_BORDER );
 	ImplRegisterProperty( BASEPROPERTY_BORDERCOLOR );
@@ -3327,6 +3364,8 @@ UnoControlCurrencyFieldModel::UnoControl
 	ImplRegisterProperty( BASEPROPERTY_VALUE_DOUBLE );
     ImplRegisterProperty( BASEPROPERTY_ENFORCE_FORMAT );
 	ImplRegisterProperty( BASEPROPERTY_HIDEINACTIVESELECTION );
+#endif
+    UNO_CONTROL_MODEL_REGISTER_PROPERTIES( VCLXCurrencyField );
 }
 
 ::rtl::OUString UnoControlCurrencyFieldModel::getServiceName() throw(::com::sun::star::uno::RuntimeException)
@@ -3525,6 +3564,7 @@ sal_Int16 UnoCurrencyFieldControl::getDe
 //	----------------------------------------------------
 UnoControlPatternFieldModel::UnoControlPatternFieldModel()
 {
+#ifdef VERIFY_PROPS
 	ImplRegisterProperty( BASEPROPERTY_BACKGROUNDCOLOR );
 	ImplRegisterProperty( BASEPROPERTY_BORDER );
 	ImplRegisterProperty( BASEPROPERTY_BORDERCOLOR );
@@ -3542,6 +3582,8 @@ UnoControlPatternFieldModel::UnoControlP
 	ImplRegisterProperty( BASEPROPERTY_TABSTOP );
 	ImplRegisterProperty( BASEPROPERTY_TEXT );
 	ImplRegisterProperty( BASEPROPERTY_HIDEINACTIVESELECTION );
+#endif
+    UNO_CONTROL_MODEL_REGISTER_PROPERTIES( VCLXPatternField );
 }
 
 ::rtl::OUString UnoControlPatternFieldModel::getServiceName() throw(::com::sun::star::uno::RuntimeException)
Index: toolkit/source/helper/unopropertyarrayhelper.cxx
===================================================================
RCS file: /cvs/gsl/toolkit/toolkit/source/helper/unopropertyarrayhelper.cxx,v
retrieving revision 1.5
diff -u -p -u -r1.5 unopropertyarrayhelper.cxx
--- toolkit/source/helper/unopropertyarrayhelper.cxx	12 Oct 2006 10:33:28 -0000	1.5
+++ toolkit/source/helper/unopropertyarrayhelper.cxx	8 Jun 2007 13:59:03 -0000
@@ -51,6 +51,13 @@ UnoPropertyArrayHelper::UnoPropertyArray
 		maIDs.Insert( pIDs[n], (void*)1L );
 }
 
+UnoPropertyArrayHelper::UnoPropertyArrayHelper( const std::list< sal_uInt16 > &rIDs )
+{
+    std::list< sal_uInt16 >::const_iterator iter;
+    for( iter = rIDs.begin(); iter != rIDs.end(); iter++)
+	  maIDs.Insert( *iter, (void*)1L);
+}
+
 sal_Bool UnoPropertyArrayHelper::ImplHasProperty( sal_uInt16 nPropId ) const
 {
 	if ( ( nPropId >= BASEPROPERTY_FONTDESCRIPTORPART_START ) && ( nPropId <= BASEPROPERTY_FONTDESCRIPTORPART_END ) )

Index: source/helper/unowrapper.cxx
===================================================================
RCS file: /cvs/gsl/toolkit/source/helper/unowrapper.cxx,v
retrieving revision 1.32
diff -u -p -u -r1.32 unowrapper.cxx
--- toolkit/source/helper/unowrapper.cxx	6 Jul 2007 14:28:36 -0000	1.32
+++ toolkit/source/helper/unowrapper.cxx	16 Aug 2007 15:32:11 -0000
@@ -139,7 +139,7 @@ using namespace ::com::sun::star;
 		// case WINDOW_SCROLLBARBOX:
 		// case WINDOW_PATTERNBOX:
 		// case WINDOW_CURRENCYBOX:
-        default:                    return new VCLXWindow;
+        default:                    return new VCLXWindow( true );
     }
 }
 
