ooo-build r13912 - in trunk: . patches/dev300



Author: jannieuw
Date: Wed Sep 17 09:23:51 2008
New Revision: 13912
URL: http://svn.gnome.org/viewvc/ooo-build?rev=13912&view=rev

Log:
2008-09-17  Jan Nieuwenhuizen  <janneke gnu org>

	* patches/dev300/layout-simple-dialogs-sc.diff:
	* patches/dev300/layout-simple-dialogs-sw.diff:
	* patches/dev300/layout-simple-dialogs-toolkit.diff: Remove layout::ComboBox
	Find&Replace workaround, plug leaking ::Dialog and ::ComboBox.  Make
	plain vcl layout'ed dialogs closable with ESC.


Modified:
   trunk/ChangeLog
   trunk/patches/dev300/layout-simple-dialogs-sc.diff
   trunk/patches/dev300/layout-simple-dialogs-sw.diff
   trunk/patches/dev300/layout-simple-dialogs-toolkit.diff

Modified: trunk/patches/dev300/layout-simple-dialogs-sc.diff
==============================================================================
--- trunk/patches/dev300/layout-simple-dialogs-sc.diff	(original)
+++ trunk/patches/dev300/layout-simple-dialogs-sc.diff	Wed Sep 17 09:23:51 2008
@@ -608,7 +608,7 @@
  
 diff --git a/sc/uiconfig/layout/move-copy-sheet.xml b/sc/uiconfig/layout/move-copy-sheet.xml
 new file mode 100644
-index 0000000..7d3455e
+index 0000000..79720df
 --- /dev/null
 +++ sc/uiconfig/layout/move-copy-sheet.xml
 @@ -0,0 +1,21 @@
@@ -617,7 +617,7 @@
 +     i18n translated XML files are generated from this template by
 +     transex3/layout/tralay.  !-->
 +
-+<modaldialog sizeable="true" closeable="false" help-id="FID_TAB_MOVE" moveable="true" output-size="true" id="RID_SCDLG_MOVETAB" sv-look="true" _title="Move/Copy Sheet" xmlns="http://openoffice.org/2007/layout"; xmlns:cnt="http://openoffice.org/2007/layout/container";>
++<modaldialog sizeable="true" closeable="true" help-id="FID_TAB_MOVE" moveable="true" output-size="true" id="RID_SCDLG_MOVETAB" sv-look="true" _title="Move/Copy Sheet" xmlns="http://openoffice.org/2007/layout"; xmlns:cnt="http://openoffice.org/2007/layout/container";>
 +    <vbox spacing="5" border="5">
 +	<string id="STR_NEWDOC" _text="- new document -"/>
 +        <fixedtext id="FT_DEST" _label="To ~document"/>

Modified: trunk/patches/dev300/layout-simple-dialogs-sw.diff
==============================================================================
--- trunk/patches/dev300/layout-simple-dialogs-sw.diff	(original)
+++ trunk/patches/dev300/layout-simple-dialogs-sw.diff	Wed Sep 17 09:23:51 2008
@@ -243,3 +243,25 @@
 -# Don't want to overwrite filled localize.sdf with empty template
 -template.sdf:
 -	$(foreach,i,$(XML_FILES) $(TRALAY) -l en-US $i) > $@
+diff --git a/sw/uiconfig/layout/wordcount.xml b/sw/uiconfig/layout/wordcount.xml
+index ae33571..e922294 100644
+--- sw/uiconfig/layout/wordcount.xml
++++ sw/uiconfig/layout/wordcount.xml
+@@ -7,7 +7,7 @@
+              xmlns:cnt="http://openoffice.org/2007/layout/container";
+              help-id="HID_DLG_WORDCOUNT"
+              id="DLG_WORDCOUNT"
+-             sizeable="true" moveable="true" optimumsize="true"
++             sizeable="true" moveable="true" optimumsize="true" closeable="true"
+              has_border="true" sv-look="true" _title="Word Count">
+     <vbox border="5" spacing="5">
+         <fixedline id="FL_CURRENT" _text="Current selection"/>
+@@ -26,7 +26,7 @@
+ 	    </vbox>
+ 	</hbox>
+ 	<!-- if we could do cnt:cnt:padding="-13" here, we would not have to close
+-	     and reope the hbox/vbox thing !-->
++	     and reopen the hbox/vbox thing !-->
+         <fixedline id="FL_DOC" _text="Whole document"/>
+ 	<hbox>
+ 	    <vbox cnt:padding="13" spacing="5">

Modified: trunk/patches/dev300/layout-simple-dialogs-toolkit.diff
==============================================================================
--- trunk/patches/dev300/layout-simple-dialogs-toolkit.diff	(original)
+++ trunk/patches/dev300/layout-simple-dialogs-toolkit.diff	Wed Sep 17 09:23:51 2008
@@ -241,7 +241,7 @@
  
  #endif /* _LAYOUT_PRE_HXX */
 diff --git a/toolkit/inc/layout/layout.hxx b/toolkit/inc/layout/layout.hxx
-index 62b7ffa..8b138ea 100644
+index 62b7ffa..8db7e00 100644
 --- toolkit/inc/layout/layout.hxx
 +++ toolkit/inc/layout/layout.hxx
 @@ -32,28 +32,46 @@
@@ -548,7 +548,17 @@
      void SetModifyHdl( Link const& rLink );
      void SetSelection( Selection const& rSelection );
  };
-@@ -346,8 +440,8 @@ class TOOLKIT_DLLPUBLIC NumericField : public SpinField, public NumericFormatter
+@@ -320,8 +414,7 @@ class TOOLKIT_DLLPUBLIC FormatterBase
+ {
+ protected:
+     FormatterBaseImpl *mpFormatImpl;
+-    FormatterBase( FormatterBaseImpl *pFormatImpl )
+-        : mpFormatImpl( pFormatImpl ) {}
++    FormatterBase( FormatterBaseImpl *pFormatImpl );
+ };
+ 
+ class NumericFormatterImpl;
+@@ -346,8 +439,8 @@ class TOOLKIT_DLLPUBLIC NumericField : public SpinField, public NumericFormatter
  {
      DECL_GET_IMPL( NumericField );
  public:
@@ -559,7 +569,7 @@
  };
  
  class MetricFormatterImpl;
-@@ -358,12 +452,12 @@ class TOOLKIT_DLLPUBLIC MetricFormatter : public FormatterBase
+@@ -358,12 +451,12 @@ class TOOLKIT_DLLPUBLIC MetricFormatter : public FormatterBase
      explicit MetricFormatter( FormatterBaseImpl *pImpl );
      MetricFormatterImpl &getFormatImpl() const;
  public:
@@ -578,7 +588,7 @@
  
      void SetSpinSize( sal_Int64 nNewSize );
  };
-@@ -373,124 +467,209 @@ class TOOLKIT_DLLPUBLIC MetricField : public SpinField, public MetricFormatter
+@@ -373,124 +466,209 @@ class TOOLKIT_DLLPUBLIC MetricField : public SpinField, public MetricFormatter
  {
      DECL_GET_IMPL( MetricField );
  public:
@@ -714,7 +724,7 @@
 +
 +    // Sxf*Dialog
 +    bool bConstruct;
-+	void Initialize (SfxChildWinInfo*) {};
++	void Initialize (SfxChildWinInfo*);
 +};
 +
 +#define DECL_MESSAGE_BOX_CTORS(Name)\
@@ -851,7 +861,7 @@
  };
  
  class ProgressBarImpl;
-@@ -516,7 +695,7 @@ protected:
+@@ -516,7 +694,7 @@ protected:
      css::uno::Reference< css::awt::XLayoutContainer > mxContainer;
      Container( rtl::OUString const& rName, sal_Int32 nBorder );
  public:
@@ -860,7 +870,7 @@
  
      void Add( Window *pWindow );
      void Add( Container *pContainer );
-@@ -540,11 +719,11 @@ class TOOLKIT_DLLPUBLIC Table : public Container
+@@ -540,11 +718,11 @@ class TOOLKIT_DLLPUBLIC Table : public Container
  protected:
      Table( sal_Int32 nBorder, sal_Int32 nColumns );
  public:
