toolkit/inc/layout/layout.hxx            |    2 
 toolkit/source/layout/vcl/wbutton.cxx    |   72 ++++++++--------
 toolkit/source/layout/vcl/wcontainer.cxx |    8 -
 toolkit/source/layout/vcl/wfield.cxx     |   87 +++++++++----------
 toolkit/source/layout/vcl/wrapper.cxx    |  136 ++++++++++++++-----------------
 toolkit/source/layout/vcl/wrapper.hxx    |    6 -
 6 files changed, 150 insertions(+), 161 deletions(-)

New commits:
commit 837bd0e46c8cb64362614bb6c548addee73f80fa
Author: Don Lewis <truck...@apache.org>
Date:   Mon Feb 5 18:20:47 2018 +0000

    A number of methods in main/toolkit/source/layout/vcl/* use either
    
    "!this" or "this" in a boolean context in order to detect being
    called with a null object and exit early.  In a valid C++ program
    "this" will never be null, so a compiler could legally optimize out
    this comparision, which could potentially result in the method
    dereferencing a null pointer later in the code.  This situation
    could only happen if the caller is using a null object pointer to
    call the method or is using a object ref to call the method that
    was generated by dereferencing a null pointer, neither of which is
    valid.  Resolve this by moving the checks out of the method and
    into the caller.
    
    Make this easier by changing the getImpl() method to return the
    private *Impl pointer directly instead of deferencing the pointer
    and returning a ref.  The latter is invalid if the pointer is null.
    This allows GetImpl() to be called in a boolean contect to peform
    the check.  It also allows a number of instances of "&getImpl()"
    calls in a boolean context to be fixed by changing them to "getImpl()".
    The address of a ref will never be zero in a valid C++ program, so
    the compiler could potentially optimize out those checks.
    
    There does not appear to be any need for Control and ComboBox to
    use customized versions of GetImpl() since these appear to behave
    identically to the versions generated by the canned macro, so switch
    them back to the macro version.
    
    This commit should result in no functional changes.
    
    It seems like all of these checks for a null implementation should
    not be necessary, but that requires further investigation.

diff --git a/toolkit/inc/layout/layout.hxx b/toolkit/inc/layout/layout.hxx
index 01dbd2228610..69e38af00d55 100644
--- a/toolkit/inc/layout/layout.hxx
+++ b/toolkit/inc/layout/layout.hxx
@@ -102,7 +102,7 @@ public:
         t( Window *parent, WinBits nStyle = defaultWinBit ); \
         t (Window *parent, ResId const &res)
 #define DECL_GET_IMPL(t) \
-        inline t##Impl &getImpl() const
+        inline t##Impl *getImpl() const
 
 #define DECL_GET_WINDOW( cls ) ::cls* Get##cls() const
 #define IMPL_GET_WINDOW( cls ) ::cls* cls::Get##cls() const { return 
dynamic_cast< ::cls*>( GetWindow() ); }
diff --git a/toolkit/source/layout/vcl/wbutton.cxx 
b/toolkit/source/layout/vcl/wbutton.cxx
index c769bdca736e..afdeca8a957b 100644
--- a/toolkit/source/layout/vcl/wbutton.cxx
+++ b/toolkit/source/layout/vcl/wbutton.cxx
@@ -140,35 +140,36 @@ String Button::GetStandardText (sal_uInt16 button_type)
 
 void Button::SetText( OUString const& rStr )
 {
-    if ( !getImpl().mxButton.is() )
+    if ( !getImpl()->mxButton.is() )
         return;
-    getImpl().mxButton->setLabel( rStr );
+    getImpl()->mxButton->setLabel( rStr );
 }
 
 void Button::SetClickHdl( const Link& link )
 {
-    if (&getImpl () && getImpl().mxButton.is ())
-        getImpl().SetClickHdl( link );
+    if (getImpl() && getImpl()->mxButton.is ())
+        getImpl()->SetClickHdl( link );
 }
 
 Link& Button::GetClickHdl ()
 {
-    return getImpl().GetClickHdl ();
+    return getImpl()->GetClickHdl ();
 }
 
 bool Button::SetModeImage (Image const& image)
 {
-    return getImpl().SetModeImage (image.getImpl().mxGraphic);
+    return getImpl() || getImpl()->SetModeImage (image.getImpl().mxGraphic);
 }
 
 bool Button::SetModeImage (::Image const& image, BmpColorMode mode)
 {
-    return GetButton ()->SetModeImage (image, mode);
+    return !GetButton () || GetButton ()->SetModeImage (image, mode);
 }
 
 void Button::SetImageAlign( ImageAlign eAlign )
 {
-    getImpl().setProperty( "ImageAlign", uno::Any( (sal_Int16) eAlign ) );
+    if ( getImpl() )
+        getImpl()->setProperty( "ImageAlign", uno::Any( (sal_Int16) eAlign ) );
 }
 
 void Button::Click()
@@ -229,14 +230,15 @@ PushButton::~PushButton ()
 
 void PushButton::Check( bool bCheck )
 {
-    getImpl().setProperty( "State", uno::Any( (sal_Int16) !!bCheck ) );
+    if ( getImpl() )
+        getImpl()->setProperty( "State", uno::Any( (sal_Int16) !!bCheck ) );
     // XButton doesn't have explicit toggle event
-    getImpl().fireToggle();
+    getImpl()->fireToggle();
 }
 
 bool PushButton::IsChecked() const
 {
-    return !!( getImpl().getProperty( "State" ).get< sal_Int16 >() );
+    return !!( getImpl() && getImpl()->getProperty( "State" ).get< sal_Int16 
>() );
 }
 
 void PushButton::Toggle()
@@ -246,8 +248,8 @@ void PushButton::Toggle()
 
 void PushButton::SetToggleHdl( const Link& link )
 {
-    if (&getImpl () && getImpl().mxButton.is ())
-        getImpl().SetToggleHdl( link );
+    if (getImpl() && getImpl()->mxButton.is ())
+        getImpl()->SetToggleHdl( link );
 }
 
 IMPL_GET_IMPL( PushButton );
@@ -343,18 +345,18 @@ RadioButton::~RadioButton ()
 
 void RadioButton::Check( bool bCheck )
 {
-    getImpl().Check( bCheck );
+    getImpl()->Check( bCheck );
 }
 
 bool RadioButton::IsChecked() const
 {
-    return getImpl().IsChecked();
+    return getImpl()->IsChecked();
 }
 
 void RadioButton::SetToggleHdl( const Link& link )
 {
-    if (&getImpl () && getImpl().mxRadioButton.is ())
-        getImpl().SetToggleHdl( link );
+    if (getImpl() && getImpl()->mxRadioButton.is ())
+        getImpl()->SetToggleHdl( link );
 }
 
 IMPL_GET_IMPL( RadioButton );
@@ -401,22 +403,22 @@ CheckBox::~CheckBox ()
 
 void CheckBox::Check( bool bCheck )
 {
-    if ( !getImpl().mxCheckBox.is() )
+    if ( !getImpl()->mxCheckBox.is() )
         return;
-    getImpl().mxCheckBox->setState( !!bCheck );
+    getImpl()->mxCheckBox->setState( !!bCheck );
 }
 
 bool CheckBox::IsChecked() const
 {
-    if ( !getImpl().mxCheckBox.is() )
+    if ( !getImpl()->mxCheckBox.is() )
         return false;
-    return getImpl().mxCheckBox->getState() != 0;
+    return getImpl()->mxCheckBox->getState() != 0;
 }
 
 void CheckBox::SetToggleHdl( const Link& link )
 {
-    if (&getImpl () && getImpl().mxCheckBox.is ())
-        getImpl().SetToggleHdl( link );
+    if (getImpl() && getImpl()->mxCheckBox.is ())
+        getImpl()->SetToggleHdl( link );
 }
 
 IMPL_GET_IMPL( CheckBox );
@@ -578,51 +580,51 @@ public:
 
 void AdvancedButton::AddAdvanced( Window* w )
 {
-    getImpl().AddAdvanced( w );
+    getImpl()->AddAdvanced( w );
 }
 
 void AdvancedButton::AddSimple( Window* w )
 {
-    getImpl().AddSimple( w );
+    getImpl()->AddSimple( w );
 }
 
 void AdvancedButton::RemoveAdvanced( Window* w )
 {
-    getImpl().RemoveAdvanced( w );
+    getImpl()->RemoveAdvanced( w );
 }
 
 void AdvancedButton::RemoveSimple( Window* w )
 {
-    getImpl().RemoveSimple( w );
+    getImpl()->RemoveSimple( w );
 }
 
 void AdvancedButton::SetAdvancedText (rtl::OUString const& text)
 {
     if (text.getLength ())
-        getImpl ().mAdvancedLabel = text;
+        getImpl()->mAdvancedLabel = text;
 }
 
 void AdvancedButton::SetSimpleText (rtl::OUString const& text)
 {
     if (text.getLength ())
-        getImpl ().mSimpleLabel = text;
+        getImpl()->mSimpleLabel = text;
 }
 
 rtl::OUString AdvancedButton::GetAdvancedText () const
 {
-    return getImpl ().mAdvancedLabel;
+    return getImpl()->mAdvancedLabel;
 }
 
 rtl::OUString AdvancedButton::GetSimpleText () const
 {
-    return getImpl ().mSimpleLabel;
+    return getImpl()->mSimpleLabel;
 }
 
 void AdvancedButton::SetDelta (int)
 {
 }
 
-IMPL_CONSTRUCTORS_BODY( AdvancedButton, PushButton, "advancedbutton", 
getImpl().simpleMode () );
+IMPL_CONSTRUCTORS_BODY( AdvancedButton, PushButton, "advancedbutton", 
getImpl()->simpleMode () );
 IMPL_GET_IMPL( AdvancedButton );
 
 
@@ -641,17 +643,17 @@ public:
 
 // TODO
 //BUTTON_IMPL( MoreButton, PushButton, 0 );
-IMPL_CONSTRUCTORS_BODY( MoreButton, AdvancedButton, "morebutton", 
getImpl().simpleMode () );
+IMPL_CONSTRUCTORS_BODY( MoreButton, AdvancedButton, "morebutton", 
getImpl()->simpleMode () );
 IMPL_GET_IMPL( MoreButton );
 
 void MoreButton::AddWindow( Window* w )
 {
-    getImpl().AddWindow( w );
+    getImpl()->AddWindow( w );
 }
 
 void MoreButton::RemoveWindow( Window* w )
 {
-    getImpl().RemoveWindow( w );
+    getImpl()->RemoveWindow( w );
 }
 
 void MoreButton::SetMoreText (rtl::OUString const& text)
diff --git a/toolkit/source/layout/vcl/wcontainer.cxx 
b/toolkit/source/layout/vcl/wcontainer.cxx
index 3830c7febff3..493764e4a59a 100644
--- a/toolkit/source/layout/vcl/wcontainer.cxx
+++ b/toolkit/source/layout/vcl/wcontainer.cxx
@@ -149,8 +149,8 @@ void Table::Add( Window *window, bool bXExpand, bool 
bYExpand,
 {
     if ( !window )
         return;
-    WindowImpl &rImpl = window->getImpl();
-    uno::Reference< awt::XLayoutConstrains > xChild( rImpl.mxWindow,
+    WindowImpl *pImpl = window->getImpl();
+    uno::Reference< awt::XLayoutConstrains > xChild( pImpl->mxWindow,
                                                      uno::UNO_QUERY );
     mxContainer->addChild( xChild );
     setProps( xChild, bXExpand, bYExpand, nXSpan, nYSpan );
@@ -194,8 +194,8 @@ void Box::Add( Window *window, bool bExpand, bool bFill, 
sal_Int32 nPadding)
 {
     if ( !window )
         return;
-    WindowImpl &rImpl = window->getImpl();
-    uno::Reference< awt::XLayoutConstrains > xChild( rImpl.mxWindow,
+    WindowImpl *pImpl = window->getImpl();
+    uno::Reference< awt::XLayoutConstrains > xChild( pImpl->mxWindow,
                                                      uno::UNO_QUERY );
 
     mxContainer->addChild( xChild );
diff --git a/toolkit/source/layout/vcl/wfield.cxx 
b/toolkit/source/layout/vcl/wfield.cxx
index e9cc7dbb0ef2..5b551f53ad5d 100644
--- a/toolkit/source/layout/vcl/wfield.cxx
+++ b/toolkit/source/layout/vcl/wfield.cxx
@@ -101,8 +101,8 @@ Edit::~Edit ()
 void Edit::SetSelection( Selection const& rSelection )
 {
 #if LAYOUT_API_CALLS_HANDLER
-    if ( !getImpl().mxEdit.is() )
-        getImpl().mxEdit->setSelection( awt::Selection( rSelection.Min(), 
rSelection.Max() ) );
+    if ( !getImpl()->mxEdit.is() )
+        getImpl()->mxEdit->setSelection( awt::Selection( rSelection.Min(), 
rSelection.Max() ) );
 #else /* !LAYOUT_API_CALLS_HANDLER */
     GetEdit ()->SetSelection (rSelection);
 #endif /* !LAYOUT_API_CALLS_HANDLER */
