convert remaining InfoBox to weld::MessageDialog

Change-Id: I91d828e38d96264cf4a76f30940942556b8f78d8
Reviewed-on: https://gerrit.libreoffice.org/50205
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/basctl/source/basicide/basides1.cxx b/basctl/source/basicide/basides1.cxx
index 22afa37..5fce14e 100644
--- a/basctl/source/basicide/basides1.cxx
+++ b/basctl/source/basicide/basides1.cxx
@@ -48,6 +48,7 @@
#include <svl/visitem.hxx>
#include <svl/whiter.hxx>
#include <vcl/xtextedt.hxx>
#include <vcl/svapp.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>

@@ -114,7 +115,11 @@ void Shell::ExecuteCurrent( SfxRequest& rReq )

                OUString aReplStr(IDEResId(RID_STR_SEARCHREPLACES));
                aReplStr = aReplStr.replaceAll("XX", OUString::number(nFound));
                ScopedVclPtrInstance<InfoBox>(pCurWin, aReplStr)->Execute();

                std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pCurWin->GetFrameWeld(),
                                                              VclMessageType::Info, VclButtonsType::Ok,
                                                              aReplStr));
                xInfoBox->run();
            }
            else
            {
@@ -181,7 +186,12 @@ void Shell::ExecuteCurrent( SfxRequest& rReq )
                        SetCurWindow( pWin, true );
                }
                if ( !nFound && !bCanceled )
                    ScopedVclPtrInstance<InfoBox>(pCurWin, IDEResId(RID_STR_SEARCHNOTFOUND))->Execute();
                {
                    std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pCurWin->GetFrameWeld(),
                                                                  VclMessageType::Info, VclButtonsType::Ok,
                                                                  IDEResId(RID_STR_SEARCHNOTFOUND)));
                    xInfoBox->run();
                }
            }

            rReq.Done();
diff --git a/basctl/source/basicide/basidesh.cxx b/basctl/source/basicide/basidesh.cxx
index e479160..58b4d42 100644
--- a/basctl/source/basicide/basidesh.cxx
+++ b/basctl/source/basicide/basidesh.cxx
@@ -62,7 +62,7 @@
#include <com/sun/star/container/XContainer.hpp>
#include <svx/xmlsecctrl.hxx>
#include <sfx2/viewfac.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>
#include <vcl/settings.hxx>
#include <cppuhelper/implbase.hxx>

@@ -386,8 +386,10 @@ bool Shell::PrepareClose( bool bUI )
    {
        if( bUI )
        {
            vcl::Window *pParent = &GetViewFrame()->GetWindow();
            ScopedVclPtrInstance<InfoBox>(pParent, IDEResId(RID_STR_CANNOTCLOSE))->Execute();
            std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(GetViewFrame()->GetWindow().GetFrameWeld(),
                                                          VclMessageType::Info, VclButtonsType::Ok,
                                                          IDEResId(RID_STR_CANNOTCLOSE)));
            xInfoBox->run();
        }
        return false;
    }
diff --git a/basic/source/runtime/basrdll.cxx b/basic/source/runtime/basrdll.cxx
index e7a639a..b594952 100644
--- a/basic/source/runtime/basrdll.cxx
+++ b/basic/source/runtime/basrdll.cxx
@@ -22,6 +22,7 @@
#include <svl/solar.hrc>
#include <tools/debug.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>
#include <vcl/settings.hxx>

#include <basic/sbstar.hxx>
@@ -97,7 +98,10 @@ void BasicDLL::BasicBreak()
        {
            bJustStopping = true;
            StarBASIC::Stop();
            ScopedVclPtrInstance<InfoBox>(nullptr, BasResId(IDS_SBERR_TERMINATED))->Execute();
            std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(nullptr,
                                                          VclMessageType::Info, VclButtonsType::Ok,
                                                          BasResId(IDS_SBERR_TERMINATED)));
            xInfoBox->run();
            bJustStopping = false;
        }
    }
diff --git a/basic/source/runtime/methods.cxx b/basic/source/runtime/methods.cxx
index 5f53992..fed8450 100644
--- a/basic/source/runtime/methods.cxx
+++ b/basic/source/runtime/methods.cxx
@@ -28,7 +28,8 @@
#include <vcl/settings.hxx>
#include <vcl/sound.hxx>
#include <tools/wintypes.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/button.hxx>
#include <vcl/weld.hxx>
#include <basic/sbx.hxx>
#include <svl/zforlist.hxx>
#include <rtl/character.hxx>
@@ -4207,75 +4208,30 @@ void SbRtl_SavePicture(StarBASIC *, SbxArray & rPar, bool)

void SbRtl_MsgBox(StarBASIC *, SbxArray & rPar, bool)
{
    static const MessBoxStyle nStyleMap[] =
    {
        MessBoxStyle::Ok,                // MB_OK
        MessBoxStyle::OkCancel,          // MB_OKCANCEL
        MessBoxStyle::AbortRetryIgnore,  // MB_ABORTRETRYIGNORE
        MessBoxStyle::YesNoCancel,       // MB_YESNOCANCEL
        MessBoxStyle::YesNo,             // MB_YESNO
        MessBoxStyle::RetryCancel        // MB_RETRYCANCEL
    };
    static const sal_Int16 nButtonMap[] =
    {
        2, // RET_CANCEL is 0
        1, // RET_OK     is 1
        6, // RET_YES    is 2
        7, // RET_NO     is 3
        4  // RET_RETRY  is 4
    };


    sal_uInt16 nArgCount = rPar.Count();
    if( nArgCount < 2 || nArgCount > 6 )
    {
        StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT );
        return;
    }
    MessBoxStyle nWinBits;
    WinBits nType = 0; // MB_OK
    if( nArgCount >= 3 )
        nType = static_cast<WinBits>(rPar.Get(2)->GetInteger());
    WinBits nStyle = nType;
    nStyle &= 15; // delete bits 4-16
    if( nStyle > 5 )
    {
    if (nStyle > 5)
        nStyle = 0;
    }
    nWinBits = nStyleMap[ nStyle ];

    MessBoxStyle nWinDefBits = MessBoxStyle::DefaultOk | MessBoxStyle::DefaultRetry | MessBoxStyle::DefaultYes;
    if( nType & 256 )
    enum BasicResponse
    {
        if( nStyle == 5 )
        {
            nWinDefBits = MessBoxStyle::DefaultCancel;
        }
        else if( nStyle == 2 )
        {
            nWinDefBits = MessBoxStyle::DefaultRetry;
        }
        else
        {
            nWinDefBits = (MessBoxStyle::DefaultCancel | MessBoxStyle::DefaultRetry | MessBoxStyle::DefaultNo);
        }
    }
    else if( nType & 512 )
    {
        if( nStyle == 2)
        {
            nWinDefBits = MessBoxStyle::DefaultIgnore;
        }
        else
        {
            nWinDefBits = MessBoxStyle::DefaultCancel;
        }
    }
    else if( nStyle == 2)
    {
        nWinDefBits = MessBoxStyle::DefaultCancel;
    }
    nWinBits |= nWinDefBits;
        Ok = 1,
        Cancel = 2,
        Abort = 3,
        Retry = 4,
        Ignore = 5,
        Yes = 6,
        No = 7
    };

    OUString aMsg = rPar.Get(1)->GetOUString();
    OUString aTitle;
@@ -4288,46 +4244,99 @@ void SbRtl_MsgBox(StarBASIC *, SbxArray & rPar, bool)
        aTitle = Application::GetDisplayName();
    }

    nType &= (16+32+64);
    VclPtr<MessBox> pBox;
    WinBits nDialogType = nType & (16+32+64);

    SolarMutexGuard aSolarGuard;
    vcl::Window* pParentWin = Application::GetDefDialogParent();
    weld::Widget* pParent = pParentWin ? pParentWin->GetFrameWeld() : nullptr;

    vcl::Window* pParent = Application::GetDefDialogParent();
    switch( nType )
    VclMessageType eType = VclMessageType::Info;

    switch (nDialogType)
    {
    case 16:
        pBox.reset(VclPtr<ErrorBox>::Create( pParent, nWinBits, aMsg ));
        break;
    case 32:
        pBox.reset(VclPtr<QueryBox>::Create( pParent, nWinBits, aMsg ));
        break;
    case 48:
        pBox.reset(VclPtr<WarningBox>::Create( pParent, nWinBits, aMsg ));
        break;
    case 64:
        pBox.reset(VclPtr<InfoBox>::Create( pParent, nWinBits, aMsg ));
        break;
    default:
        pBox.reset(VclPtr<MessBox>::Create( pParent, nWinBits, 0, aTitle, aMsg ));
        case 16:
            eType = VclMessageType::Error;
            break;
        case 32:
            eType = VclMessageType::Question;
            break;
        case 48:
            eType = VclMessageType::Warning;
            break;
        case 64:
        default:
            eType = VclMessageType::Info;
            break;
    }
    pBox->SetText( aTitle );
    short nRet = pBox->Execute();
    sal_Int16 nMappedRet;
    if( nStyle == 2 )

    std::unique_ptr<weld::MessageDialog> xBox(Application::CreateMessageDialog(pParent,
                eType, VclButtonsType::NONE, aMsg));

    switch (nStyle)
    {
        nMappedRet = nRet;
        if( nMappedRet == 0 )
        {
            nMappedRet = 3; // Abort
        }
        case 0: // MB_OK
        default:
            xBox->add_button(Button::GetStandardText(StandardButtonType::OK), BasicResponse::Ok);
            break;
        case 1: // MB_OKCANCEL
            xBox->add_button(Button::GetStandardText(StandardButtonType::OK), BasicResponse::Ok);
            xBox->add_button(Button::GetStandardText(StandardButtonType::Cancel), BasicResponse::Cancel);

            if (nType & 256 || nType & 512)
                xBox->set_default_response(BasicResponse::Cancel);
            else
                xBox->set_default_response(BasicResponse::Ok);

            break;
        case 2: // MB_ABORTRETRYIGNORE
            xBox->add_button(Button::GetStandardText(StandardButtonType::Abort), BasicResponse::Abort);
            xBox->add_button(Button::GetStandardText(StandardButtonType::Retry), BasicResponse::Retry);
            xBox->add_button(Button::GetStandardText(StandardButtonType::Ignore), BasicResponse::Ignore);

            if (nType & 256)
                xBox->set_default_response(BasicResponse::Retry);
            else if (nType & 512)
                xBox->set_default_response(BasicResponse::Ignore);
            else
                xBox->set_default_response(BasicResponse::Cancel);

            break;
        case 3: // MB_YESNOCANCEL
            xBox->add_button(Button::GetStandardText(StandardButtonType::Yes), BasicResponse::Yes);
            xBox->add_button(Button::GetStandardText(StandardButtonType::No), BasicResponse::No);
            xBox->add_button(Button::GetStandardText(StandardButtonType::Cancel), BasicResponse::Cancel);

            if (nType & 256 || nType & 512)
                xBox->set_default_response(BasicResponse::Cancel);
            else
                xBox->set_default_response(BasicResponse::Yes);

            break;
        case 4: // MB_YESNO
            xBox->add_button(Button::GetStandardText(StandardButtonType::Yes), BasicResponse::Yes);
            xBox->add_button(Button::GetStandardText(StandardButtonType::No), BasicResponse::No);

            if (nType & 256 || nType & 512)
                xBox->set_default_response(BasicResponse::No);
            else
                xBox->set_default_response(BasicResponse::Yes);

            break;
        case 5: // MB_RETRYCANCEL
            xBox->add_button(Button::GetStandardText(StandardButtonType::Retry), BasicResponse::Retry);
            xBox->add_button(Button::GetStandardText(StandardButtonType::Cancel), BasicResponse::Cancel);

            if (nType & 256 || nType & 512)
                xBox->set_default_response(BasicResponse::Cancel);
            else
                xBox->set_default_response(BasicResponse::Retry);

            break;
    }
    else
    {
        nMappedRet = nButtonMap[ nRet ];
    }
    rPar.Get(0)->PutInteger( nMappedRet );
    pBox.disposeAndClear();

    xBox->set_title(aTitle);
    sal_Int16 nRet = xBox->run();
    rPar.Get(0)->PutInteger(nRet);
}

void SbRtl_SetAttr(StarBASIC *, SbxArray & rPar, bool)
diff --git a/chart2/source/controller/main/ChartController_Window.cxx b/chart2/source/controller/main/ChartController_Window.cxx
index 151b916..d00f9e7 100644
--- a/chart2/source/controller/main/ChartController_Window.cxx
+++ b/chart2/source/controller/main/ChartController_Window.cxx
@@ -73,6 +73,7 @@
#include <vcl/svapp.hxx>
#include <vcl/settings.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>
#include <rtl/math.hxx>
#include <svtools/acceleratorexecute.hxx>

@@ -1536,7 +1537,10 @@ bool ChartController::execute_KeyInput( const KeyEvent& rKEvt )
        bReturn = executeDispatch_Delete();
        if( ! bReturn )
        {
            ScopedVclPtrInstance<InfoBox>(pChartWindow, SchResId(STR_ACTION_NOTPOSSIBLE))->Execute();
            std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pChartWindow ? pChartWindow->GetFrameWeld() : nullptr,
                                                          VclMessageType::Info, VclButtonsType::Ok,
                                                          SchResId(STR_ACTION_NOTPOSSIBLE)));
            xInfoBox->run();
        }
    }

diff --git a/cui/source/customize/cfg.cxx b/cui/source/customize/cfg.cxx
index 94b02b8..7d5ce9d 100644
--- a/cui/source/customize/cfg.cxx
+++ b/cui/source/customize/cfg.cxx
@@ -3478,7 +3478,7 @@ SvxIconChangeDialog::SvxIconChangeDialog(
    pLineEditDescription->set_width_request(aSize.Width());
    pLineEditDescription->set_height_request(aSize.Height());

    pFImageInfo->SetImage(InfoBox::GetStandardImage());
    pFImageInfo->SetImage(GetStandardInfoBoxImage());
    pLineEditDescription->SetControlBackground( GetSettings().GetStyleSettings().GetDialogColor() );
    pLineEditDescription->SetText(aMessage);
}
diff --git a/cui/source/dialogs/SpellDialog.cxx b/cui/source/dialogs/SpellDialog.cxx
index 95e611a..2bc16dc 100644
--- a/cui/source/dialogs/SpellDialog.cxx
+++ b/cui/source/dialogs/SpellDialog.cxx
@@ -18,6 +18,7 @@
 */

#include <memory>
#include <vcl/weld.hxx>
#include <vcl/wrkwin.hxx>
#include <vcl/menu.hxx>
#include <vcl/layout.hxx>
@@ -900,7 +901,7 @@ void SpellDialog::AddToDictionaryExecute( sal_uInt16 nItemId, PopupMenu const *p
    }
    if (DictionaryError::NONE != nAddRes)
    {
        SvxDicError( this, nAddRes );
        SvxDicError(GetFrameWeld(), nAddRes);
        return; // don't continue
    }

diff --git a/cui/source/dialogs/cuigaldlg.cxx b/cui/source/dialogs/cuigaldlg.cxx
index ef138dc..7c64d61 100644
--- a/cui/source/dialogs/cuigaldlg.cxx
+++ b/cui/source/dialogs/cuigaldlg.cxx
@@ -25,7 +25,7 @@
#include <vcl/errinf.hxx>
#include <ucbhelper/content.hxx>
#include <vcl/svapp.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>
#include <vcl/weld.hxx>
#include <avmedia/mediawindow.hxx>
#include <unotools/pathoptions.hxx>
@@ -562,8 +562,10 @@ IMPL_LINK_NOARG(GalleryIdDialog, ClickOkHdl, Button*, void)

            aStr += " (" + pInfo->GetThemeName() + ")";

            ScopedVclPtrInstance< InfoBox > aBox( this, aStr );
            aBox->Execute();
            std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(GetFrameWeld(),
                                                          VclMessageType::Info, VclButtonsType::Ok,
                                                          aStr));
            xInfoBox->run();
            m_pLbResName->GrabFocus();
            bDifferentThemeExists = true;
        }
diff --git a/cui/source/dialogs/multipat.cxx b/cui/source/dialogs/multipat.cxx
index 27f5767..eccc815 100644
--- a/cui/source/dialogs/multipat.cxx
+++ b/cui/source/dialogs/multipat.cxx
@@ -21,7 +21,8 @@

#include <osl/file.hxx>
#include <tools/urlobj.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/svapp.hxx>
#include <vcl/weld.hxx>
#include <sfx2/filedlghelper.hxx>

#include <multipat.hxx>
@@ -92,7 +93,9 @@ IMPL_LINK_NOARG(SvxMultiPathDialog, AddHdl_Impl, Button*, void)
        {
            OUString sMsg( CuiResId( RID_MULTIPATH_DBL_ERR ) );
            sMsg = sMsg.replaceFirst( "%1", sInsPath );
            ScopedVclPtrInstance<InfoBox>(this, sMsg)->Execute();
            std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(GetFrameWeld(),
                                                          VclMessageType::Info, VclButtonsType::Ok, sMsg));
            xInfoBox->run();
        }

        SelectHdl_Impl( nullptr );
@@ -116,7 +119,9 @@ IMPL_LINK_NOARG(SvxPathSelectDialog, AddHdl_Impl, Button*, void)
        {
            OUString sMsg( CuiResId( RID_MULTIPATH_DBL_ERR ) );
            sMsg = sMsg.replaceFirst( "%1", sInsPath );
            ScopedVclPtrInstance<InfoBox>(this, sMsg)->Execute();
            std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(GetFrameWeld(),
                                                          VclMessageType::Info, VclButtonsType::Ok, sMsg));
            xInfoBox->run();
        }
        else
        {
diff --git a/cui/source/options/optdict.cxx b/cui/source/options/optdict.cxx
index 7b4e4ea..30eb207 100644
--- a/cui/source/options/optdict.cxx
+++ b/cui/source/options/optdict.cxx
@@ -180,7 +180,7 @@ IMPL_LINK_NOARG(SvxNewDictionaryDialog, OKHdl_Impl, Button*, void)
        xNewDic = nullptr;
        // error: couldn't create new dictionary
        SfxErrorContext aContext( ERRCTX_SVX_LINGU_DICTIONARY, OUString(),
            this, RID_SVXERRCTX, SvxResLocale() );
            GetFrameWeld(), RID_SVXERRCTX, SvxResLocale() );
        ErrorHandler::HandleError( *new StringErrorInfo(
                ERRCODE_SVX_LINGU_DICT_NOTWRITEABLE, sDict ) );
        EndDialog();