@@ -875,7 +885,7 @@
  
  private:
      void setProps( css::uno::Reference< css::awt::XLayoutConstrains > xChild,
-@@ -556,7 +735,7 @@ class TOOLKIT_DLLPUBLIC Box : public Container
+@@ -556,7 +734,7 @@ class TOOLKIT_DLLPUBLIC Box : public Container
  protected:
      Box( rtl::OUString const& rName, sal_Int32 nBorder, bool bHomogeneous );
  public:
@@ -884,7 +894,7 @@
      void Add( Window *pWindow, bool bExpand, bool bFill, sal_Int32 nPadding);
      void Add( Container *pContainer, bool bExpand, bool bFill, sal_Int32 nPadding);
  
-@@ -568,13 +747,13 @@ private:
+@@ -568,13 +746,13 @@ private:
  class TOOLKIT_DLLPUBLIC HBox : public Box
  {
  public:
@@ -900,7 +910,7 @@
      VBox( sal_Int32 nBorder, bool bHomogeneous );
  };
  
-@@ -585,7 +764,7 @@ class TOOLKIT_DLLPUBLIC Plugin : public Control
+@@ -585,7 +763,7 @@ class TOOLKIT_DLLPUBLIC Plugin : public Control
      //DECL_CONSTRUCTORS( Plugin, Control, 0 );
  public:
      ::Control *mpPlugin;
@@ -909,7 +919,7 @@
  };
  
  class LocalizedStringImpl;
-@@ -593,13 +772,36 @@ class TOOLKIT_DLLPUBLIC LocalizedString : public Window
+@@ -593,13 +771,36 @@ class TOOLKIT_DLLPUBLIC LocalizedString : public Window
  {
      DECL_GET_IMPL( LocalizedString );
  public:
@@ -948,10 +958,18 @@
 +
  #endif /* _LAYOUT_HXX */
 diff --git a/toolkit/inc/toolkit/awt/vclxwindows.hxx b/toolkit/inc/toolkit/awt/vclxwindows.hxx
-index 4c250ba..41176fc 100644
+index 4c250ba..27a803c 100644
 --- toolkit/inc/toolkit/awt/vclxwindows.hxx
 +++ toolkit/inc/toolkit/awt/vclxwindows.hxx
-@@ -346,6 +346,8 @@ public:
+@@ -181,6 +181,7 @@ protected:
+ 
+ public:
+ 					VCLXButton();
++    ~VCLXButton();
+ 
+ 	// ::com::sun::star::lang::XComponent
+     void SAL_CALL dispose(  ) throw(::com::sun::star::uno::RuntimeException);
+@@ -346,6 +347,8 @@ public:
  
      static void     ImplGetPropertyIds( std::list< sal_uInt16 > &aIds );
      virtual void    GetPropertyIds( std::list< sal_uInt16 > &aIds ) { return ImplGetPropertyIds( aIds ); }
@@ -960,6 +978,14 @@
  };
  
  //	----------------------------------------------------
+@@ -764,6 +767,7 @@ protected:
+ 
+ public:
+ 						VCLXComboBox();
++    ~VCLXComboBox();
+ 
+ 	// ::com::sun::star::uno::XInterface
+     ::com::sun::star::uno::Any					SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
 diff --git a/toolkit/prj/build.lst b/toolkit/prj/build.lst
 index 8b7ac22..1448f0d 100644
 --- toolkit/prj/build.lst
@@ -1709,10 +1735,22 @@
  		maWindowListeners.disposeAndClear( aObj );
  		maKeyListeners.disposeAndClear( aObj );
 diff --git a/toolkit/source/awt/vclxwindows.cxx b/toolkit/source/awt/vclxwindows.cxx
-index ec4c268..e9ae5d8 100644
+index ec4c268..72d470e 100644
 --- toolkit/source/awt/vclxwindows.cxx
 +++ toolkit/source/awt/vclxwindows.cxx
-@@ -1336,6 +1336,13 @@ void VCLXRadioButton::ImplClickedOrToggled( BOOL bToggled )
+@@ -413,6 +413,11 @@ VCLXButton::VCLXButton()
+ {
+ }
+ 
++VCLXButton::~VCLXButton()
++{
++    OSL_TRACE ("%s", __FUNCTION__);
++}
++
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > VCLXButton::CreateAccessibleContext()
+ {
+     return getAccessibleFactory().createAccessibleContext( this );
+@@ -1336,6 +1341,13 @@ void VCLXRadioButton::ImplClickedOrToggled( BOOL bToggled )
  	}
  }
  
@@ -1726,6 +1764,26 @@
  //	----------------------------------------------------
  //	class VCLXSpinField
  //	----------------------------------------------------
+@@ -2148,6 +2160,7 @@ VCLXDialog::VCLXDialog()
+ 
+ VCLXDialog::~VCLXDialog()
+ {
++    OSL_TRACE ("%s", __FUNCTION__);
+ }
+ 
+ // ::com::sun::star::uno::XInterface
+@@ -3703,6 +3716,11 @@ VCLXComboBox::VCLXComboBox()
+ {
+ }
+ 
++VCLXComboBox::~VCLXComboBox()
++{
++    OSL_TRACE ("%s", __FUNCTION__);
++}
++
+ // ::com::sun::star::uno::XInterface
+ ::com::sun::star::uno::Any VCLXComboBox::queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException)
+ {
 diff --git a/toolkit/source/layout/box-base.cxx b/toolkit/source/layout/box-base.cxx
 index aad69f7..f0b7a42 100644
 --- toolkit/source/layout/box-base.cxx
@@ -2217,7 +2275,7 @@
  
  # FIXME: This is bad, hmkay
 diff --git a/toolkit/source/vclcompat/wbutton.cxx b/toolkit/source/vclcompat/wbutton.cxx
-index 5617f4f..759dd10 100644
+index 5617f4f..5c1af3e 100644
 --- toolkit/source/vclcompat/wbutton.cxx
 +++ toolkit/source/vclcompat/wbutton.cxx
 @@ -39,6 +39,7 @@
@@ -2343,14 +2401,15 @@
  void Button::SetText( String const& rStr )
  {
      if ( !getImpl().mxButton.is() )
-@@ -145,12 +154,17 @@ void Button::SetText( String const& rStr )
+@@ -145,12 +154,18 @@ void Button::SetText( String const& rStr )
      getImpl().mxButton->setLabel( rStr );
  }
  
 -void Button::SetClickHdl( const Link& rLink )
 +void Button::SetClickHdl( const Link& link )
 +{
-+    getImpl().SetClickHdl( link );
++    if (&getImpl () && getImpl().mxButton.is ())
++        getImpl().SetClickHdl( link );
 +}
 +
 +Link& Button::GetClickHdl ()
@@ -2364,7 +2423,7 @@
  {
      return getImpl().SetModeImage( rImage.getImpl().mxGraphic );
  }
-@@ -166,45 +180,64 @@ void Button::Click()
+@@ -166,45 +181,64 @@ void Button::Click()
  
  IMPL_GET_IMPL( Button );
  IMPL_CONSTRUCTORS( Button, Control, "button" );
@@ -2444,7 +2503,7 @@
  {
      return !!( getImpl().getProperty( "State" ).get< sal_Int16 >() );
  }
-@@ -214,74 +247,60 @@ void PushButton::Toggle()
+@@ -214,74 +248,61 @@ void PushButton::Toggle()
      Check( true );
  }
  
@@ -2452,7 +2511,8 @@
 +void PushButton::SetToggleHdl( const Link& link )
  {
 -    getImpl().SetToggleHdl( rLink );
-+    getImpl().SetToggleHdl( link );
++    if (&getImpl () && getImpl().mxButton.is ())
++        getImpl().SetToggleHdl( link );
  }
  
  IMPL_GET_IMPL( PushButton );
@@ -2545,7 +2605,7 @@
      }
  
      inline void fireToggle()
-@@ -289,84 +308,115 @@ public:
+@@ -289,84 +310,117 @@ public:
          maToggleHdl.Call(  static_cast<Window *>( mpWindow ) );
      }
  
