summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSzymon Kłos <szymon.klos@collabora.com>2021-10-25 12:03:26 +0200
committerSzymon Kłos <szymon.klos@collabora.com>2021-10-29 14:48:07 +0200
commitd1c8e1627e39a6d816f82aa3a31d3092c35263f5 (patch)
tree6672e5407f4f6bbf932bc8a194ad860b5d859fd1
parent7f2aea30f18b0c76dbbb58d3498cb68778040ef3 (diff)
Make View Certificate sub-dialog async
Change-Id: I0e1a6a59d856ab266511fc3d6be87fe04c5afdfc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124143 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
-rw-r--r--vcl/jsdialog/enabled.cxx3
-rw-r--r--xmlsecurity/inc/certificateviewer.hxx2
-rw-r--r--xmlsecurity/source/dialogs/certificateviewer.cxx13
3 files changed, 15 insertions, 3 deletions
diff --git a/vcl/jsdialog/enabled.cxx b/vcl/jsdialog/enabled.cxx
index 30fa14deffa0..03957b4ec4cf 100644
--- a/vcl/jsdialog/enabled.cxx
+++ b/vcl/jsdialog/enabled.cxx
@@ -54,7 +54,8 @@ bool isBuilderEnabled(const OUString& rUIFile, bool bMobile)
|| rUIFile == "cui/ui/macroselectordialog.ui" || rUIFile == "uui/ui/macrowarnmedium.ui"
|| rUIFile == "modules/scalc/ui/textimportcsv.ui"
|| rUIFile == "xmlsec/ui/digitalsignaturesdialog.ui"
- || rUIFile == "xmlsec/ui/viewcertdialog.ui")
+ || rUIFile == "xmlsec/ui/viewcertdialog.ui" || rUIFile == "xmlsec/ui/certgeneral.ui"
+ || rUIFile == "xmlsec/ui/viewcertdialog.ui" || rUIFile == "xmlsec/ui/certpage.ui")
{
return true;
}
diff --git a/xmlsecurity/inc/certificateviewer.hxx b/xmlsecurity/inc/certificateviewer.hxx
index 1d0ec5f72e2d..ea47c41029a8 100644
--- a/xmlsecurity/inc/certificateviewer.hxx
+++ b/xmlsecurity/inc/certificateviewer.hxx
@@ -134,6 +134,7 @@ private:
bool mbFirstActivateDone;
std::vector<std::unique_ptr<CertPath_UserData>> maUserData;
+ std::shared_ptr<CertificateViewer> mxCertificateViewer;
std::unique_ptr<weld::TreeView> mxCertPathLB;
std::unique_ptr<weld::TreeIter> mxScratchIter;
@@ -150,6 +151,7 @@ private:
public:
CertificateViewerCertPathTP(weld::Container* pParent, CertificateViewer* pDlg);
+ ~CertificateViewerCertPathTP();
void ActivatePage();
};
diff --git a/xmlsecurity/source/dialogs/certificateviewer.cxx b/xmlsecurity/source/dialogs/certificateviewer.cxx
index fbbdcf53514d..cb039b304800 100644
--- a/xmlsecurity/source/dialogs/certificateviewer.cxx
+++ b/xmlsecurity/source/dialogs/certificateviewer.cxx
@@ -273,6 +273,12 @@ CertificateViewerCertPathTP::CertificateViewerCertPathTP(weld::Container* pParen
mxViewCertPB->connect_clicked( LINK( this, CertificateViewerCertPathTP, ViewCertHdl ) );
}
+CertificateViewerCertPathTP::~CertificateViewerCertPathTP()
+{
+ if (mxCertificateViewer)
+ mxCertificateViewer->response(RET_OK);
+}
+
void CertificateViewerCertPathTP::ActivatePage()
{
if ( mbFirstActivateDone )
@@ -324,10 +330,13 @@ IMPL_LINK_NOARG(CertificateViewerCertPathTP, ViewCertHdl, weld::Button&, void)
std::unique_ptr<weld::TreeIter> xIter = mxCertPathLB->make_iterator();
if (mxCertPathLB->get_selected(xIter.get()))
{
+ if (mxCertificateViewer)
+ mxCertificateViewer->response(RET_OK);
+
CertPath_UserData* pData = reinterpret_cast<CertPath_UserData*>(mxCertPathLB->get_id(*xIter).toInt64());
- CertificateViewer aViewer(mpDlg->getDialog(), mpDlg->mxSecurityEnvironment,
+ mxCertificateViewer = std::make_shared<CertificateViewer>(mpDlg->getDialog(), mpDlg->mxSecurityEnvironment,
pData->mxCert, false, nullptr);
- aViewer.run();
+ weld::DialogController::runAsync(mxCertificateViewer, [this] (sal_Int32) { mxCertificateViewer = nullptr; });
}
}