[Libreoffice-commits] core.git: cui/source cui/uiconfig extras/source include/svx solenv/sanitizers svx/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Tue Sep 18 08:05:37 UTC 2018


 cui/source/inc/measure.hxx                     |   47 +--
 cui/source/tabpages/measure.cxx                |  389 +++++++++++--------------
 cui/uiconfig/ui/dimensionlinestabpage.ui       |  122 +++++--
 extras/source/glade/libreoffice-catalog.xml.in |    8 
 include/svx/measctrl.hxx                       |   13 
 solenv/sanitizers/ui/cui.suppr                 |    1 
 svx/source/dialog/dlgctrl.cxx                  |    2 
 svx/source/dialog/measctrl.cxx                 |   96 ++----
 8 files changed, 349 insertions(+), 329 deletions(-)

New commits:
commit 5889fd4416cd9569c44e2d250ce5d027974bd243
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Mon Sep 17 14:36:37 2018 +0100
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Tue Sep 18 10:05:15 2018 +0200

    weld SvxMeasurePage
    
    Change-Id: I08f177d74aff278c62f76e32a1401ff24f249c57
    Reviewed-on: https://gerrit.libreoffice.org/60589
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/cui/source/inc/measure.hxx b/cui/source/inc/measure.hxx
index 2a9fb17d2b65..a9af5c54ba7d 100644
--- a/cui/source/inc/measure.hxx
+++ b/cui/source/inc/measure.hxx
@@ -33,24 +33,6 @@ class SvxMeasurePage : public SvxTabPage
 private:
     static const sal_uInt16 pRanges[];
 
-    VclPtr<MetricField>         m_pMtrFldLineDist;
-    VclPtr<MetricField>         m_pMtrFldHelplineOverhang;
-    VclPtr<MetricField>         m_pMtrFldHelplineDist;
-    VclPtr<MetricField>         m_pMtrFldHelpline1Len;
-    VclPtr<MetricField>         m_pMtrFldHelpline2Len;
-    VclPtr<TriStateBox>         m_pTsbBelowRefEdge;
-    VclPtr<MetricField>         m_pMtrFldDecimalPlaces;
-
-    VclPtr<SvxRectCtl>          m_pCtlPosition;
-    VclPtr<TriStateBox>         m_pTsbAutoPosV;
-    VclPtr<TriStateBox>         m_pTsbAutoPosH;
-    VclPtr<TriStateBox>         m_pTsbShowUnit;
-    VclPtr<ListBox>             m_pLbUnit;
-    VclPtr<TriStateBox>         m_pTsbParallel;
-    VclPtr<FixedText>           m_pFtAutomatic;
-
-    VclPtr<SvxXMeasurePreview>  m_pCtlPreview;
-
     const SfxItemSet&   rOutAttrs;
     SfxItemSet          aAttrSet;
     const SdrView*      pView;
@@ -58,17 +40,36 @@ private:
 
     bool            bPositionModified;
 
+    RectCtl m_aCtlPosition;
+    SvxXMeasurePreview  m_aCtlPreview;
+    std::unique_ptr<weld::MetricSpinButton> m_xMtrFldLineDist;
+    std::unique_ptr<weld::MetricSpinButton> m_xMtrFldHelplineOverhang;
+    std::unique_ptr<weld::MetricSpinButton> m_xMtrFldHelplineDist;
+    std::unique_ptr<weld::MetricSpinButton> m_xMtrFldHelpline1Len;
+    std::unique_ptr<weld::MetricSpinButton> m_xMtrFldHelpline2Len;
+    std::unique_ptr<weld::CheckButton> m_xTsbBelowRefEdge;
+    std::unique_ptr<weld::SpinButton> m_xMtrFldDecimalPlaces;
+    std::unique_ptr<weld::CheckButton> m_xTsbAutoPosV;
+    std::unique_ptr<weld::CheckButton> m_xTsbAutoPosH;
+    std::unique_ptr<weld::CheckButton> m_xTsbShowUnit;
+    std::unique_ptr<weld::ComboBox> m_xLbUnit;
+    std::unique_ptr<weld::CheckButton> m_xTsbParallel;
+    std::unique_ptr<weld::Label> m_xFtAutomatic;
+    std::unique_ptr<weld::CustomWeld> m_xCtlPosition;
+    std::unique_ptr<weld::CustomWeld> m_xCtlPreview;
+
     void                FillUnitLB();
 
-    DECL_LINK( ClickAutoPosHdl_Impl, Button*, void );
-    DECL_LINK( ChangeAttrEditHdl_Impl, Edit&, void );
-    DECL_LINK( ChangeAttrListBoxHdl_Impl, ListBox&, void );
-    DECL_LINK( ChangeAttrClickHdl_Impl, Button*, void );
+    DECL_LINK(ClickAutoPosHdl_Impl, weld::ToggleButton&, void);
+    DECL_LINK(ChangeAttrEditHdl_Impl, weld::MetricSpinButton&, void);
+    DECL_LINK(ChangeAttrSpinHdl_Impl, weld::SpinButton&, void);
+    DECL_LINK(ChangeAttrListBoxHdl_Impl, weld::ComboBox&, void);
+    DECL_LINK(ChangeAttrClickHdl_Impl, weld::ToggleButton&, void);
     void ChangeAttrHdl_Impl(void const *);
 
 public:
 
-    SvxMeasurePage( vcl::Window* pWindow, const SfxItemSet& rInAttrs );
+    SvxMeasurePage(TabPageParent pWindow, const SfxItemSet& rInAttrs);
     virtual ~SvxMeasurePage() override;
     virtual void dispose() override;
 
