[Libreoffice-commits] core.git: sd/inc sd/qa sd/source sd/uiconfig svx/source

Caolán McNamara caolanm at redhat.com
Fri May 11 20:08:50 UTC 2018


 sd/inc/sdabstdlg.hxx                                   |    2 
 sd/qa/unit/dialogs-test.cxx                            |   13 
 sd/source/ui/dlg/PhotoAlbumDialog.cxx                  |  285 ++++++-----------
 sd/source/ui/dlg/PhotoAlbumDialog.hxx                  |   70 +---
 sd/source/ui/dlg/sddlgfact.cxx                         |   10 
 sd/source/ui/dlg/sddlgfact.hxx                         |   14 
 sd/source/ui/slidesorter/controller/SlsSlotManager.cxx |    3 
 sd/source/ui/view/drviews2.cxx                         |    3 
 sd/source/ui/view/outlnvs2.cxx                         |    3 
 sd/uiconfig/simpress/ui/photoalbum.ui                  |   64 +--
 svx/source/dialog/graphctl.cxx                         |    1 
 11 files changed, 206 insertions(+), 262 deletions(-)

New commits:
commit 850995b2c22db7c3ddbcc8ebfad5bcbc0b01f029
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri May 11 13:56:03 2018 +0100

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

diff --git a/sd/inc/sdabstdlg.hxx b/sd/inc/sdabstdlg.hxx
index babfe9d84baf..27fb17ddd9ed 100644
--- a/sd/inc/sdabstdlg.hxx
+++ b/sd/inc/sdabstdlg.hxx
@@ -206,7 +206,7 @@ public:
     virtual CreateTabPage               GetSdOptionsMiscTabPageCreatorFunc() = 0;
     virtual CreateTabPage               GetSdOptionsSnapTabPageCreatorFunc() = 0;
 
-    virtual VclPtr<VclAbstractDialog> CreateSdPhotoAlbumDialog( vcl::Window* pWindow, SdDrawDocument* pDoc) = 0;
+    virtual VclPtr<VclAbstractDialog> CreateSdPhotoAlbumDialog(weld::Window* pWindow, SdDrawDocument* pDoc) = 0;
 
 protected:
     ~SdAbstractDialogFactory() {}
