[Libreoffice-commits] core.git: Branch 'libreoffice-4-4' - 5 commits - sax/source sw/qa sw/source
Matúš Kukan
matus.kukan at collabora.com
Thu Dec 11 13:31:53 PST 2014
sax/source/fastparser/fastparser.cxx | 6 ++-
sw/qa/extras/uiwriter/uiwriter.cxx | 36 ++++++++++++++++++++
sw/source/core/crsr/bookmrk.cxx | 12 ++++++
sw/source/core/doc/docbm.cxx | 16 ++++++++
sw/source/core/inc/UndoBookmark.hxx | 25 +++++++++++++
sw/source/core/inc/bookmrk.hxx | 4 +-
sw/source/core/undo/unbkmk.cxx | 63 +++++++++++++++++++++++++++++++++++
sw/source/core/unocore/unobkm.cxx | 23 ------------
8 files changed, 159 insertions(+), 26 deletions(-)
New commits:
commit 95b7cf6cef5edc920adee62c18fd97668a9ed3a8
Author: Matúš Kukan <matus.kukan at collabora.com>
Date: Thu Dec 11 15:24:40 2014 +0100
Add undo operation for deleting a bookmark + unit test, related fdo#51741
(cherry picked from commit 9338bea6e8dfab8d360fe8ab19dd5d75071bfc2a)
Conflicts:
sw/qa/extras/uiwriter/uiwriter.cxx
sw/source/core/undo/unbkmk.cxx
Change-Id: I79d8d3c30b6b0b2cc253963fdd50019aec033e12
diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx b/sw/qa/extras/uiwriter/uiwriter.cxx
index 2ed5298..23b1e7d 100644
--- a/sw/qa/extras/uiwriter/uiwriter.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter.cxx
@@ -57,6 +57,7 @@ public:
void testChineseConversionTraditionalToSimplified();
void testChineseConversionSimplifiedToTraditional();
void testFdo85554();
+ void testBookmarkUndo();
CPPUNIT_TEST_SUITE(SwUiWriterTest);
CPPUNIT_TEST(testReplaceForward);
@@ -80,6 +81,7 @@ public:
CPPUNIT_TEST(testChineseConversionTraditionalToSimplified);
CPPUNIT_TEST(testChineseConversionSimplifiedToTraditional);
CPPUNIT_TEST(testFdo85554);
+ CPPUNIT_TEST(testBookmarkUndo);
CPPUNIT_TEST_SUITE_END();
@@ -586,6 +588,40 @@ void SwUiWriterTest::testFdo85554()
CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(2), xDrawPage->getCount());
}
+void SwUiWriterTest::testBookmarkUndo()
+{
+ SwDoc* pDoc = createDoc();
+ sw::UndoManager& rUndoManager = pDoc->GetUndoManager();
+ IDocumentMarkAccess* const pMarkAccess = pDoc->getIDocumentMarkAccess();
+ SwPaM aPaM( SwNodeIndex(pDoc->GetNodes().GetEndOfContent(), -1) );
+
+ pMarkAccess->makeMark(aPaM, OUString("Mark"), IDocumentMarkAccess::BOOKMARK);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), pMarkAccess->getAllMarksCount());
+ rUndoManager.Undo();
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), pMarkAccess->getAllMarksCount());
+ rUndoManager.Redo();
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), pMarkAccess->getAllMarksCount());
+
+ IDocumentMarkAccess::const_iterator_t ppBkmk = pMarkAccess->findMark("Mark");
+ CPPUNIT_ASSERT(ppBkmk != pMarkAccess->getAllMarksEnd());
+
+ pMarkAccess->renameMark(ppBkmk->get(), "Mark_");
+ CPPUNIT_ASSERT(pMarkAccess->findMark("Mark") == pMarkAccess->getAllMarksEnd());
+ CPPUNIT_ASSERT(pMarkAccess->findMark("Mark_") != pMarkAccess->getAllMarksEnd());
+ rUndoManager.Undo();
+ CPPUNIT_ASSERT(pMarkAccess->findMark("Mark") != pMarkAccess->getAllMarksEnd());
+ CPPUNIT_ASSERT(pMarkAccess->findMark("Mark_") == pMarkAccess->getAllMarksEnd());
+ rUndoManager.Redo();
+ CPPUNIT_ASSERT(pMarkAccess->findMark("Mark") == pMarkAccess->getAllMarksEnd());
+ CPPUNIT_ASSERT(pMarkAccess->findMark("Mark_") != pMarkAccess->getAllMarksEnd());
+
+ pMarkAccess->deleteMark( pMarkAccess->findMark("Mark_") );
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), pMarkAccess->getAllMarksCount());
+ rUndoManager.Undo();
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), pMarkAccess->getAllMarksCount());
+ rUndoManager.Redo();
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), pMarkAccess->getAllMarksCount());
+}
CPPUNIT_TEST_SUITE_REGISTRATION(SwUiWriterTest);
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sw/source/core/crsr/bookmrk.cxx b/sw/source/core/crsr/bookmrk.cxx
index d79fffc..666a118 100644
--- a/sw/source/core/crsr/bookmrk.cxx
+++ b/sw/source/core/crsr/bookmrk.cxx
@@ -276,7 +276,11 @@ namespace sw { namespace mark
{
DdeBookmark::DeregisterFromDoc(io_pDoc);
- // fdo#51741 Bookmark should mark document as modified when deleted
+ if (io_pDoc->GetIDocumentUndoRedo().DoesUndo())
+ {
+ io_pDoc->GetIDocumentUndoRedo().AppendUndo(
+ new SwUndoDeleteBookmark(*this));
+ }
io_pDoc->getIDocumentState().SetModified();
}
diff --git a/sw/source/core/doc/docbm.cxx b/sw/source/core/doc/docbm.cxx
index d6d3d27..9567c3a 100644
--- a/sw/source/core/doc/docbm.cxx
+++ b/sw/source/core/doc/docbm.cxx
@@ -29,6 +29,7 @@
#include <doc.hxx>
#include <IDocumentRedlineAccess.hxx>
#include <IDocumentState.hxx>
+#include <IDocumentUndoRedo.hxx>
#include <docary.hxx>
#include <xmloff/odffields.hxx>
#include <editsh.hxx>
@@ -49,6 +50,7 @@
#include <sfx2/linkmgr.hxx>
#include <swserv.hxx>
#include <swundo.hxx>
+#include <UndoBookmark.hxx>
#include <unocrsr.hxx>
#include <viscrs.hxx>
#include <edimp.hxx>
@@ -550,12 +552,18 @@ namespace sw { namespace mark
return false;
if (::sw::mark::MarkBase* pMarkBase = dynamic_cast< ::sw::mark::MarkBase* >(io_pMark))
{
- m_aMarkNamesSet.erase(pMarkBase->GetName());
+ const OUString sOldName(pMarkBase->GetName());
+ m_aMarkNamesSet.erase(sOldName);
m_aMarkNamesSet.insert(rNewName);
pMarkBase->SetName(rNewName);
- // fdo#51741 Bookmark should mark document as modified when renamed
- if (dynamic_cast< ::sw::mark::Bookmark* >(io_pMark)) {
+ if (dynamic_cast< ::sw::mark::Bookmark* >(io_pMark))
+ {
+ if (m_pDoc->GetIDocumentUndoRedo().DoesUndo())
+ {
+ m_pDoc->GetIDocumentUndoRedo().AppendUndo(
+ new SwUndoRenameBookmark(sOldName, rNewName));
+ }
m_pDoc->getIDocumentState().SetModified();
}
}
diff --git a/sw/source/core/inc/UndoBookmark.hxx b/sw/source/core/inc/UndoBookmark.hxx
index eaa0fcb..c4215e2 100644
--- a/sw/source/core/inc/UndoBookmark.hxx
+++ b/sw/source/core/inc/UndoBookmark.hxx
@@ -67,15 +67,22 @@ public:
virtual void RedoImpl( ::sw::UndoRedoContext & ) SAL_OVERRIDE;
};
+class SwUndoDeleteBookmark : public SwUndoBookmark
+{
+public:
+ SwUndoDeleteBookmark( const ::sw::mark::IMark& );
+
+ virtual void UndoImpl( ::sw::UndoRedoContext & ) SAL_OVERRIDE;
+ virtual void RedoImpl( ::sw::UndoRedoContext & ) SAL_OVERRIDE;
+};
+
class SwUndoRenameBookmark : public SwUndo
{
const OUString m_sOldName;
const OUString m_sNewName;
- const sal_uLong m_nNode;
- const sal_Int32 m_nCntnt;
public:
- SwUndoRenameBookmark( const ::sw::mark::IMark&, const OUString& rNewName );
+ SwUndoRenameBookmark( const OUString& rOldName, const OUString& rNewName );
virtual ~SwUndoRenameBookmark();
private:
diff --git a/sw/source/core/undo/unbkmk.cxx b/sw/source/core/undo/unbkmk.cxx
index 3501ed5..ef0ad13 100644
--- a/sw/source/core/undo/unbkmk.cxx
+++ b/sw/source/core/undo/unbkmk.cxx
@@ -86,12 +86,25 @@ void SwUndoInsBookmark::RedoImpl(::sw::UndoRedoContext & rContext)
SetInDoc( &rContext.GetDoc() );
}
-SwUndoRenameBookmark::SwUndoRenameBookmark( const ::sw::mark::IMark& rBkmk, const OUString& rOldName )
+SwUndoDeleteBookmark::SwUndoDeleteBookmark( const ::sw::mark::IMark& rBkmk )
+ : SwUndoBookmark( UNDO_DELBOOKMARK, rBkmk )
+{
+}
+
+void SwUndoDeleteBookmark::UndoImpl(::sw::UndoRedoContext & rContext)
+{
+ SetInDoc( &rContext.GetDoc() );
+}
+
+void SwUndoDeleteBookmark::RedoImpl(::sw::UndoRedoContext & rContext)
+{
+ ResetInDoc( &rContext.GetDoc() );
+}
+
+SwUndoRenameBookmark::SwUndoRenameBookmark( const OUString& rOldName, const OUString& rNewName )
: SwUndo( UNDO_BOOKMARK_RENAME )
, m_sOldName( rOldName )
- , m_sNewName( rBkmk.GetName() )
- , m_nNode( rBkmk.GetMarkPos().nNode.GetIndex() )
- , m_nCntnt( rBkmk.GetMarkPos().nContent.GetIndex() )
+ , m_sNewName( rNewName )
{
}
diff --git a/sw/source/core/unocore/unobkm.cxx b/sw/source/core/unocore/unobkm.cxx
index f42beb3..2f252f9 100644
--- a/sw/source/core/unocore/unobkm.cxx
+++ b/sw/source/core/unocore/unobkm.cxx
@@ -24,7 +24,6 @@
#include <vcl/svapp.hxx>
#include <TextCursorHelper.hxx>
-#include <UndoBookmark.hxx>
#include <unotextrange.hxx>
#include <unomap.hxx>
#include <unoprnms.hxx>
@@ -32,7 +31,6 @@
#include <crossrefbookmark.hxx>
#include <doc.hxx>
#include <IDocumentState.hxx>
-#include <IDocumentUndoRedo.hxx>
#include <docary.hxx>
#include <swundo.hxx>
#include <docsh.hxx>
@@ -349,15 +347,7 @@ throw (uno::RuntimeException, std::exception)
*aPam.GetMark() = m_pImpl->m_pRegisteredBookmark->GetOtherMarkPos();
}
- const OUString sOldName(m_pImpl->m_pRegisteredBookmark->GetName());
- if (pMarkAccess->renameMark(m_pImpl->m_pRegisteredBookmark, rName))
- {
- if (m_pImpl->m_pDoc->GetIDocumentUndoRedo().DoesUndo())
- {
- m_pImpl->m_pDoc->GetIDocumentUndoRedo().AppendUndo(
- new SwUndoRenameBookmark(*m_pImpl->m_pRegisteredBookmark, sOldName));
- }
- }
+ pMarkAccess->renameMark(m_pImpl->m_pRegisteredBookmark, rName);
}
OUString SAL_CALL
commit b4000bac50431b75d9e1157b88c2fb137e684591
Author: Renato Ferreira <renato.wolp at gmail.com>
Date: Sat Nov 15 00:22:57 2014 -0500
fdo#51741 Mark document as modified on bookmark rename / delete
Change-Id: I378037ea546d0f2dc4ab9e0b0e6f9bf65c8db5b4
Deletion: overrided DdeBookmark::DeregisterFromDoc in Bookmark
Renaming: in MarkManager::renameMark
Reviewed-on: https://gerrit.libreoffice.org/12436
Reviewed-by: Michael Stahl <mstahl at redhat.com>
Tested-by: Michael Stahl <mstahl at redhat.com>
(cherry picked from commit f0c4cd51cb160492d78c2796f71ecd88da25fa59)
diff --git a/sw/source/core/crsr/bookmrk.cxx b/sw/source/core/crsr/bookmrk.cxx
index 35fc43e..d79fffc 100644
--- a/sw/source/core/crsr/bookmrk.cxx
+++ b/sw/source/core/crsr/bookmrk.cxx
@@ -272,6 +272,14 @@ namespace sw { namespace mark
io_pDoc->getIDocumentState().SetModified();
}
+ void Bookmark::DeregisterFromDoc(SwDoc* const io_pDoc)
+ {
+ DdeBookmark::DeregisterFromDoc(io_pDoc);
+
+ // fdo#51741 Bookmark should mark document as modified when deleted
+ io_pDoc->getIDocumentState().SetModified();
+ }
+
::sfx2::IXmlIdRegistry& Bookmark::GetRegistry()
{
SwDoc *const pDoc( GetMarkPos().GetDoc() );
diff --git a/sw/source/core/doc/docbm.cxx b/sw/source/core/doc/docbm.cxx
index b7487ec..d6d3d27 100644
--- a/sw/source/core/doc/docbm.cxx
+++ b/sw/source/core/doc/docbm.cxx
@@ -28,6 +28,7 @@
#include <dcontact.hxx>
#include <doc.hxx>
#include <IDocumentRedlineAccess.hxx>
+#include <IDocumentState.hxx>
#include <docary.hxx>
#include <xmloff/odffields.hxx>
#include <editsh.hxx>
@@ -552,6 +553,11 @@ namespace sw { namespace mark
m_aMarkNamesSet.erase(pMarkBase->GetName());
m_aMarkNamesSet.insert(rNewName);
pMarkBase->SetName(rNewName);
+
+ // fdo#51741 Bookmark should mark document as modified when renamed
+ if (dynamic_cast< ::sw::mark::Bookmark* >(io_pMark)) {
+ m_pDoc->getIDocumentState().SetModified();
+ }
}
return true;
}
diff --git a/sw/source/core/inc/bookmrk.hxx b/sw/source/core/inc/bookmrk.hxx
index b5eef56..d5bc95c 100644
--- a/sw/source/core/inc/bookmrk.hxx
+++ b/sw/source/core/inc/bookmrk.hxx
@@ -152,7 +152,7 @@ namespace sw {
void SetRefObject( SwServerObject* pObj );
- void DeregisterFromDoc(SwDoc* const pDoc);
+ virtual void DeregisterFromDoc(SwDoc* const pDoc);
virtual ~DdeBookmark();
private:
@@ -171,6 +171,8 @@ namespace sw {
const OUString& rShortName);
virtual void InitDoc(SwDoc* const io_Doc) SAL_OVERRIDE;
+ virtual void DeregisterFromDoc(SwDoc* const io_pDoc) SAL_OVERRIDE;
+
virtual const OUString& GetShortName() const SAL_OVERRIDE
{ return m_sShortName; }
virtual const vcl::KeyCode& GetKeyCode() const SAL_OVERRIDE
diff --git a/sw/source/core/unocore/unobkm.cxx b/sw/source/core/unocore/unobkm.cxx
index 3697649..f42beb3 100644
--- a/sw/source/core/unocore/unobkm.cxx
+++ b/sw/source/core/unocore/unobkm.cxx
@@ -357,7 +357,6 @@ throw (uno::RuntimeException, std::exception)
m_pImpl->m_pDoc->GetIDocumentUndoRedo().AppendUndo(
new SwUndoRenameBookmark(*m_pImpl->m_pRegisteredBookmark, sOldName));
}
- m_pImpl->m_pDoc->getIDocumentState().SetModified();
}
}
commit 68420e81edb7275cc66bae110d7279b24a8913a6
Author: Matúš Kukan <matus.kukan at collabora.com>
Date: Mon Dec 1 13:32:05 2014 +0100
Add message to exception
Change-Id: I0e7cf850b51343e4afc1ea0a0409ad2c4e596435
(cherry picked from commit 373daf55d98ba706d3dea131e755da3a00eb259f)
diff --git a/sax/source/fastparser/fastparser.cxx b/sax/source/fastparser/fastparser.cxx
index d0d6979..fc1f5a9 100644
--- a/sax/source/fastparser/fastparser.cxx
+++ b/sax/source/fastparser/fastparser.cxx
@@ -661,7 +661,8 @@ sal_Int32 FastSaxParserImpl::GetTokenWithPrefix( const xmlChar* pPrefix, int nPr
}
if( !nNamespace )
- throw SAXException(); // prefix that has no defined namespace url
+ throw SAXException("No namespace defined for " + OUString(XML_CAST(pPrefix),
+ nPrefixLen, RTL_TEXTENCODING_UTF8), Reference< XInterface >(), Any());
}
if( nNamespaceToken != FastToken::DONTKNOW )
@@ -694,7 +695,8 @@ OUString FastSaxParserImpl::GetNamespaceURL( const OString& rPrefix ) throw (SAX
return rEntity.maNamespaceDefines[nNamespace]->maNamespaceURL;
}
- throw SAXException(); // prefix that has no defined namespace url
+ throw SAXException("No namespace defined for " + OUString::fromUtf8(rPrefix),
+ Reference< XInterface >(), Any());
}
sal_Int32 FastSaxParserImpl::GetTokenWithContextNamespace( sal_Int32 nNamespaceToken, const xmlChar* pName, int nNameLen )
commit 7b5184a8a19fe080f4b897e62bed99460b64002a
Author: Matúš Kukan <matus.kukan at collabora.com>
Date: Wed Nov 26 21:26:06 2014 +0100
Use IDocumentMarkAccess::findMark here
Presumably, the names should be unique, so it's the same.
Change-Id: I74907b97bc25f9512d4f7514162360e8b21ad4a5
(cherry picked from commit 43a803ccf8d392561bd168dc3b64695c4dcf93ce)
diff --git a/sw/source/core/undo/unbkmk.cxx b/sw/source/core/undo/unbkmk.cxx
index eb11aa9..3501ed5 100644
--- a/sw/source/core/undo/unbkmk.cxx
+++ b/sw/source/core/undo/unbkmk.cxx
@@ -118,17 +118,10 @@ SwRewriter SwUndoRenameBookmark::GetRewriter() const
void SwUndoRenameBookmark::Rename(::sw::UndoRedoContext & rContext, const OUString& sFrom, const OUString& sTo)
{
IDocumentMarkAccess* const pMarkAccess = rContext.GetDoc().getIDocumentMarkAccess();
- for ( IDocumentMarkAccess::const_iterator_t ppBkmk = pMarkAccess->getAllMarksBegin();
- ppBkmk != pMarkAccess->getAllMarksEnd();
- ++ppBkmk )
+ IDocumentMarkAccess::const_iterator_t ppBkmk = pMarkAccess->findMark(sFrom);
+ if (ppBkmk != pMarkAccess->getAllMarksEnd())
{
- if ( m_nNode == ppBkmk->get()->GetMarkPos().nNode.GetIndex()
- && m_nCntnt == ppBkmk->get()->GetMarkPos().nContent.GetIndex()
- && sFrom == ppBkmk->get()->GetName() )
- {
- pMarkAccess->renameMark( ppBkmk->get(), sTo );
- break;
- }
+ pMarkAccess->renameMark( ppBkmk->get(), sTo );
}
}
commit acf5d1693c184ee480c1663dd3bdfabcd49ef802
Author: Matúš Kukan <matus.kukan at collabora.com>
Date: Wed Nov 26 11:58:13 2014 +0100
Writer: Set document as modified and add undo when renaming bookmarks
Change-Id: Id0d4695b6a7c5eae0493e679345bd41d4687d6d7
(cherry picked from commit c7fa6687e544e7f9702da23aadbd31c1f2e0115e)
diff --git a/sw/source/core/inc/UndoBookmark.hxx b/sw/source/core/inc/UndoBookmark.hxx
index b7e0d56..eaa0fcb 100644
--- a/sw/source/core/inc/UndoBookmark.hxx
+++ b/sw/source/core/inc/UndoBookmark.hxx
@@ -67,6 +67,24 @@ public:
virtual void RedoImpl( ::sw::UndoRedoContext & ) SAL_OVERRIDE;
};
+class SwUndoRenameBookmark : public SwUndo
+{
+ const OUString m_sOldName;
+ const OUString m_sNewName;
+ const sal_uLong m_nNode;
+ const sal_Int32 m_nCntnt;
+
+public:
+ SwUndoRenameBookmark( const ::sw::mark::IMark&, const OUString& rNewName );
+ virtual ~SwUndoRenameBookmark();
+
+private:
+ virtual SwRewriter GetRewriter() const SAL_OVERRIDE;
+ void Rename( ::sw::UndoRedoContext &, const OUString& sFrom, const OUString& sTo );
+ virtual void UndoImpl( ::sw::UndoRedoContext & ) SAL_OVERRIDE;
+ virtual void RedoImpl( ::sw::UndoRedoContext & ) SAL_OVERRIDE;
+};
+
#endif // INCLUDED_SW_SOURCE_CORE_INC_UNDOBOOKMARK_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/core/undo/unbkmk.cxx b/sw/source/core/undo/unbkmk.cxx
index 569fe21..eb11aa9 100644
--- a/sw/source/core/undo/unbkmk.cxx
+++ b/sw/source/core/undo/unbkmk.cxx
@@ -19,6 +19,7 @@
#include <UndoBookmark.hxx>
+#include <comcore.hrc>
#include "doc.hxx"
#include "docary.hxx"
#include "swundo.hxx"
@@ -85,4 +86,60 @@ void SwUndoInsBookmark::RedoImpl(::sw::UndoRedoContext & rContext)
SetInDoc( &rContext.GetDoc() );
}
+SwUndoRenameBookmark::SwUndoRenameBookmark( const ::sw::mark::IMark& rBkmk, const OUString& rOldName )
+ : SwUndo( UNDO_BOOKMARK_RENAME )
+ , m_sOldName( rOldName )
+ , m_sNewName( rBkmk.GetName() )
+ , m_nNode( rBkmk.GetMarkPos().nNode.GetIndex() )
+ , m_nCntnt( rBkmk.GetMarkPos().nContent.GetIndex() )
+{
+}
+
+SwUndoRenameBookmark::~SwUndoRenameBookmark()
+{
+}
+
+static OUString lcl_QuoteName(const OUString& rName)
+{
+ static const OUString sStart = SW_RES(STR_START_QUOTE);
+ static const OUString sEnd = SW_RES(STR_END_QUOTE);
+ return sStart + rName + sEnd;
+}
+
+SwRewriter SwUndoRenameBookmark::GetRewriter() const
+{
+ SwRewriter aRewriter;
+ aRewriter.AddRule(UndoArg1, lcl_QuoteName(m_sOldName));
+ aRewriter.AddRule(UndoArg2, SW_RES(STR_YIELDS));
+ aRewriter.AddRule(UndoArg3, lcl_QuoteName(m_sNewName));
+ return aRewriter;
+}
+
+void SwUndoRenameBookmark::Rename(::sw::UndoRedoContext & rContext, const OUString& sFrom, const OUString& sTo)
+{
+ IDocumentMarkAccess* const pMarkAccess = rContext.GetDoc().getIDocumentMarkAccess();
+ for ( IDocumentMarkAccess::const_iterator_t ppBkmk = pMarkAccess->getAllMarksBegin();
+ ppBkmk != pMarkAccess->getAllMarksEnd();
+ ++ppBkmk )
+ {
+ if ( m_nNode == ppBkmk->get()->GetMarkPos().nNode.GetIndex()
+ && m_nCntnt == ppBkmk->get()->GetMarkPos().nContent.GetIndex()
+ && sFrom == ppBkmk->get()->GetName() )
+ {
+ pMarkAccess->renameMark( ppBkmk->get(), sTo );
+ break;
+ }
+ }
+}
+
+void SwUndoRenameBookmark::UndoImpl(::sw::UndoRedoContext & rContext)
+{
+ Rename(rContext, m_sNewName, m_sOldName);
+}
+
+void SwUndoRenameBookmark::RedoImpl(::sw::UndoRedoContext & rContext)
+{
+ Rename(rContext, m_sOldName, m_sNewName);
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/core/unocore/unobkm.cxx b/sw/source/core/unocore/unobkm.cxx
index 569fcd2..3697649 100644
--- a/sw/source/core/unocore/unobkm.cxx
+++ b/sw/source/core/unocore/unobkm.cxx
@@ -24,17 +24,17 @@
#include <vcl/svapp.hxx>
#include <TextCursorHelper.hxx>
+#include <UndoBookmark.hxx>
#include <unotextrange.hxx>
#include <unomap.hxx>
#include <unoprnms.hxx>
#include <IMark.hxx>
#include <crossrefbookmark.hxx>
#include <doc.hxx>
+#include <IDocumentState.hxx>
#include <IDocumentUndoRedo.hxx>
#include <docary.hxx>
#include <swundo.hxx>
-#include <comcore.hrc>
-#include <SwRewriter.hxx>
#include <docsh.hxx>
#include <xmloff/odffields.hxx>
#include <comphelper/servicehelper.hxx>
@@ -42,16 +42,6 @@
using namespace ::sw::mark;
using namespace ::com::sun::star;
-namespace
-{
- static OUString lcl_QuoteName(const OUString& rName)
- {
- static const OUString sStart = SW_RES(STR_START_QUOTE);
- static const OUString sEnd = SW_RES(STR_END_QUOTE);
- return sStart + rName + sEnd;
- }
-}
-
class SwXBookmark::Impl
: public SwClient
{
@@ -359,16 +349,16 @@ throw (uno::RuntimeException, std::exception)
*aPam.GetMark() = m_pImpl->m_pRegisteredBookmark->GetOtherMarkPos();
}
- SwRewriter aRewriter;
- aRewriter.AddRule(UndoArg1, lcl_QuoteName(getName()));
- aRewriter.AddRule(UndoArg2, SW_RES(STR_YIELDS));
- aRewriter.AddRule(UndoArg3, lcl_QuoteName(rName));
-
- m_pImpl->m_pDoc->GetIDocumentUndoRedo().StartUndo(
- UNDO_BOOKMARK_RENAME, &aRewriter);
- pMarkAccess->renameMark(m_pImpl->m_pRegisteredBookmark, rName);
- m_pImpl->m_pDoc->GetIDocumentUndoRedo().EndUndo(
- UNDO_BOOKMARK_RENAME, &aRewriter);
+ const OUString sOldName(m_pImpl->m_pRegisteredBookmark->GetName());
+ if (pMarkAccess->renameMark(m_pImpl->m_pRegisteredBookmark, rName))
+ {
+ if (m_pImpl->m_pDoc->GetIDocumentUndoRedo().DoesUndo())
+ {
+ m_pImpl->m_pDoc->GetIDocumentUndoRedo().AppendUndo(
+ new SwUndoRenameBookmark(*m_pImpl->m_pRegisteredBookmark, sOldName));
+ }
+ m_pImpl->m_pDoc->getIDocumentState().SetModified();
+ }
}
OUString SAL_CALL
More information about the Libreoffice-commits
mailing list