diff --git a/cui/source/tabpages/measure.cxx b/cui/source/tabpages/measure.cxx
index 704016dd73ba..b46fcdb7e8fb 100644
--- a/cui/source/tabpages/measure.cxx
+++ b/cui/source/tabpages/measure.cxx
@@ -77,73 +77,63 @@ SvxMeasureDialog::SvxMeasureDialog( vcl::Window* pParent, const SfxItemSet& rInA
 |*
 \************************************************************************/
 
-SvxMeasurePage::SvxMeasurePage( vcl::Window* pWindow, const SfxItemSet& rInAttrs ) :
-                SvxTabPage      ( pWindow
-                                 ,"DimensionLinesTabPage"
-                                 ,"cui/ui/dimensionlinestabpage.ui"
-                                 ,rInAttrs ),
-        rOutAttrs               ( rInAttrs ),
-        aAttrSet                ( *rInAttrs.GetPool() ),
-        pView( nullptr ),
-        eUnit( MapUnit::Map100thMM ),
-        bPositionModified       ( false )
+SvxMeasurePage::SvxMeasurePage(TabPageParent pWindow, const SfxItemSet& rInAttrs)
+    : SvxTabPage(pWindow, "cui/ui/dimensionlinestabpage.ui", "DimensionLinesTabPage", rInAttrs)
+    , rOutAttrs(rInAttrs)
+    , aAttrSet(*rInAttrs.GetPool())
+    , pView(nullptr)
+    , eUnit(MapUnit::Map100thMM)
+    , bPositionModified(false)
+    , m_aCtlPosition(this)
+    , m_xMtrFldLineDist(m_xBuilder->weld_metric_spin_button("MTR_LINE_DIST", FUNIT_MM))
+    , m_xMtrFldHelplineOverhang(m_xBuilder->weld_metric_spin_button("MTR_FLD_HELPLINE_OVERHANG", FUNIT_MM))
+    , m_xMtrFldHelplineDist(m_xBuilder->weld_metric_spin_button("MTR_FLD_HELPLINE_DIST", FUNIT_MM))
+    , m_xMtrFldHelpline1Len(m_xBuilder->weld_metric_spin_button("MTR_FLD_HELPLINE1_LEN", FUNIT_MM))
+    , m_xMtrFldHelpline2Len(m_xBuilder->weld_metric_spin_button("MTR_FLD_HELPLINE2_LEN", FUNIT_MM))
+    , m_xTsbBelowRefEdge(m_xBuilder->weld_check_button("TSB_BELOW_REF_EDGE"))
+    , m_xMtrFldDecimalPlaces(m_xBuilder->weld_spin_button("MTR_FLD_DECIMALPLACES"))
+    , m_xTsbAutoPosV(m_xBuilder->weld_check_button("TSB_AUTOPOSV"))
+    , m_xTsbAutoPosH(m_xBuilder->weld_check_button("TSB_AUTOPOSH"))
+    , m_xTsbShowUnit(m_xBuilder->weld_check_button("TSB_SHOW_UNIT"))
+    , m_xLbUnit(m_xBuilder->weld_combo_box("LB_UNIT"))
+    , m_xTsbParallel(m_xBuilder->weld_check_button("TSB_PARALLEL"))
+    , m_xFtAutomatic(m_xBuilder->weld_label("STR_MEASURE_AUTOMATIC"))
+    , m_xCtlPosition(new weld::CustomWeld(*m_xBuilder, "CTL_POSITION", m_aCtlPosition))
+    , m_xCtlPreview(new weld::CustomWeld(*m_xBuilder, "CTL_PREVIEW", m_aCtlPreview))
 {
-    get(m_pMtrFldLineDist, "MTR_LINE_DIST");
-    get(m_pMtrFldHelplineOverhang, "MTR_FLD_HELPLINE_OVERHANG");
-    get(m_pMtrFldHelplineDist, "MTR_FLD_HELPLINE_DIST");
-    get(m_pMtrFldHelpline1Len, "MTR_FLD_HELPLINE1_LEN");
-    get(m_pMtrFldHelpline2Len, "MTR_FLD_HELPLINE2_LEN");
-    get(m_pTsbBelowRefEdge, "TSB_BELOW_REF_EDGE");
-    get(m_pMtrFldDecimalPlaces, "MTR_FLD_DECIMALPLACES");
-
-    get(m_pCtlPosition, "CTL_POSITION");
-    get(m_pTsbAutoPosV, "TSB_AUTOPOSV");
-    get(m_pTsbAutoPosH, "TSB_AUTOPOSH");
-    get(m_pTsbShowUnit, "TSB_SHOW_UNIT");
-    get(m_pLbUnit, "LB_UNIT");
-    get(m_pTsbParallel, "TSB_PARALLEL");
-
-    get(m_pCtlPreview, "CTL_PREVIEW");
-    m_pCtlPreview->SetAttributes(rInAttrs);
-
-    get(m_pFtAutomatic,"STR_MEASURE_AUTOMATIC");
+    m_aCtlPreview.SetAttributes(rInAttrs);
 
     FillUnitLB();
 
     const FieldUnit eFUnit = GetModuleFieldUnit( rInAttrs );
-    SetFieldUnit( *m_pMtrFldLineDist, eFUnit );
-    SetFieldUnit( *m_pMtrFldHelplineOverhang, eFUnit );
-    SetFieldUnit( *m_pMtrFldHelplineDist, eFUnit );
-    SetFieldUnit( *m_pMtrFldHelpline1Len, eFUnit );
-    SetFieldUnit( *m_pMtrFldHelpline2Len, eFUnit );
+    SetFieldUnit( *m_xMtrFldLineDist, eFUnit );
+    SetFieldUnit( *m_xMtrFldHelplineOverhang, eFUnit );
+    SetFieldUnit( *m_xMtrFldHelplineDist, eFUnit );
+    SetFieldUnit( *m_xMtrFldHelpline1Len, eFUnit );
+    SetFieldUnit( *m_xMtrFldHelpline2Len, eFUnit );
     if( eFUnit == FUNIT_MM )
     {
-        m_pMtrFldLineDist->SetSpinSize( 50 );
-        m_pMtrFldHelplineOverhang->SetSpinSize( 50 );
-        m_pMtrFldHelplineDist->SetSpinSize( 50 );
-        m_pMtrFldHelpline1Len->SetSpinSize( 50 );
-        m_pMtrFldHelpline2Len->SetSpinSize( 50 );
-    }
-
-    m_pTsbAutoPosV->SetClickHdl( LINK( this, SvxMeasurePage, ClickAutoPosHdl_Impl ) );
-    m_pTsbAutoPosH->SetClickHdl( LINK( this, SvxMeasurePage, ClickAutoPosHdl_Impl ) );
-
-    // set background and border of iconchoicectrl
-    const StyleSettings& rStyles = Application::GetSettings().GetStyleSettings();
-    m_pCtlPreview->SetBackground ( rStyles.GetWindowColor() );
-    m_pCtlPreview->SetBorderStyle(WindowBorderStyle::MONO);
-
-    Link<Edit&,void> aLink( LINK( this, SvxMeasurePage, ChangeAttrEditHdl_Impl ) );
-    m_pMtrFldLineDist->SetModifyHdl( aLink );
-    m_pMtrFldHelplineOverhang->SetModifyHdl( aLink );
-    m_pMtrFldHelplineDist->SetModifyHdl( aLink );
-    m_pMtrFldHelpline1Len->SetModifyHdl( aLink );
-    m_pMtrFldHelpline2Len->SetModifyHdl( aLink );
-    m_pMtrFldDecimalPlaces->SetModifyHdl( aLink );
-    m_pTsbBelowRefEdge->SetClickHdl( LINK( this, SvxMeasurePage, ChangeAttrClickHdl_Impl ) );
-    m_pTsbParallel->SetClickHdl( LINK( this, SvxMeasurePage, ChangeAttrClickHdl_Impl ) );
-    m_pTsbShowUnit->SetClickHdl( LINK( this, SvxMeasurePage, ChangeAttrClickHdl_Impl ) );
-    m_pLbUnit->SetSelectHdl( LINK( this, SvxMeasurePage, ChangeAttrListBoxHdl_Impl ) );
+        m_xMtrFldLineDist->set_increments(50, 500, FUNIT_NONE);
+        m_xMtrFldHelplineOverhang->set_increments(50, 500, FUNIT_NONE);
+        m_xMtrFldHelplineDist->set_increments(50, 500, FUNIT_NONE);
+        m_xMtrFldHelpline1Len->set_increments(50, 500, FUNIT_NONE);
+        m_xMtrFldHelpline2Len->set_increments(50, 500, FUNIT_NONE);
+    }
+
+    m_xTsbAutoPosV->connect_toggled(LINK( this, SvxMeasurePage, ClickAutoPosHdl_Impl));
+    m_xTsbAutoPosH->connect_toggled(LINK(this, SvxMeasurePage, ClickAutoPosHdl_Impl));
+
+    Link<weld::MetricSpinButton&,void> aLink(LINK(this, SvxMeasurePage, ChangeAttrEditHdl_Impl));
+    m_xMtrFldLineDist->connect_value_changed(aLink);
+    m_xMtrFldHelplineOverhang->connect_value_changed(aLink);
+    m_xMtrFldHelplineDist->connect_value_changed(aLink);
+    m_xMtrFldHelpline1Len->connect_value_changed(aLink);
+    m_xMtrFldHelpline2Len->connect_value_changed(aLink);
+    m_xMtrFldDecimalPlaces->connect_value_changed(LINK(this, SvxMeasurePage, ChangeAttrSpinHdl_Impl));
+    m_xTsbBelowRefEdge->connect_toggled(LINK(this, SvxMeasurePage, ChangeAttrClickHdl_Impl));
+    m_xTsbParallel->connect_toggled( LINK( this, SvxMeasurePage, ChangeAttrClickHdl_Impl));
+    m_xTsbShowUnit->connect_toggled(LINK(this, SvxMeasurePage, ChangeAttrClickHdl_Impl));
+    m_xLbUnit->connect_changed(LINK(this, SvxMeasurePage, ChangeAttrListBoxHdl_Impl));
 }
 
 SvxMeasurePage::~SvxMeasurePage()
@@ -153,21 +143,8 @@ SvxMeasurePage::~SvxMeasurePage()
 
 void SvxMeasurePage::dispose()
 {
-    m_pMtrFldLineDist.clear();
-    m_pMtrFldHelplineOverhang.clear();
-    m_pMtrFldHelplineDist.clear();
-    m_pMtrFldHelpline1Len.clear();
-    m_pMtrFldHelpline2Len.clear();
-    m_pTsbBelowRefEdge.clear();
-    m_pMtrFldDecimalPlaces.clear();
-    m_pCtlPosition.clear();
-    m_pTsbAutoPosV.clear();
-    m_pTsbAutoPosH.clear();
-    m_pTsbShowUnit.clear();
-    m_pLbUnit.clear();
-    m_pTsbParallel.clear();
-    m_pFtAutomatic.clear();
-    m_pCtlPreview.clear();
+    m_xCtlPreview.reset();
+    m_xCtlPosition.reset();
     SvxTabPage::dispose();
 }
 
@@ -191,13 +168,13 @@ void SvxMeasurePage::Reset( const SfxItemSet* rAttrs )
     if( pItem )
     {
         long nValue = static_cast<const SdrMetricItem*>( pItem )->GetValue();
-        SetMetricValue( *m_pMtrFldLineDist, nValue, eUnit );
+        SetMetricValue( *m_xMtrFldLineDist, nValue, eUnit );
     }
     else
     {
-        m_pMtrFldLineDist->SetText( OUString() );
+        m_xMtrFldLineDist->set_text(OUString());
     }
-    m_pMtrFldLineDist->SaveValue();
+    m_xMtrFldLineDist->save_value();
 
     // SdrMeasureHelplineOverhangItem
     pItem = GetItem( *rAttrs, SDRATTR_MEASUREHELPLINEOVERHANG );
@@ -206,13 +183,13 @@ void SvxMeasurePage::Reset( const SfxItemSet* rAttrs )
     if( pItem )
     {
         long nValue = static_cast<const SdrMetricItem*>( pItem )->GetValue();
-        SetMetricValue( *m_pMtrFldHelplineOverhang, nValue, eUnit );
+        SetMetricValue( *m_xMtrFldHelplineOverhang, nValue, eUnit );
     }
     else
     {
-        m_pMtrFldHelplineOverhang->SetText( OUString() );
+        m_xMtrFldHelplineOverhang->set_text(OUString());
     }