diff --git a/sd/qa/unit/dialogs-test.cxx b/sd/qa/unit/dialogs-test.cxx
index f926f0be7948..8a2d6603ac55 100644
--- a/sd/qa/unit/dialogs-test.cxx
+++ b/sd/qa/unit/dialogs-test.cxx
@@ -278,7 +278,7 @@ VclPtr<VclAbstractDialog> SdDialogsTest::createDialogByID(sal_uInt32 nID)
         }
         case 1:
         {
-            // CreateBreakDlg(vcl::Window* pWindow, ::sd::DrawView* pDrView, ::sd::DrawDocShell* pShell, sal_uLong nSumActionCount, sal_uLong nObjCount) override;
+            // CreateBreakDlg(weld::Window* pWindow, ::sd::DrawView* pDrView, ::sd::DrawDocShell* pShell, sal_uLong nSumActionCount, sal_uLong nObjCount) override;
             // this dialog requires pDrawView. It does not show much when
             // there is no object selected that can be broken up. For better
             // results it might be necessary to add/select an object that
@@ -397,7 +397,7 @@ VclPtr<VclAbstractDialog> SdDialogsTest::createDialogByID(sal_uInt32 nID)
         }
         case 10:
         {
-            // CreateMorphDlg(vcl::Window* pParent, const SdrObject* pObj1, const SdrObject* pObj2) override;
+            // CreateMorphDlg(weld::Window* pParent, const SdrObject* pObj1, const SdrObject* pObj2) override;
             SdDrawDocument* pDrawDoc = getSdXImpressDocument()->GetDoc();
             CPPUNIT_ASSERT(pDrawDoc);
             SdPage* pSdPage = pDrawDoc->GetSdPage(0, PageKind::Standard);
@@ -542,7 +542,7 @@ VclPtr<VclAbstractDialog> SdDialogsTest::createDialogByID(sal_uInt32 nID)
         }
         case 19:
         {
-            // CreateSdVectorizeDlg(vcl::Window* pParent, const Bitmap& rBmp, ::sd::DrawDocShell* pDocShell) override;
+            // CreateSdVectorizeDlg(weld::Window* pParent, const Bitmap& rBmp, ::sd::DrawDocShell* pDocShell) override;
             // works well with empty Bitmap, but my be nicer with setting one
             Bitmap aEmptyBitmap;
             auto const parent = Application::GetDefDialogParent();
@@ -554,17 +554,18 @@ VclPtr<VclAbstractDialog> SdDialogsTest::createDialogByID(sal_uInt32 nID)
         }
         case 20:
         {
-            // CreateSdPhotoAlbumDialog(vcl::Window* pWindow, SdDrawDocument* pDoc) override;
+            // CreateSdPhotoAlbumDialog(weld::Window* pWindow, SdDrawDocument* pDoc) override;
             SdDrawDocument* pDrawDoc = getSdXImpressDocument()->GetDoc();
             CPPUNIT_ASSERT(pDrawDoc);
+            auto const parent = Application::GetDefDialogParent();
             pRetval = getSdAbstractDialogFactory()->CreateSdPhotoAlbumDialog(
-                Application::GetDefDialogParent(),
+                parent == nullptr ? nullptr : parent->GetFrameWeld(),
                 pDrawDoc);
             break;
         }
         case 21:
         {
-            // CreateMasterLayoutDialog(vcl::Window* pParent, SdDrawDocument* pDoc, SdPage*) override;
+            // CreateMasterLayoutDialog(weld::Window* pParent, SdDrawDocument* pDoc, SdPage*) override;
             SdDrawDocument* pDrawDoc = getSdXImpressDocument()->GetDoc();
             CPPUNIT_ASSERT(pDrawDoc);
             SdPage* pSdPage = pDrawDoc->GetSdPage(0, PageKind::Standard);
diff --git a/sd/source/ui/dlg/PhotoAlbumDialog.cxx b/sd/source/ui/dlg/PhotoAlbumDialog.cxx
index d7af857f86d8..863121b9b201 100644
--- a/sd/source/ui/dlg/PhotoAlbumDialog.cxx
+++ b/sd/source/ui/dlg/PhotoAlbumDialog.cxx
@@ -39,106 +39,80 @@
 namespace sd
 {
 
-SdPhotoAlbumDialog::SdPhotoAlbumDialog(vcl::Window* pWindow, SdDrawDocument* pActDoc)
-: ModalDialog(pWindow, "PhotoAlbumCreatorDialog", "modules/simpress/ui/photoalbum.ui"),
-  pDoc(pActDoc)
+SdPhotoAlbumDialog::SdPhotoAlbumDialog(weld::Window* pWindow, SdDrawDocument* pActDoc)
+    : GenericDialogController(pWindow, "modules/simpress/ui/photoalbum.ui", "PhotoAlbumCreatorDialog")
+    , m_pDoc(pActDoc)
+    , m_xCancelBtn(m_xBuilder->weld_button("cancel"))
+    , m_xCreateBtn(m_xBuilder->weld_button("ok"))
+    , m_xAddBtn(m_xBuilder->weld_button("add_btn"))
+    , m_xUpBtn(m_xBuilder->weld_button("up_btn"))
+    , m_xDownBtn(m_xBuilder->weld_button("down_btn"))
+    , m_xRemoveBtn(m_xBuilder->weld_button("rem_btn"))
+    , m_xImagesLst(m_xBuilder->weld_tree_view("images_tree"))
+    , m_xImg(new SvxGraphCtrl(*m_xBuilder, "preview_img"))
+    , m_xInsTypeCombo(m_xBuilder->weld_combo_box_text("opt_combo"))
+    , m_xASRCheck(m_xBuilder->weld_check_button("asr_check"))
+    , m_xASRCheckCrop(m_xBuilder->weld_check_button("asr_check_crop"))
+    , m_xCapCheck(m_xBuilder->weld_check_button("cap_check"))
+    , m_xInsertAsLinkCheck(m_xBuilder->weld_check_button("insert_as_link_check"))
 {
-    get(pCancelBtn, "cancel");
-    get(pCreateBtn, "ok");
-
-    get(pAddBtn, "add_btn");
-    get(pUpBtn, "up_btn");
-    get(pDownBtn, "down_btn");
-    get(pRemoveBtn, "rem_btn");
-
-    get(pImagesLst, "images_tree");
-    get(pImg, "preview_img");
-
-    get(pInsTypeCombo, "opt_combo");
-    get(pASRCheck, "asr_check");
-    get(pASRCheckCrop, "asr_check_crop");
-    get(pCapCheck, "cap_check");
-    get(pInsertAsLinkCheck, "insert_as_link_check");
-
-    pCancelBtn->SetClickHdl(LINK(this, SdPhotoAlbumDialog, CancelHdl));
-    pCreateBtn->SetClickHdl(LINK(this, SdPhotoAlbumDialog, CreateHdl));
-
-    pAddBtn->SetClickHdl(LINK(this, SdPhotoAlbumDialog, FileHdl));
-    pUpBtn->SetClickHdl(LINK(this, SdPhotoAlbumDialog, UpHdl));
-    pUpBtn->Disable();
-    pDownBtn->SetClickHdl(LINK(this, SdPhotoAlbumDialog, DownHdl));
-    pDownBtn->Disable();
-    pRemoveBtn->SetClickHdl(LINK(this, SdPhotoAlbumDialog, RemoveHdl));
-    pRemoveBtn->Disable();
-    pImagesLst->SetSelectHdl(LINK(this, SdPhotoAlbumDialog, SelectHdl));
-    pInsTypeCombo->SetSelectHdl(LINK(this, SdPhotoAlbumDialog, TypeSelectHdl));
-
-    mpGraphicFilter = new GraphicFilter;
-    pAddBtn->GrabFocus();
-    pImagesLst->Clear();
+    m_xCancelBtn->connect_clicked(LINK(this, SdPhotoAlbumDialog, CancelHdl));
+    m_xCreateBtn->connect_clicked(LINK(this, SdPhotoAlbumDialog, CreateHdl));
+
+    m_xAddBtn->connect_clicked(LINK(this, SdPhotoAlbumDialog, FileHdl));
+    m_xUpBtn->connect_clicked(LINK(this, SdPhotoAlbumDialog, UpHdl));
+    m_xUpBtn->set_sensitive(false);
+    m_xDownBtn->connect_clicked(LINK(this, SdPhotoAlbumDialog, DownHdl));
+    m_xDownBtn->set_sensitive(false);
+    m_xRemoveBtn->connect_clicked(LINK(this, SdPhotoAlbumDialog, RemoveHdl));
+    m_xRemoveBtn->set_sensitive(false);
+    m_xImagesLst->connect_changed(LINK(this, SdPhotoAlbumDialog, SelectHdl));
+    m_xInsTypeCombo->connect_changed(LINK(this, SdPhotoAlbumDialog, TypeSelectHdl));
+
+    m_pGraphicFilter = new GraphicFilter;
+    m_xAddBtn->grab_focus();
 }
 
 SdPhotoAlbumDialog::~SdPhotoAlbumDialog()
 {
-    disposeOnce();
 }
 
-void SdPhotoAlbumDialog::dispose()
+IMPL_LINK_NOARG(SdPhotoAlbumDialog, CancelHdl, weld::Button&, void)
 {
-    pCancelBtn.clear();
-    pCreateBtn.clear();
-    pAddBtn.clear();
-    pUpBtn.clear();
-    pDownBtn.clear();
-    pRemoveBtn.clear();
-    pImagesLst.clear();
-    pImg.clear();
-    pInsTypeCombo.clear();
-    pASRCheck.clear();
-    pASRCheckCrop.clear();
-    pCapCheck.clear();
-    pInsertAsLinkCheck.clear();
-    ModalDialog::dispose();
+    m_xDialog->response(RET_CANCEL);
 }
 
-IMPL_LINK_NOARG(SdPhotoAlbumDialog, CancelHdl, Button*, void)
+IMPL_LINK_NOARG(SdPhotoAlbumDialog, CreateHdl, weld::Button&, void)
 {
-    Close();
-}
-
-IMPL_LINK_NOARG(SdPhotoAlbumDialog, CreateHdl, Button*, void)
-{
-    if (pImagesLst->GetEntryCount() == 0)
+    if (m_xImagesLst->n_children() == 0)
     {
-        std::unique_ptr<weld::MessageDialog> xWarn(Application::CreateMessageDialog(GetFrameWeld(),
+        std::unique_ptr<weld::MessageDialog> xWarn(Application::CreateMessageDialog(m_xDialog.get(),
                                                    VclMessageType::Warning, VclButtonsType::Ok,
                                                    SdResId(STR_PHOTO_ALBUM_EMPTY_WARNING)));
         xWarn->run();
     }
     else
     {
-        Reference< drawing::XDrawPagesSupplier > xDPS( pDoc->getUnoModel(), uno::UNO_QUERY );
+        Reference< drawing::XDrawPagesSupplier > xDPS( m_pDoc->getUnoModel(), uno::UNO_QUERY );
         Reference< drawing::XDrawPages > xDrawPages( xDPS->getDrawPages(), uno::UNO_QUERY );
-        Reference< lang::XMultiServiceFactory > xShapeFactory( pDoc->getUnoModel(), uno::UNO_QUERY );
+        Reference< lang::XMultiServiceFactory > xShapeFactory( m_pDoc->getUnoModel(), uno::UNO_QUERY );
 
         Reference< XComponentContext > xContext(::comphelper::getProcessComponentContext());
         Reference< graphic::XGraphicProvider> xProvider(graphic::GraphicProvider::create(xContext));
 
         // determine if to use Captions (use TitleObject) and choose the correct AutoLayout
         // from the beginning
-        const bool bCreateCaptions(pCapCheck->IsChecked());
-        const bool bInsertAsLink(pInsertAsLinkCheck->IsChecked());
+        const bool bCreateCaptions(m_xCapCheck->get_active());
+        const bool bInsertAsLink(m_xInsertAsLinkCheck->get_active());
         const AutoLayout aAutoLayout(bCreateCaptions ? AUTOLAYOUT_TITLE_ONLY : AUTOLAYOUT_NONE);
 
         // get the option
-        const sal_Int32 nOpt = pInsTypeCombo->GetSelectedEntryPos();
-        if ( nOpt == ONE_IMAGE )
+        const int nOpt = m_xInsTypeCombo->get_active();
+        if (nOpt == ONE_IMAGE)
         {
-            OUString sUrl;
-            for( sal_Int32 i = 0; i < pImagesLst->GetEntryCount(); ++i )
+            for( sal_Int32 i = 0; i < m_xImagesLst->n_children(); ++i )
             {
-                OUString const * pData = static_cast<OUString const *>(pImagesLst->GetEntryData(i));
-                sUrl = *pData;
+                OUString sUrl = m_xImagesLst->get_id(i);
 
                 Reference< drawing::XDrawPage > xSlide = appendNewSlide(aAutoLayout, xDrawPages);
                 Reference< beans::XPropertySet > xSlideProps( xSlide, uno::UNO_QUERY );
@@ -167,12 +141,12 @@ IMPL_LINK_NOARG(SdPhotoAlbumDialog, CreateHdl, Button*, void)
 
                 ::awt::Point aPicPos;
 
-                if(pASRCheck->IsChecked() && !pASRCheckCrop->IsChecked())
+                if (m_xASRCheck->get_active() && !m_xASRCheckCrop->get_active())
                 {
                     // Resize the image, with keeping ASR
                     aPicSize = createASRSize(aPicSize, aPageSize);
                 }
-                else if(pASRCheckCrop->IsChecked())
+                else if (m_xASRCheckCrop->get_active())
                 {
                     aPicSize = createASRSizeCrop(aPicSize, aPageSize);
                 }
@@ -196,13 +170,8 @@ IMPL_LINK_NOARG(SdPhotoAlbumDialog, CreateHdl, Button*, void)
         }
         else if( nOpt == TWO_IMAGES )
         {
-            OUString sUrl1("");
-            OUString sUrl2("");
-
-            for( sal_Int32 i = 0; i < pImagesLst->GetEntryCount(); i+=2 )
+            for( sal_Int32 i = 0; i < m_xImagesLst->n_children(); i+=2 )
             {
-                OUString const * pData = nullptr;
-
                 // create the slide
                 Reference< drawing::XDrawPage > xSlide = appendNewSlide(aAutoLayout, xDrawPages);
                 Reference< beans::XPropertySet > xSlideProps( xSlide, uno::UNO_QUERY );
@@ -215,13 +184,9 @@ IMPL_LINK_NOARG(SdPhotoAlbumDialog, CreateHdl, Button*, void)
                     "Height") >>= aPageSize.Height;
 
                 // grab the left one
-                void* pD1 = pImagesLst->GetEntryData(i);
-                pData = static_cast<OUString const *>(pD1);
-                sUrl1 = pData ? *pData : "";
+                OUString sUrl1 = m_xImagesLst->get_id(i);
                 // grab the right one
-                void* pD2 = pImagesLst->GetEntryData(i+1);
-                pData = static_cast<OUString const *>(pD2);
-                sUrl2 = pData ? *pData : "";
+                OUString sUrl2 = m_xImagesLst->get_id(i+1);
 
                 if( !sUrl1.isEmpty() )
                 {
@@ -242,7 +207,7 @@ IMPL_LINK_NOARG(SdPhotoAlbumDialog, CreateHdl, Button*, void)
 
                     ::awt::Point aPicPos;
 
-                    if(pASRCheck->IsChecked())
+                    if (m_xASRCheck->get_active())
                     {
                         // Resize the image, with keeping ASR
                         aPicSize = createASRSize(aPicSize, ::awt::Size(aPageSize.Width/2 - 100, aPageSize.Height/2 - 100));
@@ -286,7 +251,7 @@ IMPL_LINK_NOARG(SdPhotoAlbumDialog, CreateHdl, Button*, void)
 
                     ::awt::Point aPicPos;
 
-                    if(pASRCheck->IsChecked())
+                    if (m_xASRCheck->get_active())
                     {
                         // Resize the image, with keeping ASR
                         aPicSize = createASRSize(aPicSize, ::awt::Size(aPageSize.Width/2 - 100, aPageSize.Height/2 - 100));
@@ -317,14 +282,8 @@ IMPL_LINK_NOARG(SdPhotoAlbumDialog, CreateHdl, Button*, void)
         }
         else if( nOpt == FOUR_IMAGES )
         {
-            OUString sUrl1("");
-            OUString sUrl2("");
-            OUString sUrl3("");
-            OUString sUrl4("");
-
-            for( sal_Int32 i = 0; i < pImagesLst->GetEntryCount(); i+=4 )
+            for( sal_Int32 i = 0; i < m_xImagesLst->n_children(); i+=4 )
             {
-                OUString* pData = nullptr;
                 // create the slide
                 Reference< drawing::XDrawPage > xSlide = appendNewSlide(aAutoLayout, xDrawPages);
                 Reference< beans::XPropertySet > xSlideProps( xSlide, uno::UNO_QUERY );
@@ -337,24 +296,16 @@ IMPL_LINK_NOARG(SdPhotoAlbumDialog, CreateHdl, Button*, void)
                     "Height") >>= aPageSize.Height;
 
                 // grab the upper left one
-                void* pD1 = pImagesLst->GetEntryData(i);
-                pData = static_cast<OUString*>(pD1);
-                sUrl1 = pData ? *pData : "";
+                OUString sUrl1 = m_xImagesLst->get_id(i);
 
                 // grab the upper right one
-                void* pD2 = pImagesLst->GetEntryData(i+1);
-                pData = static_cast<OUString *>(pD2);
-                sUrl2 = pData ? *pData : "";
+                OUString sUrl2 = m_xImagesLst->get_id(i+1);
 
                 // grab the lower left one
-                void* pD3 = pImagesLst->GetEntryData(i+2);
-                pData = static_cast<OUString*>(pD3);
-                sUrl3 = pData ? *pData : "";
+                OUString sUrl3 = m_xImagesLst->get_id(i+2);
 
                 // grab the lower right one
-                void* pD4 = pImagesLst->GetEntryData(i+3);
-                pData = static_cast<OUString*>(pD4);
-                sUrl4 = pData ? *pData : "";
+                OUString sUrl4 = m_xImagesLst->get_id(i+3);
 
                 if( !sUrl1.isEmpty() )
                 {
@@ -375,7 +326,7 @@ IMPL_LINK_NOARG(SdPhotoAlbumDialog, CreateHdl, Button*, void)
 
                     ::awt::Point aPicPos;
 
-                    if(pASRCheck->IsChecked())
+                    if (m_xASRCheck->get_active())
                     {
                         // Resize the image, with keeping ASR
                         aPicSize = createASRSize(aPicSize, ::awt::Size(aPageSize.Width/2 - 100, aPageSize.Height/2 - 100));
@@ -418,7 +369,7 @@ IMPL_LINK_NOARG(SdPhotoAlbumDialog, CreateHdl, Button*, void)
 
                     ::awt::Point aPicPos;
 
-                    if(pASRCheck->IsChecked())
+                    if (m_xASRCheck->get_active())
                     {
                         // Resize the image, with keeping ASR
                         aPicSize = createASRSize(aPicSize, ::awt::Size(aPageSize.Width/2 - 100, aPageSize.Height/2 - 100));
@@ -461,7 +412,7 @@ IMPL_LINK_NOARG(SdPhotoAlbumDialog, CreateHdl, Button*, void)
 
                     ::awt::Point aPicPos;
 
-                    if(pASRCheck->IsChecked())
+                    if (m_xASRCheck->get_active())
                     {
                         // Resize the image, with keeping ASR
                         aPicSize = createASRSize(aPicSize, ::awt::Size(aPageSize.Width/2 - 100, aPageSize.Height/2 - 100));
@@ -504,7 +455,7 @@ IMPL_LINK_NOARG(SdPhotoAlbumDialog, CreateHdl, Button*, void)
 
                     ::awt::Point aPicPos;
 
-                    if(pASRCheck->IsChecked())
+                    if (m_xASRCheck->get_active())
                     {
                         // Resize the image, with keeping ASR
                         aPicSize = createASRSize(aPicSize, ::awt::Size(aPageSize.Width/2 - 100, aPageSize.Height/2 - 100));
@@ -534,20 +485,20 @@ IMPL_LINK_NOARG(SdPhotoAlbumDialog, CreateHdl, Button*, void)
         }
         else
         {
-            std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(GetFrameWeld(),
+            std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(m_xDialog.get(),
                                                           VclMessageType::Info, VclButtonsType::Ok,
                                                           "Function is not implemented!"));
             xInfoBox->run();
         }
-        EndDialog();
+        m_xDialog->response(RET_OK);
     }
 }
 
-IMPL_LINK_NOARG(SdPhotoAlbumDialog, FileHdl, Button*, void)
+IMPL_LINK_NOARG(SdPhotoAlbumDialog, FileHdl, weld::Button&, void)
 {
     ::sfx2::FileDialogHelper aDlg(
         css::ui::dialogs::TemplateDescription::FILEOPEN_PREVIEW,
-        FileDialogFlags::Graphic | FileDialogFlags::MultiSelection, GetFrameWeld());
+        FileDialogFlags::Graphic | FileDialogFlags::MultiSelection, m_xDialog.get());
     // Read configuration
     OUString sUrl(officecfg::Office::Impress::Pictures::Path::get());
 
@@ -575,85 +526,71 @@ IMPL_LINK_NOARG(SdPhotoAlbumDialog, FileHdl, Button*, void)
             {
                 // Store full path, show filename only. Use INetURLObject to display spaces in filename correctly
                 INetURLObject aUrl = INetURLObject(aFilesArr[i]);
-                sal_Int16 nPos = pImagesLst->InsertEntry( aUrl.GetLastName(INetURLObject::DecodeMechanism::WithCharset) );
-                pImagesLst->SetEntryData(nPos, new OUString(aUrl.GetMainURL(INetURLObject::DecodeMechanism::NONE)));
+                m_xImagesLst->append(aUrl.GetMainURL(INetURLObject::DecodeMechanism::NONE), aUrl.GetLastName(INetURLObject::DecodeMechanism::WithCharset), "");
             }
         }
     }
     EnableDisableButtons();
 }
 
-IMPL_LINK_NOARG(SdPhotoAlbumDialog, UpHdl, Button*, void)
+IMPL_LINK_NOARG(SdPhotoAlbumDialog, UpHdl, weld::Button&, void)
 {
-    if (pImagesLst->GetSelectedEntryPos() != LISTBOX_ENTRY_NOTFOUND
-        && pImagesLst->GetSelectedEntryPos() != 0)
+    const int nActPos = m_xImagesLst->get_selected_index();
+    if (nActPos != -1 && nActPos != 0)
     {
-        const sal_Int32 nActPos = pImagesLst->GetSelectedEntryPos();
-        OUString sActEntry( pImagesLst->GetEntry(nActPos) );
+        OUString sActEntry(m_xImagesLst->get_text(nActPos));
         // actual data
-        OUString* pActData = static_cast<OUString*>(pImagesLst->GetEntryData(nActPos));
-        OUString sAct(*pActData);
+        OUString sAct(m_xImagesLst->get_id(nActPos));
 
-        OUString sUpperEntry( pImagesLst->GetEntry(nActPos - 1) );
+        OUString sUpperEntry(m_xImagesLst->get_text(nActPos - 1));
         // upper data
-        OUString* pUpperData = static_cast<OUString*>(pImagesLst->GetEntryData(nActPos - 1));
-        OUString sUpper(*pUpperData);
-
-        pImagesLst->RemoveEntry( sActEntry );
-        pImagesLst->RemoveEntry( sUpperEntry );
+        OUString sUpper(m_xImagesLst->get_id(nActPos - 1));
 
-        pImagesLst->InsertEntry( sActEntry, nActPos - 1 );
-        pImagesLst->SetEntryData( nActPos - 1, new OUString(sAct));
+        m_xImagesLst->remove_text(sActEntry);
+        m_xImagesLst->remove_text(sUpperEntry);
 
-        pImagesLst->InsertEntry( sUpperEntry, nActPos );
-        pImagesLst->SetEntryData( nActPos, new OUString(sUpper));
+        m_xImagesLst->insert(nActPos - 1, sAct, sActEntry, "");
+        m_xImagesLst->insert(nActPos, sUpper, sUpperEntry, "");
 
-        pImagesLst->SelectEntryPos(nActPos - 1);
+        m_xImagesLst->select(nActPos - 1);
     }
 
     EnableDisableButtons();
 }
 
-IMPL_LINK_NOARG(SdPhotoAlbumDialog, DownHdl, Button*, void)
+IMPL_LINK_NOARG(SdPhotoAlbumDialog, DownHdl, weld::Button&, void)
 {
-    const sal_Int32 nActPos = pImagesLst->GetSelectedEntryPos();
-    if (!pImagesLst->GetEntry(nActPos + 1).isEmpty())
+    const int nActPos = m_xImagesLst->get_selected_index();
+    if (!m_xImagesLst->get_text(nActPos + 1).isEmpty())
     {
-        OUString sActEntry( pImagesLst->GetSelectedEntry() );
-        OUString* pActData = static_cast<OUString*>(pImagesLst->GetSelectedEntryData());
-        OUString sAct(*pActData);
-
-        OUString sDownEntry( pImagesLst->GetEntry(nActPos + 1) );
-        OUString* pDownData = static_cast<OUString*>(pImagesLst->GetEntryData(nActPos + 1));
-        OUString sDown(*pDownData);
-
-        pImagesLst->RemoveEntry( sActEntry );
-        pImagesLst->RemoveEntry( sDownEntry );
+        OUString sActEntry(m_xImagesLst->get_selected_text());
+        OUString sAct(m_xImagesLst->get_selected_id());
 
-        pImagesLst->InsertEntry( sDownEntry, nActPos );
-        pImagesLst->SetEntryData( nActPos, new OUString(sDown));
+        OUString sDownEntry(m_xImagesLst->get_text(nActPos + 1));
+        OUString sDown(m_xImagesLst->get_id(nActPos + 1));
 
-        pImagesLst->InsertEntry( sActEntry, nActPos + 1 );
-        pImagesLst->SetEntryData( nActPos + 1, new OUString(sAct));
+        m_xImagesLst->remove_text(sActEntry);
+        m_xImagesLst->remove_text(sDownEntry);
 
-        pImagesLst->SelectEntryPos(nActPos + 1);
+        m_xImagesLst->insert(nActPos, sDown, sDownEntry, "");
+        m_xImagesLst->insert(nActPos + 1, sAct, sActEntry, "");
 
+        m_xImagesLst->select(nActPos + 1);
     }
     EnableDisableButtons();
 }
 
-IMPL_LINK_NOARG(SdPhotoAlbumDialog, RemoveHdl, Button*, void)
+IMPL_LINK_NOARG(SdPhotoAlbumDialog, RemoveHdl, weld::Button&, void)
 {
-    pImagesLst->RemoveEntry( pImagesLst->GetSelectedEntryPos() );
-    pImg->SetImage(Image());
+    m_xImagesLst->remove(m_xImagesLst->get_selected_index());
+    m_xImg->SetGraphic(Graphic());
 
     EnableDisableButtons();
 }
 
-IMPL_LINK_NOARG(SdPhotoAlbumDialog, SelectHdl, ListBox&, void)
+IMPL_LINK_NOARG(SdPhotoAlbumDialog, SelectHdl, weld::TreeView&, void)
 {
-    OUString* pData = static_cast<OUString*>(pImagesLst->GetSelectedEntryData());
-    OUString sImgUrl = pData ? *pData : "";
+    OUString sImgUrl = m_xImagesLst->get_selected_id();
 
     if (sImgUrl != SdResId(STR_PHOTO_ALBUM_TEXTBOX))
     {
@@ -676,14 +613,14 @@ IMPL_LINK_NOARG(SdPhotoAlbumDialog, SelectHdl, ListBox&, void)
             SvStream* pStream = ::utl::UcbStreamHelper::CreateStream( sImgUrl, StreamMode::READ );
 
             if( pStream )
-                mpGraphicFilter->ImportGraphic( aGraphic, sImgUrl, *pStream, nFilter, nullptr, nFilterImportFlags );
+                m_pGraphicFilter->ImportGraphic( aGraphic, sImgUrl, *pStream, nFilter, nullptr, nFilterImportFlags );
             else
-                mpGraphicFilter->ImportGraphic( aGraphic, aURLObj, nFilter, nullptr, nFilterImportFlags );
+                m_pGraphicFilter->ImportGraphic( aGraphic, aURLObj, nFilter, nullptr, nFilterImportFlags );
             delete pStream;
         }
         else
         {
-            mpGraphicFilter->ImportGraphic( aGraphic, aURLObj, nFilter, nullptr, nFilterImportFlags );
+            m_pGraphicFilter->ImportGraphic( aGraphic, aURLObj, nFilter, nullptr, nFilterImportFlags );
         }
 
         Bitmap aBmp = aGraphic.GetBitmap();
@@ -698,23 +635,23 @@ IMPL_LINK_NOARG(SdPhotoAlbumDialog, SelectHdl, ListBox&, void)
             aBmp.Scale( nYRatio, nYRatio );
 
         aBmp.Convert( BmpConversion::N24Bit );
-        pImg->SetImage(Image(aBmp));
+        m_xImg->SetGraphic(Graphic(aBmp));
     }
     else
     {
-        pImg->SetImage(Image());
+        m_xImg->SetGraphic(Graphic());
     }
     EnableDisableButtons();
 }
 
-IMPL_LINK_NOARG(SdPhotoAlbumDialog, TypeSelectHdl, ListBox&, void)
+IMPL_LINK_NOARG(SdPhotoAlbumDialog, TypeSelectHdl, weld::ComboBoxText&, void)
 {
     // Enable "Fill Slide" only for one image
     // If we want to have it for other images too, we need to implement the actual cropping.
-    bool const bEnable = pInsTypeCombo->GetSelectedEntryPos() == ONE_IMAGE;
-    pASRCheckCrop->Enable(bEnable);
+    bool const bEnable = m_xInsTypeCombo->get_active() == ONE_IMAGE;
+    m_xASRCheckCrop->set_sensitive(bEnable);
     if (!bEnable)
-        pASRCheckCrop->Check(false);
+        m_xASRCheckCrop->set_active(false);
 }
 
 Reference< drawing::XDrawPage > SdPhotoAlbumDialog::appendNewSlide(AutoLayout aLayout,
@@ -724,7 +661,7 @@ Reference< drawing::XDrawPage > SdPhotoAlbumDialog::appendNewSlide(AutoLayout aL
     Reference< drawing::XDrawPage > xSlide; // Create the slide
     Reference< container::XIndexAccess > xIndexAccess( xDrawPages, uno::UNO_QUERY );
     xSlide = xDrawPages->insertNewByIndex( xIndexAccess->getCount() );
-    SdPage* pSlide = pDoc->GetSdPage( pDoc->GetSdPageCount(PageKind::Standard)-1, PageKind::Standard);
+    SdPage* pSlide = m_pDoc->GetSdPage( m_pDoc->GetSdPageCount(PageKind::Standard)-1, PageKind::Standard);
     pSlide->SetAutoLayout(aLayout, true); // Set the layout here
     return xSlide;
 }
@@ -799,7 +736,7 @@ void SdPhotoAlbumDialog::createCaption(const awt::Size& aPageSize )
     CapSize.setHeight( aPageSize.Height/6 );
     CapPos.setX( 0 );
     CapPos.setY( aPageSize.Height - CapSize.Height() );
-    SdPage* pSlide = pDoc->GetSdPage( pDoc->GetSdPageCount(PageKind::Standard)-1, PageKind::Standard );
+    SdPage* pSlide = m_pDoc->GetSdPage( m_pDoc->GetSdPageCount(PageKind::Standard)-1, PageKind::Standard );
 
     // try to get existing PresObj
     const ::tools::Rectangle rRect(CapPos,CapSize);
@@ -826,7 +763,7 @@ void SdPhotoAlbumDialog::createCaption(const awt::Size& aPageSize )
     if(pSdrObj)
     {
         // set color, style and some transparency
-        SfxItemSet aSet(pDoc->GetItemPool() );
+        SfxItemSet aSet(m_pDoc->GetItemPool() );
 
         aSet.Put( XFillStyleItem(drawing::FillStyle_SOLID) );
         aSet.Put( XFillColorItem( "", COL_BLACK ) );
@@ -849,11 +786,11 @@ Reference< graphic::XGraphic> SdPhotoAlbumDialog::createXGraphicFromUrl(const OU
 
 void SdPhotoAlbumDialog::EnableDisableButtons()
 {
-    pRemoveBtn->Enable(pImagesLst->GetSelectedEntryCount() > 0);
-    pUpBtn->Enable(pImagesLst->GetSelectedEntryCount() > 0 &&
-                   pImagesLst->GetSelectedEntryPos() != 0);
-    pDownBtn->Enable(pImagesLst->GetSelectedEntryCount() > 0 &&
-                     pImagesLst->GetSelectedEntryPos() < pImagesLst->GetEntryCount()-1);
+    m_xRemoveBtn->set_sensitive(m_xImagesLst->count_selected_rows() > 0);
+    m_xUpBtn->set_sensitive(m_xImagesLst->count_selected_rows() > 0 &&
+                            m_xImagesLst->get_selected_index() != 0);
+    m_xDownBtn->set_sensitive(m_xImagesLst->count_selected_rows() > 0 &&
+                              m_xImagesLst->get_selected_index() < m_xImagesLst->n_children() - 1);
 }
 
 } // end of namespace sd
diff --git a/sd/source/ui/dlg/PhotoAlbumDialog.hxx b/sd/source/ui/dlg/PhotoAlbumDialog.hxx
index 0294f05ba120..7ec396eb3fb9 100644
--- a/sd/source/ui/dlg/PhotoAlbumDialog.hxx
+++ b/sd/source/ui/dlg/PhotoAlbumDialog.hxx
@@ -15,12 +15,9 @@
 #include <pres.hxx>
 #include <drawdoc.hxx>
 
-#include <vcl/lstbox.hxx>
-#include <vcl/fixed.hxx>
-#include <vcl/button.hxx>
-#include <vcl/dialog.hxx>
-#include <vcl/field.hxx>
+#include <vcl/weld.hxx>
 #include <vcl/graphicfilter.hxx>
+#include <svx/graphctl.hxx>
 #include <svx/svdotext.hxx>
 #include <svx/svdobj.hxx>
 
@@ -41,44 +38,40 @@ using namespace ::com::sun::star::presentation;
 namespace sd
 {
 
-class SdPhotoAlbumDialog : public ModalDialog
+class SdPhotoAlbumDialog : public weld::GenericDialogController
 {
 public:
-    SdPhotoAlbumDialog(vcl::Window* pWindow, SdDrawDocument* pActDoc);
+    SdPhotoAlbumDialog(weld::Window* pWindow, SdDrawDocument* pActDoc);
     virtual ~SdPhotoAlbumDialog() override;
-    virtual void dispose() override;
 
 private:
-    VclPtr<CancelButton>   pCancelBtn;
-    VclPtr<PushButton>     pCreateBtn;
-
-    VclPtr<PushButton>     pAddBtn;
-    VclPtr<PushButton>     pUpBtn;
-    VclPtr<PushButton>     pDownBtn;
-    VclPtr<PushButton>     pRemoveBtn;
-
-    VclPtr<ListBox>        pImagesLst;
-    VclPtr<FixedImage>     pImg;
-
-    VclPtr<ListBox>    pInsTypeCombo;
-    VclPtr<CheckBox>   pASRCheck;
-    VclPtr<CheckBox>   pASRCheckCrop;
-    VclPtr<CheckBox>   pCapCheck;
-    VclPtr<CheckBox>   pInsertAsLinkCheck;
-
-    SdDrawDocument* pDoc;
-    GraphicFilter* mpGraphicFilter;
-
-    DECL_LINK(CancelHdl, Button*, void);
-    DECL_LINK(CreateHdl, Button*, void);
-
-    DECL_LINK(FileHdl, Button*, void);
-    DECL_LINK(UpHdl, Button*, void);
-    DECL_LINK(DownHdl, Button*, void);
-    DECL_LINK(RemoveHdl, Button*, void);
-
-    DECL_LINK(SelectHdl, ListBox&, void);
-    DECL_LINK(TypeSelectHdl, ListBox&, void);
+    SdDrawDocument* m_pDoc;
+    GraphicFilter* m_pGraphicFilter;
+
+    std::unique_ptr<weld::Button> m_xCancelBtn;
+    std::unique_ptr<weld::Button> m_xCreateBtn;
+    std::unique_ptr<weld::Button> m_xAddBtn;
+    std::unique_ptr<weld::Button> m_xUpBtn;
+    std::unique_ptr<weld::Button> m_xDownBtn;
+    std::unique_ptr<weld::Button> m_xRemoveBtn;
+    std::unique_ptr<weld::TreeView> m_xImagesLst;
+    std::unique_ptr<SvxGraphCtrl> m_xImg;
+    std::unique_ptr<weld::ComboBoxText> m_xInsTypeCombo;
+    std::unique_ptr<weld::CheckButton> m_xASRCheck;
+    std::unique_ptr<weld::CheckButton> m_xASRCheckCrop;
+    std::unique_ptr<weld::CheckButton> m_xCapCheck;
+    std::unique_ptr<weld::CheckButton> m_xInsertAsLinkCheck;
+
+    DECL_LINK(CancelHdl, weld::Button&, void);
+    DECL_LINK(CreateHdl, weld::Button&, void);
+
+    DECL_LINK(FileHdl, weld::Button&, void);
+    DECL_LINK(UpHdl, weld::Button&, void);
+    DECL_LINK(DownHdl, weld::Button&, void);
+    DECL_LINK(RemoveHdl, weld::Button&, void);
+
+    DECL_LINK(SelectHdl, weld::TreeView&, void);
+    DECL_LINK(TypeSelectHdl, weld::ComboBoxText&, void);
 
     Reference< drawing::XDrawPage > appendNewSlide(AutoLayout aLayout,
         const Reference< drawing::XDrawPages >& xDrawPages);
@@ -97,7 +90,6 @@ private:
         TWO_IMAGES,
         FOUR_IMAGES
     };
-
 };
 
 } // end of namespace sd
diff --git a/sd/source/ui/dlg/sddlgfact.cxx b/sd/source/ui/dlg/sddlgfact.cxx
index c0b8d950d158..f609fca3a774 100644
--- a/sd/source/ui/dlg/sddlgfact.cxx
+++ b/sd/source/ui/dlg/sddlgfact.cxx
@@ -47,6 +47,12 @@
 #include "PhotoAlbumDialog.hxx"
 
 IMPL_ABSTDLG_BASE(SdVclAbstractDialog_Impl);
+
+short SdAbstractGenericDialog_Impl::Execute()
+{
+    return m_xDlg->run();
+}
+
 IMPL_ABSTDLG_BASE(AbstractCopyDlg_Impl);
 
 short AbstractSdCustomShowDlg_Impl::Execute()
@@ -455,9 +461,9 @@ VclPtr<AbstractHeaderFooterDialog> SdAbstractDialogFactory_Impl::CreateHeaderFoo
     return VclPtr<AbstractHeaderFooterDialog_Impl>::Create( VclPtr<::sd::HeaderFooterDialog>::Create( pViewShell, pParent, pDoc, pCurrentPage ));
 }
 
-VclPtr<VclAbstractDialog> SdAbstractDialogFactory_Impl::CreateSdPhotoAlbumDialog( vcl::Window* pParent, SdDrawDocument* pDoc )
+VclPtr<VclAbstractDialog> SdAbstractDialogFactory_Impl::CreateSdPhotoAlbumDialog(weld::Window* pParent, SdDrawDocument* pDoc)
 {
-    return VclPtr<SdVclAbstractDialog_Impl>::Create( VclPtr<::sd::SdPhotoAlbumDialog>::Create( pParent, pDoc ) );
+    return VclPtr<SdAbstractGenericDialog_Impl>::Create(new sd::SdPhotoAlbumDialog(pParent, pDoc));
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/source/ui/dlg/sddlgfact.hxx b/sd/source/ui/dlg/sddlgfact.hxx
index 55765fb23861..a6f5319dba38 100644
--- a/sd/source/ui/dlg/sddlgfact.hxx
+++ b/sd/source/ui/dlg/sddlgfact.hxx
@@ -64,6 +64,18 @@ class SdVclAbstractDialog_Impl : public VclAbstractDialog
     DECL_ABSTDLG_BASE(SdVclAbstractDialog_Impl,Dialog)
 };
 
+class SdAbstractGenericDialog_Impl : public VclAbstractDialog
+{
+protected:
+    std::unique_ptr<weld::GenericDialogController> m_xDlg;
+public:
+    explicit SdAbstractGenericDialog_Impl(weld::GenericDialogController* p)
+        : m_xDlg(p)
+    {
+    }
+    virtual short Execute() override;
+};
+
 class AbstractMasterLayoutDialog_Impl : public VclAbstractDialog
 {
 private:
@@ -289,7 +301,7 @@ public:
     virtual VclPtr<AbstractSdVectorizeDlg>     CreateSdVectorizeDlg(weld::Window* pParent, const Bitmap& rBmp, ::sd::DrawDocShell* pDocShell) override;
     virtual VclPtr<AbstractSdPublishingDlg>    CreateSdPublishingDlg(vcl::Window* pWindow, DocumentType eDocType) override;
 
-    virtual VclPtr<VclAbstractDialog>          CreateSdPhotoAlbumDialog(vcl::Window* pWindow, SdDrawDocument* pDoc) override;
+    virtual VclPtr<VclAbstractDialog>          CreateSdPhotoAlbumDialog(weld::Window* pWindow, SdDrawDocument* pDoc) override;
 
     virtual VclPtr<VclAbstractDialog>          CreateMasterLayoutDialog(weld::Window* pParent, SdDrawDocument* pDoc, SdPage*) override;
 
diff --git a/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx b/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
index c5d376270269..18b9b01b24cc 100644
--- a/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
@@ -256,8 +256,9 @@ void SlotManager::FuTemporary (SfxRequest& rRequest)
             SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create();
             if (pFact)
             {
+                vcl::Window* pWin = mrSlideSorter.GetContentWindow();
                 ScopedVclPtr<VclAbstractDialog> pDlg(pFact->CreateSdPhotoAlbumDialog(
-                    mrSlideSorter.GetContentWindow(),
+                    pWin ? pWin->GetFrameWeld() : nullptr,
                     pDocument));
                 pDlg->Execute();
             }
diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx
index 3f6e477e5165..5a9649b48eaf 100644
--- a/sd/source/ui/view/drviews2.cxx
+++ b/sd/source/ui/view/drviews2.cxx
@@ -3320,8 +3320,9 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
             SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create();
             if (pFact)
             {
+                vcl::Window* pWin = GetActiveWindow();
                 ScopedVclPtr<VclAbstractDialog> pDlg(pFact->CreateSdPhotoAlbumDialog(
-                    GetActiveWindow(),
+                    pWin ? pWin->GetFrameWeld() : nullptr,
                     GetDoc()));
 
                 pDlg->Execute();
diff --git a/sd/source/ui/view/outlnvs2.cxx b/sd/source/ui/view/outlnvs2.cxx
index ec6496c446a6..d5dddac528f1 100644
--- a/sd/source/ui/view/outlnvs2.cxx
+++ b/sd/source/ui/view/outlnvs2.cxx
@@ -309,8 +309,9 @@ void OutlineViewShell::FuTemporary(SfxRequest &rReq)
             SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create();
             if (pFact)
             {
+                vcl::Window* pWin = GetActiveWindow();
                 ScopedVclPtr<VclAbstractDialog> pDlg(pFact->CreateSdPhotoAlbumDialog(
-                    GetActiveWindow(),
+                    pWin ? pWin->GetFrameWeld() : nullptr,
                     GetDoc()));
 
                 pDlg->Execute();
diff --git a/sd/uiconfig/simpress/ui/photoalbum.ui b/sd/uiconfig/simpress/ui/photoalbum.ui
index 2ad9d1df394b..9ef2c289d5be 100644
--- a/sd/uiconfig/simpress/ui/photoalbum.ui
+++ b/sd/uiconfig/simpress/ui/photoalbum.ui
@@ -4,32 +4,20 @@
   <requires lib="gtk+" version="3.18"/>
   <object class="GtkListStore" id="liststore1">
     <columns>
-      <!-- column-name Filename -->
+      <!-- column-name text -->
       <column type="gchararray"/>
-    </columns>
-  </object>
-  <object class="GtkListStore" id="liststore2">
-    <columns>
-      <!-- column-name Property -->
+      <!-- column-name id -->
       <column type="gchararray"/>
     </columns>
-    <data>
-      <row>
-        <col id="0" translatable="yes" context="photoalbum|liststore2">1 Image</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes" context="photoalbum|liststore2">2 Images</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes" context="photoalbum|liststore2">4 Images</col>
-      </row>
-    </data>
   </object>
   <object class="GtkDialog" id="PhotoAlbumCreatorDialog">
     <property name="can_focus">False</property>
     <property name="border_width">6</property>
     <property name="title" translatable="yes" context="photoalbum|PhotoAlbumCreatorDialog">Create Photo Album</property>
+    <property name="modal">True</property>
     <property name="window_position">center</property>
+    <property name="default_width">0</property>
+    <property name="default_height">0</property>
     <property name="type_hint">dialog</property>
     <child internal-child="vbox">
       <object class="GtkBox" id="dialog-vbox1">
@@ -108,27 +96,35 @@
                 <property name="orientation">vertical</property>
                 <property name="spacing">6</property>
                 <child>
-                  <object class="GtkScrolledWindow" id="scrolledwindow1">
-                    <property name="width_request">300</property>
-                    <property name="height_request">200</property>
+                  <object class="GtkScrolledWindow">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="hexpand">True</property>
                     <property name="vexpand">True</property>
                     <property name="shadow_type">in</property>
                     <child>
-                      <object class="GtkTreeView" id="images_tree:border">
-                        <property name="width_request">300</property>
-                        <property name="height_request">200</property>
+                      <object class="GtkTreeView" id="images_tree">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="hexpand">True</property>
                         <property name="vexpand">True</property>
                         <property name="model">liststore1</property>
+                        <property name="headers_visible">False</property>
+                        <property name="headers_clickable">False</property>
                         <property name="search_column">0</property>
-                        <property name="enable_grid_lines">both</property>
+                        <property name="show_expanders">False</property>
                         <child internal-child="selection">
-                          <object class="GtkTreeSelection" id="treeview-selection"/>
+                          <object class="GtkTreeSelection" id="treeview-selection1"/>
+                        </child>
+                        <child>
+                          <object class="GtkTreeViewColumn" id="treeviewcolumn1">
+                            <child>
+                              <object class="GtkCellRendererText" id="cellrenderertext1"/>
+                              <attributes>
+                                <attribute name="text">0</attribute>
+                              </attributes>
+                            </child>
+                          </object>
                         </child>
                       </object>
                     </child>
@@ -249,15 +245,13 @@
                             <property name="orientation">vertical</property>
                             <property name="spacing">6</property>
                             <child>
-                              <object class="GtkImage" id="preview_img">
+                              <object class="GtkDrawingArea" id="preview_img">
                                 <property name="width_request">200</property>
                                 <property name="height_request">150</property>
                                 <property name="visible">True</property>
                                 <property name="can_focus">False</property>
                                 <property name="valign">start</property>
                                 <property name="vexpand">True</property>
-                                <property name="yalign">0</property>
-                                <property name="stock">gtk-missing-image</property>
                               </object>
                               <packing>
                                 <property name="expand">False</property>
@@ -313,18 +307,16 @@
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkComboBox" id="opt_combo">
+                          <object class="GtkComboBoxText" id="opt_combo">
                             <property name="width_request">160</property>
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
-                            <property name="model">liststore2</property>
                             <property name="active">0</property>
-                            <child>
-                              <object class="GtkCellRendererText" id="cellrenderertext1"/>
-                              <attributes>
-                                <attribute name="text">0</attribute>
-                              </attributes>
-                            </child>
+                            <items>
+                              <item translatable="yes" context="photoalbum|liststore2">1 Image</item>
+                              <item translatable="yes" context="photoalbum|liststore2">2 Images</item>
+                              <item translatable="yes" context="photoalbum|liststore2">4 Images</item>
+                            </items>
                           </object>
                           <packing>
                             <property name="expand">False</property>
diff --git a/svx/source/dialog/graphctl.cxx b/svx/source/dialog/graphctl.cxx
index 5f959499f97b..e656d0e18673 100644
--- a/svx/source/dialog/graphctl.cxx
+++ b/svx/source/dialog/graphctl.cxx
@@ -788,6 +788,7 @@ IMPL_LINK(SvxGraphCtrl, DoResize, const Size&, rSize, void)
 IMPL_LINK(SvxGraphCtrl, DoPaint, weld::DrawingArea::draw_args, aPayload, void)
 {
     vcl::RenderContext& rRenderContext = aPayload.first;
+    rRenderContext.Erase();
     const bool bGraphicValid(GraphicType::NONE != aGraphic.GetType());
     // #i73381# in non-SdrMode, paint to local directly
     if (bGraphicValid && aGraphSize.Width() && aGraphSize.Height())


More information about the Libreoffice-commits mailing list