@@ -646,7 +646,7 @@ bool SvxEditDictionaryDialog::NewDelHdl(void const * pBtn)
             }
        }
        if (DictionaryError::NONE != nAddRes)
            SvxDicError( this, nAddRes );
            SvxDicError(GetFrameWeld(), nAddRes);

        if(DictionaryError::NONE == nAddRes && !sEntry.isEmpty())
        {
diff --git a/cui/source/options/treeopt.cxx b/cui/source/options/treeopt.cxx
index 877f2cf..8bfd346 100644
--- a/cui/source/options/treeopt.cxx
+++ b/cui/source/options/treeopt.cxx
@@ -101,7 +101,7 @@
#include <unotools/viewoptions.hxx>
#include <vcl/help.hxx>
#include <vcl/layout.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>
#include <vcl/waitobj.hxx>
#include <vcl/settings.hxx>
#include <svtools/treelistentry.hxx>
@@ -974,7 +974,10 @@ void OfaTreeOptionsDialog::SelectHdl_Impl()
                if(!pGroupInfo->m_pModule)
                {
                    pGroupInfo->m_bLoadError = true;
                    ScopedVclPtrInstance<InfoBox>(pBox, sNotLoadedError)->Execute();
                    std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pBox->GetFrameWeld(),
                                                                  VclMessageType::Info, VclButtonsType::Ok,
                                                                  sNotLoadedError));
                    xInfoBox->run();
                    return;
                }
                if(bIdentical)
diff --git a/cui/source/tabpages/backgrnd.cxx b/cui/source/tabpages/backgrnd.cxx
index ddf8dcb..a89591b 100644
--- a/cui/source/tabpages/backgrnd.cxx
+++ b/cui/source/tabpages/backgrnd.cxx
@@ -880,7 +880,7 @@ void SvxBackgroundTabPage::RaiseLoadError_Impl()
{
    SfxErrorContext aContext( ERRCTX_SVX_BACKGROUND,
                              OUString(),
                              this,
                              GetFrameWeld(),
                              RID_SVXERRCTX,
                              SvxResLocale() );

diff --git a/dbaccess/source/ui/dlg/generalpage.cxx b/dbaccess/source/ui/dlg/generalpage.cxx
index 28a79c0..12b1e62 100644
--- a/dbaccess/source/ui/dlg/generalpage.cxx
+++ b/dbaccess/source/ui/dlg/generalpage.cxx
@@ -29,7 +29,7 @@
#include <sfx2/filedlghelper.hxx>
#include <sfx2/docfilt.hxx>
#include <vcl/stdtext.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>
#include <svl/stritem.hxx>
#include <vcl/waitobj.hxx>
#include <com/sun/star/sdbc/XDriverAccess.hpp>
@@ -717,8 +717,10 @@ namespace dbaui
            if ( aFileDlg.GetCurrentFilter() != pFilter->GetUIName() || !pFilter->GetWildcard().Matches(sPath) )
            {
                OUString sMessage(DBA_RES(STR_ERR_USE_CONNECT_TO));
                ScopedVclPtrInstance< InfoBox > aError(this, sMessage);
                aError->Execute();
                std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(GetFrameWeld(),
                                                              VclMessageType::Info, VclButtonsType::Ok,
                                                              sMessage));
                xInfoBox->run();
                m_pRB_ConnectDatabase->Check();
                OnSetupModeSelected( m_pRB_ConnectDatabase );
                return;
diff --git a/dbaccess/source/ui/dlg/sqlmessage.cxx b/dbaccess/source/ui/dlg/sqlmessage.cxx
index 469102a..315bae0 100644
--- a/dbaccess/source/ui/dlg/sqlmessage.cxx
+++ b/dbaccess/source/ui/dlg/sqlmessage.cxx
@@ -622,7 +622,7 @@ void OSQLMessageBox::Construct( MessBoxStyle _nStyle, MessageType _eImage )
            OSL_FAIL( "OSQLMessageBox::impl_initImage: unsupported image type!" );
            SAL_FALLTHROUGH;
        case Info:
            m_aInfoImage->SetImage(InfoBox::GetStandardImage());
            m_aInfoImage->SetImage(GetStandardInfoBoxImage());
            break;
        case Warning:
            m_aInfoImage->SetImage(WarningBox::GetStandardImage());
diff --git a/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx b/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx
index 5351959..8937943 100644
--- a/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx
+++ b/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx
@@ -36,7 +36,7 @@
#include <com/sun/star/container/XNameAccess.hpp>
#include <stringconstants.hxx>
#include "QTableWindow.hxx"
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>
#include <vcl/settings.hxx>
#include "QueryDesignFieldUndoAct.hxx"
#include <sqlmessage.hxx>
@@ -523,7 +523,10 @@ void OSelectionBrowseBox::InitController(CellControllerRef& /*rController*/, lon
                m_pVisibleCell->GetBox().EnableInput(false);
                OUString aMessage(DBA_RES(STR_QRY_ORDERBY_UNRELATED));
                OQueryDesignView* paDView = getDesignView();
                ScopedVclPtrInstance<InfoBox>(paDView, aMessage)->Execute();
                std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(paDView ? paDView->GetFrameWeld() : nullptr,
                                                              VclMessageType::Info, VclButtonsType::Ok,
                                                              aMessage));
                xInfoBox->run();
            }
        }   break;
        case BROW_ORDER_ROW:
diff --git a/editeng/source/editeng/editdbg.cxx b/editeng/source/editeng/editdbg.cxx
index 297fbf7..3dbdadb 100644
--- a/editeng/source/editeng/editdbg.cxx
+++ b/editeng/source/editeng/editdbg.cxx
@@ -21,7 +21,7 @@
#include <memory>
#include <vcl/wrkwin.hxx>
#include <vcl/dialog.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>
#include <vcl/svapp.hxx>

#include <editeng/lspcitem.hxx>
@@ -482,7 +482,12 @@ void EditDbg::ShowEditEngineData( EditEngine* pEE, bool bInfoBox )
    }
    fclose( fp );
    if ( bInfoBox )
        ScopedVclPtrInstance<InfoBox>(nullptr, OUString( "D:\\DEBUG.LOG !" ) )->Execute();
    {
        std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(nullptr,
                                                      VclMessageType::Info, VclButtonsType::Ok,
                                                      "D:\\DEBUG.LOG !" ));
        xInfoBox->run();
    }
}
#endif

diff --git a/editeng/source/editeng/editeng.cxx b/editeng/source/editeng/editeng.cxx
index a822a23..0e5fdd3 100644
--- a/editeng/source/editeng/editeng.cxx
+++ b/editeng/source/editeng/editeng.cxx
@@ -21,7 +21,7 @@
#include <comphelper/lok.hxx>
#include <vcl/wrkwin.hxx>
#include <vcl/dialog.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>
#include <vcl/svapp.hxx>

#include <svtools/ctrltool.hxx>
@@ -1042,7 +1042,11 @@ bool EditEngine::PostKeyEvent( const KeyEvent& rKeyEvent, EditView* pEditView, v
                    bDebugPaint = !bDebugPaint;
                    OStringBuffer aInfo("DebugPaint: ");
                    aInfo.append(bDebugPaint ? "On" : "Off");
                    ScopedVclPtrInstance<InfoBox>(nullptr, OStringToOUString(aInfo.makeStringAndClear(), RTL_TEXTENCODING_ASCII_US))->Execute();
                    std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(nullptr,
                                                                  VclMessageType::Info, VclButtonsType::Ok,
                                                                  OStringToOUString(aInfo.makeStringAndClear(), RTL_TEXTENCODING_ASCII_US)));
                    xInfoBox->run();

                }
                bDone = false;
            }
diff --git a/editeng/source/misc/unolingu.cxx b/editeng/source/misc/unolingu.cxx
index 57c03f2..6263a0d 100644
--- a/editeng/source/misc/unolingu.cxx
+++ b/editeng/source/misc/unolingu.cxx
@@ -44,8 +44,8 @@
#include <unotools/localfilehelper.hxx>
#include <ucbhelper/commandenvironment.hxx>
#include <ucbhelper/content.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/svapp.hxx>
#include <vcl/weld.hxx>
#include <linguistic/misc.hxx>
#include <editeng/eerdll.hxx>
#include <editeng/editrids.hrc>
@@ -727,7 +727,7 @@ SvxDicListChgClamp::~SvxDicListChgClamp()
    }
}

short SvxDicError( vcl::Window *pParent, linguistic::DictionaryError nError )
short SvxDicError(weld::Window *pParent, linguistic::DictionaryError nError)
{
    short nRes = 0;
    if (linguistic::DictionaryError::NONE != nError)
@@ -741,7 +741,11 @@ short SvxDicError( vcl::Window *pParent, linguistic::DictionaryError nError )
                pRid = RID_SVXSTR_DIC_ERR_UNKNOWN;
                SAL_WARN("editeng", "unexpected case");
        }
        nRes = ScopedVclPtrInstance<InfoBox>(pParent, EditResId(pRid))->Execute();
        std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pParent,
                                                      VclMessageType::Info, VclButtonsType::Ok,
                                                      EditResId(pRid)));
        nRes = xInfoBox->run();

    }
    return nRes;
}
diff --git a/extensions/source/propctrlr/propcontroller.cxx b/extensions/source/propctrlr/propcontroller.cxx
index 539e5be..6b19672 100644
--- a/extensions/source/propctrlr/propcontroller.cxx
+++ b/extensions/source/propctrlr/propcontroller.cxx
@@ -42,7 +42,7 @@
#include <toolkit/awt/vclxwindow.hxx>
#include <toolkit/helper/vclunohelper.hxx>
#include <comphelper/property.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>
#include <vcl/svapp.hxx>
#include <vcl/tabpage.hxx>
#include <osl/mutex.hxx>
@@ -1376,7 +1376,10 @@ namespace pcr
        }
        catch(const PropertyVetoException& eVetoException)
        {
            ScopedVclPtrInstance<InfoBox>(m_pView, eVetoException.Message)->Execute();
            std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(m_pView ? m_pView->GetFrameWeld() : nullptr,
                                                          VclMessageType::Info, VclButtonsType::Ok,
                                                          eVetoException.Message));
            xInfoBox->run();
            PropertyHandlerRef handler = impl_getHandlerForProperty_throw( rName );
            Any aNormalizedValue = handler->getPropertyValue( rName );
            getPropertyBox().SetPropertyValue( rName, aNormalizedValue, false );
diff --git a/extensions/source/update/ui/updatecheckui.cxx b/extensions/source/update/ui/updatecheckui.cxx
index 82e8e55..b633fa7 100644
--- a/extensions/source/update/ui/updatecheckui.cxx
+++ b/extensions/source/update/ui/updatecheckui.cxx
@@ -269,7 +269,7 @@ Image UpdateCheckUI::GetBubbleImage( OUString const &rURL )
    }

    if ( aImage.GetSizePixel().Width() == 0 )
        aImage = InfoBox::GetStandardImage();
        aImage = GetStandardInfoBoxImage();

    return aImage;
}
@@ -777,7 +777,6 @@ void BubbleWindow::Paint(vcl::RenderContext& /*rRenderContext*/, const tools::Re
              aThickLine );
    SetLineColor( aOldLine );

    //Image aImage = InfoBox::GetStandardImage();
    Size aImgSize = maBubbleImage.GetSizePixel();

    DrawImage( Point( BUBBLE_BORDER, BUBBLE_BORDER + TIP_HEIGHT ), maBubbleImage );
@@ -820,7 +819,6 @@ void BubbleWindow::Show( bool bVisible, ShowFlags nFlags )

    Size aWindowSize = GetSizePixel();

    // Image aImage = InfoBox::GetStandardImage();
    Size aImgSize = maBubbleImage.GetSizePixel();

    RecalcTextRects();
diff --git a/filter/source/graphicfilter/eps/eps.cxx b/filter/source/graphicfilter/eps/eps.cxx
index 4a47345..8dc1258 100644
--- a/filter/source/graphicfilter/eps/eps.cxx
+++ b/filter/source/graphicfilter/eps/eps.cxx
@@ -39,6 +39,7 @@
#include <vcl/fltcall.hxx>
#include <vcl/FilterConfigItem.hxx>
#include <vcl/graphictools.hxx>
#include <vcl/weld.hxx>
#include <strings.hrc>

#include <math.h>
@@ -439,8 +440,10 @@ bool PSWriter::WritePS( const Graphic& rGraphic, SvStream& rTargetStream, Filter
    if ( mbStatus && mnLevelWarning && pFilterConfigItem )
    {
        std::locale loc = Translate::Create("flt");
        ScopedVclPtrInstance< InfoBox > aInfoBox(nullptr, Translate::get(KEY_VERSION_CHECK, loc));
        aInfoBox->Execute();
        std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(nullptr,
                                                      VclMessageType::Info, VclButtonsType::Ok,
                                                      Translate::get(KEY_VERSION_CHECK, loc)));
        xInfoBox->run();
    }

    if ( xStatusIndicator.is() )
diff --git a/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx b/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx
index 80023a4..88918bc 100644
--- a/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx
+++ b/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx
@@ -30,9 +30,10 @@
#include <unotools/pathoptions.hxx>
#include <osl/file.hxx>
#include <o3tl/enumrange.hxx>
#include <vcl/builderfactory.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/svapp.hxx>
#include <vcl/builderfactory.hxx>
#include <vcl/weld.hxx>
#include <sfx2/filedlghelper.hxx>
#include <svtools/treelistentry.hxx>

@@ -902,8 +903,10 @@ void XMLFilterSettingsDialog::onSave()
            aMsg = aMsg.replaceFirst( sPlaceholder, aURL.GetName() );
        }

        ScopedVclPtrInstance< InfoBox > aBox(this, aMsg );
        aBox->Execute();
        std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(GetFrameWeld(),
                                                      VclMessageType::Info, VclButtonsType::Ok,
                                                      aMsg));
        xInfoBox->run();
    }
}

@@ -967,8 +970,10 @@ void XMLFilterSettingsDialog::onOpen()
            aMsg = aMsg.replaceFirst( sPlaceholder, OUString::number( nFilters ) );
        }

        ScopedVclPtrInstance< InfoBox > aBox(this, aMsg );
        aBox->Execute();
        std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(GetFrameWeld(),
                                                      VclMessageType::Info, VclButtonsType::Ok,
                                                      aMsg));
        xInfoBox->run();
    }
}

diff --git a/include/editeng/unolingu.hxx b/include/editeng/unolingu.hxx
index 7880778..4575e20 100644
--- a/include/editeng/unolingu.hxx
+++ b/include/editeng/unolingu.hxx
@@ -34,7 +34,7 @@

class LinguMgrExitLstnr;

namespace vcl { class Window; }
namespace weld { class Window; }
namespace linguistic { enum class DictionaryError; }


@@ -125,7 +125,7 @@ public:
    ~SvxDicListChgClamp();
};

EDITENG_DLLPUBLIC short SvxDicError( vcl::Window *pParent, linguistic::DictionaryError nError );
EDITENG_DLLPUBLIC short SvxDicError(weld::Window *pParent, linguistic::DictionaryError nError);


#endif
diff --git a/include/svtools/ehdl.hxx b/include/svtools/ehdl.hxx
index 2042d70..2efbb76 100644
--- a/include/svtools/ehdl.hxx
+++ b/include/svtools/ehdl.hxx
@@ -29,16 +29,16 @@ typedef std::pair<const char*, ErrCode> ErrMsgCode;
SVT_DLLPUBLIC extern const ErrMsgCode RID_ERRHDL[];
SVT_DLLPUBLIC extern const ErrMsgCode RID_ERRCTX[];

namespace vcl { class Window; }
namespace weld { class Window; }

class SVT_DLLPUBLIC SfxErrorContext : private ErrorContext
{
public:
    SfxErrorContext(
            sal_uInt16 nCtxIdP, vcl::Window *pWin=nullptr,
            sal_uInt16 nCtxIdP, weld::Window *pWin=nullptr,
            const ErrMsgCode* pIds = nullptr, const std::locale& rResLocaleP = SvtResLocale());
    SfxErrorContext(
            sal_uInt16 nCtxIdP, const OUString &aArg1, vcl::Window *pWin=nullptr,
            sal_uInt16 nCtxIdP, const OUString &aArg1, weld::Window *pWin=nullptr,
            const ErrMsgCode* pIds = nullptr, const std::locale& rResLocaleP = SvtResLocale());
    bool GetString(ErrCode nErrId, OUString &rStr) override;

diff --git a/include/vcl/builder.hxx b/include/vcl/builder.hxx
index d9d5000..bb66872 100644
--- a/include/vcl/builder.hxx
+++ b/include/vcl/builder.hxx
@@ -126,12 +126,10 @@ private:
    {
        OString m_sID;
        VclPtr<vcl::Window> m_pWindow;
        short m_nResponseId;
        PackingData m_aPackingData;
        WinAndId(const OString &rId, vcl::Window *pWindow, bool bVertical)
            : m_sID(rId)
            , m_pWindow(pWindow)
            , m_nResponseId(RET_CANCEL)
            , m_aPackingData(bVertical)
        {
        }
diff --git a/include/vcl/dialog.hxx b/include/vcl/dialog.hxx
index 24e0dfd..8695cc4 100644
--- a/include/vcl/dialog.hxx
+++ b/include/vcl/dialog.hxx
@@ -29,6 +29,7 @@
#include <vcl/abstdlg.hxx>

struct DialogImpl;
class PushButton;
class VclBox;
class VclButtonBox;

@@ -69,7 +70,8 @@ private:
    SAL_DLLPRIVATE         Dialog (const Dialog &) = delete;
    SAL_DLLPRIVATE         Dialog & operator= (const Dialog &) = delete;

    DECL_DLLPRIVATE_LINK( ImplAsyncCloseHdl, void*, void );
    DECL_DLLPRIVATE_LINK(ImplAsyncCloseHdl, void*, void);
    DECL_DLLPRIVATE_LINK(ResponseHdl, Button*, void);

protected:
    using Window::ImplInit;
@@ -78,6 +80,7 @@ protected:
public:
    SAL_DLLPRIVATE bool    IsInClose() const { return mbInClose; }
    virtual        void    doDeferredInit(WinBits nBits) override;
    SAL_DLLPRIVATE void    disposeOwnedButtons();

protected:
    explicit        Dialog( WindowType nType );
@@ -170,6 +173,9 @@ public:

    void            GrabFocusToFirstControl();
    virtual void    Resize() override;

    void            add_button(PushButton* pButton, int nResponse, bool bTransferOwnership);
    void            set_default_response(int nResponse);
};

class VCL_DLLPUBLIC ModelessDialog : public Dialog
diff --git a/include/vcl/errinf.hxx b/include/vcl/errinf.hxx
index f4edc53..95e1621 100644
--- a/include/vcl/errinf.hxx
+++ b/include/vcl/errinf.hxx
@@ -31,6 +31,7 @@
#include <limits.h>

namespace vcl { class Window; }
namespace weld { class Window; }

class ErrorHandler;
class ErrorContext;
@@ -43,7 +44,7 @@ enum class DialogMask;
typedef void (* DisplayFnPtr)();

typedef DialogMask WindowDisplayErrorFunc(
    vcl::Window*, DialogMask eMask, const OUString &rErr, const OUString &rAction);
    weld::Window*, DialogMask eMask, const OUString &rErr, const OUString &rAction);