-    m_pMtrFldHelplineOverhang->SaveValue();
+    m_xMtrFldHelplineOverhang->save_value();
 
     // SdrMeasureHelplineDistItem
     pItem = GetItem( *rAttrs, SDRATTR_MEASUREHELPLINEDIST );
@@ -221,13 +198,13 @@ void SvxMeasurePage::Reset( const SfxItemSet* rAttrs )
     if( pItem )
     {
         long nValue = static_cast<const SdrMetricItem*>( pItem )->GetValue();
-        SetMetricValue( *m_pMtrFldHelplineDist, nValue, eUnit );
+        SetMetricValue( *m_xMtrFldHelplineDist, nValue, eUnit );
     }
     else
     {
-        m_pMtrFldHelplineDist->SetText( OUString() );
+        m_xMtrFldHelplineDist->set_text(OUString());
     }
-    m_pMtrFldHelplineDist->SaveValue();
+    m_xMtrFldHelplineDist->save_value();
 
     // SdrMeasureHelpline1LenItem
     pItem = GetItem( *rAttrs, SDRATTR_MEASUREHELPLINE1LEN );
@@ -236,13 +213,13 @@ void SvxMeasurePage::Reset( const SfxItemSet* rAttrs )
     if( pItem )
     {
         long nValue = static_cast<const SdrMetricItem*>( pItem )->GetValue();
-        SetMetricValue( *m_pMtrFldHelpline1Len, nValue, eUnit );
+        SetMetricValue( *m_xMtrFldHelpline1Len, nValue, eUnit );
     }
     else
     {
-        m_pMtrFldHelpline1Len->SetText( OUString() );
+        m_xMtrFldHelpline1Len->set_text(OUString());
     }
-    m_pMtrFldHelpline1Len->SaveValue();
+    m_xMtrFldHelpline1Len->save_value();
 
     // SdrMeasureHelpline2LenItem
     pItem = GetItem( *rAttrs, SDRATTR_MEASUREHELPLINE2LEN );
@@ -251,26 +228,25 @@ void SvxMeasurePage::Reset( const SfxItemSet* rAttrs )
     if( pItem )
     {
         long nValue = static_cast<const SdrMetricItem*>( pItem )->GetValue();
-        SetMetricValue( *m_pMtrFldHelpline2Len, nValue, eUnit );
+        SetMetricValue( *m_xMtrFldHelpline2Len, nValue, eUnit );
     }
     else
     {
-        m_pMtrFldHelpline2Len->SetText( OUString() );
+        m_xMtrFldHelpline2Len->set_text(OUString());
     }