@@ -2607,7 +2667,8 @@
 +void RadioButton::SetToggleHdl( const Link& link )
  {
 -    getImpl().SetToggleHdl( rLink );
-+    getImpl().SetToggleHdl( link );
++    if (&getImpl () && getImpl().mxRadioButton.is ())
++        getImpl().SetToggleHdl( link );
  }
  
  IMPL_GET_IMPL( RadioButton );
@@ -2693,11 +2754,12 @@
 +void CheckBox::SetToggleHdl( const Link& link )
  {
 -    getImpl().SetToggleHdl( rLink );
-+    getImpl().SetToggleHdl( link );
++    if (&getImpl () && getImpl().mxCheckBox.is ())
++        getImpl().SetToggleHdl( link );
  }
  
  IMPL_GET_IMPL( CheckBox );
-@@ -376,14 +426,14 @@ IMPL_CONSTRUCTORS( CheckBox, Button, "checkbox" );
+@@ -376,14 +430,14 @@ IMPL_CONSTRUCTORS( CheckBox, Button, "checkbox" );
      class t##Impl : public parent##Impl \
      { \
      public: \
@@ -2716,7 +2778,7 @@
          } \
      }
  
-@@ -422,45 +472,35 @@ protected:
+@@ -422,45 +476,35 @@ protected:
      bool bAdvancedMode;
      std::list< Window*> maAdvanced;
      std::list< Window*> maSimple;
@@ -2776,7 +2838,7 @@
      void Click()
      {
          bAdvancedMode = !bAdvancedMode;
-@@ -469,20 +509,20 @@ public:
+@@ -469,20 +513,20 @@ public:
          else
              simpleMode();
      }
@@ -2809,7 +2871,7 @@
          for ( std::list< Window*>::iterator it = maAdvanced.begin();
                it != maAdvanced.end(); it++ )
              ( *it )->Show();
-@@ -490,12 +530,16 @@ public:
+@@ -490,12 +534,16 @@ public:
                it != maSimple.end(); it++ )
              ( *it )->Hide();
  
@@ -2830,7 +2892,7 @@
          for ( std::list< Window*>::iterator it = maAdvanced.begin();
                it != maAdvanced.end(); it++ )
              ( *it )->Hide();
-@@ -503,7 +547,7 @@ public:
+@@ -503,7 +551,7 @@ public:
                it != maSimple.end(); it++ )
              ( *it )->Show();
  
@@ -2839,7 +2901,7 @@
      }
      void AddAdvanced( Window* w )
      {
-@@ -547,18 +591,44 @@ void AdvancedButton::RemoveSimple( Window* w )
+@@ -547,18 +595,44 @@ void AdvancedButton::RemoveSimple( Window* w )
      getImpl().RemoveSimple( w );
  }
  
@@ -2889,7 +2951,7 @@
      }
      void AddWindow( Window* w ) { AddAdvanced( w ); }
      void RemoveWindow( Window* w ) { RemoveAdvanced( w ); }
-@@ -566,7 +636,7 @@ public:
+@@ -566,7 +640,7 @@ public:
  
  // TODO
  //BUTTON_IMPL( MoreButton, PushButton, 0 );
@@ -2898,7 +2960,7 @@
  IMPL_GET_IMPL( MoreButton );
  
  void MoreButton::AddWindow( Window* w )
-@@ -579,4 +649,24 @@ void MoreButton::RemoveWindow( Window* w )
+@@ -579,4 +653,24 @@ void MoreButton::RemoveWindow( Window* w )
      getImpl().RemoveWindow( w );
  }
  
@@ -3010,10 +3072,10 @@
  }
  
 diff --git a/toolkit/source/vclcompat/wfield.cxx b/toolkit/source/vclcompat/wfield.cxx
-index 015cf63..45a8021 100644
+index 015cf63..c2520ff 100644
 --- toolkit/source/vclcompat/wfield.cxx
 +++ toolkit/source/vclcompat/wfield.cxx
-@@ -33,48 +33,40 @@
+@@ -33,48 +33,42 @@
  
  #include <comphelper/processfactory.hxx>
  #include <com/sun/star/awt/XMetricField.hpp>
@@ -3027,6 +3089,8 @@
  #include <com/sun/star/awt/XItemListener.hpp>
 +#include <vcl/combobox.hxx>
 +#include <vcl/lstbox.hxx>
++
++#include <toolkit/awt/vclxwindows.hxx>
  
  using namespace ::com::sun::star;
  
@@ -3048,7 +3112,7 @@
 -        ,  mxEdit( xPeer, uno::UNO_QUERY )
 +    EditImpl( Context *context, const PeerHandle &peer, Window *window )
 +        : ControlImpl( context, peer, window )
-+        ,  mxEdit( peer, uno::UNO_QUERY )
++        , mxEdit( peer, uno::UNO_QUERY )
      {
      }
  
@@ -3077,7 +3141,7 @@
  
      void SAL_CALL textChanged( const css::awt::TextEvent& /* rEvent */ )
          throw (css::uno::RuntimeException)
-@@ -83,6 +75,31 @@ class EditImpl : public ControlImpl,
+@@ -83,6 +77,31 @@ class EditImpl : public ControlImpl,
      }
  };
  
@@ -3109,7 +3173,7 @@
  void Edit::SetSelection( Selection const& rSelection )
  {
      if ( !getImpl().mxEdit.is() )
-@@ -104,9 +121,10 @@ XubString Edit::GetText() const
+@@ -104,9 +123,10 @@ XubString Edit::GetText() const
      return XubString( getImpl().mxEdit->getText());
  }
  
@@ -3117,12 +3181,12 @@
 +void Edit::SetModifyHdl( const Link& link )
  {
 -    getImpl().SetModifyHdl( rLink );
-+    if (&getImpl () && getImpl().mxWindow.is ())
++    if (&getImpl () && getImpl().mxEdit.is ())
 +        getImpl().SetModifyHdl( link );
  }
  
  IMPL_CONSTRUCTORS( Edit, Control, "edit" );
-@@ -116,8 +134,8 @@ IMPL_GET_IMPL( Edit );
+@@ -116,8 +136,8 @@ IMPL_GET_IMPL( Edit );
  class MultiLineEditImpl : public EditImpl
  {
  public:
@@ -3133,7 +3197,7 @@
      {
      }
  };
-@@ -129,8 +147,8 @@ IMPL_GET_IMPL( MultiLineEdit );
+@@ -129,8 +149,8 @@ IMPL_GET_IMPL( MultiLineEdit );
  class SpinFieldImpl : public EditImpl
  {
    public:
@@ -3144,7 +3208,7 @@
      {
      }
  };
-@@ -141,8 +159,8 @@ IMPL_CONSTRUCTORS( SpinField, Edit, "spinfield" );
+@@ -141,8 +161,8 @@ IMPL_CONSTRUCTORS( SpinField, Edit, "spinfield" );
  class NumericFieldImpl : public SpinFieldImpl
  {
    public:
@@ -3155,7 +3219,7 @@
      {
      }
  };
-@@ -151,8 +169,8 @@ class NumericFieldImpl : public SpinFieldImpl
+@@ -151,8 +171,8 @@ class NumericFieldImpl : public SpinFieldImpl
  class MetricFieldImpl : public SpinFieldImpl
  {
    public:
@@ -3166,7 +3230,7 @@
      {
      }
  };
-@@ -165,10 +183,10 @@ IMPL_GET_IMPL( MetricField );
+@@ -165,21 +185,26 @@ IMPL_GET_IMPL( MetricField );
  class FormatterBaseImpl
  {
    protected:
@@ -3180,7 +3244,12 @@
      {
      };
  };
