[Libreoffice-commits] core.git: cui/source cui/uiconfig include/vcl

Caolán McNamara caolanm at redhat.com
Mon May 28 20:53:04 UTC 2018


 cui/source/inc/transfrm.hxx       |   70 +++---
 cui/source/tabpages/transfrm.cxx  |  439 ++++++++++++++++----------------------
 cui/uiconfig/ui/possizetabpage.ui |  145 +++++++-----
 include/vcl/customweld.hxx        |    1 
 4 files changed, 311 insertions(+), 344 deletions(-)

New commits:
commit ebfb0d3950a8723e24baa330b80a0a560e381639
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Mon May 28 16:51:20 2018 +0100

    weld SvxPositionSizeTabPage
    
    Change-Id: Ic642d6ab2470a14b3a1d83284407fc690d5eba88
    Reviewed-on: https://gerrit.libreoffice.org/54945
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/cui/source/inc/transfrm.hxx b/cui/source/inc/transfrm.hxx
index 654facf57c05..7e7aa264f91b 100644
--- a/cui/source/inc/transfrm.hxx
+++ b/cui/source/inc/transfrm.hxx
@@ -74,32 +74,6 @@ class SvxPositionSizeTabPage : public SvxTabPage
     static const sal_uInt16 pPosSizeRanges[];
 
 private:
-    // position
-    VclPtr<VclFrame>            m_pFlPosition;
-    VclPtr<MetricField>         m_pMtrPosX;
-    VclPtr<MetricField>         m_pMtrPosY;
-    VclPtr<SvxRectCtl>          m_pCtlPos;
-
-    // size
-    VclPtr<VclFrame>            m_pFlSize;
-    VclPtr<FixedText>           m_pFtWidth;
-    VclPtr<MetricField>         m_pMtrWidth;
-    VclPtr<FixedText>           m_pFtHeight;
-    VclPtr<MetricField>         m_pMtrHeight;
-    VclPtr<CheckBox>            m_pCbxScale;
-    VclPtr<SvxRectCtl>          m_pCtlSize;
-
-    // protect
-    VclPtr<VclFrame>            m_pFlProtect;
-    VclPtr<TriStateBox>         m_pTsbPosProtect;
-    VclPtr<TriStateBox>         m_pTsbSizeProtect;
-
-    // adjust
-    VclPtr<VclFrame>            m_pFlAdjust;
-    VclPtr<TriStateBox>         m_pTsbAutoGrowWidth;
-    VclPtr<TriStateBox>         m_pTsbAutoGrowHeight;
-
-private:
     const SfxItemSet&   mrOutAttrs;
 
     const SdrView*      mpView;
@@ -123,22 +97,48 @@ private:
     double              mfOldHeight;
     RectPoint          meRP;
 
+    RectCtl          m_aCtlPos;
+    RectCtl          m_aCtlSize;
 
-    DECL_LINK( ChangePosProtectHdl, Button*, void );
-    DECL_LINK( ChangeSizeProtectHdl, Button*, void );
+    // position
+    std::unique_ptr<weld::Widget> m_xFlPosition;
+    std::unique_ptr<weld::MetricSpinButton> m_xMtrPosX;
+    std::unique_ptr<weld::MetricSpinButton> m_xMtrPosY;
+    std::unique_ptr<weld::CustomWeld> m_xCtlPos;
+
+    // size
+    std::unique_ptr<weld::Widget> m_xFlSize;
+    std::unique_ptr<weld::Label> m_xFtWidth;
+    std::unique_ptr<weld::MetricSpinButton> m_xMtrWidth;
+    std::unique_ptr<weld::Label> m_xFtHeight;
+    std::unique_ptr<weld::MetricSpinButton> m_xMtrHeight;
+    std::unique_ptr<weld::CheckButton> m_xCbxScale;
+    std::unique_ptr<weld::CustomWeld> m_xCtlSize;
+
+    // protect
+    std::unique_ptr<weld::Widget> m_xFlProtect;
+    std::unique_ptr<weld::CheckButton> m_xTsbPosProtect;
+    std::unique_ptr<weld::CheckButton> m_xTsbSizeProtect;
+
+    // adjust
+    std::unique_ptr<weld::Widget> m_xFlAdjust;
+    std::unique_ptr<weld::CheckButton> m_xTsbAutoGrowWidth;
+    std::unique_ptr<weld::CheckButton> m_xTsbAutoGrowHeight;
+
+    DECL_LINK(ChangePosProtectHdl, weld::ToggleButton&, void);
+    DECL_LINK(ChangeSizeProtectHdl, weld::ToggleButton&, void);
 
     void SetMinMaxPosition();
     void GetTopLeftPosition(double& rfX, double& rfY, const basegfx::B2DRange& rRange);
 
-    DECL_LINK( ChangeWidthHdl, Edit&, void );
-    DECL_LINK( ChangeHeightHdl, Edit&, void );
-    DECL_LINK( ClickSizeProtectHdl, Button*, void );
-    DECL_LINK( ClickAutoHdl, Button*, void );
+    DECL_LINK( ChangeWidthHdl, weld::MetricSpinButton&, void );
+    DECL_LINK( ChangeHeightHdl, weld::MetricSpinButton&, void );
+    DECL_LINK( ClickSizeProtectHdl, weld::ToggleButton&, void );
+    DECL_LINK( ClickAutoHdl, weld::ToggleButton&, void );
 
 public:
-    SvxPositionSizeTabPage( vcl::Window* pParent, const SfxItemSet& rInAttrs  );
+    SvxPositionSizeTabPage(TabPageParent pParent, const SfxItemSet& rInAttrs);
     virtual ~SvxPositionSizeTabPage() override;
-    virtual void dispose() override;
 
     static VclPtr<SfxTabPage> Create( TabPageParent, const SfxItemSet* );
     static const sal_uInt16* GetRanges() {  return pPosSizeRanges; }
@@ -149,8 +149,8 @@ public:
     virtual void ActivatePage( const SfxItemSet& rSet ) override;
     virtual DeactivateRC DeactivatePage( SfxItemSet* pSet ) override;
 
-    virtual void PointChanged( vcl::Window* pWindow, RectPoint eRP ) override;
     virtual void PointChanged( weld::DrawingArea* pWindow, RectPoint eRP ) override;
+    virtual void PointChanged( vcl::Window* pWindow, RectPoint eRP ) override;
 
     void         Construct();
     void         SetView( const SdrView* pSdrView ) { mpView = pSdrView; }
diff --git a/cui/source/tabpages/transfrm.cxx b/cui/source/tabpages/transfrm.cxx
index 2095550f6f3f..b37d366f2f0b 100644
--- a/cui/source/tabpages/transfrm.cxx
+++ b/cui/source/tabpages/transfrm.cxx
@@ -773,8 +773,8 @@ void SvxSlantTabPage::PointChanged( weld::DrawingArea*, RectPoint )
 |*      Dialog for changing position and size of graphic objects
 |*
 \************************************************************************/
-SvxPositionSizeTabPage::SvxPositionSizeTabPage(vcl::Window* pParent, const SfxItemSet& rInAttrs)
-    : SvxTabPage(pParent,"PositionAndSize","cui/ui/possizetabpage.ui", rInAttrs)
+SvxPositionSizeTabPage::SvxPositionSizeTabPage(TabPageParent pParent, const SfxItemSet& rInAttrs)
+    : SvxTabPage(pParent, "cui/ui/possizetabpage.ui", "PositionAndSize", rInAttrs)
     , mrOutAttrs(rInAttrs)
     , mpView(nullptr)
     , meDlgUnit(FUNIT_NONE)