-    m_pMtrFldHelpline2Len->SaveValue();
+    m_xMtrFldHelpline2Len->save_value();
 
     // SdrMeasureBelowRefEdgeItem
     if( rAttrs->GetItemState( SDRATTR_MEASUREBELOWREFEDGE ) != SfxItemState::DONTCARE )
     {
-        m_pTsbBelowRefEdge->SetState( rAttrs->Get( SDRATTR_MEASUREBELOWREFEDGE ).
+        m_xTsbBelowRefEdge->set_state( rAttrs->Get( SDRATTR_MEASUREBELOWREFEDGE ).
                         GetValue() ? TRISTATE_TRUE : TRISTATE_FALSE );
-        m_pTsbBelowRefEdge->EnableTriState( false );
     }
     else
     {
-        m_pTsbBelowRefEdge->SetState( TRISTATE_INDET );
+        m_xTsbBelowRefEdge->set_state( TRISTATE_INDET );
     }
-    m_pTsbBelowRefEdge->SaveValue();
+    m_xTsbBelowRefEdge->save_state();
 
     // SdrMeasureDecimalPlacesItem
     pItem = GetItem( *rAttrs, SDRATTR_MEASUREDECIMALPLACES );
@@ -279,60 +255,58 @@ void SvxMeasurePage::Reset( const SfxItemSet* rAttrs )
     if( pItem )
     {
         sal_Int16 nValue = static_cast<const SdrMeasureDecimalPlacesItem*>( pItem )->GetValue();
-        m_pMtrFldDecimalPlaces->SetValue( nValue );
+        m_xMtrFldDecimalPlaces->set_value(nValue);
     }
     else
     {
-        m_pMtrFldDecimalPlaces->SetText( OUString() );
+        m_xMtrFldDecimalPlaces->set_text(OUString());
     }
-    m_pMtrFldDecimalPlaces->SaveValue();
+    m_xMtrFldDecimalPlaces->save_value();
 
     // SdrMeasureTextRota90Item
     // Attention: negate !
     if( rAttrs->GetItemState( SDRATTR_MEASURETEXTROTA90 ) != SfxItemState::DONTCARE )
     {
-        m_pTsbParallel->SetState( rAttrs->Get( SDRATTR_MEASURETEXTROTA90 ).
+        m_xTsbParallel->set_state( rAttrs->Get( SDRATTR_MEASURETEXTROTA90 ).
                         GetValue() ? TRISTATE_FALSE : TRISTATE_TRUE );
-        m_pTsbParallel->EnableTriState( false );
     }
     else
     {
-        m_pTsbParallel->SetState( TRISTATE_INDET );
+        m_xTsbParallel->set_state( TRISTATE_INDET );
     }
-    m_pTsbParallel->SaveValue();
+    m_xTsbParallel->save_state();
 
     // SdrMeasureShowUnitItem
     if( rAttrs->GetItemState( SDRATTR_MEASURESHOWUNIT ) != SfxItemState::DONTCARE )
     {
-        m_pTsbShowUnit->SetState( rAttrs->Get( SDRATTR_MEASURESHOWUNIT ).
+        m_xTsbShowUnit->set_state( rAttrs->Get( SDRATTR_MEASURESHOWUNIT ).
                         GetValue() ? TRISTATE_TRUE : TRISTATE_FALSE );
-        m_pTsbShowUnit->EnableTriState( false );
     }
     else
     {
-        m_pTsbShowUnit->SetState( TRISTATE_INDET );
+        m_xTsbShowUnit->set_state( TRISTATE_INDET );
     }
-    m_pTsbShowUnit->SaveValue();
+    m_xTsbShowUnit->save_state();
 
     // SdrMeasureUnitItem
     if( rAttrs->GetItemState( SDRATTR_MEASUREUNIT ) != SfxItemState::DONTCARE )
     {
         long nFieldUnit = static_cast<long>(rAttrs->Get( SDRATTR_MEASUREUNIT ).GetValue());
 
-        for( sal_Int32 i = 0; i < m_pLbUnit->GetEntryCount(); ++i )
+        for (sal_Int32 i = 0; i < m_xLbUnit->get_count(); ++i)
         {
-            if ( reinterpret_cast<sal_IntPtr>(m_pLbUnit->GetEntryData( i )) == nFieldUnit )
+            if (m_xLbUnit->get_id(i).toInt32() == nFieldUnit)
             {
-                m_pLbUnit->SelectEntryPos( i );
+                m_xLbUnit->set_active(i);
                 break;
             }
         }
     }
     else
     {
-        m_pLbUnit->SetNoSelection();
+        m_xLbUnit->set_active(-1);
     }
-    m_pLbUnit->SaveValue();
+    m_xLbUnit->save_value();
 
     // Position
     if ( rAttrs->GetItemState( SDRATTR_MEASURETEXTVPOS ) != SfxItemState::DONTCARE )
@@ -342,9 +316,6 @@ void SvxMeasurePage::Reset( const SfxItemSet* rAttrs )
         {
             if ( rAttrs->GetItemState( SDRATTR_MEASURETEXTHPOS ) != SfxItemState::DONTCARE )
             {
-                m_pTsbAutoPosV->EnableTriState( false );
-                m_pTsbAutoPosH->EnableTriState( false );
-
                 css::drawing::MeasureTextHorzPos eHPos =
                             rAttrs->Get( SDRATTR_MEASURETEXTHPOS ).GetValue();
                 RectPoint eRP = RectPoint::MM;
@@ -397,33 +368,33 @@ void SvxMeasurePage::Reset( const SfxItemSet* rAttrs )
 
                 if (eHPos == css::drawing::MeasureTextHorzPos_AUTO)
                 {
-                    m_pTsbAutoPosH->SetState( TRISTATE_TRUE );
+                    m_xTsbAutoPosH->set_state( TRISTATE_TRUE );
                     nState = CTL_STATE::NOHORZ;
                 }
 
                 if (eVPos == css::drawing::MeasureTextVertPos_AUTO)
                 {
-                    m_pTsbAutoPosV->SetState( TRISTATE_TRUE );
+                    m_xTsbAutoPosV->set_state( TRISTATE_TRUE );
                     nState |= CTL_STATE::NOVERT;
                 }
 
-                m_pCtlPosition->SetState( nState );
-                m_pCtlPosition->SetActualRP( eRP );
+                m_aCtlPosition.SetState(nState);
+                m_aCtlPosition.SetActualRP(eRP);
             }
         }
     }
     else
     {
-        m_pCtlPosition->Reset();
-        m_pTsbAutoPosV->SetState( TRISTATE_INDET );
-        m_pTsbAutoPosH->SetState( TRISTATE_INDET );
+        m_aCtlPosition.Reset();
+        m_xTsbAutoPosV->set_state( TRISTATE_INDET );
+        m_xTsbAutoPosH->set_state( TRISTATE_INDET );
     }
 
     // put the attributes to the preview-control,
     // otherwise the control don't know about
     // the settings of the dialog (#67930)
-    ChangeAttrHdl_Impl( m_pTsbShowUnit );
-    m_pCtlPreview->SetAttributes( *rAttrs );
+    ChangeAttrHdl_Impl(m_xTsbShowUnit.get());
+    m_aCtlPreview.SetAttributes(*rAttrs);
 
     bPositionModified = false;
 }
@@ -440,77 +411,77 @@ bool SvxMeasurePage::FillItemSet( SfxItemSet* rAttrs)
     sal_Int32    nValue;
     TriState eState;
 
-    if( m_pMtrFldLineDist->IsValueChangedFromSaved() )
+    if( m_xMtrFldLineDist->get_value_changed_from_saved() )
     {
-        nValue = GetCoreValue( *m_pMtrFldLineDist, eUnit );
+        nValue = GetCoreValue( *m_xMtrFldLineDist, eUnit );
         rAttrs->Put( makeSdrMeasureLineDistItem( nValue ) );
         bModified = true;
     }
 
-    if( m_pMtrFldHelplineOverhang->IsValueChangedFromSaved() )
+    if( m_xMtrFldHelplineOverhang->get_value_changed_from_saved() )
     {
-        nValue = GetCoreValue( *m_pMtrFldHelplineOverhang, eUnit );
+        nValue = GetCoreValue( *m_xMtrFldHelplineOverhang, eUnit );
         rAttrs->Put( makeSdrMeasureHelplineOverhangItem( nValue ) );
         bModified = true;
     }
 
-    if( m_pMtrFldHelplineDist->IsValueChangedFromSaved() )
+    if( m_xMtrFldHelplineDist->get_value_changed_from_saved() )
     {
-        nValue = GetCoreValue( *m_pMtrFldHelplineDist, eUnit );
+        nValue = GetCoreValue( *m_xMtrFldHelplineDist, eUnit );
         rAttrs->Put( makeSdrMeasureHelplineDistItem( nValue ) );
         bModified = true;
     }
 
-    if( m_pMtrFldHelpline1Len->IsValueChangedFromSaved() )
+    if( m_xMtrFldHelpline1Len->get_value_changed_from_saved() )
     {
-        nValue = GetCoreValue( *m_pMtrFldHelpline1Len, eUnit );
+        nValue = GetCoreValue( *m_xMtrFldHelpline1Len, eUnit );
         rAttrs->Put( makeSdrMeasureHelpline1LenItem( nValue ) );
         bModified = true;
     }
 
-    if( m_pMtrFldHelpline2Len->IsValueChangedFromSaved() )
+    if( m_xMtrFldHelpline2Len->get_value_changed_from_saved() )
     {
-        nValue = GetCoreValue( *m_pMtrFldHelpline2Len, eUnit );
+        nValue = GetCoreValue( *m_xMtrFldHelpline2Len, eUnit );
         rAttrs->Put( makeSdrMeasureHelpline2LenItem( nValue ) );
         bModified = true;
     }
 
-    eState = m_pTsbBelowRefEdge->GetState();
-    if( m_pTsbBelowRefEdge->IsValueChangedFromSaved() )
+    eState = m_xTsbBelowRefEdge->get_state();
+    if( m_xTsbBelowRefEdge->get_state_changed_from_saved() )
     {
         rAttrs->Put( SdrMeasureBelowRefEdgeItem( TRISTATE_TRUE == eState ) );
         bModified = true;
     }
 
-    if( m_pMtrFldDecimalPlaces->IsValueChangedFromSaved() )
+    if( m_xMtrFldDecimalPlaces->get_value_changed_from_saved() )
     {
-        nValue = static_cast<sal_Int32>(m_pMtrFldDecimalPlaces->GetValue());
+        nValue = m_xMtrFldDecimalPlaces->get_value();
         rAttrs->Put(
             SdrMeasureDecimalPlacesItem(
                 sal::static_int_cast< sal_Int16 >( nValue ) ) );
         bModified = true;
     }
 
-    eState = m_pTsbParallel->GetState();
-    if( m_pTsbParallel->IsValueChangedFromSaved() )
+    eState = m_xTsbParallel->get_state();
+    if( m_xTsbParallel->get_state_changed_from_saved() )
     {
         rAttrs->Put( SdrMeasureTextRota90Item( TRISTATE_FALSE == eState ) );
         bModified = true;
     }
 
-    eState = m_pTsbShowUnit->GetState();
-    if( m_pTsbShowUnit->IsValueChangedFromSaved() )
+    eState = m_xTsbShowUnit->get_state();
+    if( m_xTsbShowUnit->get_state_changed_from_saved() )
     {
         rAttrs->Put( SdrYesNoItem(SDRATTR_MEASURESHOWUNIT, TRISTATE_TRUE == eState ) );
         bModified = true;
     }
 
-    sal_Int32 nPos = m_pLbUnit->GetSelectedEntryPos();
-    if( m_pLbUnit->IsValueChangedFromSaved() )
+    int nPos = m_xLbUnit->get_active();
+    if( m_xLbUnit->get_value_changed_from_saved() )
     {
-        if( nPos != LISTBOX_ENTRY_NOTFOUND )
+        if (nPos != -1)
         {
-            sal_uInt16 nFieldUnit = static_cast<sal_uInt16>(reinterpret_cast<sal_IntPtr>(m_pLbUnit->GetEntryData( nPos )));
+            sal_uInt16 nFieldUnit = m_xLbUnit->get_id(nPos).toUInt32();
             FieldUnit _eUnit = static_cast<FieldUnit>(nFieldUnit);
             rAttrs->Put( SdrMeasureUnitItem( _eUnit ) );
             bModified = true;
@@ -523,7 +494,7 @@ bool SvxMeasurePage::FillItemSet( SfxItemSet* rAttrs)
         css::drawing::MeasureTextVertPos eVPos, eOldVPos;
         css::drawing::MeasureTextHorzPos eHPos, eOldHPos;
 
-        RectPoint eRP = m_pCtlPosition->GetActualRP();
+        RectPoint eRP = m_aCtlPosition.GetActualRP();
         switch( eRP )
         {
             default:
@@ -546,10 +517,10 @@ bool SvxMeasurePage::FillItemSet( SfxItemSet* rAttrs)
             case RectPoint::RB: eVPos = css::drawing::MeasureTextVertPos_WEST;
                         eHPos = css::drawing::MeasureTextHorzPos_RIGHTOUTSIDE; break;
         }
-        if (m_pTsbAutoPosH->GetState() == TRISTATE_TRUE)
+        if (m_xTsbAutoPosH->get_state() == TRISTATE_TRUE)
             eHPos = css::drawing::MeasureTextHorzPos_AUTO;
 
-        if (m_pTsbAutoPosV->GetState() == TRISTATE_TRUE)
+        if (m_xTsbAutoPosV->get_state() == TRISTATE_TRUE)
             eVPos = css::drawing::MeasureTextVertPos_AUTO;
 
         if ( rAttrs->GetItemState( SDRATTR_MEASURETEXTVPOS ) != SfxItemState::DONTCARE )
@@ -604,162 +575,169 @@ void SvxMeasurePage::Construct()
     // floatingpoint-values' is not clear, but has to be done another way - if needed.
     // Checked on original aw080, is just commented out there, too.
 
-    // m_pCtlPreview->pMeasureObj->SetModel( pView->GetModel() );
-    m_pCtlPreview->Invalidate();
+    m_aCtlPreview.Invalidate();
 }
 
-VclPtr<SfxTabPage> SvxMeasurePage::Create( TabPageParent pWindow,
-                                           const SfxItemSet* rAttrs )
+VclPtr<SfxTabPage> SvxMeasurePage::Create(TabPageParent pParent,
+                                          const SfxItemSet* rAttrs)
 {
-    return VclPtr<SvxMeasurePage>::Create( pWindow.pParent, *rAttrs );
+    return VclPtr<SvxMeasurePage>::Create(pParent, *rAttrs);
 }
 
 void SvxMeasurePage::PointChanged( vcl::Window* pWindow, RectPoint /*eRP*/ )
 {
-    ChangeAttrHdl_Impl( pWindow );
+    ChangeAttrHdl_Impl(pWindow);
 }
 
-void SvxMeasurePage::PointChanged( weld::DrawingArea*, RectPoint /*eRP*/ )
+void SvxMeasurePage::PointChanged(weld::DrawingArea* pDrawingArea, RectPoint /*eRP*/)
 {
-    ChangeAttrHdl_Impl( m_pCtlPosition );
+    ChangeAttrHdl_Impl(pDrawingArea);
 }
 
-IMPL_LINK( SvxMeasurePage, ClickAutoPosHdl_Impl, Button*, p, void )
+IMPL_LINK( SvxMeasurePage, ClickAutoPosHdl_Impl, weld::ToggleButton&, rBox, void )
 {
-    if( m_pTsbAutoPosH->GetState() == TRISTATE_TRUE )
+    if (m_xTsbAutoPosH->get_state() == TRISTATE_TRUE)
     {
-        switch( m_pCtlPosition->GetActualRP() )
+        switch( m_aCtlPosition.GetActualRP() )
         {
             case RectPoint::LT:
             case RectPoint::RT:
-                m_pCtlPosition->SetActualRP( RectPoint::MT );
+                m_aCtlPosition.SetActualRP( RectPoint::MT );
             break;
 
             case RectPoint::LM:
             case RectPoint::RM:
-                m_pCtlPosition->SetActualRP( RectPoint::MM );
+                m_aCtlPosition.SetActualRP( RectPoint::MM );
             break;
 
             case RectPoint::LB:
             case RectPoint::RB:
-                m_pCtlPosition->SetActualRP( RectPoint::MB );
+                m_aCtlPosition.SetActualRP( RectPoint::MB );
             break;
             default: ;//prevent warning
         }
     }
-    if( m_pTsbAutoPosV->GetState() == TRISTATE_TRUE )
+    if (m_xTsbAutoPosV->get_state() == TRISTATE_TRUE)
     {
-        switch( m_pCtlPosition->GetActualRP() )
+        switch( m_aCtlPosition.GetActualRP() )
         {
             case RectPoint::LT:
             case RectPoint::LB:
-                m_pCtlPosition->SetActualRP( RectPoint::LM );
+                m_aCtlPosition.SetActualRP( RectPoint::LM );
             break;
 
             case RectPoint::MT:
             case RectPoint::MB:
-                m_pCtlPosition->SetActualRP( RectPoint::MM );
+                m_aCtlPosition.SetActualRP( RectPoint::MM );
             break;
 
             case RectPoint::RT:
             case RectPoint::RB:
-                m_pCtlPosition->SetActualRP( RectPoint::RM );
+                m_aCtlPosition.SetActualRP( RectPoint::RM );
             break;
             default: ;//prevent warning
         }
     }
-    ChangeAttrHdl_Impl( p );
+    ChangeAttrHdl_Impl(&rBox);
+}
+
+IMPL_LINK(SvxMeasurePage, ChangeAttrClickHdl_Impl, weld::ToggleButton&, r, void)
+{
+    ChangeAttrHdl_Impl(&r);
 }
 
-IMPL_LINK( SvxMeasurePage, ChangeAttrClickHdl_Impl, Button*, p, void )
+IMPL_LINK(SvxMeasurePage, ChangeAttrListBoxHdl_Impl, weld::ComboBox&, rBox, void)
 {
-    ChangeAttrHdl_Impl(p);
+    ChangeAttrHdl_Impl(&rBox);
 }
-IMPL_LINK( SvxMeasurePage, ChangeAttrListBoxHdl_Impl, ListBox&, rBox, void )
+
+IMPL_LINK(SvxMeasurePage, ChangeAttrEditHdl_Impl, weld::MetricSpinButton&, rBox, void)
 {
     ChangeAttrHdl_Impl(&rBox);
 }
-IMPL_LINK( SvxMeasurePage, ChangeAttrEditHdl_Impl, Edit&, rBox, void )
+
+IMPL_LINK( SvxMeasurePage, ChangeAttrSpinHdl_Impl, weld::SpinButton&, rBox, void )
 {
     ChangeAttrHdl_Impl(&rBox);
 }
+
 void SvxMeasurePage::ChangeAttrHdl_Impl( void const * p )
 {
-    if( p == m_pMtrFldLineDist )
+    if (p == m_xMtrFldLineDist.get())
     {
-        sal_Int32 nValue = GetCoreValue( *m_pMtrFldLineDist, eUnit );
+        sal_Int32 nValue = GetCoreValue( *m_xMtrFldLineDist, eUnit );
         aAttrSet.Put( makeSdrMeasureLineDistItem( nValue ) );
     }
 
-    if( p == m_pMtrFldHelplineOverhang )
+    if (p == m_xMtrFldHelplineOverhang.get())
     {
-        sal_Int32 nValue = GetCoreValue( *m_pMtrFldHelplineOverhang, eUnit );
+        sal_Int32 nValue = GetCoreValue( *m_xMtrFldHelplineOverhang, eUnit );
         aAttrSet.Put( makeSdrMeasureHelplineOverhangItem( nValue) );
     }
 
-    if( p == m_pMtrFldHelplineDist )
+    if (p == m_xMtrFldHelplineDist.get())
     {
-        sal_Int32 nValue = GetCoreValue( *m_pMtrFldHelplineDist, eUnit );
+        sal_Int32 nValue = GetCoreValue( *m_xMtrFldHelplineDist, eUnit );
         aAttrSet.Put( makeSdrMeasureHelplineDistItem( nValue) );
     }
 
-    if( p == m_pMtrFldHelpline1Len )
+    if (p == m_xMtrFldHelpline1Len.get())
     {
-        sal_Int32 nValue = GetCoreValue( *m_pMtrFldHelpline1Len, eUnit );
+        sal_Int32 nValue = GetCoreValue( *m_xMtrFldHelpline1Len, eUnit );
         aAttrSet.Put( makeSdrMeasureHelpline1LenItem( nValue ) );
     }
 
-    if( p == m_pMtrFldHelpline2Len )
+    if (p == m_xMtrFldHelpline2Len.get())
     {
-        sal_Int32 nValue = GetCoreValue( *m_pMtrFldHelpline2Len, eUnit );
+        sal_Int32 nValue = GetCoreValue( *m_xMtrFldHelpline2Len, eUnit );
         aAttrSet.Put( makeSdrMeasureHelpline2LenItem( nValue ) );
     }
 
-    if( p == m_pTsbBelowRefEdge )
+    if (p == m_xTsbBelowRefEdge.get())
     {
-        TriState eState = m_pTsbBelowRefEdge->GetState();
+        TriState eState = m_xTsbBelowRefEdge->get_state();
         if( eState != TRISTATE_INDET )
             aAttrSet.Put( SdrMeasureBelowRefEdgeItem( TRISTATE_TRUE == eState ) );
     }
 
-    if( p == m_pMtrFldDecimalPlaces )
+    if (p == m_xMtrFldDecimalPlaces.get())
     {
         sal_Int16 nValue = sal::static_int_cast< sal_Int16 >(
-            m_pMtrFldDecimalPlaces->GetValue() );
+            m_xMtrFldDecimalPlaces->get_value() );
         aAttrSet.Put( SdrMeasureDecimalPlacesItem( nValue ) );
     }
 
-    if( p == m_pTsbParallel )
+    if (p == m_xTsbParallel.get())
     {
-        TriState eState = m_pTsbParallel->GetState();
+        TriState eState = m_xTsbParallel->get_state();
         if( eState != TRISTATE_INDET )
             aAttrSet.Put( SdrMeasureTextRota90Item( TRISTATE_FALSE == eState ) );
     }
 
-    if( p == m_pTsbShowUnit )
+    if (p == m_xTsbShowUnit.get())
     {
-        TriState eState = m_pTsbShowUnit->GetState();
+        TriState eState = m_xTsbShowUnit->get_state();
         if( eState != TRISTATE_INDET )
             aAttrSet.Put( SdrYesNoItem( SDRATTR_MEASURESHOWUNIT, TRISTATE_TRUE == eState ) );
     }
 
-    if( p == m_pLbUnit )
+    if (p == m_xLbUnit.get())
     {
-        sal_Int32 nPos = m_pLbUnit->GetSelectedEntryPos();
-        if( nPos != LISTBOX_ENTRY_NOTFOUND )
+        int nPos = m_xLbUnit->get_active();
+        if (nPos != -1)
         {
-            sal_uInt16 nFieldUnit = static_cast<sal_uInt16>(reinterpret_cast<sal_IntPtr>(m_pLbUnit->GetEntryData( nPos )));
+            sal_uInt16 nFieldUnit = m_xLbUnit->get_id(nPos).toUInt32();
             FieldUnit _eUnit = static_cast<FieldUnit>(nFieldUnit);
             aAttrSet.Put( SdrMeasureUnitItem( _eUnit ) );
         }
     }
 
-    if( p == m_pTsbAutoPosV || p == m_pTsbAutoPosH || p == m_pCtlPosition )
+    if (p == m_xTsbAutoPosV.get() || p == m_xTsbAutoPosH.get() || p == m_aCtlPosition.GetDrawingArea())
     {
         bPositionModified = true;
 
         // Position
-        RectPoint eRP = m_pCtlPosition->GetActualRP();
+        RectPoint eRP = m_aCtlPosition.GetActualRP();
         css::drawing::MeasureTextVertPos eVPos;
         css::drawing::MeasureTextHorzPos eHPos;
 
@@ -788,27 +766,27 @@ void SvxMeasurePage::ChangeAttrHdl_Impl( void const * p )
 
         CTL_STATE nState = CTL_STATE::NONE;
 
-        if (m_pTsbAutoPosH->GetState() == TRISTATE_TRUE)
+        if (m_xTsbAutoPosH->get_state() == TRISTATE_TRUE)
         {
             eHPos = css::drawing::MeasureTextHorzPos_AUTO;
             nState = CTL_STATE::NOHORZ;
         }
 
-        if (m_pTsbAutoPosV->GetState() == TRISTATE_TRUE)
+        if (m_xTsbAutoPosV->get_state() == TRISTATE_TRUE)
         {
             eVPos = css::drawing::MeasureTextVertPos_AUTO;
             nState |= CTL_STATE::NOVERT;
         }
 
-        if( p == m_pTsbAutoPosV || p == m_pTsbAutoPosH )
-            m_pCtlPosition->SetState( nState );
+        if (p == m_xTsbAutoPosV.get() || p == m_xTsbAutoPosH.get())
+            m_aCtlPosition.SetState( nState );
 
         aAttrSet.Put( SdrMeasureTextVPosItem( eVPos ) );
         aAttrSet.Put( SdrMeasureTextHPosItem( eHPos ) );
     }
 
-    m_pCtlPreview->SetAttributes( aAttrSet );
-    m_pCtlPreview->Invalidate();
+    m_aCtlPreview.SetAttributes(aAttrSet);
+    m_aCtlPreview.Invalidate();
 }
 
 void SvxMeasurePage::FillUnitLB()
@@ -816,18 +794,17 @@ void SvxMeasurePage::FillUnitLB()
     // fill ListBox with metrics
 
     FieldUnit nUnit = FUNIT_NONE;
-    OUString aStrMetric( m_pFtAutomatic->GetText());
-    sal_Int32 nPos = m_pLbUnit->InsertEntry( aStrMetric );
-    m_pLbUnit->SetEntryData( nPos, reinterpret_cast<void*>(nUnit) );
+    OUString aStrMetric(m_xFtAutomatic->get_label());
+    m_xLbUnit->append(OUString::number(nUnit), aStrMetric);
 
     for( sal_uInt32 i = 0; i < SvxFieldUnitTable::Count(); ++i )
     {
         aStrMetric = SvxFieldUnitTable::GetString(i);
         nUnit = SvxFieldUnitTable::GetValue(i);
-        nPos = m_pLbUnit->InsertEntry( aStrMetric );
-        m_pLbUnit->SetEntryData( nPos, reinterpret_cast<void*>(nUnit) );
+        m_xLbUnit->append(OUString::number(nUnit), aStrMetric);
     }
 }