@@ -111,9 +111,9 @@ void Edit::SetSelection( Selection const& rSelection )
 void Edit::SetText( OUString const& rStr )
 {
 #if LAYOUT_API_CALLS_HANDLER
-    if ( getImpl().mxEdit.is() )
+    if ( getImpl()->mxEdit.is() )
         /// this calls handlers; endless loop in numfmt.cxx
-        getImpl().mxEdit->setText( rStr );
+        getImpl()->mxEdit->setText( rStr );
 #else /* !LAYOUT_API_CALLS_HANDLER */
     GetEdit ()->SetText (rStr);
 #endif /* !LAYOUT_API_CALLS_HANDLER */
@@ -121,15 +121,15 @@ void Edit::SetText( OUString const& rStr )
 
 String Edit::GetText() const
 {
-    if ( !getImpl().mxEdit.is() )
-        return getImpl().mxEdit->getText();
+    if ( !getImpl()->mxEdit.is() )
+        return getImpl()->mxEdit->getText();
     return OUString();
 }
 
 void Edit::SetModifyHdl( const Link& link )
 {
-    if (&getImpl () && getImpl().mxEdit.is ())
-        getImpl().SetModifyHdl( link );
+    if (getImpl() && getImpl()->mxEdit.is ())
+        getImpl()->SetModifyHdl( link );
 }
 
 IMPL_CONSTRUCTORS( Edit, Control, "edit" );
@@ -434,51 +434,52 @@ void ComboBoxImpl::disposing( lang::EventObject const& e )
 
 sal_uInt16 ComboBox::InsertEntry( String const& rStr, sal_uInt16 nPos )
 {
-    return getImpl().InsertEntry( rStr, nPos );
+    return getImpl()->InsertEntry( rStr, nPos );
 }
 
 void ComboBox::RemoveEntry( String const& rStr )
 {
-    getImpl().RemoveEntry( GetEntryPos( rStr ) );
+    getImpl()->RemoveEntry( GetEntryPos( rStr ) );
 }
 
 void ComboBox::RemoveEntry( sal_uInt16 nPos )
 {
-    getImpl().RemoveEntry( nPos );
+    getImpl()->RemoveEntry( nPos );
 }
 
 void ComboBox::Clear()
 {
     uno::Sequence< rtl::OUString> aNoItems;
-    getImpl().setProperty( "StringItemList", uno::Any( aNoItems ) );
+    if ( getImpl() )
+        getImpl()->setProperty( "StringItemList", uno::Any( aNoItems ) );
 }
 
 sal_uInt16 ComboBox::GetEntryPos( String const& rStr ) const
 {
-    return getImpl().GetEntryPos( rStr );
+    return getImpl()->GetEntryPos( rStr );
 }
 
 String ComboBox::GetEntry( sal_uInt16 nPos ) const
 {
-    rtl::OUString rItem = getImpl().mxComboBox->getItem( nPos );
+    rtl::OUString rItem = getImpl()->mxComboBox->getItem( nPos );
     return OUString( rItem );
 }
 
 sal_uInt16 ComboBox::GetEntryCount() const
 {
-    return getImpl().GetEntryCount();
+    return getImpl()->GetEntryCount();
 }
 
 void ComboBox::SetClickHdl( const Link& link )
 {
-    if (&getImpl () && getImpl().mxComboBox.is ())
-        getImpl().SetClickHdl( link );
+    if (getImpl() && getImpl()->mxComboBox.is ())
+        getImpl()->SetClickHdl( link );
 }
 
 void ComboBox::SetSelectHdl( const Link& link )
 {
-    if (&getImpl () && getImpl().mxComboBox.is ())
-        getImpl().SetSelectHdl( link );
+    if (getImpl() && getImpl()->mxComboBox.is ())
+        getImpl()->SetSelectHdl( link );
 }
 
 void ComboBox::EnableAutocomplete (bool enable, bool matchCase)
@@ -486,18 +487,9 @@ void ComboBox::EnableAutocomplete (bool enable, bool 
matchCase)
     GetComboBox ()->EnableAutocomplete (enable, matchCase);
 }
 