@@ -785,28 +785,26 @@ SvxPositionSizeTabPage::SvxPositionSizeTabPage(vcl::Window* pParent, const SfxIt
     , mbAdjustDisabled(true)
     , mfOldWidth(0.0)
     , mfOldHeight(0.0)
+    , m_aCtlPos(this)
+    , m_aCtlSize(this)
+    , m_xFlPosition(m_xBuilder->weld_widget("FL_POSITION"))
+    , m_xMtrPosX(m_xBuilder->weld_metric_spin_button("MTR_FLD_POS_X", FUNIT_CM))
+    , m_xMtrPosY(m_xBuilder->weld_metric_spin_button("MTR_FLD_POS_Y", FUNIT_CM))
+    , m_xCtlPos(new weld::CustomWeld(*m_xBuilder, "CTL_POSRECT", m_aCtlPos))
+    , m_xFlSize(m_xBuilder->weld_widget("FL_SIZE"))
+    , m_xFtWidth(m_xBuilder->weld_label("FT_WIDTH"))
+    , m_xMtrWidth(m_xBuilder->weld_metric_spin_button("MTR_FLD_WIDTH", FUNIT_CM))
+    , m_xFtHeight(m_xBuilder->weld_label("FT_HEIGHT"))
+    , m_xMtrHeight(m_xBuilder->weld_metric_spin_button("MTR_FLD_HEIGHT", FUNIT_CM))
+    , m_xCbxScale(m_xBuilder->weld_check_button("CBX_SCALE"))
+    , m_xCtlSize(new weld::CustomWeld(*m_xBuilder, "CTL_SIZERECT", m_aCtlSize))
+    , m_xFlProtect(m_xBuilder->weld_widget("FL_PROTECT"))
+    , m_xTsbPosProtect(m_xBuilder->weld_check_button("TSB_POSPROTECT"))
+    , m_xTsbSizeProtect(m_xBuilder->weld_check_button("TSB_SIZEPROTECT"))
+    , m_xFlAdjust(m_xBuilder->weld_widget("FL_ADJUST"))
+    , m_xTsbAutoGrowWidth(m_xBuilder->weld_check_button("TSB_AUTOGROW_WIDTH"))
+    , m_xTsbAutoGrowHeight(m_xBuilder->weld_check_button("TSB_AUTOGROW_HEIGHT"))
 {
-    get(m_pFlPosition, "FL_POSITION");
-    get(m_pMtrPosX, "MTR_FLD_POS_X");
-    get(m_pMtrPosY, "MTR_FLD_POS_Y");
-    get(m_pCtlPos, "CTL_POSRECT" );
-
-    get(m_pFlSize, "FL_SIZE");
-    get(m_pFtWidth, "FT_WIDTH");
-    get(m_pMtrWidth, "MTR_FLD_WIDTH");
-    get(m_pFtHeight, "FT_HEIGHT");
-    get(m_pMtrHeight, "MTR_FLD_HEIGHT");
-    get(m_pCbxScale, "CBX_SCALE");
-    get(m_pCtlSize, "CTL_SIZERECT" );
-
-    get(m_pFlProtect, "FL_PROTECT");
-    get(m_pTsbPosProtect, "TSB_POSPROTECT");
-    get(m_pTsbSizeProtect, "TSB_SIZEPROTECT");
-
-    get(m_pFlAdjust, "FL_ADJUST");
-    get(m_pTsbAutoGrowWidth, "TSB_AUTOGROW_WIDTH");
-    get(m_pTsbAutoGrowHeight, "TSB_AUTOGROW_HEIGHT");
-
     // this page needs ExchangeSupport
     SetExchangeSupport();
 
@@ -815,49 +813,25 @@ SvxPositionSizeTabPage::SvxPositionSizeTabPage(vcl::Window* pParent, const SfxIt
     DBG_ASSERT( pPool, "no pool (!)" );
     mePoolUnit = pPool->GetMetric( SID_ATTR_TRANSFORM_POS_X );
 
-    m_pCtlPos->SetActualRP(RectPoint::LT);
-    m_pCtlSize->SetActualRP(RectPoint::LT);
+    m_aCtlPos.SetActualRP(RectPoint::LT);
+    m_aCtlSize.SetActualRP(RectPoint::LT);
     meRP = RectPoint::LT; // see above
 
-    m_pMtrWidth->SetModifyHdl( LINK( this, SvxPositionSizeTabPage, ChangeWidthHdl ) );
-    m_pMtrHeight->SetModifyHdl( LINK( this, SvxPositionSizeTabPage, ChangeHeightHdl ) );
-    m_pCbxScale->SetClickHdl( LINK( this, SvxPositionSizeTabPage, ClickAutoHdl ) );
+    m_xMtrWidth->connect_value_changed( LINK( this, SvxPositionSizeTabPage, ChangeWidthHdl ) );
+    m_xMtrHeight->connect_value_changed( LINK( this, SvxPositionSizeTabPage, ChangeHeightHdl ) );
+    m_xCbxScale->connect_toggled( LINK( this, SvxPositionSizeTabPage, ClickAutoHdl ) );
 
-    m_pTsbAutoGrowWidth->Disable();
-    m_pTsbAutoGrowHeight->Disable();
-    m_pFlAdjust->Disable();
+    m_xTsbAutoGrowWidth->set_sensitive(false);
+    m_xTsbAutoGrowHeight->set_sensitive(false);
+    m_xFlAdjust->set_sensitive(false);
 
     // #i2379# disable controls when protected
-    m_pTsbPosProtect->SetClickHdl( LINK( this, SvxPositionSizeTabPage, ChangePosProtectHdl ) );
-    m_pTsbSizeProtect->SetClickHdl( LINK( this, SvxPositionSizeTabPage, ChangeSizeProtectHdl ) );
-
+    m_xTsbPosProtect->connect_toggled( LINK( this, SvxPositionSizeTabPage, ChangePosProtectHdl ) );
+    m_xTsbSizeProtect->connect_toggled( LINK( this, SvxPositionSizeTabPage, ChangeSizeProtectHdl ) );
 }
 
 SvxPositionSizeTabPage::~SvxPositionSizeTabPage()
 {
-    disposeOnce();
-}
-
-void SvxPositionSizeTabPage::dispose()
-{
-    m_pFlPosition.clear();
-    m_pMtrPosX.clear();
-    m_pMtrPosY.clear();
-    m_pCtlPos.clear();
-    m_pFlSize.clear();
-    m_pFtWidth.clear();
-    m_pMtrWidth.clear();
-    m_pFtHeight.clear();
-    m_pMtrHeight.clear();
-    m_pCbxScale.clear();
-    m_pCtlSize.clear();
-    m_pFlProtect.clear();
-    m_pTsbPosProtect.clear();
-    m_pTsbSizeProtect.clear();
-    m_pFlAdjust.clear();
-    m_pTsbAutoGrowWidth.clear();
-    m_pTsbAutoGrowHeight.clear();
-    SvxTabPage::dispose();
 }
 
 void SvxPositionSizeTabPage::Construct()
@@ -865,17 +839,17 @@ void SvxPositionSizeTabPage::Construct()
     // get range and work area
     DBG_ASSERT( mpView, "no valid view (!)" );
     meDlgUnit = GetModuleFieldUnit( GetItemSet() );
-    SetFieldUnit( *m_pMtrPosX, meDlgUnit, true );
-    SetFieldUnit( *m_pMtrPosY, meDlgUnit, true );
-    SetFieldUnit( *m_pMtrWidth, meDlgUnit, true );
-    SetFieldUnit( *m_pMtrHeight, meDlgUnit, true );
+    SetFieldUnit( *m_xMtrPosX, meDlgUnit, true );
+    SetFieldUnit( *m_xMtrPosY, meDlgUnit, true );
+    SetFieldUnit( *m_xMtrWidth, meDlgUnit, true );
+    SetFieldUnit( *m_xMtrHeight, meDlgUnit, true );
 
     if(FUNIT_MILE == meDlgUnit || FUNIT_KM == meDlgUnit)
     {
-        m_pMtrPosX->SetDecimalDigits( 3 );
-        m_pMtrPosY->SetDecimalDigits( 3 );
-        m_pMtrWidth->SetDecimalDigits( 3 );
-        m_pMtrHeight->SetDecimalDigits( 3 );
+        m_xMtrPosX->set_digits( 3 );
+        m_xMtrPosY->set_digits( 3 );
+        m_xMtrWidth->set_digits( 3 );
+        m_xMtrHeight->set_digits( 3 );
     }
 
     { // #i75273#
@@ -907,8 +881,8 @@ void SvxPositionSizeTabPage::Construct()
                 if(maAnchor != basegfx::B2DPoint(pObj->GetAnchorPos().X(), pObj->GetAnchorPos().Y()))
                 {
                     // different anchor positions
-                    m_pMtrPosX->SetText( "" );
-                    m_pMtrPosY->SetText( "" );
+                    m_xMtrPosX->set_text("");
+                    m_xMtrPosY->set_text("");
                     mbPageDisabled = true;
                     return;
                 }
@@ -932,14 +906,10 @@ void SvxPositionSizeTabPage::Construct()
         {
             mbAdjustDisabled = false;
 
-            m_pFlAdjust->Enable();
+            m_xFlAdjust->set_sensitive(true);
 
-            m_pTsbAutoGrowWidth->SetClickHdl( LINK( this, SvxPositionSizeTabPage, ClickSizeProtectHdl ) );
-            m_pTsbAutoGrowHeight->SetClickHdl( LINK( this, SvxPositionSizeTabPage, ClickSizeProtectHdl ) );
-
-            // is used as flag to evaluate if its selectable
-            m_pTsbAutoGrowWidth->EnableTriState( false );
-            m_pTsbAutoGrowHeight->EnableTriState( false );
+            m_xTsbAutoGrowWidth->connect_toggled( LINK( this, SvxPositionSizeTabPage, ClickSizeProtectHdl ) );
+            m_xTsbAutoGrowHeight->connect_toggled( LINK( this, SvxPositionSizeTabPage, ClickSizeProtectHdl ) );
         }
     }
 
@@ -949,7 +919,7 @@ void SvxPositionSizeTabPage::Construct()
     TransfrmHelper::ScaleRect( maRange, aUIScale );
 
     // take UI units into account
-    const sal_uInt16 nDigits(m_pMtrPosX->GetDecimalDigits());
+    const sal_uInt16 nDigits(m_xMtrPosX->get_digits());
     TransfrmHelper::ConvertRect( maWorkRange, nDigits, mePoolUnit, meDlgUnit );
     TransfrmHelper::ConvertRect( maRange, nDigits, mePoolUnit, meDlgUnit );
 
@@ -961,23 +931,23 @@ bool SvxPositionSizeTabPage::FillItemSet( SfxItemSet* rOutAttrs )
 {
     bool bModified(false);
 
-    if ( m_pMtrWidth->HasFocus() )
+    if ( m_xMtrWidth->has_focus() )
     {
-        ChangeWidthHdl( *m_pMtrWidth );
+        ChangeWidthHdl( *m_xMtrWidth );
     }
 
-    if ( m_pMtrHeight->HasFocus() )
+    if ( m_xMtrHeight->has_focus() )
     {
-        ChangeHeightHdl( *m_pMtrHeight );
+        ChangeHeightHdl( *m_xMtrHeight );
     }
 
     if( !mbPageDisabled )
     {
-        if ( m_pMtrPosX->IsValueModified() || m_pMtrPosY->IsValueModified() )
+        if (m_xMtrPosX->get_value_changed_from_saved() || m_xMtrPosY->get_value_changed_from_saved())
         {
             const double fUIScale(double(mpView->GetModel()->GetUIScale()));
-            double fX((GetCoreValue( *m_pMtrPosX, mePoolUnit ) + maAnchor.getX()) * fUIScale);
-            double fY((GetCoreValue( *m_pMtrPosY, mePoolUnit ) + maAnchor.getY()) * fUIScale);
+            double fX((GetCoreValue( *m_xMtrPosX, mePoolUnit ) + maAnchor.getX()) * fUIScale);
+            double fY((GetCoreValue( *m_xMtrPosY, mePoolUnit ) + maAnchor.getY()) * fUIScale);
 
             { // #i75273#
                 ::tools::Rectangle aTempRect(mpView->GetAllMarkedRect());
@@ -994,9 +964,9 @@ bool SvxPositionSizeTabPage::FillItemSet( SfxItemSet* rOutAttrs )
             bModified = true;
         }
 
-        if ( m_pTsbPosProtect->IsValueChangedFromSaved() )
+        if (m_xTsbPosProtect->get_state_changed_from_saved())
         {
-            if( m_pTsbPosProtect->GetState() == TRISTATE_INDET )
+            if( m_xTsbPosProtect->get_inconsistent() )
             {
                 rOutAttrs->InvalidateItem( SID_ATTR_TRANSFORM_PROTECT_POS );
             }
@@ -1004,30 +974,28 @@ bool SvxPositionSizeTabPage::FillItemSet( SfxItemSet* rOutAttrs )
             {
                 rOutAttrs->Put(
                     SfxBoolItem( GetWhich( SID_ATTR_TRANSFORM_PROTECT_POS ),
-                    m_pTsbPosProtect->GetState() == TRISTATE_TRUE ) );
+                    m_xTsbPosProtect->get_active() ) );
             }
 
             bModified = true;
         }
     }
 
-    if ( m_pMtrWidth->IsValueModified() || m_pMtrHeight->IsValueModified() )
+    if (m_xMtrWidth->get_value_changed_from_saved() || m_xMtrHeight->get_value_changed_from_saved())
     {
         Fraction aUIScale = mpView->GetModel()->GetUIScale();
 
         // get Width
-        double nWidth = static_cast<double>(m_pMtrWidth->GetValue( meDlgUnit ));
-        nWidth = MetricField::ConvertDoubleValue( nWidth, m_pMtrWidth->GetBaseValue(), m_pMtrWidth->GetDecimalDigits(), meDlgUnit, FUNIT_100TH_MM );
+        double nWidth = static_cast<double>(m_xMtrWidth->get_value(FUNIT_100TH_MM));
         long lWidth = long(nWidth * static_cast<double>(aUIScale));
         lWidth = OutputDevice::LogicToLogic( lWidth, MapUnit::Map100thMM, mePoolUnit );
-        lWidth = static_cast<long>(m_pMtrWidth->Denormalize( lWidth ));
+        lWidth = static_cast<long>(m_xMtrWidth->denormalize( lWidth ));
 
         // get Height
-        double nHeight = static_cast<double>(m_pMtrHeight->GetValue( meDlgUnit ));
-        nHeight = MetricField::ConvertDoubleValue( nHeight, m_pMtrHeight->GetBaseValue(), m_pMtrHeight->GetDecimalDigits(), meDlgUnit, FUNIT_100TH_MM );
+        double nHeight = static_cast<double>(m_xMtrHeight->get_value(FUNIT_100TH_MM));
         long lHeight = long(nHeight * static_cast<double>(aUIScale));
         lHeight = OutputDevice::LogicToLogic( lHeight, MapUnit::Map100thMM, mePoolUnit );
-        lHeight = static_cast<long>(m_pMtrHeight->Denormalize( lHeight ));
+        lHeight = static_cast<long>(m_xMtrHeight->denormalize( lHeight ));
 
         // put Width & Height to itemset
         rOutAttrs->Put( SfxUInt32Item( GetWhich( SID_ATTR_TRANSFORM_WIDTH ), static_cast<sal_uInt32>(lWidth) ) );
@@ -1036,50 +1004,42 @@ bool SvxPositionSizeTabPage::FillItemSet( SfxItemSet* rOutAttrs )
         bModified = true;
     }
 
-    if ( m_pTsbSizeProtect->IsValueChangedFromSaved() )
+    if (m_xTsbSizeProtect->get_state_changed_from_saved())
     {
-        if ( m_pTsbSizeProtect->GetState() == TRISTATE_INDET )
+        if ( m_xTsbSizeProtect->get_inconsistent() )
             rOutAttrs->InvalidateItem( SID_ATTR_TRANSFORM_PROTECT_SIZE );
         else
             rOutAttrs->Put(
                 SfxBoolItem( GetWhich( SID_ATTR_TRANSFORM_PROTECT_SIZE ),
-                m_pTsbSizeProtect->GetState() == TRISTATE_TRUE ) );
+                m_xTsbSizeProtect->get_active() ) );
         bModified = true;
     }
 