+
 void SvxMeasurePage::PageCreated(const SfxAllItemSet& aSet)
 {
     const OfaPtrItem* pOfaPtrItem = aSet.GetItem<OfaPtrItem>(SID_OBJECT_LIST, false);
diff --git a/cui/uiconfig/ui/dimensionlinestabpage.ui b/cui/uiconfig/ui/dimensionlinestabpage.ui
index 497ee0276f49..5c4b4595d8be 100644
--- a/cui/uiconfig/ui/dimensionlinestabpage.ui
+++ b/cui/uiconfig/ui/dimensionlinestabpage.ui
@@ -1,8 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.18.3 -->
+<!-- Generated with glade 3.22.1 -->
 <interface domain="cui">
   <requires lib="gtk+" version="3.18"/>
-  <requires lib="LibreOffice" version="1.0"/>
   <object class="GtkAdjustment" id="adjustment1">
     <property name="lower">-10</property>
     <property name="upper">10</property>
@@ -14,6 +13,30 @@
     <property name="step_increment">1</property>
     <property name="page_increment">10</property>
   </object>
+  <object class="GtkAdjustment" id="adjustment3">
+    <property name="lower">-10</property>
+    <property name="upper">10</property>
+    <property name="step_increment">0.10000000000000001</property>
+    <property name="page_increment">1</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustment4">
+    <property name="lower">-10</property>
+    <property name="upper">10</property>
+    <property name="step_increment">0.10000000000000001</property>
+    <property name="page_increment">1</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustment5">
+    <property name="lower">-10</property>
+    <property name="upper">10</property>
+    <property name="step_increment">0.10000000000000001</property>
+    <property name="page_increment">1</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustment6">
+    <property name="lower">-10</property>
+    <property name="upper">10</property>
+    <property name="step_increment">0.10000000000000001</property>
+    <property name="page_increment">1</property>
+  </object>
   <object class="GtkBox" id="DimensionLinesTabPage">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
@@ -48,11 +71,11 @@
                       <object class="GtkLabel" id="FT_LINE_DIST">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="xalign">0</property>
-                        <property name="yalign">0.4699999988079071</property>
                         <property name="label" translatable="yes" context="dimensionlinestabpage|FT_LINE_DIST">Line _distance:</property>
                         <property name="use_underline">True</property>
-                        <property name="mnemonic_widget">MTR_LINE_DIST:0.00mm</property>
+                        <property name="mnemonic_widget">MTR_LINE_DIST</property>
+                        <property name="xalign">0</property>
+                        <property name="yalign">0.4699999988079071</property>
                       </object>
                       <packing>
                         <property name="left_attach">0</property>
@@ -63,10 +86,10 @@
                       <object class="GtkLabel" id="FT_HELPLINE_OVERHANG">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="xalign">0</property>
                         <property name="label" translatable="yes" context="dimensionlinestabpage|FT_HELPLINE_OVERHANG">Guide _overhang:</property>
                         <property name="use_underline">True</property>
-                        <property name="mnemonic_widget">MTR_FLD_HELPLINE_OVERHANG:0.00mm</property>
+                        <property name="mnemonic_widget">MTR_FLD_HELPLINE_OVERHANG</property>
+                        <property name="xalign">0</property>
                       </object>
                       <packing>
                         <property name="left_attach">0</property>
@@ -77,10 +100,10 @@
                       <object class="GtkLabel" id="FT_HELPLINE_DIST">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="xalign">0</property>
                         <property name="label" translatable="yes" context="dimensionlinestabpage|FT_HELPLINE_DIST">_Guide distance:</property>
                         <property name="use_underline">True</property>
                         <property name="mnemonic_widget">MTR_FLD_HELPLINE_DIST:0.00mm</property>
+                        <property name="xalign">0</property>
                       </object>
                       <packing>
                         <property name="left_attach">0</property>
@@ -91,10 +114,10 @@
                       <object class="GtkLabel" id="FT_HELPLINE1_LEN">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="xalign">0</property>
                         <property name="label" translatable="yes" context="dimensionlinestabpage|FT_HELPLINE1_LEN">_Left guide:</property>
                         <property name="use_underline">True</property>
-                        <property name="mnemonic_widget">MTR_FLD_HELPLINE1_LEN:0.00mm</property>
+                        <property name="mnemonic_widget">MTR_FLD_HELPLINE1_LEN</property>
+                        <property name="xalign">0</property>
                       </object>
                       <packing>
                         <property name="left_attach">0</property>
@@ -105,10 +128,10 @@
                       <object class="GtkLabel" id="FT_HELPLINE2_LEN">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="xalign">0</property>
                         <property name="label" translatable="yes" context="dimensionlinestabpage|FT_HELPLINE2_LEN">_Right guide:</property>
                         <property name="use_underline">True</property>
-                        <property name="mnemonic_widget">MTR_FLD_HELPLINE2_LEN:0.00mm</property>
+                        <property name="mnemonic_widget">MTR_FLD_HELPLINE2_LEN</property>
+                        <property name="xalign">0</property>
                       </object>
                       <packing>
                         <property name="left_attach">0</property>
@@ -119,10 +142,10 @@
                       <object class="GtkLabel" id="FT_DECIMALPLACES">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="xalign">0</property>
                         <property name="label" translatable="yes" context="dimensionlinestabpage|FT_DECIMALPLACES">Decimal _places:</property>
                         <property name="use_underline">True</property>
-                        <property name="mnemonic_widget">MTR_FLD_DECIMALPLACES:0</property>
+                        <property name="mnemonic_widget">MTR_FLD_DECIMALPLACES</property>
+                        <property name="xalign">0</property>
                       </object>
                       <packing>
                         <property name="left_attach">0</property>
@@ -148,9 +171,10 @@
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkSpinButton" id="MTR_LINE_DIST:0.00mm">
+                      <object class="GtkSpinButton" id="MTR_LINE_DIST">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
+                        <property name="activates_default">True</property>
                         <property name="adjustment">adjustment1</property>
                         <property name="digits">2</property>
                       </object>
@@ -160,10 +184,11 @@
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkSpinButton" id="MTR_FLD_HELPLINE_OVERHANG:0.00mm">
+                      <object class="GtkSpinButton" id="MTR_FLD_HELPLINE_OVERHANG">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="adjustment">adjustment1</property>
+                        <property name="activates_default">True</property>
+                        <property name="adjustment">adjustment3</property>
                         <property name="digits">2</property>
                       </object>
                       <packing>
@@ -175,7 +200,8 @@
                       <object class="GtkSpinButton" id="MTR_FLD_HELPLINE_DIST:0.00mm">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="adjustment">adjustment1</property>
+                        <property name="activates_default">True</property>
+                        <property name="adjustment">adjustment4</property>
                         <property name="digits">2</property>
                       </object>
                       <packing>
@@ -184,10 +210,11 @@
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkSpinButton" id="MTR_FLD_HELPLINE1_LEN:0.00mm">
+                      <object class="GtkSpinButton" id="MTR_FLD_HELPLINE1_LEN">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="adjustment">adjustment1</property>
+                        <property name="activates_default">True</property>
+                        <property name="adjustment">adjustment5</property>
                         <property name="digits">2</property>
                       </object>
                       <packing>
@@ -196,10 +223,11 @@
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkSpinButton" id="MTR_FLD_HELPLINE2_LEN:0.00mm">
+                      <object class="GtkSpinButton" id="MTR_FLD_HELPLINE2_LEN">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="adjustment">adjustment1</property>
+                        <property name="activates_default">True</property>
+                        <property name="adjustment">adjustment6</property>
                         <property name="digits">2</property>
                       </object>
                       <packing>
@@ -208,9 +236,10 @@
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkSpinButton" id="MTR_FLD_DECIMALPLACES:0">
+                      <object class="GtkSpinButton" id="MTR_FLD_DECIMALPLACES">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
+                        <property name="activates_default">True</property>
                         <property name="adjustment">adjustment2</property>
                       </object>
                       <packing>
@@ -226,8 +255,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="dimensionlinestabpage|label1">Line</property>
+                <property name="xalign">0</property>
                 <attributes>
                   <attribute name="weight" value="bold"/>
                 </attributes>
@@ -262,9 +291,9 @@
                       <object class="GtkLabel" id="FT_POSITION">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="xalign">0</property>
                         <property name="label" translatable="yes" context="dimensionlinestabpage|FT_POSITION">_Text position</property>
                         <property name="use_underline">True</property>
+                        <property name="xalign">0</property>
                       </object>
                       <packing>
                         <property name="expand">False</property>
@@ -284,11 +313,29 @@
                             <property name="orientation">vertical</property>
                             <property name="spacing">6</property>
                             <child>
-                              <object class="svxlo-SvxRectCtl" id="CTL_POSITION">
+                              <object class="GtkScrolledWindow" id="frameselwin">
                                 <property name="visible">True</property>
-                                <property name="can_focus">False</property>
+                                <property name="can_focus">True</property>
                                 <property name="halign">start</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_POSITION">
+                                        <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>
+                                        <property name="halign">start</property>
+                                        <property name="valign">center</property>
+                                      </object>
+                                    </child>
+                                  </object>
+                                </child>
                               </object>
                               <packing>
                                 <property name="expand">False</property>
@@ -374,7 +421,7 @@
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkComboBox" id="LB_UNIT">
+                      <object class="GtkComboBoxText" id="LB_UNIT">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
                         <property name="halign">start</property>
@@ -394,8 +441,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="dimensionlinestabpage|label2">Legend</property>
+                <property name="xalign">0</property>
                 <attributes>
                   <attribute name="weight" value="bold"/>
                 </attributes>
@@ -427,9 +474,24 @@
       </packing>
     </child>
     <child>
-      <object class="svxlo-SvxXMeasurePreview" id="CTL_PREVIEW:border">
+      <object class="GtkScrolledWindow">
         <property name="visible">True</property>
         <property name="can_focus">False</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_PREVIEW">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+              </object>
+            </child>
+          </object>
+        </child>
       </object>
       <packing>
         <property name="expand">False</property>
diff --git a/extras/source/glade/libreoffice-catalog.xml.in b/extras/source/glade/libreoffice-catalog.xml.in
index e79db6624283..b1fc5ff12330 100644
--- a/extras/source/glade/libreoffice-catalog.xml.in
+++ b/extras/source/glade/libreoffice-catalog.xml.in
@@ -230,9 +230,6 @@
     <glade-widget-class title="SvxXLinePreview" name="svxlo-SvxXLinePreview"
                         generic-name="Line Preview Window" parent="GtkDrawingArea"
                         icon-name="widget-gtk-drawingarea"/>
-    <glade-widget-class title="SvxXMeasurePreview" name="svxlo-SvxXMeasurePreview"
-                        generic-name="Dimension Line Preview Window" parent="GtkDrawingArea"
-                        icon-name="widget-gtk-drawingarea"/>
     <glade-widget-class title="SvxXConnectionPreview" name="svxlo-SvxXConnectionPreview"
                         generic-name="Connector Line Preview Window" parent="GtkDrawingArea"
                             icon-name="widget-gtk-drawingarea"/>
@@ -344,11 +341,8 @@
     <glade-widget-class title="Assign Fields Control" name="swuilo-SwAssignFieldsControl"
                         generic-name="Assign Fields Control" parent="GtkDrawingArea"
                         icon-name="widget-gtk-drawingarea"/>
-    <glade-widget-class title="Rectangle Control" name="svxlo-SvxRectCtl"
-                        generic-name="Rectangle Control" parent="GtkDrawingArea"
-                        icon-name="widget-gtk-drawingarea"/>
     <glade-widget-class title="Emboss Control" name="cuilo-EmbossControl"
-                        generic-name="Emboss Control" parent="svxlo-SvxRectCtl"
+                        generic-name="Emboss Control" parent="GtkDrawingArea"
                         icon-name="widget-gtk-drawingarea"/>
     <glade-widget-class title="Frame Direction ListBox" name="svxlo-FrameDirectionListBox"
                         generic-name="FrameDirectionListBox" parent="GtkComboBox"
diff --git a/include/svx/measctrl.hxx b/include/svx/measctrl.hxx
index 4cdbb84a60e5..c3d2d4391769 100644
--- a/include/svx/measctrl.hxx
+++ b/include/svx/measctrl.hxx
@@ -19,7 +19,7 @@
 #ifndef INCLUDED_SVX_MEASCTRL_HXX
 #define INCLUDED_SVX_MEASCTRL_HXX
 
-#include <vcl/ctrl.hxx>
+#include <vcl/customweld.hxx>
 #include <svx/svxdllapi.h>
 #include <memory>
 
@@ -27,27 +27,26 @@ class SfxItemSet;
 class SdrMeasureObj;
 class SdrModel;
 
-class SVX_DLLPUBLIC SvxXMeasurePreview : public Control
+class SVX_DLLPUBLIC SvxXMeasurePreview : public weld::CustomWidgetController
 {
  friend class SvxMeasurePage;
 
 private:
+    MapMode m_aMapMode;
     SdrMeasureObj* pMeasureObj;
     std::unique_ptr<SdrModel> pModel;
 
+    void ResizeImpl(const Size& rSize);
 public:
-    SvxXMeasurePreview(vcl::Window* pParent, WinBits nStyle);
+    SvxXMeasurePreview();
+    virtual void SetDrawingArea(weld::DrawingArea* pDrawingArea) override;
     virtual ~SvxXMeasurePreview() override;
-    virtual void dispose() override;
 
     virtual void Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle& rRect) override;
     virtual void Resize() override;
     virtual void MouseButtonDown(const MouseEvent& rMEvt) override;
-    virtual Size GetOptimalSize() const override;
 
     void SetAttributes(const SfxItemSet& rInAttrs);
-
-    virtual void DataChanged(const DataChangedEvent& rDCEvt) override;
 };
 
 #endif
