diff options
author | Muhammet Kara <muhammet.kara@collabora.com> | 2019-06-18 21:04:26 +0300 |
---|---|---|
committer | Muhammet Kara <muhammet.kara@collabora.com> | 2019-06-18 21:59:35 +0200 |
commit | 881e6fdd47386e430ad4c5489e3a6bbf0b46c85f (patch) | |
tree | c0416d9c9be1212bee0adf45289917e5e63fe7c3 /sfx2 | |
parent | 4a478227f5af8322164ecce66fd056e9bf2eac89 (diff) |
Copy targets instead of moving during redaction
To allow properly remembering the last state.
* And some clean-up.
Change-Id: Id0b0f4251e3578b8baced1e6e6b1161f46e324dc
Reviewed-on: https://gerrit.libreoffice.org/74302
Tested-by: Jenkins
Reviewed-by: Muhammet Kara <muhammet.kara@collabora.com>
Diffstat (limited to 'sfx2')
-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]]; } |