-    if ( m_pTsbAutoGrowWidth->IsValueChangedFromSaved() )
+    if (m_xTsbAutoGrowWidth->get_state_changed_from_saved())
     {
-        if ( !m_pTsbAutoGrowWidth->IsTriStateEnabled() )
-        {
-            if( m_pTsbAutoGrowWidth->GetState() == TRISTATE_INDET )
-                rOutAttrs->InvalidateItem( SID_ATTR_TRANSFORM_AUTOWIDTH );
-            else
-                rOutAttrs->Put(
-                    SfxBoolItem( GetWhich( SID_ATTR_TRANSFORM_AUTOWIDTH ),
-                    m_pTsbAutoGrowWidth->GetState() == TRISTATE_TRUE ) );
-        }
+        if( m_xTsbAutoGrowWidth->get_inconsistent() )
+            rOutAttrs->InvalidateItem( SID_ATTR_TRANSFORM_AUTOWIDTH );
+        else
+            rOutAttrs->Put(
+                SfxBoolItem( GetWhich( SID_ATTR_TRANSFORM_AUTOWIDTH ),
+                m_xTsbAutoGrowWidth->get_active() ) );
         bModified = true;
     }
 
-    if ( m_pTsbAutoGrowHeight->IsValueChangedFromSaved() )
+    if (m_xTsbAutoGrowHeight->get_state_changed_from_saved())
     {
-        if ( !m_pTsbAutoGrowHeight->IsTriStateEnabled() )
-        {
-            if( m_pTsbAutoGrowHeight->GetState() == TRISTATE_INDET )
-                rOutAttrs->InvalidateItem( SID_ATTR_TRANSFORM_AUTOHEIGHT );
-            else
-                rOutAttrs->Put(
-                    SfxBoolItem( GetWhich( SID_ATTR_TRANSFORM_AUTOHEIGHT ),
-                    m_pTsbAutoGrowHeight->GetState() == TRISTATE_TRUE ) );
-        }
+        if (m_xTsbAutoGrowHeight->get_inconsistent())
+            rOutAttrs->InvalidateItem( SID_ATTR_TRANSFORM_AUTOHEIGHT );
+        else
+            rOutAttrs->Put(
+                SfxBoolItem( GetWhich( SID_ATTR_TRANSFORM_AUTOHEIGHT ),
+                m_xTsbAutoGrowHeight->get_active() ) );
         bModified = true;
     }
 