typedef void BasicDisplayErrorFunc(
    const OUString &rErr, const OUString &rAction);
@@ -99,7 +100,7 @@ namespace o3tl
}

typedef DialogMask WindowDisplayErrorFunc(
    vcl::Window*, DialogMask nMask, const OUString &rErr, const OUString &rAction);
    weld::Window*, DialogMask nMask, const OUString &rErr, const OUString &rAction);

typedef void BasicDisplayErrorFunc(
    const OUString &rErr, const OUString &rAction);
@@ -128,7 +129,7 @@ public:

        @return what sort of dialog to use, with what buttons
    */
    static DialogMask       HandleError(ErrCode nId, vcl::Window* pParent = nullptr, DialogMask nMask = DialogMask::MAX);
    static DialogMask       HandleError(ErrCode nId, weld::Window* pParent = nullptr, DialogMask nMask = DialogMask::MAX);
    static bool             GetErrorString(ErrCode nId, OUString& rStr);

protected:
@@ -204,11 +205,11 @@ class SAL_WARN_UNUSED VCL_DLLPUBLIC ErrorContext
    friend class ErrorHandler;

public:
                            ErrorContext(vcl::Window *pWin);
                            ErrorContext(weld::Window *pWin);
    virtual                 ~ErrorContext();

    virtual bool            GetString(ErrCode nErrId, OUString& rCtxStr) = 0;
    vcl::Window*            GetParent();
    weld::Window*           GetParent();

    static ErrorContext*    GetContext();

diff --git a/include/vcl/messagedialog.hxx b/include/vcl/messagedialog.hxx
index 6de75a9..1cce2f4 100644
--- a/include/vcl/messagedialog.hxx
+++ b/include/vcl/messagedialog.hxx
@@ -26,13 +26,8 @@ private:
    VclPtr<FixedImage> m_pImage;
    VclPtr<VclMultiLineEdit> m_pPrimaryMessage;
    VclPtr<VclMultiLineEdit> m_pSecondaryMessage;
    std::vector<VclPtr<PushButton>> m_aOwnedButtons;
    std::map<VclPtr<const vcl::Window>, short> m_aResponses;
    OUString m_sPrimaryString;
    OUString m_sSecondaryString;
    DECL_DLLPRIVATE_LINK(ButtonHdl, Button*, void);
    void setButtonHandlers(VclButtonBox const* pButtonBox);
    short get_response(const vcl::Window* pWindow) const;
    void create_owned_areas();

    friend class VclPtr<MessageDialog>;
@@ -45,8 +40,6 @@ public:
    MessageDialog(vcl::Window* pParent, const OString& rID, const OUString& rUIXMLDescription);
    virtual bool set_property(const OString& rKey, const OUString& rValue) override;
    virtual short Execute() override;
    ///Emitted when an action widget is clicked
    virtual void response(short nResponseId);
    OUString const& get_primary_text() const;
    OUString const& get_secondary_text() const;
    void set_primary_text(const OUString& rPrimaryString);
diff --git a/include/vcl/msgbox.hxx b/include/vcl/msgbox.hxx
index 7c982cc..203d3ea 100644
--- a/include/vcl/msgbox.hxx
+++ b/include/vcl/msgbox.hxx
@@ -88,16 +88,8 @@ public:
    virtual Size        GetOptimalSize() const override;
};

class VCL_DLLPUBLIC InfoBox : public MessBox
{
public:
                        InfoBox( vcl::Window* pParent, const OUString& rMessage );
                        InfoBox( vcl::Window* pParent, MessBoxStyle nStyle,
                                const OUString& rMessage );

    static Image const & GetStandardImage();
    static OUString     GetStandardText();
};
VCL_DLLPUBLIC Image const & GetStandardInfoBoxImage();
VCL_DLLPUBLIC OUString GetStandardInfoBoxText();

class VCL_DLLPUBLIC WarningBox : public MessBox
{
diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx
index bfc6a7e..69674ab 100644
--- a/include/vcl/weld.hxx
+++ b/include/vcl/weld.hxx
@@ -96,6 +96,8 @@ class VCL_DLLPUBLIC Dialog : virtual public Window
public:
    virtual int run() = 0;
    virtual void response(int response) = 0;
    virtual void add_button(const OUString& rText, int response) = 0;
    virtual void set_default_response(int response) = 0;
};

class VCL_DLLPUBLIC MessageDialog : virtual public Dialog
diff --git a/sc/source/core/data/dpobject.cxx b/sc/source/core/data/dpobject.cxx
index 0bafb21..c806f05 100644
--- a/sc/source/core/data/dpobject.cxx
+++ b/sc/source/core/data/dpobject.cxx
@@ -73,7 +73,8 @@
#include <tools/debug.hxx>
#include <tools/diagnose_ex.h>
#include <svl/zforlist.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/svapp.hxx>
#include <vcl/weld.hxx>

#include <utility>
#include <vector>
@@ -3308,8 +3309,10 @@ uno::Reference<sdbc::XRowSet> ScDPCollection::DBCaches::createRowSet(
    catch ( const sdbc::SQLException& rError )
    {
        //! store error message
        ScopedVclPtrInstance< InfoBox > aInfoBox( nullptr, rError.Message );
        aInfoBox->Execute();
        std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(nullptr,
                                                      VclMessageType::Info, VclButtonsType::Ok,
                                                      rError.Message));
        xInfoBox->run();
    }
    catch ( uno::Exception& )
    {
diff --git a/sc/source/ui/dbgui/consdlg.cxx b/sc/source/ui/dbgui/consdlg.cxx
index 7d1ccc0..0e3e098 100644
--- a/sc/source/ui/dbgui/consdlg.cxx
+++ b/sc/source/ui/dbgui/consdlg.cxx
@@ -32,9 +32,19 @@
#include <strings.hrc>

#include <consdlg.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/svapp.hxx>
#include <vcl/weld.hxx>

#define INFOBOX(id) ScopedVclPtrInstance<InfoBox>(this, ScGlobal::GetRscString(id))->Execute()
namespace
{
    void INFOBOX(weld::Window* pWindow, const char* id)
    {
        std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWindow,
                                                      VclMessageType::Info, VclButtonsType::Ok,
                                                      ScGlobal::GetRscString(id)));
        xInfoBox->run();
    }
}

class ScAreaData
{
@@ -406,7 +416,7 @@ IMPL_LINK_NOARG(ScConsolidateDlg, OkHdl, Button*, void)
        }
        else
        {
            INFOBOX( STR_INVALID_TABREF );
            INFOBOX(GetFrameWeld(), STR_INVALID_TABREF);
            pEdDestArea->GrabFocus();
        }
    }
@@ -461,11 +471,11 @@ IMPL_LINK( ScConsolidateDlg, ClickHdl, Button*, pBtn, void )
                if ( pLbConsAreas->GetEntryPos( aNewArea ) == LISTBOX_ENTRY_NOTFOUND )
                    pLbConsAreas->InsertEntry( aNewArea );
                else
                    INFOBOX( STR_AREA_ALREADY_INSERTED );
                    INFOBOX(GetFrameWeld(), STR_AREA_ALREADY_INSERTED);
            }
            else
            {
                INFOBOX( STR_INVALID_TABREF );
                INFOBOX(GetFrameWeld(), STR_INVALID_TABREF);
                pEdDataArea->GrabFocus();
            }
        }
diff --git a/sc/source/ui/dbgui/scendlg.cxx b/sc/source/ui/dbgui/scendlg.cxx
index b914ed2..77eb9ba 100644
--- a/sc/source/ui/dbgui/scendlg.cxx
+++ b/sc/source/ui/dbgui/scendlg.cxx
@@ -26,7 +26,7 @@
#include <svx/xtable.hxx>
#include <sfx2/objsh.hxx>
#include <unotools/useroptions.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>
#include <unotools/localedatawrapper.hxx>

#include <global.hxx>
@@ -151,12 +151,18 @@ IMPL_LINK_NOARG(ScNewScenarioDlg, OkHdl, Button*, void)

    if ( !ScDocument::ValidTabName( aName ) )
    {
        ScopedVclPtrInstance<InfoBox>(this, ScGlobal::GetRscString(STR_INVALIDTABNAME))->Execute();
        std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(GetFrameWeld(),
                                                      VclMessageType::Info, VclButtonsType::Ok,
                                                      ScGlobal::GetRscString(STR_INVALIDTABNAME)));
        xInfoBox->run();
        m_pEdName->GrabFocus();
    }
    else if ( !bIsEdit && !pDoc->ValidNewTabName( aName ) )
    {
        ScopedVclPtrInstance<InfoBox>(this, ScGlobal::GetRscString(STR_NEWTABNAMENOTUNIQUE))->Execute();
        std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(GetFrameWeld(),
                                                      VclMessageType::Info, VclButtonsType::Ok,
                                                      ScGlobal::GetRscString(STR_NEWTABNAMENOTUNIQUE)));
        xInfoBox->run();
        m_pEdName->GrabFocus();
    }
    else
diff --git a/sc/source/ui/docshell/arealink.cxx b/sc/source/ui/docshell/arealink.cxx
index 63ea2ad..e9ce36f 100644
--- a/sc/source/ui/docshell/arealink.cxx
+++ b/sc/source/ui/docshell/arealink.cxx
@@ -23,7 +23,7 @@
#include <sfx2/fcontnr.hxx>
#include <sfx2/linkmgr.hxx>
#include <svl/stritem.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>

#include <arealink.hxx>

@@ -463,9 +463,11 @@ bool ScAreaLink::Refresh( const OUString& rNewFile, const OUString& rNewFilter,

        //! Link dialog must set default parent
        //  "cannot insert rows"
        ScopedVclPtrInstance<InfoBox> aBox( Application::GetDefDialogParent(),
                                            ScGlobal::GetRscString( STR_MSSG_DOSUBTOTALS_2 ) );
        aBox->Execute();
        vcl::Window* pWin = Application::GetDefDialogParent();
        std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWin ? pWin->GetFrameWeld() : nullptr,
                                                      VclMessageType::Info, VclButtonsType::Ok,
                                                      ScGlobal::GetRscString(STR_MSSG_DOSUBTOTALS_2)));
        xInfoBox->run();
    }

    //  clean up
diff --git a/sc/source/ui/docshell/dbdocfun.cxx b/sc/source/ui/docshell/dbdocfun.cxx
index 50e0f5b..1c41390 100644
--- a/sc/source/ui/docshell/dbdocfun.cxx
+++ b/sc/source/ui/docshell/dbdocfun.cxx
@@ -19,6 +19,7 @@

#include <sfx2/app.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>
#include <vcl/waitobj.hxx>
#include <svx/dataaccessdescriptor.hxx>
#include <svx/svdpage.hxx>
@@ -1670,9 +1671,11 @@ void ScDBDocFunc::UpdateImport( const OUString& rTarget, const svx::ODataAccessD
    const ScDBData* pData = rDBColl.getNamedDBs().findByUpperName(ScGlobal::pCharClass->uppercase(rTarget));
    if (!pData)
    {
        ScopedVclPtrInstance<InfoBox> aInfoBox( ScDocShell::GetActiveDialogParent(),
                                                ScGlobal::GetRscString( STR_TARGETNOTFOUND ) );
        aInfoBox->Execute();
        vcl::Window* pWin = ScDocShell::GetActiveDialogParent();
        std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWin ? pWin->GetFrameWeld() : nullptr,
                                                      VclMessageType::Info, VclButtonsType::Ok,
                                                      ScGlobal::GetRscString(STR_TARGETNOTFOUND)));
        xInfoBox->run();
        return;
    }

diff --git a/sc/source/ui/docshell/dbdocimp.cxx b/sc/source/ui/docshell/dbdocimp.cxx
index d83fb8b..ad04819 100644
--- a/sc/source/ui/docshell/dbdocimp.cxx
+++ b/sc/source/ui/docshell/dbdocimp.cxx
@@ -20,7 +20,7 @@
#include <vcl/errinf.hxx>
#include <comphelper/processfactory.hxx>
#include <comphelper/types.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>
#include <svx/dataaccessdescriptor.hxx>
#include <sfx2/viewfrm.hxx>

@@ -616,8 +616,11 @@ bool ScDBDocFunc::DoImport( SCTAB nTab, const ScImportParam& rParam,
                pErrStringId = STR_MSSG_IMPORTDATA_0;
            aErrorMessage = ScGlobal::GetRscString(pErrStringId);
        }
        ScopedVclPtrInstance< InfoBox > aInfoBox( ScDocShell::GetActiveDialogParent(), aErrorMessage );
        aInfoBox->Execute();
        vcl::Window* pWin = ScDocShell::GetActiveDialogParent();
        std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWin ? pWin->GetFrameWeld() : nullptr,
                                                      VclMessageType::Info, VclButtonsType::Ok,
                                                      aErrorMessage));
        xInfoBox->run();
    }

    delete pImportDoc;
diff --git a/sc/source/ui/docshell/docfunc.cxx b/sc/source/ui/docshell/docfunc.cxx
index 430da19..4ac78e1 100644
--- a/sc/source/ui/docshell/docfunc.cxx
+++ b/sc/source/ui/docshell/docfunc.cxx
@@ -25,6 +25,7 @@
#include <sfx2/linkmgr.hxx>
#include <sfx2/bindings.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>
#include <vcl/virdev.hxx>
#include <vcl/waitobj.hxx>
#include <svl/PasswordHelper.hxx>
@@ -394,8 +395,10 @@ bool ScDocFunc::DetectiveMarkInvalid(SCTAB nTab)
        aModificator.SetDocumentModified();
        if ( bOverflow )
        {
            ScopedVclPtrInstance<InfoBox>( nullptr,
                    ScGlobal::GetRscString( STR_DETINVALID_OVERFLOW ) )->Execute();
            std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(nullptr,
                                                          VclMessageType::Info, VclButtonsType::Ok,
                                                          ScGlobal::GetRscString(STR_DETINVALID_OVERFLOW)));
            xInfoBox->run();
        }
    }
    else
@@ -3911,8 +3914,11 @@ bool ScDocFunc::Unprotect( SCTAB nTab, const OUString& rPassword, bool bApi )
        {
            if (!bApi)
            {
                ScopedVclPtrInstance< InfoBox > aBox( ScDocShell::GetActiveDialogParent(), ScResId( SCSTR_WRONGPASSWORD ) );
                aBox->Execute();
                vcl::Window* pWin = ScDocShell::GetActiveDialogParent();
                std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWin ? pWin->GetFrameWeld() : nullptr,
                                                              VclMessageType::Info, VclButtonsType::Ok,
                                                              ScResId(SCSTR_WRONGPASSWORD)));
                xInfoBox->run();
            }
            return false;
        }
@@ -3941,8 +3947,11 @@ bool ScDocFunc::Unprotect( SCTAB nTab, const OUString& rPassword, bool bApi )
        {
            if (!bApi)
            {
                ScopedVclPtrInstance< InfoBox > aBox( ScDocShell::GetActiveDialogParent(), ScResId( SCSTR_WRONGPASSWORD ) );
                aBox->Execute();
                vcl::Window* pWin = ScDocShell::GetActiveDialogParent();
                std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWin ? pWin->GetFrameWeld() : nullptr,
                                                              VclMessageType::Info, VclButtonsType::Ok,
                                                              ScResId(SCSTR_WRONGPASSWORD)));
                xInfoBox->run();
            }
            return false;
        }
diff --git a/sc/source/ui/docshell/docsh3.cxx b/sc/source/ui/docshell/docsh3.cxx
index 8eae040..f13a231 100644
--- a/sc/source/ui/docshell/docsh3.cxx
+++ b/sc/source/ui/docshell/docsh3.cxx
@@ -34,6 +34,7 @@
#include <unotools/misccfg.hxx>
#include <vcl/virdev.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>

#include <docsh.hxx>
#include "docshimp.hxx"
@@ -1317,8 +1318,11 @@ bool ScDocShell::MergeSharedDocument( ScDocShell* pSharedDocShell )
        PostPaintExtras();
        PostPaintGridAll();

        ScopedVclPtrInstance< InfoBox > aInfoBox( GetActiveDialogParent(), ScGlobal::GetRscString( STR_DOC_UPDATED ) );
        aInfoBox->Execute();
        vcl::Window* pWin = GetActiveDialogParent();
        std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWin ? pWin->GetFrameWeld() : nullptr,
                                                      VclMessageType::Info, VclButtonsType::Ok,
                                                      ScGlobal::GetRscString(STR_DOC_UPDATED)));
        xInfoBox->run();
    }

    return ( pThisAction != nullptr );
diff --git a/sc/source/ui/docshell/docsh4.cxx b/sc/source/ui/docshell/docsh4.cxx
index 8721cec..749ec29 100644
--- a/sc/source/ui/docshell/docsh4.cxx
+++ b/sc/source/ui/docshell/docsh4.cxx
@@ -44,6 +44,7 @@ using namespace ::com::sun::star;
#include <svx/ofaitem.hxx>
#include <svl/whiter.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>
#include <vcl/waitobj.hxx>
#include <svx/dataaccessdescriptor.hxx>
#include <svx/drawitem.hxx>
@@ -1293,9 +1294,11 @@ bool ScDocShell::ExecuteChangeProtectionDialog( bool bJustQueryIfProtected )
                }
                else
                {
                    ScopedVclPtrInstance<InfoBox> aBox( GetActiveDialogParent(),
                        ScResId( SCSTR_WRONGPASSWORD ) );
                    aBox->Execute();
                    vcl::Window* pWin = ScDocShell::GetActiveDialogParent();
                    std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWin ? pWin->GetFrameWeld() : nullptr,
                                                                  VclMessageType::Info, VclButtonsType::Ok,
                                                                  ScResId(SCSTR_WRONGPASSWORD)));
                    xInfoBox->run();
                }
            }
            else
@@ -1629,10 +1632,12 @@ void ScDocShell::PageStyleModified( const OUString& rStyleName, bool bApi )

        if (bWarn && !bApi)
        {
            ScWaitCursorOff aWaitOff( GetActiveDialogParent() );
            ScopedVclPtrInstance<InfoBox> aInfoBox(GetActiveDialogParent(),
                                                   ScGlobal::GetRscString(STR_PRINT_INVALID_AREA));
            aInfoBox->Execute();
            vcl::Window* pWin = GetActiveDialogParent();
            ScWaitCursorOff aWaitOff(pWin);
            std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWin ? pWin->GetFrameWeld() : nullptr,
                                                          VclMessageType::Info, VclButtonsType::Ok,
                                                          ScGlobal::GetRscString(STR_PRINT_INVALID_AREA)));
            xInfoBox->run();
        }
    }

