[ooo-build-commit] .: 3 commits - patches/dev300
Cédric Bosdonnat
cbosdo at kemper.freedesktop.org
Thu May 27 07:28:32 PDT 2010
patches/dev300/apply | 13
patches/dev300/field-patch-lock.diff | 6
patches/dev300/field-patch-uno-fix.diff | 65
patches/dev300/field-patch.diff | 2722 --------------------------
patches/dev300/fields-enable.diff | 14
patches/dev300/writer-doc-comparison.diff | 145 -
patches/dev300/writer-navigation-buttons.diff | 110 -
7 files changed, 132 insertions(+), 2943 deletions(-)
New commits:
commit 564e8b39dd4ed17d0ef8ac0fb284684c3f504c04
Author: Cédric Bosdonnat <cedricbosdo at openoffice.org>
Date: Thu May 27 16:26:15 2010 +0200
Updated the writer-doc-comparison patches to DEV300
* patches/dev300/apply:
* patches/dev300/writer-doc-comparison.diff:
diff --git a/patches/dev300/apply b/patches/dev300/apply
index a0e71bb..53fa82f 100644
--- a/patches/dev300/apply
+++ b/patches/dev300/apply
@@ -3222,9 +3222,9 @@ SectionOwner => jholesov
# http://gsoc-tzvetelina.blogspot.com/
# Improved document comparison
-# FIXME dev300-m77 writer-doc-comparison.diff, tzvetelina
+writer-doc-comparison.diff, tzvetelina
# Help files for the document comparison
-# FIXME dev300-m77 writer-doc-comparison-help.diff, tzvetelina
+writer-doc-comparison-help.diff, tzvetelina
[ ExtensionFixes ]
diff --git a/patches/dev300/writer-doc-comparison.diff b/patches/dev300/writer-doc-comparison.diff
index 2d489f9..37c74e3 100644
--- a/patches/dev300/writer-doc-comparison.diff
+++ b/patches/dev300/writer-doc-comparison.diff
@@ -1,76 +1,3 @@
-From 981650b67f0a2f3f5ffd2a6a1d0fcf0a59f6ec9e Mon Sep 17 00:00:00 2001
-From: Jan Holesovsky <kendy at suse.cz>
-Date: Fri, 14 May 2010 17:06:43 +0200
-Subject: [PATCH 640/768] writer-doc-comparison.diff
-
----
- cui/source/inc/cuires.hrc | 1 +
- cui/source/options/treeopt.cxx | 1 +
- cui/source/options/treeopt.src | 1 +
- editeng/inc/editeng/rsiditem.hxx | 57 ++
- editeng/inc/editeng/svxenum.hxx | 6 +
- editeng/source/items/textitem.cxx | 37 +-
- .../schema/org/openoffice/Office/Writer.xcs | 30 +
- svx/prj/d.lst | 1 +
- sw/inc/cmdid.h | 1 -
- sw/inc/doc.hxx | 10 +
- sw/inc/globals.hrc | 1 +
- sw/inc/helpid.h | 1 +
- sw/inc/hintids.hxx | 139 ++--
- sw/inc/modcfg.hxx | 41 +
- sw/inc/ndtxt.hxx | 7 +
- sw/inc/swmodule.hxx | 10 +
- sw/inc/undobj.hxx | 1 +
- sw/inc/unoprnms.hxx | 4 +-
- sw/source/core/bastyp/init.cxx | 9 +-
- sw/source/core/doc/doc.cxx | 74 ++
- sw/source/core/doc/doccomp.cxx | 952 ++++++++++++++++++--
- sw/source/core/doc/docnew.cxx | 9 +
- sw/source/core/edit/editsh.cxx | 7 +
- sw/source/core/frmedt/fecopy.cxx | 17 +
- sw/source/core/text/atrstck.cxx | 4 +-
- sw/source/core/txtnode/ndtxt.cxx | 41 +-
- sw/source/core/undo/unspnd.cxx | 4 +
- sw/source/core/unocore/unomap.cxx | 2 +
- sw/source/core/unocore/unoprnms.cxx | 2 +
- sw/source/filter/ascii/parasc.cxx | 3 +
- sw/source/filter/html/css1atr.cxx | 3 +-
- sw/source/filter/html/htmlatr.cxx | 2 +-
- sw/source/filter/rtf/rtfatr.cxx | 3 +-
- sw/source/ui/app/appopt.cxx | 1 +
- sw/source/ui/app/docsh.cxx | 3 +
- sw/source/ui/app/swmodul1.cxx | 40 +
- sw/source/ui/config/modcfg.cxx | 89 ++
- sw/source/ui/config/optdlg.hrc | 8 +
- sw/source/ui/config/optdlg.src | 74 ++
- sw/source/ui/config/optpage.cxx | 137 +++-
- sw/source/ui/dialog/swdlgfact.cxx | 5 +
- sw/source/ui/inc/optpage.hxx | 28 +
- sw/source/ui/uno/SwXDocumentSettings.cxx | 28 +
- xmloff/inc/xmloff/xmltoken.hxx | 2 +
- xmloff/inc/xmloff/xmltypes.hxx | 1 +
- xmloff/inc/xmloff/xmluconv.hxx | 8 +
- xmloff/source/core/xmltoken.cxx | 2 +
- xmloff/source/core/xmluconv.cxx | 28 +
- xmloff/source/style/prhdlfac.cxx | 3 +
- xmloff/source/style/xmlbahdl.cxx | 42 +
- xmloff/source/style/xmlbahdl.hxx | 12 +
- xmloff/source/text/txtprmap.cxx | 8 +
- 52 files changed, 1862 insertions(+), 138 deletions(-)
- create mode 100644 editeng/inc/editeng/rsiditem.hxx
-
-diff --git cui/source/inc/cuires.hrc cui/source/inc/cuires.hrc
-index c0f8f05..a7f5b83 100644
---- cui/source/inc/cuires.hrc
-+++ cui/source/inc/cuires.hrc
-@@ -133,6 +133,7 @@
- #define RID_SVXPAGE_COLOR (RID_SVX_START + 60)
- #define RID_SVXPAGE_SSO (RID_SVX_START + 251)
- #define OFA_TP_LANGUAGES_FOR_SET_DOCUMENT_LANGUAGE ( RID_OFA_START + 256 )
-+#define RID_SW_TP_COMPARISON_OPT (RID_OFA_START + 257)
- #define RID_OFADLG_OPTIONS_TREE_PAGES (RID_OFA_START + 116)
- #define RID_OFADLG_OPTIONS_TREE (RID_OFA_START + 115)
- #define RID_IMGLIST_TREEOPT (RID_OFA_START + 174)
diff --git cui/source/options/treeopt.cxx cui/source/options/treeopt.cxx
index 47936b4..a44c8c3 100644
--- cui/source/options/treeopt.cxx
@@ -97,7 +24,7 @@ index 5b22727..3cfd692 100644
< "Mail Merge E-mail" ; RID_SW_TP_MAILCONFIG ; >;
diff --git editeng/inc/editeng/rsiditem.hxx editeng/inc/editeng/rsiditem.hxx
new file mode 100644
-index 0000000..470f3f7
+index 0000000..2fd759e
--- /dev/null
+++ editeng/inc/editeng/rsiditem.hxx
@@ -0,0 +1,57 @@
@@ -136,7 +63,7 @@ index 0000000..470f3f7
+
+#include <svl/intitem.hxx>
+#include <svx/svddef.hxx>
-+#include "svx/svxdllapi.h"
++#include "editeng/editengdllapi.h"
+
+//----------------------
+// SvxRsidItem
@@ -274,23 +201,35 @@ index 9abada4..9379a1b 100644
<group oor:name="Insert">
<info>
<desc>Specifies the settings for inserting various object types.</desc>
-diff --git svx/prj/d.lst svx/prj/d.lst
-index 07b500b..761ec91 100644
---- svx/prj/d.lst
-+++ svx/prj/d.lst
-@@ -417,6 +417,7 @@ mkdir: %_DEST%\inc%_EXT%\svx
- ..\inc\svx\view3d.hxx %_DEST%\inc%_EXT%\svx\view3d.hxx
- ..\inc\svx\viewpt3d.hxx %_DEST%\inc%_EXT%\svx\viewpt3d.hxx
- ..\inc\svx\wghtitem.hxx %_DEST%\inc%_EXT%\svx\wghtitem.hxx
-+..\inc\svx\rsiditem.hxx %_DEST%\inc%_EXT%\svx\rsiditem.hxx
- ..\inc\svx\widwitem.hxx %_DEST%\inc%_EXT%\svx\widwitem.hxx
- ..\inc\svx\wrlmitem.hxx %_DEST%\inc%_EXT%\svx\wrlmitem.hxx
- ..\inc\svx\xbitmap.hxx %_DEST%\inc%_EXT%\svx\xbitmap.hxx
+diff --git svx/inc/svx/dialogs.hrc svx/inc/svx/dialogs.hrc
+index fa1e703..65b0aa1 100644
+--- svx/inc/svx/dialogs.hrc
++++ svx/inc/svx/dialogs.hrc
+@@ -132,6 +132,7 @@
+ #define RID_SW_TP_OPTTABLE_PAGE (RID_OFA_START + 210)
+ #define RID_SW_TP_REDLINE_OPT (RID_OFA_START + 212)
+ #define RID_SW_TP_OPTCOMPATIBILITY_PAGE (RID_OFA_START + 255)
++#define RID_SW_TP_COMPARISON_OPT (RID_OFA_START + 257)
+ #define RID_SW_TP_HTML_CONTENT_OPT (RID_OFA_START + 240)
+ #define RID_SW_TP_HTML_OPTPRINT_PAGE (RID_OFA_START + 242)
+ #define RID_SW_TP_HTML_OPTTABLE_PAGE (RID_OFA_START + 243)
+diff --git svx/source/src/app.hrc svx/source/src/app.hrc
+index 1cdc416..5002627 100644
+--- svx/source/src/app.hrc
++++ svx/source/src/app.hrc
+@@ -201,6 +201,7 @@
+ #define RID_OFA_TP_INTERNATIONAL_IMPR (RID_OFA_START + 254) // 4 impress
+ #define RID_SW_TP_OPTCOMPATIBILITY_PAGE (RID_OFA_START + 255)
+ #define RID_SW_TP_OPTCAPTION_PAGE (RID_OFA_START + 256)
++#define RID_SW_TP_COMPARISON_OPT (RID_OFA_START + 257)
+
+ // Strings ------------------------------------------
+
diff --git sw/inc/cmdid.h sw/inc/cmdid.h
-index 6dbc773..83549ce 100644
+index e33894d..1d8cd15 100644
--- sw/inc/cmdid.h
+++ sw/inc/cmdid.h
-@@ -1192,7 +1192,6 @@ Achtung: Ab sofort sind in diesem File keine C++-Kommentare (//) mehr
+@@ -1195,7 +1195,6 @@ Achtung: Ab sofort sind in diesem File keine C++-Kommentare (//) mehr
// --> OD 2004-10-28 #i36248#
#define FN_SHAPE_STARTPOSITION_IN_HORI_L2R (FN_PARAM2+25)
#define FN_SHAPE_ENDPOSITION_IN_HORI_L2R (FN_PARAM2+26)
@@ -346,7 +285,7 @@ index 39b7b7f..476f7de 100644
#if STR_DOC_STAT > RC_GLOBALS_END
diff --git sw/inc/helpid.h sw/inc/helpid.h
-index 0ff576a..9f5c6ad 100644
+index 1fb0828..f0658f1 100644
--- sw/inc/helpid.h
+++ sw/inc/helpid.h
@@ -310,6 +310,7 @@
@@ -555,7 +494,7 @@ index 584b472..4a3b504 100644
};
diff --git sw/inc/modcfg.hxx sw/inc/modcfg.hxx
-index 0dd9594..bccfbea 100644
+index 0dd9594..54c5dd6 100644
--- sw/inc/modcfg.hxx
+++ sw/inc/modcfg.hxx
@@ -38,6 +38,7 @@
@@ -566,7 +505,7 @@ index 0dd9594..bccfbea 100644
class SwModuleOptions;
//-----------------------------------------------------------------------------
-@@ -167,7 +168,27 @@ class SwMiscConfig : public utl::ConfigItem
+@@ -167,7 +168,28 @@ class SwMiscConfig : public utl::ConfigItem
void Load();
void SetModified(){ConfigItem::SetModified();}
};
@@ -588,13 +527,14 @@ index 0dd9594..bccfbea 100644
+ ~SwCompareConfig();
+
+ virtual void Commit();
++ virtual void Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& ){ };
+ void Load();
+ void SetModified() {ConfigItem::SetModified(); }
+};
/* ---------------------------------------------------------------------------
---------------------------------------------------------------------------*/
-@@ -182,6 +203,8 @@ class SW_DLLPUBLIC SwModuleOptions
+@@ -182,6 +204,8 @@ class SW_DLLPUBLIC SwModuleOptions
SwMiscConfig aMiscConfig;
@@ -603,7 +543,7 @@ index 0dd9594..bccfbea 100644
//fiscus: don't show tips of text fields - it's not part of the configuration!
BOOL bHideFieldTips : 1;
-@@ -338,6 +361,24 @@ public:
+@@ -338,6 +362,24 @@ public:
BOOL IsHideFieldTips() const {return bHideFieldTips;}
void SetHideFieldTips(BOOL bSet) {bHideFieldTips = bSet;}
@@ -647,7 +587,7 @@ index afccd21..7553206 100644
};
diff --git sw/inc/swmodule.hxx sw/inc/swmodule.hxx
-index cd661f3..6b2f5b3 100644
+index cd661f3..221e37d 100644
--- sw/inc/swmodule.hxx
+++ sw/inc/swmodule.hxx
@@ -40,6 +40,7 @@
@@ -702,14 +642,14 @@ index 85e1c97..518ec58 100644
diff --git sw/source/core/bastyp/init.cxx sw/source/core/bastyp/init.cxx
-index b5a2895..8999c06 100644
+index b5a2895..a887264 100644
--- sw/source/core/bastyp/init.cxx
+++ sw/source/core/bastyp/init.cxx
@@ -135,6 +135,7 @@
#include <fmtfollowtextflow.hxx>
// OD 2004-05-05 #i28701#
#include <fmtwrapinfluenceonobjpos.hxx>
-+#include <svx/rsiditem.hxx>
++#include <editeng/rsiditem.hxx>
#include <fmtmeta.hxx>
@@ -2256,7 +2196,7 @@ index b80b567..13a726a 100644
SetError( nErr ? nErr : nVBWarning, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
diff --git sw/source/ui/app/swmodul1.cxx sw/source/ui/app/swmodul1.cxx
-index ee34a77..7e774b6 100644
+index 1927c66..d8156f5 100644
--- sw/source/ui/app/swmodul1.cxx
+++ sw/source/ui/app/swmodul1.cxx
@@ -738,3 +738,43 @@ void SwModule::ApplyDefaultPageMode(sal_Bool bIsSquaredPageMode)
@@ -2499,7 +2439,7 @@ index a2573ed..3000962 100755
+ };
+};
diff --git sw/source/ui/config/optpage.cxx sw/source/ui/config/optpage.cxx
-index 2e77b27..9ff09cc 100644
+index 2e77b27..7ed2551 100644
--- sw/source/ui/config/optpage.cxx
+++ sw/source/ui/config/optpage.cxx
@@ -100,7 +100,7 @@
@@ -2790,7 +2730,7 @@ index 70690bc..fc7a0c9 100644
{
sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::PROTECT_FORM);
diff --git xmloff/inc/xmloff/xmltoken.hxx xmloff/inc/xmloff/xmltoken.hxx
-index a3e3562..d39b3de 100644
+index c8dab78..0788be0 100644
--- xmloff/inc/xmloff/xmltoken.hxx
+++ xmloff/inc/xmloff/xmltoken.hxx
@@ -1486,6 +1486,8 @@ namespace xmloff { namespace token {
@@ -2834,7 +2774,7 @@ index ca22ef8..7687722 100644
static void convertNumber( ::rtl::OUStringBuffer& rBuffer,
sal_Int32 nNumber );
diff --git xmloff/source/core/xmltoken.cxx xmloff/source/core/xmltoken.cxx
-index a677f9b..8fd1a43 100644
+index 56f3f09..d23e75a 100644
--- xmloff/source/core/xmltoken.cxx
+++ xmloff/source/core/xmltoken.cxx
@@ -1494,6 +1494,8 @@ namespace xmloff { namespace token {
@@ -3001,6 +2941,3 @@ index 87e8bf1..422f82c 100644
// RES_CHRATR_WORDLINEMODE
MT_E( "CharWordMode", STYLE, TEXT_UNDERLINE_MODE, XML_TYPE_TEXT_LINE_MODE|MID_FLAG_MERGE_PROPERTY, 0 ),
MT_E( "CharWordMode", STYLE, TEXT_OVERLINE_MODE, XML_TYPE_TEXT_LINE_MODE|MID_FLAG_MERGE_PROPERTY, 0 ),
---
-1.7.0.1
-
commit e7276b8129d086524ef741837b6c579e90bb145c
Author: Cédric Bosdonnat <cedricbosdo at openoffice.org>
Date: Thu May 27 13:37:59 2010 +0200
Updated maja's patch to DEV300
* patches/dev300/apply:
* patches/dev300/writer-navigation-buttons.diff:
diff --git a/patches/dev300/apply b/patches/dev300/apply
index 5e9f004..a0e71bb 100644
--- a/patches/dev300/apply
+++ b/patches/dev300/apply
@@ -3214,7 +3214,7 @@ stream-read-csv-always-single-line.diff, n#523517, kohei
impress-autolayout.diff, cocofan
[ WriterNavigation ]
-# FIXME dev300-m77 writer-navigation-buttons.diff, ovcica
+writer-navigation-buttons.diff, ovcica
[ WriterDocComparison ]
SectionOwner => jholesov
diff --git a/patches/dev300/writer-navigation-buttons.diff b/patches/dev300/writer-navigation-buttons.diff
index 2a71a93..63273bb 100644
--- a/patches/dev300/writer-navigation-buttons.diff
+++ b/patches/dev300/writer-navigation-buttons.diff
@@ -1,8 +1,8 @@
diff --git officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu
-index 0ba86ef..3646b88 100644
+index fa0611e..35916b7 100644
--- officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu
+++ officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu
-@@ -2249,6 +2249,22 @@
+@@ -2241,6 +2241,22 @@
<value xml:lang="en-US">Continue previous numbering</value>
</prop>
</node>
@@ -26,10 +26,10 @@ index 0ba86ef..3646b88 100644
</node>
</oor:component-data>
diff --git officecfg/registry/data/org/openoffice/Office/UI/WriterGlobalWindowState.xcu officecfg/registry/data/org/openoffice/Office/UI/WriterGlobalWindowState.xcu
-index aeb443e..dc62716 100644
+index 3988e6d..dcda7ab 100644
--- officecfg/registry/data/org/openoffice/Office/UI/WriterGlobalWindowState.xcu
+++ officecfg/registry/data/org/openoffice/Office/UI/WriterGlobalWindowState.xcu
-@@ -446,6 +446,29 @@
+@@ -443,6 +443,29 @@
<value>true</value>
</prop>
</node>
@@ -60,10 +60,10 @@ index aeb443e..dc62716 100644
<prop oor:name="DockingArea" oor:type="xs:int">
<value>0</value>
diff --git officecfg/registry/data/org/openoffice/Office/UI/WriterWindowState.xcu officecfg/registry/data/org/openoffice/Office/UI/WriterWindowState.xcu
-index 12cc7a9..3400db3 100644
+index ec70817..1da701c 100644
--- officecfg/registry/data/org/openoffice/Office/UI/WriterWindowState.xcu
+++ officecfg/registry/data/org/openoffice/Office/UI/WriterWindowState.xcu
-@@ -452,6 +452,29 @@
+@@ -449,6 +449,29 @@
<value>true</value>
</prop>
</node>
@@ -106,10 +106,10 @@ index 43202b8..1118b3a 100644
uiconfig/modules/swriter/toolbar/oleobjectbar.xml
uiconfig/modules/swriter/toolbar/optimizetablebar.xml
diff --git sfx2/source/appl/workwin.cxx sfx2/source/appl/workwin.cxx
-index 5e2bb23..3ea1f7d 100644
+index 89b52ac..ee739da 100644
--- sfx2/source/appl/workwin.cxx
+++ sfx2/source/appl/workwin.cxx
-@@ -143,6 +143,7 @@ static const ResIdToResName pToolBarResToName[] =
+@@ -140,6 +140,7 @@ static const ResIdToResName pToolBarResToName[] =
{ 23031, "mediaobjectbar" }, //draw/impress
{ 25060, "mediaobjectbar" }, //calc
{ 23311, "mediaobjectbar" }, //writer
@@ -118,10 +118,10 @@ index 5e2bb23..3ea1f7d 100644
};
diff --git sw/inc/cmdid.h sw/inc/cmdid.h
-index 900a110..26ce6ec 100644
+index cf5bcd5..e33894d 100644
--- sw/inc/cmdid.h
+++ sw/inc/cmdid.h
-@@ -912,6 +912,9 @@ Achtung: Ab sofort sind in diesem File keine C++-Kommentare (//) mehr
+@@ -908,6 +908,9 @@ Achtung: Ab sofort sind in diesem File keine C++-Kommentare (//) mehr
#define FN_UNO_TABLE_NAME (FN_EXTRA2 + 111)
#define FN_UNO_META (FN_EXTRA2 + 112)
@@ -132,19 +132,19 @@ index 900a110..26ce6ec 100644
Bereich: Hilfe
--------------------------------------------------------------------*/
diff --git sw/inc/helpid.h sw/inc/helpid.h
-index 3172447..1227e80 100644
+index 0ff576a..1fb0828 100644
--- sw/inc/helpid.h
+++ sw/inc/helpid.h
-@@ -984,3 +984,4 @@
+@@ -981,3 +981,4 @@
#define HID_MM_HEADER_12 (HID_BASE + 2279)
#define HID_MM_HEADER_13 (HID_BASE + 2280)
+#define HID_NAVIGATION_TOOLBOX (HID_BASE + 2281)
diff --git sw/inc/shellid.hxx sw/inc/shellid.hxx
-index df82192..a3676a5 100644
+index 65af848..e3ef3e6 100644
--- sw/inc/shellid.hxx
+++ sw/inc/shellid.hxx
-@@ -73,4 +73,5 @@
+@@ -70,4 +70,5 @@
#define SW_MEDIASHELL (SFX_INTERFACE_SW_START + 31)
#define SW_ANNOTATIONSHELL (SFX_INTERFACE_SW_START + 32)
@@ -152,7 +152,7 @@ index df82192..a3676a5 100644
#endif // _UIPARAM_HXX
diff --git sw/sdi/_navsh.sdi sw/sdi/_navsh.sdi
new file mode 100644
-index 0000000..deb4fb9
+index 0000000..d8820cf
--- /dev/null
+++ sw/sdi/_navsh.sdi
@@ -0,0 +1,49 @@
@@ -206,10 +206,10 @@ index 0000000..deb4fb9
+}
+
diff --git sw/sdi/makefile.mk sw/sdi/makefile.mk
-index 25b75fe..0fc59ed 100644
+index e539c7a..0cf3813 100644
--- sw/sdi/makefile.mk
+++ sw/sdi/makefile.mk
-@@ -95,6 +95,8 @@ SVSDI1DEPEND= \
+@@ -96,6 +96,8 @@ SVSDI1DEPEND= \
mediash.sdi\
_annotsh.sdi\
annotsh.sdi\
@@ -217,10 +217,10 @@ index 25b75fe..0fc59ed 100644
+ navsh.sdi \
swslots.hrc \
$(INC)$/globals.hrc \
- $(INC)$/cmdid.h \
+ $(INC)$/cmdid.h
diff --git sw/sdi/navsh.sdi sw/sdi/navsh.sdi
new file mode 100644
-index 0000000..791ec99
+index 0000000..5919775
--- /dev/null
+++ sw/sdi/navsh.sdi
@@ -0,0 +1,34 @@
@@ -259,10 +259,10 @@ index 0000000..791ec99
+ import _Navigation[Automation];
+}
diff --git sw/sdi/swriter.sdi sw/sdi/swriter.sdi
-index 6f2914d..d1a1ae0 100644
+index aede246..a5e3afe 100644
--- sw/sdi/swriter.sdi
+++ sw/sdi/swriter.sdi
-@@ -10391,3 +10391,54 @@ SfxVoidItem CopyHyperlinkLocation FN_COPY_HYPERLINK_LOCATION
+@@ -10316,3 +10316,54 @@ SfxVoidItem CopyHyperlinkLocation FN_COPY_HYPERLINK_LOCATION
ToolBoxConfig = TRUE,
GroupId = GID_EDIT;
]
@@ -318,7 +318,7 @@ index 6f2914d..d1a1ae0 100644
+ GroupId = GID_NAVIGATOR;
+]
diff --git sw/sdi/swslots.sdi sw/sdi/swslots.sdi
-index 789301f..9997bd1 100644
+index eb43955..2d72843 100644
--- sw/sdi/swslots.sdi
+++ sw/sdi/swslots.sdi
@@ -120,6 +120,8 @@ ModulePrefix( "Sw" )
@@ -331,10 +331,10 @@ index 789301f..9997bd1 100644
diff --git sw/sdi/swslots.src sw/sdi/swslots.src
-index f794901..1546a32 100644
+index b67716c..bdd22a5 100644
--- sw/sdi/swslots.src
+++ sw/sdi/swslots.src
-@@ -1500,4 +1500,12 @@ SfxSlotInfo FN_VIEW_NOTES
+@@ -1485,4 +1485,12 @@ SfxSlotInfo FN_VIEW_NOTES
{
Slotname [ en-US ] = "Notes";
};
@@ -348,10 +348,10 @@ index f794901..1546a32 100644
+}
diff --git sw/source/ui/app/swmodule.cxx sw/source/ui/app/swmodule.cxx
-index d4607da..ded9c5b 100644
+index f2de617..0beccae 100644
--- sw/source/ui/app/swmodule.cxx
+++ sw/source/ui/app/swmodule.cxx
-@@ -163,6 +163,7 @@
+@@ -160,6 +160,7 @@
#include <avmedia/mediatoolbox.hxx>
#include <annotsh.hxx>
@@ -359,7 +359,7 @@ index d4607da..ded9c5b 100644
#include <app.hrc>
#include <svx/xmlsecctrl.hxx>
-@@ -351,6 +352,7 @@ void SwDLL::RegisterInterfaces()
+@@ -348,6 +349,7 @@ void SwDLL::RegisterInterfaces()
SwBezierShell::RegisterInterface(pMod);
SwGrfShell::RegisterInterface(pMod);
SwOleShell::RegisterInterface(pMod);
@@ -369,7 +369,7 @@ index d4607da..ded9c5b 100644
SwWebGrfShell::RegisterInterface(pMod);
diff --git sw/source/ui/inc/navmgr.hxx sw/source/ui/inc/navmgr.hxx
new file mode 100644
-index 0000000..68b43f2
+index 0000000..e510b8e
--- /dev/null
+++ sw/source/ui/inc/navmgr.hxx
@@ -0,0 +1,62 @@
@@ -493,10 +493,10 @@ index 0000000..5f0c3c6
+
+#endif
diff --git sw/source/ui/inc/shells.hrc sw/source/ui/inc/shells.hrc
-index feb200c..92a11bb 100644
+index 243c4fc..847d322 100644
--- sw/source/ui/inc/shells.hrc
+++ sw/source/ui/inc/shells.hrc
-@@ -105,7 +105,10 @@
+@@ -102,7 +102,10 @@
#define RID_MEDIA_TOOLBOX (RC_SHELLS_BEGIN + 61)
@@ -509,10 +509,10 @@ index feb200c..92a11bb 100644
#if SHELLS_ACT_END > RC_SHELLS_END
#error Resource-Id Ueberlauf in #file, #line
diff --git sw/source/ui/inc/view.hxx sw/source/ui/inc/view.hxx
-index 75e5b6e..7e88191 100644
+index 9553d88..a6cc6de 100644
--- sw/source/ui/inc/view.hxx
+++ sw/source/ui/inc/view.hxx
-@@ -131,7 +131,8 @@ enum ShellModes
+@@ -129,7 +129,8 @@ enum ShellModes
SHELL_MODE_MEDIA,
SHELL_MODE_EXTRUDED_CUSTOMSHAPE,
SHELL_MODE_FONTWORK,
@@ -523,10 +523,10 @@ index 75e5b6e..7e88191 100644
/*--------------------------------------------------------------------
diff --git sw/source/ui/inc/wrtsh.hxx sw/source/ui/inc/wrtsh.hxx
-index 956d06f..3f22de4 100644
+index ff1143b..8e8190f 100644
--- sw/source/ui/inc/wrtsh.hxx
+++ sw/source/ui/inc/wrtsh.hxx
-@@ -37,6 +37,7 @@
+@@ -34,6 +34,7 @@
#include <swurl.hxx>
#include <IMark.hxx>
@@ -534,7 +534,7 @@ index 956d06f..3f22de4 100644
class Window;
class OutputDevice;
class SbxArray;
-@@ -87,6 +88,7 @@ namespace nsSelectionType
+@@ -84,6 +85,7 @@ namespace nsSelectionType
const SelectionType SEL_EXTRUDED_CUSTOMSHAPE = 0x008000; // extruded custom shape
const SelectionType SEL_FONTWORK = 0x010000; // fontwork
const SelectionType SEL_POSTIT = 0x020000; //annotation
@@ -542,7 +542,7 @@ index 956d06f..3f22de4 100644
}
-@@ -477,6 +479,7 @@ typedef BOOL (SwWrtShell:: *FNSimpleMove)();
+@@ -474,6 +476,7 @@ typedef BOOL (SwWrtShell:: *FNSimpleMove)();
String GetSelDescr() const;
@@ -550,7 +550,7 @@ index 956d06f..3f22de4 100644
private:
SW_DLLPRIVATE void OpenMark();
-@@ -533,6 +536,7 @@ private:
+@@ -530,6 +533,7 @@ private:
} *pCrsrStack;
SwView &rView;
@@ -559,10 +559,10 @@ index 956d06f..3f22de4 100644
Point aDest;
BOOL bDestOnStack;
diff --git sw/source/ui/shells/makefile.mk sw/source/ui/shells/makefile.mk
-index 2e4a96c..44478cb 100644
+index e9a03a5..0e0b815 100644
--- sw/source/ui/shells/makefile.mk
+++ sw/source/ui/shells/makefile.mk
-@@ -62,6 +62,7 @@ SLOFILES = \
+@@ -58,6 +58,7 @@ SLOFILES = \
$(SLO)$/grfshex.obj \
$(SLO)$/mediash.obj \
$(SLO)$/listsh.obj \
@@ -572,7 +572,7 @@ index 2e4a96c..44478cb 100644
$(SLO)$/tabsh.obj \
diff --git sw/source/ui/shells/navsh.cxx sw/source/ui/shells/navsh.cxx
new file mode 100644
-index 0000000..663c7eb
+index 0000000..82fec06
--- /dev/null
+++ sw/source/ui/shells/navsh.cxx
@@ -0,0 +1,150 @@
@@ -727,10 +727,10 @@ index 0000000..663c7eb
+ }
+}
diff --git sw/source/ui/shells/shells.src sw/source/ui/shells/shells.src
-index 9243411..9f7fc0b 100644
+index 42b3b00..87c9b94 100644
--- sw/source/ui/shells/shells.src
+++ sw/source/ui/shells/shells.src
-@@ -1033,6 +1033,43 @@ ToolBox RID_NUM_TOOLBOX
+@@ -1030,6 +1030,43 @@ ToolBox RID_NUM_TOOLBOX
};
Scroll = TRUE ;
};
@@ -775,10 +775,10 @@ index 9243411..9f7fc0b 100644
{
Text [ en-US ] = "Text" ;
diff --git sw/source/ui/uiview/view.cxx sw/source/ui/uiview/view.cxx
-index afb41b7..deb2cc7 100644
+index e5884cb..1cb760a 100644
--- sw/source/ui/uiview/view.cxx
+++ sw/source/ui/uiview/view.cxx
-@@ -77,6 +77,7 @@
+@@ -73,6 +73,7 @@
#include <drformsh.hxx>
#include <drwtxtsh.hxx>
#include <beziersh.hxx>
@@ -786,7 +786,7 @@ index afb41b7..deb2cc7 100644
#include <globdoc.hxx>
#include <scroll.hxx>
#include <globdoc.hxx>
-@@ -346,6 +347,13 @@ void SwView::SelectShell()
+@@ -335,6 +336,13 @@ void SwView::SelectShell()
if ( !( nSelectionType & nsSelectionType::SEL_FOC_FRM_CTRL ) )
rDispatcher.Push( *pFormShell );
@@ -801,10 +801,10 @@ index afb41b7..deb2cc7 100644
{
eShellMode = SHELL_MODE_OBJECT;
diff --git sw/source/ui/utlui/content.cxx sw/source/ui/utlui/content.cxx
-index cee0116..f2f0c73 100644
+index bbb3d98..382f403 100644
--- sw/source/ui/utlui/content.cxx
+++ sw/source/ui/utlui/content.cxx
-@@ -118,6 +118,7 @@
+@@ -115,6 +115,7 @@
#include "globals.hrc"
#include <unomid.h>
@@ -812,7 +812,7 @@ index cee0116..f2f0c73 100644
#define CTYPE_CNT 0
#define CTYPE_CTT 1
-@@ -3188,6 +3189,12 @@ void SwContentTree::GotoContent(SwContent* pCnt)
+@@ -3185,6 +3186,12 @@ void SwContentTree::GotoContent(SwContent* pCnt)
sal_Bool bSel = sal_False;
sal_uInt16 nJumpType = pCnt->GetParent()->GetType();
@@ -826,10 +826,10 @@ index cee0116..f2f0c73 100644
{
case CONTENT_TYPE_OUTLINE :
diff --git sw/source/ui/wrtsh/makefile.mk sw/source/ui/wrtsh/makefile.mk
-index b082743..370c790 100644
+index baeb3ac..b7fef6c 100644
--- sw/source/ui/wrtsh/makefile.mk
+++ sw/source/ui/wrtsh/makefile.mk
-@@ -47,6 +47,7 @@ SRC1FILES = \
+@@ -43,6 +43,7 @@ SRC1FILES = \
wrtsh.src
SLOFILES = \
@@ -839,7 +839,7 @@ index b082743..370c790 100644
$(SLO)$/wrtsh1.obj \
diff --git sw/source/ui/wrtsh/navmgr.cxx sw/source/ui/wrtsh/navmgr.cxx
new file mode 100644
-index 0000000..f5f0a93
+index 0000000..56cb5e1
--- /dev/null
+++ sw/source/ui/wrtsh/navmgr.cxx
@@ -0,0 +1,73 @@
@@ -917,7 +917,7 @@ index 0000000..f5f0a93
+ _iCurrent = _entries.end(); _nCurrent = _entries.size() - 1;
+}
diff --git sw/source/ui/wrtsh/wrtsh1.cxx sw/source/ui/wrtsh/wrtsh1.cxx
-index e50d1b6..d63f1fb 100644
+index 5403b8a..701aae9 100644
--- sw/source/ui/wrtsh/wrtsh1.cxx
+++ sw/source/ui/wrtsh/wrtsh1.cxx
@@ -1527,6 +1527,8 @@ SelectionType SwWrtShell::GetSelectionType() const
@@ -940,9 +940,9 @@ index e50d1b6..d63f1fb 100644
/*------------------------------------------------------------------------
Beschreibung: Anwenden der Vorlagen
@@ -1764,6 +1769,7 @@ SwWrtShell::SwWrtShell( SwWrtShell& rSh, Window *_pWin, SwView &rShell )
- if ( IsFormProtected() && ( pBM = GetFieldmarkAfter( ) ) !=NULL ) {
- GotoFieldmark(pBM);
- }
+ if ( IsFormProtected() && ( pBM = GetFieldmarkAfter( ) ) !=NULL ) {
+ GotoFieldmark(pBM);
+ }
+ aNavigationMgr.setShell(this);
}
commit 775568e0a56bd73a91562751e7c19496eb779bac
Author: Cédric Bosdonnat <cedricbosdo at openoffice.org>
Date: Thu May 27 13:14:10 2010 +0200
Updated the field-patch set for DEV300-m77
* patches/dev300/apply:
* patches/dev300/field-patch-lock.diff:
* patches/dev300/field-patch-uno-fix.diff:
Updated patches
* patches/dev300/field-patch.diff:
Remove because it has been upstreamed in cbosdo02
* patches/dev300/fields-enable.diff:
Activates the changes introduced by cbosdo02
diff --git a/patches/dev300/apply b/patches/dev300/apply
index e283ab8..5e9f004 100644
--- a/patches/dev300/apply
+++ b/patches/dev300/apply
@@ -2823,9 +2823,10 @@ sw-section-import-fix.diff, n#364533, freuter
sw-allow-negative-spacing.diff, n#364534, freuter
-# FIXME dev300-m77 field-patch.diff, n#248354, freuter #upstreamed?
-# FIXME dev300-m77 field-patch-uno-fix.diff, cbosdo #upstreamed?
-# FIXME dev300-m77 field-patch-lock.diff, n#601355, cbosdo #upstreamed?
+# Activate the changed upstreamed by cbosdo02 CWS
+fields-enable.diff, cbosdo
+field-patch-uno-fix.diff, cbosdo #upstreamed?
+field-patch-lock.diff, n#601355, cbosdo #upstreamed?
sw-import-html-controls.diff, n#485609, freuter
svx-hacky-htmlselect-control-import.diff, n#523191, noelpwer
diff --git a/patches/dev300/field-patch-lock.diff b/patches/dev300/field-patch-lock.diff
index efb990d..008f77c 100644
--- a/patches/dev300/field-patch-lock.diff
+++ b/patches/dev300/field-patch-lock.diff
@@ -7,10 +7,10 @@ Subject: [PATCH 624/878] field-patch-lock.diff
sw/source/core/crsr/pam.cxx | 36 +++++++++++++++++++++---------------
1 files changed, 21 insertions(+), 15 deletions(-)
-diff --git a/sw/source/core/crsr/pam.cxx b/sw/source/core/crsr/pam.cxx
+diff --git sw/source/core/crsr/pam.cxx sw/source/core/crsr/pam.cxx
index 5212c12..1e2dbe9 100644
---- a/sw/source/core/crsr/pam.cxx
-+++ b/sw/source/core/crsr/pam.cxx
+--- sw/source/core/crsr/pam.cxx
++++ sw/source/core/crsr/pam.cxx
@@ -825,21 +825,27 @@ BOOL SwPaM::HasReadonlySel( bool bFormView ) const
}
//FIXME FieldBk
diff --git a/patches/dev300/field-patch-uno-fix.diff b/patches/dev300/field-patch-uno-fix.diff
index 94bad18..da8bc2e 100644
--- a/patches/dev300/field-patch-uno-fix.diff
+++ b/patches/dev300/field-patch-uno-fix.diff
@@ -1,17 +1,8 @@
-From 3a502de50fe5cb00d7b8ae9643745564265804cb Mon Sep 17 00:00:00 2001
-From: Jan Holesovsky <kendy at suse.cz>
-Date: Fri, 14 May 2010 17:04:28 +0200
-Subject: [PATCH 623/878] field-patch-uno-fix.diff
-
----
- sw/source/core/unocore/unocoll.cxx | 40 ++++++++++++++++++-----------------
- 1 files changed, 21 insertions(+), 19 deletions(-)
-
-diff --git a/sw/source/core/unocore/unocoll.cxx b/sw/source/core/unocore/unocoll.cxx
-index 25c8297..512b302 100644
---- a/sw/source/core/unocore/unocoll.cxx
-+++ b/sw/source/core/unocore/unocoll.cxx
-@@ -1720,7 +1720,7 @@ sal_Int32 SwXBookmarks::getCount(void)
+diff --git sw/source/core/unocore/unocoll.cxx sw/source/core/unocore/unocoll.cxx
+index 9e6fba9..79c8e09 100644
+--- sw/source/core/unocore/unocoll.cxx
++++ sw/source/core/unocore/unocoll.cxx
+@@ -1503,7 +1503,7 @@ sal_Int32 SwXBookmarks::getCount(void)
vos::OGuard aGuard(Application::GetSolarMutex());
if(!IsValid())
throw uno::RuntimeException();
@@ -20,7 +11,7 @@ index 25c8297..512b302 100644
}
uno::Any SwXBookmarks::getByIndex(sal_Int32 nIndex)
-@@ -1730,11 +1730,11 @@ uno::Any SwXBookmarks::getByIndex(sal_Int32 nIndex)
+@@ -1513,11 +1513,11 @@ uno::Any SwXBookmarks::getByIndex(sal_Int32 nIndex)
if(!IsValid())
throw uno::RuntimeException();
IDocumentMarkAccess* const pMarkAccess = GetDoc()->getIDocumentMarkAccess();
@@ -31,10 +22,10 @@ index 25c8297..512b302 100644
uno::Any aRet;
- ::sw::mark::IMark* pBkmk = pMarkAccess->getBookmarksBegin()[nIndex].get();
+ ::sw::mark::IMark* pBkmk = pMarkAccess->getMarksBegin()[nIndex].get();
- uno::Reference< XTextContent > xRef = GetObject(*pBkmk, GetDoc());
- aRet.setValue(&xRef, ::getCppuType((uno::Reference<XTextContent>*)0));
- return aRet;
-@@ -1748,8 +1748,8 @@ uno::Any SwXBookmarks::getByName(const rtl::OUString& rName)
+ const uno::Reference< text::XTextContent > xRef =
+ SwXBookmark::CreateXBookmark(*GetDoc(), *pBkmk);
+ aRet <<= xRef;
+@@ -1532,8 +1532,8 @@ uno::Any SwXBookmarks::getByName(const rtl::OUString& rName)
throw uno::RuntimeException();
IDocumentMarkAccess* const pMarkAccess = GetDoc()->getIDocumentMarkAccess();
@@ -45,7 +36,7 @@ index 25c8297..512b302 100644
throw NoSuchElementException();
uno::Any aRet;
-@@ -1766,10 +1766,10 @@ uno::Sequence< OUString > SwXBookmarks::getElementNames(void)
+@@ -1551,10 +1551,10 @@ uno::Sequence< OUString > SwXBookmarks::getElementNames(void)
throw uno::RuntimeException();
IDocumentMarkAccess* const pMarkAccess = GetDoc()->getIDocumentMarkAccess();
@@ -59,7 +50,7 @@ index 25c8297..512b302 100644
aSeq[nCnt++] = (*ppMark++)->GetName();
return aSeq;
}
-@@ -1782,7 +1782,7 @@ sal_Bool SwXBookmarks::hasByName(const OUString& rName)
+@@ -1567,7 +1567,7 @@ sal_Bool SwXBookmarks::hasByName(const OUString& rName)
throw uno::RuntimeException();
IDocumentMarkAccess* const pMarkAccess = GetDoc()->getIDocumentMarkAccess();
@@ -68,35 +59,3 @@ index 25c8297..512b302 100644
}
uno::Type SAL_CALL SwXBookmarks::getElementType()
-@@ -1807,16 +1807,18 @@ SwXBookmark* SwXBookmarks::GetObject( ::sw::mark::IMark& rBkmk, SwDoc* pDoc)
- if(!pXBkmk)
- {
- // FIXME: These belong in XTextFieldsSupplier
-- //if (dynamic_cast< ::sw::mark::TextFieldmark* >(&rBkmk))
-- // pXBkmk = new SwXFieldmark(false, &rBkmk, pDoc);
-- //else if (dynamic_cast< ::sw::mark::CheckboxFieldmark* >(&rBkmk))
-- // pXBkmk = new SwXFieldmark(true, &rBkmk, pDoc);
-- //else
-- OSL_ENSURE(
-- dynamic_cast< ::sw::mark::IBookmark* >(&rBkmk),
-- "<SwXBookmark::GetObject(..)>"
-- "SwXBookmark requested for non-bookmark mark.");
-- pXBkmk = new SwXBookmark(&rBkmk, pDoc);
-+ if (dynamic_cast< ::sw::mark::ICheckboxFieldmark* >(&rBkmk))
-+ pXBkmk = new SwXFieldmark(true, &rBkmk, pDoc);
-+ else if (dynamic_cast< ::sw::mark::IFieldmark* >(&rBkmk))
-+ pXBkmk = new SwXFieldmark(false, &rBkmk, pDoc);
-+ else
-+ {
-+ OSL_ENSURE(
-+ dynamic_cast< ::sw::mark::IBookmark* >(&rBkmk),
-+ "<SwXBookmark::GetObject(..)>"
-+ "SwXBookmark requested for non-bookmark mark.");
-+ pXBkmk = new SwXBookmark(&rBkmk, pDoc);
-+ }
- }
- return pXBkmk;
- }
---
-1.7.0.1
-
diff --git a/patches/dev300/field-patch.diff b/patches/dev300/field-patch.diff
deleted file mode 100644
index 80caba0..0000000
--- a/patches/dev300/field-patch.diff
+++ /dev/null
@@ -1,2722 +0,0 @@
-From c6f5908e8ee3090a2b8f6d22f009cccbe5d1defe Mon Sep 17 00:00:00 2001
-From: Jan Holesovsky <kendy at suse.cz>
-Date: Fri, 14 May 2010 17:04:27 +0200
-Subject: [PATCH 622/878] field-patch.diff
-
----
- offapi/com/sun/star/text/XFormField.idl | 15 +-
- svtools/source/config/fltrcfg.cxx | 3 +-
- sw/inc/IDocumentMarkAccess.hxx | 7 +
- sw/inc/IMark.hxx | 23 +++-
- sw/inc/crsrsh.hxx | 5 +-
- sw/inc/ecmaflds.hxx | 68 +++++++++
- sw/inc/editsh.hxx | 4 +
- sw/inc/hintids.hxx | 6 +-
- sw/inc/pam.hxx | 1 +
- sw/inc/unoobj.hxx | 12 +-
- sw/source/core/crsr/bookmrk.cxx | 125 +++++++++++++++-
- sw/source/core/crsr/crossrefbookmark.cxx | 2 +-
- sw/source/core/crsr/crstrvl.cxx | 11 ++
- sw/source/core/crsr/pam.cxx | 38 ++++--
- sw/source/core/doc/docbm.cxx | 60 +++++++-
- sw/source/core/edit/edtox.cxx | 22 +++
- sw/source/core/inc/MarkManager.hxx | 10 ++
- sw/source/core/inc/bookmrk.hxx | 41 ++++--
- sw/source/core/inc/crossrefbookmark.hxx | 6 +-
- sw/source/core/text/inftxt.cxx | 57 +++++---
- sw/source/core/text/portxt.cxx | 116 +++++++++++----
- sw/source/core/unocore/unobkm.cxx | 102 ++++++++-----
- sw/source/filter/ww8/wrtw8nds.cxx | 111 +++++++++++---
- sw/source/filter/ww8/wrtww8.cxx | 59 +++++++-
- sw/source/filter/ww8/wrtww8.hxx | 2 +
- sw/source/filter/ww8/ww8par.cxx | 34 +----
- sw/source/filter/ww8/ww8par.hxx | 42 +++---
- sw/source/filter/ww8/ww8par3.cxx | 179 ++++++++++++-----------
- sw/source/filter/ww8/ww8par5.cxx | 107 +++++++++++++-
- sw/source/ui/docvw/edtwin.cxx | 32 ++++-
- sw/source/ui/inc/view.hxx | 4 +-
- sw/source/ui/inc/wrtsh.hxx | 4 +
- sw/source/ui/uiview/viewling.cxx | 136 +++++++++++++++++
- sw/source/ui/wrtsh/wrtsh1.cxx | 8 +
- sw/source/ui/wrtsh/wrtsh2.cxx | 7 +
- xmloff/inc/xmloff/ecmaflds.hxx | 68 +++++++++
- xmloff/source/text/XMLTextMarkImportContext.cxx | 46 +++++--
- xmloff/source/text/txtimp.cxx | 12 +-
- xmloff/source/text/txtparae.cxx | 29 ++---
- 39 files changed, 1250 insertions(+), 364 deletions(-)
- create mode 100644 sw/inc/ecmaflds.hxx
- create mode 100644 xmloff/inc/xmloff/ecmaflds.hxx
-
-diff --git a/offapi/com/sun/star/text/XFormField.idl b/offapi/com/sun/star/text/XFormField.idl
-index b8d6023..ab2985c 100644
---- a/offapi/com/sun/star/text/XFormField.idl
-+++ b/offapi/com/sun/star/text/XFormField.idl
-@@ -11,14 +11,13 @@
- */
- interface XFormField: com::sun::star::uno::XInterface
- {
-- short getType();
-- short getRes();
-- string getDescription( );
--
-- void setType([in] short fieldType );
-- void setRes([in] short res );
-- void setDescription([in] string description );
--
-+ string getFieldType();
-+ void setFieldType([in] string fieldType);
-+
-+ short getParamCount();
-+ string getParamName([in] short i);
-+ string getParamValue([in] short i);
-+ void addParam([in] string name, [in] string value, [in] boolean replaceExisting);
- };
-
- }; }; }; };
-diff --git a/svtools/source/config/fltrcfg.cxx b/svtools/source/config/fltrcfg.cxx
-index 44741af..f421179 100644
---- a/svtools/source/config/fltrcfg.cxx
-+++ b/svtools/source/config/fltrcfg.cxx
-@@ -582,8 +582,7 @@ void SvtFilterOptions::SetWriter2WinWord( BOOL bFlag )
-
- BOOL SvtFilterOptions::IsUseEnhancedFields() const
- {
-- return false; // disable for now;
--// return pImp->IsFlag( FILTERCFG_USE_ENHANCED_FIELDS );
-+ return pImp->IsFlag( FILTERCFG_USE_ENHANCED_FIELDS );
- }
-
- void SvtFilterOptions::SetUseEnhancedFields( BOOL bFlag )
-diff --git a/sw/inc/IDocumentMarkAccess.hxx b/sw/inc/IDocumentMarkAccess.hxx
-index e3ee488..d38b9f2 100644
---- a/sw/inc/IDocumentMarkAccess.hxx
-+++ b/sw/inc/IDocumentMarkAccess.hxx
-@@ -83,6 +83,13 @@ class IDocumentMarkAccess
- const ::rtl::OUString& rProposedName,
- MarkType eMark) =0;
-
-+ virtual sw::mark::IFieldmark* makeFieldBookmark( const SwPaM& rPaM,
-+ const rtl::OUString& rName,
-+ const rtl::OUString& rType) = 0;
-+ virtual sw::mark::IFieldmark* makeNoTextFieldBookmark( const SwPaM& rPaM,
-+ const rtl::OUString& rName,
-+ const rtl::OUString& rType) = 0;
-+
- /** Returns a mark in the document for a paragraph.
- If there is none, a mark will be created.
-
-diff --git a/sw/inc/IMark.hxx b/sw/inc/IMark.hxx
-index a1b4c65..5445b28 100644
---- a/sw/inc/IMark.hxx
-+++ b/sw/inc/IMark.hxx
-@@ -48,12 +48,12 @@ namespace sw { namespace mark
- {
- public:
- //getters
-- virtual const SwPosition& GetMarkPos() const =0;
-+ virtual SwPosition& GetMarkPos() const =0;
- // GetOtherMarkPos() is only guaranteed to return a valid
- // reference if IsExpanded() returned true
-- virtual const SwPosition& GetOtherMarkPos() const =0;
-- virtual const SwPosition& GetMarkStart() const =0;
-- virtual const SwPosition& GetMarkEnd() const =0;
-+ virtual SwPosition& GetOtherMarkPos() const =0;
-+ virtual SwPosition& GetMarkStart() const =0;
-+ virtual SwPosition& GetMarkEnd() const =0;
- virtual const ::rtl::OUString& GetName() const =0;
- virtual bool IsExpanded() const =0;
- virtual bool IsCoveringPosition(const SwPosition& rPos) const =0;
-@@ -76,6 +76,9 @@ namespace sw { namespace mark
- { return GetMarkEnd() < rPos; }
- bool EndsAfter(const SwPosition& rPos) const
- { return GetMarkEnd() > rPos; }
-+
-+ // Use for debugging purpose
-+ virtual rtl::OUString toString( ) const = 0;
- };
-
- class IBookmark
-@@ -92,13 +95,25 @@ namespace sw { namespace mark
- : virtual public IMark
- {
- public:
-+ typedef std::pair< ::rtl::OUString, ::rtl::OUString > ParamPair_t;
-+
- //getters
- virtual ::rtl::OUString GetFieldname() const =0;
- virtual ::rtl::OUString GetFieldHelptext() const =0;
-
-+ virtual void addParam( rtl::OUString rParamName,
-+ rtl::OUString rParamValue,
-+ bool bReplaceExisting = true ) = 0;
-+ virtual void addParam( const char* paramName, int value ) = 0;
-+ virtual void addParams( std::vector<ParamPair_t>& params ) = 0;
-+ virtual int getNumOfParams() const = 0;
-+ virtual ParamPair_t getParam( int pos ) const = 0;
-+ virtual ParamPair_t getParam( const char *name, const char *defaultValue = NULL ) const = 0;
-+
- //setters
- virtual void SetFieldname(const ::rtl::OUString& rFieldname) =0;
- virtual void SetFieldHelptext(const ::rtl::OUString& rFieldHelptext) =0;
-+ virtual void invalidate( ) = 0;
- };
-
- class ICheckboxFieldmark
-diff --git a/sw/inc/crsrsh.hxx b/sw/inc/crsrsh.hxx
-index 1c988f7..9533d46 100644
---- a/sw/inc/crsrsh.hxx
-+++ b/sw/inc/crsrsh.hxx
-@@ -42,6 +42,7 @@
- #include <node.hxx>
- #include <tblsel.hxx>
- #include <IDocumentMarkAccess.hxx>
-+#include <IMark.hxx>
-
-
- // einige Forward Deklarationen
-@@ -107,7 +108,8 @@ struct SwContentAtPos
- SW_REFMARK = 0x0100,
- SW_NUMLABEL = 0x0200, // #i23726#
- SW_CONTENT_CHECK = 0x0400, // --> FME 2005-05-13 #i43742# <--
-- SW_SMARTTAG = 0x0800
-+ SW_SMARTTAG = 0x0800,
-+ SW_FORMCTRL = 0x1000
- #ifndef PRODUCT
- ,SW_CURR_ATTRS = 0x4000 // nur zum Debuggen
- ,SW_TABLEBOXVALUE = 0x8000 // nur zum Debuggen
-@@ -119,6 +121,7 @@ struct SwContentAtPos
- const SfxPoolItem* pAttr;
- const SwRedline* pRedl;
- SwCntntNode * pNode; // #i23726#
-+ const sw::mark::IFieldmark* pFldmark;
- } aFnd;
-
- int nDist; // #i23726#
-diff --git a/sw/inc/ecmaflds.hxx b/sw/inc/ecmaflds.hxx
-new file mode 100644
-index 0000000..a18bad1
---- /dev/null
-+++ b/sw/inc/ecmaflds.hxx
-@@ -0,0 +1,68 @@
-+/*************************************************************************
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * Copyright 2008 by Sun Microsystems, Inc.
-+ *
-+ * OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ * $RCSfile: $
-+ * $Revision: $
-+ *
-+ * This file is part of OpenOffice.org.
-+ *
-+ * OpenOffice.org is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU Lesser General Public License version 3
-+ * only, as published by the Free Software Foundation.
-+ *
-+ * OpenOffice.org is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU Lesser General Public License version 3 for more details
-+ * (a copy is included in the LICENSE file that accompanied this code).
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * version 3 along with OpenOffice.org. If not, see
-+ * <http://www.openoffice.org/license.html>
-+ * for a copy of the LGPLv3 License.
-+ *
-+ ************************************************************************/
-+/* and also:
-+ * Author: Florian Reuter <freuter at novell.com>
-+ * Copyright 2008 by Novell, Inc.
-+*/
-+#ifndef _ECMAFLDS_HXX
-+#define _ECMAFLDS_HXX
-+
-+
-+#define ECMA_FORMTEXT "ecma.office-open-xml.field.FORMTEXT"
-+#define ECMA_FORMTEXT_NAME "name"
-+#define ECMA_FORMTEXT_HELPTEXT "helpText"
-+#define ECMA_FORMTEXT_STATUSTEXT "statusText"
-+#define ECMA_FORMTEXT_DEFAULT "default"
-+#define ECMA_FORMTEXT_FORMAT "format"
-+#define ECMA_FORMTEXT_MAXLENGTH "maxLength"
-+#define ECMA_FORMTEXT_TYPE "type"
-+
-+#define ECMA_FORMCHECKBOX "ecma.office-open-xml.field.FORMCHECKBOX"
-+#define ECMA_FORMCHECKBOX_NAME "name"
-+#define ECMA_FORMCHECKBOX_HELPTEXT "helpText"
-+#define ECMA_FORMCHECKBOX_STATUSTEXT "statusText"
-+#define ECMA_FORMCHECKBOX_CHECKED "checked"
-+#define ECMA_FORMCHECKBOX_DEFAULT "default"
-+#define ECMA_FORMCHECKBOX_SIZE "size"
-+#define ECMA_FORMCHECKBOX_SIZEAUTO "sizeAuto"
-+
-+
-+#define ECMA_FORMDROPDOWN "ecma.office-open-xml.field.FORMDROPDOWN"
-+#define ECMA_FORMDROPDOWN_DEFAULT "default"
-+#define ECMA_FORMDROPDOWN_LISTENTRY "listEntry"
-+#define ECMA_FORMDROPDOWN_RESULT "result"
-+
-+#define ECMA_TOC "ecma.office-open-xml.field.TOC"
-+
-+#define ECMA_HYPERLINK "ecma.office-open-xml.field.HYPERLINK"
-+
-+#define ECMA_PAGEREF "ecma.office-open-xml.field.PAGEREF"
-+
-+#endif /* _ECMAFLDS_HXX */
-diff --git a/sw/inc/editsh.hxx b/sw/inc/editsh.hxx
-index 231d37a..c352cc7 100644
---- a/sw/inc/editsh.hxx
-+++ b/sw/inc/editsh.hxx
-@@ -41,6 +41,7 @@
- #include <com/sun/star/linguistic2/ProofreadingResult.hpp>
- #include <fldupde.hxx>
- #include <tblenum.hxx>
-+#include <IMark.hxx>
-
- #include <vector>
- #include <swundo.hxx>
-@@ -412,6 +413,9 @@ public:
- const SwTOXType* GetTOXType(TOXTypes eTyp, USHORT nId) const;
- void InsertTOXType(const SwTOXType& rTyp);
-
-+ // new field stuff
-+ BOOL UpdateField(sw::mark::IFieldmark &fieldBM);
-+
- //AutoMark file
- const String& GetTOIAutoMarkURL() const;
- void SetTOIAutoMarkURL(const String& rSet);
-diff --git a/sw/inc/hintids.hxx b/sw/inc/hintids.hxx
-index 9689d97..04fd64c 100644
---- a/sw/inc/hintids.hxx
-+++ b/sw/inc/hintids.hxx
-@@ -41,12 +41,8 @@
- #define CH_TXT_ATR_FIELDEND ((sal_Unicode)0x05)
- #define CH_TXT_ATR_SUBST_FIELDSTART ("[")
- #define CH_TXT_ATR_SUBST_FIELDEND ("]")
--//#define CH_TXT_ATR_FORMELEMENT ((sal_Unicode)'#')
- #define CH_TXT_ATR_FORMELEMENT ((sal_Unicode)0x06)
--/*
--#define FIELD_BOOKMARK_PREFIX "__"
--#define FIELD_FORM_BOOKMARK_PREFIX "__FORM"
--*/
-+
- /*
- * Hier kommen erst mal die enums fuer die Hints
- */
-diff --git a/sw/inc/pam.hxx b/sw/inc/pam.hxx
-index 5124b72..3227b89 100644
---- a/sw/inc/pam.hxx
-+++ b/sw/inc/pam.hxx
-@@ -269,6 +269,7 @@ public:
- DECL_FIXEDMEMPOOL_NEWDEL(SwPaM);
-
- String GetTxt() const;
-+ void Invalidate();
- };
-
-
-diff --git a/sw/inc/unoobj.hxx b/sw/inc/unoobj.hxx
-index 7498ef6..f7c4141 100644
---- a/sw/inc/unoobj.hxx
-+++ b/sw/inc/unoobj.hxx
-@@ -671,13 +671,13 @@ class SwXFieldmark : public SwXFieldmark_BASE
- SwXFieldmark(bool isReplacementObject, ::sw::mark::IMark* pBkm = 0, SwDoc* pDoc = 0);
-
- virtual void attachToRange(const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > & xTextRange) throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException );
-- virtual ::rtl::OUString SAL_CALL getDescription(void) throw( ::com::sun::star::uno::RuntimeException );
-- virtual ::sal_Int16 SAL_CALL getType( ) throw (::com::sun::star::uno::RuntimeException);
-- virtual ::sal_Int16 SAL_CALL getRes( ) throw (::com::sun::star::uno::RuntimeException);
-+ virtual ::rtl::OUString SAL_CALL getFieldType(void) throw( ::com::sun::star::uno::RuntimeException );
-+ virtual void SAL_CALL setFieldType( const ::rtl::OUString& description ) throw (::com::sun::star::uno::RuntimeException);
-
-- virtual void SAL_CALL setType( ::sal_Int16 fieldType ) throw (::com::sun::star::uno::RuntimeException);
-- virtual void SAL_CALL setRes( ::sal_Int16 res ) throw (::com::sun::star::uno::RuntimeException);
-- virtual void SAL_CALL setDescription( const ::rtl::OUString& description ) throw (::com::sun::star::uno::RuntimeException);
-+ virtual ::sal_Int16 SAL_CALL getParamCount( ) throw (::com::sun::star::uno::RuntimeException);
-+ virtual ::rtl::OUString SAL_CALL getParamName(::sal_Int16 i) throw( ::com::sun::star::uno::RuntimeException );
-+ virtual ::rtl::OUString SAL_CALL getParamValue(::sal_Int16 i) throw( ::com::sun::star::uno::RuntimeException );
-+ virtual void SAL_CALL addParam( const ::rtl::OUString& name, const ::rtl::OUString& value, ::sal_Bool replaceExisting ) throw (::com::sun::star::uno::RuntimeException);
- };
-
- /*-----------------23.02.98 10:45-------------------
-diff --git a/sw/source/core/crsr/bookmrk.cxx b/sw/source/core/crsr/bookmrk.cxx
-index 5af85f0..1c7bdfb 100644
---- a/sw/source/core/crsr/bookmrk.cxx
-+++ b/sw/source/core/crsr/bookmrk.cxx
-@@ -74,20 +74,21 @@ namespace
- const sal_Unicode aStartMark,
- const sal_Unicode aEndMark)
- {
-- const SwPosition& rStart = pField->GetMarkStart();
-- const SwPosition& rEnd = pField->GetMarkEnd();
-+ SwPosition& rStart = pField->GetMarkStart();
-+ SwPosition& rEnd = pField->GetMarkEnd();
- SwTxtNode const * const pStartTxtNode = io_pDoc->GetNodes()[rStart.nNode]->GetTxtNode();
- SwTxtNode const * const pEndTxtNode = io_pDoc->GetNodes()[rEnd.nNode]->GetTxtNode();
- const sal_Unicode ch_start=pStartTxtNode->GetTxt().GetChar(rStart.nContent.GetIndex());
-- const sal_Unicode ch_end=pEndTxtNode->GetTxt().GetChar(rEnd.nContent.GetIndex()-1);
-- const SwPaM aStartPaM(rStart);
-- const SwPaM aEndPaM(rEnd);
-+ xub_StrLen nEndPos = rEnd.nContent.GetIndex() == 0 ? 0 : rEnd.nContent.GetIndex() - 1;
-+ const sal_Unicode ch_end=pEndTxtNode->GetTxt().GetChar( nEndPos );
-+ SwPaM aStartPaM(rStart);
-+ SwPaM aEndPaM(rEnd);
- io_pDoc->StartUndo(UNDO_UI_REPLACE, NULL);
- if(ch_start != aStartMark)
- {
- io_pDoc->InsertString(aStartPaM, aStartMark);
- }
-- if(aEndMark && ch_end != aEndMark)
-+ if ( aEndMark && ( ch_end != aEndMark ) && ( rStart != rEnd ) )
- {
- io_pDoc->InsertString(aEndPaM, aEndMark);
- }
-@@ -111,6 +112,11 @@ namespace sw { namespace mark
- }
- }
-
-+ bool MarkBase::IsCoveringPosition(const SwPosition& rPos) const
-+ {
-+ return GetMarkStart() <= rPos && rPos <= GetMarkEnd();
-+ }
-+
- void MarkBase::SetMarkPos(const SwPosition& rNewPos)
- {
- ::boost::scoped_ptr<SwPosition>(new SwPosition(rNewPos)).swap(m_pPos1);
-@@ -123,6 +129,17 @@ namespace sw { namespace mark
- //lcl_FixPosition(*m_pPos2);
- }
-
-+ rtl::OUString MarkBase::toString( ) const
-+ {
-+ rtl::OUStringBuffer buf;
-+ buf.appendAscii( "Mark: ( Name, [ Node1, Index1 ] ): ( " );
-+ buf.append( m_aName ).appendAscii( ", [ " );
-+ buf.append( sal_Int32( GetMarkPos().nNode.GetIndex( ) ) ).appendAscii( ", " );
-+ buf.append( sal_Int32( GetMarkPos().nContent.GetIndex( ) ) ).appendAscii( " ] )" );
-+
-+ return buf.makeStringAndClear( );
-+ }
-+
- MarkBase::~MarkBase()
- { }
-
-@@ -265,6 +282,96 @@ namespace sw { namespace mark
- SetOtherMarkPos(GetMarkPos());
- }
-
-+ rtl::OUString Fieldmark::toString( ) const
-+ {
-+ rtl::OUStringBuffer buf;
-+ buf.appendAscii( "Fieldmark: ( Name, Type, [ Nd1, Id1 ], [ Nd2, Id2 ] ): ( " );
-+ buf.append( m_aName ).appendAscii( ", " );
-+ buf.append( m_aFieldname ).appendAscii( ", [ " );
-+ buf.append( sal_Int32( GetMarkPos().nNode.GetIndex( ) ) ).appendAscii( ", " );
-+ buf.append( sal_Int32( GetMarkPos( ).nContent.GetIndex( ) ) ).appendAscii( " ], [" );
-+ buf.append( sal_Int32( GetOtherMarkPos().nNode.GetIndex( ) ) ).appendAscii( ", " );
-+ buf.append( sal_Int32( GetOtherMarkPos( ).nContent.GetIndex( ) ) ).appendAscii( " ] ) " );
-+
-+ return buf.makeStringAndClear( );
-+ }
-+
-+ void Fieldmark::addParam( ::rtl::OUString paramName,
-+ ::rtl::OUString paramValue,
-+ bool replaceExisting )
-+ {
-+ if ( replaceExisting )
-+ {
-+ bool replaced = false;
-+ const int len = m_params.size( );
-+ for ( int i = 0; i < len; i++ )
-+ {
-+ if ( m_params[i].first.compareTo( paramName ) == 0 )
-+ {
-+ m_params[i] = ParamPair_t( paramName, paramValue );
-+ replaced = true;
-+ }
-+ }
-+ if ( !replaced )
-+ {
-+ m_params.push_back( ParamPair_t( paramName, paramValue ) );
-+ }
-+ }
-+ else
-+ {
-+ m_params.push_back( ParamPair_t( paramName, paramValue ) );
-+ }
-+ }
-+
-+ void Fieldmark::addParam( const char *paramName, int value )
-+ {
-+ rtl::OUString sName = rtl::OUString::createFromAscii( paramName );
-+ rtl::OUString sValue =::rtl::OUString::valueOf( ( sal_Int32 ) value );
-+ addParam( sName, sValue );
-+ }
-+
-+ void Fieldmark::addParams( std::vector < ParamPair_t > ¶ms )
-+ {
-+ for ( std::vector < ParamPair_t >::iterator i = params.begin( );
-+ i != params.end( ); i++ )
-+ {
-+ m_params.push_back( *i );
-+ }
-+ }
-+
-+ int Fieldmark::getNumOfParams( ) const
-+ {
-+ return m_params.size( );
-+ }
-+
-+ Fieldmark::ParamPair_t Fieldmark::getParam( int pos ) const
-+ {
-+ return m_params[pos];
-+ }
-+
-+ Fieldmark::ParamPair_t Fieldmark::getParam( const char *name,
-+ const char *defaultValue ) const
-+ {
-+ for ( std::vector < ParamPair_t >::iterator i = const_cast< Fieldmark* >( this )->m_params.begin( );
-+ i != m_params.end( ); i++ )
-+ {
-+ if ( i->first.compareToAscii( name ) == 0 )
-+ {
-+ return *i;
-+ }
-+ }
-+ return ParamPair_t( rtl::OUString( ),
-+ ( defaultValue ?
-+ rtl::OUString::createFromAscii( defaultValue ) :
-+ rtl::OUString( ) ) );
-+ }
-+
-+ void Fieldmark::invalidate( )
-+ {
-+ SwPaM aPaM( this->GetMarkPos(), this->GetOtherMarkPos() );
-+ aPaM.Invalidate();
-+ }
-+
- const ::rtl::OUString Fieldmark::our_sNamePrefix = ::rtl::OUString::createFromAscii("__Fieldmark__");
-
- TextFieldmark::TextFieldmark(const SwPaM& rPaM)
-@@ -282,7 +389,11 @@ namespace sw { namespace mark
-
- void CheckboxFieldmark::InitDoc(SwDoc* const io_pDoc)
- {
-- lcl_AssureFieldMarksSet(this, io_pDoc, CH_TXT_ATR_FIELDSTART, CH_TXT_ATR_FIELDEND);
-+ lcl_AssureFieldMarksSet(this, io_pDoc, CH_TXT_ATR_FORMELEMENT, CH_TXT_ATR_FIELDEND);
-+
-+ // For some reason the end mark is moved from 1 by the Insert: we don't
-+ // want this for checkboxes
-+ this->GetMarkEnd( ).nContent--;
- }
-
- void CheckboxFieldmark::SetChecked(bool checked)
-diff --git a/sw/source/core/crsr/crossrefbookmark.cxx b/sw/source/core/crsr/crossrefbookmark.cxx
-index 4e0d1a4..dc08380 100644
---- a/sw/source/core/crsr/crossrefbookmark.cxx
-+++ b/sw/source/core/crsr/crossrefbookmark.cxx
-@@ -64,7 +64,7 @@ namespace sw { namespace mark
- MarkBase::SetMarkPos(rNewPos);
- }
-
-- const SwPosition& CrossRefBookmark::GetOtherMarkPos() const
-+ SwPosition& CrossRefBookmark::GetOtherMarkPos() const
- {
- OSL_PRECOND(false,
- "<SwCrossRefBookmark::GetOtherMarkPos(..)>"
-diff --git a/sw/source/core/crsr/crstrvl.cxx b/sw/source/core/crsr/crstrvl.cxx
-index 5972ab0..3a10d5d 100644
---- a/sw/source/core/crsr/crstrvl.cxx
-+++ b/sw/source/core/crsr/crstrvl.cxx
-@@ -1172,6 +1172,17 @@ BOOL SwCrsrShell::GetContentAtPos( const Point& rPt,
- }
- }
-
-+ if( !bRet && SwContentAtPos::SW_FORMCTRL & rCntntAtPos.eCntntAtPos )
-+ {
-+ IDocumentMarkAccess* pMarksAccess = GetDoc()->getIDocumentMarkAccess( );
-+ sw::mark::IFieldmark* pFldBookmark = pMarksAccess->getFieldmarkFor( aPos );
-+ if( bCrsrFoundExact && pTxtNd && pFldBookmark) {
-+ rCntntAtPos.eCntntAtPos = SwContentAtPos::SW_FORMCTRL;
-+ rCntntAtPos.aFnd.pFldmark = pFldBookmark;
-+ bRet=TRUE;
-+ }
-+ }
-+
- if( !bRet && SwContentAtPos::SW_FTN & rCntntAtPos.eCntntAtPos )
- {
- if( aTmpState.bFtnNoInfo )
-diff --git a/sw/source/core/crsr/pam.cxx b/sw/source/core/crsr/pam.cxx
-index 6faff57..5212c12 100644
---- a/sw/source/core/crsr/pam.cxx
-+++ b/sw/source/core/crsr/pam.cxx
-@@ -53,6 +53,7 @@
- #include <ndtxt.hxx> // #111827#
-
- #include <IMark.hxx>
-+#include <hints.hxx>
-
- // fuer den dummen ?MSC-? Compiler
- inline xub_StrLen GetSttOrEnd( BOOL bCondition, const SwCntntNode& rNd )
-@@ -824,16 +825,21 @@ BOOL SwPaM::HasReadonlySel( bool bFormView ) const
- }
- //FIXME FieldBk
- // TODO: Form Protection when Enhanced Fields are enabled
--// if( !bRet )
--// {
--// const SwDoc *pDoc=GetDoc();
--// SwBookmark *pA = ( pDoc && pPoint ? pDoc->getFieldmarkFor( *pPoint ) : NULL );
--// SwBookmark *pB = ( pDoc && pMark ? pDoc->getFieldmarkFor( *pMark ) : pA );
--// bRet = ( pA != pB );
--// bool bProtectForm = pDoc->get( IDocumentSettingAccess::PROTECT_FORM );
--// if( bProtectForm )
--// bRet |= ( pA==NULL || pB==NULL );
--// }
-+ if (!bRet) {
-+ const SwDoc *pDoc = GetDoc();
-+ sw::mark::IMark* pA = NULL;
-+ sw::mark::IMark* pB = NULL;
-+ if ( pDoc )
-+ {
-+ const IDocumentMarkAccess* pMarksAccess = pDoc->getIDocumentMarkAccess( );
-+ pA = GetPoint() ? pMarksAccess->getFieldmarkFor( *GetPoint( ) ) : NULL;
-+ pB = GetMark( ) ? pMarksAccess->getFieldmarkFor( *GetMark( ) ) : pA;
-+ bRet = ( pA != pB );
-+ }
-+ bool bProtectForm = pDoc->get( IDocumentSettingAccess::PROTECT_FORM );
-+ if ( bProtectForm )
-+ bRet |= ( pA == NULL || pB == NULL );
-+ }
- return bRet;
- }
-
-@@ -1220,6 +1226,18 @@ BOOL SwPaM::Overlap(const SwPaM & a, const SwPaM & b)
- return !(*b.End() <= *a.Start() || *a.End() <= *b.End());
- }
-
-+void SwPaM::Invalidate()
-+{
-+ const SwNode *_pNd=this->GetNode();
-+ const SwTxtNode *_pTxtNd=(_pNd!=NULL?_pNd->GetTxtNode():NULL);
-+ if (_pTxtNd!=NULL) {
-+ //pretent we've added a char to force layout to recalc the portion...
-+ SwInsChr aHint(_pTxtNd->GetIndex());
-+ SwModify *_pModify=(SwModify*)_pTxtNd;
-+ _pModify->Modify( 0, &aHint);
-+ }
-+}
-+
- BOOL SwPaM::LessThan(const SwPaM & a, const SwPaM & b)
- {
- return (*a.Start() < *b.Start()) || (*a.Start() == *b.Start() && *a.End() < *b.End());
-diff --git a/sw/source/core/doc/docbm.cxx b/sw/source/core/doc/docbm.cxx
-index 6ea6719..821ec82 100644
---- a/sw/source/core/doc/docbm.cxx
-+++ b/sw/source/core/doc/docbm.cxx
-@@ -37,6 +37,7 @@
- #include <dcontact.hxx>
- #include <doc.hxx>
- #include <docary.hxx>
-+#include <ecmaflds.hxx>
- #include <editsh.hxx>
- #include <errhdl.hxx>
- #include <fmtanchr.hxx>
-@@ -62,6 +63,23 @@
- #include <viscrs.hxx>
- #include <stdio.h>
-
-+static void lcl_docbm_FixPosition( SwPosition& rPos )
-+{
-+ // make sure the position has 1) the proper node, and 2) a proper index
-+ SwTxtNode* pTxtNode = rPos.nNode.GetNode().GetTxtNode();
-+
-+ if( rPos.nContent.GetIndex() > ( pTxtNode == NULL ? 0 : pTxtNode->Len() ) )
-+ {
-+ DBG_ERROR( "illegal position" );
-+ xub_StrLen nLen = rPos.nContent.GetIndex();
-+ if( pTxtNode == NULL )
-+ nLen = 0;
-+ else if( nLen >= pTxtNode->Len() )
-+ nLen = pTxtNode->Len();
-+ rPos.nContent.Assign( pTxtNode, nLen );
-+ }
-+}
-+
-
- using namespace ::std;
- using namespace ::boost;
-@@ -305,6 +323,17 @@ namespace sw { namespace mark
- : m_pDoc(&rDoc)
- { }
-
-+ void MarkManager::dumpFieldmarks( ) const
-+ {
-+ const_iterator_t pIt = m_vFieldmarks.begin( );
-+ for ( ; pIt != m_vFieldmarks.end( ); pIt++ )
-+ {
-+ rtl::OUString str = ( *pIt )->toString( );
-+ fprintf( stderr, "%s\n",
-+ rtl::OUStringToOString( str, RTL_TEXTENCODING_UTF8 ).getStr( ) );
-+ }
-+ }
-+
- ::sw::mark::IMark* MarkManager::makeMark(const SwPaM& rPaM,
- const ::rtl::OUString& rName,
- const IDocumentMarkAccess::MarkType eType)
-@@ -410,6 +439,30 @@ namespace sw { namespace mark
- return pMark.get();
- }
-
-+ ::sw::mark::IFieldmark* MarkManager::makeFieldBookmark( const SwPaM& rPaM,
-+ const rtl::OUString& rName,
-+ const rtl::OUString& rType )
-+ {
-+ sw::mark::IMark* pMark = makeMark( rPaM, rName,
-+ IDocumentMarkAccess::TEXT_FIELDMARK );
-+ sw::mark::IFieldmark* pFieldMark = dynamic_cast<sw::mark::IFieldmark*>( pMark );
-+ pFieldMark->SetFieldname( rType );
-+
-+ return pFieldMark;
-+ }
-+
-+ ::sw::mark::IFieldmark* MarkManager::makeNoTextFieldBookmark( const SwPaM& rPaM,
-+ const rtl::OUString& rName,
-+ const rtl::OUString& rType)
-+ {
-+ sw::mark::IMark* pMark = makeMark( rPaM, rName,
-+ IDocumentMarkAccess::CHECKBOX_FIELDMARK );
-+ sw::mark::IFieldmark* pFieldMark = dynamic_cast<sw::mark::IFieldmark*>( pMark );
-+ pFieldMark->SetFieldname( rType );
-+
-+ return pFieldMark;
-+ }
-+
- ::sw::mark::IMark* MarkManager::getMarkForTxtNode(const SwTxtNode& rTxtNode,
- const IDocumentMarkAccess::MarkType eType)
- {
-@@ -763,12 +816,7 @@ namespace sw { namespace mark
- {
- const_iterator_t pFieldmark = find_if(
- m_vFieldmarks.begin(),
-- // we do not need to check marks starting behind the positon
-- lower_bound(
-- m_vFieldmarks.begin(),
-- m_vFieldmarks.end(),
-- rPos,
-- bind(&IMark::StartsAfter, _1, _2)),
-+ m_vFieldmarks.end( ),
- bind(&IMark::IsCoveringPosition, _1, rPos));
- if(pFieldmark == m_vFieldmarks.end()) return NULL;
- return dynamic_cast<IFieldmark*>(pFieldmark->get());
-diff --git a/sw/source/core/edit/edtox.cxx b/sw/source/core/edit/edtox.cxx
-index ca89430..f8b5270 100644
---- a/sw/source/core/edit/edtox.cxx
-+++ b/sw/source/core/edit/edtox.cxx
-@@ -57,6 +57,9 @@
- #ifndef _STATSTR_HRC
- #include <statstr.hrc>
- #endif
-+#include <bookmrk.hxx>
-+#include <ecmaflds.hxx>
-+
-
- using namespace ::com::sun::star;
- using namespace ::com::sun::star::i18n;
-@@ -232,6 +235,25 @@ BOOL SwEditShell::UpdateTableOf( const SwTOXBase& rTOX, const SfxItemSet* pSet )
- return bRet;
- }
-
-+BOOL SwEditShell::UpdateField( sw::mark::IFieldmark &fieldBM)
-+{
-+// SwDocShell* pDocSh = pDoc->GetDocShell();
-+ //@TODO implement me...; add undo etc...
-+ if ( pDoc && fieldBM.IsExpanded( ) ) {
-+ SwPosition aSttPos = fieldBM.GetMarkStart( );
-+ aSttPos.nContent++;
-+
-+ SwPosition aEndPos = fieldBM.GetMarkEnd( );
-+ aEndPos.nContent--;
-+
-+ SwPaM aPaM( aSttPos, aEndPos );
-+ pDoc->DeleteRange(aPaM);
-+ pDoc->InsertString(aPaM, String::CreateFromAscii("Implement me ;-)") );
-+ }
-+ return TRUE;
-+}
-+
-+
- /*--------------------------------------------------------------------
- Beschreibung: Aktuelles Verzeichnis vor oder in dem der Cursor
- steht
-diff --git a/sw/source/core/inc/MarkManager.hxx b/sw/source/core/inc/MarkManager.hxx
-index e583ea4..63cfdbf 100644
---- a/sw/source/core/inc/MarkManager.hxx
-+++ b/sw/source/core/inc/MarkManager.hxx
-@@ -40,8 +40,18 @@ namespace sw { namespace mark
- public:
- MarkManager(/*[in/out]*/ SwDoc& rDoc);
-
-+ void dumpFieldmarks( ) const;
-+
- // IDocumentMarkAccess
- virtual ::sw::mark::IMark* makeMark(const SwPaM& rPaM, const ::rtl::OUString& rName, IDocumentMarkAccess::MarkType eMark);
-+
-+ virtual sw::mark::IFieldmark* makeFieldBookmark( const SwPaM& rPaM,
-+ const rtl::OUString& rName,
-+ const rtl::OUString& rType);
-+ virtual sw::mark::IFieldmark* makeNoTextFieldBookmark( const SwPaM& rPaM,
-+ const rtl::OUString& rName,
-+ const rtl::OUString& rType);
-+
- virtual ::sw::mark::IMark* getMarkForTxtNode(const SwTxtNode& rTxtNode, IDocumentMarkAccess::MarkType eMark);
-
- virtual void repositionMark(::sw::mark::IMark* io_pMark, const SwPaM& rPaM);
-diff --git a/sw/source/core/inc/bookmrk.hxx b/sw/source/core/inc/bookmrk.hxx
-index 9500be4..e27f1fa 100644
---- a/sw/source/core/inc/bookmrk.hxx
-+++ b/sw/source/core/inc/bookmrk.hxx
-@@ -45,26 +45,31 @@ namespace sw { namespace mark
- {
- public:
- //getters
-- virtual const SwPosition& GetMarkPos() const
-+ virtual SwPosition& GetMarkPos() const
- { return *m_pPos1; }
- virtual const ::rtl::OUString& GetName() const
- { return m_aName; }
-- virtual bool IsCoveringPosition(const SwPosition& rPos) const
-- { return GetMarkStart() <= rPos && rPos <= GetMarkEnd(); };
-- virtual const SwPosition& GetOtherMarkPos() const
-+ virtual bool IsCoveringPosition(const SwPosition& rPos) const;
-+ virtual SwPosition& GetOtherMarkPos() const
- {
- OSL_PRECOND(IsExpanded(), "<SwPosition::GetOtherMarkPos(..)> - I have no other Pos set." );
- return *m_pPos2;
- }
-- virtual const SwPosition& GetMarkStart() const
-+ virtual SwPosition& GetMarkStart() const
- {
-- if(!m_pPos2 /* !IsExpanded()*/) return *m_pPos1;
-- return *m_pPos1 < *m_pPos2 ? *m_pPos1 : *m_pPos2;
-+ if( !IsExpanded() ) return GetMarkPos( );
-+ if ( GetMarkPos( ) < GetOtherMarkPos( ) )
-+ return GetMarkPos();
-+ else
-+ return GetOtherMarkPos( );
- }
-- virtual const SwPosition& GetMarkEnd() const
-+ virtual SwPosition& GetMarkEnd() const
- {
-- if(!m_pPos2 /* !IsExpanded()*/ ) return *m_pPos1;
-- return *m_pPos1 > *m_pPos2 ? *m_pPos1 : *m_pPos2;
-+ if( !IsExpanded() ) return GetMarkPos();
-+ if ( GetMarkPos( ) > GetOtherMarkPos( ) )
-+ return GetMarkPos( );
-+ else
-+ return GetOtherMarkPos( );
- }
- virtual bool IsExpanded() const
- { return m_pPos2; }
-@@ -77,6 +82,8 @@ namespace sw { namespace mark
- virtual void ClearOtherMarkPos()
- { m_pPos2.reset(); }
-
-+ virtual rtl::OUString toString( ) const;
-+
- virtual void Swap()
- {
- if(m_pPos2)
-@@ -187,11 +194,23 @@ namespace sw { namespace mark
- ::rtl::OUString GetFieldHelptext() const
- { return m_aFieldHelptext; }
-
-+ void addParam( rtl::OUString rParamName,
-+ rtl::OUString rParamValue,
-+ bool bReplaceExisting = true );
-+ void addParam( const char* paramName, int value );
-+ void addParams(std::vector<ParamPair_t>& params);
-+ int getNumOfParams() const;
-+ ParamPair_t getParam(int pos) const;
-+ ParamPair_t getParam(const char *name, const char *defaultValue) const;
-+
- // setters
- void SetFieldname(const ::rtl::OUString& aFieldname)
- { m_aFieldname = aFieldname; }
- void SetFieldHelptext(const ::rtl::OUString& aFieldHelptext)
- { m_aFieldHelptext = aFieldHelptext; }
-+ void invalidate( );
-+
-+ virtual rtl::OUString toString( ) const;
- private:
- //int fftype; // Type: 0 = Text, 1 = Check Box, 2 = List
- //bool ffprot;
-@@ -199,7 +218,7 @@ namespace sw { namespace mark
- ::rtl::OUString m_aFieldname;
- ::rtl::OUString m_aFieldHelptext;
- static const ::rtl::OUString our_sNamePrefix;
--
-+ std::vector<ParamPair_t> m_params;
- };
-
- class TextFieldmark
-diff --git a/sw/source/core/inc/crossrefbookmark.hxx b/sw/source/core/inc/crossrefbookmark.hxx
-index cfacf26..27f920b 100644
---- a/sw/source/core/inc/crossrefbookmark.hxx
-+++ b/sw/source/core/inc/crossrefbookmark.hxx
-@@ -45,10 +45,10 @@ namespace sw { namespace mark
- const ::rtl::OUString& rPrefix);
-
- // getters
-- virtual const SwPosition& GetOtherMarkPos() const;
-- virtual const SwPosition& GetMarkStart() const
-+ virtual SwPosition& GetOtherMarkPos() const;
-+ virtual SwPosition& GetMarkStart() const
- { return *m_pPos1; }
-- virtual const SwPosition& GetMarkEnd() const
-+ virtual SwPosition& GetMarkEnd() const
- { return *m_pPos1; }
- virtual bool IsExpanded() const
- { return false; }
-diff --git a/sw/source/core/text/inftxt.cxx b/sw/source/core/text/inftxt.cxx
-index 58c3cff..5198fe2 100644
---- a/sw/source/core/text/inftxt.cxx
-+++ b/sw/source/core/text/inftxt.cxx
-@@ -1148,27 +1148,30 @@ void SwTxtPaintInfo::DrawCheckBox( const SwFieldFormPortion &rPor, bool checked)
- {
- SwRect aIntersect;
- CalcRect( rPor, &aIntersect, 0 );
-- if ( aIntersect.HasArea() ) {
-- if (OnWin()) {
-- OutputDevice* pOutDev = (OutputDevice*)GetOut();
-- pOutDev->Push( PUSH_LINECOLOR | PUSH_FILLCOLOR );
-- pOutDev->SetLineColor( Color(220, 233, 245));
-- pOutDev->SetFillColor( Color(220, 233, 245));
-- pOutDev->DrawRect( aIntersect.SVRect() );
-- pOutDev->Pop();
-- }
-- const int delta=10;
-- Rectangle r(aIntersect.Left()+delta, aIntersect.Top()+delta, aIntersect.Right()-delta, aIntersect.Bottom()-delta);
-- pOut->Push( PUSH_LINECOLOR | PUSH_FILLCOLOR );
-- pOut->SetLineColor( Color(0, 0, 0));
-- pOut->SetFillColor();
-- pOut->DrawRect( r );
-- if (checked) {
-- pOut->DrawLine(r.TopLeft(), r.BottomRight());
-- pOut->DrawLine(r.TopRight(), r.BottomLeft());
-+ if ( aIntersect.HasArea() )
-+ {
-+ if (OnWin() && SwViewOption::IsFieldShadings() &&
-+ !GetOpt().IsPagePreview())
-+ {
-+ OutputDevice* pOut_ = (OutputDevice*)GetOut();
-+ pOut_->Push( PUSH_LINECOLOR | PUSH_FILLCOLOR );
-+ pOut_->SetFillColor( SwViewOption::GetFieldShadingsColor() );
-+ pOut_->SetLineColor();
-+ pOut_->DrawRect( aIntersect.SVRect() );
-+ pOut_->Pop();
-+ }
-+ const int delta=10;
-+ Rectangle r(aIntersect.Left()+delta, aIntersect.Top()+delta, aIntersect.Right()-delta, aIntersect.Bottom()-delta);
-+ pOut->Push( PUSH_LINECOLOR | PUSH_FILLCOLOR );
-+ pOut->SetLineColor( Color(0, 0, 0));
-+ pOut->SetFillColor();
-+ pOut->DrawRect( r );
-+ if (checked) {
-+ pOut->DrawLine(r.TopLeft(), r.BottomRight());
-+ pOut->DrawLine(r.TopRight(), r.BottomLeft());
-+ }
- pOut->Pop();
- }
-- }
- }
-
- /*************************************************************************
-@@ -1222,14 +1225,22 @@ void SwTxtPaintInfo::_DrawBackBrush( const SwLinePortion &rPor ) const
- }
- }
- bool bIsStartMark=(1==GetLen() && CH_TXT_ATR_FIELDSTART==GetTxt().GetChar(GetIdx()));
-- if(pFieldmark) OSL_TRACE("Found Fieldmark");
-+ if(pFieldmark) {
-+ OSL_TRACE("Found Fieldmark");
-+#if DEBUG
-+ rtl::OUString str = pFieldmark->toString( );
-+ fprintf( stderr, "%s\n", rtl::OUStringToOString( str, RTL_TEXTENCODING_UTF8 ).getStr( ) );
-+#endif
-+ }
- if(bIsStartMark) OSL_TRACE("Found StartMark");
-- if (OnWin() && (pFieldmark!=NULL || bIsStartMark))
-+ if (OnWin() && (pFieldmark!=NULL || bIsStartMark) &&
-+ SwViewOption::IsFieldShadings() &&
-+ !GetOpt().IsPagePreview())
- {
- OutputDevice* pOutDev = (OutputDevice*)GetOut();
- pOutDev->Push( PUSH_LINECOLOR | PUSH_FILLCOLOR );
-- pOutDev->SetLineColor( Color(220, 233, 245));
-- pOutDev->SetFillColor( Color(220, 233, 245));
-+ pOutDev->SetFillColor( SwViewOption::GetFieldShadingsColor() );
-+ pOutDev->SetLineColor( );
- pOutDev->DrawRect( aIntersect.SVRect() );
- pOutDev->Pop();
- }
-diff --git a/sw/source/core/text/portxt.cxx b/sw/source/core/text/portxt.cxx
-index 551ca43..1494482 100644
---- a/sw/source/core/text/portxt.cxx
-+++ b/sw/source/core/text/portxt.cxx
-@@ -52,11 +52,13 @@
- #include <IMark.hxx>
- #include <pam.hxx>
- #include <doc.hxx>
-+#include <ecmaflds.hxx>
-
- #if OSL_DEBUG_LEVEL > 1
- const sal_Char *GetLangName( const MSHORT nLang );
- #endif
-
-+using namespace ::sw::mark;
- using namespace ::com::sun::star;
- using namespace ::com::sun::star::i18n::ScriptType;
-
-@@ -770,9 +772,10 @@ void SwHolePortion::HandlePortion( SwPortionHandler& rPH ) const
- rPH.Text( GetLen(), GetWhichPor() );
- }
-
--void SwFieldMarkPortion::Paint( const SwTxtPaintInfo & rInf) const
-+void SwFieldMarkPortion::Paint( const SwTxtPaintInfo & /*rInf*/) const
- {
-- SwTxtPortion::Paint(rInf);
-+ // These shouldn't be painted!
-+ // SwTxtPortion::Paint(rInf);
- }
-
- sal_Bool SwFieldMarkPortion::Format( SwTxtFormatInfo & )
-@@ -782,38 +785,95 @@ sal_Bool SwFieldMarkPortion::Format( SwTxtFormatInfo & )
- return ret;
- }
-
-+namespace ecma {
-+ static int getCurrentListIndex( IFieldmark* pBM,
-+ ::rtl::OUString *currentText = NULL )
-+ {
-+ int currentIndex = pBM->getParam( ECMA_FORMDROPDOWN_RESULT, "0" ).second.toInt32();
-+ int idx = 0;
-+ for( int i = 0; i < pBM->getNumOfParams(); i++ )
-+ {
-+ IFieldmark::ParamPair_t p = pBM->getParam( i );
-+ if ( p.first.compareToAscii( ECMA_FORMDROPDOWN_LISTENTRY ) == 0 )
-+ {
-+ if ( idx == currentIndex )
-+ {
-+ if ( currentText!=NULL ) *currentText=p.second;
-+ break;
-+ }
-+ else
-+ idx++;
-+ }
-+ }
-+ return idx;
-+ }
-+} /* ecma */
-
- //FIXME Fieldbk
--//void SwFieldFormPortion::Paint( const SwTxtPaintInfo& rInf ) const
--void SwFieldFormPortion::Paint( const SwTxtPaintInfo& ) const
-+void SwFieldFormPortion::Paint( const SwTxtPaintInfo& rInf ) const
- {
--// SwTxtNode *pNd=const_cast<SwTxtNode*>(rInf.GetTxtFrm()->GetTxtNode());
--// const SwDoc *doc=pNd->GetDoc();
--// SwIndex aIndex( pNd, rInf.GetIdx() );
--// SwPosition aPosition(*pNd, aIndex);
--// pMark = dynamic_cast< doc->getFieldmarkFor(aPosition);
--// OSL_ENSURE(pMark,
--// "SwFieldFormPortion::Paint(..)"
--// " - Where is my form field bookmark???");
--
--// bool checked=(pBM!=NULL?pBM->IsChecked():false);
--// rInf.DrawCheckBox(*this , checked);
--}
-+ SwTxtNode* pNd = const_cast<SwTxtNode*>(rInf.GetTxtFrm()->GetTxtNode());
-+ const SwDoc *doc=pNd->GetDoc();
-+ SwIndex aIndex( pNd, rInf.GetIdx() );
-+ SwPosition aPosition(*pNd, aIndex);
-
--sal_Bool SwFieldFormPortion::Format( SwTxtFormatInfo &rInf )
--{
-- sal_Bool ret=0;
--// ret=SwTxtPortion::Format(rInf);
-+ IFieldmark* pBM = doc->getIDocumentMarkAccess( )->getFieldmarkFor( aPosition );
-
-- Width(rInf.GetTxtHeight());
-- Height(rInf.GetTxtHeight());
-- SetAscent(rInf.GetAscent());
-- //int h=rInf.GetTxtHeight();
-+ OSL_ENSURE( pBM,
-+ "SwFieldFormPortion::Paint(..)"
-+ " - Where is my form field bookmark???");
-+
-+ if ( pBM != NULL )
-+ {
-+ if ( pBM->GetFieldname( ).equalsAscii( ECMA_FORMCHECKBOX ) )
-+ { // a checkbox...
-+ bool checked = pBM->getParam( ECMA_FORMCHECKBOX_CHECKED ).second.compareToAscii("on") == 0;
-+ rInf.DrawCheckBox( *this , checked);
-+ }
-+ else if ( pBM->GetFieldname( ).equalsAscii( ECMA_FORMDROPDOWN ) )
-+ { // a list...
-+ rtl::OUString aTxt;
-+ rInf.DrawViewOpt( *this, POR_FLD );
-+ rInf.DrawText( aTxt, *this, 0, aTxt.getLength(), false );
-+ }
-+ else
-+ {
-+ assert(0); // unknown type...
-+ }
-+ }
-+}
-
--/*
-- Height(100);
-- SetAscent(100);
--*/
-+sal_Bool SwFieldFormPortion::Format( SwTxtFormatInfo & rInf )
-+{
-+ sal_Bool ret = 0;
-+ SwTxtNode *pNd = const_cast < SwTxtNode * >( rInf.GetTxtFrm( )->GetTxtNode( ) );
-+ const SwDoc *doc = pNd->GetDoc( );
-+ SwIndex aIndex( pNd, rInf.GetIdx( ) );
-+ SwPosition aPosition( *pNd, aIndex );
-+ IFieldmark *pBM = doc->getIDocumentMarkAccess( )->getFieldmarkFor( aPosition );
-+ ASSERT( pBM != NULL, "Where is my form field bookmark???" );
-+ if ( pBM != NULL )
-+ {
-+ if ( pBM->GetFieldname( ).equalsAscii( ECMA_FORMCHECKBOX ) )
-+ {
-+ Width( rInf.GetTxtHeight( ) );
-+ Height( rInf.GetTxtHeight( ) );
-+ SetAscent( rInf.GetAscent( ) );
-+ }
-+ else if ( pBM->GetFieldname( ).equalsAscii( ECMA_FORMDROPDOWN ) )
-+ {
-+ ::rtl::OUString aTxt;
-+ ecma::getCurrentListIndex( pBM, &aTxt );
-+ SwPosSize aPosSize = rInf.GetTxtSize( aTxt );
-+ Width( aPosSize.Width( ) );
-+ Height( aPosSize.Height( ) );
-+ SetAscent( rInf.GetAscent( ) );
-+ }
-+ else
-+ {
-+ assert( 0 ); // unknown type...
-+ }
-+ }
- return ret;
- }
-
-diff --git a/sw/source/core/unocore/unobkm.cxx b/sw/source/core/unocore/unobkm.cxx
-index 480b206..05d4c45 100644
---- a/sw/source/core/unocore/unobkm.cxx
-+++ b/sw/source/core/unocore/unobkm.cxx
-@@ -46,6 +46,7 @@
- #include <docsh.hxx>
-
-
-+using namespace ::sw::mark;
- using namespace ::com::sun::star;
- using namespace ::com::sun::star::lang;
- using namespace ::com::sun::star::uno;
-@@ -354,66 +355,85 @@ SwXFieldmark::SwXFieldmark(bool _isReplacementObject, ::sw::mark::IMark* pBkm, S
- , isReplacementObject(_isReplacementObject)
- { }
-
--void SwXFieldmark::attachToRange(const uno::Reference< text::XTextRange > & xTextRange)
-+void SwXFieldmark::attachToRange( const uno::Reference < text::XTextRange >& xTextRange )
- throw( lang::IllegalArgumentException, uno::RuntimeException )
- {
-- attachToRangeEx(xTextRange, (isReplacementObject?IDocumentMarkAccess::CHECKBOX_FIELDMARK:IDocumentMarkAccess::TEXT_FIELDMARK));
-+ attachToRangeEx( xTextRange,
-+ ( isReplacementObject ? IDocumentMarkAccess::CHECKBOX_FIELDMARK : IDocumentMarkAccess::TEXT_FIELDMARK ) );
- }
-
--::rtl::OUString SwXFieldmark::getDescription(void) throw( ::com::sun::star::uno::RuntimeException )
-+::rtl::OUString SwXFieldmark::getFieldType( void )
-+ throw( ::com::sun::star::uno::RuntimeException )
- {
-- vos::OGuard aGuard(Application::GetSolarMutex());
--// TODO implement...
--// if(!GetBookmark())
-- ::sw::mark::IFieldmark const * const pMark =
-- dynamic_cast< ::sw::mark::IFieldmark const * const>(GetBookmark());
-- if(!pMark)
-- throw uno::RuntimeException();
-- return pMark->GetFieldHelptext();
-+ vos::OGuard aGuard( Application::GetSolarMutex( ) );
-+ IMark* pMark = const_cast< IMark* >( GetBookmark( ) );
-+ IFieldmark *pBkm = dynamic_cast< IFieldmark* > ( pMark );
-+ if ( pBkm )
-+ return pBkm->GetFieldname( );
-+ else
-+ throw uno::RuntimeException( );
- }
-
--::sal_Int16 SAL_CALL SwXFieldmark::getType() throw (::com::sun::star::uno::RuntimeException)
-+void SwXFieldmark::setFieldType( const::rtl::OUString & fieldType )
-+ throw( ::com::sun::star::uno::RuntimeException )
- {
-- vos::OGuard aGuard(Application::GetSolarMutex());
-- ::sw::mark::ICheckboxFieldmark const * const pAsCheckbox =
-- dynamic_cast< ::sw::mark::ICheckboxFieldmark const * const>(GetBookmark());
-- if(pAsCheckbox)
-- return 1;
-- return 0;
-+ vos::OGuard aGuard( Application::GetSolarMutex( ) );
-+ IMark* pMark = const_cast< IMark* >( GetBookmark( ) );
-+ IFieldmark *pBkm = dynamic_cast< IFieldmark* >( pMark );
-+ if ( pBkm )
-+ pBkm->SetFieldname( fieldType );
-+ else
-+ throw uno::RuntimeException( );
- }
-
--::sal_Int16 SAL_CALL SwXFieldmark::getRes() throw (::com::sun::star::uno::RuntimeException)
-+sal_Int16 SwXFieldmark::getParamCount( )
-+ throw( ::com::sun::star::uno::RuntimeException )
- {
-- vos::OGuard aGuard(Application::GetSolarMutex());
-- ::sw::mark::ICheckboxFieldmark const * const pAsCheckbox =
-- dynamic_cast< ::sw::mark::ICheckboxFieldmark const * const>(GetBookmark());
-- if(pAsCheckbox && pAsCheckbox->IsChecked())
-- return 1;
-- return 0;
-+ vos::OGuard aGuard( Application::GetSolarMutex( ) );
-+ IMark* pMark = const_cast< IMark* >( GetBookmark( ) );
-+ IFieldmark *pBkm = dynamic_cast< IFieldmark* >( pMark );
-+ if ( pBkm )
-+ return pBkm->getNumOfParams( );
-+ else
-+ throw uno::RuntimeException( );
- }
-
--//FIXME Remove Method
--void SAL_CALL SwXFieldmark::setType( ::sal_Int16 ) throw (::com::sun::star::uno::RuntimeException)
-+rtl::OUString SwXFieldmark::getParamName( sal_Int16 i )
-+ throw( ::com::sun::star::uno::RuntimeException )
- {
-- vos::OGuard aGuard(Application::GetSolarMutex());
-- throw uno::RuntimeException();
-+ vos::OGuard aGuard( Application::GetSolarMutex( ) );
-+ IMark* pMark = const_cast< IMark* >( GetBookmark( ) );
-+ IFieldmark *pBkm = dynamic_cast< IFieldmark* >( pMark );
-+ if ( pBkm )
-+ return pBkm->getParam( i ).first;
-+ else
-+ throw uno::RuntimeException( );
- }
-
--//FIXME Remove Method
--void SAL_CALL SwXFieldmark::setRes( ::sal_Int16 ) throw (::com::sun::star::uno::RuntimeException)
-+::rtl::OUString SwXFieldmark::getParamValue( ::sal_Int16 i )
-+ throw( ::com::sun::star::uno::RuntimeException )
- {
-- vos::OGuard aGuard(Application::GetSolarMutex());
-- throw uno::RuntimeException();
-+ vos::OGuard aGuard( Application::GetSolarMutex( ) );
-+ IMark* pMark = const_cast< IMark* >( GetBookmark( ) );
-+ IFieldmark *pBkm = dynamic_cast< IFieldmark* >( pMark );
-+ if ( pBkm )
-+ return pBkm->getParam( i ).second;
-+ else
-+ throw uno::RuntimeException( );
- }
-
--void SAL_CALL SwXFieldmark::setDescription( const ::rtl::OUString& description )
-- throw (::com::sun::star::uno::RuntimeException)
-+void SwXFieldmark::addParam( const ::rtl::OUString & name,
-+ const ::rtl::OUString & value,
-+ sal_Bool replaceExisting )
-+ throw( ::com::sun::star::uno::RuntimeException )
- {
-- vos::OGuard aGuard(Application::GetSolarMutex());
-- const ::sw::mark::IFieldmark* pMark =
-- dynamic_cast<const ::sw::mark::IFieldmark*>(GetBookmark());
-- if(pMark)
-- const_cast< ::sw::mark::IFieldmark*>(pMark)->SetFieldHelptext(description);
-+ vos::OGuard aGuard( Application::GetSolarMutex( ) );
-+ IMark* pMark = const_cast< IMark* >( GetBookmark( ) );
-+ IFieldmark *pBkm = dynamic_cast< IFieldmark* >( pMark );
-+ if ( pBkm )
-+ pBkm->addParam( const_cast< rtl::OUString& >( name ),
-+ const_cast< rtl::OUString& >( value ),
-+ replaceExisting );
- else
-- throw uno::RuntimeException();
-+ throw uno::RuntimeException( );
- }
-diff --git a/sw/source/filter/ww8/wrtw8nds.cxx b/sw/source/filter/ww8/wrtw8nds.cxx
-index a082a55..b299867 100644
---- a/sw/source/filter/ww8/wrtw8nds.cxx
-+++ b/sw/source/filter/ww8/wrtw8nds.cxx
-@@ -111,8 +111,48 @@ using namespace ::com::sun::star;
- using namespace ::com::sun::star::i18n;
- using namespace sw::util;
- using namespace sw::types;
-+using namespace sw::mark;
- using namespace nsFieldFlags;
-
-+
-+static String lcl_getFieldCode( const IFieldmark* pFieldmark ) {
-+ ASSERT(pFieldmark!=NULL, "where is my fieldmark???");
-+ if ( pFieldmark->GetFieldname( ).equalsAscii( ECMA_FORMTEXT ) ) {
-+ return String::CreateFromAscii(" FORMTEXT ");
-+ } else if ( pFieldmark->GetFieldname( ).equalsAscii( ECMA_FORMDROPDOWN ) ) {
-+ return String::CreateFromAscii(" FORMDROPDOWN ");
-+ } else if ( pFieldmark->GetFieldname( ).equalsAscii( ECMA_FORMCHECKBOX ) ) {
-+ return String::CreateFromAscii(" FORMCHECKBOX ");
-+ } else if ( pFieldmark->GetFieldname( ).equalsAscii( ECMA_TOC ) ) {
-+ return String::CreateFromAscii(" TOC ");
-+ } else if ( pFieldmark->GetFieldname( ).equalsAscii( ECMA_HYPERLINK ) ) {
-+ return String::CreateFromAscii(" HYPERLINK ");
-+ } else if ( pFieldmark->GetFieldname( ).equalsAscii( ECMA_PAGEREF ) ) {
-+ return String::CreateFromAscii(" PAGEREF ");
-+ } else {
-+ return pFieldmark->GetFieldname();
-+ }
-+}
-+
-+ww::eField lcl_getFieldId( const IFieldmark* pFieldmark ) {
-+ ASSERT(pFieldmark!=NULL, "where is my fieldmark???");
-+ if ( pFieldmark->GetFieldname( ).equalsAscii( ECMA_FORMTEXT ) ) {
-+ return ww::eFORMTEXT;
-+ } else if ( pFieldmark->GetFieldname( ).equalsAscii( ECMA_FORMDROPDOWN ) ) {
-+ return ww::eFORMDROPDOWN;
-+ } else if ( pFieldmark->GetFieldname( ).equalsAscii( ECMA_FORMCHECKBOX ) ) {
-+ return ww::eFORMCHECKBOX;
-+ } else if ( pFieldmark->GetFieldname( ).equalsAscii( ECMA_TOC ) ) {
-+ return ww::eTOC;
-+ } else if ( pFieldmark->GetFieldname( ).equalsAscii( ECMA_HYPERLINK ) ) {
-+ return ww::eHYPERLINK;
-+ } else if ( pFieldmark->GetFieldname( ).equalsAscii( ECMA_PAGEREF ) ) {
-+ return ww::ePAGEREF;
-+ } else {
-+ return ww::eUNKNOWN;
-+ }
-+}
-+
- /* */
-
- MSWordAttrIter::MSWordAttrIter( MSWordExportBase& rExport )
-@@ -263,22 +303,40 @@ SwAttrIter::SwAttrIter(MSWordExportBase& rWr, const SwTxtNode& rTxtNd) :
- nAktSwPos = SearchNext(1);
- }
-
-+xub_StrLen lcl_getMinPos( xub_StrLen pos1, xub_StrLen pos2 )
-+{
-+ xub_StrLen min = STRING_NOTFOUND;
-+ if ( pos1 == STRING_NOTFOUND && pos2 != STRING_NOTFOUND )
-+ min = pos2;
-+ else if ( pos2 == STRING_NOTFOUND && pos1 != STRING_NOTFOUND )
-+ min = pos1;
-+ else if ( pos2 != STRING_NOTFOUND && pos2 != STRING_NOTFOUND )
-+ {
-+ if ( pos1 < pos2 )
-+ min = pos1;
-+ else
-+ min = pos2;
-+ }
-+
-+ return min;
-+}
-+
- xub_StrLen SwAttrIter::SearchNext( xub_StrLen nStartPos )
- {
- xub_StrLen nPos;
- xub_StrLen nMinPos = STRING_MAXLEN;
-+ xub_StrLen i=0;
-+
- const String aTxt = rNd.GetTxt();
-- xub_StrLen pos = aTxt.Search(CH_TXT_ATR_FIELDSTART, nStartPos);
-- if( pos==STRING_NOTFOUND )
-- {
-- pos = aTxt.Search(CH_TXT_ATR_FIELDEND, nStartPos);
-- if( pos==STRING_NOTFOUND )
-- pos = aTxt.Search(CH_TXT_ATR_FORMELEMENT, nStartPos);
-- }
-- if( pos!=STRING_NOTFOUND )
-- nMinPos=pos;
-+ xub_StrLen fieldEndPos = aTxt.Search(CH_TXT_ATR_FIELDEND, nStartPos);
-+ xub_StrLen fieldStartPos = aTxt.Search(CH_TXT_ATR_FIELDSTART, nStartPos);
-+ xub_StrLen formElementPos = aTxt.Search(CH_TXT_ATR_FORMELEMENT, nStartPos);
-
-- xub_StrLen i=0;
-+ xub_StrLen pos = lcl_getMinPos( fieldEndPos, fieldStartPos );
-+ pos = lcl_getMinPos( pos, formElementPos );
-+
-+ if (pos!=STRING_NOTFOUND)
-+ nMinPos=pos;
-
- // first the redline, then the attributes
- if( pCurRedline )
-@@ -1705,12 +1763,14 @@ void MSWordExportBase::OutputTextNode( const SwTxtNode& rNode )
- ::sw::mark::IFieldmark const * const pFieldmark = pMarkAccess->getFieldmarkFor( aPosition );
- OSL_ENSURE( pFieldmark, "Looks like this doc is broken...; where is the Fieldmark for the FIELDSTART??" );
-
-- if ( pFieldmark )
-- AppendBookmark( pFieldmark->GetName(), true );
-- OutputField( NULL, ww::eFORMTEXT, String::CreateFromAscii( " FORMTEXT " ), WRITEFIELD_START | WRITEFIELD_CMD_START );
-- if ( pFieldmark )
-+ if ( pFieldmark->GetFieldname().equalsAscii( ECMA_FORMTEXT ) )
-+ AppendBookmark( pFieldmark->GetName(), false );
-+ OutputField( NULL, lcl_getFieldId( pFieldmark ), lcl_getFieldCode( pFieldmark ), WRITEFIELD_START | WRITEFIELD_CMD_START );
-+ if ( pFieldmark->GetFieldname( ).equalsAscii( ECMA_FORMTEXT ) )
- WriteFormData( *pFieldmark );
-- OutputField( NULL, ww::eFORMTEXT, String(), WRITEFIELD_CMD_END );
-+ else if ( pFieldmark->GetFieldname( ).equalsAscii( ECMA_HYPERLINK ) )
-+ WriteHyperlinkData( *pFieldmark );
-+ OutputField( NULL, lcl_getFieldId( pFieldmark ), String(), WRITEFIELD_CMD_END );
- }
- else if ( ch == CH_TXT_ATR_FIELDEND )
- {
-@@ -1718,8 +1778,8 @@ void MSWordExportBase::OutputTextNode( const SwTxtNode& rNode )
- ::sw::mark::IFieldmark const * const pFieldmark = pMarkAccess->getFieldmarkFor( aPosition );
- OSL_ENSURE( pFieldmark, "Looks like this doc is broken...; where is the Fieldmark for the FIELDSTART??" );
-
-- OutputField( NULL, ww::eFORMTEXT, String(), WRITEFIELD_CLOSE );
-- if ( pFieldmark )
-+ OutputField( NULL, lcl_getFieldId( pFieldmark ), String(), WRITEFIELD_CLOSE );
-+ if ( pFieldmark->GetFieldname().equalsAscii( ECMA_FORMTEXT ) )
- AppendBookmark( pFieldmark->GetName(), false );
- }
- else if ( ch == CH_TXT_ATR_FORMELEMENT )
-@@ -1728,13 +1788,18 @@ void MSWordExportBase::OutputTextNode( const SwTxtNode& rNode )
- ::sw::mark::IFieldmark const * const pFieldmark = pMarkAccess->getFieldmarkFor( aPosition );
- OSL_ENSURE( pFieldmark, "Looks like this doc is broken...; where is the Fieldmark for the FIELDSTART??" );
-
-- if ( pFieldmark )
-- AppendBookmark( pFieldmark->GetName(), true );
-- OutputField( NULL, ww::eFORMCHECKBOX, String::CreateFromAscii( " FORMCHECKBOX " ), WRITEFIELD_START | WRITEFIELD_CMD_START );
-- if ( pFieldmark )
-+ bool isEcma = pFieldmark->GetFieldname( ).equalsAscii( ECMA_FORMDROPDOWN ) ||
-+ pFieldmark->GetFieldname( ).equalsAscii( ECMA_FORMCHECKBOX );
-+
-+ if ( isEcma )
-+ AppendBookmark( pFieldmark->GetName(), 0 );
-+ OutputField( NULL, lcl_getFieldId( pFieldmark ),
-+ lcl_getFieldCode( pFieldmark ),
-+ WRITEFIELD_START | WRITEFIELD_CMD_START );
-+ if ( isEcma )
- WriteFormData( *pFieldmark );
-- OutputField( NULL, ww::eFORMCHECKBOX, String(), WRITEFIELD_CMD_END | WRITEFIELD_CLOSE );
-- if ( pFieldmark )
-+ OutputField( NULL, lcl_getFieldId( pFieldmark ), String(), WRITEFIELD_CLOSE );
-+ if ( isEcma )
- AppendBookmark( pFieldmark->GetName(), false );
- }
- nLen -= static_cast< USHORT >( ofs );
-diff --git a/sw/source/filter/ww8/wrtww8.cxx b/sw/source/filter/ww8/wrtww8.cxx
-index 56987ff..bb90047 100644
---- a/sw/source/filter/ww8/wrtww8.cxx
-+++ b/sw/source/filter/ww8/wrtww8.cxx
-@@ -102,6 +102,7 @@
- #include "ww8attributeoutput.hxx"
-
- #include <IDocumentMarkAccess.hxx>
-+#include <ecmaflds.hxx>
-
- #include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
- #include <com/sun/star/document/XDocumentProperties.hpp>
-@@ -3517,11 +3518,20 @@ void WW8Export::WriteFormData( const ::sw::mark::IFieldmark& rFieldmark )
- const ::sw::mark::IFieldmark* pFieldmark = &rFieldmark;
- const ::sw::mark::ICheckboxFieldmark* pAsCheckbox = dynamic_cast< const ::sw::mark::ICheckboxFieldmark* >( pFieldmark );
-
-+
-+ ASSERT(rFieldmark.GetFieldname().equalsAscii( ECMA_FORMTEXT ) || rFieldmark.GetFieldname().equalsAscii( ECMA_FORMDROPDOWN ) || rFieldmark.GetFieldname().equalsAscii( ECMA_FORMCHECKBOX ), "Unknown field type!!!");
-+ if ( ! ( rFieldmark.GetFieldname().equalsAscii( ECMA_FORMTEXT ) ||
-+ rFieldmark.GetFieldname().equalsAscii( ECMA_FORMDROPDOWN ) ||
-+ rFieldmark.GetFieldname().equalsAscii( ECMA_FORMCHECKBOX ) ) )
-+ return;
-+
- int type = 0; // TextFieldmark
- if ( pAsCheckbox )
- type = 1;
-+ if ( rFieldmark.GetFieldname().equalsAscii( ECMA_FORMDROPDOWN ) )
-+ type=2;
-
-- const ::rtl::OUString ffname = rFieldmark.GetFieldname();
-+ const String ffname = rFieldmark.getParam("name").second;
-
- ULONG nDataStt = pDataStrm->Tell();
- pChpPlc->AppendFkpEntry(Strm().Tell());
-@@ -3543,15 +3553,28 @@ void WW8Export::WriteFormData( const ::sw::mark::IFieldmark& rFieldmark )
- sal_uInt8 aFldHeader[] =
- {
- 0xFF, 0xFF, 0xFF, 0xFF, // Unicode Marker...
-- 0, 0, 0, 0//, 0, 0, 0, 0
-+ 0, 0, 0, 0, 0, 0 //, 0, 0
- };
-
- aFldHeader[4] |= (type & 0x03);
- int ffres = 0; // rFieldmark.GetFFRes();
- if ( pAsCheckbox && pAsCheckbox->IsChecked() )
- ffres = 1;
-+ else if ( type == 2 )
-+ ffres = rFieldmark.getParam( ECMA_FORMDROPDOWN_RESULT, "0" ).second.toInt32();
- aFldHeader[4] |= ( (ffres<<2) & 0x7C );
-
-+ std::vector< ::rtl::OUString > aListItems;
-+ if (type==2)
-+ {
-+ aFldHeader[5] |= 0x80; // ffhaslistbox
-+ for ( int i = 0; i < rFieldmark.getNumOfParams() ; i++ )
-+ {
-+ if (rFieldmark.getParam(i).first.compareToAscii(ECMA_FORMDROPDOWN_LISTENTRY)==0)
-+ aListItems.push_back(rFieldmark.getParam(i).second);
-+ }
-+ }
-+
- const ::rtl::OUString ffdeftext;
- const ::rtl::OUString ffformat;
- const ::rtl::OUString ffhelptext;
-@@ -3559,6 +3582,7 @@ void WW8Export::WriteFormData( const ::sw::mark::IFieldmark& rFieldmark )
- const ::rtl::OUString ffentrymcr;
- const ::rtl::OUString ffexitmcr;
-
-+
- const sal_uInt8 aFldData[] =
- {
- 0,0,0,0, // len of struct
-@@ -3571,13 +3595,22 @@ void WW8Export::WriteFormData( const ::sw::mark::IFieldmark& rFieldmark )
- };
- int slen = sizeof( aFldData )
- + sizeof( aFldHeader )
-- + 2*ffname.getLength() + 4
-+ + 2*ffname.Len() + 4
- + 2*ffdeftext.getLength() + 4
- + 2*ffformat.getLength() + 4
- + 2*ffhelptext.getLength() + 4
- + 2*ffstattext.getLength() + 4
- + 2*ffentrymcr.getLength() + 4
- + 2*ffexitmcr.getLength() + 4;
-+ if ( type==2 ) {
-+ slen += 2; // for 0xFF, 0xFF
-+ slen += 4; // for num of list items
-+ const int items = aListItems.size();
-+ for( int i = 0; i < items; i++ ) {
-+ rtl::OUString item = aListItems[i];
-+ slen += 2 * item.getLength() + 2;
-+ }
-+ }
- #ifdef OSL_BIGENDIAN
- slen = SWAPLONG( slen );
- #endif // OSL_BIGENDIAN
-@@ -3588,6 +3621,7 @@ void WW8Export::WriteFormData( const ::sw::mark::IFieldmark& rFieldmark )
-
- len = sizeof( aFldHeader );
- OSL_ENSURE( len == 8, "SwWW8Writer::WriteFormData(..) - wrong aFldHeader length" );
-+
- pDataStrm->Write( aFldHeader, len );
-
- SwWW8Writer::WriteString_xstz( *pDataStrm, ffname, true ); // Form field name
-@@ -3602,11 +3636,20 @@ void WW8Export::WriteFormData( const ::sw::mark::IFieldmark& rFieldmark )
- SwWW8Writer::WriteString_xstz( *pDataStrm, String( ffstattext ), true );
- SwWW8Writer::WriteString_xstz( *pDataStrm, String( ffentrymcr ), true );
- SwWW8Writer::WriteString_xstz( *pDataStrm, String( ffexitmcr ), true );
--// if (type==2) {
--// // 0xFF, 0xFF
--// // sal_uInt32 number of strings
--// // (sal_uInt16 len; sal_uInt16 unicode char[len])*num of strings
--// }
-+ if (type==2) {
-+ *pDataStrm<<(sal_uInt16)0xFFFF;
-+ const int items=aListItems.size();
-+ *pDataStrm<<(sal_uInt32)items;
-+ for(int i=0;i<items;i++) {
-+ rtl::OUString item=aListItems[i];
-+ SwWW8Writer::WriteString_xstz( *pDataStrm, item, false );
-+ }
-+ }
-+}
-+
-+void WW8Export::WriteHyperlinkData( const sw::mark::IFieldmark& rFieldmark )
-+{
-+ //@TODO implement me !!!
- }
-
- void WW8AttributeOutput::TableNodeInfoInner( ww8::WW8TableNodeInfoInner::Pointer_t pNodeInfoInner )
-diff --git a/sw/source/filter/ww8/wrtww8.hxx b/sw/source/filter/ww8/wrtww8.hxx
-index 71f433b..d70dfaa 100644
---- a/sw/source/filter/ww8/wrtww8.hxx
-+++ b/sw/source/filter/ww8/wrtww8.hxx
-@@ -706,6 +706,7 @@ public:
-
- /// Write the data of the form field
- virtual void WriteFormData( const ::sw::mark::IFieldmark& rFieldmark ) = 0;
-+ virtual void WriteHyperlinkData( const ::sw::mark::IFieldmark& rFieldmark ) = 0;
-
- virtual void DoComboBox(const rtl::OUString &rName,
- const rtl::OUString &rHelp,
-@@ -1073,6 +1074,7 @@ public:
-
- /// Write the data of the form field
- virtual void WriteFormData( const ::sw::mark::IFieldmark& rFieldmark );
-+ virtual void WriteHyperlinkData( const ::sw::mark::IFieldmark& rFieldmark );
-
- /// Fields.
- WW8_WrPlcFld* CurrentFieldPlc() const;
-diff --git a/sw/source/filter/ww8/ww8par.cxx b/sw/source/filter/ww8/ww8par.cxx
-index 6e82b97..c7cb580 100644
---- a/sw/source/filter/ww8/ww8par.cxx
-+++ b/sw/source/filter/ww8/ww8par.cxx
-@@ -1598,7 +1598,6 @@ WW8ReaderSave::WW8ReaderSave(SwWW8ImplReader* pRdr ,WW8_CP nStartCp) :
- maOldApos.push_back(false);
- maOldApos.swap(pRdr->maApos);
- maOldFieldStack.swap(pRdr->maFieldStack);
-- maFieldCtxStack.swap(pRdr->maNewFieldCtxStack);
- }
-
- void WW8ReaderSave::Restore( SwWW8ImplReader* pRdr )
-@@ -1645,7 +1644,6 @@ void WW8ReaderSave::Restore( SwWW8ImplReader* pRdr )
- pRdr->pPlcxMan->RestoreAllPLCFx(maPLCFxSave);
- pRdr->maApos.swap(maOldApos);
- pRdr->maFieldStack.swap(maOldFieldStack);
-- pRdr->maNewFieldCtxStack.swap(maFieldCtxStack);
- }
-
- void SwWW8ImplReader::Read_HdFtFtnText( const SwNodeIndex* pSttIdx,
-@@ -2762,29 +2760,6 @@ bool SwWW8ImplReader::ReadChar(long nPosCp, long nCpOfs)
- case 0x15:
... etc. - the rest is truncated
More information about the ooo-build-commit
mailing list