diff options
-rw-r--r-- | sfx2/inc/autoredactdialog.hxx | 12 | ||||
-rw-r--r-- | sfx2/source/doc/autoredactdialog.cxx | 25 | ||||
-rw-r--r-- | sfx2/source/doc/objserv.cxx | 2 |
3 files changed, 13 insertions, 26 deletions
diff --git a/sfx2/inc/autoredactdialog.hxx b/sfx2/inc/autoredactdialog.hxx index 9734f236de10..f7cdecc15cce 100644 --- a/sfx2/inc/autoredactdialog.hxx +++ b/sfx2/inc/autoredactdialog.hxx @@ -106,6 +106,7 @@ class SFX2_DLLPUBLIC SfxAutoRedactDialog : public SfxDialogController std::vector<std::pair<RedactionTarget*, OUString>> m_aTableTargets; std::unique_ptr<sfx2::FileDialogHelper> m_pFileDlg; bool m_bIsValidState; + bool m_bTargetsCopied; std::unique_ptr<weld::Label> m_xRedactionTargetsLabel; std::unique_ptr<TargetsTable> m_xTargetsBox; @@ -138,16 +139,11 @@ public: bool hasTargets() const; /// Check if the dialog is in a valid state. bool isValidState() const { return m_bIsValidState; } - /** Literally moves targets into the given vector. - * At the end of the operation, m_aTableTargets vector becomes empty. - * The contents of the given vector will be erased before being filled in. + /** Copies targets vector + * Does a shallow copy. * Returns true if successful. */ - bool moveTargets(std::vector<std::pair<RedactionTarget*, OUString>>& r_aTargets); - - // TODO: Some method(s) to check emptiness/validity - // TODO: Some method(s) to get the search params/objects - // TODO: Some method(s) to load/save redaction target sets + bool getTargets(std::vector<std::pair<RedactionTarget*, OUString>>& r_aTargets); }; class SfxAddTargetDialog : public weld::GenericDialogController diff --git a/sfx2/source/doc/autoredactdialog.cxx b/sfx2/source/doc/autoredactdialog.cxx index 950684ac4d1c..54f40fc35abd 100644 --- a/sfx2/source/doc/autoredactdialog.cxx +++ b/sfx2/source/doc/autoredactdialog.cxx @@ -545,6 +545,7 @@ void SfxAutoRedactDialog::clearTargets() SfxAutoRedactDialog::SfxAutoRedactDialog(weld::Window* pParent) : SfxDialogController(pParent, "sfx/ui/autoredactdialog.ui", "AutoRedactDialog") , m_bIsValidState(true) + , m_bTargetsCopied(false) , m_xRedactionTargetsLabel(m_xBuilder->weld_label("labelRedactionTargets")) , m_xTargetsBox(new TargetsTable(m_xBuilder->weld_tree_view("targets"))) , m_xLoadBtn(m_xBuilder->weld_button("btnLoadTargets")) @@ -636,7 +637,8 @@ SfxAutoRedactDialog::~SfxAutoRedactDialog() OStringToOUString(m_xDialog->get_help_id(), RTL_TEXTENCODING_UTF8)); aDlgOpt.SetUserItem("UserItem", css::uno::makeAny(sUserDataStr)); - clearTargets(); + if (!m_bTargetsCopied) + clearTargets(); } catch (css::uno::Exception& e) { @@ -656,24 +658,13 @@ bool SfxAutoRedactDialog::hasTargets() const return true; } -bool SfxAutoRedactDialog::moveTargets( - std::vector<std::pair<RedactionTarget*, OUString>>& r_aTargets) +bool SfxAutoRedactDialog::getTargets(std::vector<std::pair<RedactionTarget*, OUString>>& r_aTargets) { - try - { - r_aTargets.clear(); - r_aTargets.insert(r_aTargets.end(), std::make_move_iterator(m_aTableTargets.begin()), - std::make_move_iterator(m_aTableTargets.end())); - m_aTableTargets.clear(); - m_bIsValidState = false; - } - catch (const css::uno::Exception& e) - { - SAL_WARN("sfx.doc", "Exception caught while moving redaction targets: " << e.Message); - m_bIsValidState = false; - return false; - } + if (m_aTableTargets.empty()) + return true; + r_aTargets = m_aTableTargets; + m_bTargetsCopied = true; return true; } diff --git a/sfx2/source/doc/objserv.cxx b/sfx2/source/doc/objserv.cxx index 24eee80787f8..74edeb4d57da 100644 --- a/sfx2/source/doc/objserv.cxx +++ b/sfx2/source/doc/objserv.cxx @@ -561,7 +561,7 @@ void SfxObjectShell::ExecFile_Impl(SfxRequest &rReq) // else continue with normal redaction bIsAutoRedact = true; - aDlg.moveTargets(aRedactionTargets); + aDlg.getTargets(aRedactionTargets); [[fallthrough]]; } |