diff --git a/sc/source/ui/docshell/docsh5.cxx b/sc/source/ui/docshell/docsh5.cxx
index d55f0f2..8b1730a 100644
--- a/sc/source/ui/docshell/docsh5.cxx
+++ b/sc/source/ui/docshell/docsh5.cxx
@@ -23,7 +23,7 @@
#include <cassert>

#include <scitems.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>
#include <vcl/waitobj.hxx>
#include <sfx2/app.hxx>
#include <sfx2/bindings.hxx>
@@ -82,8 +82,11 @@ void ScDocShell::ErrorMessage(const char* pGlobStrId)
        }
    }

    ScopedVclPtrInstance< InfoBox > aBox( pParent, ScGlobal::GetRscString(pGlobStrId));
    aBox->Execute();
    std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pParent ? pParent->GetFrameWeld() : nullptr,
                                                  VclMessageType::Info, VclButtonsType::Ok,
                                                  ScGlobal::GetRscString(pGlobStrId)));
    xInfoBox->run();

    if (bFocus)
        pParent->GrabFocus();
}
@@ -519,9 +522,11 @@ void ScDocShell::DoConsolidate( const ScConsolidateParam& rParam, bool bRecord )

    if (bErr)
    {
        ScopedVclPtrInstance<InfoBox> aBox( GetActiveDialogParent(),
                ScGlobal::GetRscString( STR_CONSOLIDATE_ERR1 ) );
        aBox->Execute();
        vcl::Window* pWin = GetActiveDialogParent();
        std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWin ? pWin->GetFrameWeld() : nullptr,
                                                      VclMessageType::Info, VclButtonsType::Ok,
                                                      ScGlobal::GetRscString(STR_CONSOLIDATE_ERR1)));
        xInfoBox->run();
        return;
    }

@@ -729,16 +734,20 @@ void ScDocShell::UseScenario( SCTAB nTab, const OUString& rName, bool bRecord )
            }
            else
            {
                ScopedVclPtrInstance<InfoBox> aBox( GetActiveDialogParent(),
                    ScGlobal::GetRscString( STR_PROTECTIONERR ) );
                aBox->Execute();
                vcl::Window* pWin = GetActiveDialogParent();
                std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWin ? pWin->GetFrameWeld() : nullptr,
                                                              VclMessageType::Info, VclButtonsType::Ok,
                                                              ScGlobal::GetRscString(STR_PROTECTIONERR)));
                xInfoBox->run();
            }
        }
        else
        {
            ScopedVclPtrInstance<InfoBox> aBox(GetActiveDialogParent(),
                ScGlobal::GetRscString( STR_SCENARIO_NOTFOUND ) );
            aBox->Execute();
            vcl::Window* pWin = GetActiveDialogParent();
            std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWin ? pWin->GetFrameWeld() : nullptr,
                                                          VclMessageType::Info, VclButtonsType::Ok,
                                                          ScGlobal::GetRscString(STR_SCENARIO_NOTFOUND)));
            xInfoBox->run();
        }
    }
    else
diff --git a/sc/source/ui/docshell/docsh6.cxx b/sc/source/ui/docshell/docsh6.cxx
index 508ea9f..8e3a282 100644
--- a/sc/source/ui/docshell/docsh6.cxx
+++ b/sc/source/ui/docshell/docsh6.cxx
@@ -37,7 +37,8 @@
#include <interpre.hxx>
#include <calcconfig.hxx>

#include <vcl/msgbox.hxx>
#include <vcl/svapp.hxx>
#include <vcl/weld.hxx>

#include <memory>
#include <utility>
@@ -499,8 +500,10 @@ void ScDocShell::CheckConfigOptions()
        if (pViewShell)
        {
            vcl::Window* pParent = pViewShell->GetFrameWin();
            ScopedVclPtrInstance< InfoBox > aBox(pParent, ScGlobal::GetRscString(STR_OPTIONS_WARN_SEPARATORS));
            aBox->Execute();
            std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pParent ? pParent->GetFrameWeld() : nullptr,
                                                          VclMessageType::Info, VclButtonsType::Ok,
                                                          ScGlobal::GetRscString(STR_OPTIONS_WARN_SEPARATORS)));
            xInfoBox->run();
        }

        // For now, this is the only option setting that could launch info
diff --git a/sc/source/ui/docshell/impex.cxx b/sc/source/ui/docshell/impex.cxx
index 146c097..e39abc0 100644
--- a/sc/source/ui/docshell/impex.cxx
+++ b/sc/source/ui/docshell/impex.cxx
@@ -57,6 +57,7 @@
#include <tools/svlibrary.h>
#include <unotools/configmgr.hxx>
#include <vcl/svapp.hxx>
#include <vcl/weld.hxx>

#include <memory>
#include <osl/endian.h>
@@ -227,9 +228,11 @@ bool ScImportExport::StartPaste()
        ScEditableTester aTester( pDoc, aRange );
        if ( !aTester.IsEditable() )
        {
            ScopedVclPtrInstance<InfoBox> aInfoBox( Application::GetDefDialogParent(),
                                ScGlobal::GetRscString( aTester.GetMessageId() ) );
            aInfoBox->Execute();
            vcl::Window* pWin = Application::GetDefDialogParent();
            std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWin ? pWin->GetFrameWeld() : nullptr,
                                                          VclMessageType::Info, VclButtonsType::Ok,
                                                          ScGlobal::GetRscString(aTester.GetMessageId())));
            xInfoBox->run();
            return false;
        }
    }
diff --git a/sc/source/ui/optdlg/tpusrlst.cxx b/sc/source/ui/optdlg/tpusrlst.cxx
index 4eb0770..52e671b 100644
--- a/sc/source/ui/optdlg/tpusrlst.cxx
+++ b/sc/source/ui/optdlg/tpusrlst.cxx
@@ -420,7 +420,10 @@ void ScTpUserLists::CopyListFromArea( const ScRefAddress& rStartPos,

        if ( bValueIgnored )
        {
            ScopedVclPtrInstance<InfoBox>(this, aStrCopyErr)->Execute();
            std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(GetFrameWeld(),
                                                          VclMessageType::Info, VclButtonsType::Ok,
                                                          aStrCopyErr));
            xInfoBox->run();
        }
    }

diff --git a/sc/source/ui/view/cellsh1.cxx b/sc/source/ui/view/cellsh1.cxx
index 99227a5..f24c6b4c 100644
--- a/sc/source/ui/view/cellsh1.cxx
+++ b/sc/source/ui/view/cellsh1.cxx
@@ -35,6 +35,7 @@
#include <sfx2/dispatch.hxx>
#include <sfx2/request.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>
#include <svx/svxdlg.hxx>
#include <sot/formats.hxx>
#include <svx/postattr.hxx>
@@ -2960,8 +2961,11 @@ void ScCellShell::ExecuteDataPilotDialog()
        if (pSrcErrorId)
        {
            // Error occurred during data creation.  Launch an error and bail out.
            ScopedVclPtrInstance< InfoBox > aBox(pTabViewShell->GetDialogParent(), ScGlobal::GetRscString(pSrcErrorId));
            aBox->Execute();
            vcl::Window* pWin = pTabViewShell->GetDialogParent();
            std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWin ? pWin->GetFrameWeld() : nullptr,
                                                          VclMessageType::Info, VclButtonsType::Ok,
                                                          ScGlobal::GetRscString(pSrcErrorId)));
            xInfoBox->run();
            return;
        }

diff --git a/sc/source/ui/view/spelleng.cxx b/sc/source/ui/view/spelleng.cxx
index 15fedc1..9e39ea9 100644
--- a/sc/source/ui/view/spelleng.cxx
+++ b/sc/source/ui/view/spelleng.cxx
@@ -27,9 +27,10 @@
#include <editeng/editobj.hxx>
#include <editeng/editview.hxx>
#include <sfx2/viewfrm.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/svapp.hxx>
#include <vcl/settings.hxx>
#include <vcl/svapp.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>

#include <spelldialog.hxx>
#include <tabvwsh.hxx>
@@ -316,7 +317,10 @@ void ScSpellingEngine::ShowFinishDialog()
{
    vcl::Window* pParent = GetDialogParent();
    ScWaitCursorOff aWaitOff( pParent );
    ScopedVclPtrInstance<InfoBox>( pParent, ScGlobal::GetRscString( STR_SPELLING_STOP_OK ) )->Execute();
    std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pParent ? pParent->GetFrameWeld() : nullptr,
                                                  VclMessageType::Info, VclButtonsType::Ok,
                                                  ScGlobal::GetRscString(STR_SPELLING_STOP_OK)));
    xInfoBox->run();
}

vcl::Window* ScSpellingEngine::GetDialogParent()
diff --git a/sc/source/ui/view/tabview2.cxx b/sc/source/ui/view/tabview2.cxx
index 17d5628..4aa52f5 100644
--- a/sc/source/ui/view/tabview2.cxx
+++ b/sc/source/ui/view/tabview2.cxx
@@ -20,7 +20,7 @@
#include <scitems.hxx>
#include <editeng/eeitem.hxx>
#include <vcl/timer.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>
#include <sfx2/app.hxx>
#include <sfx2/viewfrm.hxx>
#include <sfx2/bindings.hxx>
@@ -1434,8 +1434,11 @@ void ScTabView::ErrorMessage(const char* pGlobStrId)
        }
    }

    ScopedVclPtrInstance<InfoBox> aBox(pParent, ScGlobal::GetRscString(pGlobStrId));
    aBox->Execute();
    std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pParent ? pParent->GetFrameWeld() : nullptr,
                                                  VclMessageType::Info, VclButtonsType::Ok,
                                                  ScGlobal::GetRscString(pGlobStrId)));
    xInfoBox->run();

    if (bFocus)
        pParent->GrabFocus();
}
diff --git a/sc/source/ui/view/viewfun4.cxx b/sc/source/ui/view/viewfun4.cxx
index f59e4b2..78bdd8e 100644
--- a/sc/source/ui/view/viewfun4.cxx
+++ b/sc/source/ui/view/viewfun4.cxx
@@ -41,7 +41,7 @@
#include <svtools/transfer.hxx>
#include <svl/urlbmk.hxx>
#include <svl/sharedstringpool.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>
#include <avmedia/mediawindow.hxx>

#include <comphelper/storagehelper.hxx>
@@ -399,8 +399,12 @@ void ScViewFunc::DoThesaurus()
        LanguageType eLnge = ScViewUtil::GetEffLanguage( &rDoc, ScAddress( nCol, nRow, nTab ) );
        OUString aErr = SvtLanguageTable::GetLanguageString(eLnge);
        aErr += ScGlobal::GetRscString( STR_SPELLING_NO_LANG );
        ScopedVclPtrInstance< InfoBox > aBox( GetViewData().GetDialogParent(), aErr );
        aBox->Execute();

        vcl::Window* pWin = GetViewData().GetDialogParent();
        std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWin ? pWin->GetFrameWeld() : nullptr,
                                                      VclMessageType::Info, VclButtonsType::Ok,
                                                      aErr));
        xInfoBox->run();
    }
    if (pThesaurusEngine->IsModified())
    {
diff --git a/sd/source/ui/dlg/PhotoAlbumDialog.cxx b/sd/source/ui/dlg/PhotoAlbumDialog.cxx
index 18978ee..adf5a38 100644
--- a/sd/source/ui/dlg/PhotoAlbumDialog.cxx
+++ b/sd/source/ui/dlg/PhotoAlbumDialog.cxx
@@ -26,6 +26,7 @@
#include <officecfg/Office/Impress.hxx>
#include <svx/svdview.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>
#include <svx/unoshape.hxx>
#include <svx/xfltrit.hxx>
#include <svx/xfillit.hxx>
@@ -490,8 +491,10 @@ IMPL_LINK_NOARG(SdPhotoAlbumDialog, CreateHdl, Button*, void)
        }
        else
        {
            ScopedVclPtrInstance< InfoBox > aInfo(this, OUString("Function is not implemented!"));
            aInfo->Execute();
            std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(GetFrameWeld(),
                                                          VclMessageType::Info, VclButtonsType::Ok,
                                                          "Function is not implemented!"));
            xInfoBox->run();
        }
        EndDialog();
    }
diff --git a/sd/source/ui/func/fudraw.cxx b/sd/source/ui/func/fudraw.cxx
index 8d507f4..f25836a 100644
--- a/sd/source/ui/func/fudraw.cxx
+++ b/sd/source/ui/func/fudraw.cxx
@@ -58,7 +58,7 @@
#include <drawview.hxx>
#include <fusel.hxx>
#include <svl/aeitem.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>
#include <slideshow.hxx>
#include <svx/sdrhittesthelper.hxx>