-@@ -176,10 +194,10 @@ class FormatterBaseImpl
+ 
++FormatterBase::FormatterBase( FormatterBaseImpl *pFormatImpl )
++    : mpFormatImpl( pFormatImpl )
++{
++}
++
  class NumericFormatterImpl : public FormatterBaseImpl
  {
    public:
@@ -3195,7 +3264,7 @@
      {
      }
  
-@@ -206,9 +224,9 @@ class MetricFormatterImpl : public FormatterBaseImpl
+@@ -206,9 +231,9 @@ class MetricFormatterImpl : public FormatterBaseImpl
  {
    public:
      uno::Reference< awt::XMetricField > mxField;
@@ -3208,7 +3277,7 @@
      {
      }
  };
-@@ -295,20 +313,27 @@ sal_Int64 MetricFormatter::GetValue( FieldUnit nUnit ) const
+@@ -295,20 +320,27 @@ sal_Int64 MetricFormatter::GetValue( FieldUnit nUnit ) const
  IMPL_CONSTRUCTORS_2( MetricField, SpinField, MetricFormatter, "metricfield" );
  
  // Window/Control/Edit/ComboBox
@@ -3244,7 +3313,7 @@
      {
          if ( nPos == COMBOBOX_APPEND )
              nPos = GetEntryCount();
-@@ -316,56 +341,53 @@ public:
+@@ -316,56 +348,53 @@ public:
          return nPos;
      }
  
@@ -3316,37 +3385,20 @@
  
      virtual void SAL_CALL actionPerformed( const css::awt::ActionEvent& /* rEvent */ )
          throw (css::uno::RuntimeException)
-@@ -386,7 +408,42 @@ public:
+@@ -386,7 +415,25 @@ public:
      }
  };
  
 -USHORT ComboBox::InsertEntry( const XubString &rStr, USHORT nPos )
-+// inlined, need to redefine
-+IMPL_GET_IMPL (Dialog);
-+
 +ComboBox::~ComboBox ()
 +{
-+    /* FIXME: hack to fix Find & Replace dialog crasher disposing us
-+       twice.  What also works is to comment-out VCLXWindow::dispose
-+       ():maFocusListeners.disposeAndClear ().
-+
-+       It seems VCLX* does not allow an object to be in different
-+       listener groups: it will be disposed multiple times?
-+    */
-+    if (!!getImpl ().mGetFocusHdl || !!getImpl ().mLoseFocusHdl)
-+    {
-+        OSL_TRACE ("%s: FIXME: prevent duplicate disposal hack", __FUNCTION__);
-+        if (getImpl ().mxWindow.is ())
-+            getImpl ().mxWindow.clear ();
-+        if (Dialog *d = dynamic_cast<Dialog*> (getImpl ().parent))
-+            if (WindowImpl *i = dynamic_cast <WindowImpl*> (&d->getImpl()))
-+                if (i->mxWindow.is ())
-+                    i->mxWindow.clear ();
-+    }
++    OSL_TRACE ("%s: deleting ComboBox for window: %p", __FUNCTION__, GetWindow ());
 +}
 +
 +ComboBoxImpl::~ComboBoxImpl ()
 +{
++    OSL_TRACE ("%s: deleting ComboBoxImpl for window: %p", __FUNCTION__, mpWindow ? mpWindow->GetWindow () : 0);
++    OSL_TRACE ("%s: deleting ComboBoxImpl for listener: %p", __FUNCTION__, static_cast<XFocusListener*> (this));
 +}
 +
 +void ComboBoxImpl::disposing( lang::EventObject const& e )
@@ -3360,7 +3412,7 @@
  {
      return getImpl().InsertEntry( rStr, nPos );
  }
-@@ -396,7 +450,7 @@ void ComboBox::RemoveEntry( const XubString& rStr )
+@@ -396,7 +443,7 @@ void ComboBox::RemoveEntry( const XubString& rStr )
      getImpl().RemoveEntry( GetEntryPos( rStr ) );
  }
  
@@ -3369,7 +3421,7 @@
  {
      getImpl().RemoveEntry( nPos );
  }
-@@ -407,51 +461,68 @@ void ComboBox::Clear()
+@@ -407,51 +454,70 @@ void ComboBox::Clear()
      getImpl().setProperty( "StringItemList", uno::Any( aNoItems ) );
  }
  
@@ -3394,20 +3446,22 @@
  
 -void ComboBox::SetClickHdl( const Link& rLink )
 +void ComboBox::SetClickHdl( const Link& link )
++{
++    if (&getImpl () && getImpl().mxComboBox.is ())
++        getImpl().SetClickHdl( link );
++}
++
++void ComboBox::SetSelectHdl( const Link& link )
  {
 -    getImpl().SetClickHdl( rLink );
-+    getImpl().SetClickHdl( link );
++    if (&getImpl () && getImpl().mxComboBox.is ())
++        getImpl().SetSelectHdl( link );
  }
  
 -void ComboBox::SetSelectHdl( const Link& rLink )
-+void ComboBox::SetSelectHdl( const Link& link )
++void ComboBox::EnableAutocomplete (bool enable, bool matchCase)
  {
 -    getImpl().SetSelectHdl( rLink );
-+    getImpl().SetSelectHdl( link );
-+}
-+
-+void ComboBox::EnableAutocomplete (bool enable, bool matchCase)
-+{
 +    GetComboBox ()->EnableAutocomplete (enable, matchCase);
 +}
 +
@@ -3455,7 +3509,7 @@
      {
          if ( nPos == LISTBOX_APPEND )
              nPos = mxListBox->getItemCount();
-@@ -459,12 +530,12 @@ public:
+@@ -459,12 +525,12 @@ public:
          return nPos;
      }
  
@@ -3470,7 +3524,7 @@
      {
          if ( nPos == LISTBOX_APPEND )
              nPos = mxListBox->getItemCount();
-@@ -472,41 +543,41 @@ public:
+@@ -472,41 +538,41 @@ public:
          return nPos;
      }
  
@@ -3521,7 +3575,7 @@
          if ( mxListBox->isMutipleMode() )
          {
              uno::Sequence< short > aItems( mxListBox->getSelectedItemsPos() );
-@@ -518,28 +589,29 @@ public:
+@@ -518,28 +584,29 @@ public:
          return nSelected;
      }
  
@@ -3561,7 +3615,7 @@
      }
  
      void SAL_CALL actionPerformed( const css::awt::ActionEvent& /* rEvent */ )
-@@ -558,12 +630,16 @@ public:
+@@ -558,12 +625,16 @@ public:
      }
  };
  
@@ -3580,7 +3634,7 @@
  {
      return getImpl().RemoveEntry( nPos );
  }
-@@ -579,57 +655,111 @@ void ListBox::Clear()
+@@ -579,57 +650,112 @@ void ListBox::Clear()
      getImpl().setProperty( "StringItemList", uno::Any( aNoItems ) );
  }
  
@@ -3634,15 +3688,20 @@
  
 -void ListBox::SetSelectHdl( const Link& rLink )
 +void ListBox::SetSelectHdl( const Link& link )
-+{
+ {
+-    getImpl().SetSelectHdl( rLink );
 +    getImpl().SetSelectHdl( link );
-+}
-+
+ }
+ 
+-void ListBox::SetClickHdl( const Link& rLink )
 +void ListBox::SetClickHdl( const Link& link )
-+{
-+    getImpl().SetClickHdl( link );
-+}
-+
+ {
+-    getImpl().SetClickHdl( rLink );
++    if (&getImpl () && getImpl().mxListBox.is ())
++        getImpl().SetClickHdl( link );
+ }
+ 
+-IMPL_CONSTRUCTORS( ListBox, Control, "listbox" );
 +
 +void ListBox::SetEntryData( sal_uInt16 pos, void* data)
 +{
@@ -3656,18 +3715,15 @@
 +
 +// SvxLanguageBox
 +void ListBox::SetLanguageList( sal_Int16/*list*/, bool/*hasLangNone*/, bool /*langNoneIsLangAll*/, bool /*checkSpellAvail*/)
- {
--    getImpl().SetSelectHdl( rLink );
- }
- 
--void ListBox::SetClickHdl( const Link& rLink )
++{
++}
++
 +sal_uInt16 ListBox::InsertLanguage( const LanguageType/*type*/, sal_uInt16/*pos*/)
 +{
 +    return 0;
 +}
 +sal_uInt16 ListBox::InsertLanguage( const LanguageType/*type*/, bool/*checkEntry*/, sal_uInt16 /*pos*/)
- {
--    getImpl().SetClickHdl( rLink );
++{
 +    return 0;
 +}
 +void ListBox::RemoveLanguage( const LanguageType/*type*/)
@@ -3683,9 +3739,8 @@
 +bool ListBox::IsLanguageSelected( const LanguageType/*type*/) const
 +{
 +    return true;
- }
- 
--IMPL_CONSTRUCTORS( ListBox, Control, "listbox" );
++}
++
 +IMPL_CONSTRUCTORS ( ListBox, Control, "listbox" );
  IMPL_GET_IMPL( ListBox );
 +IMPL_GET_WINDOW (ListBox);
@@ -3706,7 +3761,7 @@
  
  } // namespace layout
 diff --git a/toolkit/source/vclcompat/wrapper.cxx b/toolkit/source/vclcompat/wrapper.cxx