-
     return bModified;
 }
 
-
 void SvxPositionSizeTabPage::Reset( const SfxItemSet*  )
 {
     const SfxPoolItem* pItem;
@@ -1091,107 +1051,90 @@ void SvxPositionSizeTabPage::Reset( const SfxItemSet*  )
         if ( pItem )
         {
             const double fTmp((static_cast<const SfxInt32Item*>(pItem)->GetValue() - maAnchor.getX()) / fUIScale);
-            SetMetricValue(*m_pMtrPosX, basegfx::fround(fTmp), mePoolUnit);
+            SetMetricValue(*m_xMtrPosX, basegfx::fround(fTmp), mePoolUnit);
         }
 
         pItem = GetItem( mrOutAttrs, SID_ATTR_TRANSFORM_POS_Y );
         if ( pItem )
         {
             const double fTmp((static_cast<const SfxInt32Item*>(pItem)->GetValue() - maAnchor.getY()) / fUIScale);
-            SetMetricValue(*m_pMtrPosY, basegfx::fround(fTmp), mePoolUnit);
+            SetMetricValue(*m_xMtrPosY, basegfx::fround(fTmp), mePoolUnit);
         }
 
         pItem = GetItem( mrOutAttrs, SID_ATTR_TRANSFORM_PROTECT_POS );
         if ( pItem )
         {
             bool bProtected = static_cast<const SfxBoolItem*>( pItem )->GetValue();
-            m_pTsbPosProtect->SetState( bProtected ? TRISTATE_TRUE : TRISTATE_FALSE );
-            m_pTsbPosProtect->EnableTriState( false );
+            m_xTsbPosProtect->set_active(bProtected);
         }
         else
         {
-            m_pTsbPosProtect->SetState( TRISTATE_INDET );
+            m_xTsbPosProtect->set_inconsistent(true);
         }
 
-        m_pTsbPosProtect->SaveValue();
-        m_pCtlPos->Reset();
+        m_xTsbPosProtect->save_state();
+        m_aCtlPos.Reset();
 
         // #i2379# Disable controls for protected objects
-        ChangePosProtectHdl( nullptr );
+        ChangePosProtectHdl(*m_xTsbPosProtect);
     }
 
     { // #i75273# set width
         pItem = GetItem( mrOutAttrs, SID_ATTR_TRANSFORM_WIDTH );
         mfOldWidth = std::max( pItem ? static_cast<double>(static_cast<const SfxUInt32Item*>(pItem)->GetValue()) : 0.0, 1.0 );
         double fTmpWidth((OutputDevice::LogicToLogic(static_cast<sal_Int32>(mfOldWidth), mePoolUnit, MapUnit::Map100thMM)) / fUIScale);
-
-        if(m_pMtrWidth->GetDecimalDigits())
-            fTmpWidth *= pow(10.0, m_pMtrWidth->GetDecimalDigits());
-
-        fTmpWidth = MetricField::ConvertDoubleValue(fTmpWidth, m_pMtrWidth->GetBaseValue(), m_pMtrWidth->GetDecimalDigits(), FUNIT_100TH_MM, meDlgUnit);
-        m_pMtrWidth->SetValue(static_cast<sal_Int64>(fTmpWidth), meDlgUnit);
+        m_xMtrWidth->set_value(static_cast<int>(fTmpWidth), FUNIT_100TH_MM);
     }
 
     { // #i75273# set height
         pItem = GetItem( mrOutAttrs, SID_ATTR_TRANSFORM_HEIGHT );
         mfOldHeight = std::max( pItem ? static_cast<double>(static_cast<const SfxUInt32Item*>(pItem)->GetValue()) : 0.0, 1.0 );
         double fTmpHeight((OutputDevice::LogicToLogic(static_cast<sal_Int32>(mfOldHeight), mePoolUnit, MapUnit::Map100thMM)) / fUIScale);
-
-        if(m_pMtrHeight->GetDecimalDigits())
-            fTmpHeight *= pow(10.0, m_pMtrHeight->GetDecimalDigits());
-
-        fTmpHeight = MetricField::ConvertDoubleValue(fTmpHeight, m_pMtrHeight->GetBaseValue(), m_pMtrHeight->GetDecimalDigits(), FUNIT_100TH_MM, meDlgUnit);
-        m_pMtrHeight->SetValue(static_cast<sal_Int64>(fTmpHeight), meDlgUnit);
+        m_xMtrHeight->set_value(static_cast<int>(fTmpHeight), FUNIT_100TH_MM);
     }
 
     pItem = GetItem( mrOutAttrs, SID_ATTR_TRANSFORM_PROTECT_SIZE );
     if ( pItem )
     {
-        m_pTsbSizeProtect->SetState( static_cast<const SfxBoolItem*>(pItem)->GetValue()
-                              ? TRISTATE_TRUE : TRISTATE_FALSE );
-        m_pTsbSizeProtect->EnableTriState( false );
+        m_xTsbSizeProtect->set_active(static_cast<const SfxBoolItem*>(pItem)->GetValue());
     }
     else
-        m_pTsbSizeProtect->SetState( TRISTATE_INDET );
+        m_xTsbSizeProtect->set_inconsistent(true);
 
     pItem = GetItem( mrOutAttrs, SID_ATTR_TRANSFORM_AUTOWIDTH );
     if ( pItem )
     {
-        m_pTsbAutoGrowWidth->SetState( static_cast<const SfxBoolItem*>( pItem )->GetValue()
-                           ? TRISTATE_TRUE : TRISTATE_FALSE );
+        m_xTsbAutoGrowWidth->set_active(static_cast<const SfxBoolItem*>( pItem )->GetValue());
     }
     else
-        m_pTsbAutoGrowWidth->SetState( TRISTATE_INDET );
+        m_xTsbAutoGrowWidth->set_inconsistent(true);
 
     pItem = GetItem( mrOutAttrs, SID_ATTR_TRANSFORM_AUTOHEIGHT );
     if ( pItem )
     {
-        m_pTsbAutoGrowHeight->SetState( static_cast<const SfxBoolItem*>( pItem )->GetValue()
-                           ? TRISTATE_TRUE : TRISTATE_FALSE );
+        m_xTsbAutoGrowHeight->set_active(static_cast<const SfxBoolItem*>( pItem )->GetValue());
     }
     else
-        m_pTsbAutoGrowHeight->SetState( TRISTATE_INDET );
+        m_xTsbAutoGrowHeight->set_inconsistent(true);
 
     // Is matching set?
     OUString aStr = GetUserData();
-    m_pCbxScale->Check( aStr.toInt32() != 0 );
+    m_xCbxScale->set_active(aStr.toInt32() != 0);
 
-    m_pTsbSizeProtect->SaveValue();
-    m_pTsbAutoGrowWidth->SaveValue();
-    m_pTsbAutoGrowHeight->SaveValue();
-    ClickSizeProtectHdl( nullptr );
+    m_xTsbSizeProtect->save_state();
+    m_xTsbAutoGrowWidth->save_state();
+    m_xTsbAutoGrowHeight->save_state();
+    ClickSizeProtectHdl(*m_xTsbAutoGrowHeight);
 
     // #i2379# Disable controls for protected objects