@@ -339,7 +339,10 @@ bool FuDraw::KeyInput(const KeyEvent& rKEvt)
            {
                if (mpView->IsPresObjSelected(false, true, false, true))
                {
                    ScopedVclPtrInstance<InfoBox>(mpWindow, SdResId(STR_ACTION_NOTPOSSIBLE))->Execute();
                    std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(mpWindow->GetFrameWeld(),
                                                                  VclMessageType::Info, VclButtonsType::Ok,
                                                                  SdResId(STR_ACTION_NOTPOSSIBLE)));
                    xInfoBox->run();
                }
                else
                {
diff --git a/sd/source/ui/func/futhes.cxx b/sd/source/ui/func/futhes.cxx
index ad19076..02fca912 100644
--- a/sd/source/ui/func/futhes.cxx
+++ b/sd/source/ui/func/futhes.cxx
@@ -67,7 +67,7 @@ rtl::Reference<FuPoor> FuThesaurus::Create( ViewShell* pViewSh, ::sd::Window* pW
void FuThesaurus::DoExecute( SfxRequest& )
{
    SfxErrorContext aContext(ERRCTX_SVX_LINGU_THESAURUS, OUString(),
                             mpWindow, RID_SVXERRCTX, SvxResLocale());
                             mpWindow->GetFrameWeld(), RID_SVXERRCTX, SvxResLocale());

    if (mpViewShell && dynamic_cast< DrawViewShell *>( mpViewShell ) !=  nullptr)
    {
diff --git a/sd/source/ui/view/drawview.cxx b/sd/source/ui/view/drawview.cxx
index 7620a2c..d1b2832 100644
--- a/sd/source/ui/view/drawview.cxx
+++ b/sd/source/ui/view/drawview.cxx
@@ -18,7 +18,7 @@
 */

#include <sfx2/dispatch.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>
#include <svx/svdpagv.hxx>
#include <sfx2/request.hxx>
#include <svl/style.hxx>
@@ -433,8 +433,11 @@ bool DrawView::SetStyleSheet(SfxStyleSheet* pStyleSheet, bool bDontRemoveHardAtt
    {
        if (IsPresObjSelected(false))
        {
            ScopedVclPtrInstance<InfoBox>(mpDrawViewShell->GetActiveWindow(),
                    SdResId(STR_ACTION_NOTPOSSIBLE))->Execute();
            vcl::Window* pWin = mpDrawViewShell->GetActiveWindow();
            std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWin ? pWin->GetFrameWeld() : nullptr,
                                                          VclMessageType::Info, VclButtonsType::Ok,
                                                          SdResId(STR_ACTION_NOTPOSSIBLE)));
            xInfoBox->run();
            bResult = false;
        }
        else
diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx
index 615bfb9..6d6dcad 100644
--- a/sd/source/ui/view/drviews2.cxx
+++ b/sd/source/ui/view/drviews2.cxx
@@ -958,7 +958,10 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
            if ( mpDrawView->IsPresObjSelected() )
            {
                ::sd::Window* pWindow = GetActiveWindow();
                ScopedVclPtrInstance<InfoBox>(pWindow, SdResId(STR_ACTION_NOTPOSSIBLE))->Execute();
                std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWindow ? pWindow->GetFrameWeld() : nullptr,
                                                              VclMessageType::Info, VclButtonsType::Ok,
                                                              SdResId(STR_ACTION_NOTPOSSIBLE)));
                xInfoBox->run();
            }
            else
            {
@@ -1003,7 +1006,10 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
            if ( mpDrawView->IsPresObjSelected() )
            {
                ::sd::Window* pWindow = GetActiveWindow();
                ScopedVclPtrInstance<InfoBox>(pWindow, SdResId(STR_ACTION_NOTPOSSIBLE))->Execute();
                std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWindow ? pWindow->GetFrameWeld() : nullptr,
                                                              VclMessageType::Info, VclButtonsType::Ok,
                                                              SdResId(STR_ACTION_NOTPOSSIBLE)));
                xInfoBox->run();
            }
            else
            {
@@ -1031,7 +1037,10 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
            if ( mpDrawView->IsPresObjSelected(true,true,true) )
            {
                ::sd::Window* pWindow = GetActiveWindow();
                ScopedVclPtrInstance<InfoBox>(pWindow, SdResId(STR_ACTION_NOTPOSSIBLE))->Execute();
                std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWindow ? pWindow->GetFrameWeld() : nullptr,
                                                              VclMessageType::Info, VclButtonsType::Ok,
                                                              SdResId(STR_ACTION_NOTPOSSIBLE)));
                xInfoBox->run();
            }
            else
            {
@@ -1545,7 +1554,10 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
            if ( mpDrawView->IsPresObjSelected(false) )
            {
                ::sd::Window* pWindow = GetActiveWindow();
                ScopedVclPtrInstance<InfoBox>(pWindow, SdResId(STR_ACTION_NOTPOSSIBLE))->Execute();
                std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWindow ? pWindow->GetFrameWeld() : nullptr,
                                                              VclMessageType::Info, VclButtonsType::Ok,
                                                              SdResId(STR_ACTION_NOTPOSSIBLE)));
                xInfoBox->run();
            }
            else
            {
@@ -1724,11 +1736,16 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
            if( !bDone )
            {
                ::sd::Window* pWindow = GetActiveWindow();
                std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWindow ? pWindow->GetFrameWeld() : nullptr,
                                                              VclMessageType::Info, VclButtonsType::Ok,
#ifndef UNX
                ScopedVclPtrInstance<InfoBox>(pWindow, SdResId(STR_TWAIN_NO_SOURCE))->Execute();
                                                              SdResId(STR_TWAIN_NO_SOURCE)
#else
                ScopedVclPtrInstance<InfoBox>(pWindow, SdResId(STR_TWAIN_NO_SOURCE_UNX))->Execute();
                                                              SdResId(STR_TWAIN_NO_SOURCE_UNX)
#endif
                                                              ));
                xInfoBox->run();

            }
            else
            {
@@ -2449,7 +2466,10 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
            if ( mpDrawView->IsPresObjSelected( true, true, true ) )
            {
                ::sd::Window* pWindow = GetActiveWindow();
                ScopedVclPtrInstance<InfoBox>(pWindow, SdResId(STR_ACTION_NOTPOSSIBLE))->Execute();
                std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWindow ? pWindow->GetFrameWeld() : nullptr,
                                                              VclMessageType::Info, VclButtonsType::Ok,
                                                              SdResId(STR_ACTION_NOTPOSSIBLE)));
                xInfoBox->run();
            }
            else
            {
@@ -2568,7 +2588,10 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
            if ( mpDrawView->IsPresObjSelected() )
            {
                ::sd::Window* pWindow = GetActiveWindow();
                ScopedVclPtrInstance<InfoBox>(pWindow, SdResId(STR_ACTION_NOTPOSSIBLE))->Execute();
                std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWindow ? pWindow->GetFrameWeld() : nullptr,
                                                              VclMessageType::Info, VclButtonsType::Ok,
                                                              SdResId(STR_ACTION_NOTPOSSIBLE)));
                xInfoBox->run();
            }
            else
            {
@@ -2585,7 +2608,10 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
            if ( mpDrawView->IsPresObjSelected() )
            {
                ::sd::Window* pWindow = GetActiveWindow();
                ScopedVclPtrInstance<InfoBox>(pWindow, SdResId(STR_ACTION_NOTPOSSIBLE))->Execute();
                std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWindow ? pWindow->GetFrameWeld() : nullptr,
                                                              VclMessageType::Info, VclButtonsType::Ok,
                                                              SdResId(STR_ACTION_NOTPOSSIBLE)));
                xInfoBox->run();
            }
            else
            {
@@ -2605,7 +2631,10 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
            if ( mpDrawView->IsPresObjSelected() )
            {
                ::sd::Window* pWindow = GetActiveWindow();
                ScopedVclPtrInstance<InfoBox>(pWindow, SdResId(STR_ACTION_NOTPOSSIBLE))->Execute();
                std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWindow ? pWindow->GetFrameWeld() : nullptr,
                                                              VclMessageType::Info, VclButtonsType::Ok,
                                                              SdResId(STR_ACTION_NOTPOSSIBLE)));
                xInfoBox->run();
            }
            else
            {
@@ -2626,7 +2655,10 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
            if ( mpDrawView->IsPresObjSelected() )
            {
                ::sd::Window* pWindow = GetActiveWindow();
                ScopedVclPtrInstance<InfoBox>(pWindow, SdResId(STR_ACTION_NOTPOSSIBLE))->Execute();
                std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWindow ? pWindow->GetFrameWeld() : nullptr,
                                                              VclMessageType::Info, VclButtonsType::Ok,
                                                              SdResId(STR_ACTION_NOTPOSSIBLE)));
                xInfoBox->run();
            }
            else
            {
@@ -2647,7 +2679,10 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
            if ( mpDrawView->IsPresObjSelected() )
            {
                ::sd::Window* pWindow = GetActiveWindow();
                ScopedVclPtrInstance<InfoBox>(pWindow, SdResId(STR_ACTION_NOTPOSSIBLE))->Execute();
                std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWindow ? pWindow->GetFrameWeld() : nullptr,
                                                              VclMessageType::Info, VclButtonsType::Ok,
                                                              SdResId(STR_ACTION_NOTPOSSIBLE)));
                xInfoBox->run();
            }
            else
            {
@@ -2689,7 +2724,10 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
            if ( mpDrawView->IsPresObjSelected() )
            {
                ::sd::Window* pWindow = GetActiveWindow();
                ScopedVclPtrInstance<InfoBox>(pWindow, SdResId(STR_ACTION_NOTPOSSIBLE))->Execute();
                std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWindow ? pWindow->GetFrameWeld() : nullptr,
                                                              VclMessageType::Info, VclButtonsType::Ok,
                                                              SdResId(STR_ACTION_NOTPOSSIBLE)));
                xInfoBox->run();
            }
            else
            {
@@ -2781,7 +2819,10 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
            if ( mpDrawView->IsPresObjSelected() )
            {
                ::sd::Window* pWindow = GetActiveWindow();
                ScopedVclPtrInstance<InfoBox>(pWindow, SdResId(STR_ACTION_NOTPOSSIBLE))->Execute();
                std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWindow ? pWindow->GetFrameWeld() : nullptr,
                                                              VclMessageType::Info, VclButtonsType::Ok,
                                                              SdResId(STR_ACTION_NOTPOSSIBLE)));
                xInfoBox->run();
            }
            else
            {
diff --git a/sd/source/ui/view/drviewse.cxx b/sd/source/ui/view/drviewse.cxx
index becb587..151c1fa 100644
--- a/sd/source/ui/view/drviewse.cxx
+++ b/sd/source/ui/view/drviewse.cxx
@@ -34,6 +34,7 @@
#include <svl/aeitem.hxx>
#include <editeng/editstat.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>
#include <svl/urlbmk.hxx>
#include <svx/svdpagv.hxx>
#include <svx/fmshell.hxx>
@@ -328,7 +329,10 @@ void DrawViewShell::FuPermanent(SfxRequest& rReq)
                    if ( mpDrawView->IsPresObjSelected() )
                    {
                        ::sd::Window* pWindow = GetActiveWindow();
                        ScopedVclPtrInstance<InfoBox>(pWindow, SdResId(STR_ACTION_NOTPOSSIBLE) )->Execute();
                        std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWindow ? pWindow->GetFrameWeld() : nullptr,
                                                                      VclMessageType::Info, VclButtonsType::Ok,
                                                                      SdResId(STR_ACTION_NOTPOSSIBLE)));
                        xInfoBox->run();
                    }
                    else if ( ScopedVclPtrInstance<QueryBox>(GetActiveWindow(), MessBoxStyle::YesNo,
                                      SdResId(STR_ASK_FOR_CONVERT_TO_BEZIER)
@@ -365,7 +369,10 @@ void DrawViewShell::FuPermanent(SfxRequest& rReq)
                    if ( mpDrawView->IsPresObjSelected() )
                    {
                        ::sd::Window* pWindow = GetActiveWindow();
                        ScopedVclPtrInstance<InfoBox>(pWindow, SdResId(STR_ACTION_NOTPOSSIBLE) )->Execute();
                        std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWindow ? pWindow->GetFrameWeld() : nullptr,
                                                                      VclMessageType::Info, VclButtonsType::Ok,
                                                                      SdResId(STR_ACTION_NOTPOSSIBLE)));
                        xInfoBox->run();
                    }
                    else if ( ScopedVclPtrInstance<QueryBox>(GetActiveWindow(), MessBoxStyle::YesNo,
                                      SdResId(STR_ASK_FOR_CONVERT_TO_BEZIER)
@@ -671,7 +678,10 @@ void DrawViewShell::FuDeleteSelectedObjects()
    if (mpDrawView->IsPresObjSelected(false, true, false, true))
    {
        ::sd::Window* pWindow = GetActiveWindow();
        ScopedVclPtrInstance<InfoBox>(pWindow, SdResId(STR_ACTION_NOTPOSSIBLE) )->Execute();
        std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWindow ? pWindow->GetFrameWeld() : nullptr,
                                                      VclMessageType::Info, VclButtonsType::Ok,
                                                      SdResId(STR_ACTION_NOTPOSSIBLE)));
        xInfoBox->run();
        bConsumed = true;
    }

@@ -785,7 +795,10 @@ void DrawViewShell::FuSupport(SfxRequest& rReq)
            if ( mpDrawView->IsPresObjSelected(false, true, false, true) )
            {
                ::sd::Window* pWindow = GetActiveWindow();
                ScopedVclPtrInstance<InfoBox>(pWindow, SdResId(STR_ACTION_NOTPOSSIBLE))->Execute();
                std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWindow ? pWindow->GetFrameWeld() : nullptr,
                                                              VclMessageType::Info, VclButtonsType::Ok,
                                                              SdResId(STR_ACTION_NOTPOSSIBLE)));
                xInfoBox->run();
            }
            else
            {
@@ -807,7 +820,10 @@ void DrawViewShell::FuSupport(SfxRequest& rReq)
            if ( mpDrawView->IsPresObjSelected(false, true, false, true) )
            {
                ::sd::Window* pWindow = GetActiveWindow();
                ScopedVclPtrInstance<InfoBox>(pWindow, SdResId(STR_ACTION_NOTPOSSIBLE))->Execute();
                std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWindow ? pWindow->GetFrameWeld() : nullptr,
                                                              VclMessageType::Info, VclButtonsType::Ok,
                                                              SdResId(STR_ACTION_NOTPOSSIBLE)));
                xInfoBox->run();
            }
            else
            {
diff --git a/sd/source/ui/view/drviewsi.cxx b/sd/source/ui/view/drviewsi.cxx
index 0212473..ebd27be 100644
--- a/sd/source/ui/view/drviewsi.cxx
+++ b/sd/source/ui/view/drviewsi.cxx
@@ -33,7 +33,7 @@
#include <svx/float3d.hxx>
#include <svx/f3dchild.hxx>
#include <svx/dialogs.hrc>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>

#include <app.hrc>
#include <strings.hrc>
@@ -162,10 +162,11 @@ void DrawViewShell::AssignFrom3DWindow()
            }
            else
            {
                ScopedVclPtrInstance<InfoBox> aInfoBox (
                    GetActiveWindow(),
                    SdResId(STR_ACTION_NOTPOSSIBLE));
                aInfoBox->Execute();
                vcl::Window* pWindow = GetActiveWindow();
                std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWindow ? pWindow->GetFrameWeld() : nullptr,
                                                              VclMessageType::Info, VclButtonsType::Ok,
                                                              SdResId(STR_ACTION_NOTPOSSIBLE)));
                xInfoBox->run();
            }

            // get focus back
diff --git a/sd/source/ui/view/sdview4.cxx b/sd/source/ui/view/sdview4.cxx
index 37366b5..1fa41a3 100644
--- a/sd/source/ui/view/sdview4.cxx
+++ b/sd/source/ui/view/sdview4.cxx
@@ -26,7 +26,7 @@
#include <sfx2/docfilt.hxx>
#include <sfx2/fcontnr.hxx>
#include <sfx2/docfile.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>
#include <svl/urlbmk.hxx>
#include <svx/svdpagv.hxx>
#include <svx/xfillit.hxx>
@@ -377,7 +377,8 @@ IMPL_LINK_NOARG(View, DropInsertFileHdl, Timer *, void)
    if( !mpViewSh )
        return;

    SfxErrorContext aEc( ERRCTX_ERROR, mpViewSh->GetActiveWindow(), RID_SO_ERRCTX );
    vcl::Window* pWindow = mpViewSh->GetActiveWindow();
    SfxErrorContext aEc( ERRCTX_ERROR, pWindow ? pWindow->GetFrameWeld() : nullptr, RID_SO_ERRCTX );
    ErrCode nError = ERRCODE_NONE;

    ::std::vector< OUString >::const_iterator aIter( maDropFileVector.begin() );
@@ -570,7 +571,11 @@ IMPL_LINK_NOARG(View, DropInsertFileHdl, Timer *, void)
 */
IMPL_LINK_NOARG(View, DropErrorHdl, Timer *, void)
{
    ScopedVclPtrInstance<InfoBox>( mpViewSh ? mpViewSh->GetActiveWindow() : nullptr, SdResId(STR_ACTION_NOTPOSSIBLE) )->Execute();
    vcl::Window* pWin = mpViewSh ? mpViewSh->GetActiveWindow() : nullptr;
    std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWin ? pWin->GetFrameWeld() : nullptr,
                                                  VclMessageType::Info, VclButtonsType::Ok,
                                                  SdResId(STR_ACTION_NOTPOSSIBLE)));
    xInfoBox->run();
}

/**
diff --git a/sd/source/ui/view/viewshe2.cxx b/sd/source/ui/view/viewshe2.cxx
index 2f31191..861bb2d 100644
--- a/sd/source/ui/view/viewshe2.cxx
+++ b/sd/source/ui/view/viewshe2.cxx
@@ -718,7 +718,8 @@ bool ViewShell::ActivateObject(SdrOle2Obj* pObj, long nVerb)
{
    ErrCode aErrCode = ERRCODE_NONE;

    SfxErrorContext aEC(ERRCTX_SO_DOVERB, GetActiveWindow(), RID_SO_ERRCTX);
    vcl::Window* pWindow = GetActiveWindow();
    SfxErrorContext aEC(ERRCTX_SO_DOVERB, pWindow ? pWindow->GetFrameWeld() : nullptr, RID_SO_ERRCTX);
    bool bAbort = false;
    GetDocSh()->SetWaitCursor( true );
    SfxViewShell* pViewShell = GetViewShell();
diff --git a/sfx2/source/bastyp/fltfnc.cxx b/sfx2/source/bastyp/fltfnc.cxx
index ba7cc8a..d28c4ca 100644
--- a/sfx2/source/bastyp/fltfnc.cxx
+++ b/sfx2/source/bastyp/fltfnc.cxx
@@ -37,6 +37,7 @@
#include <basic/sbxmeth.hxx>
#include <basic/sbxcore.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>
#include <rtl/ustring.hxx>
#include <rtl/ustrbuf.hxx>
#include <svl/eitem.hxx>
@@ -490,7 +491,10 @@ bool SfxFilterMatcher::IsFilterInstalled_Impl( const std::shared_ptr<const SfxFi
        {
#ifdef DBG_UTIL
            // Start Setup
            ScopedVclPtrInstance<InfoBox>( nullptr, "Here should the Setup now be starting!" )->Execute();
            std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(nullptr,
                                                          VclMessageType::Info, VclButtonsType::Ok,
                                                          "Here should the Setup now be starting!"));
            xInfoBox->run();
#endif
            // Installation must still give feedback if it worked or not,
            // then the  Filterflag be deleted
@@ -502,7 +506,10 @@ bool SfxFilterMatcher::IsFilterInstalled_Impl( const std::shared_ptr<const SfxFi
    {
        OUString aText( SfxResId(STR_FILTER_CONSULT_SERVICE) );
        aText = aText.replaceFirst( "$(FILTER)", pFilter->GetUIName() );
        ScopedVclPtrInstance<InfoBox>( nullptr, aText )->Execute();
        std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(nullptr,
                                                      VclMessageType::Info, VclButtonsType::Ok,
                                                      aText));
        xInfoBox->run();
        return false;
    }
    else
diff --git a/sfx2/source/dialog/securitypage.cxx b/sfx2/source/dialog/securitypage.cxx
index cfc79b6..eb45d93 100644
--- a/sfx2/source/dialog/securitypage.cxx
+++ b/sfx2/source/dialog/securitypage.cxx
@@ -32,6 +32,7 @@
#include <vcl/edit.hxx>
#include <vcl/fixed.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>
#include <svl/eitem.hxx>
#include <svl/poolitem.hxx>
#include <svl/intitem.hxx>
@@ -123,7 +124,12 @@ static bool lcl_IsPasswordCorrect( const OUString &rPassword )
    if (SvPasswordHelper::CompareHashPassword( aPasswordHash, rPassword ))
        bRes = true;    // password was correct
    else
        ScopedVclPtrInstance<InfoBox>(nullptr, SfxResId(RID_SVXSTR_INCORRECT_PASSWORD))->Execute();
    {
        std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(nullptr,
                                                      VclMessageType::Info, VclButtonsType::Ok,
                                                      SfxResId(RID_SVXSTR_INCORRECT_PASSWORD)));
        xInfoBox->run();
    }

    return bRes;
}
diff --git a/sfx2/source/doc/new.cxx b/sfx2/source/doc/new.cxx
index 122b06e..cd78f4b 100644
--- a/sfx2/source/doc/new.cxx
+++ b/sfx2/source/doc/new.cxx
@@ -214,7 +214,7 @@ IMPL_LINK_NOARG(SfxNewFileDialog_Impl, Update, Timer*, void)

        if (!xDocShell.Is())
        {
            SfxErrorContext eEC(ERRCTX_SFX_LOADTEMPLATE,pAntiImpl);
            SfxErrorContext eEC(ERRCTX_SFX_LOADTEMPLATE, pAntiImpl->GetFrameWeld());
            SfxApplication *pSfxApp = SfxGetpApp();
            SfxItemSet* pSet = new SfxAllItemSet(pSfxApp->GetPool());
            pSet->Put(SfxBoolItem(SID_TEMPLATE, true));
diff --git a/sfx2/source/view/ipclient.cxx b/sfx2/source/view/ipclient.cxx
index 86aa5fa..81d93b3 100644
--- a/sfx2/source/view/ipclient.cxx
+++ b/sfx2/source/view/ipclient.cxx
@@ -856,7 +856,8 @@ sal_Int64 SfxInPlaceClient::GetAspect() const

ErrCode SfxInPlaceClient::DoVerb( long nVerb )
{
    SfxErrorContext aEc(ERRCTX_SO_DOVERB, m_pViewSh->GetWindow(), RID_SO_ERRCTX);
    vcl::Window* pWin = m_pViewSh->GetWindow();
    SfxErrorContext aEc(ERRCTX_SO_DOVERB, pWin ? pWin->GetFrameWeld() : nullptr, RID_SO_ERRCTX);
    ErrCode nError = ERRCODE_NONE;

    if ( m_xImp->m_xObject.is() )
diff --git a/svtools/source/graphic/provider.cxx b/svtools/source/graphic/provider.cxx
index f0dddfc..3cbbd6b 100644
--- a/svtools/source/graphic/provider.cxx
+++ b/svtools/source/graphic/provider.cxx
@@ -198,7 +198,7 @@ uno::Reference< ::graphic::XGraphic > GraphicProvider::implLoadStandardImage( co
        OUString sImageName( rResourceURL.copy( nIndex ) );
        if ( sImageName == "info" )
        {
            xRet = Graphic(InfoBox::GetStandardImage().GetBitmapEx()).GetXGraphic();
            xRet = Graphic(GetStandardInfoBoxImage().GetBitmapEx()).GetXGraphic();
        }
        else if ( sImageName == "warning" )
        {
diff --git a/svtools/source/misc/ehdl.cxx b/svtools/source/misc/ehdl.cxx
index dfd28ac..3ab4c7c 100644
--- a/svtools/source/misc/ehdl.cxx
+++ b/svtools/source/misc/ehdl.cxx
@@ -18,9 +18,9 @@
 */

#include <unotools/resmgr.hxx>
#include <tools/wintypes.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/button.hxx>
#include <vcl/svapp.hxx>
#include <vcl/weld.hxx>
#include <vcl/settings.hxx>

#include <svtools/ehdl.hxx>
@@ -33,7 +33,7 @@
#include <strings.hxx>

static DialogMask aWndFunc(
    vcl::Window *pWin,            // Parent of the dialog
    weld::Window *pWin,            // Parent of the dialog
    DialogMask nFlags,
    const OUString &rErr,      // error text
    const OUString &rAction)   // action text