diff --git a/solenv/sanitizers/ui/cui.suppr b/solenv/sanitizers/ui/cui.suppr
index d2f4bbb2de26..334714624ce2 100644
--- a/solenv/sanitizers/ui/cui.suppr
+++ b/solenv/sanitizers/ui/cui.suppr
@@ -195,7 +195,6 @@ cui/uiconfig/ui/connpooloptions.ui://GtkLabel[@id='driverlabel'] orphan-label
 cui/uiconfig/ui/connpooloptions.ui://GtkLabel[@id='driver'] orphan-label
 cui/uiconfig/ui/databaselinkdialog.ui://GtkLabel[@id='alttitle'] orphan-label
 cui/uiconfig/ui/dimensionlinestabpage.ui://GtkLabel[@id='FT_POSITION'] orphan-label
-cui/uiconfig/ui/dimensionlinestabpage.ui://svxlo-SvxRectCtl[@id='CTL_POSITION'] no-labelled-by
 cui/uiconfig/ui/dimensionlinestabpage.ui://GtkComboBox[@id='LB_UNIT'] no-labelled-by
 cui/uiconfig/ui/dimensionlinestabpage.ui://GtkLabel[@id='STR_MEASURE_AUTOMATIC'] orphan-label
 cui/uiconfig/ui/eventassignpage.ui://cuilo-MacroEventListBox[@id='assignments:border'] no-labelled-by