-index 38db3f4..fe81412 100644
+index 38db3f4..e8c2b11 100644
 --- toolkit/source/vclcompat/wrapper.cxx
 +++ toolkit/source/vclcompat/wrapper.cxx
 @@ -1,7 +1,7 @@
@@ -3813,7 +3868,7 @@
      }
  
      if ( nId != 0 )
-@@ -151,7 +166,72 @@ PeerHandle Context::GetPeerHandle( const char *pId, sal_uInt32 nId ) const
+@@ -151,32 +166,177 @@ PeerHandle Context::GetPeerHandle( const char *pId, sal_uInt32 nId ) const
      return xHandle;
  }
  
@@ -3823,6 +3878,7 @@
 +    , mpCtx (context)
 +    , mxWindow (peer, uno::UNO_QUERY)
 +    , mxVclPeer (peer, uno::UNO_QUERY)
++    , mvclWindow (0)
 +    , bFirstTimeVisible (true)
 +{
 +}
@@ -3831,18 +3887,21 @@
 +{
 +    if (mpWindow)
 +        mpWindow->mpImpl = 0;
-+}
-+
-+void SAL_CALL WindowImpl::disposing (lang::EventObject const&)
-+    throw (uno::RuntimeException)
-+{
-+///    mxWindow.clear ();
++    if (mvclWindow)
++    {
++        VCLXWindow *v = mvclWindow->GetWindowPeer ();
++        v->SetWindow (0);
++        mvclWindow->SetComponentInterface (uno::Reference <awt::XWindowPeer> ());
++        mvclWindow->SetWindowPeer (uno::Reference <awt::XWindowPeer> (), 0);
++        delete mvclWindow;
++        mvclWindow = 0;
++    }
 +}
 +
 +void WindowImpl::wrapperGone ()
 +{
-+    if (mpWindow)
-+        mpWindow->mpImpl = 0;
++    mvclWindow = 0;
++    mpWindow->mpImpl = 0;
 +    mpWindow = 0;
 +    mpCtx = 0;
 +    if ( mxWindow.is() )
@@ -3854,6 +3913,13 @@
 +    }
 +}
 +
++void SAL_CALL WindowImpl::disposing (lang::EventObject const&)
++    throw (uno::RuntimeException)
++{
++    if (mxWindow.is ())
++        mxWindow.clear ();
++}
++
 +uno::Any WindowImpl::getProperty (char const* name)
 +{
 +    if ( !this || !mxVclPeer.is() )
@@ -3887,7 +3953,10 @@
  
  Window::Window( WindowImpl *pImpl )
      : mpImpl( pImpl )
-@@ -161,22 +241,90 @@ Window::Window( WindowImpl *pImpl )
+ {
++    mpImpl->mvclWindow = GetVCLXWindow () ? GetWindow () : 0;
+ }
+ 
  Window::~Window()
  {
      /* likely to be an UNO object - with floating references */
@@ -3896,9 +3965,8 @@
 +    if (mpImpl)
 +        mpImpl->wrapperGone ();
 +    mpImpl = 0;
- }
- 
--void Window::SetParent( ::Window *pParent )
++}
++
 +///IMPL_GET_IMPL( Control );
 +
 +static ControlImpl& null_control_impl = (ControlImpl&)*(ControlImpl*)0;
@@ -3908,8 +3976,9 @@
 +    if (ControlImpl* c = static_cast<ControlImpl *>(mpImpl))
 +        return *c;
 +    return null_control_impl;
-+}
-+
+ }
+ 
+-void Window::SetParent( ::Window *pParent )
 +Control::~Control ()
 +{
 +    SetGetFocusHdl (Link ());
@@ -3987,7 +4056,7 @@
  }
  
  Context *Window::getContext()
-@@ -184,33 +332,124 @@ Context *Window::getContext()
+@@ -184,33 +344,124 @@ Context *Window::getContext()
      return this && mpImpl ? mpImpl->mpCtx : NULL;
  }
  
@@ -4117,7 +4186,7 @@
  struct ToolkitVclPropsMap
  {
      WinBits vclStyle;
-@@ -341,7 +580,7 @@ uno::Reference< awt::XToolkit > getToolkit()
+@@ -341,7 +592,7 @@ uno::Reference< awt::XToolkit > getToolkit()
      return xToolkit;
  }
  
@@ -4126,7 +4195,7 @@
  {
  
      long nWinAttrbs = 0;
-@@ -349,7 +588,7 @@ PeerHandle Window::CreatePeer( Window *pParent, WinBits nStyle, const char *pNam
+@@ -349,7 +600,7 @@ PeerHandle Window::CreatePeer( Window *pParent, WinBits nStyle, const char *pNam
          if ( nStyle & toolkitVclPropsMap[ i ].vclStyle )
              nWinAttrbs |= toolkitVclPropsMap[ i ].initAttr;
  
@@ -4135,7 +4204,7 @@
                                       OUString::createFromAscii( pName ), nWinAttrbs );
  }
  
-@@ -360,11 +599,16 @@ void Window::Enable( bool bEnable )
+@@ -360,11 +611,16 @@ void Window::Enable( bool bEnable )
      getImpl().mxWindow->setEnable( bEnable );
  }
  
@@ -4145,7 +4214,7 @@
      if ( !getImpl().mxWindow.is() )
          return;
      getImpl().mxWindow->setVisible( bVisible );
-+    if (bVisible && getImpl().bFirstTimeVisible)
++    if (GetParent() && bVisible && getImpl().bFirstTimeVisible)
 +    {
 +        getImpl().redraw ();
 +        getImpl().bFirstTimeVisible = false;
@@ -4153,25 +4222,15 @@
  }
  
  void Window::GrabFocus()
-@@ -374,158 +618,637 @@ void Window::GrabFocus()
+@@ -374,158 +630,650 @@ void Window::GrabFocus()
      getImpl().mxWindow->setFocus();
  }
  
--class DialogImpl : public WindowImpl
 +void Window::SetUpdateMode(bool mode)
- {
--public:
--    uno::Reference< awt::XDialog2 > mxDialog;
--    DialogImpl( Context *pCtx, const PeerHandle &xPeer, Window *pWindow )
--        : WindowImpl( pCtx, xPeer, pWindow )
--        , mxDialog( xPeer, uno::UNO_QUERY )
--    {
--    }
--};
++{
 +    GetWindow()->SetUpdateMode( mode );
 +}