@@ -52,33 +52,17 @@ static DialogMask aWndFunc(
    SolarMutexGuard aGuard;

    // determine necessary WinBits from the flags
    MessBoxStyle eBits = MessBoxStyle::NONE;
    VclButtonsType eButtonsType = VclButtonsType::NONE;
    bool bAddRetry = false;
    if ( (nFlags & (DialogMask::ButtonsCancel | DialogMask::ButtonsRetry)) == (DialogMask::ButtonsCancel | DialogMask::ButtonsRetry))
        eBits = MessBoxStyle::RetryCancel;
    else if ( (nFlags & DialogMask::ButtonsOk) == DialogMask::ButtonsOk )
        eBits = MessBoxStyle::Ok;
    else if ( (nFlags & DialogMask::ButtonsYesNo) == DialogMask::ButtonsYesNo )
        eBits = MessBoxStyle::YesNo;

    switch(nFlags & DialogMask(0x0f00))
    {
      case DialogMask::ButtonDefaultsOk:
            eBits |= MessBoxStyle::DefaultOk;
            break;

      case DialogMask::ButtonDefaultsCancel:
            eBits |= MessBoxStyle::DefaultCancel;
            break;

      case DialogMask::ButtonDefaultsYes:
            eBits |= MessBoxStyle::DefaultYes;
            break;

      case DialogMask::ButtonDefaultsNo:
            eBits |= MessBoxStyle::DefaultNo;
            break;
      default: break;
        bAddRetry = true;
        eButtonsType = VclButtonsType::Cancel;
    }
    else if ( (nFlags & DialogMask::ButtonsOk) == DialogMask::ButtonsOk )
        eButtonsType = VclButtonsType::Ok;
    else if ( (nFlags & DialogMask::ButtonsYesNo) == DialogMask::ButtonsYesNo )
        eButtonsType = VclButtonsType::YesNo;

    OUString aErr("$(ACTION)$(ERROR)");
    OUString aAction(rAction);
@@ -87,19 +71,19 @@ static DialogMask aWndFunc(
    aErr = aErr.replaceAll("$(ACTION)", aAction);
    aErr = aErr.replaceAll("$(ERROR)", rErr);

    VclPtr<MessBox> pBox;
    switch ( nFlags & DialogMask(0xf000) )
    VclMessageType eMessageType;
    switch (nFlags & DialogMask(0xf000))
    {
        case DialogMask::MessageError:
            pBox.reset(VclPtr<ErrorBox>::Create(pWin, eBits, aErr));
            eMessageType = VclMessageType::Error;
            break;

        case DialogMask::MessageWarning:
            pBox.reset(VclPtr<WarningBox>::Create(pWin, eBits, aErr));
            eMessageType = VclMessageType::Warning;
            break;

        case DialogMask::MessageInfo:
            pBox.reset(VclPtr<InfoBox>::Create(pWin, aErr));
            eMessageType = VclMessageType::Info;
            break;

        default:
@@ -109,8 +93,32 @@ static DialogMask aWndFunc(
        }
    }

    std::unique_ptr<weld::MessageDialog> xBox(Application::CreateMessageDialog(pWin,
                                              eMessageType, eButtonsType, aErr));

    if (bAddRetry)
        xBox->add_button(Button::GetStandardText(StandardButtonType::Retry), RET_RETRY);

    switch(nFlags & DialogMask(0x0f00))
    {
        case DialogMask::ButtonDefaultsOk:
            xBox->set_default_response(RET_OK);
            break;
        case DialogMask::ButtonDefaultsCancel:
            xBox->set_default_response(RET_CANCEL);
            break;
        case DialogMask::ButtonDefaultsYes:
            xBox->set_default_response(RET_YES);
            break;
        case DialogMask::ButtonDefaultsNo:
            xBox->set_default_response(RET_NO);
            break;
        default:
            break;
    }

    DialogMask nRet = DialogMask::NONE;
    switch ( pBox->Execute() )
    switch (xBox->run())
    {
        case RET_OK:
            nRet = DialogMask::ButtonsOk;
@@ -131,7 +139,7 @@ static DialogMask aWndFunc(
            SAL_WARN( "svtools.misc", "Unknown MessBox return value" );
            break;
    }
    pBox.disposeAndClear();

    return nRet;
}

@@ -234,7 +242,7 @@ bool SfxErrorHandler::GetErrorString(ErrCode lErrId, OUString &rStr) const
}

SfxErrorContext::SfxErrorContext(
    sal_uInt16 nCtxIdP, vcl::Window *pWindow, const ErrMsgCode* pIdsP, const std::locale& rResLocaleP)
    sal_uInt16 nCtxIdP, weld::Window *pWindow, const ErrMsgCode* pIdsP, const std::locale& rResLocaleP)
:   ErrorContext(pWindow), nCtxId(nCtxIdP), pIds(pIdsP), aResLocale(rResLocaleP)
{
    if (!pIds)
@@ -243,7 +251,7 @@ SfxErrorContext::SfxErrorContext(


SfxErrorContext::SfxErrorContext(
    sal_uInt16 nCtxIdP, const OUString &aArg1P, vcl::Window *pWindow,
    sal_uInt16 nCtxIdP, const OUString &aArg1P, weld::Window *pWindow,
    const ErrMsgCode* pIdsP, const std::locale& rResLocaleP)
:   ErrorContext(pWindow), nCtxId(nCtxIdP), pIds(pIdsP), aResLocale(rResLocaleP),
    aArg1(aArg1P)
diff --git a/svx/source/dialog/imapdlg.cxx b/svx/source/dialog/imapdlg.cxx
index e910cd9..1e200a1 100644
--- a/svx/source/dialog/imapdlg.cxx
+++ b/svx/source/dialog/imapdlg.cxx
@@ -476,7 +476,7 @@ void SvxIMapDlg::DoOpen()

            if( pIStm->GetError() )
            {
                SfxErrorContext eEC(ERRCTX_ERROR, this);
                SfxErrorContext eEC(ERRCTX_ERROR, GetFrameWeld());
                ErrorHandler::HandleError( ERRCODE_IO_GENERAL );
            }
            else
diff --git a/svx/source/svdraw/svdedtv1.cxx b/svx/source/svdraw/svdedtv1.cxx
index beb7abf..b3bc7bc 100644
--- a/svx/source/svdraw/svdedtv1.cxx
+++ b/svx/source/svdraw/svdedtv1.cxx
@@ -26,7 +26,8 @@
#include <svl/itemiter.hxx>
#include <svl/whiter.hxx>
#include <tools/bigint.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/svapp.hxx>
#include <vcl/weld.hxx>

#include <getallcharpropids.hxx>
#include <svdglob.hxx>
@@ -964,7 +965,10 @@ void SdrEditView::SetAttrToMarked(const SfxItemSet& rAttr, bool bReplaceAll)
        if(bHasEEFeatureItems)
        {
            OUString aMessage("SdrEditView::SetAttrToMarked(): Setting EE_FEATURE items at the SdrView does not make sense! It only leads to overhead and unreadable documents.");
            ScopedVclPtrInstance<InfoBox>(nullptr, aMessage)->Execute();
            std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(nullptr,
                                                          VclMessageType::Info, VclButtonsType::Ok,
                                                          aMessage));
            xInfoBox->run();
        }
    }
#endif
diff --git a/svx/source/svdraw/svdedxv.cxx b/svx/source/svdraw/svdedxv.cxx
index 0539648..f01dd86 100644
--- a/svx/source/svdraw/svdedxv.cxx
+++ b/svx/source/svdraw/svdedxv.cxx
@@ -22,7 +22,7 @@
#include <svx/svdedxv.hxx>
#include <svl/solar.hrc>
#include <svl/itemiter.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>
#include <vcl/hatch.hxx>
#include <svl/whiter.hxx>
#include <svl/style.hxx>
@@ -2076,7 +2076,10 @@ bool SdrObjEditView::SetAttributes(const SfxItemSet& rSet, bool bReplaceAll)
            if(bHasEEFeatureItems)
            {
                OUString aMessage("SdrObjEditView::SetAttributes(): Setting EE_FEATURE items at the SdrView does not make sense! It only leads to overhead and unreadable documents.");
                ScopedVclPtrInstance<InfoBox>(nullptr, aMessage)->Execute();
                std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(nullptr,
                                                              VclMessageType::Info, VclButtonsType::Ok,
                                                              aMessage));
                xInfoBox->run();
            }
        }
#endif
diff --git a/svx/source/svdraw/svdpntv.cxx b/svx/source/svdraw/svdpntv.cxx
index fd3d6ec..d5f9ab4 100644
--- a/svx/source/svdraw/svdpntv.cxx
+++ b/svx/source/svdraw/svdpntv.cxx
@@ -20,7 +20,7 @@
#include <memory>
#include <com/sun/star/awt/XWindow.hpp>
#include <svx/svdpntv.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>
#include <svx/sdrpaintwindow.hxx>
#include <svtools/grfmgr.hxx>
#include <svx/svdmodel.hxx>
@@ -1028,7 +1028,10 @@ void SdrPaintView::SetDefaultAttr(const SfxItemSet& rAttr, bool bReplaceAll)
        if(bHasEEFeatureItems)
        {
            OUString aMessage("SdrPaintView::SetDefaultAttr(): Setting EE_FEATURE items at the SdrView does not make sense! It only leads to overhead and unreadable documents.");
            ScopedVclPtrInstance<InfoBox>(nullptr, aMessage)->Execute();
            std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(nullptr,
                                                          VclMessageType::Info, VclButtonsType::Ok,
                                                          aMessage));
            xInfoBox->run();
        }
    }
#endif
diff --git a/sw/source/core/frmedt/fetab.cxx b/sw/source/core/frmedt/fetab.cxx
index 4334c08..bf312fe 100644
--- a/sw/source/core/frmedt/fetab.cxx
+++ b/sw/source/core/frmedt/fetab.cxx
@@ -176,7 +176,8 @@ void SwFEShell::InsertRow( sal_uInt16 nCnt, bool bBehind )

    if( dynamic_cast< const SwDDETable* >(pFrame->ImplFindTabFrame()->GetTable()) != nullptr )
    {
        ErrorHandler::HandleError( ERR_TBLDDECHG_ERROR, GetWin(),
        vcl::Window* pWin = GetWin();
        ErrorHandler::HandleError( ERR_TBLDDECHG_ERROR, pWin ? pWin->GetFrameWeld() : nullptr,
                        DialogMask::MessageInfo | DialogMask::ButtonDefaultsOk );
        return;
    }
@@ -215,7 +216,8 @@ void SwFEShell::InsertCol( sal_uInt16 nCnt, bool bBehind )

    if( dynamic_cast< const SwDDETable* >(pFrame->ImplFindTabFrame()->GetTable()) != nullptr )
    {
        ErrorHandler::HandleError( ERR_TBLDDECHG_ERROR, GetWin(),
        vcl::Window* pWin = GetWin();
        ErrorHandler::HandleError( ERR_TBLDDECHG_ERROR, pWin ? pWin->GetFrameWeld() : nullptr,
                        DialogMask::MessageInfo | DialogMask::ButtonDefaultsOk );
        return;
    }
@@ -224,7 +226,8 @@ void SwFEShell::InsertCol( sal_uInt16 nCnt, bool bBehind )

    if( !CheckSplitCells( *this, nCnt + 1, SwTableSearchType::Col ) )
    {
        ErrorHandler::HandleError( ERR_TBLINSCOL_ERROR, GetWin(),
        vcl::Window* pWin = GetWin();
        ErrorHandler::HandleError( ERR_TBLINSCOL_ERROR, pWin ? pWin->GetFrameWeld() : nullptr,
                        DialogMask::MessageInfo | DialogMask::ButtonDefaultsOk );
        return;
    }
@@ -268,7 +271,8 @@ bool SwFEShell::DeleteCol()

    if( dynamic_cast< const SwDDETable* >(pFrame->ImplFindTabFrame()->GetTable()) != nullptr )
    {
        ErrorHandler::HandleError( ERR_TBLDDECHG_ERROR, GetWin(),
        vcl::Window* pWin = GetWin();
        ErrorHandler::HandleError( ERR_TBLDDECHG_ERROR, pWin ? pWin->GetFrameWeld() : nullptr,
                        DialogMask::MessageInfo | DialogMask::ButtonDefaultsOk );
        return false;
    }
@@ -319,7 +323,8 @@ bool SwFEShell::DeleteRow(bool bCompleteTable)

    if( dynamic_cast< const SwDDETable* >(pFrame->ImplFindTabFrame()->GetTable()) != nullptr )
    {
        ErrorHandler::HandleError( ERR_TBLDDECHG_ERROR, GetWin(),
        vcl::Window* pWin = GetWin();
        ErrorHandler::HandleError( ERR_TBLDDECHG_ERROR, pWin ? pWin->GetFrameWeld() : nullptr,
                        DialogMask::MessageInfo | DialogMask::ButtonDefaultsOk );
        return false;
    }
@@ -438,7 +443,8 @@ TableMergeErr SwFEShell::MergeTab()
        const SwTableNode* pTableNd = pTableCursor->GetNode().FindTableNode();
        if( dynamic_cast< const SwDDETable* >(&pTableNd->GetTable()) != nullptr )
        {
            ErrorHandler::HandleError( ERR_TBLDDECHG_ERROR, GetWin(),
            vcl::Window* pWin = GetWin();
            ErrorHandler::HandleError( ERR_TBLDDECHG_ERROR, pWin ? pWin->GetFrameWeld() : nullptr,
                            DialogMask::MessageInfo | DialogMask::ButtonDefaultsOk );
        }
        else
@@ -469,7 +475,8 @@ void SwFEShell::SplitTab( bool bVert, sal_uInt16 nCnt, bool bSameHeight )

    if( dynamic_cast< const SwDDETable* >(pFrame->ImplFindTabFrame()->GetTable()) != nullptr  )
    {
        ErrorHandler::HandleError( ERR_TBLDDECHG_ERROR, GetWin(),
        vcl::Window* pWin = GetWin();
        ErrorHandler::HandleError( ERR_TBLDDECHG_ERROR, pWin ? pWin->GetFrameWeld() : nullptr,
                        DialogMask::MessageInfo | DialogMask::ButtonDefaultsOk );
        return;
    }
@@ -478,7 +485,8 @@ void SwFEShell::SplitTab( bool bVert, sal_uInt16 nCnt, bool bSameHeight )

    if( bVert && !CheckSplitCells( *this, nCnt + 1, SwTableSearchType::NONE ) )
    {
        ErrorHandler::HandleError( ERR_TBLSPLIT_ERROR, GetWin(),
        vcl::Window* pWin = GetWin();
        ErrorHandler::HandleError( ERR_TBLSPLIT_ERROR, pWin ? pWin->GetFrameWeld() : nullptr,
                        DialogMask::MessageInfo | DialogMask::ButtonDefaultsOk );
        return;
    }
@@ -1271,7 +1279,8 @@ bool SwFEShell::DeleteTableSel()

    if( dynamic_cast< const SwDDETable* >(pFrame->ImplFindTabFrame()->GetTable()) != nullptr )
    {
        ErrorHandler::HandleError( ERR_TBLDDECHG_ERROR, GetWin(),
        vcl::Window* pWin = GetWin();
        ErrorHandler::HandleError( ERR_TBLDDECHG_ERROR, pWin ? pWin->GetFrameWeld() : nullptr,
                        DialogMask::MessageInfo | DialogMask::ButtonDefaultsOk );
        return false;
    }
@@ -2163,7 +2172,8 @@ void SwFEShell::SetColRowWidthHeight( TableChgWidthHeightType eType, sal_uInt16 
    if( (TableChgWidthHeightType::InsertDeleteMode & eType) &&
        dynamic_cast< const SwDDETable* >(pFrame->ImplFindTabFrame()->GetTable()) != nullptr )
    {
        ErrorHandler::HandleError( ERR_TBLDDECHG_ERROR, GetWin(),
        vcl::Window* pWin = GetWin();
        ErrorHandler::HandleError( ERR_TBLDDECHG_ERROR, pWin ? pWin->GetFrameWeld() : nullptr,
                        DialogMask::MessageInfo | DialogMask::ButtonDefaultsOk );
        return;
    }
diff --git a/sw/source/ui/index/cnttab.cxx b/sw/source/ui/index/cnttab.cxx
index 2727866..e9a0404 100644
--- a/sw/source/ui/index/cnttab.cxx
+++ b/sw/source/ui/index/cnttab.cxx
@@ -20,10 +20,10 @@
#include <config_folders.h>

#include <comphelper/string.hxx>
#include <svl/style.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/help.hxx>
#include <vcl/builderfactory.hxx>
#include <svl/style.hxx>
#include <vcl/help.hxx>
#include <vcl/weld.hxx>
#include <svl/stritem.hxx>
#include <svl/urihelper.hxx>
#include <unotools/pathoptions.hxx>
@@ -487,8 +487,11 @@ IMPL_LINK_NOARG( SwMultiTOXTabDialog, ShowPreviewHdl, Button*, void )
                OUString sInfo(SwResId(STR_FILE_NOT_FOUND));
                sInfo = sInfo.replaceFirst( "%1", sTemplate );
                sInfo = sInfo.replaceFirst( "%2", aOpt.GetTemplatePath() );
                ScopedVclPtrInstance< InfoBox > aInfo(GetParent(), sInfo);
                aInfo->Execute();
                vcl::Window* pWin = GetParent();
                std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWin ? pWin->GetFrameWeld() : nullptr,
                                                              VclMessageType::Info, VclButtonsType::Ok,
                                                              sInfo));
                xInfoBox->run();
            }
            else
            {
diff --git a/sw/source/ui/misc/bookmark.cxx b/sw/source/ui/misc/bookmark.cxx
index 3e262e9..3720dba 100644
--- a/sw/source/ui/misc/bookmark.cxx
+++ b/sw/source/ui/misc/bookmark.cxx
@@ -20,7 +20,7 @@
#include <comphelper/string.hxx>
#include <sfx2/request.hxx>
#include <svl/stritem.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>
#include <vcl/builderfactory.hxx>
#include <svtools/headbar.hxx>
#include <svtools/treelistentry.hxx>
@@ -63,7 +63,10 @@ IMPL_LINK_NOARG(SwInsertBookmarkDlg, ModifyHdl, Edit&, void)
    if (sTmp.getLength() != nLen)
    {
        m_pEditBox->SetText(sTmp);
        ScopedVclPtrInstance<InfoBox>(this, sRemoveWarning + sMsg)->Execute();
        std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(GetFrameWeld(),
                                                      VclMessageType::Info, VclButtonsType::Ok,
                                                      sRemoveWarning + sMsg));
        xInfoBox->run();
    }

    sal_Int32 nSelectedEntries = 0;
diff --git a/sw/source/uibase/app/docsh.cxx b/sw/source/uibase/app/docsh.cxx
index 1cc1019..9291e0a 100644
--- a/sw/source/uibase/app/docsh.cxx
+++ b/sw/source/uibase/app/docsh.cxx
@@ -21,7 +21,7 @@

#include <hintids.hxx>
#include <vcl/layout.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>
#include <vcl/svapp.hxx>
#include <vcl/wrkwin.hxx>
#include <vcl/jobset.hxx>
@@ -177,7 +177,10 @@ Reader* SwDocShell::StartConvertFrom(SfxMedium& rMedium, SwReader** ppRdr,
    {
        if(!bAPICall)
        {
            ScopedVclPtrInstance<InfoBox>(nullptr, SwResId(STR_CANTOPEN))->Execute();
            std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(nullptr,
                                                          VclMessageType::Info, VclButtonsType::Ok,
                                                          SwResId(STR_CANTOPEN)));
            xInfoBox->run();
        }
        return nullptr;
    }
@@ -550,7 +553,10 @@ bool SwDocShell::ConvertTo( SfxMedium& rMedium )
    SwReaderWriter::GetWriter( pFlt->GetUserData(), rMedium.GetBaseURL( true ), xWriter );
    if( !xWriter.is() )
    {   // Filter not available
        ScopedVclPtrInstance<InfoBox>(nullptr, SwResId(STR_DLLNOTFOUND))->Execute();
        std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(nullptr,
                                                      VclMessageType::Info, VclButtonsType::Ok,
                                                      SwResId(STR_DLLNOTFOUND)));
        xInfoBox->run();
        return false;
    }

diff --git a/sw/source/uibase/app/docsh2.cxx b/sw/source/uibase/app/docsh2.cxx
index c52304f..a78e295 100644
--- a/sw/source/uibase/app/docsh2.cxx
+++ b/sw/source/uibase/app/docsh2.cxx
@@ -1099,7 +1099,10 @@ void SwDocShell::Execute(SfxRequest& rReq)
                    }
                    if( !bDone && !rReq.IsAPI() )
                    {
                        ScopedVclPtrInstance<InfoBox>(nullptr, SwResId( STR_CANTCREATE))->Execute();
                        std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(nullptr,
                                                                      VclMessageType::Info, VclButtonsType::Ok,
                                                                      SwResId(STR_CANTCREATE)));
                        xInfoBox->run();
                    }
                }
            }
diff --git a/sw/source/uibase/dochdl/gloshdl.cxx b/sw/source/uibase/dochdl/gloshdl.cxx
index e583f18..f964d1b 100644
--- a/sw/source/uibase/dochdl/gloshdl.cxx
+++ b/sw/source/uibase/dochdl/gloshdl.cxx
@@ -21,7 +21,7 @@
#include <editeng/wghtitem.hxx>
#include <editeng/adjustitem.hxx>
#include <vcl/errinf.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>
#include <svl/macitem.hxx>
#include <sfx2/fcontnr.hxx>
#include <sfx2/docfile.hxx>
@@ -478,7 +478,11 @@ bool SwGlossaryHdl::Expand( const OUString& rShortName,
            }
            OUString aTmp( SwResId(STR_NOGLOS));
            aTmp = aTmp.replaceFirst("%1", aShortName);
            ScopedVclPtrInstance<InfoBox>(pWrtShell->GetView().GetWindow(), aTmp)->Execute();
            vcl::Window* pWin = pWrtShell->GetView().GetWindow();
            std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pWin ? pWin->GetFrameWeld() : nullptr,
                                                          VclMessageType::Info, VclButtonsType::Ok,
                                                          aTmp));
            xInfoBox->run();
        }

        return false;