diff --git a/svx/source/dialog/dlgctrl.cxx b/svx/source/dialog/dlgctrl.cxx
index ebc6f4b9cc79..85df3b8d1c1c 100644
--- a/svx/source/dialog/dlgctrl.cxx
+++ b/svx/source/dialog/dlgctrl.cxx
@@ -87,8 +87,6 @@ Size SvxRectCtl::GetOptimalSize() const
     return LogicToPixel(Size(78, 39), MapMode(MapUnit::MapAppFont));
 }
 
-VCL_BUILDER_FACTORY(SvxRectCtl)
-
 SvxRectCtl::~SvxRectCtl()
 {
     disposeOnce();
diff --git a/svx/source/dialog/measctrl.cxx b/svx/source/dialog/measctrl.cxx
index 578a49ceb6e3..87c0c3f38d6c 100644
--- a/svx/source/dialog/measctrl.cxx
+++ b/svx/source/dialog/measctrl.cxx
@@ -22,61 +22,55 @@
 #include <svx/svdmodel.hxx>
 #include <svx/measctrl.hxx>
 #include <svx/dlgutil.hxx>
-#include <vcl/builderfactory.hxx>
 #include <vcl/settings.hxx>
+#include <vcl/svapp.hxx>
 #include <memory>
 
-SvxXMeasurePreview::SvxXMeasurePreview(vcl::Window* pParent, WinBits nStyle)
-    : Control(pParent, nStyle)
+SvxXMeasurePreview::SvxXMeasurePreview()
+    : m_aMapMode(MapUnit::Map100thMM)
 {
-    SetMapMode(MapMode(MapUnit::Map100thMM));
-
     // Scale: 1:2
-    MapMode aMapMode = GetMapMode();
-    aMapMode.SetScaleX(Fraction(1, 2));
-    aMapMode.SetScaleY(Fraction(1, 2));
-    SetMapMode(aMapMode);
+    m_aMapMode.SetScaleX(Fraction(1, 2));
+    m_aMapMode.SetScaleY(Fraction(1, 2));
+}
 
-    Size aSize = GetOutputSize();
-    Point aPt1 = Point(aSize.Width() / 5, static_cast<long>(aSize.Height() / 2));
-    Point aPt2 = Point(aSize.Width() * 4 / 5, static_cast<long>(aSize.Height() / 2));
+void SvxXMeasurePreview::SetDrawingArea(weld::DrawingArea* pDrawingArea)
+{
+    CustomWidgetController::SetDrawingArea(pDrawingArea);
+    Size aSize(getPreviewStripSize(pDrawingArea->get_ref_device()));
+    pDrawingArea->set_size_request(aSize.Width(), aSize.Height());
 
     pModel.reset(new SdrModel(nullptr, nullptr, true));
-    pMeasureObj = new SdrMeasureObj(
-        *pModel,
-        aPt1,
-        aPt2);
-
-    bool bHighContrast = GetSettings().GetStyleSettings().GetHighContrastMode();
-    SetDrawMode(bHighContrast ? OUTPUT_DRAWMODE_CONTRAST : OUTPUT_DRAWMODE_COLOR);
+    pMeasureObj = new SdrMeasureObj(*pModel, Point(), Point());
 
+    ResizeImpl(aSize);
     Invalidate();
 }
 
-void SvxXMeasurePreview::Resize()
+void SvxXMeasurePreview::ResizeImpl(const Size& rSize)
 {
-    Control::Resize();
+    OutputDevice& rRefDevice = GetDrawingArea()->get_ref_device();
+    rRefDevice.Push(PushFlags::MAPMODE);
+
+    rRefDevice.SetMapMode(m_aMapMode);
 
-    Size aSize = GetOutputSize();
+    Size aSize = rRefDevice.PixelToLogic(rSize);
     Point aPt1 = Point(aSize.Width() / 5, static_cast<long>(aSize.Height() / 2));
     pMeasureObj->SetPoint(aPt1, 0);
     Point aPt2 = Point(aSize.Width() * 4 / 5, static_cast<long>(aSize.Height() / 2));
     pMeasureObj->SetPoint(aPt2, 1);
-}
 
-VCL_BUILDER_FACTORY_CONSTRUCTOR(SvxXMeasurePreview, 0)
-
-Size SvxXMeasurePreview::GetOptimalSize() const
-{
-    return getPreviewStripSize(*this);
+    rRefDevice.Pop();
 }
 
-SvxXMeasurePreview::~SvxXMeasurePreview()
+void SvxXMeasurePreview::Resize()
 {
-    disposeOnce();
+    CustomWidgetController::Resize();
+    ResizeImpl(GetOutputSizePixel());
+    Invalidate();
 }
 
-void SvxXMeasurePreview::dispose()
+SvxXMeasurePreview::~SvxXMeasurePreview()
 {
     // No one is deleting the MeasureObj? This is not only an error but also
     // a memory leak (!). Main problem is that this object is still listening to
@@ -89,12 +83,18 @@ void SvxXMeasurePreview::dispose()
     SdrObject::Free(pTemp);
 
     pModel.reset();
-    Control::dispose();
 }
 
 void SvxXMeasurePreview::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle&)
 {
+    rRenderContext.Push(PushFlags::MAPMODE);
+    rRenderContext.SetMapMode(m_aMapMode);
+
+    bool bHighContrast = Application::GetSettings().GetStyleSettings().GetHighContrastMode();
+    rRenderContext.SetDrawMode(bHighContrast ? OUTPUT_DRAWMODE_CONTRAST : OUTPUT_DRAWMODE_COLOR);
     pMeasureObj->SingleObjectPainter(rRenderContext);
+
+    rRenderContext.Pop();
 }
 
 void SvxXMeasurePreview::SetAttributes(const SfxItemSet& rInAttrs)