-IMPL_CONSTRUCTORS_BODY( ComboBox, Edit, "combobox", getImpl().parent = parent; 
);
+IMPL_CONSTRUCTORS_BODY( ComboBox, Edit, "combobox", getImpl()->parent = 
parent; );
 IMPL_GET_WINDOW (ComboBox);
-/// IMPL_GET_IMPL( ComboBox );
-
-static ComboBoxImpl* null_combobox_impl = 0;
-
-ComboBoxImpl &ComboBox::getImpl () const
-{
-    if (ComboBoxImpl* c = static_cast<ComboBoxImpl *>(mpImpl))
-        return *c;
-    return *null_combobox_impl;
-}
+IMPL_GET_IMPL( ComboBox );
 
 class ListBoxImpl : public ControlImpl
                   , public ::cppu::WeakImplHelper1< awt::XActionListener >
@@ -668,44 +660,45 @@ ListBox::~ListBox ()
 
 sal_uInt16 ListBox::InsertEntry (String const& rStr, sal_uInt16 nPos)
 {
-    return getImpl().InsertEntry(rStr, nPos);
+    return getImpl()->InsertEntry(rStr, nPos);
 }
 
 void ListBox::RemoveEntry( sal_uInt16 nPos )
 {
-    return getImpl().RemoveEntry( nPos );
+    return getImpl()->RemoveEntry( nPos );
 }
 
 void ListBox::RemoveEntry( String const& rStr )
 {
-    return getImpl().RemoveEntry( GetEntryPos( rStr ) );
+    return getImpl()->RemoveEntry( GetEntryPos( rStr ) );
 }
 
 void ListBox::Clear()
 {
     uno::Sequence< rtl::OUString> aNoItems;
-    getImpl().setProperty( "StringItemList", uno::Any( aNoItems ) );
+    if ( getImpl() )
+        getImpl()->setProperty( "StringItemList", uno::Any( aNoItems ) );
 }
 
 sal_uInt16 ListBox::GetEntryPos( String const& rStr ) const
 {
-    return getImpl().GetEntryPos( rStr );
+    return getImpl()->GetEntryPos( rStr );
 }
 
 String ListBox::GetEntry( sal_uInt16 nPos ) const
 {
-    return getImpl().GetEntry( nPos );
+    return getImpl()->GetEntry( nPos );
 }
 
 sal_uInt16 ListBox::GetEntryCount() const
 {
-    return getImpl().GetEntryCount();
+    return getImpl()->GetEntryCount();
 }
 
 void ListBox::SelectEntryPos( sal_uInt16 nPos, bool bSelect )
 {
 #if LAYOUT_API_CALLS_HANDLER
-    getImpl().SelectEntryPos( nPos, bSelect );
+    getImpl()->SelectEntryPos( nPos, bSelect );
 #else /* !LAYOUT_API_CALLS_HANDLER */
     GetListBox ()->SelectEntryPos (nPos, bSelect);
 #endif /* !LAYOUT_API_CALLS_HANDLER */
@@ -718,12 +711,12 @@ void ListBox::SelectEntry( String const& rStr, bool 
bSelect )
 
 sal_uInt16 ListBox::GetSelectEntryCount() const
 {
-    return getImpl().GetSelectEntryCount();
+    return getImpl()->GetSelectEntryCount();
 }
 
 sal_uInt16 ListBox::GetSelectEntryPos( sal_uInt16 nSelIndex ) const
 {
-    return getImpl().GetSelectEntryPos( nSelIndex );
+    return getImpl()->GetSelectEntryPos( nSelIndex );
 }
 
 String ListBox::GetSelectEntry( sal_uInt16 nSelIndex ) const
@@ -733,33 +726,33 @@ String ListBox::GetSelectEntry( sal_uInt16 nSelIndex ) 
const
 
 Link& ListBox::GetSelectHdl ()
 {
-    return getImpl ().GetSelectHdl ();
+    return getImpl()->GetSelectHdl ();
 }
 
 void ListBox::SetSelectHdl( Link const& link )
 {
-    getImpl().SetSelectHdl( link );
+    getImpl()->SetSelectHdl( link );
 }
 
 Link& ListBox::GetClickHdl ()
 {
-    return getImpl ().GetSelectHdl ();
+    return getImpl()->GetSelectHdl ();
 }
 
 void ListBox::SetClickHdl( Link const& link )
 {
-    if (&getImpl () && getImpl().mxListBox.is ())
-        getImpl().SetClickHdl( link );
+    if (getImpl() && getImpl()->mxListBox.is ())
+        getImpl()->SetClickHdl( link );
 }
 
 Link& ListBox::GetDoubleClickHdl ()
 {
-    return getImpl ().GetSelectHdl ();
+    return getImpl()->GetSelectHdl ();
 }
 
 void ListBox::SetDoubleClickHdl( Link const& link )
 {
-    getImpl().SetDoubleClickHdl( link );
+    getImpl()->SetDoubleClickHdl( link );
 }
 
 void ListBox::SetEntryData( sal_uInt16 pos, void* data)
diff --git a/toolkit/source/layout/vcl/wrapper.cxx 
b/toolkit/source/layout/vcl/wrapper.cxx
index 882592cabfde..4eec90e407a7 100644
--- a/toolkit/source/layout/vcl/wrapper.cxx
+++ b/toolkit/source/layout/vcl/wrapper.cxx
@@ -206,7 +206,7 @@ void SAL_CALL WindowImpl::disposing (lang::EventObject 
const&)
 
 uno::Any WindowImpl::getProperty (char const* name)
 {
-    if ( !this || !mxVclPeer.is() )
+    if ( !mxVclPeer.is() )
         return css::uno::Any();
     return mxVclPeer->getProperty
         ( rtl::OUString( name, strlen( name ), RTL_TEXTENCODING_ASCII_US ) );
@@ -214,7 +214,7 @@ uno::Any WindowImpl::getProperty (char const* name)
 
 void WindowImpl::setProperty (char const *name, uno::Any any)
 {
-    if ( !this || !mxVclPeer.is() )
+    if ( !mxVclPeer.is() )
         return;
     mxVclPeer->setProperty
         ( rtl::OUString( name, strlen( name ), RTL_TEXTENCODING_ASCII_US ), 
any );
@@ -249,16 +249,7 @@ Window::~Window()
     mpImpl = 0;
 }
 
-///IMPL_GET_IMPL( Control );
-
-static ControlImpl* null_control_impl = 0;
-
-ControlImpl &Control::getImpl () const
-{
-    if (ControlImpl* c = static_cast<ControlImpl *>(mpImpl))
-        return *c;
-    return *null_control_impl;
-}
+IMPL_GET_IMPL( Control );
 
 Control::~Control ()
 {
@@ -336,7 +327,7 @@ void Window::ParentSet (Window *window)
 
 Context *Window::getContext()
 {
-    return this && mpImpl ? mpImpl->mpCtx : NULL;
+    return mpImpl ? mpImpl->mpCtx : NULL;
 }
 
 PeerHandle Window::GetPeer() const
@@ -553,7 +544,8 @@ void Window::SetStyle( WinBits nStyle )
                 aValue = uno::makeAny( (bool) nValue );
             else
                 aValue = uno::makeAny( (short) nValue );
-            mpImpl->setProperty( toolkitVclPropsMap[ i ].propName, aValue );
+            if ( mpImpl )
+                mpImpl->setProperty( toolkitVclPropsMap[ i ].propName, aValue 
);
         }
     }
 }
