weld SvxLineTabDialog

Change-Id: Icb13a6eb2e8c6f6dbd3cf477051bc0bd682e2e7a
Reviewed-on: https://gerrit.libreoffice.org/61193
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/chart2/source/controller/main/ShapeController.cxx b/chart2/source/controller/main/ShapeController.cxx
index 1c082d8..69d7d4b 100644
--- a/chart2/source/controller/main/ShapeController.cxx
+++ b/chart2/source/controller/main/ShapeController.cxx
@@ -256,8 +256,8 @@ void ShapeController::executeDispatch_FormatLine()
            }
            SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
            ScopedVclPtr< SfxAbstractTabDialog > pDlg(
                pFact->CreateSvxLineTabDialog( pChartWindow, &aAttr, &pDrawModelWrapper->getSdrModel(),
                    pSelectedObj, bHasMarked ) );
                pFact->CreateSvxLineTabDialog(pChartWindow->GetFrameWeld(), &aAttr, &pDrawModelWrapper->getSdrModel(),
                    pSelectedObj, bHasMarked));
            if ( pDlg->Execute() == RET_OK )
            {
                const SfxItemSet* pOutAttr = pDlg->GetOutputItemSet();
diff --git a/cui/source/factory/dlgfact.cxx b/cui/source/factory/dlgfact.cxx
index 0c024e2..a49f2b2 100644
--- a/cui/source/factory/dlgfact.cxx
+++ b/cui/source/factory/dlgfact.cxx
@@ -344,6 +344,11 @@ short CuiAbstractTabController_Impl::Execute()
    return m_xDlg->execute();
}

bool CuiAbstractTabController_Impl::StartExecuteAsync(AsyncContext &rCtx)
{
    return SfxTabDialogController::runAsync(m_xDlg, rCtx.maEndDialogFn);
}

void CuiAbstractTabController_Impl::SetCurPageId( const OString &rName )
{
    m_xDlg->SetCurPageId( rName );
@@ -1337,13 +1342,12 @@ VclPtr<AbstractSvxAreaTabDialog> AbstractDialogFactory_Impl::CreateSvxAreaTabDia
    return VclPtr<AbstractSvxAreaTabDialog_Impl>::Create(o3tl::make_unique<SvxAreaTabDialog>(pParent, pAttr, pModel, bShadow));
}