diff --git a/sw/source/uibase/lingu/hyp.cxx b/sw/source/uibase/lingu/hyp.cxx
index 56bd99b..4c8ec00 100644
--- a/sw/source/uibase/lingu/hyp.cxx
+++ b/sw/source/uibase/lingu/hyp.cxx
@@ -22,7 +22,7 @@
#include <edtwin.hxx>
#include <wrtsh.hxx>
#include <globals.hrc>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>
#include <vcl/wrkwin.hxx>
#include <linguistic/lngprops.hxx>
#include <com/sun/star/linguistic2/XLinguProperties.hpp>
@@ -120,7 +120,12 @@ SwHyphWrapper::~SwHyphWrapper()
    if( nPageCount )
        ::EndProgress( pView->GetDocShell() );
    if( bInfoBox && !Application::IsHeadlessModeEnabled() )
        ScopedVclPtrInstance<InfoBox>(&pView->GetEditWin(), SwResId(STR_HYP_OK))->Execute();
    {
        std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pView->GetEditWin().GetFrameWeld(),
                                                      VclMessageType::Info, VclButtonsType::Ok,
                                                      SwResId(STR_HYP_OK)));
        xInfoBox->run();
    }
}

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/uibase/lingu/olmenu.cxx b/sw/source/uibase/lingu/olmenu.cxx
index a411f3b..a4ede37f 100644
--- a/sw/source/uibase/lingu/olmenu.cxx
+++ b/sw/source/uibase/lingu/olmenu.cxx
@@ -746,7 +746,7 @@ void SwSpellPopup::Execute( sal_uInt16 nId )
                    sWord, false, OUString() );
            if (linguistic::DictionaryError::NONE != nAddRes && !xDictionary->getEntry(sWord).is())
            {
                SvxDicError(&m_pSh->GetView().GetViewFrame()->GetWindow(), nAddRes);
                SvxDicError(m_pSh->GetView().GetViewFrame()->GetWindow().GetFrameWeld(), nAddRes);
            }
        }
    }
@@ -778,7 +778,7 @@ void SwSpellPopup::Execute( sal_uInt16 nId )

            if (linguistic::DictionaryError::NONE != nAddRes && !xDic->getEntry(sWord).is())
            {
                SvxDicError(&m_pSh->GetView().GetViewFrame()->GetWindow(), nAddRes);
                SvxDicError(m_pSh->GetView().GetViewFrame()->GetWindow().GetFrameWeld(), nAddRes);
            }
        }
    }
diff --git a/sw/source/uibase/uiview/viewling.cxx b/sw/source/uibase/uiview/viewling.cxx
index 895bf7e..4f2191f 100644
--- a/sw/source/uibase/uiview/viewling.cxx
+++ b/sw/source/uibase/uiview/viewling.cxx
@@ -411,7 +411,7 @@ void SwView::HyphenateDocument()
        return;
    }

    SfxErrorContext aContext( ERRCTX_SVX_LINGU_HYPHENATION, OUString(), m_pEditWin,
    SfxErrorContext aContext( ERRCTX_SVX_LINGU_HYPHENATION, OUString(), m_pEditWin->GetFrameWeld(),
         RID_SVXERRCTX, SvxResLocale() );

    Reference< XHyphenator >  xHyph( ::GetHyphenator() );
@@ -535,7 +535,7 @@ void SwView::StartThesaurus()
    if (!IsValidSelectionForThesaurus())
        return;

    SfxErrorContext aContext( ERRCTX_SVX_LINGU_THESAURUS, OUString(), m_pEditWin,
    SfxErrorContext aContext( ERRCTX_SVX_LINGU_THESAURUS, OUString(), m_pEditWin->GetFrameWeld(),
         RID_SVXERRCTX, SvxResLocale() );

    // Determine language
diff --git a/sw/source/uibase/utlui/unotools.cxx b/sw/source/uibase/utlui/unotools.cxx
index 8495117..0aac425 100644
--- a/sw/source/uibase/utlui/unotools.cxx
+++ b/sw/source/uibase/utlui/unotools.cxx
@@ -24,7 +24,7 @@
#include <unotools.hxx>
#include <unoprnms.hxx>
#include <i18nutil/unicode.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>
#include <vcl/svapp.hxx>
#include <vcl/settings.hxx>
#include <com/sun/star/text/XTextViewCursorSupplier.hpp>
@@ -93,7 +93,10 @@ void SwOneExampleFrame::CreateErrorMessage()
    {
        OUString sInfo(SwResId(STR_SERVICE_UNAVAILABLE));
        sInfo += "com.sun.star.frame.FrameControl";
        ScopedVclPtrInstance<InfoBox>(nullptr, sInfo)->Execute();
        std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(nullptr,
                                                      VclMessageType::Info, VclButtonsType::Ok,
                                                      sInfo));
        xInfoBox->run();
        SwOneExampleFrame::bShowServiceNotAvailableMessage = false;
    }
}
diff --git a/toolkit/source/awt/vclxtoolkit.cxx b/toolkit/source/awt/vclxtoolkit.cxx
index 90d7ce2..3576fb6 100644
--- a/toolkit/source/awt/vclxtoolkit.cxx
+++ b/toolkit/source/awt/vclxtoolkit.cxx
@@ -788,6 +788,19 @@ css::uno::Reference< css::awt::XRegion > VCLXToolkit::createRegion(  )
    return xRef;
}

class InfoBox : public MessBox
{
public:
    InfoBox(vcl::Window* pParent, const OUString& rMessage)
        : MessBox(pParent, MessBoxStyle::Ok | MessBoxStyle::DefaultOk, 0, OUString(), rMessage)
    {
        // Default Text is the display title from the application
        if (GetText().isEmpty())
            SetText(GetStandardInfoBoxText());
        SetImage(GetStandardInfoBoxImage());
    }
};

vcl::Window* VCLXToolkit::ImplCreateWindow( VCLXWindow** ppNewComp,
    const css::awt::WindowDescriptor& rDescriptor,
    vcl::Window* pParent, WinBits nWinBits, MessBoxStyle nMessBoxStyle )
diff --git a/uui/source/iahndl-errorhandler.cxx b/uui/source/iahndl-errorhandler.cxx
index dca09cf..28d1bf0 100644
--- a/uui/source/iahndl-errorhandler.cxx
+++ b/uui/source/iahndl-errorhandler.cxx
@@ -19,6 +19,7 @@

#include <vcl/svapp.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/weld.hxx>

