Hi,

https://bugs.freedesktop.org/show_bug.cgi?id=38374

In the document attached to the bug, when you copy the described table,
do edits there, and save it as .doc, the changes are lost.  These are in
fact 2 bugs, but I fixed the more serious one.  One is that when you
copy/paste a fieldmark, the essential attributes are not preserved;
later, when saving, the fieldmark is of unknown type, and ignored.  We
should save even the unknown fieldmarks I think, but here I fixed the
root cause - that the attributes are not copied.

Patch attached, please sign-off, and push to libreoffice-3-4.

Thank you,
Kendy
>From f1eaef6ec0f701cf3dfb223fdbc97c3eb17d1f9c Mon Sep 17 00:00:00 2001
From: Jan Holesovsky <ke...@suse.cz>
Date: Fri, 1 Jul 2011 16:35:39 +0200
Subject: [PATCH] Copy fieldmark properties when copying/pasting, fdo#38374.

---
 sw/source/core/docnode/ndcopy.cxx |   13 ++++++++++++-
 1 files changed, 12 insertions(+), 1 deletions(-)

diff --git a/sw/source/core/docnode/ndcopy.cxx b/sw/source/core/docnode/ndcopy.cxx
index acdb9a9..0176ada 100644
--- a/sw/source/core/docnode/ndcopy.cxx
+++ b/sw/source/core/docnode/ndcopy.cxx
@@ -186,14 +186,25 @@ namespace
             // Explicitly try to get exactly the same name as in the source
             // because NavigatorReminders, DdeBookmarks etc. ignore the proposed name
             pDestDoc->getIDocumentMarkAccess()->renameMark(pNewMark, pMark->GetName());
+
+            // copying additional attributes for bookmarks or fieldmarks
             ::sw::mark::IBookmark* const pNewBookmark =
                 dynamic_cast< ::sw::mark::IBookmark* const >(pNewMark);
-            if(pNewBookmark) /* copying additional attributes for bookmarks */
+            if(pNewBookmark)
             {
                 const ::sw::mark::IBookmark* const pOldBookmark = dynamic_cast< const ::sw::mark::IBookmark* >(pMark);
                 pNewBookmark->SetKeyCode(pOldBookmark->GetKeyCode());
                 pNewBookmark->SetShortName(pOldBookmark->GetShortName());
             }
+            ::sw::mark::IFieldmark* const pNewFieldmark =
+                dynamic_cast< ::sw::mark::IFieldmark* const >(pNewMark);
+            if(pNewFieldmark)
+            {
+                const ::sw::mark::IFieldmark* const pOldFieldmark = dynamic_cast< const ::sw::mark::IFieldmark* >(pMark);
+                pNewFieldmark->SetFieldname(pOldFieldmark->GetFieldname());
+                pNewFieldmark->SetFieldHelptext(pOldFieldmark->GetFieldHelptext());
+            }
+
             ::sfx2::Metadatable const*const pMetadatable(
                     dynamic_cast< ::sfx2::Metadatable const* >(pMark));
             ::sfx2::Metadatable      *const pNewMetadatable(
-- 
1.7.5.4

_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to