sfx2/inc/autoredactdialog.hxx        |   14 +++++---------
 sfx2/source/doc/autoredactdialog.cxx |   25 ++++++++-----------------
 sfx2/source/doc/objserv.cxx          |    2 +-
 3 files changed, 14 insertions(+), 27 deletions(-)

New commits:
commit 1200845272cb1a92507cfe01c125c5aca2d5452f
Author:     Muhammet Kara <muhammet.k...@collabora.com>
AuthorDate: Tue Jun 18 21:04:26 2019 +0300
Commit:     Muhammet Kara <muhammet.k...@collabora.com>
CommitDate: Tue Jun 18 22:20:31 2019 +0200

    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.k...@collabora.com>
    Reviewed-on: https://gerrit.libreoffice.org/74308
    Tested-by: Muhammet Kara <muhammet.k...@collabora.com>

diff --git a/sfx2/inc/autoredactdialog.hxx b/sfx2/inc/autoredactdialog.hxx
index 2cec20cc64c8..7082052d60a9 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.
-     *  Returns true if successfull.
+    /** 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 c7248446f9f3..b1882f7b5717 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 9b9b3fc0f9dc..73bc90490f22 100644
--- a/sfx2/source/doc/objserv.cxx
+++ b/sfx2/source/doc/objserv.cxx
@@ -560,7 +560,7 @@ void SfxObjectShell::ExecFile_Impl(SfxRequest &rReq)
 
             // else continue with normal redaction
             bIsAutoRedact = true;
-            aDlg.moveTargets(aRedactionTargets);
+            aDlg.getTargets(aRedactionTargets);
 
             [[fallthrough]];
         }
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to