- 
--IMPL_GET_IMPL( Dialog )
++
 +void Window::SetPointer( Pointer const& pointer )
 +{
 +    GetWindow()->SetPointer( pointer );
@@ -4191,27 +4250,17 @@
 +{
 +    return GetWindow()->GetText();
 +}
- 
--Dialog::Dialog( Window *pParent, const char *pXMLPath, const char *pId, sal_uInt32 nId )
--    : Context( pXMLPath )
--    , Window( new DialogImpl( this, Context::GetPeerHandle( pId, nId ), this ) )
++
 +sal_Int32 Window::GetCtrlTextWidth (String const&) const
- {
--    if ( pParent )
--        SetParent( pParent );
++{
 +    return 0;
- }
- 
--Dialog::Dialog( ::Window *pParent, const char *pXMLPath, const char *pId, sal_uInt32 nId )
--    : Context( pXMLPath )
--    , Window( new DialogImpl( this, Context::GetPeerHandle( pId, nId ), this ) )
++}
++
 +sal_Int32 Window::GetTextHeight () const
- {
--    if ( pParent )
--        SetParent( pParent );
++{
 +    return 0;
- }
- 
++}
++
 +Size Window::LogicToPixel( Size const& size, MapMode const&) const
 +{
 +    return size;
@@ -4266,7 +4315,7 @@
 +void SAL_CALL ControlImpl::disposing (lang::EventObject const&)
 +    throw (uno::RuntimeException)
 +{
-+    mxWindow.clear ();
++///    mxWindow.clear ();
 +}
 +
 +void ControlImpl::SAL_CALL focusGained (awt::FocusEvent const&)
@@ -4303,29 +4352,52 @@
 +        getImpl ().SetLoseFocusHdl (link);
 +}
 +
+ class DialogImpl : public WindowImpl
+ {
+ public:
+     uno::Reference< awt::XDialog2 > mxDialog;
+-    DialogImpl( Context *pCtx, const PeerHandle &xPeer, Window *pWindow )
+-        : WindowImpl( pCtx, xPeer, pWindow )
+-        , mxDialog( xPeer, uno::UNO_QUERY )
+-    {
+-    }
++    DialogImpl( Context *context, PeerHandle const &peer, Window *window );
+ };
+ 
+-IMPL_GET_IMPL( Dialog )
 +DialogImpl::DialogImpl( Context *context, const PeerHandle &peer, Window *window )
 +    : WindowImpl( context, peer, window )
 +    , mxDialog( peer, uno::UNO_QUERY )
 +{
 +}
-+
+ 
+-Dialog::Dialog( Window *pParent, const char *pXMLPath, const char *pId, sal_uInt32 nId )
+-    : Context( pXMLPath )
+-    , Window( new DialogImpl( this, Context::GetPeerHandle( pId, nId ), this ) )
 +Dialog::Dialog( Window *parent, const char *xml_file, const char *id, sal_uInt32 nId )
 +    : Context( xml_file )
 +    , Window( new DialogImpl( this, Context::GetPeerHandle( id, nId ), this ) )
 +    , bConstruct (true)
-+{
+ {
+-    if ( pParent )
+-        SetParent( pParent );
 +    if ( parent )
 +        SetParent( parent );
-+}
-+
+ }
+ 
+-Dialog::Dialog( ::Window *pParent, const char *pXMLPath, const char *pId, sal_uInt32 nId )
+-    : Context( pXMLPath )
+-    , Window( new DialogImpl( this, Context::GetPeerHandle( pId, nId ), this ) )
 +Dialog::Dialog( ::Window *parent, const char *xml_file, const char *id, sal_uInt32 nId )
 +    : Context( xml_file )
 +    , Window( new DialogImpl( this, Context::GetPeerHandle( id, nId ), this ) )
-+{
+ {
+-    if ( pParent )
+-        SetParent( pParent );
 +    if ( parent )
 +        SetParent( parent );
-+}
-+
+ }
+ 
 +Dialog::~Dialog ()
 +{
 +}
@@ -4383,13 +4455,29 @@
 +    EndDialog (false);
 +    return true;
 +}
-+
+ 
+-IMPL_GET_IMPL( TabPage )
 +long Dialog::Notify (NotifyEvent& event)
 +{
 +    return GetDialog ()->Notify (event);
 +}
  
--IMPL_GET_IMPL( TabPage )
+-TabPage::TabPage( Window *pParent, const char *pXMLPath, const char *pId, sal_uInt32 nId, SfxItemSet const* set )
+-    : Context( pXMLPath )
+-    , Window( new TabPageImpl( this, Context::GetPeerHandle( pId, nId ), this ) )
+-    , bHasExchangeSupport( false )
+-    , pSet( set )
++void Dialog::Initialize (SfxChildWinInfo*)
+ {
+-    if ( pParent )
+-        SetParent( pParent );
+ }
+ 
+-TabPage::TabPage( ::Window *pParent, const char *pXMLPath, const char *pId, sal_uInt32 nId, SfxItemSet const* set )
+-    : Context( pXMLPath )
+-    , Window( new TabPageImpl( this, Context::GetPeerHandle( pId, nId ), this ) )
+-    , bHasExchangeSupport( false )
+-    , pSet( set )
 +#define MESSAGE_BOX_MEMBER_INIT\
 +    Dialog (parent, xml_file, id)\
 +        , imageError (this, "FI_ERROR")\
@@ -4413,12 +4501,7 @@
 +    retryButton.Hide ();
 +    init (message, yes, no, help_id);
 +}
- 
--TabPage::TabPage( Window *pParent, const char *pXMLPath, const char *pId, sal_uInt32 nId, SfxItemSet const* set )
--    : Context( pXMLPath )
--    , Window( new TabPageImpl( this, Context::GetPeerHandle( pId, nId ), this ) )
--    , bHasExchangeSupport( false )
--    , pSet( set )
++
 +MessageBox::MessageBox (::Window *parent, OUString const& message,
 +                        OUString yes, OUString no, sal_uIntPtr help_id,
 +                        char const* xml_file, char const* id)
@@ -4431,11 +4514,7 @@
 +    init (message, yes, no, help_id);
  }
  
--TabPage::TabPage( ::Window *pParent, const char *pXMLPath, const char *pId, sal_uInt32 nId, SfxItemSet const* set )
--    : Context( pXMLPath )
--    , Window( new TabPageImpl( this, Context::GetPeerHandle( pId, nId ), this ) )
--    , bHasExchangeSupport( false )
--    , pSet( set )
+-TabPage::~TabPage()
 +#if !defined (__GNUC__)
 +#define __PRETTY_FUNCTION__ __FUNCTION__
 +#endif /* !__GNUC__ */
@@ -4445,28 +4524,26 @@
 +                        char const* xml_file, char const* id)
 +    : MESSAGE_BOX_MEMBER_INIT
  {
--    if ( pParent )
--        SetParent( pParent );
+-    delete GetTabPage();
 +    // HIG suggests using verbs instead of yes/no/retry etc.
 +    // This constructor provides client-code compatibility: Client code should be fixed.
 +    OSL_TRACE ("%s: warning, deprecated vcl/Messbox compatibility", __PRETTY_FUNCTION__);
 +    bits_init (bits, OUString::createFromAscii (message), OUString::createFromAscii (yes), OUString::createFromAscii (no), help_id);
  }
  
--TabPage::~TabPage()
+-IMPL_GET_WINDOW( TabPage );
 +MessageBox::MessageBox (::Window *parent, WinBits bits, OUString const& message,
 +                        OUString yes, OUString no, sal_uIntPtr help_id,
 +                        char const* xml_file, char const* id)
 +    : MESSAGE_BOX_MEMBER_INIT
- {
--    delete GetTabPage();
++{
 +    // HIG suggests using verbs instead of yes/no/retry etc.
 +    // This constructor provides client-code compatibility: Client code should be fixed.
 +    OSL_TRACE ("%s: warning, deprecated vcl/Messbox compatibility", __PRETTY_FUNCTION__);
 +    bits_init (bits, message, yes, no, help_id);
- }
++}
  
--IMPL_GET_WINDOW( TabPage );
+-void TabPage::ActivatePage()
 +void MessageBox::bits_init (WinBits bits, OUString const& message,
 +                            OUString yes, OUString no, sal_uIntPtr help_id)
 +{
@@ -4492,8 +4569,7 @@
 +
 +    init (message, yes, no, help_id);
 +}