-    ChangeSizeProtectHdl( nullptr );
+    ChangeSizeProtectHdl(*m_xTsbSizeProtect);
 }
 
-
-VclPtr<SfxTabPage> SvxPositionSizeTabPage::Create( TabPageParent pWindow, const SfxItemSet* rOutAttrs )
+VclPtr<SfxTabPage> SvxPositionSizeTabPage::Create(TabPageParent pParent, const SfxItemSet* rOutAttrs)
 {
-    return VclPtr<SvxPositionSizeTabPage>::Create( pWindow.pParent, *rOutAttrs );
+    return VclPtr<SvxPositionSizeTabPage>::Create(pParent, *rOutAttrs);
 }
 
-
 void SvxPositionSizeTabPage::ActivatePage( const SfxItemSet& rSet )
 {
     SfxRectangleItem const * pRectItem = nullptr;
@@ -1212,8 +1155,8 @@ DeactivateRC SvxPositionSizeTabPage::DeactivatePage( SfxItemSet* _pSet )
 {
     if( _pSet )
     {
-        double fX(static_cast<double>(m_pMtrPosX->GetValue()));
-        double fY(static_cast<double>(m_pMtrPosY->GetValue()));
+        double fX(static_cast<double>(m_xMtrPosX->get_value(FUNIT_NONE)));
+        double fY(static_cast<double>(m_xMtrPosY->get_value(FUNIT_NONE)));
 
         GetTopLeftPosition(fX, fY, maRange);
         const ::tools::Rectangle aOutRectangle(
@@ -1221,9 +1164,9 @@ DeactivateRC SvxPositionSizeTabPage::DeactivatePage( SfxItemSet* _pSet )
             basegfx::fround(fX + maRange.getWidth()), basegfx::fround(fY + maRange.getHeight()));
         _pSet->Put(SfxRectangleItem(SID_ATTR_TRANSFORM_INTERN, aOutRectangle));
         _pSet->Put(SfxBoolItem( GetWhich( SID_ATTR_TRANSFORM_PROTECT_POS ),
-            m_pTsbPosProtect->GetState() == TRISTATE_TRUE ));
+            m_xTsbPosProtect->get_state() == TRISTATE_TRUE ));
         _pSet->Put(SfxBoolItem( GetWhich( SID_ATTR_TRANSFORM_PROTECT_SIZE ),
-            m_pTsbSizeProtect->GetState() == TRISTATE_TRUE ));
+            m_xTsbSizeProtect->get_state() == TRISTATE_TRUE ));
         FillItemSet(_pSet);
     }
 
@@ -1231,50 +1174,48 @@ DeactivateRC SvxPositionSizeTabPage::DeactivatePage( SfxItemSet* _pSet )
 }
 
 
-IMPL_LINK_NOARG(SvxPositionSizeTabPage, ChangePosProtectHdl, Button*, void)
+IMPL_LINK_NOARG(SvxPositionSizeTabPage, ChangePosProtectHdl, weld::ToggleButton&, void)
 {
     // #106572# Remember user's last choice
-    m_pTsbSizeProtect->SetState( m_pTsbPosProtect->GetState() == TRISTATE_TRUE ?  TRISTATE_TRUE : mnProtectSizeState );
+    m_xTsbSizeProtect->set_state(m_xTsbPosProtect->get_state() == TRISTATE_TRUE ?  TRISTATE_TRUE : mnProtectSizeState);
     UpdateControlStates();
 }
 
 
 void SvxPositionSizeTabPage::UpdateControlStates()
 {
-    const bool bPosProtect =  m_pTsbPosProtect->GetState() == TRISTATE_TRUE;
-    const bool bSizeProtect = m_pTsbSizeProtect->GetState() == TRISTATE_TRUE;
-    const bool bHeightChecked = !m_pTsbAutoGrowHeight->IsTriStateEnabled() && (m_pTsbAutoGrowHeight->GetState() == TRISTATE_TRUE);
-    const bool bWidthChecked = !m_pTsbAutoGrowWidth->IsTriStateEnabled() && (m_pTsbAutoGrowWidth->GetState() == TRISTATE_TRUE);
+    const bool bPosProtect =  m_xTsbPosProtect->get_state() == TRISTATE_TRUE;
+    const bool bSizeProtect = m_xTsbSizeProtect->get_state() == TRISTATE_TRUE;
+    const bool bHeightChecked = !m_xTsbAutoGrowHeight->get_inconsistent() && (m_xTsbAutoGrowHeight->get_active());
+    const bool bWidthChecked = !m_xTsbAutoGrowWidth->get_inconsistent() && (m_xTsbAutoGrowWidth->get_active());
 
-    m_pFlPosition->Enable( !bPosProtect && !mbPageDisabled );
+    m_xFlPosition->set_sensitive(!bPosProtect && !mbPageDisabled);
 
-    m_pTsbPosProtect->Enable( !mbProtectDisabled && !mbPageDisabled );
+    m_xTsbPosProtect->set_sensitive( !mbProtectDisabled && !mbPageDisabled );
 
-    m_pFlSize->Enable( !mbSizeDisabled && !bSizeProtect );
+    m_xFlSize->set_sensitive( !mbSizeDisabled && !bSizeProtect );
 
-    m_pFtWidth->Enable( !mbSizeDisabled && !bSizeProtect && !bWidthChecked );
-    m_pMtrWidth->Enable( !mbSizeDisabled && !bSizeProtect && !bWidthChecked );
+    m_xFtWidth->set_sensitive( !mbSizeDisabled && !bSizeProtect && !bWidthChecked );
+    m_xMtrWidth->set_sensitive( !mbSizeDisabled && !bSizeProtect && !bWidthChecked );
 
-    m_pFtHeight->Enable( !mbSizeDisabled && !bSizeProtect && !bHeightChecked );
-    m_pMtrHeight->Enable( !mbSizeDisabled && !bSizeProtect && !bHeightChecked );
+    m_xFtHeight->set_sensitive( !mbSizeDisabled && !bSizeProtect && !bHeightChecked );
+    m_xMtrHeight->set_sensitive( !mbSizeDisabled && !bSizeProtect && !bHeightChecked );
 
-    m_pCbxScale->Enable( !mbSizeDisabled && !bSizeProtect && !bHeightChecked && !bWidthChecked );
-    m_pCtlSize->Enable( !mbSizeDisabled && !bSizeProtect && (!bHeightChecked || !bWidthChecked) );
+    m_xCbxScale->set_sensitive( !mbSizeDisabled && !bSizeProtect && !bHeightChecked && !bWidthChecked );
+    m_xCtlSize->set_sensitive( !mbSizeDisabled && !bSizeProtect && (!bHeightChecked || !bWidthChecked) );
 
-    m_pFlProtect->Enable( !mbProtectDisabled );
-    m_pTsbSizeProtect->Enable( !mbProtectDisabled && !bPosProtect );
+    m_xFlProtect->set_sensitive( !mbProtectDisabled );
+    m_xTsbSizeProtect->set_sensitive( !mbProtectDisabled && !bPosProtect );
 
-    m_pFlAdjust->Enable( !mbSizeDisabled && !bSizeProtect && !mbAdjustDisabled );
-
-    m_pCtlSize->Invalidate();
-    m_pCtlPos->Invalidate();
+    m_xFlAdjust->set_sensitive( !mbSizeDisabled && !bSizeProtect && !mbAdjustDisabled );
 
+    m_aCtlSize.Invalidate();
+    m_aCtlPos.Invalidate();
 }
 
-
-IMPL_LINK_NOARG(SvxPositionSizeTabPage, ChangeSizeProtectHdl, Button*, void)
+IMPL_LINK_NOARG(SvxPositionSizeTabPage, ChangeSizeProtectHdl, weld::ToggleButton&, void)
 {
-    if( m_pTsbSizeProtect->IsEnabled() )
+    if (m_xTsbSizeProtect->get_sensitive())
     {
         // #106572# Remember user's last choice
 
@@ -1284,13 +1225,12 @@ IMPL_LINK_NOARG(SvxPositionSizeTabPage, ChangeSizeProtectHdl, Button*, void)
         // clicked. Thus, if pos protect is selected, the dialog is
         // closed and reopened again, unchecking pos protect will
         // always uncheck size protect, too. That's life.
-        mnProtectSizeState = m_pTsbSizeProtect->GetState();
+        mnProtectSizeState = m_xTsbSizeProtect->get_state();
     }
 
     UpdateControlStates();
 }
 