@@ -562,6 +554,8 @@ WinBits Window::GetStyle()
 {
     uno::Reference< awt::XVclWindowPeer > xPeer = mpImpl->mxVclPeer;
     WinBits ret = 0;
+    if ( !mpImpl )
+       return 0;
     for (int i = 0; i < toolkitVclPropsMapLen; i++)
     {
         if ( toolkitVclPropsMap[ i ].propName )
@@ -613,30 +607,30 @@ PeerHandle Window::CreatePeer( Window *parent, WinBits 
nStyle, const char *pName
 
 void Window::Enable( bool bEnable )
 {
-    if ( !getImpl().mxWindow.is() )
+    if ( !getImpl()->mxWindow.is() )
         return;
-    getImpl().mxWindow->setEnable( bEnable );
+    getImpl()->mxWindow->setEnable( bEnable );
 }
 
 void Window::Show( bool bVisible )
 {
-    if ( !getImpl().mxWindow.is() )
+    if ( !getImpl()->mxWindow.is() )
         return;
-    getImpl().mxWindow->setVisible( bVisible );
+    getImpl()->mxWindow->setVisible( bVisible );
     if (!bVisible)
-        getImpl ().bFirstTimeVisible = true;
-    else if (GetParent() && getImpl().bFirstTimeVisible)
+        getImpl()->bFirstTimeVisible = true;
+    else if (GetParent() && getImpl()->bFirstTimeVisible)
     {
-        getImpl().redraw ();
-        getImpl().bFirstTimeVisible = false;
+        getImpl()->redraw ();
+        getImpl()->bFirstTimeVisible = false;
     }
 }
 
 void Window::GrabFocus()
 {
-    if ( !getImpl().mxWindow.is() )
+    if ( !getImpl()->mxWindow.is() )
         return;
-    getImpl().mxWindow->setFocus();
+    getImpl()->mxWindow->setFocus();
 }
 
 void Window::SetUpdateMode(bool mode)
@@ -745,24 +739,24 @@ void SAL_CALL ControlImpl::focusLost (awt::FocusEvent 
const&)
 
 Link& Control::GetGetFocusHdl ()
 {
-    return getImpl ().GetGetFocusHdl ();
+    return getImpl()->GetGetFocusHdl ();
 }
 
 void Control::SetGetFocusHdl (Link const& link)
 {
-    if (&getImpl () && getImpl().mxWindow.is ())
-        getImpl ().SetGetFocusHdl (link);
+    if (getImpl() && getImpl()->mxWindow.is ())
+        getImpl()->SetGetFocusHdl (link);
 }
 
 Link& Control::GetLoseFocusHdl ()
 {
-    return getImpl ().GetLoseFocusHdl ();
+    return getImpl()->GetLoseFocusHdl ();
 }
 
 void Control::SetLoseFocusHdl (Link const& link)
 {
-    if (&getImpl () && getImpl().mxWindow.is ())
-        getImpl ().SetLoseFocusHdl (link);
+    if (getImpl() && getImpl()->mxWindow.is ())
+        getImpl()->SetLoseFocusHdl (link);
 }
 
 class DialogImpl : public WindowImpl
@@ -802,8 +796,8 @@ Dialog::~Dialog ()
 IMPL_GET_WINDOW (Dialog);
 IMPL_GET_IMPL (Dialog);
 
-#define MX_DIALOG if (getImpl ().mxDialog.is ()) getImpl ().mxDialog
-#define RETURN_MX_DIALOG if (getImpl ().mxDialog.is ()) return getImpl 
().mxDialog
+#define MX_DIALOG if (getImpl()->mxDialog.is ()) getImpl()->mxDialog
+#define RETURN_MX_DIALOG if (getImpl()->mxDialog.is ()) return 
getImpl()->mxDialog
 
 short Dialog::Execute()
 {
@@ -1082,8 +1076,8 @@ public:
 IMPL_GET_WINDOW (TabControl);
 IMPL_GET_LAYOUT_VCLXWINDOW (TabControl);
 
-#define MX_TABCONTROL if (getImpl ().mxTabControl.is ()) getImpl 
().mxTabControl
-#define RETURN_MX_TABCONTROL if (getImpl ().mxTabControl.is ()) return getImpl 
().mxTabControl
+#define MX_TABCONTROL if (getImpl()->mxTabControl.is ()) 
getImpl()->mxTabControl
+#define RETURN_MX_TABCONTROL if (getImpl()->mxTabControl.is ()) return getImpl 
()->mxTabControl
 
 TabControl::~TabControl ()
 {
@@ -1132,7 +1126,7 @@ void TabControl::InsertPage (sal_uInt16 id, OUString 
const& title, sal_uInt16 po
         //GetVCLXTabControl ()->AddChild (uno::Reference 
<awt::XLayoutConstrains> (page->::Window::GetWindowPeer (), uno::UNO_QUERY));
         //GetVCLXTabControl ()->AddChild (uno::Reference 
<awt::XLayoutConstrains> (page->GetComponentInterface (), uno::UNO_QUERY));
     }
-    getImpl ().redraw ();
+    getImpl()->redraw ();
 #endif
 }
 void TabControl::RemovePage (sal_uInt16 id)
@@ -1149,12 +1143,12 @@ sal_uInt16 TabControl::GetPageId (sal_uInt16 pos) const
 }
 sal_uInt16 TabControl::GetPagePos (sal_uInt16 id) const
 {
-    getImpl ().redraw ();
+    getImpl()->redraw ();
     return GetTabControl ()->GetPagePos (id);
 }
 void TabControl::SetCurPageId (sal_uInt16 id)
 {
-    getImpl ().redraw ();
+    getImpl()->redraw ();
     GetTabControl ()->SetCurPageId (id);
 }
 sal_uInt16 TabControl::GetCurPageId () const
@@ -1179,7 +1173,7 @@ void TabControl::SetTabPage (sal_uInt16 id, ::TabPage* 
page)
         //GetVCLXTabControl ()->AddChild (uno::Reference 
<awt::XLayoutConstrains> (page->GetComponentInterface (), uno::UNO_QUERY));
     }
 #endif