- 
--void TabPage::ActivatePage()
++
 +void MessageBox::init (char const* message, char const* yes, char const* no, sal_uIntPtr help_id)
  {
 +    init ( OUString::createFromAscii (message), OUString::createFromAscii (yes), OUString::createFromAscii (no), help_id);
@@ -4501,7 +4577,7 @@
  
 -void TabPage::DeactivatePage()
 +void MessageBox::init (OUString const& message, OUString const& yes, OUString const& no, sal_uIntPtr help_id)
- {
++{
 +    imageError.Hide ();
 +    imageInfo.Hide ();
 +    imageQuery.Hide ();
@@ -4523,8 +4599,8 @@
 +        SetHelpId (help_id);
 +    else
 +        helpButton.Hide ();
- }
- 
++}
++
 +#undef MESSAGE_BOX_IMPL
 +#define MESSAGE_BOX_IMPL(Name)\
 +    Name##Box::Name##Box (::Window *parent, char const* message,\
@@ -4650,11 +4726,11 @@
 +#define RETURN_MX_TABCONTROL if (getImpl ().mxTabControl.is ()) return getImpl ().mxTabControl
 +
 +TabControl::~TabControl ()
-+{
+ {
 +    SetActivatePageHdl (Link ());
 +    SetDeactivatePageHdl (Link ());
-+}
-+
+ }
+ 
 +void TabControl::InsertPage (sal_uInt16 id, String const& title, sal_uInt16 pos)
 +{
 +    (void) pos;
@@ -4716,15 +4792,15 @@
 +    return GetTabControl ()->GetPageId (pos);
 +}
 +sal_uInt16 TabControl::GetPagePos (sal_uInt16 id) const
- {
++{
 +    getImpl ().redraw ();
 +    return GetTabControl ()->GetPagePos (id);
- }
++}
 +void TabControl::SetCurPageId (sal_uInt16 id)
-+{
+ {
 +    getImpl ().redraw ();
 +    GetTabControl ()->SetCurPageId (id);
-+}
+ }
 +sal_uInt16 TabControl::GetCurPageId () const
 +{
 +    return GetTabControl ()->GetCurPageId ();
@@ -4756,8 +4832,9 @@
 +    return GetTabControl ()->GetTabPage (id);
 +}
 +void TabControl::SetActivatePageHdl (Link const& link)
- {
-+    getImpl ().SetActivatePageHdl (link);
++{
++    if (&getImpl () && getImpl().mxTabControl.is ())
++        getImpl ().SetActivatePageHdl (link);
 +}
 +Link& TabControl::GetActivatePageHdl () const
 +{
@@ -4765,14 +4842,15 @@
 +}
 +void TabControl::SetDeactivatePageHdl (Link const& link)
 +{
-+    getImpl ().SetDeactivatePageHdl (link);
++    if (&getImpl () && getImpl().mxTabControl.is ())
++        getImpl ().SetDeactivatePageHdl (link);
 +}
 +Link& TabControl::GetDeactivatePageHdl () const
 +{
 +    return getImpl ().GetDeactivatePageHdl ();
 +}
 +void TabControl::SetTabPageSizePixel (Size const& size)
-+{
+ {
 +    GetTabControl ()->SetTabPageSizePixel (size);
 +//    GetParent()->SetSizePixel (size);
 +//    GetWindow()->SetSizePixel (size);
@@ -4821,12 +4899,12 @@
 +
 +::Window* TabPage::global_parent = 0;
 +TabControl* TabPage::global_tabcontrol = 0;
-+
-+IMPL_GET_IMPL( TabPage );
  
 -	if ( !pItem && nWh != nSlot )
 -		pItem = &pPool->GetDefaultItem( nWh );
 -	return pItem;
++IMPL_GET_IMPL( TabPage );
++
 +TabPage::TabPage( Window *parent, const char *xml_file, const char *id, sal_uInt32 nId)
 +    : Context( xml_file )
 +    , Window( new TabPageImpl( this, Context::GetPeerHandle( id, nId ), this ) )
@@ -4850,10 +4928,10 @@
 +{
 +    delete GetTabPage();
 +}
++
++IMPL_GET_WINDOW( TabPage );
  
 -void SfxTabPage::Reset( SfxItemSet const& )
-+IMPL_GET_WINDOW( TabPage );
-+
 +void TabPage::ActivatePage()
 +{
 +}
@@ -4879,7 +4957,7 @@
  
  bool FixedLine::IsEnabled()
  {
-@@ -537,21 +1260,35 @@ class FixedTextImpl : public ControlImpl
+@@ -537,21 +1285,35 @@ class FixedTextImpl : public ControlImpl
  {
  public:
      uno::Reference< awt::XFixedText > mxFixedText;
@@ -4924,7 +5002,7 @@
  
  void FixedText::SetText( String const& rStr )
  {
-@@ -563,8 +1300,8 @@ void FixedText::SetText( String const& rStr )
+@@ -563,8 +1325,8 @@ void FixedText::SetText( String const& rStr )
  class FixedInfoImpl : public FixedTextImpl
  {
  public:
@@ -4935,7 +5013,7 @@
      {
      }
  };
-@@ -576,16 +1313,17 @@ class ProgressBarImpl : public ControlImpl
+@@ -576,16 +1338,17 @@ class ProgressBarImpl : public ControlImpl
  {
  public:
      uno::Reference< awt::XProgressBar > mxProgressBar;
@@ -4959,7 +5037,7 @@
      }
  };
  
-@@ -594,11 +1332,11 @@ class FixedImageImpl: public ControlImpl
+@@ -594,11 +1357,11 @@ class FixedImageImpl: public ControlImpl
  {
  public:
      uno::Reference< graphic::XGraphic > mxGraphic;
@@ -4974,7 +5052,7 @@
      {
          if ( !mxGraphic.is() )
          {
-@@ -620,12 +1358,12 @@ void FixedImage::setImage( ::Image const& i )
+@@ -620,12 +1383,12 @@ void FixedImage::setImage( ::Image const& i )
      if ( !getImpl().mxGraphic.is() )
          return;
      //FIXME: hack moved to proplist
@@ -4989,7 +5067,7 @@
      : pImpl( new FixedImageImpl( pName ) )
  {
  }
-@@ -637,31 +1375,18 @@ FixedImage::~FixedImage()
+@@ -637,31 +1400,18 @@ FixedImage::~FixedImage()
  
  #endif
  
@@ -5024,7 +5102,7 @@
  {
      if ( !getImpl().mxProgressBar.is() )
          return;
-@@ -694,8 +1419,8 @@ class PluginImpl: public ControlImpl
+@@ -694,8 +1444,8 @@ class PluginImpl: public ControlImpl
  public:
      ::Control *mpPlugin;
  
@@ -5035,7 +5113,7 @@
          , mpPlugin( plugin )
      {
          uno::Reference <awt::XWindow> ref( mxWindow, uno::UNO_QUERY );
-@@ -706,14 +1431,14 @@ public:
+@@ -706,14 +1456,14 @@ public:
          vcl->SetPlugin( mpPlugin );
          plugin->SetParent( parent );
          plugin->SetStyle( vcl->mStyle );
@@ -5053,7 +5131,7 @@
      , mpPlugin( plugin )
  {
  }
-@@ -724,8 +1449,8 @@ class LocalizedStringImpl : public WindowImpl
+@@ -724,8 +1474,8 @@ class LocalizedStringImpl : public WindowImpl
  {
  public:
      layoutimpl::LocalizedString *mpString;
@@ -5064,7 +5142,7 @@
          , mpString( static_cast<layoutimpl::LocalizedString*>( VCLXWindow::GetImplementation( uno::Reference <awt::XWindow> ( mxWindow, uno::UNO_QUERY ) ) ) )
      {
      }
-@@ -744,8 +1469,8 @@ public:
+@@ -744,8 +1494,8 @@ public:
  
  IMPL_GET_IMPL( LocalizedString );
  
@@ -5075,7 +5153,7 @@
  {
  }
  
-@@ -760,4 +1485,49 @@ String LocalizedString::operator= (String const& s)
+@@ -760,4 +1510,49 @@ String LocalizedString::operator= (String const& s)
      return getImpl().getText();
  }
  
@@ -5126,7 +5204,7 @@
 +
  } // namespace layout
 diff --git a/toolkit/source/vclcompat/wrapper.hxx b/toolkit/source/vclcompat/wrapper.hxx
-index 25dbd90..5305b05 100644
+index 25dbd90..81a2b7b 100644
 --- toolkit/source/vclcompat/wrapper.hxx
 +++ toolkit/source/vclcompat/wrapper.hxx
 @@ -34,8 +34,11 @@
@@ -5141,7 +5219,7 @@
  
  #include <cstring>
  
-@@ -46,64 +49,55 @@ namespace css = com::sun::star;
+@@ -46,64 +49,49 @@ namespace css = com::sun::star;
  
  class WindowImpl
  {
@@ -5151,6 +5229,7 @@
      Context *mpCtx;
      css::uno::Reference< css::awt::XWindow > mxWindow;
      css::uno::Reference< css::awt::XVclWindowPeer > mxVclPeer;
++    ::Window *mvclWindow;
 +    bool bFirstTimeVisible;
  
 -    WindowImpl( Context *pCtx, const PeerHandle &xPeer, Window *pWindow )
@@ -5231,18 +5310,11 @@
  
 -inline WindowImpl &Window::getImpl() const
 -{ return *(static_cast< WindowImpl * >( mpImpl )); }
-+class DialogImpl : public WindowImpl
-+{
-+public:
-+    css::uno::Reference< css::awt::XDialog2 > mxDialog;
-+    DialogImpl( Context *context, PeerHandle const &peer, Window *window );
-+};
-+
 +inline WindowImpl &Window::getImpl() const{ return *(static_cast< WindowImpl * >( mpImpl )); }
  
  // Helpers for defining boiler-plate constructors ...
  // Could in-line in top-level but not with safe static_casts.
-@@ -112,23 +106,39 @@ inline WindowImpl &Window::getImpl() const
+@@ -112,23 +100,39 @@ inline WindowImpl &Window::getImpl() const
      { \
          return *(static_cast<t##Impl *>(mpImpl)); \
      }
@@ -5438,7 +5510,7 @@
 +.INCLUDE :  target.mk
 diff --git a/toolkit/uiconfig/layout/message-box.xml b/toolkit/uiconfig/layout/message-box.xml
 new file mode 100644
-index 0000000..237f549
+index 0000000..6a64be1
 --- /dev/null
 +++ toolkit/uiconfig/layout/message-box.xml
 @@ -0,0 +1,41 @@
@@ -5450,7 +5522,7 @@
 +<modaldialog xmlns="http://openoffice.org/2007/layout";
 +             xmlns:cnt="http://openoffice.org/2007/layout/container";
 +             id="message-box" _title="" optimumsize="true"
-+             has_border="true" sizeable="true" moveable="true">
++             has_border="true" sizeable="true" moveable="true" closeable="true">
 +    <vbox border="5" spacing="5">
 +	<hbox border="5" spacing="20">
 +	    <align cnt:expand="false" cnt:fill="true">
@@ -5522,6 +5594,16 @@
 -CFLAGS+=-DENABLE_LAYOUT=0
 +CFLAGS+=-DTEST_LAYOUT=1
  .ENDIF # ENABLE_LAYOUT == TRUE
+diff --git a/toolkit/workben/layout/.gitignore b/toolkit/workben/layout/.gitignore
+index 9b72951..142ba57 100644
+--- toolkit/workben/layout/.gitignore
++++ toolkit/workben/layout/.gitignore
+@@ -1,3 +1,4 @@
+ /de
+ /en-US
+ /nl
++/ja
+\ No newline at end of file
 diff --git a/toolkit/workben/layout/TEST b/toolkit/workben/layout/TEST
 new file mode 100755
 index 0000000..d6a20cb
@@ -5656,7 +5738,7 @@
  all .PHONY:
 diff --git a/toolkit/workben/layout/message-box.xml b/toolkit/workben/layout/message-box.xml
 new file mode 100644
-index 0000000..237f549
+index 0000000..6a64be1
 --- /dev/null
 +++ toolkit/workben/layout/message-box.xml
 @@ -0,0 +1,41 @@
@@ -5668,7 +5750,7 @@
 +<modaldialog xmlns="http://openoffice.org/2007/layout";
 +             xmlns:cnt="http://openoffice.org/2007/layout/container";
 +             id="message-box" _title="" optimumsize="true"
-+             has_border="true" sizeable="true" moveable="true">
++             has_border="true" sizeable="true" moveable="true" closeable="true">
 +    <vbox border="5" spacing="5">
 +	<hbox border="5" spacing="20">
 +	    <align cnt:expand="false" cnt:fill="true">
@@ -5703,7 +5785,7 @@
 +</modaldialog>
 diff --git a/toolkit/workben/layout/move-copy-sheet.xml b/toolkit/workben/layout/move-copy-sheet.xml
 new file mode 100644
-index 0000000..7d3455e
+index 0000000..79720df
 --- /dev/null
 +++ toolkit/workben/layout/move-copy-sheet.xml
 @@ -0,0 +1,21 @@
@@ -5712,7 +5794,7 @@
 +     i18n translated XML files are generated from this template by
 +     transex3/layout/tralay.  !-->
 +
-+<modaldialog sizeable="true" closeable="false" help-id="FID_TAB_MOVE" moveable="true" output-size="true" id="RID_SCDLG_MOVETAB" sv-look="true" _title="Move/Copy Sheet" xmlns="http://openoffice.org/2007/layout"; xmlns:cnt="http://openoffice.org/2007/layout/container";>
++<modaldialog sizeable="true" closeable="true" help-id="FID_TAB_MOVE" moveable="true" output-size="true" id="RID_SCDLG_MOVETAB" sv-look="true" _title="Move/Copy Sheet" xmlns="http://openoffice.org/2007/layout"; xmlns:cnt="http://openoffice.org/2007/layout/container";>
 +    <vbox spacing="5" border="5">
 +	<string id="STR_NEWDOC" _text="- new document -"/>
 +        <fixedtext id="FT_DEST" _label="To ~document"/>
@@ -6038,6 +6120,28 @@
  	static	USHORT*		GetRanges	();
  	virtual	BOOL		FillItemSet	( SfxItemSet& rArgSet );
  	virtual	void		Reset		( const SfxItemSet& rArgSet );
+diff --git a/toolkit/workben/layout/wordcount.xml b/toolkit/workben/layout/wordcount.xml
+index ae33571..e922294 100644
+--- toolkit/workben/layout/wordcount.xml
++++ toolkit/workben/layout/wordcount.xml
+@@ -7,7 +7,7 @@
+              xmlns:cnt="http://openoffice.org/2007/layout/container";
+              help-id="HID_DLG_WORDCOUNT"
+              id="DLG_WORDCOUNT"
+-             sizeable="true" moveable="true" optimumsize="true"
++             sizeable="true" moveable="true" optimumsize="true" closeable="true"
+              has_border="true" sv-look="true" _title="Word Count">
+     <vbox border="5" spacing="5">
+         <fixedline id="FL_CURRENT" _text="Current selection"/>
+@@ -26,7 +26,7 @@
+ 	    </vbox>
+ 	</hbox>
+ 	<!-- if we could do cnt:cnt:padding="-13" here, we would not have to close
+-	     and reope the hbox/vbox thing !-->
++	     and reopen the hbox/vbox thing !-->
+         <fixedline id="FL_DOC" _text="Whole document"/>
+ 	<hbox>
+ 	    <vbox cnt:padding="13" spacing="5">
 diff --git a/toolkit/workben/layout/wordcountdialog.cxx b/toolkit/workben/layout/wordcountdialog.cxx
 index 64f1836..1eebbe5 100644
 --- toolkit/workben/layout/wordcountdialog.cxx
@@ -6151,10 +6255,15 @@
   * This file is part of OpenOffice.org.
   *
 diff --git a/toolkit/workben/layout/zoom.xml b/toolkit/workben/layout/zoom.xml
-index 5ad8fcf..f6a76a4 100644
+index 5ad8fcf..5938643 100644
 --- toolkit/workben/layout/zoom.xml
 +++ toolkit/workben/layout/zoom.xml
-@@ -11,30 +11,30 @@
+@@ -7,34 +7,34 @@
+              xmlns:cnt="http://openoffice.org/2007/layout/container";
+              id="RID_SVXDLG_ZOOM" _title="Zoom &amp; View Layout" optimumsize="true"
+ 	     help-id="SID_ATTR_ZOOM"
+-             has_border="true" sizeable="true" moveable="true">
++             has_border="true" sizeable="true" moveable="true" closeable="true">
      <vbox spacing="5" border="5">
  	<hbox spacing="0" border="0">
  	    <vbox spacing="5" border="5">



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]