-
 void SvxPositionSizeTabPage::SetMinMaxPosition()
 {
     // position
@@ -1299,7 +1239,7 @@ void SvxPositionSizeTabPage::SetMinMaxPosition()
     double fRight(maWorkRange.getMaxX());
     double fBottom(maWorkRange.getMaxY());
 
-    switch ( m_pCtlPos->GetActualRP() )
+    switch (m_aCtlPos.GetActualRP())
     {
         case RectPoint::LT:
         {
@@ -1370,14 +1310,8 @@ void SvxPositionSizeTabPage::SetMinMaxPosition()
     fBottom = basegfx::clamp(fBottom, -fMaxLong, fMaxLong);
 
     // #i75273# normalizing when setting the min/max values was wrong, removed
-    m_pMtrPosX->SetMin(basegfx::fround64(fLeft));
-    m_pMtrPosX->SetFirst(basegfx::fround64(fLeft));
-    m_pMtrPosX->SetMax(basegfx::fround64(fRight));
-    m_pMtrPosX->SetLast(basegfx::fround64(fRight));
-    m_pMtrPosY->SetMin(basegfx::fround64(fTop));
-    m_pMtrPosY->SetFirst(basegfx::fround64(fTop));
-    m_pMtrPosY->SetMax(basegfx::fround64(fBottom));
-    m_pMtrPosY->SetLast(basegfx::fround64(fBottom));
+    m_xMtrPosX->set_range(basegfx::fround64(fLeft), basegfx::fround64(fRight), FUNIT_NONE);
+    m_xMtrPosY->set_range(basegfx::fround64(fTop), basegfx::fround64(fBottom), FUNIT_NONE);
 
     // size
     fLeft = maWorkRange.getMinX();
@@ -1387,7 +1321,7 @@ void SvxPositionSizeTabPage::SetMinMaxPosition()
     double fNewX(0);
     double fNewY(0);
 
-    switch ( m_pCtlSize->GetActualRP() )
+    switch (m_aCtlSize.GetActualRP())
     {
         case RectPoint::LT:
         {
@@ -1454,16 +1388,13 @@ void SvxPositionSizeTabPage::SetMinMaxPosition()
     }
 
     // #i75273# normalizing when setting the min/max values was wrong, removed
-    m_pMtrWidth->SetMax(basegfx::fround64(fNewX));
-    m_pMtrWidth->SetLast(basegfx::fround64(fNewX));
-    m_pMtrHeight->SetMax(basegfx::fround64(fNewY));
-    m_pMtrHeight->SetLast(basegfx::fround64(fNewY));
+    m_xMtrWidth->set_max(basegfx::fround64(fNewX), FUNIT_NONE);
+    m_xMtrHeight->set_max(basegfx::fround64(fNewY), FUNIT_NONE);
 }
 
-
 void SvxPositionSizeTabPage::GetTopLeftPosition(double& rfX, double& rfY, const basegfx::B2DRange& rRange)
 {
-    switch (m_pCtlPos->GetActualRP())
+    switch (m_aCtlPos.GetActualRP())
     {
         case RectPoint::LT:
         {
@@ -1516,65 +1447,70 @@ void SvxPositionSizeTabPage::GetTopLeftPosition(double& rfX, double& rfY, const
     }
 }
 
-void SvxPositionSizeTabPage::PointChanged( vcl::Window* pWindow, RectPoint eRP )
+void SvxPositionSizeTabPage::PointChanged(vcl::Window* /*pWindow*/, RectPoint /*eRP*/)
 {
-    if( pWindow == m_pCtlPos )
+    assert(false);
+}
+
+void SvxPositionSizeTabPage::PointChanged(weld::DrawingArea* pDrawingArea, RectPoint eRP)
+{
+    if (pDrawingArea == m_aCtlPos.GetDrawingArea())
     {
         SetMinMaxPosition();
         switch( eRP )
         {
             case RectPoint::LT:
             {
-                m_pMtrPosX->SetValue( basegfx::fround64(maRange.getMinX()) );
-                m_pMtrPosY->SetValue( basegfx::fround64(maRange.getMinY()) );
+                m_xMtrPosX->set_value( basegfx::fround64(maRange.getMinX()), FUNIT_NONE );
+                m_xMtrPosY->set_value( basegfx::fround64(maRange.getMinY()), FUNIT_NONE );
                 break;
             }
             case RectPoint::MT:
             {
-                m_pMtrPosX->SetValue( basegfx::fround64(maRange.getCenter().getX()) );
-                m_pMtrPosY->SetValue( basegfx::fround64(maRange.getMinY()) );
+                m_xMtrPosX->set_value( basegfx::fround64(maRange.getCenter().getX()), FUNIT_NONE );
+                m_xMtrPosY->set_value( basegfx::fround64(maRange.getMinY()), FUNIT_NONE );
                 break;
             }
             case RectPoint::RT:
             {
-                m_pMtrPosX->SetValue( basegfx::fround64(maRange.getMaxX()) );
-                m_pMtrPosY->SetValue( basegfx::fround64(maRange.getMinY()) );
+                m_xMtrPosX->set_value( basegfx::fround64(maRange.getMaxX()), FUNIT_NONE );
+                m_xMtrPosY->set_value( basegfx::fround64(maRange.getMinY()), FUNIT_NONE );
                 break;
             }
             case RectPoint::LM:
             {
-                m_pMtrPosX->SetValue( basegfx::fround64(maRange.getMinX()) );
-                m_pMtrPosY->SetValue( basegfx::fround64(maRange.getCenter().getY()) );
+                m_xMtrPosX->set_value( basegfx::fround64(maRange.getMinX()), FUNIT_NONE );
+                m_xMtrPosY->set_value( basegfx::fround64(maRange.getCenter().getY()), FUNIT_NONE );
                 break;
             }
             case RectPoint::MM:
             {
-                m_pMtrPosX->SetValue( basegfx::fround64(maRange.getCenter().getX()) );
-                m_pMtrPosY->SetValue( basegfx::fround64(maRange.getCenter().getY()) );
+                m_xMtrPosX->set_value( basegfx::fround64(maRange.getCenter().getX()), FUNIT_NONE );
+                m_xMtrPosY->set_value( basegfx::fround64(maRange.getCenter().getY()), FUNIT_NONE );
                 break;
             }
             case RectPoint::RM:
             {
-                m_pMtrPosX->SetValue( basegfx::fround64(maRange.getMaxX()) );
-                m_pMtrPosY->SetValue( basegfx::fround64(maRange.getCenter().getY()) );
+                m_xMtrPosX->set_value( basegfx::fround64(maRange.getMaxX()), FUNIT_NONE );
+                m_xMtrPosY->set_value( basegfx::fround64(maRange.getCenter().getY()), FUNIT_NONE );
                 break;
             }
             case RectPoint::LB:
             {
-                m_pMtrPosX->SetValue( basegfx::fround64(maRange.getMinX()) );
-                m_pMtrPosY->SetValue( basegfx::fround64(maRange.getMaxY()) );
+                m_xMtrPosX->set_value( basegfx::fround64(maRange.getMinX()), FUNIT_NONE );
+                m_xMtrPosY->set_value( basegfx::fround64(maRange.getMaxY()), FUNIT_NONE );
                 break;
             }
             case RectPoint::MB:
             {
-                m_pMtrPosX->SetValue( basegfx::fround64(maRange.getCenter().getX()) );
-                m_pMtrPosY->SetValue( basegfx::fround64(maRange.getMaxY()) );
+                m_xMtrPosX->set_value( basegfx::fround64(maRange.getCenter().getX()), FUNIT_NONE );
+                m_xMtrPosY->set_value( basegfx::fround64(maRange.getMaxY()), FUNIT_NONE );
                 break;
             }
             case RectPoint::RB:
             {
-                m_pMtrPosX->SetValue( basegfx::fround64(maRange.getMaxX()) );
-                m_pMtrPosY->SetValue( basegfx::fround64(maRange.getMaxY()) );
+                m_xMtrPosX->set_value( basegfx::fround64(maRange.getMaxX()), FUNIT_NONE );
+                m_xMtrPosY->set_value( basegfx::fround64(maRange.getMaxY()), FUNIT_NONE );
                 break;
             }
         }
@@ -1586,11 +1522,6 @@ void SvxPositionSizeTabPage::PointChanged( vcl::Window* pWindow, RectPoint eRP )
     }
 }
 
-void SvxPositionSizeTabPage::PointChanged(weld::DrawingArea* /*pWindow*/, RectPoint /*eRP*/)
-{
-    assert(false);
-}
-
 void SvxPositionSizeTabPage::DisableResize()
 {
     mbSizeDisabled = true;
@@ -1603,70 +1534,70 @@ void SvxPositionSizeTabPage::DisableProtect()
 }
 
 
-IMPL_LINK_NOARG(SvxPositionSizeTabPage, ChangeWidthHdl, Edit&, void)
+IMPL_LINK_NOARG(SvxPositionSizeTabPage, ChangeWidthHdl, weld::MetricSpinButton&, void)
 {
-    if( m_pCbxScale->IsChecked() && m_pCbxScale->IsEnabled() )
+    if( m_xCbxScale->get_active() && m_xCbxScale->get_sensitive() )
     {
-        sal_Int64 nHeight(basegfx::fround64((mfOldHeight * static_cast<double>(m_pMtrWidth->GetValue())) / mfOldWidth));
+        sal_Int64 nHeight(basegfx::fround64((mfOldHeight * static_cast<double>(m_xMtrWidth->get_value(FUNIT_NONE))) / mfOldWidth));
+        int nMin, nMax;
+        m_xMtrHeight->get_range(nMin, nMax, FUNIT_NONE);
 
-        if(nHeight <= m_pMtrHeight->GetMax(FUNIT_NONE))
+        if (nHeight <= nMax)
         {
-            m_pMtrHeight->SetUserValue(nHeight, FUNIT_NONE);
+            m_xMtrHeight->set_value(nHeight, FUNIT_NONE);
         }
         else
         {
-            nHeight = m_pMtrHeight->GetMax(FUNIT_NONE);
-            m_pMtrHeight->SetUserValue(nHeight);
+            nHeight = nMax;
+            m_xMtrHeight->set_value(nHeight, FUNIT_NONE);
 
             const sal_Int64 nWidth(basegfx::fround64((mfOldWidth * static_cast<double>(nHeight)) / mfOldHeight));
-            m_pMtrWidth->SetUserValue(nWidth, FUNIT_NONE);
+            m_xMtrWidth->set_value(nWidth, FUNIT_NONE);
         }
     }
 }
 
-
-IMPL_LINK_NOARG(SvxPositionSizeTabPage, ChangeHeightHdl, Edit&, void)
+IMPL_LINK_NOARG(SvxPositionSizeTabPage, ChangeHeightHdl, weld::MetricSpinButton&, void)
 {
-    if( m_pCbxScale->IsChecked() && m_pCbxScale->IsEnabled() )
+    if( m_xCbxScale->get_active() && m_xCbxScale->get_sensitive() )
     {
-        sal_Int64 nWidth(basegfx::fround64((mfOldWidth * static_cast<double>(m_pMtrHeight->GetValue())) / mfOldHeight));
+        sal_Int64 nWidth(basegfx::fround64((mfOldWidth * static_cast<double>(m_xMtrHeight->get_value(FUNIT_NONE))) / mfOldHeight));
+        int nMin, nMax;
+        m_xMtrWidth->get_range(nMin, nMax, FUNIT_NONE);
 
-        if(nWidth <= m_pMtrWidth->GetMax(FUNIT_NONE))
+        if (nWidth <= nMax)
         {
-            m_pMtrWidth->SetUserValue(nWidth, FUNIT_NONE);
+            m_xMtrWidth->set_value(nWidth, FUNIT_NONE);
         }
         else
         {
-            nWidth = m_pMtrWidth->GetMax(FUNIT_NONE);
-            m_pMtrWidth->SetUserValue(nWidth);
+            nWidth = nMax;
+            m_xMtrWidth->set_value(nWidth, FUNIT_NONE);
 
             const sal_Int64 nHeight(basegfx::fround64((mfOldHeight * static_cast<double>(nWidth)) / mfOldWidth));
-            m_pMtrHeight->SetUserValue(nHeight, FUNIT_NONE);
+            m_xMtrHeight->set_value(nHeight, FUNIT_NONE);
         }
     }
 }
 
-
-IMPL_LINK_NOARG(SvxPositionSizeTabPage, ClickSizeProtectHdl, Button*, void)
+IMPL_LINK_NOARG(SvxPositionSizeTabPage, ClickSizeProtectHdl, weld::ToggleButton&, void)
 {
     UpdateControlStates();
 }
 
-
-IMPL_LINK_NOARG(SvxPositionSizeTabPage, ClickAutoHdl, Button*, void)
+IMPL_LINK_NOARG(SvxPositionSizeTabPage, ClickAutoHdl, weld::ToggleButton&, void)
 {
-    if( m_pCbxScale->IsChecked() )
+    if (m_xCbxScale->get_active())
     {
-        mfOldWidth  = std::max( static_cast<double>(GetCoreValue( *m_pMtrWidth,  mePoolUnit )), 1.0 );
-        mfOldHeight = std::max( static_cast<double>(GetCoreValue( *m_pMtrHeight, mePoolUnit )), 1.0 );
+        mfOldWidth  = std::max( static_cast<double>(GetCoreValue( *m_xMtrWidth,  mePoolUnit )), 1.0 );
+        mfOldHeight = std::max( static_cast<double>(GetCoreValue( *m_xMtrHeight, mePoolUnit )), 1.0 );
     }
 }
 
-
 void SvxPositionSizeTabPage::FillUserData()
 {
     // matching is saved in the Ini-file
-    OUString aStr = m_pCbxScale->IsChecked() ? OUString("1") : OUString("0");
+    OUString aStr = m_xCbxScale->get_active() ? OUString("1") : OUString("0");
     SetUserData( aStr );
 }
 
diff --git a/cui/uiconfig/ui/possizetabpage.ui b/cui/uiconfig/ui/possizetabpage.ui
index 4ea336b6ce69..76fffb89d621 100644
--- a/cui/uiconfig/ui/possizetabpage.ui
+++ b/cui/uiconfig/ui/possizetabpage.ui
@@ -1,7 +1,30 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
 <interface domain="cui">
-  <!-- interface-requires gtk+ 3.0 -->
-  <!-- interface-requires LibreOffice 1.0 -->
+  <requires lib="gtk+" version="3.18"/>
+  <requires lib="LibreOffice" version="1.0"/>
+  <object class="GtkAdjustment" id="adjustmentPOS">
+    <property name="lower">-120</property>
+    <property name="upper">240</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustmentPOS1">
+    <property name="lower">-120</property>
+    <property name="upper">240</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustmentSIZE">
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustmentSIZE1">
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
   <object class="GtkBox" id="PositionAndSize">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
@@ -36,58 +59,54 @@
                       <object class="GtkLabel" id="FT_POS_X">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="xalign">0</property>
                         <property name="label" translatable="yes" context="possizetabpage|FT_POS_X">Position _X:</property>
                         <property name="use_underline">True</property>
-                        <property name="mnemonic_widget">MTR_FLD_POS_X:0.00cm</property>
+                        <property name="mnemonic_widget">MTR_FLD_POS_X</property>
+                        <property name="xalign">0</property>
                       </object>
                       <packing>
                         <property name="left_attach">0</property>
                         <property name="top_attach">0</property>
-                        <property name="width">1</property>
-                        <property name="height">1</property>
                       </packing>
                     </child>
                     <child>
                       <object class="GtkLabel" id="FT_POS_Y">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="xalign">0</property>
                         <property name="label" translatable="yes" context="possizetabpage|FT_POS_Y">Position _Y:</property>
                         <property name="use_underline">True</property>
-                        <property name="mnemonic_widget">MTR_FLD_POS_Y:0.00cm</property>
+                        <property name="mnemonic_widget">MTR_FLD_POS_Y</property>
+                        <property name="xalign">0</property>
                       </object>
                       <packing>
                         <property name="left_attach">0</property>
                         <property name="top_attach">1</property>
-                        <property name="width">1</property>
-                        <property name="height">1</property>
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkSpinButton" id="MTR_FLD_POS_X:0.00cm">
+                      <object class="GtkSpinButton" id="MTR_FLD_POS_X">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
+                        <property name="activates_default">True</property>
+                        <property name="adjustment">adjustmentPOS</property>
                         <property name="digits">2</property>
                       </object>
                       <packing>
                         <property name="left_attach">1</property>
                         <property name="top_attach">0</property>
-                        <property name="width">1</property>
-                        <property name="height">1</property>
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkSpinButton" id="MTR_FLD_POS_Y:0.00cm">
+                      <object class="GtkSpinButton" id="MTR_FLD_POS_Y">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
+                        <property name="activates_default">True</property>
+                        <property name="adjustment">adjustmentPOS1</property>
                         <property name="digits">2</property>
                       </object>
                       <packing>
                         <property name="left_attach">1</property>
                         <property name="top_attach">1</property>
-                        <property name="width">1</property>
-                        <property name="height">1</property>
                       </packing>
                     </child>
                   </object>
@@ -118,10 +137,27 @@
                       </packing>
                     </child>
                     <child>
-                      <object class="svxlo-SvxRectCtl" id="CTL_POSRECT">
+                      <object class="GtkScrolledWindow">
                         <property name="visible">True</property>
-                        <property name="can_focus">False</property>
+                        <property name="can_focus">True</property>
                         <property name="halign">center</property>
+                        <property name="valign">center</property>
+                        <property name="hscrollbar_policy">never</property>
+                        <property name="vscrollbar_policy">never</property>
+                        <property name="shadow_type">in</property>
+                        <child>
+                          <object class="GtkViewport">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <child>
+                              <object class="GtkDrawingArea" id="CTL_POSRECT">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="events">GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_STRUCTURE_MASK</property>
+                              </object>
+                            </child>
+                          </object>
+                        </child>
                       </object>
                       <packing>
                         <property name="expand">False</property>
@@ -144,8 +180,8 @@
           <object class="GtkLabel" id="label1">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
-            <property name="xalign">0</property>
             <property name="label" translatable="yes" context="possizetabpage|label1">Position</property>
+            <property name="xalign">0</property>
             <attributes>
               <attribute name="weight" value="bold"/>
             </attributes>
@@ -186,60 +222,54 @@
                       <object class="GtkLabel" id="FT_WIDTH">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="xalign">0</property>
                         <property name="label" translatable="yes" context="possizetabpage|FT_WIDTH">Wi_dth:</property>
                         <property name="use_underline">True</property>
-                        <property name="mnemonic_widget">MTR_FLD_WIDTH:0.00cm</property>
+                        <property name="mnemonic_widget">MTR_FLD_WIDTH</property>
+                        <property name="xalign">0</property>
                       </object>
                       <packing>
                         <property name="left_attach">0</property>
                         <property name="top_attach">0</property>
-                        <property name="width">1</property>
-                        <property name="height">1</property>
                       </packing>
                     </child>
                     <child>
                       <object class="GtkLabel" id="FT_HEIGHT">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="xalign">0</property>
                         <property name="label" translatable="yes" context="possizetabpage|FT_HEIGHT">H_eight:</property>
                         <property name="use_underline">True</property>
-                        <property name="mnemonic_widget">MTR_FLD_HEIGHT:0.00cm</property>
+                        <property name="mnemonic_widget">MTR_FLD_HEIGHT</property>
+                        <property name="xalign">0</property>
                       </object>
                       <packing>
                         <property name="left_attach">0</property>
                         <property name="top_attach">1</property>
-                        <property name="width">1</property>
-                        <property name="height">1</property>
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkSpinButton" id="MTR_FLD_WIDTH:0.00cm">
+                      <object class="GtkSpinButton" id="MTR_FLD_WIDTH">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
+                        <property name="activates_default">True</property>
                         <property name="adjustment">adjustmentSIZE</property>
                         <property name="digits">2</property>
                       </object>
                       <packing>
                         <property name="left_attach">1</property>
                         <property name="top_attach">0</property>
-                        <property name="width">1</property>
-                        <property name="height">1</property>
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkSpinButton" id="MTR_FLD_HEIGHT:0.00cm">
+                      <object class="GtkSpinButton" id="MTR_FLD_HEIGHT">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="adjustment">adjustmentSIZE</property>
+                        <property name="activates_default">True</property>
+                        <property name="adjustment">adjustmentSIZE1</property>
                         <property name="digits">2</property>
                       </object>
                       <packing>
                         <property name="left_attach">1</property>
                         <property name="top_attach">1</property>
-                        <property name="width">1</property>
-                        <property name="height">1</property>
                       </packing>
                     </child>
                     <child>
@@ -256,7 +286,6 @@
                         <property name="left_attach">0</property>
                         <property name="top_attach">2</property>
                         <property name="width">2</property>
-                        <property name="height">1</property>
                       </packing>
                     </child>
                   </object>
@@ -287,10 +316,27 @@
                       </packing>
                     </child>
                     <child>
-                      <object class="svxlo-SvxRectCtl" id="CTL_SIZERECT">
+                       <object class="GtkScrolledWindow">
                         <property name="visible">True</property>
-                        <property name="can_focus">False</property>
+                        <property name="can_focus">True</property>
                         <property name="halign">center</property>
+                        <property name="valign">center</property>
+                        <property name="hscrollbar_policy">never</property>
+                        <property name="vscrollbar_policy">never</property>
+                        <property name="shadow_type">in</property>
+                        <child>
+                          <object class="GtkViewport">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <child>
+                              <object class="GtkDrawingArea" id="CTL_SIZERECT">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="events">GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_STRUCTURE_MASK</property>
+                              </object>
+                            </child>
+                          </object>
+                        </child>
                       </object>
                       <packing>
                         <property name="expand">False</property>
@@ -313,8 +359,8 @@
           <object class="GtkLabel" id="label2">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
-            <property name="xalign">0</property>
             <property name="label" translatable="yes" context="possizetabpage|label2">Size</property>
+            <property name="xalign">0</property>
             <attributes>
               <attribute name="weight" value="bold"/>
             </attributes>
@@ -393,8 +439,8 @@
               <object class="GtkLabel" id="label3">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="xalign">0</property>
                 <property name="label" translatable="yes" context="possizetabpage|label3">Protect</property>
+                <property name="xalign">0</property>
                 <attributes>
                   <attribute name="weight" value="bold"/>
                 </attributes>
@@ -467,8 +513,8 @@
               <object class="GtkLabel" id="label4">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="xalign">0</property>
                 <property name="label" translatable="yes" context="possizetabpage|label4">Adapt</property>
+                <property name="xalign">0</property>
                 <attributes>
                   <attribute name="weight" value="bold"/>
                 </attributes>
@@ -489,17 +535,6 @@
       </packing>
     </child>
   </object>
-  <object class="GtkAdjustment" id="adjustmentPOS">
-    <property name="lower">-120</property>
-    <property name="upper">240</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
-  <object class="GtkAdjustment" id="adjustmentSIZE">
-    <property name="upper">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
   <object class="GtkSizeGroup" id="sizegroup1">
     <widgets>
       <widget name="FT_POS_X"/>
@@ -510,10 +545,10 @@
   </object>
   <object class="GtkSizeGroup" id="sizegroup2">
     <widgets>
-      <widget name="MTR_FLD_POS_X:0.00cm"/>
-      <widget name="MTR_FLD_POS_Y:0.00cm"/>
-      <widget name="MTR_FLD_WIDTH:0.00cm"/>
-      <widget name="MTR_FLD_HEIGHT:0.00cm"/>
+      <widget name="MTR_FLD_POS_X"/>
+      <widget name="MTR_FLD_POS_Y"/>
+      <widget name="MTR_FLD_WIDTH"/>
+      <widget name="MTR_FLD_HEIGHT"/>
     </widgets>
   </object>
 </interface>
diff --git a/include/vcl/customweld.hxx b/include/vcl/customweld.hxx
index 2395bc5e45f6..203c6e024eb1 100644
--- a/include/vcl/customweld.hxx
+++ b/include/vcl/customweld.hxx
@@ -104,6 +104,7 @@ public:
     void show() { m_xDrawingArea->show(); }
     void set_margin_top(int nMargin) { m_xDrawingArea->set_margin_top(nMargin); }
     void set_margin_bottom(int nMargin) { m_xDrawingArea->set_margin_bottom(nMargin); }
+    void set_sensitive(bool bSensitive) { m_xDrawingArea->set_sensitive(bSensitive); }
 };
 }
 #endif


More information about the Libreoffice-commits mailing list