[Libreoffice-commits] core.git: chart2/source cui/source cui/uiconfig include/svx sc/source sd/source svx/source sw/source vcl/source vcl/unx

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Tue Oct 2 07:59:05 UTC 2018


 chart2/source/controller/main/ShapeController.cxx |    4 
 cui/source/factory/dlgfact.cxx                    |   10 +
 cui/source/factory/dlgfact.hxx                    |    5 
 cui/source/inc/cuitabline.hxx                     |   31 ++---
 cui/source/tabpages/tabline.cxx                   |   81 +++++--------
 cui/source/tabpages/tpline.cxx                    |    8 -
 cui/source/tabpages/tplnedef.cxx                  |    2 
 cui/source/tabpages/tplneend.cxx                  |    2 
 cui/uiconfig/ui/linedialog.ui                     |  129 +++++++++++++++++++---
 cui/uiconfig/ui/lineendstabpage.ui                |   19 ++-
 cui/uiconfig/ui/linestyletabpage.ui               |   43 ++++++-
 cui/uiconfig/ui/linetabpage.ui                    |   46 +++++++
 cui/uiconfig/ui/numberingformatpage.ui            |    4 
 include/svx/svxdlg.hxx                            |    2 
 sc/source/ui/drawfunc/drawsh.cxx                  |    2 
 sd/source/ui/animations/CustomAnimationPane.cxx   |    1 
 sd/source/ui/func/fuline.cxx                      |    4 
 svx/source/dialog/dlgctrl.cxx                     |   10 -
 sw/source/uibase/shells/drawdlg.cxx               |    2 
 vcl/source/gdi/virdev.cxx                         |    2 
 vcl/unx/gtk3/gtk3gtkinst.cxx                      |   47 +++++---
 21 files changed, 327 insertions(+), 127 deletions(-)

New commits:
commit 3c80f4880d0d3a8f7c71d76877efe234f4f3629c
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Mon Oct 1 14:12:24 2018 +0100
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Tue Oct 2 09:58:41 2018 +0200

    weld SvxLineTabDialog
    
    Change-Id: Icb13a6eb2e8c6f6dbd3cf477051bc0bd682e2e7a
    Reviewed-on: https://gerrit.libreoffice.org/61193
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/chart2/source/controller/main/ShapeController.cxx b/chart2/source/controller/main/ShapeController.cxx
index 1c082d84505b..69d7d4be56a4 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 0c024e2f8079..a49f2b240952 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 505ff1481b96..ba317dd531c8 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 36edebfd8330..53430d0967ad 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 526886134a4b..df1b6a3ba9d9 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 053389519570..eb6a22d3288d 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 bdc61de0d594..7a3063896738 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 4222266e3656..38f42d51d71b 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 8288ec6491bf..e962c2482ede 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,12 +24,10 @@
             <property name="can_focus">False</property>
             <property name="layout_style">end</property>
             <child>
-              <object class="GtkButton" id="ok">
-                <property name="label">gtk-ok</property>
+              <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="can_default">True</property>
-                <property name="has_default">True</property>
                 <property name="receives_default">True</property>
                 <property name="use_stock">True</property>
               </object>
@@ -34,10 +38,12 @@
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="cancel">
-                <property name="label">gtk-cancel</property>
+              <object class="GtkButton" id="ok">
+                <property name="label">gtk-ok</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
                 <property name="receives_default">True</property>
                 <property name="use_stock">True</property>
               </object>
@@ -48,8 +54,8 @@
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="help">
-                <property name="label">gtk-help</property>
+              <object class="GtkButton" id="cancel">
+                <property name="label">gtk-cancel</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="receives_default">True</property>
@@ -59,12 +65,11 @@
                 <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>
+              <object class="GtkButton" id="help">
+                <property name="label">gtk-help</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="receives_default">True</property>
@@ -74,6 +79,7 @@
                 <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 8423d30df951..b41fb00462e8 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 39537e1dac69..8d47fab49314 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 b7594c38ea82..f6e7ec430155 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 b0a50e63ccf2..060a02b442ab 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 92e57de3bea4..afef5d3ed97c 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 95cba625e577..24ccacac7041 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 8277c4607802..418e006f3ff7 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 9735040321c3..819995a99d59 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 7d3014462fa1..5cdff4da8a07 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 132568fc874e..71fb6b17d4a1 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 8d97085f03b3..e0dc6ee1c201 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 2c6a6ef5580d..ada894820f59 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);
         }
     }
 }


More information about the Libreoffice-commits mailing list