#include <com/sun/star/task/XInteractionAbort.hpp>
#include <com/sun/star/task/XInteractionApprove.hpp>
@@ -59,6 +60,7 @@ executeErrorDialog(
    aText.append(rMessage);

    VclPtr< MessBox > xBox;
    std::unique_ptr<weld::MessageDialog> xOtherBox;
    try
    {
        switch (eClassification)
@@ -79,8 +81,10 @@ executeErrorDialog(
#           define WB_DEF_BUTTONS (MessBoxStyle::DefaultOk | MessBoxStyle::DefaultCancel | MessBoxStyle::DefaultRetry)
            //(want to ignore any default button settings)...
            if ((nButtonMask & WB_DEF_BUTTONS) == MessBoxStyle::DefaultOk)
                xBox.reset(VclPtr<InfoBox>::Create(pParent,
                                       aText.makeStringAndClear()));
            {
                xOtherBox.reset(Application::CreateMessageDialog(pParent ? pParent->GetFrameWeld() : nullptr,
                            VclMessageType::Info, VclButtonsType::Ok, aText.makeStringAndClear()));
            }
            else
                xBox.reset(VclPtr<ErrorBox>::Create(pParent,
                                        nButtonMask,
@@ -103,9 +107,16 @@ executeErrorDialog(
        throw uno::RuntimeException("out of memory");
    }

    sal_uInt16 aMessResult = xBox->Execute();

    xBox.disposeAndClear();
    sal_uInt16 aMessResult;
    if (xBox)
    {
        aMessResult = xBox->Execute();
        xBox.disposeAndClear();
    }
    else
    {
        aMessResult = xOtherBox->run();
    }

    DialogMask aResult = DialogMask::NONE;
    switch( aMessResult )
diff --git a/uui/source/iahndl.cxx b/uui/source/iahndl.cxx
index 59f6221..b45b9ce 100644
--- a/uui/source/iahndl.cxx
+++ b/uui/source/iahndl.cxx
@@ -1120,7 +1120,10 @@ UUIInteractionHelper::handleGenericErrorRequest(
            executeMessageBox(getParentProperty(), aTitle, aErrorString, MessBoxStyle::Ok);
        }
        else
            ErrorHandler::HandleError(nErrorCode, getParentProperty());
        {
            vcl::Window* pParent = getParentProperty();
            ErrorHandler::HandleError(nErrorCode, pParent ? pParent->GetFrameWeld() : nullptr);
        }

        if (xApprove.is() && bWarning)
            xApprove->select();
diff --git a/uui/source/sslwarndlg.cxx b/uui/source/sslwarndlg.cxx
index f88284a..5db56f8 100644
--- a/uui/source/sslwarndlg.cxx
+++ b/uui/source/sslwarndlg.cxx
@@ -27,7 +27,7 @@

using namespace css;

void SSLWarnDialog::ViewCert()
IMPL_LINK_NOARG(SSLWarnDialog, ViewCertHdl, ::Button*, void)
{
    uno::Reference< css::security::XDocumentDigitalSignatures > xDocumentDigitalSignatures;

@@ -36,27 +36,25 @@ void SSLWarnDialog::ViewCert()
    xDocumentDigitalSignatures.get()->showCertificate(m_rXCert);
}


SSLWarnDialog::SSLWarnDialog(vcl::Window* pParent,
    const css::uno::Reference< css::security::XCertificate >& rXCert,
    const css::uno::Reference< css::uno::XComponentContext >& xContext)
    : MessageDialog(pParent, "SSLWarnDialog", "uui/ui/sslwarndialog.ui")
    , m_xView(get<PushButton>("view"))
    , m_xContext(xContext)
    , m_rXCert(rXCert)
{
}

void SSLWarnDialog::response(short nResponseId)
void SSLWarnDialog::dispose()
{
    switch (nResponseId)
    {
        case 101:
            ViewCert();
            break;
        default:
            MessageDialog::response(nResponseId);
            break;
    }
    m_xView.clear();
    MessageDialog::dispose();
}

SSLWarnDialog::~SSLWarnDialog()
{
    disposeOnce();
}

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/uui/source/sslwarndlg.hxx b/uui/source/sslwarndlg.hxx
index 2c0a992..2183160 100644
--- a/uui/source/sslwarndlg.hxx
+++ b/uui/source/sslwarndlg.hxx
@@ -19,7 +19,6 @@
#ifndef INCLUDED_UUI_SOURCE_SSLWARNDLG_HXX
#define INCLUDED_UUI_SOURCE_SSLWARNDLG_HXX

#include <vcl/fixed.hxx>
#include <vcl/button.hxx>
#include <vcl/messagedialog.hxx>
#include <com/sun/star/security/XCertificate.hpp>
@@ -32,19 +31,22 @@
class SSLWarnDialog : public MessageDialog
{
private:
    VclPtr<PushButton> m_xView;
    const css::uno::Reference< css::uno::XComponentContext >& m_xContext;
    const css::uno::Reference< css::security::XCertificate >& m_rXCert;

    void ViewCert();
    DECL_LINK(ViewCertHdl, Button*, void);

public:
    SSLWarnDialog( vcl::Window* pParent,
        const css::uno::Reference< css::security::XCertificate >& rXCert,
        const css::uno::Reference< css::uno::XComponentContext >& xContext );

    virtual void response(short nResponseId) override;

    void setDescription1Text(const OUString &aText) { set_primary_text(aText); }

    virtual void dispose() override;

    virtual ~SSLWarnDialog() override;
};

#endif // INCLUDED_UUI_SOURCE_SSLWARNDLG_HXX
diff --git a/uui/uiconfig/ui/sslwarndialog.ui b/uui/uiconfig/ui/sslwarndialog.ui
index 9770d75..70087a5b 100644
--- a/uui/uiconfig/ui/sslwarndialog.ui
+++ b/uui/uiconfig/ui/sslwarndialog.ui
@@ -75,7 +75,6 @@
    <action-widgets>
      <action-widget response="-5">ok</action-widget>
      <action-widget response="-6">cancel</action-widget>
      <action-widget response="101">view</action-widget>
    </action-widgets>
  </object>
</interface>
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index 77a3df7..e7fad21 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -392,6 +392,19 @@ public:
    {
        m_xDialog->EndDialog(nResponse);
    }

    virtual void add_button(const OUString& rText, int nResponse) override
    {
        VclButtonBox* pBox = m_xDialog->get_action_area();
        VclPtr<PushButton> xButton(VclPtr<PushButton>::Create(pBox, WB_CLIPCHILDREN|WB_CENTER|WB_VCENTER));
        xButton->SetText(rText);
        m_xDialog->add_button(xButton, nResponse, true);
    }

    virtual void set_default_response(int nResponse) override
    {
        m_xDialog->set_default_response(nResponse);
    }
};

class SalInstanceMessageDialog : public SalInstanceDialog, public virtual weld::MessageDialog
diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx
index 1fac7167..c3b8e50 100644
--- a/vcl/source/window/builder.cxx
+++ b/vcl/source/window/builder.cxx
@@ -3378,38 +3378,6 @@ PopupMenu *VclBuilder::get_menu(const OString& sID)
    return nullptr;
}

short VclBuilder::get_response(const vcl::Window *pWindow) const
{
    for (auto const& child : m_aChildren)
    {
        if (child.m_pWindow == pWindow)
        {
            return child.m_nResponseId;
        }
    }

    //how did we not find sID ?
    assert(false);
    return RET_CANCEL;
}

IMPL_LINK(VclBuilder, ResponseHdl, ::Button*, pButton, void)
{
    short nResponse = get_response(pButton);
    Dialog* pDialog = pButton->GetParentDialog();
    assert(pDialog && "who puts a response without a dialog");
    if (nResponse == RET_HELP)
    {
        vcl::Window* pFocusWin = Application::GetFocusWindow();
        if (!pFocusWin)
            pFocusWin = pButton;
        HelpEvent aEvt(pFocusWin->GetPointerPosPixel(), HelpEventMode::CONTEXT);
        pFocusWin->RequestHelp(aEvt);
    }
    else
        pDialog->EndDialog(nResponse);
}

void VclBuilder::set_response(const OString& sID, short nResponse)
{
    switch (nResponse)
@@ -3436,27 +3404,20 @@ void VclBuilder::set_response(const OString& sID, short nResponse)

    assert(nResponse >= 0);

    bool bFound = false;

    for (auto & child : m_aChildren)
    {
        if (child.m_sID == sID)
        {
            child.m_nResponseId = nResponse;
            bFound = true;
            break;
            PushButton* pPushButton = dynamic_cast<PushButton*>(child.m_pWindow.get());
            assert(pPushButton);
            Dialog* pDialog = pPushButton->GetParentDialog();
            assert(pDialog);
            pDialog->add_button(pPushButton, nResponse, false);
            return;
        }
    }

    if (!m_bLegacy)
    {
        PushButton* pPushButton = get<PushButton>(sID);
        assert(pPushButton);
        pPushButton->SetClickHdl(LINK(this, VclBuilder, ResponseHdl));
    }

    //how did we not find sID ?
    assert(bFound); (void)bFound;
    assert(false);
}

void VclBuilder::delete_by_name(const OString& sID)
diff --git a/vcl/source/window/dialog.cxx b/vcl/source/window/dialog.cxx
index 2da8e08..9665fa8 100644
--- a/vcl/source/window/dialog.cxx
+++ b/vcl/source/window/dialog.cxx
@@ -343,13 +343,35 @@ static void ImplMouseAutoPos( Dialog* pDialog )

struct DialogImpl
{
    std::vector<VclPtr<PushButton>> maOwnedButtons;
    std::map<VclPtr<vcl::Window>, short> maResponses;
    long    mnResult;
    bool    mbStartedModal;
    VclAbstractDialog::AsyncContext maEndCtx;

    DialogImpl() : mnResult( -1 ), mbStartedModal( false ) {}

    short get_response(vcl::Window *pWindow) const
    {
        auto aFind = maResponses.find(pWindow);
        if (aFind != maResponses.end())
            return aFind->second;
        return RET_CANCEL;
    }

    ~DialogImpl()
    {
        for (VclPtr<PushButton> & pOwnedButton : maOwnedButtons)
            pOwnedButton.disposeAndClear();
    }
};

void Dialog::disposeOwnedButtons()
{
    for (VclPtr<PushButton> & pOwnedButton : mpDialogImpl->maOwnedButtons)
        pOwnedButton.disposeAndClear();
}

void Dialog::ImplInitDialogData()
{
    mpWindowImpl->mbDialog  = true;
@@ -1283,6 +1305,96 @@ FactoryFunction Dialog::GetUITestFactory() const
    return DialogUIObject::create;
}

IMPL_LINK(Dialog, ResponseHdl, Button*, pButton, void)
{
    auto aFind = mpDialogImpl->maResponses.find(pButton);
    if (aFind == mpDialogImpl->maResponses.end())
        return;
    short nResponse = aFind->second;
    if (nResponse == RET_HELP)
    {
        vcl::Window* pFocusWin = Application::GetFocusWindow();
        if (!pFocusWin)
            pFocusWin = pButton;
        HelpEvent aEvt(pFocusWin->GetPointerPosPixel(), HelpEventMode::CONTEXT);
        pFocusWin->RequestHelp(aEvt);
        return;
    }
    EndDialog(nResponse);
}

void Dialog::add_button(PushButton* pButton, int response, bool bTransferOwnership)
{
    if (bTransferOwnership)
        mpDialogImpl->maOwnedButtons.push_back(pButton);
    mpDialogImpl->maResponses[pButton] = response;
    switch (pButton->GetType())
    {
        case WindowType::PUSHBUTTON:
        {
            if (!pButton->GetClickHdl().IsSet())
                pButton->SetClickHdl(LINK(this, Dialog, ResponseHdl));
            break;
        }
        //insist that the response ids match the default actions for those
        //widgets, and leave their default handlers in place
        case WindowType::OKBUTTON:
            assert(mpDialogImpl->get_response(pButton) == RET_OK);
            break;
        case WindowType::CANCELBUTTON:
            assert(mpDialogImpl->get_response(pButton) == RET_CANCEL || mpDialogImpl->get_response(pButton) == RET_CLOSE);
            break;
        case WindowType::HELPBUTTON:
            assert(mpDialogImpl->get_response(pButton) == RET_HELP);
            break;
        default:
            SAL_WARN("vcl.layout", "The type of widget " <<
                pButton->GetHelpId() << " is currently not handled");
            break;
    }
}

void Dialog::set_default_response(int response)
{
    //copy explicit responses
    std::map<VclPtr<vcl::Window>, short> aResponses(mpDialogImpl->maResponses);

    //add implicit responses
    for (vcl::Window* pChild = mpActionArea->GetWindow(GetWindowType::FirstChild); pChild;
         pChild = pChild->GetWindow(GetWindowType::Next))
    {
        if (aResponses.find(pChild) != aResponses.end())
            continue;
        switch (pChild->GetType())
        {
            case WindowType::OKBUTTON:
                aResponses[pChild] = RET_OK;
                break;
            case WindowType::CANCELBUTTON:
                aResponses[pChild] = RET_CANCEL;
                break;
            case WindowType::HELPBUTTON:
                aResponses[pChild] = RET_HELP;
                break;
            default:
                break;
        }
    }

    for (auto& a : aResponses)
    {
        if (a.second == response)
        {
            a.first->SetStyle(a.first->GetStyle() | WB_DEFBUTTON);
            a.first->GrabFocus();
        }
        else
        {
            a.first->SetStyle(a.first->GetStyle() & ~WB_DEFBUTTON);
        }
    }
}

VclBuilderContainer::VclBuilderContainer()
    : m_pUIBuilder(nullptr)
{
diff --git a/vcl/source/window/errinf.cxx b/vcl/source/window/errinf.cxx
index 00a99f4..f689fba 100644
--- a/vcl/source/window/errinf.cxx
+++ b/vcl/source/window/errinf.cxx
@@ -108,7 +108,7 @@ bool ErrorHandler::GetErrorString(ErrCode nErrCodeId, OUString& rErrStr)
    return false;
}

DialogMask ErrorHandler::HandleError(ErrCode nErrCodeId, vcl::Window *pParent, DialogMask nFlags)
DialogMask ErrorHandler::HandleError(ErrCode nErrCodeId, weld::Window *pParent, DialogMask nFlags)
{
    if (nErrCodeId == ERRCODE_NONE || nErrCodeId == ERRCODE_ABORT)
        return DialogMask::NONE;
@@ -186,10 +186,10 @@ DialogMask ErrorHandler::HandleError(ErrCode nErrCodeId, vcl::Window *pParent, D

struct ImplErrorContext
{
    vcl::Window *pWin; // FIXME: should be VclPtr for strong lifecycle
    weld::Window *pWin;
};

ErrorContext::ErrorContext(vcl::Window *pWinP)
ErrorContext::ErrorContext(weld::Window *pWinP)
    : pImpl( new ImplErrorContext )
{
    pImpl->pWin = pWinP;
@@ -207,7 +207,7 @@ ErrorContext *ErrorContext::GetContext()
    return TheErrorRegistry::get().contexts.empty() ? nullptr : TheErrorRegistry::get().contexts.front();
}

vcl::Window* ErrorContext::GetParent()
weld::Window* ErrorContext::GetParent()
{
    return pImpl ? pImpl->pWin : nullptr;
}
diff --git a/vcl/source/window/layout.cxx b/vcl/source/window/layout.cxx
index 69c492b..79f7bbc 100644
--- a/vcl/source/window/layout.cxx
+++ b/vcl/source/window/layout.cxx
@@ -2203,17 +2203,13 @@ MessageDialog::MessageDialog(vcl::Window* pParent, const OString& rID, const OUS

void MessageDialog::dispose()
{
    for (VclPtr<PushButton> & pOwnedButton : m_aOwnedButtons)
        pOwnedButton.disposeAndClear();
    m_aOwnedButtons.clear();

    disposeOwnedButtons();
    m_pPrimaryMessage.disposeAndClear();
    m_pSecondaryMessage.disposeAndClear();
    m_pImage.disposeAndClear();
    m_pGrid.disposeAndClear();
    m_pOwnedActionArea.disposeAndClear();
    m_pOwnedContentArea.disposeAndClear();
    m_aResponses.clear();
    Dialog::dispose();
}

@@ -2222,66 +2218,6 @@ MessageDialog::~MessageDialog()
    disposeOnce();
}

void MessageDialog::response(short nResponseId)
{
    EndDialog(nResponseId);
}

IMPL_LINK(MessageDialog, ButtonHdl, Button *, pButton, void)
{
    response(get_response(pButton));
}

short MessageDialog::get_response(const vcl::Window *pWindow) const
{
    auto aFind = m_aResponses.find(pWindow);
    if (aFind != m_aResponses.end())
        return aFind->second;
    if (!m_pUIBuilder)
        return RET_CANCEL;
    return m_pUIBuilder->get_response(pWindow);
}

void MessageDialog::setButtonHandlers(VclButtonBox const *pButtonBox)
{
    assert(pButtonBox);
    for (vcl::Window* pChild = pButtonBox->GetWindow(GetWindowType::FirstChild); pChild;
        pChild = pChild->GetWindow(GetWindowType::Next))
    {
        switch (pChild->GetType())
        {
            case WindowType::PUSHBUTTON:
            {
                PushButton* pButton = static_cast<PushButton*>(pChild);
                if (!pButton->GetClickHdl().IsSet())
                    pButton->SetClickHdl(LINK(this, MessageDialog, ButtonHdl));
                break;
            }
            //insist that the response ids match the default actions for those
            //widgets, and leave their default handlers in place
            case WindowType::OKBUTTON:
                assert(get_response(pChild) == RET_OK);
                break;
            case WindowType::CANCELBUTTON:
                assert(get_response(pChild) == RET_CANCEL);
                break;
            case WindowType::HELPBUTTON:
                assert(get_response(pChild) == RET_HELP);
                break;
            default:
                SAL_WARN("vcl.layout", "The type of widget " <<
                    pChild->GetHelpId() << " is currently not handled");
                break;
        }
        //The default is to stick the focus into the first widget
        //that accepts it, and if that happens and it's a button
        //then that becomes the new default button, so explicitly
        //put the focus into the default button
        if (pChild->GetStyle() & WB_DEFBUTTON)
            pChild->GrabFocus();
    }
}

void MessageDialog::SetMessagesWidths(vcl::Window const *pParent,
    VclMultiLineEdit *pPrimaryMessage, VclMultiLineEdit *pSecondaryMessage)
{
@@ -2317,7 +2253,7 @@ short MessageDialog::Execute()
        switch (m_eMessageType)
        {
            case VclMessageType::Info:
                m_pImage->SetImage(InfoBox::GetStandardImage());
                m_pImage->SetImage(GetStandardInfoBoxImage());
                break;
            case VclMessageType::Warning:
                m_pImage->SetImage(WarningBox::GetStandardImage());
@@ -2363,6 +2299,7 @@ short MessageDialog::Execute()
        assert(pButtonBox);

        VclPtr<PushButton> pBtn;
        short nDefaultResponse = RET_CANCEL;
        switch (m_eButtonsType)
        {
            case VclButtonsType::NONE:
@@ -2372,56 +2309,52 @@ short MessageDialog::Execute()
                pBtn->SetStyle(pBtn->GetStyle() & WB_DEFBUTTON);
                pBtn->Show();
                pBtn->set_id("ok");
                m_aOwnedButtons.push_back(pBtn);
                m_aResponses[pBtn] = RET_OK;
                add_button(pBtn, RET_OK, true);
                nDefaultResponse = RET_OK;
                break;
            case VclButtonsType::Close:
                pBtn.set( VclPtr<CloseButton>::Create(pButtonBox) );
                pBtn->SetStyle(pBtn->GetStyle() & WB_DEFBUTTON);
                pBtn->Show();
                pBtn->set_id("close");
                m_aOwnedButtons.push_back(pBtn);
                m_aResponses[pBtn] = RET_CLOSE;
                add_button(pBtn, RET_CLOSE, true);
                nDefaultResponse = RET_CLOSE;
                break;
            case VclButtonsType::Cancel:
                pBtn.set( VclPtr<CancelButton>::Create(pButtonBox) );
                pBtn->SetStyle(pBtn->GetStyle() & WB_DEFBUTTON);
                pBtn->set_id("cancel");
                m_aOwnedButtons.push_back(pBtn);
                m_aResponses[pBtn] = RET_CANCEL;
                add_button(pBtn, RET_CANCEL, true);
                nDefaultResponse = RET_CANCEL;
                break;
            case VclButtonsType::YesNo:
                pBtn = VclPtr<PushButton>::Create(pButtonBox);
                pBtn->SetText(Button::GetStandardText(StandardButtonType::Yes));
                pBtn->Show();
                pBtn->set_id("yes");
                m_aOwnedButtons.push_back(pBtn);
                m_aResponses[pBtn] = RET_YES;
                add_button(pBtn, RET_YES, true);

                pBtn.set( VclPtr<PushButton>::Create(pButtonBox) );
                pBtn->SetStyle(pBtn->GetStyle() & WB_DEFBUTTON);
                pBtn->SetText(Button::GetStandardText(StandardButtonType::No));
                pBtn->Show();
                pBtn->set_id("no");
                m_aOwnedButtons.push_back(pBtn);
                m_aResponses[pBtn] = RET_NO;
                add_button(pBtn, RET_NO, true);
                nDefaultResponse = RET_NO;
                break;
            case VclButtonsType::OkCancel:
                pBtn.set( VclPtr<OKButton>::Create(pButtonBox) );
                pBtn->Show();
                pBtn->set_id("ok");
                m_aOwnedButtons.push_back(pBtn);
                m_aResponses[pBtn] = RET_OK;
                add_button(pBtn, RET_OK, true);

                pBtn.set( VclPtr<CancelButton>::Create(pButtonBox) );
                pBtn->SetStyle(pBtn->GetStyle() & WB_DEFBUTTON);
                pBtn->Show();
                pBtn->set_id("cancel");
                m_aOwnedButtons.push_back(pBtn);
                m_aResponses[pBtn] = RET_CANCEL;
                add_button(pBtn, RET_CANCEL, true);
                nDefaultResponse = RET_CANCEL;
                break;
        }
        setButtonHandlers(pButtonBox);
        set_default_response(nDefaultResponse);
        pButtonBox->sort_native_button_order();
        m_pGrid->Show();
    }
diff --git a/vcl/source/window/msgbox.cxx b/vcl/source/window/msgbox.cxx
index ab6ff5ad..8fbd047 100644
--- a/vcl/source/window/msgbox.cxx
+++ b/vcl/source/window/msgbox.cxx
@@ -366,33 +366,13 @@ Size MessBox::GetOptimalSize() const
    return Size( 250, 100 );
}

InfoBox::InfoBox( vcl::Window* pParent, const OUString& rMessage ) :
    MessBox( pParent, MessBoxStyle::Ok | MessBoxStyle::DefaultOk, 0, OUString(), rMessage )
{
    // Default Text is the display title from the application
    if ( GetText().isEmpty() )
        SetText( GetStandardText() );

    SetImage( InfoBox::GetStandardImage() );
}

InfoBox::InfoBox( vcl::Window* pParent, MessBoxStyle nStyle, const OUString& rMessage ) :
    MessBox( pParent, nStyle, 0, OUString(), rMessage )
{
    // Default Text is the display title from the application
    if ( GetText().isEmpty() )
        SetText( GetStandardText() );

    SetImage( InfoBox::GetStandardImage() );
}

Image const & InfoBox::GetStandardImage()
Image const & GetStandardInfoBoxImage()
{
    ImplInitMsgBoxImageList();
    return ImplGetSVData()->maWinData.maMsgBoxImgList[3];
}

OUString InfoBox::GetStandardText()
OUString GetStandardInfoBoxText()
{
    return VclResId(SV_MSGBOX_INFO);
}
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 6a1a2f7..aa6873a 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -1386,6 +1386,8 @@ public:
                ret = RET_OK;
            else if (ret == GTK_RESPONSE_CANCEL)
                ret = RET_CANCEL;
            else if (ret == GTK_RESPONSE_CLOSE)
                ret = RET_CLOSE;
            else if (ret == GTK_RESPONSE_YES)
                ret = RET_YES;
            else if (ret == GTK_RESPONSE_NO)
@@ -1396,19 +1398,36 @@ public:
        return ret;
    }

    virtual void response(int nResponse) override
    static int VclToGtk(int nResponse)
    {
        if (nResponse == RET_OK)
            nResponse = GTK_RESPONSE_OK;
            return GTK_RESPONSE_OK;
        else if (nResponse == RET_CANCEL)
            nResponse = GTK_RESPONSE_CANCEL;
            return GTK_RESPONSE_CANCEL;
        else if (nResponse == RET_CLOSE)
            return GTK_RESPONSE_CLOSE;
        else if (nResponse == RET_YES)
            nResponse = GTK_RESPONSE_YES;
            return GTK_RESPONSE_YES;
        else if (nResponse == RET_NO)
            nResponse = GTK_RESPONSE_NO;
            return GTK_RESPONSE_NO;
        else if (nResponse == RET_HELP)
            nResponse = GTK_RESPONSE_HELP;
        gtk_dialog_response(m_pDialog, nResponse);
            return GTK_RESPONSE_HELP;
        return nResponse;
    }

    virtual void response(int nResponse) override
    {
        gtk_dialog_response(m_pDialog, VclToGtk(nResponse));
    }

    virtual void add_button(const OUString& rText, int nResponse) override
    {
        gtk_dialog_add_button(m_pDialog, OUStringToOString(rText, RTL_TEXTENCODING_UTF8).getStr(), VclToGtk(nResponse));
    }

    virtual void set_default_response(int nResponse) override
    {
        gtk_dialog_set_default_response(m_pDialog, VclToGtk(nResponse));
    }

    virtual ~GtkInstanceDialog() override
diff --git a/xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx b/xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx
index db47daf..2819368 100644
--- a/xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx
+++ b/xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx
@@ -472,7 +472,7 @@ IMPL_LINK_NOARG(DigitalSignaturesDialog, RemoveButtonHdl, Button*, void)
    }
}

IMPL_STATIC_LINK_NOARG(DigitalSignaturesDialog, CertMgrButtonHdl, Button*, void)
IMPL_STATIC_LINK(DigitalSignaturesDialog, CertMgrButtonHdl, Button*, pButton, void)
{
#ifdef _WIN32
    // FIXME: call GpgME::dirInfo("bindir") somewhere in
@@ -514,11 +514,12 @@ IMPL_STATIC_LINK_NOARG(DigitalSignaturesDialog, CertMgrButtonHdl, Button*, void)
       }
       else
       {
           ScopedVclPtrInstance<InfoBox>(nullptr, XsResId(STR_XMLSECDLG_NO_CERT_MANAGER))->Execute();
           std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(pButton->GetFrameWeld(),
                                                         VclMessageType::Info, VclButtonsType::Ok,
                                                         XsResId(STR_XMLSECDLG_NO_CERT_MANAGER)));
           xInfoBox->run();
       }

    }

}

IMPL_LINK_NOARG(DigitalSignaturesDialog, StartVerifySignatureHdl, LinkParamNone*, bool)
@@ -746,7 +747,10 @@ void DigitalSignaturesDialog::ImplShowSignaturesDetails()
        }
        else
        {
            ScopedVclPtrInstance<InfoBox>(nullptr, XsResId(STR_XMLSECDLG_NO_CERT_FOUND))->Execute();
            std::unique_ptr<weld::MessageDialog> xInfoBox(Application::CreateMessageDialog(GetFrameWeld(),
                                                          VclMessageType::Info, VclButtonsType::Ok,
                                                          XsResId(STR_XMLSECDLG_NO_CERT_FOUND)));
            xInfoBox->run();
        }
    }
}