-    getImpl ().redraw ();
+    getImpl()->redraw ();
 }
 ::TabPage* TabControl::GetTabPage (sal_uInt16 id) const
 {
@@ -1187,21 +1181,21 @@ void TabControl::SetTabPage (sal_uInt16 id, ::TabPage* 
page)
 }
 void TabControl::SetActivatePageHdl (Link const& link)
 {
-    if (&getImpl () && getImpl().mxTabControl.is ())
-        getImpl ().SetActivatePageHdl (link);
+    if (getImpl() && getImpl()->mxTabControl.is ())
+        getImpl()->SetActivatePageHdl (link);
 }
 Link& TabControl::GetActivatePageHdl () const
 {
-    return getImpl ().GetActivatePageHdl ();
+    return getImpl()->GetActivatePageHdl ();
 }
 void TabControl::SetDeactivatePageHdl (Link const& link)
 {
-    if (&getImpl () && getImpl().mxTabControl.is ())
-        getImpl ().SetDeactivatePageHdl (link);
+    if (getImpl() && getImpl()->mxTabControl.is ())
+        getImpl()->SetDeactivatePageHdl (link);
 }
 Link& TabControl::GetDeactivatePageHdl () const
 {
-    return getImpl ().GetDeactivatePageHdl ();
+    return getImpl()->GetDeactivatePageHdl ();
 }
 void TabControl::SetTabPageSizePixel (Size const& size)
 {
@@ -1330,9 +1324,9 @@ IMPL_GET_IMPL( FixedText );
 
 void FixedText::SetText( OUString const& rStr )
 {
-    if ( !getImpl().mxFixedText.is() )
+    if ( !getImpl()->mxFixedText.is() )
         return;
-    getImpl().mxFixedText->setText( rStr );
+    getImpl()->mxFixedText->setText( rStr );
 }
 
 class FixedInfoImpl : public FixedTextImpl
@@ -1382,7 +1376,7 @@ public:
         }
 #if 0
         else