VclPtr<SfxAbstractTabDialog> AbstractDialogFactory_Impl::CreateSvxLineTabDialog( vcl::Window* pParent, const SfxItemSet* pAttr, //add forSvxLineTabDialog
VclPtr<SfxAbstractTabDialog> AbstractDialogFactory_Impl::CreateSvxLineTabDialog(weld::Window* pParent, const SfxItemSet* pAttr, //add forSvxLineTabDialog
                                                                 SdrModel* pModel,
                                                                 const SdrObject* pObj ,
                                                                 bool bHasObj)
{
    VclPtrInstance<SvxLineTabDialog> pDlg( pParent, pAttr, pModel,pObj,bHasObj );
    return VclPtr<CuiAbstractTabDialog_Impl>::Create( pDlg );
    return VclPtr<CuiAbstractTabController_Impl>::Create(o3tl::make_unique<SvxLineTabDialog>(pParent, pAttr, pModel, pObj,bHasObj));
}

VclPtr<SfxAbstractDialog> AbstractDialogFactory_Impl::CreateCharMapDialog(weld::Window* pParent, const SfxItemSet& rAttr, bool bInsert)
diff --git a/cui/source/factory/dlgfact.hxx b/cui/source/factory/dlgfact.hxx
index 505ff14..ba317dd5 100644
--- a/cui/source/factory/dlgfact.hxx
+++ b/cui/source/factory/dlgfact.hxx
@@ -145,13 +145,14 @@ class CuiAbstractTabDialog_Impl : public SfxAbstractTabDialog
class CuiAbstractTabController_Impl : public SfxAbstractTabDialog
{
protected:
    std::unique_ptr<SfxTabDialogController> m_xDlg;
    std::shared_ptr<SfxTabDialogController> m_xDlg;
public:
    explicit CuiAbstractTabController_Impl(std::unique_ptr<SfxTabDialogController> p)
        : m_xDlg(std::move(p))
    {
    }
    virtual short Execute() override;
    virtual bool StartExecuteAsync(AsyncContext &rCtx) override;
    virtual void                SetCurPageId( const OString &rName ) override;
    virtual const SfxItemSet*   GetOutputItemSet() const override;
    virtual const sal_uInt16*   GetInputRanges( const SfxItemPool& pItem ) override;
@@ -800,7 +801,7 @@ public:
                                                                          const SfxItemSet* pAttr,
                                                                          SdrModel* pModel,
                                                                          bool bShadow) override;
    virtual VclPtr<SfxAbstractTabDialog>           CreateSvxLineTabDialog( vcl::Window* pParent, const SfxItemSet* pAttr,
    virtual VclPtr<SfxAbstractTabDialog>           CreateSvxLineTabDialog(weld::Window* pParent, const SfxItemSet* pAttr,
                                                                 SdrModel* pModel,
                                                                 const SdrObject* pObj,
                                                                 bool bHasObj ) override;
diff --git a/cui/source/inc/cuitabline.hxx b/cui/source/inc/cuitabline.hxx
index 36edebf..53430d0 100644
--- a/cui/source/inc/cuitabline.hxx
+++ b/cui/source/inc/cuitabline.hxx
@@ -27,23 +27,18 @@
enum class PageType;
class ColorListBox;

class SvxLineTabDialog final : public SfxTabDialog
class SvxLineTabDialog final : public SfxTabDialogController
{
    sal_uInt16            m_nLineTabPage;
    sal_uInt16            m_nShadowTabPage;
    sal_uInt16            m_nStyleTabPage;
    sal_uInt16            m_nEndTabPage;

    SdrModel*           pDrawModel;
    const SdrObject*    pObj;

    XColorListRef         pColorList;
    XColorListRef         mpNewColorList;
    XDashListRef          pDashList;
    XDashListRef          pNewDashList;
    XLineEndListRef       pLineEndList;
    XLineEndListRef       pNewLineEndList;
    bool            bObjSelected;
    XColorListRef       pColorList;
    XColorListRef       mpNewColorList;
    XDashListRef        pDashList;
    XDashListRef        pNewDashList;
    XLineEndListRef     pLineEndList;
    XLineEndListRef     pNewLineEndList;
    bool                bObjSelected;

    ChangeType          nLineEndListState;
    ChangeType          nDashListState;
@@ -53,16 +48,16 @@ class SvxLineTabDialog final : public SfxTabDialog
    sal_Int32           nPosDashLb;
    sal_Int32           nPosLineEndLb;

    virtual void        PageCreated( sal_uInt16 nId, SfxTabPage &rPage ) override;
    virtual void        PageCreated(const OString& rId, SfxTabPage &rPage) override;

    virtual short       Ok() override;
    DECL_LINK( CancelHdlImpl, Button*, void );
    DECL_LINK(CancelHdlImpl, weld::Button&, void);
    void                SavePalettes();

public:
    SvxLineTabDialog( vcl::Window* pParent, const SfxItemSet* pAttr,
                      SdrModel* pModel, const SdrObject* pObj,
                      bool bHasObj );
    SvxLineTabDialog(weld::Window* pParent, const SfxItemSet* pAttr,
                     SdrModel* pModel, const SdrObject* pObj,
                     bool bHasObj);

    void                SetNewDashList( XDashListRef const & pInLst)
                        { pNewDashList = pInLst; }
diff --git a/cui/source/tabpages/tabline.cxx b/cui/source/tabpages/tabline.cxx
index 5268861..df1b6a3 100644
--- a/cui/source/tabpages/tabline.cxx
+++ b/cui/source/tabpages/tabline.cxx
@@ -28,38 +28,24 @@
#include <svx/xtable.hxx>
#include <svx/drawitem.hxx>

SvxLineTabDialog::SvxLineTabDialog
(
    vcl::Window* pParent,
    const SfxItemSet* pAttr,
    SdrModel* pModel,
    const SdrObject* pSdrObj,
    bool bHasObj
) :

    SfxTabDialog    ( pParent
                      , "LineDialog"
                      , "cui/ui/linedialog.ui"
                      , pAttr ),
    m_nLineTabPage(0),
    m_nShadowTabPage(0),
    m_nStyleTabPage(0),
    m_nEndTabPage(0),
    pDrawModel      ( pModel ),
    pObj            ( pSdrObj ),
    pColorList      ( pModel->GetColorList() ),
    mpNewColorList  ( pModel->GetColorList() ),
    pDashList       ( pModel->GetDashList() ),
    pNewDashList    ( pModel->GetDashList() ),
    pLineEndList    ( pModel->GetLineEndList() ),
    pNewLineEndList ( pModel->GetLineEndList() ),
    bObjSelected    ( bHasObj ),
    nLineEndListState( ChangeType::NONE ),
    nDashListState( ChangeType::NONE ),
    mnColorListState( ChangeType::NONE ),
    nPageType( PageType::Area ), // We use it here primarily to get the right attributes with FillItemSet
    nPosDashLb( 0 ),
    nPosLineEndLb( 0 )
SvxLineTabDialog::SvxLineTabDialog(weld::Window* pParent, const SfxItemSet* pAttr,
    SdrModel* pModel, const SdrObject* pSdrObj, bool bHasObj)
    : SfxTabDialogController(pParent, "cui/ui/linedialog.ui", "LineDialog", pAttr)
    , pDrawModel(pModel)
    , pObj(pSdrObj)
    , pColorList(pModel->GetColorList())
    , mpNewColorList(pModel->GetColorList())
    , pDashList(pModel->GetDashList())
    , pNewDashList(pModel->GetDashList())
    , pLineEndList(pModel->GetLineEndList())
    , pNewLineEndList(pModel->GetLineEndList())
    , bObjSelected(bHasObj)
    , nLineEndListState(ChangeType::NONE)
    , nDashListState(ChangeType::NONE)
    , mnColorListState(ChangeType::NONE)
    , nPageType(PageType::Area) // We use it here primarily to get the right attributes with FillItemSet
    , nPosDashLb(0)
    , nPosLineEndLb(0)
{
    bool bLineOnly = false;
    if( pObj && pObj->GetObjInventor() == SdrInventor::Default )
@@ -81,20 +67,19 @@ SvxLineTabDialog::SvxLineTabDialog

    }

    m_nLineTabPage = AddTabPage( "RID_SVXPAGE_LINE", SvxLineTabPage::Create, nullptr);
    AddTabPage("RID_SVXPAGE_LINE", SvxLineTabPage::Create, nullptr);
    if( bLineOnly )
        m_nShadowTabPage = AddTabPage( "RID_SVXPAGE_SHADOW", SvxShadowTabPage::Create, nullptr );
        AddTabPage("RID_SVXPAGE_SHADOW", SvxShadowTabPage::Create, nullptr);
    else
        RemoveTabPage( "RID_SVXPAGE_SHADOW" );

    m_nStyleTabPage = AddTabPage( "RID_SVXPAGE_LINE_DEF", SvxLineDefTabPage::Create, nullptr);
    m_nEndTabPage = AddTabPage( "RID_SVXPAGE_LINEEND_DEF", SvxLineEndDefTabPage::Create, nullptr);
    AddTabPage("RID_SVXPAGE_LINE_DEF", SvxLineDefTabPage::Create, nullptr);
    AddTabPage("RID_SVXPAGE_LINEEND_DEF", SvxLineEndDefTabPage::Create, nullptr);

    CancelButton& rBtnCancel = GetCancelButton();
    rBtnCancel.SetClickHdl( LINK( this, SvxLineTabDialog, CancelHdlImpl ) );
    weld::Button& rBtnCancel = GetCancelButton();
    rBtnCancel.connect_clicked(LINK(this, SvxLineTabDialog, CancelHdlImpl));
}


void SvxLineTabDialog::SavePalettes()
{
    SfxObjectShell* pShell = SfxObjectShell::Current();
@@ -161,27 +146,25 @@ void SvxLineTabDialog::SavePalettes()
    }
}


short SvxLineTabDialog::Ok()
{
    SavePalettes();

    // We return RET_OK if at least one TabPage in FillItemSet() returns sal_True.
    // We do this by default at the moment.
    return SfxTabDialog::Ok();
    return SfxTabDialogController::Ok();
}


IMPL_LINK_NOARG(SvxLineTabDialog, CancelHdlImpl, Button*, void)
IMPL_LINK_NOARG(SvxLineTabDialog, CancelHdlImpl, weld::Button&, void)
{
    SavePalettes();

    EndDialog();
    m_xDialog->response(RET_CANCEL);
}

void SvxLineTabDialog::PageCreated( sal_uInt16 nId, SfxTabPage &rPage )
void SvxLineTabDialog::PageCreated(const OString& rId, SfxTabPage &rPage)
{
    if( nId ==  m_nLineTabPage)
    if (rId == "RID_SVXPAGE_LINE")
    {
        static_cast<SvxLineTabPage&>(rPage).SetColorList( pColorList );
        static_cast<SvxLineTabPage&>(rPage).SetDashList( pDashList );
@@ -196,7 +179,7 @@ void SvxLineTabDialog::PageCreated( sal_uInt16 nId, SfxTabPage &rPage )
        static_cast<SvxLineTabPage&>(rPage).Construct();
        static_cast<SvxLineTabPage&>(rPage).SetColorChgd( &mnColorListState );
    }
    else if(nId == m_nStyleTabPage)
    else if (rId == "RID_SVXPAGE_LINE_DEF")
    {
        static_cast<SvxLineDefTabPage&>(rPage).SetDashList( pDashList );
        static_cast<SvxLineDefTabPage&>(rPage).SetDlgType( 0 );
@@ -205,7 +188,7 @@ void SvxLineTabDialog::PageCreated( sal_uInt16 nId, SfxTabPage &rPage )
        static_cast<SvxLineDefTabPage&>(rPage).SetDashChgd( &nDashListState );
        static_cast<SvxLineDefTabPage&>(rPage).Construct();
    }
    else if(nId == m_nEndTabPage)
    else if (rId == "RID_SVXPAGE_LINEEND_DEF")
    {
        static_cast<SvxLineEndDefTabPage&>(rPage).SetLineEndList( pLineEndList );
        static_cast<SvxLineEndDefTabPage&>(rPage).SetPolyObj( pObj );
@@ -215,7 +198,7 @@ void SvxLineTabDialog::PageCreated( sal_uInt16 nId, SfxTabPage &rPage )
        static_cast<SvxLineEndDefTabPage&>(rPage).SetLineEndChgd( &nLineEndListState );
        static_cast<SvxLineEndDefTabPage&>(rPage).Construct();
    }
    else if (nId == m_nShadowTabPage)
    else if (rId == "RID_SVXPAGE_SHADOW")
    {
        static_cast<SvxShadowTabPage&>(rPage).SetColorList( pColorList );
        static_cast<SvxShadowTabPage&>(rPage).SetPageType( nPageType );
diff --git a/cui/source/tabpages/tpline.cxx b/cui/source/tabpages/tpline.cxx
index 0533895..eb6a22d3 100644
--- a/cui/source/tabpages/tpline.cxx
+++ b/cui/source/tabpages/tpline.cxx
@@ -71,7 +71,7 @@ const sal_uInt16 SvxLineTabPage::pLineRanges[] =
};

SvxLineTabPage::SvxLineTabPage(TabPageParent pParent, const SfxItemSet& rInAttrs)
    : SfxTabPage(pParent, "cui/ui/linetabpage.ui", "SvxLineTabPage", &rInAttrs)
    : SfxTabPage(pParent, "cui/ui/linetabpage.ui", "LineTabPage", &rInAttrs)
    , m_pSymbolList(nullptr)
    , m_bNewSize(false)
    , m_nNumMenuGalleryItems(0)
@@ -258,7 +258,7 @@ void SvxLineTabPage::ActivatePage( const SfxItemSet& rSet )
            ( *m_pnDashListState & ChangeType::CHANGED ) )
        {
            if( *m_pnDashListState & ChangeType::CHANGED )
                m_pDashList = static_cast<SvxLineTabDialog*>( GetParentDialog() )->GetNewDashList();
                m_pDashList = static_cast<SvxLineTabDialog*>(GetDialogController() )->GetNewDashList();

            *m_pnDashListState = ChangeType::NONE;

@@ -287,7 +287,7 @@ void SvxLineTabPage::ActivatePage( const SfxItemSet& rSet )
        if( ( *m_pnLineEndListState & ChangeType::MODIFIED ) || ( *m_pnLineEndListState & ChangeType::CHANGED ) )
        {
            if( *m_pnLineEndListState & ChangeType::CHANGED )
                m_pLineEndList = static_cast<SvxLineTabDialog*>( GetParentDialog() )->GetNewLineEndList();
                m_pLineEndList = static_cast<SvxLineTabDialog*>(GetDialogController())->GetNewLineEndList();

            *m_pnLineEndListState = ChangeType::NONE;

@@ -342,7 +342,7 @@ void SvxLineTabPage::ActivatePage( const SfxItemSet& rSet )
            if( *m_pnColorListState != ChangeType::NONE )
            {
                if( *m_pnColorListState & ChangeType::CHANGED )
                    m_pColorList = static_cast<SvxLineTabDialog*>( GetParentDialog() )->GetNewColorList();
                    m_pColorList = static_cast<SvxLineTabDialog*>(GetDialogController())->GetNewColorList();

                ChangePreviewHdl_Impl( nullptr );
            }
diff --git a/cui/source/tabpages/tplnedef.cxx b/cui/source/tabpages/tplnedef.cxx
index bdc61de..7a30638 100644
--- a/cui/source/tabpages/tplnedef.cxx
+++ b/cui/source/tabpages/tplnedef.cxx
@@ -698,7 +698,7 @@ IMPL_LINK_NOARG(SvxLineDefTabPage, ClickLoadHdl_Impl, weld::Button&, void)
            if( pDshLst->Load() )
            {
                pDashList = pDshLst;
                static_cast<SvxLineTabDialog*>( GetParentDialog() )->SetNewDashList( pDashList );
                static_cast<SvxLineTabDialog*>(GetDialogController())->SetNewDashList( pDashList );

                m_xLbLineStyles->clear();
                m_xLbLineStyles->Fill( pDashList );
diff --git a/cui/source/tabpages/tplneend.cxx b/cui/source/tabpages/tplneend.cxx
index 4222266..38f42d5 100644
--- a/cui/source/tabpages/tplneend.cxx
+++ b/cui/source/tabpages/tplneend.cxx
@@ -536,7 +536,7 @@ IMPL_LINK_NOARG(SvxLineEndDefTabPage, ClickLoadHdl_Impl, weld::Button&, void)
            if( pLeList->Load() )
            {
                pLineEndList = pLeList;
                static_cast<SvxLineTabDialog*>( GetParentDialog() )->SetNewLineEndList( pLineEndList );
                static_cast<SvxLineTabDialog*>(GetDialogController())->SetNewLineEndList( pLineEndList );
                m_xLbLineEnds->clear();
                m_xLbLineEnds->Fill( pLineEndList );
                Reset( &rOutAttrs );
diff --git a/cui/uiconfig/ui/linedialog.ui b/cui/uiconfig/ui/linedialog.ui
index 8288ec6..e962c24 100644
--- a/cui/uiconfig/ui/linedialog.ui
+++ b/cui/uiconfig/ui/linedialog.ui
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.20.0 -->
<!-- Generated with glade 3.22.1 -->
<interface domain="cui">
  <requires lib="gtk+" version="3.18"/>
  <object class="GtkDialog" id="LineDialog">
@@ -7,7 +7,13 @@
    <property name="border_width">6</property>
    <property name="title" translatable="yes" context="linedialog|LineDialog">Line</property>
    <property name="resizable">False</property>
    <property name="modal">True</property>
    <property name="default_width">0</property>
    <property name="default_height">0</property>
    <property name="type_hint">dialog</property>
    <child>
      <placeholder/>
    </child>
    <child internal-child="vbox">
      <object class="GtkBox" id="dialog-vbox1">
        <property name="can_focus">False</property>
@@ -18,6 +24,20 @@
            <property name="can_focus">False</property>
            <property name="layout_style">end</property>
            <child>
              <object class="GtkButton" id="reset">
                <property name="label">gtk-revert-to-saved</property>
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="receives_default">True</property>
                <property name="use_stock">True</property>
              </object>
              <packing>
                <property name="expand">False</property>
                <property name="fill">True</property>
                <property name="position">0</property>
              </packing>
            </child>
            <child>
              <object class="GtkButton" id="ok">
                <property name="label">gtk-ok</property>
                <property name="visible">True</property>
@@ -30,7 +50,7 @@
              <packing>
                <property name="expand">False</property>
                <property name="fill">True</property>
                <property name="position">0</property>
                <property name="position">1</property>
              </packing>
            </child>
            <child>
@@ -44,7 +64,7 @@
              <packing>
                <property name="expand">False</property>
                <property name="fill">True</property>
                <property name="position">1</property>
                <property name="position">2</property>
              </packing>
            </child>
            <child>
@@ -58,22 +78,8 @@
              <packing>
                <property name="expand">False</property>
                <property name="fill">True</property>
                <property name="position">2</property>
                <property name="secondary">True</property>
              </packing>
            </child>
            <child>
              <object class="GtkButton" id="reset">
                <property name="label">gtk-revert-to-saved</property>
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="receives_default">True</property>
                <property name="use_stock">True</property>
              </object>
              <packing>
                <property name="expand">False</property>
                <property name="fill">True</property>
                <property name="position">3</property>
                <property name="secondary">True</property>
              </packing>
            </child>
          </object>
@@ -90,6 +96,7 @@
            <property name="can_focus">False</property>
            <property name="hexpand">True</property>
            <property name="vexpand">True</property>
            <property name="scrollable">True</property>
            <child>
              <object class="GtkGrid">
                <property name="visible">True</property>
@@ -97,6 +104,30 @@
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
              </object>
            </child>
            <child type="tab">
@@ -116,6 +147,30 @@
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
              </object>
              <packing>
                <property name="position">1</property>
@@ -139,6 +194,30 @@
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
              </object>
              <packing>
                <property name="position">2</property>
@@ -162,6 +241,30 @@
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
                <child>
                  <placeholder/>
                </child>
              </object>
              <packing>
                <property name="position">3</property>
@@ -188,10 +291,10 @@
      </object>
    </child>
    <action-widgets>
      <action-widget response="0">reset</action-widget>
      <action-widget response="-5">ok</action-widget>
      <action-widget response="-6">cancel</action-widget>
      <action-widget response="-11">help</action-widget>
      <action-widget response="0">reset</action-widget>
    </action-widgets>
  </object>
</interface>
diff --git a/cui/uiconfig/ui/lineendstabpage.ui b/cui/uiconfig/ui/lineendstabpage.ui
index 8423d30d..b41fb004 100644
--- a/cui/uiconfig/ui/lineendstabpage.ui
+++ b/cui/uiconfig/ui/lineendstabpage.ui
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
<interface domain="cui">
  <requires lib="gtk+" version="3.0"/>
  <requires lib="gtk+" version="3.18"/>
  <object class="GtkImage" id="image1">
    <property name="visible">True</property>
    <property name="can_focus">False</property>
@@ -20,6 +20,8 @@
      <column type="gchararray"/>
      <!-- column-name image -->
      <column type="GdkPixbuf"/>
       <!-- column-name surface -->
      <column type="CairoSurface"/>
    </columns>
  </object>
  <object class="GtkFrame" id="LineEndPage">
@@ -108,6 +110,18 @@
                        <property name="halign">start</property>
                        <property name="model">liststore4</property>
                        <property name="id_column">1</property>
                        <child>
                          <object class="GtkCellRendererText" id="cellrenderertext3"/>
                          <attributes>
                            <attribute name="text">0</attribute>
                          </attributes>
                        </child>
                        <child>
                          <object class="GtkCellRendererPixbuf" id="cellrenderertext4"/>
                          <attributes>
                            <attribute name="surface">3</attribute>
                          </attributes>
                        </child>
                      </object>
                      <packing>
                        <property name="left_attach">1</property>
@@ -193,6 +207,7 @@
                        <property name="can_focus">False</property>
                        <property name="row_spacing">6</property>
                        <property name="column_spacing">6</property>
                        <property name="column_homogeneous">True</property>
                        <child>
                          <object class="GtkButton" id="BTN_LOAD">
                            <property name="visible">True</property>
@@ -201,7 +216,6 @@
                            <property name="has_tooltip">True</property>
                            <property name="tooltip_text" translatable="yes" context="lineendstabpage|BTN_LOAD|tooltip_text">Load arrow styles</property>
                            <property name="halign">center</property>
                            <property name="hexpand">True</property>
                            <property name="image">image1</property>
                          </object>
                          <packing>
@@ -217,7 +231,6 @@
                            <property name="has_tooltip">True</property>
                            <property name="tooltip_text" translatable="yes" context="lineendstabpage|BTN_SAVE|tooltip_text">Save arrow styles</property>
                            <property name="halign">center</property>
                            <property name="hexpand">True</property>
                            <property name="image">image2</property>
                          </object>
                          <packing>
diff --git a/cui/uiconfig/ui/linestyletabpage.ui b/cui/uiconfig/ui/linestyletabpage.ui
index 39537e1..8d47fab 100644
--- a/cui/uiconfig/ui/linestyletabpage.ui
+++ b/cui/uiconfig/ui/linestyletabpage.ui
@@ -7,11 +7,26 @@
    <property name="step_increment">0.10000000000000001</property>
    <property name="page_increment">1</property>
  </object>
  <object class="GtkAdjustment" id="adjustmentDIST1">
    <property name="upper">5</property>
    <property name="step_increment">0.10000000000000001</property>
    <property name="page_increment">1</property>
  </object>
  <object class="GtkAdjustment" id="adjustmentDIST2">
    <property name="upper">5</property>
    <property name="step_increment">0.10000000000000001</property>
    <property name="page_increment">1</property>
  </object>
  <object class="GtkAdjustment" id="adjustmentNUM">
    <property name="upper">99</property>
    <property name="step_increment">1</property>
    <property name="page_increment">10</property>
  </object>
  <object class="GtkAdjustment" id="adjustmentNUM1">
    <property name="upper">99</property>
    <property name="step_increment">1</property>
    <property name="page_increment">10</property>
  </object>
  <object class="GtkImage" id="image1">
    <property name="visible">True</property>
    <property name="can_focus">False</property>
@@ -30,6 +45,8 @@
      <column type="gchararray"/>
      <!-- column-name image -->
      <column type="GdkPixbuf"/>
      <!-- column-name surface -->
      <column type="CairoSurface"/>
    </columns>
  </object>
  <object class="GtkFrame" id="LineStylePage">
@@ -97,7 +114,20 @@
                            <property name="can_focus">False</property>
                            <property name="halign">start</property>
                            <property name="model">liststore4</property>
                            <property name="active">0</property>
                            <property name="id_column">1</property>
                            <child>
                              <object class="GtkCellRendererText" id="cellrenderertext3"/>
                              <attributes>
                                <attribute name="text">0</attribute>
                              </attributes>
                            </child>
                            <child>
                              <object class="GtkCellRendererPixbuf" id="cellrenderertext4"/>
                              <attributes>
                                <attribute name="surface">3</attribute>
                              </attributes>
                            </child>
                          </object>
                          <packing>
                            <property name="expand">False</property>
@@ -116,6 +146,8 @@
                      <object class="GtkGrid" id="grid1">
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="hexpand">True</property>
                        <property name="vexpand">True</property>
                        <property name="row_spacing">6</property>
                        <property name="column_spacing">12</property>
                        <child>
@@ -193,6 +225,7 @@
                          <object class="GtkComboBoxText" id="LB_TYPE_1">
                            <property name="visible">True</property>
                            <property name="can_focus">False</property>
                            <property name="active">1</property>
                            <items>
                              <item translatable="yes" context="linestyletabpage|liststoreTYPE">Dots</item>
                              <item translatable="yes" context="linestyletabpage|liststoreTYPE">Dash</item>
@@ -207,6 +240,7 @@
                          <object class="GtkComboBoxText" id="LB_TYPE_2">
                            <property name="visible">True</property>
                            <property name="can_focus">False</property>
                            <property name="active">1</property>
                            <items>
                              <item translatable="yes" context="linestyletabpage|liststoreTYPE">Dots</item>
                              <item translatable="yes" context="linestyletabpage|liststoreTYPE">Dash</item>
@@ -234,7 +268,7 @@
                            <property name="visible">True</property>
                            <property name="can_focus">True</property>
                            <property name="activates_default">True</property>
                            <property name="adjustment">adjustmentNUM</property>
                            <property name="adjustment">adjustmentNUM1</property>
                          </object>
                          <packing>
                            <property name="left_attach">2</property>
@@ -259,7 +293,7 @@
                            <property name="visible">True</property>
                            <property name="can_focus">True</property>
                            <property name="activates_default">True</property>
                            <property name="adjustment">adjustmentDIST</property>
                            <property name="adjustment">adjustmentDIST1</property>
                            <property name="digits">2</property>
                          </object>
                          <packing>
@@ -272,7 +306,7 @@
                            <property name="visible">True</property>
                            <property name="can_focus">True</property>
                            <property name="activates_default">True</property>
                            <property name="adjustment">adjustmentDIST</property>
                            <property name="adjustment">adjustmentDIST2</property>
                            <property name="digits">2</property>
                          </object>
                          <packing>
@@ -361,6 +395,7 @@
                        <property name="can_focus">False</property>
                        <property name="row_spacing">6</property>
                        <property name="column_spacing">6</property>
                        <property name="column_homogeneous">True</property>
                        <child>
                          <object class="GtkButton" id="BTN_LOAD">
                            <property name="visible">True</property>
@@ -369,7 +404,6 @@
                            <property name="has_tooltip">True</property>
                            <property name="tooltip_text" translatable="yes" context="linestyletabpage|BTN_LOAD|tooltip_text">Load Line Styles</property>
                            <property name="halign">center</property>
                            <property name="hexpand">True</property>
                            <property name="image">image1</property>
                          </object>
                          <packing>
@@ -385,7 +419,6 @@
                            <property name="has_tooltip">True</property>
                            <property name="tooltip_text" translatable="yes" context="linestyletabpage|BTN_SAVE|tooltip_text">Save Line Styles</property>
                            <property name="halign">center</property>
                            <property name="hexpand">True</property>
                            <property name="image">image2</property>
                          </object>
                          <packing>
diff --git a/cui/uiconfig/ui/linetabpage.ui b/cui/uiconfig/ui/linetabpage.ui
index b7594c3..f6e7ec4 100644
--- a/cui/uiconfig/ui/linetabpage.ui
+++ b/cui/uiconfig/ui/linetabpage.ui
@@ -40,6 +40,8 @@
      <column type="gchararray"/>
      <!-- column-name image -->
      <column type="GdkPixbuf"/>
      <!-- column-name surface -->
      <column type="CairoSurface"/>
    </columns>
  </object>
  <object class="GtkListStore" id="liststore5">
@@ -50,6 +52,8 @@
      <column type="gchararray"/>
      <!-- column-name image -->
      <column type="GdkPixbuf"/>
      <!-- column-name surface -->
      <column type="CairoSurface"/>
    </columns>
  </object>
  <object class="GtkListStore" id="liststore6">
@@ -60,6 +64,8 @@
      <column type="gchararray"/>
      <!-- column-name image -->
      <column type="GdkPixbuf"/>
      <!-- column-name surface -->
      <column type="CairoSurface"/>
    </columns>
  </object>
  <object class="GtkMenu" id="menuSELECT">
@@ -121,6 +127,8 @@
  <object class="GtkBox" id="LineTabPage">
    <property name="visible">True</property>
    <property name="can_focus">False</property>
    <property name="hexpand">True</property>
    <property name="vexpand">True</property>
    <property name="border_width">6</property>
    <property name="orientation">vertical</property>
    <property name="spacing">6</property>
@@ -174,6 +182,18 @@
                            <property name="can_focus">False</property>
                            <property name="model">liststore5</property>
                            <property name="id_column">1</property>
                            <child>
                              <object class="GtkCellRendererText" id="cellrenderertext7"/>
                              <attributes>
                                <attribute name="text">0</attribute>
                              </attributes>
                            </child>
                            <child>
                              <object class="GtkCellRendererPixbuf" id="cellrenderertext11"/>
                              <attributes>
                                <attribute name="surface">3</attribute>
                              </attributes>
                            </child>
                          </object>
                          <packing>
                            <property name="expand">False</property>
@@ -384,6 +404,18 @@
                                <property name="can_focus">False</property>
                                <property name="model">liststore4</property>
                                <property name="id_column">1</property>
                                <child>
                                  <object class="GtkCellRendererText" id="cellrenderertext1"/>
                                  <attributes>
                                    <attribute name="text">0</attribute>
                                  </attributes>
                                </child>
                                <child>
                                  <object class="GtkCellRendererPixbuf" id="cellrenderertext2"/>
                                  <attributes>
                                    <attribute name="surface">3</attribute>
                                  </attributes>
                                </child>
                              </object>
                              <packing>
                                <property name="left_attach">0</property>
@@ -394,8 +426,20 @@
                              <object class="GtkComboBox" id="LB_END_STYLE">
                                <property name="visible">True</property>
                                <property name="can_focus">False</property>
                                <property name="model">liststore5</property>
                                <property name="model">liststore6</property>
                                <property name="id_column">1</property>
                                <child>
                                  <object class="GtkCellRendererText" id="cellrenderertext3"/>
                                  <attributes>
                                    <attribute name="text">0</attribute>
                                  </attributes>
                                </child>
                                <child>
                                  <object class="GtkCellRendererPixbuf" id="cellrenderertext4"/>
                                  <attributes>
                                    <attribute name="surface">3</attribute>
                                  </attributes>
                                </child>
                              </object>
                              <packing>
                                <property name="left_attach">1</property>
diff --git a/cui/uiconfig/ui/numberingformatpage.ui b/cui/uiconfig/ui/numberingformatpage.ui
index b0a50e6..060a02b 100644
--- a/cui/uiconfig/ui/numberingformatpage.ui
+++ b/cui/uiconfig/ui/numberingformatpage.ui
@@ -81,6 +81,8 @@
      <column type="gchararray"/>
      <!-- column-name image -->
      <column type="GdkPixbuf"/>
      <!-- column-name image -->
      <column type="CairoSurface"/>
      <!-- column-name textcolor -->
      <column type="GdkRGBA"/>
    </columns>
@@ -554,7 +556,7 @@
                                  <object class="GtkCellRendererText" id="cellrenderertext2"/>
                                  <attributes>
                                    <attribute name="text">0</attribute>
                                    <attribute name="foreground-rgba">3</attribute>
                                    <attribute name="foreground-rgba">4</attribute>
                                  </attributes>
                                </child>
                              </object>
diff --git a/include/svx/svxdlg.hxx b/include/svx/svxdlg.hxx
index 92e57de..afef5d3 100644
--- a/include/svx/svxdlg.hxx
+++ b/include/svx/svxdlg.hxx
@@ -429,7 +429,7 @@ public:
                                                                          const SfxItemSet* pAttr,
                                                                          SdrModel* pModel,
                                                                          bool bShadow) = 0 ;
    virtual VclPtr<SfxAbstractTabDialog>           CreateSvxLineTabDialog( vcl::Window* pParent, const SfxItemSet* pAttr, //add forSvxLineTabDialog
    virtual VclPtr<SfxAbstractTabDialog>           CreateSvxLineTabDialog(weld::Window* pParent, const SfxItemSet* pAttr, //add forSvxLineTabDialog
                                                                 SdrModel* pModel,
                                                                 const SdrObject* pObj,
                                                                 bool bHasObj )=0;
diff --git a/sc/source/ui/drawfunc/drawsh.cxx b/sc/source/ui/drawfunc/drawsh.cxx
index 95cba625..24ccaca 100644
--- a/sc/source/ui/drawfunc/drawsh.cxx
+++ b/sc/source/ui/drawfunc/drawsh.cxx
@@ -387,7 +387,7 @@ void ScDrawShell::ExecuteLineDlg( SfxRequest& rReq )
        pView->MergeAttrFromMarked( aNewAttr, false );

    SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
    ScopedVclPtr<SfxAbstractTabDialog> pDlg(pFact->CreateSvxLineTabDialog( pViewData->GetDialogParent(),
    ScopedVclPtr<SfxAbstractTabDialog> pDlg(pFact->CreateSvxLineTabDialog( pViewData->GetFrameWeld(),
                &aNewAttr,
            pViewData->GetDocument()->GetDrawLayer(),
            pObj,
diff --git a/sd/source/ui/animations/CustomAnimationPane.cxx b/sd/source/ui/animations/CustomAnimationPane.cxx
index 8277c46..418e006 100644
--- a/sd/source/ui/animations/CustomAnimationPane.cxx
+++ b/sd/source/ui/animations/CustomAnimationPane.cxx
@@ -1677,6 +1677,7 @@ void CustomAnimationPane::showOptions(const OString& sPage)
                    changeSelection( pDlg->getResultSet(), pDlg->getPropertySet() );
                    updateControls();
                }
                pDlg->disposeOnce();
            });
}

diff --git a/sd/source/ui/func/fuline.cxx b/sd/source/ui/func/fuline.cxx
index 9735040..819995a 100644
--- a/sd/source/ui/func/fuline.cxx
+++ b/sd/source/ui/func/fuline.cxx
@@ -75,7 +75,7 @@ void FuLine::DoExecute( SfxRequest& rReq )

    bool bHasMarked = mpView->AreObjectsMarked();
    SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
    VclPtr<SfxAbstractTabDialog> pDlg( pFact->CreateSvxLineTabDialog(mpViewShell->GetActiveWindow(), pNewAttr.get(), mpDoc, pObj, bHasMarked) );
    VclPtr<SfxAbstractTabDialog> pDlg( pFact->CreateSvxLineTabDialog(mpViewShell->GetFrameWeld(), pNewAttr.get(), mpDoc, pObj, bHasMarked) );

    pDlg->StartExecuteAsync([=](sal_Int32 nResult){
        if (nResult == RET_OK)
@@ -100,6 +100,8 @@ void FuLine::DoExecute( SfxRequest& rReq )

        // deferred until the dialog ends
        mpViewShell->Cancel();

        pDlg->disposeOnce();
    });
}

diff --git a/svx/source/dialog/dlgctrl.cxx b/svx/source/dialog/dlgctrl.cxx
index 7d30144..5cdff4d 100644
--- a/svx/source/dialog/dlgctrl.cxx
+++ b/svx/source/dialog/dlgctrl.cxx
@@ -1150,7 +1150,7 @@ void SvxLineEndLB::Fill( const XLineEndListRef &pList, bool bStart )
        {
            const Size aBmpSize(aBitmap.GetSizePixel());
            pVD->SetOutputSizePixel(Size(aBmpSize.Width() / 2, aBmpSize.Height()), false);
            pVD->DrawBitmapEx(bStart ? Point() : Point(aBmpSize.Width() / 2, 0), aBitmap);
            pVD->DrawBitmapEx(bStart ? Point() : Point(-aBmpSize.Width() / 2, 0), aBitmap);
            m_xControl->append("", pEntry->GetName(), *pVD);
        }
        else
@@ -1167,8 +1167,8 @@ void SvxLineEndLB::Append( const XLineEndEntry& rEntry, const BitmapEx& rBitmap 
        ScopedVclPtrInstance< VirtualDevice > pVD;

        const Size aBmpSize(rBitmap.GetSizePixel());
        pVD->SetOutputSizePixel(Size(aBmpSize.Width() / 2, aBmpSize.Height() / 2), false);
        pVD->DrawBitmapEx(Point(aBmpSize.Width() / 2, 0), rBitmap);
        pVD->SetOutputSizePixel(Size(aBmpSize.Width() / 2, aBmpSize.Height()), false);
        pVD->DrawBitmapEx(Point(-aBmpSize.Width() / 2, 0), rBitmap);
        m_xControl->append("", rEntry.GetName(), *pVD);
    }
    else
@@ -1186,8 +1186,8 @@ void SvxLineEndLB::Modify( const XLineEndEntry& rEntry, sal_Int32 nPos, const Bi
        ScopedVclPtrInstance< VirtualDevice > pVD;

        const Size aBmpSize(rBitmap.GetSizePixel());
        pVD->SetOutputSizePixel(Size(aBmpSize.Width() / 2, aBmpSize.Height() / 2), false);
        pVD->DrawBitmapEx(Point(aBmpSize.Width() / 2, 0), rBitmap);
        pVD->SetOutputSizePixel(Size(aBmpSize.Width() / 2, aBmpSize.Height()), false);
        pVD->DrawBitmapEx(Point(-aBmpSize.Width() / 2, 0), rBitmap);
        m_xControl->insert(nPos, "", rEntry.GetName(), nullptr, pVD);
    }
    else
diff --git a/sw/source/uibase/shells/drawdlg.cxx b/sw/source/uibase/shells/drawdlg.cxx
index 132568f..71fb6b1 100644
--- a/sw/source/uibase/shells/drawdlg.cxx
+++ b/sw/source/uibase/shells/drawdlg.cxx
@@ -133,7 +133,7 @@ void SwDrawShell::ExecDrawDlg(SfxRequest& rReq)
                pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();

            SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
            ScopedVclPtr<SfxAbstractTabDialog> pDlg(pFact->CreateSvxLineTabDialog( nullptr,
            ScopedVclPtr<SfxAbstractTabDialog> pDlg(pFact->CreateSvxLineTabDialog(rReq.GetFrameWeld(),
                    &aNewAttr,
                pDoc,
                pObj,
diff --git a/vcl/source/gdi/virdev.cxx b/vcl/source/gdi/virdev.cxx
index 8d97085f0..e0dc6ee 100644
--- a/vcl/source/gdi/virdev.cxx
+++ b/vcl/source/gdi/virdev.cxx
@@ -283,7 +283,7 @@ bool VirtualDevice::InnerImplSetOutputSizePixel( const Size& rNewSize, bool bEra
    {
        if ( bErase )
            Erase();
        SAL_WARN( "vcl.virdev", "Trying to re-use a VirtualDevice but this time using a pre-allocated buffer");
        SAL_INFO( "vcl.virdev", "Trying to re-use a VirtualDevice but this time using a pre-allocated buffer");
        return true;
    }

diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 2c6a6ef..ada8948 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -2794,9 +2794,10 @@ namespace
    {
        Size aSize(rDevice.GetOutputSizePixel());
        cairo_surface_t* surface = get_underlying_cairo_surface(rDevice);
        return gdk_pixbuf_get_from_surface(surface, 0, 0, aSize.Width(), aSize.Height());
        double m_fXScale, m_fYScale;
        cairo_surface_get_device_scale(surface, &m_fXScale, &m_fYScale);
        return gdk_pixbuf_get_from_surface(surface, 0, 0, aSize.Width() * m_fXScale, aSize.Height() * m_fYScale);
    }

}

class GtkInstanceButton : public GtkInstanceContainer, public virtual weld::Button
@@ -3676,10 +3677,10 @@ namespace
        }
        else
        {
            GdkPixbuf* pixbuf = nullptr;

            if (pIconName)
            {
                GdkPixbuf* pixbuf = nullptr;

                if (pIconName->lastIndexOf('.') != pIconName->getLength() - 4)
                {
                    assert((*pIconName== "dialog-warning" || *pIconName== "dialog-error" ||*pIconName== "dialog-information") &&
@@ -3697,20 +3698,38 @@ namespace
                                               rSettings.GetStyleSettings().DetermineIconTheme(),
                                               rSettings.GetUILanguageTag().getBcp47());
                }

                gtk_list_store_set(pListStore, &iter,
                        0, OUStringToOString(rText, RTL_TEXTENCODING_UTF8).getStr(),
                        1, OUStringToOString(rId, RTL_TEXTENCODING_UTF8).getStr(),
                        2, pixbuf,
                        -1);

                if (pixbuf)
                    g_object_unref(pixbuf);
            }
            else
            {
                pixbuf = load_icon_from_surface(*pDevice);
                cairo_surface_t* surface = get_underlying_cairo_surface(*pDevice);

                Size aSize(pDevice->GetOutputSizePixel());
                cairo_surface_t* target = cairo_surface_create_similar(surface,
                                                                        cairo_surface_get_content(surface),
                                                                        aSize.Width(),
                                                                        aSize.Height());

                cairo_t* cr = cairo_create(target);
                cairo_set_source_surface(cr, surface, 0, 0);
                cairo_paint(cr);
                cairo_destroy(cr);

                gtk_list_store_set(pListStore, &iter,
                        0, OUStringToOString(rText, RTL_TEXTENCODING_UTF8).getStr(),
                        1, OUStringToOString(rId, RTL_TEXTENCODING_UTF8).getStr(),
                        3, target,
                        -1);
                cairo_surface_destroy(target);
            }

            gtk_list_store_set(pListStore, &iter,
                    0, OUStringToOString(rText, RTL_TEXTENCODING_UTF8).getStr(),
                    1, OUStringToOString(rId, RTL_TEXTENCODING_UTF8).getStr(),
                    2, pixbuf,
                    -1);

            if (pixbuf)
                g_object_unref(pixbuf);
        }
    }
}