@@ -112,9 +112,8 @@ void SvxXMeasurePreview::MouseButtonDown(const MouseEvent& rMEvt)
 
     if (bZoomIn || bZoomOut)
     {
-        MapMode aMapMode = GetMapMode();
-        Fraction aXFrac = aMapMode.GetScaleX();
-        Fraction aYFrac = aMapMode.GetScaleY();
+        Fraction aXFrac = m_aMapMode.GetScaleX();
+        Fraction aYFrac = m_aMapMode.GetScaleY();
         std::unique_ptr<Fraction> pMultFrac;
 
         if (bZoomIn)
@@ -138,35 +137,26 @@ void SvxXMeasurePreview::MouseButtonDown(const MouseEvent& rMEvt)
         if (double(aXFrac) > 0.001 && double(aXFrac) < 1000.0 &&
             double(aYFrac) > 0.001 && double(aYFrac) < 1000.0)
         {
-            aMapMode.SetScaleX(aXFrac);
-            aMapMode.SetScaleY(aYFrac);
-            SetMapMode(aMapMode);
+            m_aMapMode.SetScaleX(aXFrac);
+            m_aMapMode.SetScaleY(aYFrac);
 
-            Size aOutSize(GetOutputSize());
+            OutputDevice& rRefDevice = GetDrawingArea()->get_ref_device();
+            rRefDevice.Push(PushFlags::MAPMODE);
+            rRefDevice.SetMapMode(m_aMapMode);
+            Size aOutSize(rRefDevice.PixelToLogic(GetOutputSizePixel()));
+            rRefDevice.Pop();
 
-            Point aPt(aMapMode.GetOrigin());
+            Point aPt(m_aMapMode.GetOrigin());
             long nX = long((double(aOutSize.Width()) - (double(aOutSize.Width()) * double(*pMultFrac))) / 2.0 + 0.5);
             long nY = long((double(aOutSize.Height()) - (double(aOutSize.Height()) * double(*pMultFrac))) / 2.0 + 0.5);
             aPt.AdjustX(nX );
             aPt.AdjustY(nY );
 
-            aMapMode.SetOrigin(aPt);
-            SetMapMode(aMapMode);
+            m_aMapMode.SetOrigin(aPt);
 
             Invalidate();
         }
     }
 }
 
-void SvxXMeasurePreview::DataChanged( const DataChangedEvent& rDCEvt )
-{
-    Control::DataChanged( rDCEvt );
-
-    if ((rDCEvt.GetType() == DataChangedEventType::SETTINGS) && (rDCEvt.GetFlags() & AllSettingsFlags::STYLE))
-    {
-        bool bHighContrast = GetSettings().GetStyleSettings().GetHighContrastMode();
-        SetDrawMode(bHighContrast ? OUTPUT_DRAWMODE_CONTRAST : OUTPUT_DRAWMODE_COLOR);
-    }
-}
-
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */


More information about the Libreoffice-commits mailing list