-            getImpl().mxGraphic->...();
+            getImpl()->mxGraphic->...();
 #endif
     }
 };
@@ -1393,10 +1387,10 @@ IMPL_GET_IMPL( FixedImage )
 void FixedImage::setImage( ::Image const& i )
 {
     (void) i;
-    if ( !getImpl().mxGraphic.is() )
+    if ( !getImpl()->mxGraphic.is() )
         return;
     //FIXME: hack moved to proplist
-    //getImpl().mxGraphic =
+    //getImpl()->mxGraphic =
 }
 
 #if 0
@@ -1419,37 +1413,37 @@ IMPL_GET_IMPL( ProgressBar );
 
 void ProgressBar::SetForegroundColor( util::Color color )
 {
-    if ( !getImpl().mxProgressBar.is() )
+    if ( !getImpl()->mxProgressBar.is() )
         return;
-    getImpl().mxProgressBar->setForegroundColor( color );
+    getImpl()->mxProgressBar->setForegroundColor( color );
 }
 
 void ProgressBar::SetBackgroundColor( util::Color color )
 {
-    if ( !getImpl().mxProgressBar.is() )
+    if ( !getImpl()->mxProgressBar.is() )
         return;
-    getImpl().mxProgressBar->setBackgroundColor( color );
+    getImpl()->mxProgressBar->setBackgroundColor( color );
 }
 
 void ProgressBar::SetValue( sal_Int32 i )
 {
-    if ( !getImpl().mxProgressBar.is() )
+    if ( !getImpl()->mxProgressBar.is() )
         return;
-    getImpl().mxProgressBar->setValue( i );
+    getImpl()->mxProgressBar->setValue( i );
 }
 
 void ProgressBar::SetRange( sal_Int32 min, sal_Int32 max )
 {
-    if ( !getImpl().mxProgressBar.is() )
+    if ( !getImpl()->mxProgressBar.is() )
         return;
-    getImpl().mxProgressBar->setRange( min, max );
+    getImpl()->mxProgressBar->setRange( min, max );
 }
 
 sal_Int32 ProgressBar::GetValue()
 {
-    if ( !getImpl().mxProgressBar.is() )
+    if ( !getImpl()->mxProgressBar.is() )
         return 0;
-    return getImpl().mxProgressBar->getValue();
+    return getImpl()->mxProgressBar->getValue();
 }
 
 class PluginImpl: public ControlImpl
@@ -1516,12 +1510,12 @@ LocalizedString::LocalizedString( Context *context, 
char const* id )
 
 String LocalizedString::getString ()
 {
-    return getImpl ().getText ();
+    return getImpl()->getText ();
 }
 
 OUString LocalizedString::getOUString ()
 {
-    return getImpl ().getText ();
+    return getImpl()->getText ();
 }
 
 LocalizedString::operator OUString ()
@@ -1532,13 +1526,13 @@ LocalizedString::operator OUString ()
 LocalizedString::operator OUString const& ()
 {
     getOUString ();
-    return getImpl ().maString;
+    return getImpl()->maString;
 }
 
 LocalizedString::operator String()
 {
     getOUString ();
-    return getImpl ().maString;
+    return getImpl()->maString;
 }
 
 String LocalizedString::GetToken (sal_uInt16 i, sal_Char c)
@@ -1548,24 +1542,24 @@ String LocalizedString::GetToken (sal_uInt16 i, 
sal_Char c)
 
 OUString LocalizedString::operator= (OUString const& s)
 {
-    getImpl().setText( s );
-    return getImpl().getText();
+    getImpl()->setText( s );
+    return getImpl()->getText();
 }
 
 OUString LocalizedString::operator+= (OUString const& b)
 {
-    OUString a = getImpl ().getText ();
+    OUString a = getImpl()->getText ();
     a += b;
-    getImpl ().setText (a);
-    return getImpl ().getText ();
+    getImpl()->setText (a);
+    return getImpl()->getText ();
 }
 
 OUString LocalizedString::operator+= (sal_Unicode const b)
 {
-    String a = getImpl ().getText ();
+    String a = getImpl()->getText ();
     a += b;
-    getImpl ().setText (a);
-    return getImpl ().getText ();
+    getImpl()->setText (a);
+    return getImpl()->getText ();
 }
 
 class InPlugImpl : public WindowImpl
diff --git a/toolkit/source/layout/vcl/wrapper.hxx 
b/toolkit/source/layout/vcl/wrapper.hxx
index 7dc5c40f5c65..66066090fc39 100644
--- a/toolkit/source/layout/vcl/wrapper.hxx
+++ b/toolkit/source/layout/vcl/wrapper.hxx
@@ -83,14 +83,14 @@ public:
     void SAL_CALL focusLost (css::awt::FocusEvent const& e) throw 
(css::uno::RuntimeException);
 };
 
-inline WindowImpl &Window::getImpl() const{ return *(static_cast< WindowImpl * 
>( mpImpl )); }
+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.
 #define IMPL_GET_IMPL(t) \
-    inline t##Impl &t::getImpl() const \
+    inline t##Impl* t::getImpl() const \
     { \
-        return *(static_cast<t##Impl *>(mpImpl)); \
+        return (static_cast<t##Impl *>(mpImpl)); \
     }
 #define IMPL_CONSTRUCTORS_BODY(t,par,unoName,body) \
     t::t( Context *context, const char *pId, sal_uInt32 nId ) \
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to