summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--starmath/inc/dialog.hxx85
-rw-r--r--starmath/inc/node.hxx13
-rw-r--r--starmath/inc/parse.hxx2
-rw-r--r--starmath/inc/smmod.hxx5
-rw-r--r--starmath/inc/starmath.hrc2
-rw-r--r--starmath/inc/symbol.hxx176
-rw-r--r--starmath/prj/build.lst1
-rw-r--r--starmath/prj/d.lst3
-rw-r--r--starmath/qa/unoapi/Test.java51
-rw-r--r--starmath/qa/unoapi/knownissues.xcl5
-rw-r--r--starmath/qa/unoapi/makefile.mk30
-rw-r--r--starmath/source/cfgitem.cxx18
-rw-r--r--starmath/source/cfgitem.hxx4
-rw-r--r--starmath/source/commands.src7
-rw-r--r--starmath/source/dialog.cxx329
-rw-r--r--starmath/source/document.cxx24
-rw-r--r--starmath/source/edit.cxx19
-rw-r--r--starmath/source/makefile.mk28
-rw-r--r--starmath/source/node.cxx11
-rw-r--r--starmath/source/parse.cxx85
-rw-r--r--starmath/source/rect.cxx2
-rw-r--r--starmath/source/smdetect.cxx2
-rw-r--r--starmath/source/smdll.cxx5
-rw-r--r--starmath/source/smmod.cxx12
-rw-r--r--starmath/source/smres.src4
-rw-r--r--starmath/source/symbol.cxx559
-rw-r--r--starmath/source/unomodel.cxx25
-rw-r--r--starmath/source/view.cxx23
-rw-r--r--starmath/uiconfig/smath/accelerator/en-GB/default.xml14
-rw-r--r--starmath/uiconfig/smath/accelerator/en-US/default.xml14
-rw-r--r--starmath/uiconfig/smath/menubar/menubar.xml224
-rw-r--r--starmath/util/makefile.mk6
-rw-r--r--starmath/util/sm.map8
-rw-r--r--starmath/util/smd.map8
-rw-r--r--sw/Library_sw.mk21
-rw-r--r--sw/Package_uiconfig.mk24
-rw-r--r--sw/inc/AnnotationWin.hxx83
-rw-r--r--sw/inc/PostItMgr.hxx132
-rw-r--r--sw/inc/SidebarWin.hxx274
-rw-r--r--sw/inc/SidebarWindowsTypes.hxx (renamed from sw/inc/warnpassword.hxx)32
-rw-r--r--sw/inc/SwNumberTree.hxx7
-rw-r--r--sw/inc/access.hrc33
-rw-r--r--sw/inc/accmap.hxx107
-rw-r--r--sw/inc/cmdid.h2
-rw-r--r--sw/inc/crsrsh.hxx9
-rw-r--r--sw/inc/doc.hxx12
-rw-r--r--sw/inc/dochdl.hrc4
-rwxr-xr-xsw/inc/docsh.hxx9
-rw-r--r--sw/inc/editsh.hxx19
-rw-r--r--sw/inc/fesh.hxx8
-rw-r--r--sw/inc/fldbas.hxx15
-rw-r--r--sw/inc/htmltbl.hxx2
-rw-r--r--sw/inc/index.hxx2
-rw-r--r--sw/inc/ndarr.hxx34
-rw-r--r--sw/inc/ndtxt.hxx40
-rw-r--r--sw/inc/node.hxx38
-rw-r--r--sw/inc/pch/precompiled_sw.hxx2
-rw-r--r--sw/inc/postit.hxx413
-rw-r--r--sw/inc/postithelper.hxx96
-rwxr-xr-xsw/inc/printdata.hxx9
-rw-r--r--sw/inc/rcid.hrc7
-rw-r--r--sw/inc/rolbck.hxx23
-rw-r--r--sw/inc/section.hxx255
-rw-r--r--sw/inc/shellio.hxx21
-rw-r--r--sw/inc/sw_primitivetypes2d.hxx6
-rw-r--r--sw/inc/swabstdlg.hxx4
-rw-r--r--sw/inc/swcrsr.hxx9
-rw-r--r--sw/inc/swmodule.hxx2
-rw-r--r--sw/inc/swtable.hxx19
-rw-r--r--sw/inc/swtblfmt.hxx2
-rw-r--r--sw/inc/txtfld.hxx3
-rw-r--r--sw/inc/txtftn.hxx2
-rw-r--r--sw/inc/undobj.hxx152
-rw-r--r--sw/inc/unocrsrhelper.hxx7
-rw-r--r--sw/inc/unoflatpara.hxx12
-rw-r--r--sw/inc/unoidx.hxx12
-rw-r--r--sw/inc/unoprnms.hxx5
-rw-r--r--sw/inc/unosection.hxx12
-rw-r--r--sw/inc/unotext.hxx7
-rw-r--r--sw/inc/unotextmarkup.hxx1
-rw-r--r--sw/inc/unotextrange.hxx2
-rwxr-xr-xsw/inc/unotxdoc.hxx3
-rwxr-xr-xsw/inc/viewopt.hxx14
-rwxr-xr-xsw/inc/viewsh.hxx17
-rw-r--r--sw/inc/viscrs.hxx2
-rw-r--r--sw/prj/d.lst54
-rwxr-xr-xsw/qa/complex/writer/TextPortionEnumerationTest.java409
-rw-r--r--sw/qa/complex/writer/testdocuments/TESTXMLID.odtbin0 -> 10879 bytes
-rw-r--r--sw/qa/core/export.map2
-rw-r--r--sw/qa/core/makefile.mk2
-rw-r--r--sw/qa/unoapi/Test.java51
-rw-r--r--sw/qa/unoapi/knownissues.xcl24
-rw-r--r--sw/qa/unoapi/makefile.mk31
-rw-r--r--sw/qa/unoapi/sw.sce38
-rw-r--r--sw/sdi/_textsh.sdi29
-rw-r--r--sw/sdi/_viewsh.sdi2
-rwxr-xr-xsw/sdi/annotsh.sdi30
-rw-r--r--sw/sdi/drwtxtsh.sdi28
-rwxr-xr-x[-rw-r--r--]sw/sdi/swriter.sdi27
-rw-r--r--sw/sdi/swslots.src1488
-rw-r--r--sw/source/core/SwNumberTree/SwNodeNum.cxx2
-rw-r--r--sw/source/core/SwNumberTree/SwNumberTree.cxx13
-rw-r--r--sw/source/core/access/acccell.cxx30
-rw-r--r--sw/source/core/access/acccell.hxx4
-rw-r--r--sw/source/core/access/acccontext.cxx304
-rw-r--r--sw/source/core/access/acccontext.hxx33
-rw-r--r--sw/source/core/access/accdoc.cxx4
-rw-r--r--sw/source/core/access/accfootnote.hxx10
-rw-r--r--sw/source/core/access/accframe.cxx266
-rw-r--r--sw/source/core/access/accframe.hxx122
-rw-r--r--sw/source/core/access/accframebase.hxx10
-rw-r--r--sw/source/core/access/accfrmobj.cxx401
-rw-r--r--sw/source/core/access/accfrmobj.hxx214
-rw-r--r--sw/source/core/access/accfrmobjmap.cxx154
-rw-r--r--sw/source/core/access/accfrmobjmap.hxx92
-rw-r--r--sw/source/core/access/accfrmobjslist.cxx129
-rw-r--r--sw/source/core/access/accfrmobjslist.hxx189
-rw-r--r--sw/source/core/access/accmap.cxx526
-rw-r--r--sw/source/core/access/accpara.cxx452
-rw-r--r--sw/source/core/access/accpara.hxx39
-rw-r--r--sw/source/core/access/accportions.cxx17
-rw-r--r--sw/source/core/access/accportions.hxx1
-rw-r--r--sw/source/core/access/accselectionhelper.cxx77
-rw-r--r--sw/source/core/access/acctable.cxx195
-rw-r--r--sw/source/core/access/acctable.hxx16
-rw-r--r--sw/source/core/access/makefile.mk6
-rw-r--r--sw/source/core/access/parachangetrackinginfo.cxx231
-rw-r--r--sw/source/core/access/parachangetrackinginfo.hxx59
-rw-r--r--sw/source/core/access/textmarkuphelper.cxx55
-rw-r--r--sw/source/core/access/textmarkuphelper.hxx29
-rw-r--r--sw/source/core/bastyp/index.cxx2
-rw-r--r--sw/source/core/bastyp/swrect.cxx2
-rw-r--r--sw/source/core/crsr/crsrsh.cxx13
-rw-r--r--sw/source/core/crsr/crstrvl.cxx43
-rw-r--r--sw/source/core/crsr/crstrvl1.cxx24
-rw-r--r--sw/source/core/crsr/findtxt.cxx9
-rw-r--r--sw/source/core/crsr/swcrsr.cxx92
-rw-r--r--sw/source/core/crsr/trvlfnfl.cxx8
-rw-r--r--sw/source/core/crsr/trvlreg.cxx2
-rw-r--r--sw/source/core/crsr/viscrs.cxx10
-rw-r--r--sw/source/core/doc/dbgoutsw.cxx1
-rwxr-xr-xsw/source/core/doc/doc.cxx69
-rw-r--r--sw/source/core/doc/docbm.cxx5
-rw-r--r--sw/source/core/doc/doccomp.cxx24
-rw-r--r--sw/source/core/doc/docdde.cxx4
-rw-r--r--sw/source/core/doc/docedt.cxx29
-rw-r--r--sw/source/core/doc/docfld.cxx20
-rw-r--r--sw/source/core/doc/docfmt.cxx14
-rw-r--r--sw/source/core/doc/docglbl.cxx36
-rw-r--r--sw/source/core/doc/doclay.cxx2
-rw-r--r--sw/source/core/doc/docnew.cxx237
-rw-r--r--sw/source/core/doc/docredln.cxx22
-rw-r--r--sw/source/core/doc/doctxm.cxx77
-rw-r--r--sw/source/core/doc/extinput.cxx4
-rw-r--r--sw/source/core/doc/htmltbl.cxx34
-rw-r--r--sw/source/core/doc/number.cxx10
-rw-r--r--sw/source/core/docnode/ndcopy.cxx6
-rw-r--r--sw/source/core/docnode/ndsect.cxx263
-rw-r--r--sw/source/core/docnode/ndtbl.cxx64
-rw-r--r--sw/source/core/docnode/node2lay.cxx4
-rw-r--r--sw/source/core/docnode/nodes.cxx18
-rw-r--r--sw/source/core/docnode/section.cxx499
-rw-r--r--sw/source/core/docnode/swbaslnk.cxx10
-rw-r--r--sw/source/core/draw/dview.cxx5
-rw-r--r--sw/source/core/edit/edattr.cxx10
-rw-r--r--sw/source/core/edit/edfld.cxx5
-rw-r--r--sw/source/core/edit/edglbldc.cxx2
-rw-r--r--sw/source/core/edit/editsh.cxx29
-rw-r--r--sw/source/core/edit/edlingu.cxx58
-rw-r--r--sw/source/core/edit/edsect.cxx16
-rw-r--r--sw/source/core/edit/edtox.cxx7
-rw-r--r--sw/source/core/fields/cellfml.cxx3
-rw-r--r--sw/source/core/fields/fldbas.cxx17
-rw-r--r--sw/source/core/fields/postithelper.cxx88
-rw-r--r--sw/source/core/frmedt/fecopy.cxx13
-rw-r--r--sw/source/core/frmedt/fefly1.cxx6
-rw-r--r--sw/source/core/frmedt/feshview.cxx362
-rw-r--r--sw/source/core/inc/SwGrammarMarkUp.hxx2
-rw-r--r--sw/source/core/inc/cellfrm.hxx4
-rw-r--r--sw/source/core/inc/doctxm.hxx2
-rw-r--r--sw/source/core/inc/frame.hxx4
-rw-r--r--sw/source/core/inc/pagefrm.hxx6
-rwxr-xr-xsw/source/core/inc/unometa.hxx17
-rw-r--r--sw/source/core/inc/viewimp.hxx15
-rw-r--r--sw/source/core/inc/wrong.hxx8
-rw-r--r--sw/source/core/layout/layact.cxx42
-rw-r--r--sw/source/core/layout/pagechg.cxx22
-rw-r--r--sw/source/core/layout/paintfrm.cxx2
-rw-r--r--sw/source/core/layout/tabfrm.cxx206
-rw-r--r--sw/source/core/layout/wsfrm.cxx22
-rw-r--r--sw/source/core/swg/SwXMLSectionList.cxx26
-rw-r--r--sw/source/core/table/swtable.cxx157
-rw-r--r--sw/source/core/text/EnhancedPDFExportHelper.cxx11
-rw-r--r--sw/source/core/text/SwGrammarMarkUp.cxx15
-rw-r--r--sw/source/core/text/inftxt.cxx12
-rw-r--r--sw/source/core/text/inftxt.hxx6
-rw-r--r--sw/source/core/text/itrcrsr.cxx40
-rw-r--r--sw/source/core/text/itrform2.cxx3
-rw-r--r--sw/source/core/text/porfld.cxx6
-rw-r--r--sw/source/core/text/porlay.cxx5
-rw-r--r--sw/source/core/text/portxt.cxx8
-rw-r--r--sw/source/core/text/txtfly.cxx78
-rw-r--r--sw/source/core/text/txtfrm.cxx7
-rw-r--r--sw/source/core/text/txttab.cxx12
-rw-r--r--sw/source/core/tox/txmsrt.cxx5
-rw-r--r--sw/source/core/txtnode/atrfld.cxx26
-rw-r--r--sw/source/core/txtnode/atrftn.cxx38
-rw-r--r--sw/source/core/txtnode/fntcache.cxx178
-rw-r--r--sw/source/core/txtnode/ndhints.cxx16
-rw-r--r--sw/source/core/txtnode/ndtxt.cxx208
-rw-r--r--sw/source/core/txtnode/thints.cxx307
-rw-r--r--sw/source/core/undo/SwUndoField.cxx12
-rw-r--r--sw/source/core/undo/rolbck.cxx5
-rw-r--r--sw/source/core/undo/unattr.cxx4
-rw-r--r--sw/source/core/undo/unbkmk.cxx17
-rw-r--r--sw/source/core/undo/undel.cxx19
-rw-r--r--sw/source/core/undo/undobj.cxx7
-rw-r--r--sw/source/core/undo/unins.cxx15
-rw-r--r--sw/source/core/undo/unmove.cxx10
-rw-r--r--sw/source/core/undo/unsect.cxx302
-rw-r--r--sw/source/core/unocore/unocoll.cxx7
-rw-r--r--sw/source/core/unocore/unocrsrhelper.cxx85
-rw-r--r--sw/source/core/unocore/unodraw.cxx42
-rw-r--r--sw/source/core/unocore/unoflatpara.cxx30
-rw-r--r--sw/source/core/unocore/unoftn.cxx4
-rw-r--r--sw/source/core/unocore/unoidx.cxx209
-rw-r--r--sw/source/core/unocore/unomap.cxx3
-rw-r--r--sw/source/core/unocore/unoobj2.cxx4
-rw-r--r--sw/source/core/unocore/unoprnms.cxx1
-rw-r--r--sw/source/core/unocore/unorefmk.cxx86
-rw-r--r--sw/source/core/unocore/unosect.cxx244
-rw-r--r--sw/source/core/unocore/unosett.cxx11
-rw-r--r--sw/source/core/unocore/unotbl.cxx87
-rw-r--r--sw/source/core/unocore/unotext.cxx52
-rwxr-xr-x[-rw-r--r--]sw/source/core/view/makefile.mk11
-rwxr-xr-xsw/source/core/view/printdata.cxx546
-rw-r--r--sw/source/core/view/viewimp.cxx4
-rwxr-xr-x[-rw-r--r--]sw/source/core/view/viewsh.cxx64
-rwxr-xr-xsw/source/core/view/vprint.cxx555
-rw-r--r--sw/source/filter/ascii/ascatr.cxx12
-rw-r--r--sw/source/filter/basflt/fltini.cxx2068
-rw-r--r--sw/source/filter/html/htmlfldw.cxx2
-rw-r--r--sw/source/filter/html/htmlform.cxx8
-rw-r--r--sw/source/filter/html/htmlsect.cxx26
-rw-r--r--sw/source/filter/html/swhtml.cxx2
-rw-r--r--sw/source/filter/html/wrthtml.cxx5
-rw-r--r--sw/source/filter/inc/fltshell.hxx7
-rw-r--r--sw/source/filter/rtf/rtfatr.cxx17
-rw-r--r--sw/source/filter/rtf/rtffly.cxx4
-rw-r--r--sw/source/filter/rtf/swparrtf.cxx78
-rw-r--r--sw/source/filter/rtf/wrtrtf.cxx13
-rw-r--r--sw/source/filter/writer/writer.cxx77
-rw-r--r--sw/source/filter/ww1/fltshell.cxx37
-rw-r--r--sw/source/filter/ww1/w1filter.cxx4
-rw-r--r--sw/source/filter/ww8/WW8Sttbf.cxx1
-rw-r--r--sw/source/filter/ww8/WW8TableInfo.cxx942
-rw-r--r--sw/source/filter/ww8/WW8TableInfo.hxx180
-rw-r--r--sw/source/filter/ww8/attributeoutputbase.hxx11
-rw-r--r--sw/source/filter/ww8/docxattributeoutput.cxx95
-rw-r--r--sw/source/filter/ww8/docxexport.cxx32
-rw-r--r--sw/source/filter/ww8/docxexportfilter.cxx2
-rw-r--r--sw/source/filter/ww8/dump/ww8scan.cxx4
-rw-r--r--sw/source/filter/ww8/dump/ww8scan.hxx3
-rw-r--r--sw/source/filter/ww8/writerhelper.cxx3
-rw-r--r--sw/source/filter/ww8/writerhelper.hxx3
-rw-r--r--sw/source/filter/ww8/wrtw8esh.cxx37
-rw-r--r--sw/source/filter/ww8/wrtw8nds.cxx20
-rw-r--r--sw/source/filter/ww8/wrtw8sty.cxx17
-rw-r--r--sw/source/filter/ww8/wrtww8.cxx349
-rw-r--r--sw/source/filter/ww8/wrtww8.hxx11
-rw-r--r--sw/source/filter/ww8/wrtww8gr.cxx15
-rw-r--r--sw/source/filter/ww8/ww8atr.cxx25
-rw-r--r--sw/source/filter/ww8/ww8attributeoutput.hxx2
-rw-r--r--sw/source/filter/ww8/ww8graf.hxx4
-rw-r--r--sw/source/filter/ww8/ww8par.cxx200
-rw-r--r--sw/source/filter/ww8/ww8par.hxx38
-rw-r--r--sw/source/filter/ww8/ww8par2.hxx1
-rw-r--r--sw/source/filter/ww8/ww8par3.cxx24
-rw-r--r--sw/source/filter/ww8/ww8par5.cxx8
-rw-r--r--sw/source/filter/ww8/ww8par6.cxx65
-rw-r--r--sw/source/filter/ww8/ww8scan.cxx12
-rw-r--r--sw/source/filter/ww8/ww8scan.hxx3
-rw-r--r--sw/source/filter/xml/xmltbli.cxx6
-rw-r--r--sw/source/ui/app/apphdl.cxx35
-rw-r--r--sw/source/ui/app/applab.cxx9
-rwxr-xr-x[-rw-r--r--]sw/source/ui/app/docsh.cxx95
-rw-r--r--sw/source/ui/app/mn.src7
-rw-r--r--sw/source/ui/app/swmodule.cxx20
-rw-r--r--sw/source/ui/cctrl/makefile.mk3
-rwxr-xr-xsw/source/ui/config/optdlg.src6
-rwxr-xr-xsw/source/ui/config/optpage.cxx22
-rw-r--r--sw/source/ui/config/viewopt.cxx7
-rw-r--r--sw/source/ui/dbui/dbinsdlg.cxx35
-rw-r--r--sw/source/ui/dbui/dbmgr.cxx10
-rw-r--r--sw/source/ui/dbui/dbui.src2
-rw-r--r--sw/source/ui/dbui/mailmergewizard.cxx2
-rw-r--r--sw/source/ui/dbui/mmaddressblockpage.cxx4
-rw-r--r--sw/source/ui/dbui/mmaddressblockpage.hxx2
-rw-r--r--sw/source/ui/dbui/mmdocselectpage.cxx8
-rw-r--r--sw/source/ui/dbui/mmdocselectpage.hxx2
-rw-r--r--sw/source/ui/dbui/mmgreetingspage.cxx2
-rw-r--r--sw/source/ui/dbui/mmgreetingspage.hxx2
-rw-r--r--sw/source/ui/dbui/mmlayoutpage.cxx4
-rw-r--r--sw/source/ui/dbui/mmlayoutpage.hxx2
-rw-r--r--sw/source/ui/dbui/mmpreparemergepage.cxx4
-rw-r--r--sw/source/ui/dbui/mmpreparemergepage.hxx2
-rw-r--r--sw/source/ui/dialog/SwSpellDialogChildWindow.cxx146
-rw-r--r--sw/source/ui/dialog/makefile.mk4
-rw-r--r--sw/source/ui/dialog/regionsw.cxx14
-rw-r--r--sw/source/ui/dialog/swdlgfact.cxx5
-rw-r--r--sw/source/ui/dialog/swdlgfact.hxx2
-rw-r--r--sw/source/ui/dialog/uiregionsw.cxx314
-rw-r--r--sw/source/ui/dochdl/dochdl.src9
-rw-r--r--sw/source/ui/dochdl/gloshdl.cxx45
-rw-r--r--sw/source/ui/dochdl/swdtflvr.cxx170
-rw-r--r--sw/source/ui/docvw/AnchorOverlayObject.cxx467
-rw-r--r--sw/source/ui/docvw/AnchorOverlayObject.hxx143
-rw-r--r--sw/source/ui/docvw/AnnotationMenuButton.cxx222
-rw-r--r--sw/source/ui/docvw/AnnotationMenuButton.hxx63
-rw-r--r--sw/source/ui/docvw/AnnotationWin.cxx292
-rw-r--r--sw/source/ui/docvw/PostItMgr.cxx639
-rw-r--r--sw/source/ui/docvw/ShadowOverlayObject.cxx268
-rw-r--r--sw/source/ui/docvw/ShadowOverlayObject.hxx80
-rw-r--r--sw/source/ui/docvw/SidebarTxtControl.cxx428
-rw-r--r--sw/source/ui/docvw/SidebarTxtControl.hxx87
-rw-r--r--sw/source/ui/docvw/SidebarTxtControlAcc.cxx317
-rw-r--r--sw/source/ui/docvw/SidebarTxtControlAcc.hxx (renamed from sw/source/ui/inc/tbxmgr.hxx)50
-rw-r--r--sw/source/ui/docvw/SidebarWin.cxx1392
-rw-r--r--sw/source/ui/docvw/SidebarWinAcc.cxx162
-rw-r--r--sw/source/ui/docvw/SidebarWinAcc.hxx67
-rw-r--r--sw/source/ui/docvw/access.src16
-rw-r--r--sw/source/ui/docvw/annotation.hrc54
-rw-r--r--sw/source/ui/docvw/annotation.src68
-rw-r--r--sw/source/ui/docvw/docvw.hrc11
-rw-r--r--sw/source/ui/docvw/docvw.src35
-rw-r--r--sw/source/ui/docvw/edtwin.cxx25
-rw-r--r--sw/source/ui/docvw/edtwin2.cxx19
-rw-r--r--sw/source/ui/docvw/frmsidebarwincontainer.cxx216
-rw-r--r--sw/source/ui/docvw/frmsidebarwincontainer.hxx73
-rw-r--r--sw/source/ui/docvw/makefile.mk15
-rw-r--r--sw/source/ui/docvw/postit.cxx2482
-rw-r--r--sw/source/ui/envelp/mailmrge.cxx6
-rw-r--r--sw/source/ui/fldui/fldmgr.cxx2
-rw-r--r--sw/source/ui/fldui/fldpage.cxx14
-rw-r--r--sw/source/ui/frmdlg/column.cxx3
-rw-r--r--sw/source/ui/inc/SidebarWindowsConsts.hxx41
-rw-r--r--sw/source/ui/inc/SwSpellDialogChildWindow.hxx4
-rwxr-xr-xsw/source/ui/inc/langhelper.hxx22
-rw-r--r--sw/source/ui/inc/olmenu.hxx11
-rw-r--r--sw/source/ui/inc/regionsw.hxx89
-rw-r--r--sw/source/ui/inc/swdtflvr.hxx3
-rw-r--r--sw/source/ui/inc/swmn.hrc1
-rw-r--r--sw/source/ui/inc/view.hxx9
-rw-r--r--sw/source/ui/inc/wrtsh.hxx4
-rw-r--r--sw/source/ui/lingu/olmenu.cxx732
-rw-r--r--sw/source/ui/lingu/olmenu.hrc82
-rw-r--r--sw/source/ui/lingu/olmenu.src17
-rw-r--r--sw/source/ui/makefile.mk4
-rw-r--r--sw/source/ui/ribbar/makefile.mk5
-rw-r--r--sw/source/ui/ribbar/tblctrl.cxx1
-rw-r--r--sw/source/ui/ribbar/tbxmgr.cxx180
-rw-r--r--sw/source/ui/ribbar/workctrl.cxx1
-rwxr-xr-xsw/source/ui/shells/annotsh.cxx164
-rw-r--r--sw/source/ui/shells/basesh.cxx5
-rw-r--r--sw/source/ui/shells/drwtxtex.cxx134
-rw-r--r--sw/source/ui/shells/drwtxtsh.cxx12
-rwxr-xr-xsw/source/ui/shells/langhelper.cxx256
-rw-r--r--sw/source/ui/shells/makefile.mk1
-rw-r--r--sw/source/ui/shells/textdrw.cxx1
-rw-r--r--sw/source/ui/shells/textfld.cxx19
-rw-r--r--sw/source/ui/shells/textsh.cxx12
-rw-r--r--sw/source/ui/shells/textsh1.cxx61
-rw-r--r--sw/source/ui/shells/txtcrsr.cxx36
-rw-r--r--sw/source/ui/uiview/makefile.mk5
-rw-r--r--sw/source/ui/uiview/pview.cxx2
-rw-r--r--sw/source/ui/uiview/srcview.cxx16
-rw-r--r--sw/source/ui/uiview/view.cxx7
-rw-r--r--sw/source/ui/uiview/view.src4
-rw-r--r--sw/source/ui/uiview/view0.cxx1
-rwxr-xr-x[-rw-r--r--]sw/source/ui/uiview/view2.cxx25
-rw-r--r--sw/source/ui/uiview/viewdraw.cxx7
-rw-r--r--sw/source/ui/uiview/viewling.cxx222
-rw-r--r--sw/source/ui/uiview/viewmdi.cxx19
-rw-r--r--sw/source/ui/uiview/viewsrch.cxx2
-rwxr-xr-x[-rw-r--r--]sw/source/ui/uiview/viewstat.cxx10
-rw-r--r--sw/source/ui/uiview/viewtab.cxx7
-rw-r--r--sw/source/ui/uno/SwXDocumentSettings.cxx24
-rw-r--r--sw/source/ui/uno/makefile.mk3
-rw-r--r--sw/source/ui/uno/swdetect.cxx2
-rwxr-xr-x[-rw-r--r--]sw/source/ui/uno/unotxdoc.cxx78
-rw-r--r--sw/source/ui/uno/unotxvw.cxx29
-rw-r--r--sw/source/ui/uno/warnpassword.cxx86
-rw-r--r--sw/source/ui/utlui/attrdesc.cxx6
-rw-r--r--sw/source/ui/utlui/attrdesc.hrc6
-rw-r--r--sw/source/ui/utlui/attrdesc.src6
-rw-r--r--sw/source/ui/utlui/content.cxx12
-rw-r--r--sw/source/ui/utlui/glbltree.cxx36
-rw-r--r--sw/source/ui/utlui/makefile.mk4
-rw-r--r--sw/source/ui/vba/vbafind.cxx4
-rw-r--r--sw/source/ui/vba/vbafind.hxx2
-rw-r--r--sw/source/ui/vba/vbaheaderfooterhelper.cxx3
-rw-r--r--sw/source/ui/vba/vbaheaderfooterhelper.hxx2
-rw-r--r--sw/source/ui/vba/vbarange.cxx4
-rw-r--r--sw/source/ui/vba/vbarange.hxx2
-rw-r--r--sw/source/ui/vba/vbasystem.cxx5
-rw-r--r--sw/source/ui/vba/vbasystem.hxx1
-rw-r--r--sw/source/ui/vba/vbawindow.cxx5
-rw-r--r--sw/source/ui/vba/vbawindow.hxx1
-rw-r--r--sw/source/ui/vba/vbawrapformat.cxx5
-rw-r--r--sw/source/ui/vba/vbawrapformat.hxx1
-rw-r--r--sw/source/ui/wrtsh/wrtsh1.cxx19
-rw-r--r--sw/source/ui/wrtsh/wrtsh2.cxx10
-rw-r--r--sw/source/ui/wrtsh/wrtundo.cxx2
-rw-r--r--sw/uiconfig/sglobal/accelerator/de/default.xml114
-rw-r--r--sw/uiconfig/sglobal/accelerator/en-GB/default.xml115
-rw-r--r--sw/uiconfig/sglobal/accelerator/en-US/default.xml115
-rw-r--r--sw/uiconfig/sglobal/accelerator/es/default.xml114
-rw-r--r--sw/uiconfig/sglobal/accelerator/fr/default.xml114
-rw-r--r--sw/uiconfig/sglobal/menubar/menubar.xml876
-rw-r--r--sw/uiconfig/sglobal/toolbar/extrusionobjectbar.xml10
-rw-r--r--sw/uiconfig/sglobal/toolbar/findbar.xml8
-rw-r--r--sw/uiconfig/sglobal/toolbar/fontworkobjectbar.xml6
-rw-r--r--sw/uiconfig/sweb/accelerator/de/default.xml114
-rw-r--r--sw/uiconfig/sweb/accelerator/en-GB/default.xml115
-rw-r--r--sw/uiconfig/sweb/accelerator/en-US/default.xml115
-rw-r--r--sw/uiconfig/sweb/accelerator/es/default.xml114
-rw-r--r--sw/uiconfig/sweb/accelerator/fr/default.xml114
-rw-r--r--sw/uiconfig/sweb/menubar/menubar.xml734
-rw-r--r--sw/uiconfig/sweb/toolbar/extrusionobjectbar.xml10
-rw-r--r--sw/uiconfig/sweb/toolbar/findbar.xml8
-rw-r--r--sw/uiconfig/sweb/toolbar/fontworkobjectbar.xml6
-rw-r--r--sw/uiconfig/swform/accelerator/de/default.xml119
-rw-r--r--sw/uiconfig/swform/accelerator/en-US/default.xml120
-rw-r--r--sw/uiconfig/swform/accelerator/es/default.xml119
-rw-r--r--sw/uiconfig/swform/accelerator/fr/default.xml119
-rw-r--r--sw/uiconfig/swform/menubar/menubar.xml866
-rw-r--r--sw/uiconfig/swform/toolbar/extrusionobjectbar.xml10
-rw-r--r--sw/uiconfig/swform/toolbar/fontworkobjectbar.xml6
-rw-r--r--sw/uiconfig/swreport/accelerator/de/default.xml114
-rw-r--r--sw/uiconfig/swreport/accelerator/en-GB/default.xml115
-rw-r--r--sw/uiconfig/swreport/accelerator/en-US/default.xml115
-rw-r--r--sw/uiconfig/swreport/accelerator/es/default.xml114
-rw-r--r--sw/uiconfig/swreport/accelerator/fr/default.xml114
-rw-r--r--sw/uiconfig/swreport/menubar/menubar.xml866
-rw-r--r--sw/uiconfig/swreport/toolbar/extrusionobjectbar.xml10
-rw-r--r--sw/uiconfig/swreport/toolbar/fontworkobjectbar.xml6
-rw-r--r--sw/uiconfig/swriter/accelerator/de/default.xml114
-rw-r--r--sw/uiconfig/swriter/accelerator/en-GB/default.xml115
-rw-r--r--sw/uiconfig/swriter/accelerator/en-US/default.xml115
-rw-r--r--sw/uiconfig/swriter/accelerator/es/default.xml114
-rw-r--r--sw/uiconfig/swriter/accelerator/fr/default.xml114
-rw-r--r--sw/uiconfig/swriter/menubar/menubar.xml882
-rw-r--r--sw/uiconfig/swriter/toolbar/extrusionobjectbar.xml10
-rw-r--r--sw/uiconfig/swriter/toolbar/findbar.xml8
-rw-r--r--sw/uiconfig/swriter/toolbar/fontworkobjectbar.xml6
-rw-r--r--sw/uiconfig/swxform/accelerator/de/default.xml114
-rw-r--r--sw/uiconfig/swxform/accelerator/en-GB/default.xml115
-rw-r--r--sw/uiconfig/swxform/accelerator/en-US/default.xml115
-rw-r--r--sw/uiconfig/swxform/accelerator/es/default.xml114
-rw-r--r--sw/uiconfig/swxform/accelerator/fr/default.xml114
-rw-r--r--sw/uiconfig/swxform/menubar/menubar.xml868
-rw-r--r--sw/uiconfig/swxform/toolbar/extrusionobjectbar.xml10
-rw-r--r--sw/uiconfig/swxform/toolbar/findbar.xml8
-rw-r--r--sw/uiconfig/swxform/toolbar/fontworkobjectbar.xml6
-rw-r--r--sw/util/makefile.mk11
-rwxr-xr-xsw/util/msword.map2
-rw-r--r--sw/util/sw.map8
-rw-r--r--sw/util/swd.map8
-rw-r--r--sw/util/swui.map2
-rw-r--r--sw/util/vbaswobj.map9
470 files changed, 20390 insertions, 19937 deletions
diff --git a/starmath/inc/dialog.hxx b/starmath/inc/dialog.hxx
index b019a5b08ee1..75aee6fd2009 100644
--- a/starmath/inc/dialog.hxx
+++ b/starmath/inc/dialog.hxx
@@ -300,7 +300,7 @@ public:
class SmShowSymbolSet : public Control
{
- SmSymSet aSymbolSet;
+ SymbolPtrVec_t aSymbolSet;
ScrollBar aVScrollBar;
Size aOutputSize;
Link aSelectHdlLink;
@@ -318,7 +318,7 @@ class SmShowSymbolSet : public Control
public:
SmShowSymbolSet(Window *pParent, const ResId& rResId);
- void SetSymbolSet(const SmSymSet& rSymbolSet);
+ void SetSymbolSet(const SymbolPtrVec_t& rSymbolSet);
void SelectSymbol(USHORT nSymbol);
USHORT GetSelectSymbol() const { return nSelectSymbol; }
@@ -360,8 +360,10 @@ class SmSymbolDialog : public ModalDialog
PushButton aEditBtn;
SmViewShell &rViewSh;
- SmSymSetManager &rSymSetMgr;
- const SmSymSet *pSymSet;
+ SmSymbolManager &rSymbolMgr;
+
+ String aSymbolSetName;
+ SymbolPtrVec_t aSymbolSet;
OutputDevice *pFontListDev;
@@ -373,7 +375,7 @@ class SmSymbolDialog : public ModalDialog
DECL_LINK(GetClickHdl, Button *);
void FillSymbolSets(BOOL bDeleteText = TRUE);
- void SetSymbolSetManager(SmSymSetManager &rMgr);
+ void SetSymbolSetManager(SmSymbolManager &rMgr);
const SmSym *GetSymbol() const;
void InitColor_Impl();
@@ -381,7 +383,7 @@ class SmSymbolDialog : public ModalDialog
public:
SmSymbolDialog(Window * pParent, OutputDevice *pFntListDevice,
- SmSymSetManager &rSymSetMgr, SmViewShell &rViewShell, BOOL bFreeRes = TRUE);
+ SmSymbolManager &rSymbolMgr, SmViewShell &rViewShell, BOOL bFreeRes = TRUE);
virtual ~SmSymbolDialog();
BOOL SelectSymbolSet(const XubString &rSymbolSetName);
@@ -439,8 +441,8 @@ class SmSymDefineDialog : public ModalDialog
Image aRigthArrow_Im;
Image aRigthArrow_Im_HC; // hi-contrast version
- SmSymSetManager aSymSetMgrCopy,
- &rSymSetMgr;
+ SmSymbolManager aSymbolMgrCopy,
+ &rSymbolMgr;
const SmSym *pOrigSymbol;
const SubsetMap *pSubsetMap;
@@ -462,7 +464,7 @@ class SmSymDefineDialog : public ModalDialog
void FillFonts(BOOL bDeleteText = TRUE);
void FillStyles(BOOL bDeleteText = TRUE);
- void SetSymbolSetManager(const SmSymSetManager &rMgr);
+ void SetSymbolSetManager(const SmSymbolManager &rMgr);
void SetFont(const XubString &rFontName, const XubString &rStyleName);
void SetOrigSymbol(const SmSym *pSymbol, const XubString &rSymbolSetName);
void UpdateButtons();
@@ -474,18 +476,18 @@ class SmSymDefineDialog : public ModalDialog
BOOL SelectFont(const XubString &rFontName, BOOL bApplyFont);
BOOL SelectStyle(const XubString &rStyleName, BOOL bApplyFont);
-
- SmSymSet *GetSymbolSet(const ComboBox &rComboBox);
- inline const SmSymSet *GetSymbolSet(const ComboBox &rComboBox) const;
- SmSym *GetSymbol(const ComboBox &rComboBox);
- inline const SmSym *GetSymbol(const ComboBox &rComboBox) const;
+ SmSym * GetSymbol(const ComboBox &rComboBox);
+ const SmSym * GetSymbol(const ComboBox &rComboBox) const
+ {
+ return ((SmSymDefineDialog *) this)->GetSymbol(rComboBox);
+ }
void InitColor_Impl();
virtual void DataChanged( const DataChangedEvent& rDCEvt );
public:
- SmSymDefineDialog(Window *pParent, OutputDevice *pFntListDevice, SmSymSetManager &rMgr, BOOL bFreeRes = TRUE);
+ SmSymDefineDialog(Window *pParent, OutputDevice *pFntListDevice, SmSymbolManager &rMgr, BOOL bFreeRes = TRUE);
~SmSymDefineDialog();
using OutputDevice::SetFont;
@@ -493,44 +495,31 @@ public:
// Dialog
virtual short Execute();
- inline BOOL SelectOldSymbolSet(const XubString &rSymbolSetName);
- inline BOOL SelectOldSymbol(const XubString &rSymbolName);
- inline BOOL SelectSymbolSet(const XubString &rSymbolSetName);
- inline BOOL SelectSymbol(const XubString &rSymbolName);
- BOOL SelectFont(const XubString &rFontName) { return SelectFont(rFontName, TRUE); }
- BOOL SelectStyle(const XubString &rStyleName) { return SelectStyle(rStyleName, TRUE); };
- void SelectChar(xub_Unicode cChar);
-};
-
-inline const SmSymSet * SmSymDefineDialog::GetSymbolSet(const ComboBox &rComboBox) const
-{
- return ((SmSymDefineDialog *) this)->GetSymbolSet(rComboBox);
-}
+ BOOL SelectOldSymbolSet(const XubString &rSymbolSetName)
+ {
+ return SelectSymbolSet(aOldSymbolSets, rSymbolSetName, FALSE);
+ }
-inline const SmSym * SmSymDefineDialog::GetSymbol(const ComboBox &rComboBox) const
-{
- return ((SmSymDefineDialog *) this)->GetSymbol(rComboBox);
-}
+ BOOL SelectOldSymbol(const XubString &rSymbolName)
+ {
+ return SelectSymbol(aOldSymbols, rSymbolName, FALSE);
+ }
-inline BOOL SmSymDefineDialog::SelectOldSymbolSet(const XubString &rSymbolSetName)
-{
- return SelectSymbolSet(aOldSymbolSets, rSymbolSetName, FALSE);
-}
+ BOOL SelectSymbolSet(const XubString &rSymbolSetName)
+ {
+ return SelectSymbolSet(aSymbolSets, rSymbolSetName, FALSE);
+ }
-inline BOOL SmSymDefineDialog::SelectOldSymbol(const XubString &rSymbolName)
-{
- return SelectSymbol(aOldSymbols, rSymbolName, FALSE);
-}
+ BOOL SelectSymbol(const XubString &rSymbolName)
+ {
+ return SelectSymbol(aSymbols, rSymbolName, FALSE);
+ }
-inline BOOL SmSymDefineDialog::SelectSymbolSet(const XubString &rSymbolSetName)
-{
- return SelectSymbolSet(aSymbolSets, rSymbolSetName, FALSE);
-}
+ BOOL SelectFont(const XubString &rFontName) { return SelectFont(rFontName, TRUE); }
+ BOOL SelectStyle(const XubString &rStyleName) { return SelectStyle(rStyleName, TRUE); };
+ void SelectChar(xub_Unicode cChar);
+};
-inline BOOL SmSymDefineDialog::SelectSymbol(const XubString &rSymbolName)
-{
- return SelectSymbol(aSymbols, rSymbolName, FALSE);
-}
#endif
diff --git a/starmath/inc/node.hxx b/starmath/inc/node.hxx
index f9fed9c9602a..6ef89ea5ec1b 100644
--- a/starmath/inc/node.hxx
+++ b/starmath/inc/node.hxx
@@ -484,15 +484,24 @@ public:
class SmLineNode : public SmStructureNode
{
+ BOOL bUseExtraSpaces;
+
protected:
SmLineNode(SmNodeType eNodeType, const SmToken &rNodeToken)
: SmStructureNode(eNodeType, rNodeToken)
- {}
+ {
+ bUseExtraSpaces = TRUE;
+ }
public:
SmLineNode(const SmToken &rNodeToken)
: SmStructureNode(NLINE, rNodeToken)
- {}
+ {
+ bUseExtraSpaces = TRUE;
+ }
+
+ void SetUseExtraSpaces(BOOL bVal) { bUseExtraSpaces = bVal; }
+ BOOL IsUseExtraSpaces() const { return bUseExtraSpaces; };
virtual void Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell);
virtual void Arrange(const OutputDevice &rDev, const SmFormat &rFormat);
diff --git a/starmath/inc/parse.hxx b/starmath/inc/parse.hxx
index b3ad5ef5bdc3..facf17d561e2 100644
--- a/starmath/inc/parse.hxx
+++ b/starmath/inc/parse.hxx
@@ -106,7 +106,7 @@ enum SmTokenType
TLEFTARROW, TRIGHTARROW, TUPARROW, TDOWNARROW, TDIVIDES,
TNDIBVIDES, TSETN, TSETZ, TSETQ, TSETR,
TSETC, TWIDEVEC, TWIDETILDE, TWIDEHAT, TWIDESLASH,
- TWIDEBACKSLASH, TLDBRACKET, TRDBRACKET,
+ TWIDEBACKSLASH, TLDBRACKET, TRDBRACKET, TNOSPACE,
TUNKNOWN, TDEBUG
};
diff --git a/starmath/inc/smmod.hxx b/starmath/inc/smmod.hxx
index bd8292e9a7b1..f74beb9de92b 100644
--- a/starmath/inc/smmod.hxx
+++ b/starmath/inc/smmod.hxx
@@ -47,7 +47,7 @@ class SvxErrorHandler;
class SfxObjectFactory;
class SmConfig;
class SmModule;
-class SmSymSetManager;
+class SmSymbolManager;
/*************************************************************************
|*
@@ -149,7 +149,7 @@ public:
svtools::ColorConfig & GetColorConfig();
SmConfig * GetConfig();
- SmSymSetManager & GetSymSetManager();
+ SmSymbolManager & GetSymbolManager();
SmLocalizedSymbolData & GetLocSymbolData() const;
@@ -176,7 +176,6 @@ public:
};
#define SM_MOD() ( *(SmModule**) GetAppData(SHL_SM) )
-#define SM_MOD1() ( *(SmModule**) GetAppData(SHL_SM) )
#endif // _SDMOD_HXX
diff --git a/starmath/inc/starmath.hrc b/starmath/inc/starmath.hrc
index 2fbc7b4066d1..d73ea27a0d45 100644
--- a/starmath/inc/starmath.hrc
+++ b/starmath/inc/starmath.hrc
@@ -379,6 +379,7 @@
#define RID_LSUPX (RID_APP_START + 1916)
#define RID_CSUBX (RID_APP_START + 1917)
#define RID_CSUPX (RID_APP_START + 1918)
+#define RID_NOSPACE (RID_APP_START + 1919)
#define RID_ALEPH (RID_APP_START + 2001)
#define RID_EMPTYSET (RID_APP_START + 2002)
@@ -694,6 +695,7 @@
#define HID_SMA_DOTSDOWN (HID_SMA_START + 240)
#define HID_SMA_DOTSLOW (HID_SMA_START + 241)
#define HID_SMA_DOTSVERT (HID_SMA_START + 242)
+#define HID_SMA_NOSPACE (HID_SMA_START + 243)
#define HID_SMA_SETN (HID_SMA2_START + 1)
#define HID_SMA_SETZ (HID_SMA2_START + 2)
diff --git a/starmath/inc/symbol.hxx b/starmath/inc/symbol.hxx
index 8c8df60c2c6e..503859485095 100644
--- a/starmath/inc/symbol.hxx
+++ b/starmath/inc/symbol.hxx
@@ -28,198 +28,146 @@
#define SYMBOL_HXX
#include <vos/refernce.hxx>
-#ifndef _FONT_HXX //autogen
#include <vcl/font.hxx>
-#endif
#include <tools/list.hxx>
#include <tools/debug.hxx>
#include <tools/dynary.hxx>
#include <svl/lstner.hxx>
#include <svl/svarray.hxx>
+
+#include <map>
+#include <vector>
+#include <set>
+
#include "utility.hxx"
-#include <smmod.hxx>
+#include "smmod.hxx"
-#define SS_ATTR_ACCESS 0x80
#define SYMBOLSET_NONE 0xFFFF
#define SYMBOL_NONE 0xFFFF
-class SmSymSetManager;
////////////////////////////////////////////////////////////////////////////////
inline const String GetExportSymbolName( const String &rUiSymbolName )
{
- return SM_MOD1()->GetLocSymbolData().GetExportSymbolName( rUiSymbolName );
+ return SM_MOD()->GetLocSymbolData().GetExportSymbolName( rUiSymbolName );
}
inline const String GetUiSymbolName( const String &rExportSymbolName )
{
- return SM_MOD1()->GetLocSymbolData().GetUiSymbolName( rExportSymbolName );
+ return SM_MOD()->GetLocSymbolData().GetUiSymbolName( rExportSymbolName );
}
inline const String GetExportSymbolSetName( const String &rUiSymbolSetName )
{
- return SM_MOD1()->GetLocSymbolData().GetExportSymbolSetName( rUiSymbolSetName );
+ return SM_MOD()->GetLocSymbolData().GetExportSymbolSetName( rUiSymbolSetName );
}
inline const String GetUiSymbolSetName( const String &rExportSymbolSetName )
{
- return SM_MOD1()->GetLocSymbolData().GetUiSymbolSetName( rExportSymbolSetName );
+ return SM_MOD()->GetLocSymbolData().GetUiSymbolSetName( rExportSymbolSetName );
}
////////////////////////////////////////////////////////////////////////////////
class SmSym
{
- friend class SmSymSetManager;
-
- SmFace Face;
- String Name;
- String aExportName;
- String aSetName;
- SmSym *pHashNext;
- SmSymSetManager *pSymSetManager;
- sal_Unicode Character;
- BYTE Attribut;
- BOOL bPredefined;
- BOOL bDocSymbol;
+ SmFace m_aFace;
+ String m_aName;
+ String m_aExportName;
+ String m_aSetName;
+ sal_Unicode m_cChar;
+ BOOL m_bPredefined;
+ BOOL m_bDocSymbol;
public:
SmSym();
- SmSym(const SmSym& rSymbol);
SmSym(const String& rName, const Font& rFont, sal_Unicode cChar,
const String& rSet, BOOL bIsPredefined = FALSE);
+ SmSym(const SmSym& rSymbol);
SmSym& operator = (const SmSym& rSymbol);
- const Font& GetFace() const { return Face; }
- sal_Unicode GetCharacter() const { return Character; }
- const String& GetName() const { return Name; }
+ const Font& GetFace() const { return m_aFace; }
+ sal_Unicode GetCharacter() const { return m_cChar; }
+ const String& GetName() const { return m_aName; }
- void SetFace( const Font& rFont ) { Face = rFont; }
- void SetCharacter( sal_Unicode cChar ) { Character = cChar; }
- void SetName( const String &rTxt ) { Name = rTxt; }
+ void SetFace( const Font& rFont ) { m_aFace = rFont; }
+ void SetCharacter( sal_Unicode cChar ) { m_cChar = cChar; }
- BOOL IsPredefined() const { return bPredefined; }
- const String & GetSetName() const { return aSetName; }
- void SetSetName( const String &rName ) { aSetName = rName; }
- const String & GetExportName() const { return aExportName; }
- void SetExportName( const String &rName ) { aExportName = rName; }
+//! since the symbol name is also used as key in the map it should not be possible to change the name
+//! because ten the key would not be the same as its supposed copy here
+// void SetName( const String &rTxt ) { m_aName = rTxt; }
- BOOL IsDocSymbol() const { return bDocSymbol; }
- void SetDocSymbol( BOOL bVal ) { bDocSymbol = bVal; }
-};
+ BOOL IsPredefined() const { return m_bPredefined; }
+ const String & GetSymbolSetName() const { return m_aSetName; }
+ void SetSymbolSetName( const String &rName ) { m_aSetName = rName; }
+ const String & GetExportName() const { return m_aExportName; }
+ void SetExportName( const String &rName ) { m_aExportName = rName; }
+
+ BOOL IsDocSymbol() const { return m_bDocSymbol; }
+ void SetDocSymbol( BOOL bVal ) { m_bDocSymbol = bVal; }
-DECLARE_LIST(SmListSym, SmSym *)
-SV_DECL_PTRARR( SymbolArray, SmSym *, 32, 32 )
+ // true if rSymbol has the same name, font and character
+ bool IsEqualInUI( const SmSym& rSymbol ) const;
+};
/**************************************************************************/
-class SmSymSet
+struct lt_String
{
- friend class SmSymSetManager;
-
- SmListSym SymbolList;
- String Name;
- SmSymSetManager *pSymSetManager;
-
-public:
- SmSymSet();
- SmSymSet(const SmSymSet& rSymbolSet);
- SmSymSet(const String& rName);
- ~SmSymSet();
-
- SmSymSet& operator = (const SmSymSet& rSymbolSet);
-
- const String& GetName() const { return Name; }
- USHORT GetCount() const { return (USHORT) SymbolList.Count(); }
-
- const SmSym& GetSymbol(USHORT SymbolNo) const
+ bool operator()( const String &r1, const String &r2 ) const
{
- DBG_ASSERT(SymbolList.GetObject(SymbolNo), "Symbol nicht vorhanden");
- return *SymbolList.GetObject(SymbolNo);
+ // r1 < r2 ?
+ return r1.CompareTo( r2 ) == COMPARE_LESS;
}
-
- USHORT AddSymbol(SmSym* pSymbol);
- void DeleteSymbol(USHORT SymbolNo);
- SmSym * RemoveSymbol(USHORT SymbolNo);
- USHORT GetSymbolPos(const String& rName);
};
-DECLARE_DYNARRAY(SmArraySymSet, SmSymSet *)
-
-/**************************************************************************/
-
-class SmSymbolDialog;
-
-
-struct SmSymSetManager_Impl
-{
- SmArraySymSet SymbolSets;
- SmSymSetManager & rSymSetMgr;
- SmSym** HashEntries;
- USHORT NoSymbolSets;
- USHORT NoHashEntries;
- BOOL Modified;
-
- SmSymSetManager_Impl( SmSymSetManager &rMgr, USHORT HashTableSize );
- ~SmSymSetManager_Impl();
- SmSymSetManager_Impl & operator = ( const SmSymSetManager_Impl &rImpl );
-};
+// type of the actual container to hold the symbols
+typedef std::map< String, SmSym, lt_String > SymbolMap_t;
+// vector of pointers to the actual symbols in the above container
+typedef std::vector< const SmSym * > SymbolPtrVec_t;
-class SmSymSetManager : public SfxListener
+class SmSymbolManager : public SfxListener
{
- friend struct SmSymSetManager_Impl;
-
- SmSymSetManager_Impl *pImpl;
+ SymbolMap_t m_aSymbols;
+ bool m_bModified;
virtual void SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType,
const SfxHint& rHint, const TypeId& rHintType);
- UINT32 GetHashIndex(const String& rSymbolName);
- void EnterHashTable(SmSym& rSymbol);
- void EnterHashTable(SmSymSet& rSymbolSet);
- void FillHashTable();
void Init();
void Exit();
public:
- SmSymSetManager(USHORT HashTableSize = 137);
- SmSymSetManager(const SmSymSetManager& rSymbolSetManager);
- ~SmSymSetManager();
+ SmSymbolManager();
+ SmSymbolManager(const SmSymbolManager& rSymbolSetManager);
+ ~SmSymbolManager();
- SmSymSetManager& operator = (const SmSymSetManager& rSymbolSetManager);
+ SmSymbolManager & operator = (const SmSymbolManager& rSymbolSetManager);
- void GetSymbols( std::vector< SmSym > &rSymbols ) const;
+ // symbol sets are for UI purpose only, thus we assemble them here
+ std::set< String > GetSymbolSetNames() const;
+ const SymbolPtrVec_t GetSymbolSet( const String& rSymbolSetName );
-
- USHORT AddSymbolSet(SmSymSet* pSymbolSet);
- void ChangeSymbolSet(SmSymSet* pSymbolSet);
- void DeleteSymbolSet(USHORT SymbolSetNo);
- USHORT GetSymbolSetPos(const String& rSymbolSetName) const;
- USHORT GetSymbolSetCount() const { return pImpl->NoSymbolSets; }
- SmSymSet *GetSymbolSet(USHORT SymbolSetNo) const
- {
- return pImpl->SymbolSets.Get(SymbolSetNo);
- }
+ USHORT GetSymbolCount() const { return static_cast< USHORT >(m_aSymbols.size()); }
+ const SymbolPtrVec_t GetSymbols() const;
+ bool AddOrReplaceSymbol( const SmSym & rSymbol, bool bForceChange = false );
+ void RemoveSymbol( const String & rSymbolName );
SmSym * GetSymbolByName(const String& rSymbolName);
const SmSym * GetSymbolByName(const String& rSymbolName) const
{
- return ((SmSymSetManager *) this)->GetSymbolByName(rSymbolName);
+ return ((SmSymbolManager *) this)->GetSymbolByName(rSymbolName);
}
- void AddReplaceSymbol( const SmSym & rSymbol );
- USHORT GetSymbolCount() const;
- const SmSym * GetSymbolByPos( USHORT nPos ) const;
-
- BOOL IsModified() const { return pImpl->Modified; }
- void SetModified(BOOL Modify) { pImpl->Modified = Modify; }
+ bool IsModified() const { return m_bModified; }
+ void SetModified(bool bModify) { m_bModified = bModify; }
void Load();
void Save();
diff --git a/starmath/prj/build.lst b/starmath/prj/build.lst
index cb6fd9358454..cbfff6772402 100644
--- a/starmath/prj/build.lst
+++ b/starmath/prj/build.lst
@@ -6,3 +6,4 @@ sm starmath\res get - all sm_res NULL
sm starmath\sdi nmake - all sm_sdi NULL
sm starmath\source nmake - all sm_sorce sm_sdi sm_inc NULL
sm starmath\util nmake - all sm_util sm_sorce NULL
+sm starmath\qa\unoapi nmake - all sm_qa_unoapi NULL
diff --git a/starmath/prj/d.lst b/starmath/prj/d.lst
index d6f5f9f98b62..bc48875e81e6 100644
--- a/starmath/prj/d.lst
+++ b/starmath/prj/d.lst
@@ -4,8 +4,6 @@ mkdir: %_DEST%\xml%_EXT%\uiconfig\modules
mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\smath
mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\smath\menubar
mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\smath\toolbar
-mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\smath\accelerator
-mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\smath\accelerator\en-US
mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\smath\statusbar
..\%COMMON_OUTDIR%\misc\*.hid %COMMON_DEST%\bin%_EXT%\hid\*.hid
@@ -20,5 +18,4 @@ mkdir: %_DEST%\inc%_EXT%\starmath
..\uiconfig\smath\menubar\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\smath\menubar\*.xml
..\uiconfig\smath\toolbar\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\smath\toolbar\*.xml
-..\uiconfig\smath\accelerator\en-US\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\smath\accelerator\en-US\*.xml
..\uiconfig\smath\statusbar\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\smath\statusbar\*.xml
diff --git a/starmath/qa/unoapi/Test.java b/starmath/qa/unoapi/Test.java
new file mode 100644
index 000000000000..520491da3a8c
--- /dev/null
+++ b/starmath/qa/unoapi/Test.java
@@ -0,0 +1,51 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* 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.
+************************************************************************/
+
+package org.openoffice.starmath.qa.unoapi;
+
+import org.openoffice.Runner;
+import org.openoffice.test.OfficeConnection;
+import static org.junit.Assert.*;
+
+public final class Test {
+ @org.junit.Before public void setUp() throws Exception {
+ connection.setUp();
+ }
+
+ @org.junit.After public void tearDown()
+ throws InterruptedException, com.sun.star.uno.Exception
+ {
+ connection.tearDown();
+ }
+
+ @org.junit.Test public void test() {
+ assertTrue(
+ Runner.run(
+ "-sce", "sm.sce", "-xcl", "knownissues.xcl", "-cs",
+ connection.getDescription()));
+ }
+
+ private final OfficeConnection connection = new OfficeConnection();
+}
diff --git a/starmath/qa/unoapi/knownissues.xcl b/starmath/qa/unoapi/knownissues.xcl
index 960ad64ce13c..e11895ef3fe4 100644
--- a/starmath/qa/unoapi/knownissues.xcl
+++ b/starmath/qa/unoapi/knownissues.xcl
@@ -12,4 +12,7 @@ sm.SmEditAccessible::com::sun::star::accessibility::XAccessibleEventBroadcaster
sm.SmGraphicAccessible::com::sun::star::accessibility::XAccessibleEventBroadcaster
### i94275 ###
-sm.SmGraphicAccessible::com::sun::star::accessibility::XAccessibleText \ No newline at end of file
+sm.SmGraphicAccessible::com::sun::star::accessibility::XAccessibleText
+
+### i111220 ###
+sm.XMLMetaExporter::com::sun::star::document::XFilter
diff --git a/starmath/qa/unoapi/makefile.mk b/starmath/qa/unoapi/makefile.mk
index 93169ee51708..68fcfe744868 100644
--- a/starmath/qa/unoapi/makefile.mk
+++ b/starmath/qa/unoapi/makefile.mk
@@ -1,7 +1,6 @@
#*************************************************************************
-#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
+#
# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
@@ -22,19 +21,28 @@
# version 3 along with OpenOffice.org. If not, see
# <http://www.openoffice.org/license.html>
# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
+#***********************************************************************/
-PRJ=..$/..
+.IF "$(OOO_SUBSEQUENT_TESTS)" == ""
+nothing .PHONY:
+.ELSE
-PRJNAME=starmath
-TARGET=qa_unoapi
+PRJ = ../..
+PRJNAME = starmath
+TARGET = qa_unoapi
-.INCLUDE: settings.mk
+.IF "$(OOO_JUNIT_JAR)" != ""
+PACKAGE = org/openoffice/starmath/qa/unoapi
+JAVATESTFILES = Test.java
+JAVAFILES = $(JAVATESTFILES)
+JARFILES = OOoRunner.jar ridl.jar test.jar
+EXTRAJARFILES = $(OOO_JUNIT_JAR)
+.END
+.INCLUDE: settings.mk
.INCLUDE: target.mk
+.INCLUDE: installationtest.mk
-ALLTAR : UNOAPI_TEST
+ALLTAR : javatest
-UNOAPI_TEST:
- +$(SOLARENV)$/bin$/checkapi -sce sm.sce -xcl knownissues.xcl -tdoc $(PWD)$/testdocuments
+.END
diff --git a/starmath/source/cfgitem.cxx b/starmath/source/cfgitem.cxx
index da507871ed61..bf62157a30d3 100644
--- a/starmath/source/cfgitem.cxx
+++ b/starmath/source/cfgitem.cxx
@@ -429,7 +429,7 @@ SmMathConfig::SmMathConfig() :
pFormat = 0;
pOther = 0;
pFontFormatList = 0;
- pSymSetMgr = 0;
+ pSymbolMgr = 0;
bIsOtherModified = bIsFormatModified = FALSE;
}
@@ -441,7 +441,7 @@ SmMathConfig::~SmMathConfig()
delete pFormat;
delete pOther;
delete pFontFormatList;
- delete pSymSetMgr;
+ delete pSymbolMgr;
}
@@ -554,14 +554,14 @@ void SmMathConfig::ReadSymbol( SmSym &rSymbol,
}
-SmSymSetManager & SmMathConfig::GetSymSetManager()
+SmSymbolManager & SmMathConfig::GetSymbolManager()
{
- if (!pSymSetMgr)
+ if (!pSymbolMgr)
{
- pSymSetMgr = new SmSymSetManager;
- pSymSetMgr->Load();
+ pSymbolMgr = new SmSymbolManager;
+ pSymbolMgr->Load();
}
- return *pSymSetMgr;
+ return *pSymbolMgr;
}
@@ -570,6 +570,7 @@ void SmMathConfig::Commit()
Save();
}
+
void SmMathConfig::Save()
{
SaveOther();
@@ -577,6 +578,7 @@ void SmMathConfig::Save()
SaveFontFormatList();
}
+
void SmMathConfig::GetSymbols( std::vector< SmSym > &rSymbols ) const
{
Sequence< OUString > aNodes( ((SmMathConfig*) this)->GetNodeNames( A2OU( SYMBOL_LIST ) ) );
@@ -627,7 +629,7 @@ void SmMathConfig::SetSymbols( const std::vector< SmSym > &rNewSymbols )
// Set
pVal->Name = aNodeNameDelim;
pVal->Name += *pName++;
- OUString aTmp( rSymbol.GetSetName() );
+ OUString aTmp( rSymbol.GetSymbolSetName() );
if (rSymbol.IsPredefined())
aTmp = GetExportSymbolSetName( aTmp );
pVal->Value <<= aTmp;
diff --git a/starmath/source/cfgitem.hxx b/starmath/source/cfgitem.hxx
index 514573f6e7ac..9e4aa9f39f2f 100644
--- a/starmath/source/cfgitem.hxx
+++ b/starmath/source/cfgitem.hxx
@@ -122,7 +122,7 @@ class SmMathConfig : public utl::ConfigItem
SmFormat * pFormat;
SmCfgOther * pOther;
SmFontFormatList * pFontFormatList;
- SmSymSetManager * pSymSetMgr;
+ SmSymbolManager * pSymbolMgr;
BOOL bIsOtherModified;
BOOL bIsFormatModified;
@@ -182,7 +182,7 @@ public:
//using utl::ConfigItem::ReplaceSetProperties;
//using utl::ConfigItem::GetReadOnlyStates;
- SmSymSetManager & GetSymSetManager();
+ SmSymbolManager & GetSymbolManager();
void GetSymbols( std::vector< SmSym > &rSymbols ) const;
void SetSymbols( const std::vector< SmSym > &rNewSymbols );
diff --git a/starmath/source/commands.src b/starmath/source/commands.src
index 75c00cb819a6..9d618bbd0cf3 100644
--- a/starmath/source/commands.src
+++ b/starmath/source/commands.src
@@ -223,6 +223,7 @@ String RID_LEFTARROW { Text = "leftarrow " ; };
String RID_RIGHTARROW { Text = "rightarrow " ; };
String RID_UPARROW { Text = "uparrow " ; };
String RID_DOWNARROW { Text = "downarrow " ; };
+String RID_NOSPACE { Text = "nospace {<?>} " ; };
//////////////////////////////////////////
@@ -1327,6 +1328,12 @@ Menu RID_COMMANDMENU
};
MenuItem
{
+ Identifier = RID_NOSPACE;
+ HelpId = HID_SMA_NOSPACE;
+ Text [ en-US ] = "nospace {...}";
+ };
+ MenuItem
+ {
Identifier = RID_BINOMXY;
HelpId = HID_SMA_BINOMXY;
Text = "binom x y";
diff --git a/starmath/source/dialog.cxx b/starmath/source/dialog.cxx
index 257fdb959484..037f2fc1dff8 100644
--- a/starmath/source/dialog.cxx
+++ b/starmath/source/dialog.cxx
@@ -426,7 +426,7 @@ IMPL_LINK( SmFontSizeDialog, DefaultButtonClickHdl, Button *, EMPTYARG /*pButton
if (pQueryBox->Execute() == RET_YES)
{
- SmModule *pp = SM_MOD1();
+ SmModule *pp = SM_MOD();
SmFormat aFmt( pp->GetConfig()->GetStandardFormat() );
WriteTo( aFmt );
pp->GetConfig()->SetStandardFormat( aFmt );
@@ -533,7 +533,7 @@ IMPL_LINK_INLINE_START( SmFontTypeDialog, DefaultButtonClickHdl, Button *, EMPTY
QueryBox *pQueryBox = new QueryBox(this, SmResId(RID_DEFAULTSAVEQUERY));
if (pQueryBox->Execute() == RET_YES)
{
- SmModule *pp = SM_MOD1();
+ SmModule *pp = SM_MOD();
SmFormat aFmt( pp->GetConfig()->GetStandardFormat() );
WriteTo( aFmt );
pp->GetConfig()->SetStandardFormat( aFmt, TRUE );
@@ -579,7 +579,7 @@ SmFontTypeDialog::SmFontTypeDialog(Window * pParent, OutputDevice *pFntListDevic
void SmFontTypeDialog::ReadFrom(const SmFormat &rFormat)
{
- SmModule *pp = SM_MOD1();
+ SmModule *pp = SM_MOD();
aVariableFont = pp->GetConfig()->GetFontPickList(FNT_VARIABLE);
aFunctionFont = pp->GetConfig()->GetFontPickList(FNT_FUNCTION);
@@ -601,7 +601,7 @@ void SmFontTypeDialog::ReadFrom(const SmFormat &rFormat)
void SmFontTypeDialog::WriteTo(SmFormat &rFormat) const
{
- SmModule *pp = SM_MOD1();
+ SmModule *pp = SM_MOD();
pp->GetConfig()->GetFontPickList(FNT_VARIABLE) = aVariableFont;
pp->GetConfig()->GetFontPickList(FNT_FUNCTION) = aFunctionFont;
@@ -740,7 +740,7 @@ IMPL_LINK( SmDistanceDialog, DefaultButtonClickHdl, Button *, EMPTYARG /*pButton
if (pQueryBox->Execute() == RET_YES)
{
- SmModule *pp = SM_MOD1();
+ SmModule *pp = SM_MOD();
SmFormat aFmt( pp->GetConfig()->GetStandardFormat() );
WriteTo( aFmt );
pp->GetConfig()->SetStandardFormat( aFmt );
@@ -1063,7 +1063,7 @@ IMPL_LINK( SmAlignDialog, DefaultButtonClickHdl, Button *, EMPTYARG /*pButton*/
if (pQueryBox->Execute() == RET_YES)
{
- SmModule *pp = SM_MOD1();
+ SmModule *pp = SM_MOD();
SmFormat aFmt( pp->GetConfig()->GetStandardFormat() );
WriteTo( aFmt );
pp->GetConfig()->SetStandardFormat( aFmt );
@@ -1140,12 +1140,12 @@ void SmShowSymbolSet::Paint(const Rectangle&)
SetMapMode(MapMode(MAP_PIXEL));
USHORT v = sal::static_int_cast< USHORT >((aVScrollBar.GetThumbPos() * nColumns));
- USHORT nSymbols = aSymbolSet.GetCount();
+ size_t nSymbols = aSymbolSet.size();
Color aTxtColor( GetTextColor() );
for (USHORT i = v; i < nSymbols ; i++)
{
- SmSym aSymbol (aSymbolSet.GetSymbol(i));
+ SmSym aSymbol (*aSymbolSet[i]);
Font aFont (aSymbol.GetFace());
aFont.SetAlign(ALIGN_TOP);
@@ -1206,7 +1206,7 @@ void SmShowSymbolSet::KeyInput(const KeyEvent& rKEvt)
case KEY_LEFT: n -= 1; break;
case KEY_RIGHT: n += 1; break;
case KEY_HOME: n = 0; break;
- case KEY_END: n = aSymbolSet.GetCount() - 1; break;
+ case KEY_END: n = static_cast< USHORT >(aSymbolSet.size() - 1); break;
case KEY_PAGEUP: n -= nColumns * nRows; break;
case KEY_PAGEDOWN: n += nColumns * nRows; break;
@@ -1218,7 +1218,7 @@ void SmShowSymbolSet::KeyInput(const KeyEvent& rKEvt)
else
n = 0;
- if (n >= aSymbolSet.GetCount())
+ if (n >= aSymbolSet.size())
n = nSelectSymbol;
// adjust scrollbar
@@ -1274,13 +1274,13 @@ SmShowSymbolSet::SmShowSymbolSet(Window *pParent, const ResId& rResId) :
}
-void SmShowSymbolSet::SetSymbolSet(const SmSymSet& rSymbolSet)
+void SmShowSymbolSet::SetSymbolSet(const SymbolPtrVec_t& rSymbolSet)
{
aSymbolSet = rSymbolSet;
- if (aSymbolSet.GetCount() > (nColumns * nRows))
+ if (static_cast< USHORT >(aSymbolSet.size()) > (nColumns * nRows))
{
- aVScrollBar.SetRange(Range(0, ((aSymbolSet.GetCount() + (nColumns - 1)) / nColumns) - nRows));
+ aVScrollBar.SetRange(Range(0, ((aSymbolSet.size() + (nColumns - 1)) / nColumns) - nRows));
aVScrollBar.Enable(TRUE);
}
else
@@ -1302,10 +1302,10 @@ void SmShowSymbolSet::SelectSymbol(USHORT nSymbol)
((nSelectSymbol - v) / nColumns) * nLen),
Size(nLen, nLen)));
- if (nSymbol < aSymbolSet.GetCount())
+ if (nSymbol < aSymbolSet.size())
nSelectSymbol = nSymbol;
- if (aSymbolSet.GetCount() == 0)
+ if (aSymbolSet.size() == 0)
nSelectSymbol = SYMBOL_NONE;
if (nSelectSymbol != SYMBOL_NONE)
@@ -1380,9 +1380,10 @@ void SmSymbolDialog::FillSymbolSets(BOOL bDeleteText)
if (bDeleteText)
aSymbolSets.SetNoSelection();
- USHORT nNumSymSets = rSymSetMgr.GetSymbolSetCount();
- for (USHORT i = 0; i < nNumSymSets; i++)
- aSymbolSets.InsertEntry(rSymSetMgr.GetSymbolSet(i)->GetName());
+ std::set< String > aSybolSetNames( rSymbolMgr.GetSymbolSetNames() );
+ std::set< String >::const_iterator aIt( aSybolSetNames.begin() );
+ for ( ; aIt != aSybolSetNames.end(); ++aIt)
+ aSymbolSets.InsertEntry( *aIt );
}
@@ -1416,7 +1417,7 @@ IMPL_LINK( SmSymbolDialog, EditClickHdl, Button *, EMPTYARG pButton )
DBG_ASSERT(pButton == &aEditBtn, "Sm : falsches Argument");
#endif
- SmSymDefineDialog *pDialog = new SmSymDefineDialog(this, pFontListDev, rSymSetMgr);
+ SmSymDefineDialog *pDialog = new SmSymDefineDialog(this, pFontListDev, rSymbolMgr);
// aktuelles Symbol und SymbolSet am neuen Dialog setzen
const XubString aSymSetName (aSymbolSets.GetSelectEntry()),
@@ -1432,9 +1433,9 @@ IMPL_LINK( SmSymbolDialog, EditClickHdl, Button *, EMPTYARG pButton )
USHORT nSymPos = GetSelectedSymbol();
// Dialog an evtl geaenderte Daten des SymbolSet Manager anpassen
- if (pDialog->Execute() == RET_OK && rSymSetMgr.IsModified())
+ if (pDialog->Execute() == RET_OK && rSymbolMgr.IsModified())
{
- rSymSetMgr.Save();
+ rSymbolMgr.Save();
FillSymbolSets();
}
@@ -1442,7 +1443,16 @@ IMPL_LINK( SmSymbolDialog, EditClickHdl, Button *, EMPTYARG pButton )
// (soweit eines vorhanden ist)
if (!SelectSymbolSet(aOldSymbolSet) && aSymbolSets.GetEntryCount() > 0)
SelectSymbolSet(aSymbolSets.GetEntry(0));
+ else
+ {
+ // just update display of current symbol set
+ DBG_ASSERT( aSymSetName == aSymSetName, "unexpected change in symbol set name" );
+ aSymbolSet = rSymbolMgr.GetSymbolSet( aSymbolSetName );
+ aSymbolSetDisplay.SetSymbolSet( aSymbolSet );
+ }
+ if (nSymPos >= aSymbolSet.size())
+ nSymPos = static_cast< USHORT >(aSymbolSet.size()) - 1;
SelectSymbol( nSymPos );
delete pDialog;
@@ -1499,7 +1509,7 @@ IMPL_LINK_INLINE_END( SmSymbolDialog, CloseClickHdl, Button *, pButton )
SmSymbolDialog::SmSymbolDialog(Window *pParent, OutputDevice *pFntListDevice,
- SmSymSetManager &rMgr, SmViewShell &rViewShell, BOOL bFreeRes) :
+ SmSymbolManager &rMgr, SmViewShell &rViewShell, BOOL bFreeRes) :
ModalDialog (pParent, SmResId(RID_SYMBOLDIALOG)),
aSymbolSetText (this, SmResId(1)),
aSymbolSets (this, SmResId(1)),
@@ -1510,13 +1520,14 @@ SmSymbolDialog::SmSymbolDialog(Window *pParent, OutputDevice *pFntListDevice,
aCloseBtn (this, SmResId(3)),
aEditBtn (this, SmResId(1)),
rViewSh (rViewShell),
- rSymSetMgr (rMgr),
+ rSymbolMgr (rMgr),
pFontListDev (pFntListDevice)
{
if (bFreeRes)
FreeResource();
- pSymSet = NULL;
+ aSymbolSetName = String();
+ aSymbolSet.clear();
FillSymbolSets();
if (aSymbolSets.GetEntryCount() > 0)
SelectSymbolSet(aSymbolSets.GetEntry(0));
@@ -1580,18 +1591,17 @@ BOOL SmSymbolDialog::SelectSymbolSet(const XubString &rSymbolSetName)
BOOL bRet = FALSE;
USHORT nPos = aSymbolSets.GetEntryPos(rSymbolSetName);
- pSymSet = NULL;
+ aSymbolSetName = String();
+ aSymbolSet.clear();
if (nPos != LISTBOX_ENTRY_NOTFOUND)
{
aSymbolSets.SelectEntryPos(nPos);
- USHORT nSymbolSetNo = rSymSetMgr.GetSymbolSetPos(aSymbolSets.GetSelectEntry());
- pSymSet = rSymSetMgr.GetSymbolSet(nSymbolSetNo);
-#if OSL_DEBUG_LEVEL > 1
- DBG_ASSERT(pSymSet, "Sm : NULL pointer");
-#endif
- aSymbolSetDisplay.SetSymbolSet(*pSymSet);
- if (pSymSet->GetCount() > 0)
+ aSymbolSetName = rSymbolSetName;
+ aSymbolSet = rSymbolMgr.GetSymbolSet( aSymbolSetName );
+
+ aSymbolSetDisplay.SetSymbolSet( aSymbolSet );
+ if (aSymbolSet.size() > 0)
SelectSymbol(0);
bRet = TRUE;
@@ -1606,8 +1616,8 @@ BOOL SmSymbolDialog::SelectSymbolSet(const XubString &rSymbolSetName)
void SmSymbolDialog::SelectSymbol(USHORT nSymbolNo)
{
const SmSym *pSym = NULL;
- if (pSymSet && nSymbolNo < pSymSet->GetCount())
- pSym = &pSymSet->GetSymbol(nSymbolNo);
+ if (aSymbolSetName.Len() > 0 && nSymbolNo < static_cast< USHORT >(aSymbolSet.size()))
+ pSym = aSymbolSet[ nSymbolNo ];
aSymbolSetDisplay.SelectSymbol(nSymbolNo);
aSymbolDisplay.SetSymbol(pSym);
@@ -1618,7 +1628,8 @@ void SmSymbolDialog::SelectSymbol(USHORT nSymbolNo)
const SmSym * SmSymbolDialog::GetSymbol() const
{
USHORT nSymbolNo = aSymbolSetDisplay.GetSelectSymbol();
- return pSymSet == NULL ? NULL : &pSymSet->GetSymbol(nSymbolNo);
+ bool bValid = aSymbolSetName.Len() > 0 && nSymbolNo < static_cast< USHORT >(aSymbolSet.size());
+ return bValid ? aSymbolSet[ nSymbolNo ] : NULL;
}
@@ -1678,15 +1689,10 @@ void SmSymDefineDialog::FillSymbols(ComboBox &rComboBox, BOOL bDeleteText)
if (bDeleteText)
rComboBox.SetText(XubString());
- ComboBox &rSymbolSets = &rComboBox == &aOldSymbols ?
- aOldSymbolSets : aSymbolSets;
- const SmSymSet *pSymSet = GetSymbolSet(rSymbolSets);
- if (pSymSet)
- { USHORT nNumSymbols = pSymSet->GetCount();
- for (USHORT i = 0; i < nNumSymbols; i++)
- rComboBox.InsertEntry(pSymSet->GetSymbol(i).GetName());
- }
-
+ ComboBox &rBox = &rComboBox == &aOldSymbols ? aOldSymbolSets : aSymbolSets;
+ SymbolPtrVec_t aSymSet( aSymbolMgrCopy.GetSymbolSet( rBox.GetText() ) );
+ for (size_t i = 0; i < aSymSet.size(); ++i)
+ rComboBox.InsertEntry( aSymSet[i]->GetName() );
}
@@ -1701,9 +1707,10 @@ void SmSymDefineDialog::FillSymbolSets(ComboBox &rComboBox, BOOL bDeleteText)
if (bDeleteText)
rComboBox.SetText(XubString());
- USHORT nNumSymSets = aSymSetMgrCopy.GetSymbolSetCount();
- for (USHORT i = 0; i < nNumSymSets; i++)
- rComboBox.InsertEntry(aSymSetMgrCopy.GetSymbolSet(i)->GetName());
+ const std::set< String > aSymbolSetNames( aSymbolMgrCopy.GetSymbolSetNames() );
+ std::set< String >::const_iterator aIt( aSymbolSetNames.begin() );
+ for ( ; aIt != aSymbolSetNames.end(); ++aIt)
+ rComboBox.InsertEntry( *aIt );
}
@@ -1748,26 +1755,13 @@ void SmSymDefineDialog::FillStyles(BOOL bDeleteText)
}
-SmSymSet * SmSymDefineDialog::GetSymbolSet(const ComboBox &rComboBox)
-{
-#if OSL_DEBUG_LEVEL > 1
- DBG_ASSERT(&rComboBox == &aOldSymbolSets || &rComboBox == &aSymbolSets,
- "Sm : falsche ComboBox");
-#endif
- USHORT nSymbolSetNo = aSymSetMgrCopy.GetSymbolSetPos(rComboBox.GetText());
-
- return nSymbolSetNo == SYMBOLSET_NONE ?
- NULL : aSymSetMgrCopy.GetSymbolSet(nSymbolSetNo);
-}
-
-
SmSym * SmSymDefineDialog::GetSymbol(const ComboBox &rComboBox)
{
#if OSL_DEBUG_LEVEL > 1
DBG_ASSERT(&rComboBox == &aOldSymbols || &rComboBox == &aSymbols,
"Sm : falsche ComboBox");
#endif
- return aSymSetMgrCopy.GetSymbolByName(rComboBox.GetText());
+ return aSymbolMgrCopy.GetSymbolByName(rComboBox.GetText());
}
@@ -1897,32 +1891,23 @@ IMPL_LINK( SmSymDefineDialog, AddClickHdl, Button *, EMPTYARG pButton )
DBG_ASSERT(aAddBtn.IsEnabled(), "Sm : Voraussetzungen erfuellt ??");
#endif
- SmSymSet *pSymSet = GetSymbolSet(aSymbolSets);
-
- // SymbolSet einfuegen falls es noch nicht existiert
- if (!pSymSet)
- {
- pSymSet = new SmSymSet(aSymbolSets.GetText());
- aSymSetMgrCopy.AddSymbolSet(pSymSet);
- FillSymbolSets(aOldSymbolSets, FALSE);
- FillSymbolSets(aSymbolSets, FALSE);
- }
-#if OSL_DEBUG_LEVEL > 1
- DBG_ASSERT(pSymSet, "Sm : NULL pointer");
-#endif
-
- // Symbol ins SymbolSet einfuegen
+ // add symbol
// TO_DO_UCS4 (#i74049): get rid of cast without loosing UCS4 functionality
- SmSym *pSym = new SmSym(aSymbols.GetText(), aCharsetDisplay.GetFont(),
- sal::static_int_cast< sal_Unicode >(aCharsetDisplay.GetSelectCharacter()),
- aSymbolSets.GetText());
- pSymSet->AddSymbol(pSym);
-
- // update der Hash Tabelle erzwingen (damit aAddBtn disabled wird).
- // (wird spaeter nach Ueberarbeitung von symbol.cxx ueberfluessig werden).
- aSymSetMgrCopy.ChangeSymbolSet((SmSymSet *)1);
-
- // Symbolliste aktualiseren
+ const SmSym aNewSymbol( aSymbols.GetText(), aCharsetDisplay.GetFont(),
+ sal::static_int_cast< sal_Unicode >( aCharsetDisplay.GetSelectCharacter() ),
+ aSymbolSets.GetText() );
+ //DBG_ASSERT( aSymbolMgrCopy.GetSymbolByName(aTmpSymbolName) == NULL, "symbol already exists" );
+ aSymbolMgrCopy.AddOrReplaceSymbol( aNewSymbol );
+
+ // update display of new symbol
+ aSymbolDisplay.SetChar( aNewSymbol.GetCharacter() );
+ aSymbolDisplay.SetFont( aNewSymbol.GetFace() );
+ aSymbolName.SetText( aNewSymbol.GetName() );
+ aSymbolSetName.SetText( aNewSymbol.GetSymbolSetName() );
+
+ // update list box entries
+ FillSymbolSets(aOldSymbolSets, FALSE);
+ FillSymbolSets(aSymbolSets, FALSE);
FillSymbols(aOldSymbols ,FALSE);
FillSymbols(aSymbols ,FALSE);
@@ -1940,61 +1925,36 @@ IMPL_LINK( SmSymDefineDialog, ChangeClickHdl, Button *, EMPTYARG pButton )
DBG_ASSERT(aChangeBtn.IsEnabled(), "Sm : Voraussetzungen erfuellt ??");
#endif
- // finden des SymbolSets zum alten Symbol
- SmSymSet *pOldSymSet = GetSymbolSet(aOldSymbolSets);
-#if OSL_DEBUG_LEVEL > 1
- DBG_ASSERT(pOldSymSet, "Sm : NULL pointer");
-#endif
-
- // suchen des neuen SymbolSets
- SmSymSet *pNewSymSet = GetSymbolSet(aSymbolSets);
- // SymbolSet einfuegen falls es noch nicht existiert
- if (!pNewSymSet)
- {
- pNewSymSet = new SmSymSet(aSymbolSets.GetText());
- aSymSetMgrCopy.AddSymbolSet(pNewSymSet);
- FillSymbolSets(aOldSymbolSets, FALSE);
- FillSymbolSets(aSymbolSets, FALSE);
- }
-
- // das (alte) Symbol besorgen
- USHORT nSymbol = pOldSymSet->GetSymbolPos(aOldSymbols.GetText());
- SmSym *pSym = (SmSym *) &pOldSymSet->GetSymbol(nSymbol);
-#if OSL_DEBUG_LEVEL > 1
- DBG_ASSERT( SYMBOL_NONE != nSymbol, "symbol not found" );
- DBG_ASSERT(pSym, "Sm : NULL pointer");
-#endif
-
- // apply changes
- pSym->SetName( aSymbols.GetText() );
- //! get font from symbol-display since charset-display does not keep
+ // get new Sybol to use
+ //! get font from symbol-disp lay since charset-display does not keep
//! the bold attribut.
- pSym->SetFace( aSymbolDisplay.GetFont() );
// TO_DO_UCS4 (#i74049): get rid of cast without loosing UCS4 functionality
- pSym->SetCharacter( sal::static_int_cast< sal_Unicode >(aCharsetDisplay.GetSelectCharacter()) );
-
- // das SymbolSet wechseln wenn noetig
- if (pOldSymSet != pNewSymSet)
- {
- pNewSymSet->AddSymbol( new SmSym( *pSym ) );
- pOldSymSet->DeleteSymbol(nSymbol);
-
- //
- // update controls
- //
- // actualize symbol-lists in the dialog
- String aTmpOldSymbolName( pOrigSymbol->GetName() );
- aOldSymbols.SetText( String() );
- aOldSymbols.RemoveEntry( aTmpOldSymbolName );
- if (aSymbolSets.GetText() == aOldSymbolSets.GetText())
- aSymbols.RemoveEntry( aTmpOldSymbolName );
- // clear display for original symbol
+ const SmSym aNewSymbol( aSymbols.GetText(), aCharsetDisplay.GetFont(),
+ sal::static_int_cast< sal_Unicode >( aCharsetDisplay.GetSelectCharacter() ),
+ aSymbolSets.GetText() );
+
+ // remove old symbol if the name was changed then add new one
+// const bool bSetNameChanged = aOldSymbolSets.GetText() != aSymbolSets.GetText();
+ const bool bNameChanged = aOldSymbols.GetText() != aSymbols.GetText();
+ if (bNameChanged)
+ aSymbolMgrCopy.RemoveSymbol( aOldSymbols.GetText() );
+ aSymbolMgrCopy.AddOrReplaceSymbol( aNewSymbol, true );
+
+ // clear display for original symbol if necessary
+ if (bNameChanged)
SetOrigSymbol(NULL, XubString());
- }
- //!! den SymbolSet Manger dazu zwingen seinen HashTable zu aktualisieren,
- //!! um mit moeglich neuen bzw fehlenden alten Symbol Namen konform zu sein.
- aSymSetMgrCopy.ChangeSymbolSet((SmSymSet *)1);
+ // update display of new symbol
+ aSymbolDisplay.SetChar( aNewSymbol.GetCharacter() );
+ aSymbolDisplay.SetFont( aNewSymbol.GetFace() );
+ aSymbolName.SetText( aNewSymbol.GetName() );
+ aSymbolSetName.SetText( aNewSymbol.GetSymbolSetName() );
+
+ // update list box entries
+ FillSymbolSets(aOldSymbolSets, FALSE);
+ FillSymbolSets(aSymbolSets, FALSE);
+ FillSymbols(aOldSymbols ,FALSE);
+ FillSymbols(aSymbols ,FALSE);
UpdateButtons();
@@ -2012,33 +1972,16 @@ IMPL_LINK( SmSymDefineDialog, DeleteClickHdl, Button *, EMPTYARG pButton )
if (pOrigSymbol)
{
- // loeschen des Symbols:
- //
- // zugehoeriges SymbolSet finden
- SmSymSet *pSymSet = GetSymbolSet(aOldSymbolSets);
- // finden des Index
- XubString aTmpOldSymbolName (pOrigSymbol->GetName());
- USHORT nSymbolNo = pSymSet->GetSymbolPos(aTmpOldSymbolName);
- // Bezuege auf das Symbols loeschen
+ aSymbolMgrCopy.RemoveSymbol( pOrigSymbol->GetName() );
+
+ // clear display for original symbol
SetOrigSymbol(NULL, XubString());
- // und weg mit dem Symbol
- pSymSet->DeleteSymbol(nSymbolNo);
-#if OSL_DEBUG_LEVEL > 1
- DBG_ASSERT(pSymSet, "Sm : NULL pointer");
- DBG_ASSERT(nSymbolNo != SYMBOL_NONE, "Sm : kein Symbol");
-#endif
- //!! den SymbolSet Manger dazu zwingen seinen HashTable zu aktualisieren,
- //!! was er naemlich nicht tut, wenn in einem seiner SymbolSets geaendert/
- //!! geloescht wird, was wiederum zu einem Absturz fuehren kann (wenn er
- //!! ueber ein nicht mehr existentes aber nicht entferntes Symbol iteriert).
- aSymSetMgrCopy.ChangeSymbolSet((SmSymSet *)1);
-
- // aktualisieren der Symboleintraege des Dialogs
- aOldSymbols.SetText(XubString());
- aOldSymbols.RemoveEntry(aTmpOldSymbolName);
- if (aSymbolSets.GetText() == aOldSymbolSets.GetText())
- aSymbols.RemoveEntry(aTmpOldSymbolName);
+ // update list box entries
+ FillSymbolSets(aOldSymbolSets, FALSE);
+ FillSymbolSets(aSymbolSets, FALSE);
+ FillSymbols(aOldSymbols ,FALSE);
+ FillSymbols(aSymbols ,FALSE);
}
UpdateButtons();
@@ -2070,7 +2013,7 @@ void SmSymDefineDialog::UpdateButtons()
&& aCharsetDisplay.GetSelectCharacter() == pOrigSymbol->GetCharacter();
// hinzufuegen nur wenn es noch kein Symbol desgleichen Namens gibt
- bAdd = aSymSetMgrCopy.GetSymbolByName(aTmpSymbolName) == NULL;
+ bAdd = aSymbolMgrCopy.GetSymbolByName(aTmpSymbolName) == NULL;
// loeschen nur wenn alle Einstellungen gleich sind
bDelete = pOrigSymbol != NULL;
@@ -2078,9 +2021,12 @@ void SmSymDefineDialog::UpdateButtons()
// aendern wenn bei gleichem Namen mindestens eine Einstellung anders ist
// oder wenn es noch kein Symbol des neuen Namens gibt (wuerde implizites
// loeschen des bereits vorhandenen Symbols erfordern)
- BOOL bEqualName = pOrigSymbol && aTmpSymbolName == pOrigSymbol->GetName();
- bChange = pOrigSymbol && ( (bEqualName && !bEqual) || (!bEqualName && bAdd) );
- }
+// BOOL bEqualName = pOrigSymbol && aTmpSymbolName == pOrigSymbol->GetName();
+// bChange = pOrigSymbol && ( (bEqualName && !bEqual) || (!bEqualName && bAdd) );
+
+ // aendern nur falls altes Symbol vorhanden und am neuen etwas anders ist
+ bChange = pOrigSymbol && !bEqual;
+}
aAddBtn .Enable(bAdd);
aChangeBtn.Enable(bChange);
@@ -2089,7 +2035,7 @@ void SmSymDefineDialog::UpdateButtons()
SmSymDefineDialog::SmSymDefineDialog(Window * pParent,
- OutputDevice *pFntListDevice, SmSymSetManager &rMgr, BOOL bFreeRes) :
+ OutputDevice *pFntListDevice, SmSymbolManager &rMgr, BOOL bFreeRes) :
ModalDialog (pParent, SmResId(RID_SYMDEFINEDIALOG)),
aOldSymbolText (this, SmResId(1)),
aOldSymbols (this, SmResId(1)),
@@ -2120,7 +2066,7 @@ SmSymDefineDialog::SmSymDefineDialog(Window * pParent,
aRightArrow (this, SmResId(1)),
aRigthArrow_Im (SmResId(1)),
aRigthArrow_Im_HC (SmResId(2)), // hi-contrast version
- rSymSetMgr (rMgr),
+ rSymbolMgr (rMgr),
pSubsetMap (NULL),
pFontList (NULL)
{
@@ -2131,9 +2077,10 @@ SmSymDefineDialog::SmSymDefineDialog(Window * pParent,
pOrigSymbol = 0;
- // make autocompletion for symbols case-sensitive
- aOldSymbols.EnableAutocomplete(TRUE, TRUE);
- aSymbols .EnableAutocomplete(TRUE, TRUE);
+ // auto completion is troublesome since that symbols character also gets automatically selected in the
+ // display and if the user previously selected a character to define/redefine that one this is bad
+ aOldSymbols.EnableAutocomplete( FALSE, TRUE );
+ aSymbols .EnableAutocomplete( FALSE, TRUE );
FillFonts();
if (aFonts.GetEntryCount() > 0)
@@ -2141,7 +2088,7 @@ SmSymDefineDialog::SmSymDefineDialog(Window * pParent,
InitColor_Impl();
- SetSymbolSetManager(rSymSetMgr);
+ SetSymbolSetManager(rSymbolMgr);
aOldSymbols .SetSelectHdl(LINK(this, SmSymDefineDialog, OldSymbolChangeHdl));
aOldSymbolSets .SetSelectHdl(LINK(this, SmSymDefineDialog, OldSymbolSetChangeHdl));
@@ -2215,41 +2162,23 @@ short SmSymDefineDialog::Execute()
short nResult = ModalDialog::Execute();
// Aenderungen uebernehmen falls Dialog mit OK beendet wurde
- if (aSymSetMgrCopy.IsModified() && nResult == RET_OK)
- {
- // leere SymbolSets aus dem Ergebnis entfernen.
- // Dabei von hinten durch das array iterieren, da beim loeschen die
- // Elemente aufruecken.
- USHORT nSymbolSets = aSymSetMgrCopy.GetSymbolSetCount();
- for (USHORT i = 0; i < nSymbolSets; i++)
- {
- USHORT nIdx = nSymbolSets - 1 - i;
- if (aSymSetMgrCopy.GetSymbolSet(nIdx)->GetCount() == 0)
- aSymSetMgrCopy.DeleteSymbolSet(nIdx);
- }
-
-
-
- rSymSetMgr = aSymSetMgrCopy;
-#ifdef DEBUG
-// USHORT nS = rSymSetMgr.GetSymbolSetCount();
-#endif
- }
+ if (aSymbolMgrCopy.IsModified() && nResult == RET_OK)
+ rSymbolMgr = aSymbolMgrCopy;
return nResult;
}
-void SmSymDefineDialog::SetSymbolSetManager(const SmSymSetManager &rMgr)
+void SmSymDefineDialog::SetSymbolSetManager(const SmSymbolManager &rMgr)
{
- aSymSetMgrCopy = rMgr;
+ aSymbolMgrCopy = rMgr;
#ifdef DEBUG
-// USHORT nS = aSymSetMgrCopy.GetSymbolSetCount();
+// USHORT nS = aSymbolMgrCopy.GetSymbolSetCount();
#endif
// Das modified Flag der Kopie auf FALSE setzen, damit man spaeter damit
// testen kann ob sich was geaendert hat.
- aSymSetMgrCopy.SetModified(FALSE);
+ aSymbolMgrCopy.SetModified(FALSE);
FillSymbolSets(aOldSymbolSets);
if (aOldSymbolSets.GetEntryCount() > 0)
@@ -2404,13 +2333,13 @@ BOOL SmSymDefineDialog::SelectSymbol(ComboBox &rComboBox,
{
// bei Wechsel des alten Symbols nur vorhandene anzeigen sonst keins
const SmSym *pOldSymbol = NULL;
- XubString aTMpOldSymbolSetName;
+ XubString aTmpOldSymbolSetName;
if (nPos != COMBOBOX_ENTRY_NOTFOUND)
{
- pOldSymbol = aSymSetMgrCopy.GetSymbolByName(aNormName);
- aTMpOldSymbolSetName = aOldSymbolSets.GetText();
+ pOldSymbol = aSymbolMgrCopy.GetSymbolByName(aNormName);
+ aTmpOldSymbolSetName = aOldSymbolSets.GetText();
}
- SetOrigSymbol(pOldSymbol, aTMpOldSymbolSetName);
+ SetOrigSymbol(pOldSymbol, aTmpOldSymbolSetName);
}
else
aSymbolName.SetText(rComboBox.GetText());
diff --git a/starmath/source/document.cxx b/starmath/source/document.cxx
index ff2d5bed71a2..49739af72972 100644
--- a/starmath/source/document.cxx
+++ b/starmath/source/document.cxx
@@ -143,8 +143,8 @@ void SmDocShell::LoadSymbols()
{
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::LoadSymbols" );
- SmModule *pp = SM_MOD1();
- pp->GetSymSetManager().Load();
+ SmModule *pp = SM_MOD();
+ pp->GetSymbolManager().Load();
}
@@ -274,7 +274,7 @@ void SmDocShell::ArrangeFormula()
pOutDev = &pView->GetGraphicWindow();
else
{
- pOutDev = &SM_MOD1()->GetDefaultVirtualDev();
+ pOutDev = &SM_MOD()->GetDefaultVirtualDev();
pOutDev->SetMapMode( MapMode(MAP_100TH_MM) );
}
}
@@ -608,7 +608,7 @@ Printer* SmDocShell::GetPrt()
SID_NO_RIGHT_SPACES, SID_NO_RIGHT_SPACES,
0);
- SmModule *pp = SM_MOD1();
+ SmModule *pp = SM_MOD();
pp->GetConfig()->ConfigToItemSet(*pOptions);
pPrinter = new SfxPrinter(pOptions);
pPrinter->SetMapMode( MapMode(MAP_100TH_MM) );
@@ -690,7 +690,7 @@ SmDocShell::SmDocShell( const sal_uInt64 i_nSfxCreationFlags ) :
SetPool(&SFX_APP()->GetPool());
- SmModule *pp = SM_MOD1();
+ SmModule *pp = SM_MOD();
aFormat = pp->GetConfig()->GetStandardFormat();
StartListening(aFormat);
@@ -705,7 +705,7 @@ SmDocShell::~SmDocShell()
{
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::~SmDocShell" );
- SmModule *pp = SM_MOD1();
+ SmModule *pp = SM_MOD();
EndListening(aFormat);
EndListening(*pp->GetConfig());
@@ -1001,7 +1001,7 @@ void SmDocShell::Execute(SfxRequest& rReq)
case SID_AUTO_REDRAW :
{
- SmModule *pp = SM_MOD1();
+ SmModule *pp = SM_MOD();
BOOL bRedraw = pp->GetConfig()->IsAutoRedraw();
pp->GetConfig()->SetAutoRedraw(!bRedraw);
}
@@ -1020,7 +1020,7 @@ void SmDocShell::Execute(SfxRequest& rReq)
// get device used to retrieve the FontList
OutputDevice *pDev = GetPrinter();
if (!pDev || pDev->GetDevFontCount() == 0)
- pDev = &SM_MOD1()->GetDefaultVirtualDev();
+ pDev = &SM_MOD()->GetDefaultVirtualDev();
DBG_ASSERT (pDev, "device for font list missing" );
SmFontTypeDialog *pFontTypeDialog = new SmFontTypeDialog( NULL, pDev );
@@ -1104,7 +1104,7 @@ void SmDocShell::Execute(SfxRequest& rReq)
pAlignDialog->WriteTo(aNewFormat);
- SmModule *pp = SM_MOD1();
+ SmModule *pp = SM_MOD();
SmFormat aFmt( pp->GetConfig()->GetStandardFormat() );
pAlignDialog->WriteTo( aFmt );
pp->GetConfig()->SetStandardFormat( aFmt );
@@ -1201,7 +1201,7 @@ void SmDocShell::GetState(SfxItemSet &rSet)
case SID_AUTO_REDRAW :
{
- SmModule *pp = SM_MOD1();
+ SmModule *pp = SM_MOD();
BOOL bRedraw = pp->GetConfig()->IsAutoRedraw();
rSet.Put(SfxBoolItem(SID_AUTO_REDRAW, bRedraw));
@@ -1290,8 +1290,8 @@ void SmDocShell::SaveSymbols()
{
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::SaveSymbols" );
- SmModule *pp = SM_MOD1();
- pp->GetSymSetManager().Save();
+ SmModule *pp = SM_MOD();
+ pp->GetSymbolManager().Save();
}
diff --git a/starmath/source/edit.cxx b/starmath/source/edit.cxx
index 94e30ce82501..f7093f9c3815 100644
--- a/starmath/source/edit.cxx
+++ b/starmath/source/edit.cxx
@@ -113,14 +113,13 @@ SmEditWindow::SmEditWindow( SmCmdBoxWindow &rMyCmdBoxWin ) :
// Even RTL languages don't use RTL for math
rCmdBox.GetEditWindow()->EnableRTL( FALSE );
- ApplyColorConfigValues( SM_MOD1()->GetColorConfig() );
+ ApplyColorConfigValues( SM_MOD()->GetColorConfig() );
// compare DataChanged
SetBackground( GetSettings().GetStyleSettings().GetWindowColor() );
aModifyTimer.SetTimeoutHdl(LINK(this, SmEditWindow, ModifyTimerHdl));
- aModifyTimer.SetTimeout(2000);
- aModifyTimer.Start();
+ aModifyTimer.SetTimeout(500);
aCursorMoveTimer.SetTimeoutHdl(LINK(this, SmEditWindow, CursorMoveTimerHdl));
aCursorMoveTimer.SetTimeout(500);
@@ -216,7 +215,7 @@ void SmEditWindow::DataChanged( const DataChangedEvent& )
{
const StyleSettings aSettings( GetSettings().GetStyleSettings() );
- ApplyColorConfigValues( SM_MOD1()->GetColorConfig() );
+ ApplyColorConfigValues( SM_MOD()->GetColorConfig() );
SetBackground( aSettings.GetWindowColor() );
// edit fields in other Applications use this font instead of
@@ -250,10 +249,9 @@ void SmEditWindow::DataChanged( const DataChangedEvent& )
IMPL_LINK( SmEditWindow, ModifyTimerHdl, Timer *, EMPTYARG /*pTimer*/ )
{
- SmModule *pp = SM_MOD1();
+ SmModule *pp = SM_MOD();
if (pp->GetConfig()->IsAutoRedraw())
Flush();
- aModifyTimer.Start();
return 0;
}
@@ -882,7 +880,10 @@ void SmEditWindow::Cut()
{
DBG_ASSERT( pEditView, "EditView missing" );
if (pEditView)
+ {
pEditView->Cut();
+ GetDoc()->SetModified( TRUE );
+ }
}
void SmEditWindow::Copy()
@@ -896,14 +897,20 @@ void SmEditWindow::Paste()
{
DBG_ASSERT( pEditView, "EditView missing" );
if (pEditView)
+ {
pEditView->Paste();
+ GetDoc()->SetModified( TRUE );
+ }
}
void SmEditWindow::Delete()
{
DBG_ASSERT( pEditView, "EditView missing" );
if (pEditView)
+ {
pEditView->DeleteSelected();
+ GetDoc()->SetModified( TRUE );
+ }
}
void SmEditWindow::InsertText(const String& Text)
diff --git a/starmath/source/makefile.mk b/starmath/source/makefile.mk
index d786e0423db3..da605136004f 100644
--- a/starmath/source/makefile.mk
+++ b/starmath/source/makefile.mk
@@ -48,32 +48,32 @@ SRC2FILES = smres.src \
commands.src
SLO1FILES = \
- $(SLO)$/register.obj \
- $(SLO)$/typemap.obj \
+ $(SLO)$/accessibility.obj \
+ $(SLO)$/edit.obj \
+ $(SLO)$/eqnolefilehdr.obj \
+ $(SLO)$/mathmlexport.obj \
+ $(SLO)$/mathmlimport.obj \
$(SLO)$/symbol.obj \
- $(SLO)$/toolbox.obj \
+ $(SLO)$/types.obj \
+ $(SLO)$/unodoc.obj \
$(SLO)$/action.obj \
- $(SLO)$/accessibility.obj \
$(SLO)$/cfgitem.obj \
$(SLO)$/config.obj \
$(SLO)$/dialog.obj \
$(SLO)$/document.obj \
- $(SLO)$/mathtype.obj \
- $(SLO)$/mathmlimport.obj \
- $(SLO)$/mathmlexport.obj \
$(SLO)$/format.obj \
+ $(SLO)$/mathtype.obj \
$(SLO)$/node.obj \
$(SLO)$/parse.obj \
- $(SLO)$/utility.obj \
+ $(SLO)$/register.obj \
$(SLO)$/smdll.obj \
+ $(SLO)$/toolbox.obj \
+ $(SLO)$/typemap.obj \
$(SLO)$/smmod.obj \
- $(SLO)$/types.obj \
- $(SLO)$/view.obj \
- $(SLO)$/edit.obj \
+ $(SLO)$/utility.obj \
$(SLO)$/rect.obj \
$(SLO)$/unomodel.obj \
- $(SLO)$/unodoc.obj \
- $(SLO)$/eqnolefilehdr.obj
+ $(SLO)$/view.obj
SLO2FILES = \
$(SLO)$/register.obj \
@@ -88,12 +88,14 @@ EXCEPTIONSFILES = \
$(SLO)$/register.obj \
$(SLO)$/accessibility.obj \
$(SLO)$/cfgitem.obj \
+ $(SLO)$/dialog.obj \
$(SLO)$/document.obj \
$(SLO)$/node.obj \
$(SLO)$/parse.obj \
$(SLO)$/mathmlimport.obj \
$(SLO)$/mathmlexport.obj \
$(SLO)$/mathtype.obj \
+ $(SLO)$/smdll.obj \
$(SLO)$/view.obj \
$(SLO)$/unomodel.obj \
$(SLO)$/smdetect.obj \
diff --git a/starmath/source/node.cxx b/starmath/source/node.cxx
index 722df5a1d502..4601b2f84fec 100644
--- a/starmath/source/node.cxx
+++ b/starmath/source/node.cxx
@@ -115,7 +115,7 @@ Color SmTmpDevice::Impl_GetColor( const Color& rColor )
if (OUTDEV_WINDOW == rOutDev.GetOutDevType())
aBgCol = ((Window &) rOutDev).GetDisplayBackground().GetColor();
- nNewCol = SM_MOD1()->GetColorConfig().GetColorValue(svtools::FONTCOLOR).nColor;
+ nNewCol = SM_MOD()->GetColorConfig().GetColorValue(svtools::FONTCOLOR).nColor;
Color aTmpColor( nNewCol );
if (aBgCol.IsDark() && aTmpColor.IsDark())
@@ -831,8 +831,9 @@ void SmLineNode::Arrange(const OutputDevice &rDev, const SmFormat &rFormat)
return;
// make distance depend on font size
- long nDist = +(rFormat.GetDistance(DIS_HORIZONTAL)
- * GetFont().GetSize().Height()) / 100L;
+ long nDist = (rFormat.GetDistance(DIS_HORIZONTAL) * GetFont().GetSize().Height()) / 100L;
+ if (!IsUseExtraSpaces())
+ nDist = 0;
Point aPos;
for (i = 0; i < nSize; i++)
@@ -2803,9 +2804,9 @@ void SmSpecialNode::Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell
SmNode::Prepare(rFormat, rDocShell);
const SmSym *pSym;
- SmModule *pp = SM_MOD1();
+ SmModule *pp = SM_MOD();
- if (NULL != (pSym = pp->GetSymSetManager().GetSymbolByName(GetToken().aText)))
+ if (NULL != (pSym = pp->GetSymbolManager().GetSymbolByName(GetToken().aText)))
{
SetText( pSym->GetCharacter() );
GetFont() = pSym->GetFace();
diff --git a/starmath/source/parse.cxx b/starmath/source/parse.cxx
index 1955b0553b62..15971d0c38af 100644
--- a/starmath/source/parse.cxx
+++ b/starmath/source/parse.cxx
@@ -242,12 +242,13 @@ static const SmTokenTableEntry aTokenTable[] =
{ "ni", TNI, MS_NI, TGRELATION, 0},
{ "nitalic", TNITALIC, '\0', TGFONTATTR, 5},
{ "none", TNONE, '\0', TGLBRACES | TGRBRACES, 0},
+ { "nospace", TNOSPACE, '\0', TGSTANDALONE, 5},
{ "notin", TNOTIN, MS_NOTIN, TGRELATION, 0},
+ { "nroot", TNROOT, MS_SQRT, TGUNOPER, 5},
{ "nsubset", TNSUBSET, MS_NSUBSET, TGRELATION, 0 },
{ "nsupset", TNSUPSET, MS_NSUPSET, TGRELATION, 0 },
{ "nsubseteq", TNSUBSETEQ, MS_NSUBSETEQ, TGRELATION, 0 },
{ "nsupseteq", TNSUPSETEQ, MS_NSUPSETEQ, TGRELATION, 0 },
- { "nroot", TNROOT, MS_SQRT, TGUNOPER, 5},
{ "odivide", TODIVIDE, MS_ODIVIDE, TGPRODUCT, 0},
{ "odot", TODOT, MS_ODOT, TGPRODUCT, 0},
{ "ominus", TOMINUS, MS_OMINUS, TGSUM, 0},
@@ -380,7 +381,7 @@ BOOL SmParser::IsDelimiter( const String &rTxt, xub_StrLen nPos )
BOOL bIsDelim = *pDelim != 0;
- INT16 nTypJp = SM_MOD1()->GetSysLocale().GetCharClass().getType( rTxt, nPos );
+ INT16 nTypJp = SM_MOD()->GetSysLocale().GetCharClass().getType( rTxt, nPos );
bIsDelim |= nTypJp == com::sun::star::i18n::UnicodeType::SPACE_SEPARATOR ||
nTypJp == com::sun::star::i18n::UnicodeType::CONTROL;
@@ -438,7 +439,7 @@ void SmParser::NextToken()
xub_StrLen nRealStart;
BOOL bCont;
BOOL bNumStart = FALSE;
- CharClass aCC(SM_MOD1()->GetSysLocale().GetCharClass().getLocale());
+ CharClass aCC(SM_MOD()->GetSysLocale().GetCharClass().getLocale());
do
{
// skip white spaces
@@ -731,7 +732,7 @@ void SmParser::NextToken()
xub_StrLen nTmpStart = sal::static_int_cast< xub_StrLen >(rnEndPos +
aTmpRes.LeadingWhiteSpace);
- // default setting fo the case that no identifier
+ // default setting for the case that no identifier
// i.e. a valid symbol-name is following the '%'
// character
CurToken.eType = TTEXT;
@@ -1132,6 +1133,16 @@ void SmParser::Line()
void SmParser::Expression()
{
+ BOOL bUseExtraSpaces = TRUE;
+ SmNode *pNode = NodeStack.Pop();
+ if (pNode)
+ {
+ if (pNode->GetToken().eType == TNOSPACE)
+ bUseExtraSpaces = FALSE;
+ else
+ NodeStack.Push(pNode); // push the node from above again (now to be used as argument to this current 'nospace' node)
+ }
+
USHORT n = 0;
SmNodeArray RelationArray;
@@ -1147,8 +1158,9 @@ void SmParser::Expression()
RelationArray[n - 1] = NodeStack.Pop();
}
- SmStructureNode *pSNode = new SmExpressionNode(CurToken);
+ SmExpressionNode *pSNode = new SmExpressionNode(CurToken);
pSNode->SetSubNodes(RelationArray);
+ pSNode->SetUseExtraSpaces(bUseExtraSpaces);
NodeStack.Push(pSNode);
}
@@ -1270,7 +1282,7 @@ void SmParser::SubSup(ULONG nActiveGroup)
return;
SmSubSupNode *pNode = new SmSubSupNode(CurToken);
- //! Of course 'CurToken' ist just the first sub-/supscript token.
+ //! Of course 'CurToken' is just the first sub-/supscript token.
//! It should be of no further interest. The positions of the
//! sub-/supscripts will be identified by the corresponding subnodes
//! index in the 'aSubNodes' array (enum value from 'SmSubSup').
@@ -1362,7 +1374,7 @@ void SmParser::Blank()
// Blanks am Zeilenende ignorieren wenn die entsprechende Option gesetzt ist
if ( CurToken.eType == TNEWLINE ||
- (CurToken.eType == TEND && SM_MOD1()->GetConfig()->IsIgnoreSpacesRight()) )
+ (CurToken.eType == TEND && SM_MOD()->GetConfig()->IsIgnoreSpacesRight()) )
{
pBlankNode->Clear();
}
@@ -1374,30 +1386,51 @@ void SmParser::Blank()
void SmParser::Term()
{
switch (CurToken.eType)
- { case TESCAPE :
+ {
+ case TESCAPE :
Escape();
break;
+ case TNOSPACE :
case TLGROUP :
- NextToken();
-
- // allow for empty group
- if (CurToken.eType == TRGROUP)
- { SmStructureNode *pSNode = new SmExpressionNode(CurToken);
- pSNode->SetSubNodes(NULL, NULL);
- NodeStack.Push(pSNode);
-
+ {
+ bool bNoSpace = CurToken.eType == TNOSPACE;
+ if (bNoSpace) // push 'no space' node and continue to parse expression
+ {
+ NodeStack.Push(new SmExpressionNode(CurToken));
NextToken();
}
- else // go as usual
- { Align();
- if (CurToken.eType != TRGROUP)
- Error(PE_RGROUP_EXPECTED);
- else
- { NextToken();
+ if (CurToken.eType != TLGROUP)
+ {
+ NodeStack.Pop(); // get rid of the 'no space' node pushed above
+ Term();
+ }
+ else
+ {
+ NextToken();
+
+ // allow for empty group
+ if (CurToken.eType == TRGROUP)
+ {
+ if (bNoSpace) // get rid of the 'no space' node pushed above
+ NodeStack.Pop();
+ SmStructureNode *pSNode = new SmExpressionNode(CurToken);
+ pSNode->SetSubNodes(NULL, NULL);
+ NodeStack.Push(pSNode);
+
+ NextToken();
+ }
+ else // go as usual
+ {
+ Align();
+ if (CurToken.eType != TRGROUP)
+ Error(PE_RGROUP_EXPECTED);
+ else
+ NextToken();
}
}
- break;
+ }
+ break;
case TLEFT :
Brace();
@@ -2286,13 +2319,13 @@ void SmParser::Special()
// UI uses localized names XML file format does not.)
if (IsImportSymbolNames())
{
- const SmLocalizedSymbolData &rLSD = SM_MOD1()->GetLocSymbolData();
+ const SmLocalizedSymbolData &rLSD = SM_MOD()->GetLocSymbolData();
aNewName = rLSD.GetUiSymbolName( rName );
bReplace = TRUE;
}
else if (IsExportSymbolNames())
{
- const SmLocalizedSymbolData &rLSD = SM_MOD1()->GetLocSymbolData();
+ const SmLocalizedSymbolData &rLSD = SM_MOD()->GetLocSymbolData();
aNewName = rLSD.GetExportSymbolName( rName );
bReplace = TRUE;
}
@@ -2300,7 +2333,7 @@ void SmParser::Special()
else // 5.0 <-> 6.0 formula text (symbol name) conversion
{
LanguageType nLanguage = GetLanguage();
- SmLocalizedSymbolData &rData = SM_MOD1()->GetLocSymbolData();
+ SmLocalizedSymbolData &rData = SM_MOD()->GetLocSymbolData();
const ResStringArray *pFrom = 0;
const ResStringArray *pTo = 0;
if (CONVERT_50_TO_60 == GetConversion())
diff --git a/starmath/source/rect.cxx b/starmath/source/rect.cxx
index 02df2ddf060e..248983a393a8 100644
--- a/starmath/source/rect.cxx
+++ b/starmath/source/rect.cxx
@@ -715,7 +715,7 @@ BOOL SmGetGlyphBoundRect(const OutputDevice &rDev,
{
// since we format for the printer (where GetTextBoundRect will fail)
// we need a virtual device here.
- pGlyphDev = &SM_MOD1()->GetDefaultVirtualDev();
+ pGlyphDev = &SM_MOD()->GetDefaultVirtualDev();
}
const FontMetric aDevFM (rDev.GetFontMetric());
diff --git a/starmath/source/smdetect.cxx b/starmath/source/smdetect.cxx
index df49bf57205a..6986864f6e80 100644
--- a/starmath/source/smdetect.cxx
+++ b/starmath/source/smdetect.cxx
@@ -168,7 +168,7 @@ SmFilterDetect::~SmFilterDetect()
}
else if( lDescriptor[nProperty].Name == OUString(RTL_CONSTASCII_USTRINGPARAM("InteractionHandler")) )
lDescriptor[nProperty].Value >>= xInteraction;
- else if( lDescriptor[nProperty].Name == OUString(RTL_CONSTASCII_USTRINGPARAM("RapairPackage")) )
+ else if( lDescriptor[nProperty].Name == OUString(RTL_CONSTASCII_USTRINGPARAM("RepairPackage")) )
lDescriptor[nProperty].Value >>= bRepairPackage;
else if( lDescriptor[nProperty].Name == OUString(RTL_CONSTASCII_USTRINGPARAM("DocumentTitle")) )
nIndexOfDocumentTitle = nProperty;
diff --git a/starmath/source/smdll.cxx b/starmath/source/smdll.cxx
index 63a86d520d9e..a66ec8efc608 100644
--- a/starmath/source/smdll.cxx
+++ b/starmath/source/smdll.cxx
@@ -40,6 +40,7 @@
#include <sfx2/docfile.hxx>
#include <sfx2/docfilt.hxx>
#include <sfx2/app.hxx>
+#include <sfx2/taskpane.hxx>
#ifndef _SMDLL_HXX
#include <smdll.hxx>
@@ -75,7 +76,7 @@ void SmDLL::Init()
SmModule** ppShlPtr = (SmModule**) GetAppData(SHL_SM);
*ppShlPtr = new SmModule( &rFactory );
- SfxModule *p = SM_MOD1();
+ SfxModule *p = SM_MOD();
SmModule *pp = (SmModule *) p;
rFactory.SetDocumentServiceName( String::CreateFromAscii("com.sun.star.formula.FormulaProperties") );
@@ -94,6 +95,8 @@ void SmDLL::Init()
SmToolBoxWrapper::RegisterChildWindow(TRUE);
SmCmdBoxWrapper::RegisterChildWindow(TRUE);
+
+ ::sfx2::TaskPaneWrapper::RegisterChildWindow( FALSE, pp );
}
/*************************************************************************
diff --git a/starmath/source/smmod.cxx b/starmath/source/smmod.cxx
index 451bb8664bc5..da6259076adc 100644
--- a/starmath/source/smmod.cxx
+++ b/starmath/source/smmod.cxx
@@ -98,7 +98,7 @@ const String SmLocalizedSymbolData::GetUiSymbolName( const String &rExportName )
{
String aRes;
- const SmLocalizedSymbolData &rData = SM_MOD1()->GetLocSymbolData();
+ const SmLocalizedSymbolData &rData = SM_MOD()->GetLocSymbolData();
const ResStringArray &rUiNames = rData.GetUiSymbolNamesArray();
const ResStringArray &rExportNames = rData.GetExportSymbolNamesArray();
USHORT nCount = sal::static_int_cast< xub_StrLen >(rExportNames.Count());
@@ -119,7 +119,7 @@ const String SmLocalizedSymbolData::GetExportSymbolName( const String &rUiName )
{
String aRes;
- const SmLocalizedSymbolData &rData = SM_MOD1()->GetLocSymbolData();
+ const SmLocalizedSymbolData &rData = SM_MOD()->GetLocSymbolData();
const ResStringArray &rUiNames = rData.GetUiSymbolNamesArray();
const ResStringArray &rExportNames = rData.GetExportSymbolNamesArray();
USHORT nCount = sal::static_int_cast< xub_StrLen >(rUiNames.Count());
@@ -140,7 +140,7 @@ const String SmLocalizedSymbolData::GetUiSymbolSetName( const String &rExportNam
{
String aRes;
- const SmLocalizedSymbolData &rData = SM_MOD1()->GetLocSymbolData();
+ const SmLocalizedSymbolData &rData = SM_MOD()->GetLocSymbolData();
const ResStringArray &rUiNames = rData.GetUiSymbolSetNamesArray();
const ResStringArray &rExportNames = rData.GetExportSymbolSetNamesArray();
USHORT nCount = sal::static_int_cast< xub_StrLen >(rExportNames.Count());
@@ -161,7 +161,7 @@ const String SmLocalizedSymbolData::GetExportSymbolSetName( const String &rUiNam
{
String aRes;
- const SmLocalizedSymbolData &rData = SM_MOD1()->GetLocSymbolData();
+ const SmLocalizedSymbolData &rData = SM_MOD()->GetLocSymbolData();
const ResStringArray &rUiNames = rData.GetUiSymbolSetNamesArray();
const ResStringArray &rExportNames = rData.GetExportSymbolSetNamesArray();
USHORT nCount = sal::static_int_cast< xub_StrLen >(rUiNames.Count());
@@ -311,9 +311,9 @@ SmConfig * SmModule::GetConfig()
return pConfig;
}
-SmSymSetManager & SmModule::GetSymSetManager()
+SmSymbolManager & SmModule::GetSymbolManager()
{
- return GetConfig()->GetSymSetManager();
+ return GetConfig()->GetSymbolManager();
}
SmLocalizedSymbolData & SmModule::GetLocSymbolData() const
diff --git a/starmath/source/smres.src b/starmath/source/smres.src
index a171fe002a21..9645a6f0bde1 100644
--- a/starmath/source/smres.src
+++ b/starmath/source/smres.src
@@ -1556,7 +1556,7 @@ FloatingWindow RID_TOOLBOXWINDOW
OutputSize = TRUE ;
SVLook = TRUE ;
Size = MAP_APPFONT ( 0 , 0 ) ;
- Text [ en-US ] = "Formula Elements" ;
+ Text [ en-US ] = "Elements" ;
ToolBox 1
{
@@ -3557,7 +3557,7 @@ StringArray RID_PRINTUIOPTIONS
{
< "%PRODUCTNAME %s"; >;
< "Contents"; >;
- < "~Title row"; >;
+ < "~Title"; >;
< "Specifies whether you want the name of the document to be included in the printout"; >;
< "~Formula text"; >;
< "Specifies whether to include the contents of the 'Commands' window at the bottom of the printout."; >;
diff --git a/starmath/source/symbol.cxx b/starmath/source/symbol.cxx
index 7d2799b71647..e248f9726629 100644
--- a/starmath/source/symbol.cxx
+++ b/starmath/source/symbol.cxx
@@ -34,12 +34,13 @@
#include <ucbhelper/content.hxx>
#include <vcl/msgbox.hxx>
-#ifndef _SV_RESARY_HXX
-#include <tools/resary.hxx>
-#endif
#include <sfx2/dispatch.hxx>
#include <sfx2/docfile.hxx>
+#include <map>
+#include <vector>
+#include <iterator>
+
#include "symbol.hxx"
#include "view.hxx"
#include "utility.hxx"
@@ -55,72 +56,38 @@ using namespace ::com::sun::star::ucb;
using namespace ::com::sun::star::uno;
using namespace ::rtl;
-// Das hier muss auch mal alles "uberarbeitet werden. Insbesondere die nicht
-// funktionierende und bei l"oschen/"andern von Symbolen nicht gepflegte
-// Hash Tabelle!!! Diese aktualisert sich erst im Wertzuweisungsoperator
-// beim Verlassen des 'SmSymDefineDialog's!
-
-/**************************************************************************/
-/*
-**
-** MACRO DEFINTION
-**
-**/
-
-#define SF_SM20IDENT 0x03031963L
-#define SF_IDENT 0x30334D53L
-
-
-SV_IMPL_PTRARR( SymbolArray, SmSym * );
-
-/**************************************************************************/
-/*
-**
-** DATA DEFINITION
-**
-**/
-
-long SF_Ident = SF_IDENT;
/**************************************************************************/
-/*
-**
-** CLASS IMPLEMENTATION
-**
-**/
SmSym::SmSym() :
- Name(C2S("unknown")),
- aSetName(C2S("unknown")),
- pHashNext(0),
- pSymSetManager(0),
- Character('\0'),
- bPredefined(FALSE),
- bDocSymbol(FALSE)
+ m_aName(C2S("unknown")),
+ m_aSetName(C2S("unknown")),
+ m_cChar('\0'),
+ m_bPredefined(FALSE),
+ m_bDocSymbol(FALSE)
{
- aExportName = Name;
- Face.SetTransparent(TRUE);
- Face.SetAlign(ALIGN_BASELINE);
+ m_aExportName = m_aName;
+ m_aFace.SetTransparent(TRUE);
+ m_aFace.SetAlign(ALIGN_BASELINE);
}
SmSym::SmSym(const SmSym& rSymbol)
{
- pSymSetManager = 0;
*this = rSymbol;
}
-SmSym::SmSym(const String& rName, const Font& rFont, sal_Unicode aChar,
+SmSym::SmSym(const String& rName, const Font& rFont, sal_Unicode cChar,
const String& rSet, BOOL bIsPredefined)
{
- Name = aExportName = rName;
+ m_aName = m_aExportName = rName;
- Face = rFont;
- Face.SetTransparent(TRUE);
- Face.SetAlign(ALIGN_BASELINE);
+ m_aFace = rFont;
+ m_aFace.SetTransparent(TRUE);
+ m_aFace.SetAlign(ALIGN_BASELINE);
- Character = aChar;
+ m_cChar = cChar;
//! according to HDU this should not be used anymore now
//! since this was necessary in the early days but should
//! not be done now since this is handled now at a more
@@ -132,481 +99,231 @@ SmSym::SmSym(const String& rName, const Font& rFont, sal_Unicode aChar,
//
// if (RTL_TEXTENCODING_SYMBOL == rFont.GetCharSet())
// Character |= 0xF000;
- aSetName = rSet;
- bPredefined = bIsPredefined;
- bDocSymbol = FALSE;
-
- pHashNext = 0;
- pSymSetManager = 0;
+ m_aSetName = rSet;
+ m_bPredefined = bIsPredefined;
+ m_bDocSymbol = FALSE;
}
SmSym& SmSym::operator = (const SmSym& rSymbol)
{
- Name = rSymbol.Name;
- Face = rSymbol.Face;
- Character = rSymbol.Character;
- aSetName = rSymbol.aSetName;
- bPredefined = rSymbol.bPredefined;
- bDocSymbol = rSymbol.bDocSymbol;
- aExportName = rSymbol.aExportName;
-
- pHashNext = 0;
-
- if (pSymSetManager)
- pSymSetManager->SetModified(TRUE);
-
- return *this;
-}
-
-/**************************************************************************/
-
-SmSymSet::SmSymSet() :
- Name(C2S("unknown")),
- pSymSetManager(0)
-{
- SymbolList.Clear();
-}
-
-SmSymSet::SmSymSet(const SmSymSet& rSymbolSet)
-{
- pSymSetManager = 0;
- *this = rSymbolSet;
-}
-
-SmSymSet::SmSymSet(const String& rName)
-{
- Name = rName;
- SymbolList.Clear();
-
- pSymSetManager = 0;
-}
-
-SmSymSet::~SmSymSet()
-{
- for (USHORT i = 0; i < GetCount(); i++)
- delete SymbolList.GetObject(i);
-}
-
-SmSymSet& SmSymSet::operator = (const SmSymSet& rSymbolSet)
-{
- USHORT i;
- for (i = 0; i < GetCount(); i++)
- delete SymbolList.GetObject(i);
-
- Name = rSymbolSet.Name;
- SymbolList.Clear();
- for (i = 0; i < rSymbolSet.GetCount(); i++)
- AddSymbol(new SmSym(rSymbolSet.GetSymbol(i)));
+ m_aName = rSymbol.m_aName;
+ m_aExportName = rSymbol.m_aExportName;
+ m_cChar = rSymbol.m_cChar;
+ m_aFace = rSymbol.m_aFace;
+ m_aSetName = rSymbol.m_aSetName;
+ m_bPredefined = rSymbol.m_bPredefined;
+ m_bDocSymbol = rSymbol.m_bDocSymbol;
+ SmSymbolManager * pSymSetManager = &SM_MOD()->GetSymbolManager();
if (pSymSetManager)
- pSymSetManager->SetModified(TRUE);
+ pSymSetManager->SetModified(true);
return *this;
}
-USHORT SmSymSet::AddSymbol(SmSym* pSymbol)
-{
- DBG_ASSERT(pSymbol, "Kein Symbol");
-
- if (pSymbol)
- pSymbol->SetSetName( GetName() );
- SymbolList.Insert(pSymbol, LIST_APPEND);
- DBG_ASSERT(SymbolList.GetPos(pSymbol) == SymbolList.Count() - 1,
- "Sm : ... ergibt falschen return Wert");
-
- if (pSymSetManager)
- pSymSetManager->SetModified(TRUE);
-
- return (USHORT) SymbolList.Count() - 1;
-}
-
-void SmSymSet::DeleteSymbol(USHORT SymbolNo)
-{
- delete RemoveSymbol(SymbolNo);
-}
-
-SmSym * SmSymSet::RemoveSymbol(USHORT SymbolNo)
-{
- DBG_ASSERT(SymbolList.GetObject(SymbolNo), "Symbol nicht vorhanden");
-
- SmSym *pSym = SymbolList.GetObject(SymbolNo);
- SymbolList.Remove(SymbolNo);
-
- if (pSymSetManager)
- pSymSetManager->SetModified(TRUE);
-
- return pSym;
-}
-
-USHORT SmSymSet::GetSymbolPos(const String& rName)
-{
- for (USHORT i = 0; i < GetCount(); i++)
- if (SymbolList.GetObject(i)->GetName() == rName)
- return (i);
- return SYMBOL_NONE;
-}
-
-/**************************************************************************/
-
-SmSymSetManager_Impl::SmSymSetManager_Impl(
- SmSymSetManager &rMgr, USHORT HashTableSize ) :
-
- rSymSetMgr (rMgr)
-{
- NoSymbolSets = 0;
- NoHashEntries = HashTableSize;
- HashEntries = new SmSym *[NoHashEntries];
- memset( HashEntries, 0, sizeof(SmSym *) * NoHashEntries );
- Modified = FALSE;
-}
-
-
-SmSymSetManager_Impl::~SmSymSetManager_Impl()
+bool SmSym::IsEqualInUI( const SmSym& rSymbol ) const
{
- for (USHORT i = 0; i < NoSymbolSets; ++i)
- delete SymbolSets.Get(i);
- SymbolSets.Clear();
-
- NoSymbolSets = 0;
- if (HashEntries)
- {
- delete[] HashEntries;
- HashEntries = 0;
- }
- NoHashEntries = 0;
- Modified = FALSE;
-}
-
-
-SmSymSetManager_Impl & SmSymSetManager_Impl::operator = ( const SmSymSetManager_Impl &rImpl )
-{
- //! rMySymSetMgr remains unchanged
-
- NoHashEntries = rImpl.NoHashEntries;
- if (HashEntries)
- delete [] HashEntries;
- HashEntries = new SmSym *[NoHashEntries];
- memset( HashEntries, 0, sizeof(SmSym *) * NoHashEntries );
-
- NoSymbolSets = 0;
- SymbolSets.Clear();
- for (USHORT i = 0; i < rImpl.NoSymbolSets; ++i)
- {
- rSymSetMgr.AddSymbolSet( new SmSymSet( *rImpl.rSymSetMgr.GetSymbolSet(i) ) );
- }
- DBG_ASSERT( NoSymbolSets == rImpl.NoSymbolSets,
- "incorrect number of symbolsets" );
-
- Modified = TRUE;
- return *this;
+ return m_aName == rSymbol.m_aName &&
+ m_aFace == rSymbol.m_aFace &&
+ m_cChar == rSymbol.m_cChar;
}
/**************************************************************************/
-void SmSymSetManager::SFX_NOTIFY(SfxBroadcaster& /*rBC*/, const TypeId& rBCType,
+void SmSymbolManager::SFX_NOTIFY(SfxBroadcaster& /*rBC*/, const TypeId& rBCType,
const SfxHint& /*rHint*/, const TypeId& rHintType)
{
}
-UINT32 SmSymSetManager::GetHashIndex(const String& rSymbolName)
-{
- UINT32 x = 1;
- for (xub_StrLen i = 0; i < rSymbolName.Len(); i++)
- x += x * rSymbolName.GetChar(i) + i;
-
- return x % pImpl->NoHashEntries;
-}
-
-
-void SmSymSetManager::EnterHashTable(SmSym& rSymbol)
-{
- int j = GetHashIndex( rSymbol.GetName() );
- if (pImpl->HashEntries[j] == 0)
- pImpl->HashEntries[j] = &rSymbol;
- else
- {
- SmSym *p = pImpl->HashEntries[j];
- while (p->pHashNext)
- p = p->pHashNext;
- p->pHashNext = &rSymbol;
- }
- rSymbol.pHashNext = 0;
-}
-
-
-void SmSymSetManager::EnterHashTable(SmSymSet& rSymbolSet)
-{
- for (USHORT i = 0; i < rSymbolSet.GetCount(); i++)
- EnterHashTable( *rSymbolSet.SymbolList.GetObject(i) );
-}
-
-void SmSymSetManager::FillHashTable()
-{
- if (pImpl->HashEntries)
- {
- memset( pImpl->HashEntries, 0, pImpl->NoHashEntries * sizeof(SmSym *) );
-
- for (UINT32 i = 0; i < pImpl->NoSymbolSets; i++)
- EnterHashTable( *GetSymbolSet( (USHORT) i ) );
- }
-}
-
-void SmSymSetManager::Init()
+void SmSymbolManager::Init()
{
- SmModule *pp = SM_MOD1();
+ SmModule *pp = SM_MOD();
StartListening(*pp->GetConfig());
}
-void SmSymSetManager::Exit()
+void SmSymbolManager::Exit()
{
- SmModule *pp = SM_MOD1();
+ SmModule *pp = SM_MOD();
EndListening(*pp->GetConfig());
}
-SmSymSetManager::SmSymSetManager(USHORT HashTableSize)
+SmSymbolManager::SmSymbolManager()
{
- pImpl = new SmSymSetManager_Impl( *this, HashTableSize );
+ m_bModified = false;
}
-SmSymSetManager::SmSymSetManager(const SmSymSetManager& rSymbolSetManager) :
+SmSymbolManager::SmSymbolManager(const SmSymbolManager& rSymbolSetManager) :
SfxListener()
{
- pImpl = new SmSymSetManager_Impl( *this, rSymbolSetManager.pImpl->NoHashEntries );
- *pImpl = *rSymbolSetManager.pImpl;
+ m_aSymbols = rSymbolSetManager.m_aSymbols;
+ m_bModified = true;
}
-SmSymSetManager::~SmSymSetManager()
+SmSymbolManager::~SmSymbolManager()
{
- delete pImpl;
- pImpl = 0;
}
-SmSymSetManager& SmSymSetManager::operator = (const SmSymSetManager& rSymbolSetManager)
+
+SmSymbolManager& SmSymbolManager::operator = (const SmSymbolManager& rSymbolSetManager)
{
- *pImpl = *rSymbolSetManager.pImpl;
+ m_aSymbols = rSymbolSetManager.m_aSymbols;
+ m_bModified = true;
return *this;
}
-USHORT SmSymSetManager::AddSymbolSet(SmSymSet* pSymbolSet)
-{
- if (pImpl->NoSymbolSets >= pImpl->SymbolSets.GetSize())
- pImpl->SymbolSets.SetSize(pImpl->NoSymbolSets + 1);
-
- pImpl->SymbolSets.Put(pImpl->NoSymbolSets++, pSymbolSet);
- pSymbolSet->pSymSetManager = this;
-
- for (USHORT i = 0; i < pSymbolSet->GetCount(); i++)
- pSymbolSet->SymbolList.GetObject(i)->pSymSetManager = this;
-
- FillHashTable();
- pImpl->Modified = TRUE;
-
- return (USHORT) (pImpl->NoSymbolSets - 1);
-}
-
-void SmSymSetManager::ChangeSymbolSet(SmSymSet* pSymbolSet)
+SmSym *SmSymbolManager::GetSymbolByName(const String& rSymbolName)
{
- if (pSymbolSet)
- {
- FillHashTable();
- pImpl->Modified = TRUE;
- }
+ SmSym *pRes = NULL;
+ SymbolMap_t::iterator aIt( m_aSymbols.find( rSymbolName ) );
+ if (aIt != m_aSymbols.end())
+ pRes = &aIt->second;
+ return pRes;
}
-void SmSymSetManager::DeleteSymbolSet(USHORT SymbolSetNo)
-{
- delete pImpl->SymbolSets.Get(SymbolSetNo);
- pImpl->NoSymbolSets--;
-
- for (UINT32 i = SymbolSetNo; i < pImpl->NoSymbolSets; i++)
- pImpl->SymbolSets.Put(i, pImpl->SymbolSets.Get(i + 1));
-
- FillHashTable();
- pImpl->Modified = TRUE;
+const SymbolPtrVec_t SmSymbolManager::GetSymbols() const
+{
+ SymbolPtrVec_t aRes;
+ SymbolMap_t::const_iterator aIt( m_aSymbols.begin() );
+ for ( ; aIt != m_aSymbols.end(); ++aIt)
+ aRes.push_back( &aIt->second );
+// DBG_ASSERT( sSymbols.size() == m_aSymbols.size(), "number of symbols mismatch " );
+ return aRes;
}
-USHORT SmSymSetManager::GetSymbolSetPos(const String& rSymbolSetName) const
+bool SmSymbolManager::AddOrReplaceSymbol( const SmSym &rSymbol, bool bForceChange )
{
- for (USHORT i = 0; i < pImpl->NoSymbolSets; i++)
- if (pImpl->SymbolSets.Get(i)->GetName() == rSymbolSetName)
- return (i);
-
- return SYMBOLSET_NONE;
-}
+ bool bAdded = false;
-SmSym *SmSymSetManager::GetSymbolByName(const String& rSymbolName)
-{
- SmSym *pSym = pImpl->HashEntries[GetHashIndex(rSymbolName)];
- while (pSym)
+ const String aSymbolName( rSymbol.GetName() );
+ if (aSymbolName.Len() > 0 && rSymbol.GetSymbolSetName().Len() > 0)
{
- if (pSym->Name == rSymbolName)
- break;
- pSym = pSym->pHashNext;
- }
-
- return pSym;
-}
+ const SmSym *pFound = GetSymbolByName( aSymbolName );
+ const bool bSymbolConflict = pFound && !pFound->IsEqualInUI( rSymbol );
-
-void SmSymSetManager::AddReplaceSymbol( const SmSym &rSymbol )
-{
- SmSym *pSym = GetSymbolByName( rSymbol.GetName() );
- if (pSym)
- {
- *pSym = rSymbol;
- }
- else
- {
- USHORT nPos = GetSymbolSetPos( rSymbol.GetSetName() );
- if (SYMBOLSET_NONE == nPos)
+ // avoid having the same symbol name twice but with different symbols in use
+ if (!pFound || bForceChange)
{
- AddSymbolSet( new SmSymSet( rSymbol.GetSetName() ) );
- nPos = GetSymbolSetPos( rSymbol.GetSetName() );
+ m_aSymbols[ aSymbolName ] = rSymbol;
+ bAdded = true;
+ }
+ else if (pFound && !bForceChange && bSymbolConflict)
+ {
+ // TODO: but what ...
+ DBG_ASSERT( 0, "symbol conflict, different symbol with same name found!" );
}
- DBG_ASSERT( nPos != SYMBOLSET_NONE, "SymbolSet not found");
- SmSym *pTmpSym = new SmSym( rSymbol );
- GetSymbolSet( nPos )->AddSymbol( pTmpSym );
- EnterHashTable( *pTmpSym );
}
- SetModified( TRUE );
-}
+ DBG_ASSERT( bAdded, "failed to add symbol" );
+ if (bAdded)
+ m_bModified = true;
-USHORT SmSymSetManager::GetSymbolCount() const
-{
- USHORT nRes = 0;
- USHORT nSets = GetSymbolSetCount();
- for (USHORT i = 0; i < nSets; ++i)
- nRes = nRes + GetSymbolSet(i)->GetCount();
- return nRes;
+ return bAdded;
}
-const SmSym * SmSymSetManager::GetSymbolByPos( USHORT nPos ) const
+void SmSymbolManager::RemoveSymbol( const String & rSymbolName )
{
- const SmSym *pRes = 0;
-
- INT16 nIdx = 0;
- USHORT nSets = GetSymbolSetCount();
- USHORT i = 0;
- while (i < nSets && !pRes)
+ if (rSymbolName.Len() > 0)
{
- USHORT nEntries = GetSymbolSet(i)->GetCount();
- if (nPos < nIdx + nEntries)
- pRes = &GetSymbolSet(i)->GetSymbol( nPos - nIdx );
- else
- nIdx = nIdx + nEntries;
- ++i;
+ size_t nOldSize = m_aSymbols.size();
+ m_aSymbols.erase( rSymbolName );
+ m_bModified = nOldSize != m_aSymbols.size();
}
+}
- return pRes;
+
+std::set< String > SmSymbolManager::GetSymbolSetNames() const
+{
+ std::set< String > aRes;
+ SymbolMap_t::const_iterator aIt( m_aSymbols.begin() );
+ for ( ; aIt != m_aSymbols.end(); ++aIt )
+ aRes.insert( aIt->second.GetSymbolSetName() );
+ return aRes;
}
-void SmSymSetManager::GetSymbols( std::vector< SmSym > &rSymbols ) const
+const SymbolPtrVec_t SmSymbolManager::GetSymbolSet( const String& rSymbolSetName )
{
- INT32 nCount = GetSymbolCount();
- rSymbols.resize( nCount );
- USHORT nPos = 0;
- std::vector< SmSym >::iterator aIt( rSymbols.begin() );
- std::vector< SmSym >::iterator aEnd( rSymbols.end() );
- while (aIt != aEnd)
+ SymbolPtrVec_t aRes;
+ if (rSymbolSetName.Len() > 0)
{
- const SmSym *pSym = GetSymbolByPos( nPos++ );
- DBG_ASSERT( pSym, "symbol missing" );
- if (pSym)
- *aIt++ = *pSym;
+ SymbolMap_t::const_iterator aIt( m_aSymbols.begin() );
+ for ( ; aIt != m_aSymbols.end(); ++aIt )
+ {
+ if (aIt->second.GetSymbolSetName() == rSymbolSetName)
+ aRes.push_back( &aIt->second );
+ }
}
- DBG_ASSERT( nPos == nCount, "index out of range?" );
+ return aRes;
}
-void SmSymSetManager::Load()
+void SmSymbolManager::Load()
{
std::vector< SmSym > aSymbols;
- SmMathConfig &rCfg = *SM_MOD1()->GetConfig();
+ SmMathConfig &rCfg = *SM_MOD()->GetConfig();
rCfg.GetSymbols( aSymbols );
- INT32 nSymbolCount = aSymbols.size();
+ size_t nSymbolCount = aSymbols.size();
- USHORT i;
- for (i = 0; i < nSymbolCount; ++i)
+ m_aSymbols.clear();
+ for (size_t i = 0; i < nSymbolCount; ++i)
{
const SmSym &rSym = aSymbols[i];
- DBG_ASSERT( rSym.Name.Len() > 0, "symbol without name!" );
- if (rSym.Name.Len() > 0)
- {
- SmSymSet *pSymSet = 0;
- const String &rSetName = rSym.GetSetName();
- USHORT nSetPos = GetSymbolSetPos( rSetName );
- if (SYMBOLSET_NONE != nSetPos)
- pSymSet = GetSymbolSet( nSetPos );
- else
- {
- pSymSet = new SmSymSet( rSetName );
- AddSymbolSet( pSymSet );
- }
-
- pSymSet->AddSymbol( new SmSym( rSym ) );
- }
+ DBG_ASSERT( rSym.GetName().Len() > 0, "symbol without name!" );
+ if (rSym.GetName().Len() > 0)
+ AddOrReplaceSymbol( rSym );
}
- // build HashTables
- INT32 nSymbolSetCount = GetSymbolSetCount();
- for (i = 0; i < nSymbolSetCount; ++i)
- ChangeSymbolSet( GetSymbolSet( i ) );
+ m_bModified = true;
if (0 == nSymbolCount)
{
DBG_ERROR( "no symbol set found" );
- pImpl->Modified = FALSE;
+ m_bModified = false;
}
}
-void SmSymSetManager::Save()
+void SmSymbolManager::Save()
{
- SmMathConfig &rCfg = *SM_MOD1()->GetConfig();
-
- // get number of Symbols
- USHORT nSymbolCount = 0;
- USHORT nSetCount = GetSymbolSetCount();
- USHORT i;
- for (i = 0; i < nSetCount; ++i)
- nSymbolCount = nSymbolCount + GetSymbolSet( i )->GetCount();
-
- if (nSymbolCount)
+ if (m_bModified)
{
- USHORT nSaveSymbolCnt = 0;
- const SmSym **pSymbols = new const SmSym* [ nSymbolCount ];
- const SmSym **pSym = pSymbols;
- for (i = 0; i < nSetCount; ++i)
+ SmMathConfig &rCfg = *SM_MOD()->GetConfig();
+
+#if 0
+ USHORT nSymbolCount = GetSymbolCount();
+ USHORT nSaveSymbolCnt = 0;
+ const SmSym **pSymbols = new const SmSym* [ nSymbolCount ];
+ const SmSym **pSym = pSymbols;
+ for (USHORT j = 0; j < nSymbolCount; ++j)
{
- const SmSymSet *pSymSet = GetSymbolSet( i );
- USHORT n = pSymSet->GetCount();
- for (USHORT j = 0; j < n; ++j)
+ const SmSym &rSym = *pSymSet->GetSymbol( j );
+ if (!rSym.IsDocSymbol())
{
- const SmSym &rSym = pSymSet->GetSymbol( j );
- if (!rSym.IsDocSymbol())
- {
- *pSym++ = &rSym;
- ++nSaveSymbolCnt;
- }
+ *pSym++ = &rSym;
+ ++nSaveSymbolCnt;
}
}
DBG_ASSERT(pSym - pSymbols == nSaveSymbolCnt, "wrong number of symbols" );
-
+#endif
+ SymbolPtrVec_t aTmp( GetSymbols() );
std::vector< SmSym > aSymbols;
- GetSymbols( aSymbols );
+ for (size_t i = 0; i < aTmp.size(); ++i)
+ aSymbols.push_back( *aTmp[i] );
rCfg.SetSymbols( aSymbols );
+#if 0
delete [] pSymbols;
+#endif
+
+ m_bModified = false;
}
}
diff --git a/starmath/source/unomodel.cxx b/starmath/source/unomodel.cxx
index f4acc1af6b89..013831f6e44e 100644
--- a/starmath/source/unomodel.cxx
+++ b/starmath/source/unomodel.cxx
@@ -85,7 +85,7 @@ SmPrintUIOptions::SmPrintUIOptions()
if( aLocalizedStrings.Count() < 18 ) // bad resource ?
return;
- SmModule *pp = SM_MOD1();
+ SmModule *pp = SM_MOD();
SmConfig *pConfig = pp->GetConfig();
DBG_ASSERT( pConfig, "SmConfig not found" );
if (!pConfig)
@@ -684,7 +684,7 @@ void SmModel::_setPropertyValues(const PropertyMapEntry** ppEntries, const Any*
0
};
SfxItemSet *pItemSet = new SfxItemSet( pDocSh->GetPool(), nRange );
- SmModule *pp = SM_MOD1();
+ SmModule *pp = SM_MOD();
pp->GetConfig()->ConfigToItemSet(*pItemSet);
SfxPrinter *pPrinter = SfxPrinter::Create ( aStream, pItemSet );
@@ -701,8 +701,8 @@ void SmModel::_setPropertyValues(const PropertyMapEntry** ppEntries, const Any*
if ( *pValues >>= aSequence )
{
sal_uInt32 nSize = aSequence.getLength();
- SmModule *pp = SM_MOD1();
- SmSymSetManager &rManager = pp->GetSymSetManager();
+ SmModule *pp = SM_MOD();
+ SmSymbolManager &rManager = pp->GetSymbolManager();
SymbolDescriptor *pDescriptor = aSequence.getArray();
for (sal_uInt32 i = 0; i < nSize ; i++, pDescriptor++)
{
@@ -717,7 +717,7 @@ void SmModel::_setPropertyValues(const PropertyMapEntry** ppEntries, const Any*
pDescriptor->sSymbolSet );
aSymbol.SetExportName ( pDescriptor->sExportName );
aSymbol.SetDocSymbol( TRUE );
- rManager.AddReplaceSymbol ( aSymbol );
+ rManager.AddOrReplaceSymbol ( aSymbol );
}
}
else
@@ -886,14 +886,15 @@ void SmModel::_getPropertyValues( const PropertyMapEntry **ppEntries, Any *pValu
case HANDLE_SYMBOLS:
{
// this is get
- SmModule *pp = SM_MOD1();
- const SmSymSetManager &rManager = pp->GetSymSetManager();
+ SmModule *pp = SM_MOD();
+ const SmSymbolManager &rManager = pp->GetSymbolManager();
vector < const SmSym * > aVector;
- USHORT nCount = 0;
- for (USHORT i = 0, nEnd = rManager.GetSymbolCount(); i < nEnd; i++)
+ const SymbolPtrVec_t aSymbols( rManager.GetSymbols() );
+ size_t nCount = 0;
+ for (size_t i = 0; i < aSymbols.size(); ++i)
{
- const SmSym * pSymbol = rManager.GetSymbolByPos( i );
+ const SmSym * pSymbol = aSymbols[ i ];
if (pSymbol && !pSymbol->IsPredefined () )
{
aVector.push_back ( pSymbol );
@@ -903,12 +904,12 @@ void SmModel::_getPropertyValues( const PropertyMapEntry **ppEntries, Any *pValu
Sequence < SymbolDescriptor > aSequence ( nCount );
SymbolDescriptor * pDescriptor = aSequence.getArray();
- vector <const SmSym * >::const_iterator aIter = aVector.begin(), aEnd = aVector.end();
+ vector < const SmSym * >::const_iterator aIter = aVector.begin(), aEnd = aVector.end();
for(; aIter != aEnd; pDescriptor++, aIter++)
{
pDescriptor->sName = (*aIter)->GetName();
pDescriptor->sExportName = (*aIter)->GetExportName();
- pDescriptor->sSymbolSet = (*aIter)->GetSetName();
+ pDescriptor->sSymbolSet = (*aIter)->GetSymbolSetName();
pDescriptor->nCharacter = static_cast < sal_Int32 > ((*aIter)->GetCharacter());
Font rFont = (*aIter)->GetFace();
diff --git a/starmath/source/view.cxx b/starmath/source/view.cxx
index 93e0c98eff7a..215060435811 100644
--- a/starmath/source/view.cxx
+++ b/starmath/source/view.cxx
@@ -107,7 +107,7 @@ SmGraphicWindow::SmGraphicWindow(SmViewShell* pShell):
const Fraction aFraction (1,1);
SetMapMode( MapMode(MAP_100TH_MM, Point(), aFraction, aFraction));
- ApplyColorConfigValues( SM_MOD1()->GetColorConfig() );
+ ApplyColorConfigValues( SM_MOD()->GetColorConfig() );
SetTotalSize();
@@ -145,7 +145,7 @@ void SmGraphicWindow::ApplyColorConfigValues( const svtools::ColorConfig &rColor
void SmGraphicWindow::DataChanged( const DataChangedEvent& rEvt )
{
- ApplyColorConfigValues( SM_MOD1()->GetColorConfig() );
+ ApplyColorConfigValues( SM_MOD()->GetColorConfig() );
ScrollableWindow::DataChanged( rEvt );
}
@@ -270,7 +270,7 @@ void SmGraphicWindow::SetCursor(const Rectangle &rRect)
// The old cursor will be removed, and the new one will be shown if
// that is activated in the ConfigItem
{
- SmModule *pp = SM_MOD1();
+ SmModule *pp = SM_MOD();
if (IsCursorVisible())
ShowCursor(FALSE); // clean up remainings of old cursor
@@ -324,7 +324,7 @@ void SmGraphicWindow::Paint(const Rectangle&)
nCol++;
const SmNode *pFound = SetCursorPos(nRow, nCol);
- SmModule *pp = SM_MOD1();
+ SmModule *pp = SM_MOD();
if (pFound && pp->GetConfig()->IsShowFormulaCursor())
ShowCursor(TRUE);
}
@@ -743,6 +743,7 @@ SFX_IMPL_INTERFACE(SmViewShell, SfxViewShell, SmResId(0))
// SFX_OBJECTBAR_REGISTRATION( SFX_OBJECTBAR_OBJECT | SFX_VISIBILITY_SERVER,
// SmResId(RID_DRAW_OBJECTBAR) );
+ SFX_CHILDWINDOW_REGISTRATION(SID_TASKPANE);
SFX_CHILDWINDOW_REGISTRATION(SmToolBoxWrapper::GetChildWindowId());
SFX_CHILDWINDOW_REGISTRATION(SmCmdBoxWrapper::GetChildWindowId());
}
@@ -1162,7 +1163,7 @@ void SmViewShell::Impl_Print(
USHORT SmViewShell::Print(SfxProgress & /*rProgress*/, BOOL /*bIsAPI*/, PrintDialog * /*pPrintDialog*/)
{
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmViewShell::Print" );
- DBG_ASSERT( 0, "SmViewShell::Print: no longer usewd with new UI print dialog. Should be removed!!" );
+ DBG_ASSERT( 0, "SmViewShell::Print: no longer used with new UI print dialog. Should be removed!!" );
return 0;
}
@@ -1190,7 +1191,7 @@ USHORT SmViewShell::SetPrinter(SfxPrinter *pNewPrinter, USHORT nDiffFlags, bool
if ((nDiffFlags & SFX_PRINTER_OPTIONS) == SFX_PRINTER_OPTIONS)
{
- SmModule *pp = SM_MOD1();
+ SmModule *pp = SM_MOD();
pp->GetConfig()->ItemSetToConfig(pNewPrinter->GetOptions());
}
return 0;
@@ -1378,7 +1379,7 @@ void SmViewShell::Execute(SfxRequest& rReq)
{
case SID_FORMULACURSOR:
{
- SmModule *pp = SM_MOD1();
+ SmModule *pp = SM_MOD();
const SfxItemSet *pArgs = rReq.GetArgs();
const SfxPoolItem *pItem;
@@ -1680,11 +1681,11 @@ void SmViewShell::Execute(SfxRequest& rReq)
SmDocShell *pDoc = GetDoc();
OutputDevice *pDev = pDoc->GetPrinter();
if (!pDev || pDev->GetDevFontCount() == 0)
- pDev = &SM_MOD1()->GetDefaultVirtualDev();
+ pDev = &SM_MOD()->GetDefaultVirtualDev();
DBG_ASSERT (pDev, "device for font list missing" );
- SmModule *pp = SM_MOD1();
- SmSymbolDialog( NULL, pDev, pp->GetSymSetManager(), *this ).Execute();
+ SmModule *pp = SM_MOD();
+ SmSymbolDialog( NULL, pDev, pp->GetSymbolManager(), *this ).Execute();
}
break;
}
@@ -1759,7 +1760,7 @@ void SmViewShell::GetState(SfxItemSet &rSet)
case SID_FORMULACURSOR:
{
- SmModule *pp = SM_MOD1();
+ SmModule *pp = SM_MOD();
rSet.Put(SfxBoolItem(nWh, pp->GetConfig()->IsShowFormulaCursor()));
}
break;
diff --git a/starmath/uiconfig/smath/accelerator/en-GB/default.xml b/starmath/uiconfig/smath/accelerator/en-GB/default.xml
deleted file mode 100644
index 7e5e44d8eaa7..000000000000
--- a/starmath/uiconfig/smath/accelerator/en-GB/default.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
- <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href=".uno:Redo"/>
- <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_UNDO" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_A" accel:mod1="true" xlink:href=".uno:Select"/>
- <accel:item accel:code="KEY_F3" xlink:href=".uno:NextError"/>
- <accel:item accel:code="KEY_F3" accel:shift="true" xlink:href=".uno:PrevError"/>
- <accel:item accel:code="KEY_F4" xlink:href=".uno:NextMark"/>
- <accel:item accel:code="KEY_F4" accel:shift="true" xlink:href=".uno:PrevMark"/>
- <accel:item accel:code="KEY_F9" xlink:href=".uno:Draw"/>
- <accel:item accel:code="KEY_J" accel:shift="true" accel:mod1="true" xlink:href=".uno:FullScreen"/>
-</accel:acceleratorlist>
diff --git a/starmath/uiconfig/smath/accelerator/en-US/default.xml b/starmath/uiconfig/smath/accelerator/en-US/default.xml
deleted file mode 100644
index 7e5e44d8eaa7..000000000000
--- a/starmath/uiconfig/smath/accelerator/en-US/default.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
- <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href=".uno:Redo"/>
- <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_UNDO" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_A" accel:mod1="true" xlink:href=".uno:Select"/>
- <accel:item accel:code="KEY_F3" xlink:href=".uno:NextError"/>
- <accel:item accel:code="KEY_F3" accel:shift="true" xlink:href=".uno:PrevError"/>
- <accel:item accel:code="KEY_F4" xlink:href=".uno:NextMark"/>
- <accel:item accel:code="KEY_F4" accel:shift="true" xlink:href=".uno:PrevMark"/>
- <accel:item accel:code="KEY_F9" xlink:href=".uno:Draw"/>
- <accel:item accel:code="KEY_J" accel:shift="true" accel:mod1="true" xlink:href=".uno:FullScreen"/>
-</accel:acceleratorlist>
diff --git a/starmath/uiconfig/smath/menubar/menubar.xml b/starmath/uiconfig/smath/menubar/menubar.xml
index bc17f4ef6c31..63bf72c0cf62 100644
--- a/starmath/uiconfig/smath/menubar/menubar.xml
+++ b/starmath/uiconfig/smath/menubar/menubar.xml
@@ -1,119 +1,121 @@
<?xml version="1.0" encoding="UTF-8"?>
<menu:menubar xmlns:menu="http://openoffice.org/2001/menu" menu:id="menubar">
- <menu:menu menu:id=".uno:PickList">
+ <menu:menu menu:id=".uno:PickList">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:AddDirect"/>
+ <menu:menuitem menu:id=".uno:Open"/>
+ <menu:menuitem menu:id=".uno:RecentFileList"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:AutoPilotMenu"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:CloseDoc"/>
+ <menu:menuitem menu:id=".uno:Save"/>
+ <menu:menuitem menu:id=".uno:SaveAs"/>
+ <menu:menuitem menu:id=".uno:SaveAll"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Reload"/>
+ <menu:menuitem menu:id=".uno:VersionDialog"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ExportTo"/>
+ <menu:menu menu:id=".uno:SendToMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:AddDirect"/>
- <menu:menuitem menu:id=".uno:Open"/>
- <menu:menuitem menu:id=".uno:RecentFileList"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:AutoPilotMenu"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:CloseDoc"/>
- <menu:menuitem menu:id=".uno:Save"/>
- <menu:menuitem menu:id=".uno:SaveAs"/>
- <menu:menuitem menu:id=".uno:SaveAll"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:Reload"/>
- <menu:menuitem menu:id=".uno:VersionDialog"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ExportTo"/>
- <menu:menu menu:id=".uno:SendToMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SendMail"/>
- <menu:menuitem menu:id=".uno:SendMailDocAsPDF"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:SetDocumentProperties"/>
- <menu:menuitem menu:id=".uno:Signature"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:Print"/>
- <menu:menuitem menu:id=".uno:PrinterSetup"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:Quit"/>
+ <menu:menuitem menu:id=".uno:SendMail"/>
+ <menu:menuitem menu:id=".uno:SendMailDocAsPDF"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:EditMenu">
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:SetDocumentProperties"/>
+ <menu:menuitem menu:id=".uno:Signature"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Print"/>
+ <menu:menuitem menu:id=".uno:PrinterSetup"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Quit"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:EditMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:Undo"/>
+ <menu:menuitem menu:id=".uno:Redo"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Cut"/>
+ <menu:menuitem menu:id=".uno:Copy"/>
+ <menu:menuitem menu:id=".uno:Paste"/>
+ <menu:menuitem menu:id=".uno:Select"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:NextMark"/>
+ <menu:menuitem menu:id=".uno:PrevMark"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:NextError"/>
+ <menu:menuitem menu:id=".uno:PrevError"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:ViewMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:Draw"/>
+ <menu:menuitem menu:id=".uno:RedrawAutomatic"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:AvailableToolbars"/>
+ <menu:menuitem menu:id=".uno:StatusBarVisible"/>
+ <menu:menuitem menu:id=".uno:ShowImeStatusWindow"/>
+ <menu:menuitem menu:id=".uno:ToolBox"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:TaskPane"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:FullScreen"/>
+ <menu:menuitem menu:id=".uno:ZoomIn"/>
+ <menu:menuitem menu:id=".uno:ZoomOut"/>
+ <menu:menuitem menu:id=".uno:Adjust"/>
+ <menu:menuitem menu:id=".uno:Zoom"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:FormatMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:ChangeFont"/>
+ <menu:menuitem menu:id=".uno:ChangeFontSize"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ChangeDistance"/>
+ <menu:menuitem menu:id=".uno:ChangeAlignment"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Textmode"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:ToolsMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:SymbolCatalogue"/>
+ <menu:menuitem menu:id=".uno:InsertFormula"/>
+ <menu:menuseparator/>
+ <menu:menu menu:id=".uno:MacrosMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:Undo"/>
- <menu:menuitem menu:id=".uno:Redo"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:Cut"/>
- <menu:menuitem menu:id=".uno:Copy"/>
- <menu:menuitem menu:id=".uno:Paste"/>
- <menu:menuitem menu:id=".uno:Select"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:NextMark"/>
- <menu:menuitem menu:id=".uno:PrevMark"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:NextError"/>
- <menu:menuitem menu:id=".uno:PrevError"/>
+ <menu:menuitem menu:id=".uno:MacroRecorder"/>
+ <menu:menuitem menu:id=".uno:RunMacro"/>
+ <menu:menu menu:id=".uno:ScriptOrganizer"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:MacroOrganizer?TabId:short=1"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:ViewMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:Draw"/>
- <menu:menuitem menu:id=".uno:RedrawAutomatic"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:AvailableToolbars"/>
- <menu:menuitem menu:id=".uno:StatusBarVisible"/>
- <menu:menuitem menu:id=".uno:ShowImeStatusWindow"/>
- <menu:menuitem menu:id=".uno:ToolBox"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:FullScreen"/>
- <menu:menuitem menu:id=".uno:ZoomIn"/>
- <menu:menuitem menu:id=".uno:ZoomOut"/>
- <menu:menuitem menu:id=".uno:Adjust"/>
- <menu:menuitem menu:id=".uno:Zoom"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:FormatMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:ChangeFont"/>
- <menu:menuitem menu:id=".uno:ChangeFontSize"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ChangeDistance"/>
- <menu:menuitem menu:id=".uno:ChangeAlignment"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:Textmode"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:ToolsMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SymbolCatalogue"/>
- <menu:menuitem menu:id=".uno:InsertFormula"/>
- <menu:menuseparator/>
- <menu:menu menu:id=".uno:MacrosMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:MacroRecorder"/>
- <menu:menuitem menu:id=".uno:RunMacro"/>
- <menu:menu menu:id=".uno:ScriptOrganizer"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:MacroOrganizer?TabId:short=1"/>
- </menu:menupopup>
- </menu:menu>
+ </menu:menu>
- <menu:menuitem menu:id="service:com.sun.star.deployment.ui.PackageManagerDialog"/>
- <menu:menuitem menu:id=".uno:ConfigureDialog"/>
- <menu:menuitem menu:id=".uno:OptionsTreeDialog"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:WindowList">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:NewWindow"/>
- <menu:menuitem menu:id=".uno:CloseWin"/>
- <menu:menuseparator/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:HelpMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:HelpIndex"/>
- <menu:menuitem menu:id=".uno:ExtendedHelp"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:HelpSupport"/>
- <menu:menuitem menu:id=".uno:OnlineRegistrationDlg"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:About"/>
- </menu:menupopup>
- </menu:menu>
+ <menu:menuitem menu:id="service:com.sun.star.deployment.ui.PackageManagerDialog"/>
+ <menu:menuitem menu:id=".uno:ConfigureDialog"/>
+ <menu:menuitem menu:id=".uno:OptionsTreeDialog"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:WindowList">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:NewWindow"/>
+ <menu:menuitem menu:id=".uno:CloseWin"/>
+ <menu:menuseparator/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:HelpMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:HelpIndex"/>
+ <menu:menuitem menu:id=".uno:ExtendedHelp"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:HelpSupport"/>
+ <menu:menuitem menu:id=".uno:OnlineRegistrationDlg"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:About"/>
+ </menu:menupopup>
+ </menu:menu>
</menu:menubar>
diff --git a/starmath/util/makefile.mk b/starmath/util/makefile.mk
index dd8e59be3cde..9f803a2d0555 100644
--- a/starmath/util/makefile.mk
+++ b/starmath/util/makefile.mk
@@ -47,7 +47,7 @@ RESLIB1SRSFILES=\
SHL1TARGET= sm$(DLLPOSTFIX)
SHL1IMPLIB= smimp
-SHL1VERSIONMAP= sm.map
+SHL1VERSIONMAP=$(SOLARENV)/src/component.map
SHL1DEF=$(MISC)$/$(SHL1TARGET).def
DEF1NAME= $(SHL1TARGET)
@@ -72,7 +72,7 @@ SHL1STDLIBS= \
SHL2TARGET= smd$(DLLPOSTFIX)
SHL2IMPLIB= smdimp
-SHL2VERSIONMAP= sm.map
+SHL2VERSIONMAP=$(SOLARENV)/src/component.map
SHL2DEF=$(MISC)$/$(SHL2TARGET).def
DEF2NAME= $(SHL2TARGET)
@@ -89,7 +89,7 @@ SHL2STDLIBS= \
$(SALLIB)
SHL2DEPN= makefile.mk
-SHL2VERSIONMAP= smd.map
+SHL2VERSIONMAP=$(SOLARENV)/src/component.map
SHL2OBJS= $(SLO)$/smdetect.obj \
$(SLO)$/detreg.obj \
$(SLO)$/eqnolefilehdr.obj
diff --git a/starmath/util/sm.map b/starmath/util/sm.map
deleted file mode 100644
index 62f014e12ba0..000000000000
--- a/starmath/util/sm.map
+++ /dev/null
@@ -1,8 +0,0 @@
-SM_1_0 {
- global:
- component_getImplementationEnvironment;
- component_writeInfo;
- component_getFactory;
- local:
- *;
-};
diff --git a/starmath/util/smd.map b/starmath/util/smd.map
deleted file mode 100644
index 62f014e12ba0..000000000000
--- a/starmath/util/smd.map
+++ /dev/null
@@ -1,8 +0,0 @@
-SM_1_0 {
- global:
- component_getImplementationEnvironment;
- component_writeInfo;
- component_getFactory;
- local:
- *;
-};
diff --git a/sw/Library_sw.mk b/sw/Library_sw.mk
index ddd2f4507110..ee08b6a06804 100644
--- a/sw/Library_sw.mk
+++ b/sw/Library_sw.mk
@@ -109,6 +109,7 @@ $(eval $(call gb_Library_add_exception_objects,sw,\
sw/source/core/access/acctable \
sw/source/core/access/acctextframe \
sw/source/core/access/textmarkuphelper \
+ sw/source/core/access/parachangetrackinginfo \
sw/source/core/attr/calbck \
sw/source/core/attr/cellatr \
sw/source/core/attr/fmtfollowtextflow \
@@ -244,6 +245,8 @@ $(eval $(call gb_Library_add_exception_objects,sw,\
sw/source/core/edit/edtox \
sw/source/core/edit/edundo \
sw/source/core/edit/edws \
+ sw/source/core/except/dbgloop \
+ sw/source/core/except/errhdl \
sw/source/core/fields/authfld \
sw/source/core/fields/cellfml \
sw/source/core/fields/chpfld \
@@ -278,6 +281,7 @@ $(eval $(call gb_Library_add_exception_objects,sw,\
sw/source/core/layout/atrfrm \
sw/source/core/layout/calcmove \
sw/source/core/layout/colfrm \
+ sw/source/core/layout/dbg_lay \
sw/source/core/layout/findfrm \
sw/source/core/layout/flowfrm \
sw/source/core/layout/fly \
@@ -366,6 +370,7 @@ $(eval $(call gb_Library_add_exception_objects,sw,\
sw/source/core/text/txtftn \
sw/source/core/text/txthyph \
sw/source/core/text/txtinit \
+ sw/source/core/text/txtio \
sw/source/core/text/txtpaint \
sw/source/core/text/txttab \
sw/source/core/text/widorp \
@@ -453,6 +458,7 @@ $(eval $(call gb_Library_add_exception_objects,sw,\
sw/source/core/unocore/unotext \
sw/source/core/unocore/unotextmarkup \
sw/source/core/view/pagepreviewlayout \
+ sw/source/core/view/printdata \
sw/source/core/view/vdraw \
sw/source/core/view/viewimp \
sw/source/core/view/viewpg \
@@ -566,12 +572,20 @@ $(eval $(call gb_Library_add_exception_objects,sw,\
sw/source/ui/dialog/swwrtshitem \
sw/source/ui/dochdl/gloshdl \
sw/source/ui/dochdl/swdtflvr \
+ sw/source/ui/docvw/AnchorOverlayObject \
+ sw/source/ui/docvw/AnnotationMenuButton \
+ sw/source/ui/docvw/AnnotationWin \
sw/source/ui/docvw/PostItMgr \
+ sw/source/ui/docvw/ShadowOverlayObject \
+ sw/source/ui/docvw/SidebarTxtControl \
+ sw/source/ui/docvw/SidebarTxtControlAcc \
+ sw/source/ui/docvw/SidebarWin \
+ sw/source/ui/docvw/SidebarWinAcc \
sw/source/ui/docvw/edtdd \
sw/source/ui/docvw/edtwin \
sw/source/ui/docvw/edtwin2 \
sw/source/ui/docvw/edtwin3 \
- sw/source/ui/docvw/postit \
+ sw/source/ui/docvw/frmsidebarwincontainer \
sw/source/ui/docvw/romenu \
sw/source/ui/docvw/srcedtw \
sw/source/ui/envelp/envimg \
@@ -674,7 +688,6 @@ $(eval $(call gb_Library_add_exception_objects,sw,\
sw/source/ui/uno/unomodule \
sw/source/ui/uno/unotxdoc \
sw/source/ui/uno/unotxvw \
- sw/source/ui/uno/warnpassword \
sw/source/ui/utlui/attrdesc \
sw/source/ui/utlui/bookctrl \
sw/source/ui/utlui/condedit \
@@ -711,10 +724,6 @@ $(eval $(call gb_Library_add_exception_objects,sw,\
sw/source/ui/wrtsh/wrtsh3 \
sw/source/ui/wrtsh/wrtsh4 \
sw/source/ui/wrtsh/wrtundo \
- sw/source/core/except/errhdl \
- sw/source/core/except/dbgloop \
- sw/source/core/layout/dbg_lay \
- sw/source/core/text/txtio \
))
ifeq ($(OS),LINUX)
diff --git a/sw/Package_uiconfig.mk b/sw/Package_uiconfig.mk
index 6ec1b30c0509..66b355b79d45 100644
--- a/sw/Package_uiconfig.mk
+++ b/sw/Package_uiconfig.mk
@@ -26,10 +26,6 @@
#*************************************************************************
$(eval $(call gb_Package_Package,sw_uiconfig,$(SRCDIR)/sw/uiconfig))
-$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/sglobal/accelerator/de/default.xml,sglobal/accelerator/de/default.xml))
-$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/sglobal/accelerator/en-US/default.xml,sglobal/accelerator/en-US/default.xml))
-$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/sglobal/accelerator/es/default.xml,sglobal/accelerator/es/default.xml))
-$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/sglobal/accelerator/fr/default.xml,sglobal/accelerator/fr/default.xml))
$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/sglobal/menubar/menubar.xml,sglobal/menubar/menubar.xml))
$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/sglobal/statusbar/statusbar.xml,sglobal/statusbar/statusbar.xml))
$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/sglobal/toolbar/alignmentbar.xml,sglobal/toolbar/alignmentbar.xml))
@@ -69,10 +65,6 @@ $(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/sglobal/toolb
$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/sglobal/toolbar/textobjectbar.xml,sglobal/toolbar/textobjectbar.xml))
$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/sglobal/toolbar/toolbar.xml,sglobal/toolbar/toolbar.xml))
$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/sglobal/toolbar/viewerbar.xml,sglobal/toolbar/viewerbar.xml))
-$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/sweb/accelerator/de/default.xml,sweb/accelerator/de/default.xml))
-$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/sweb/accelerator/en-US/default.xml,sweb/accelerator/en-US/default.xml))
-$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/sweb/accelerator/es/default.xml,sweb/accelerator/es/default.xml))
-$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/sweb/accelerator/fr/default.xml,sweb/accelerator/fr/default.xml))
$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/sweb/menubar/menubar.xml,sweb/menubar/menubar.xml))
$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/sweb/statusbar/statusbar.xml,sweb/statusbar/statusbar.xml))
$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/sweb/toolbar/arrowshapes.xml,sweb/toolbar/arrowshapes.xml))
@@ -108,10 +100,6 @@ $(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/sweb/toolbar/
$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/sweb/toolbar/textobjectbar.xml,sweb/toolbar/textobjectbar.xml))
$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/sweb/toolbar/toolbar.xml,sweb/toolbar/toolbar.xml))
$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/sweb/toolbar/viewerbar.xml,sweb/toolbar/viewerbar.xml))
-$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swform/accelerator/de/default.xml,swform/accelerator/de/default.xml))
-$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swform/accelerator/en-US/default.xml,swform/accelerator/en-US/default.xml))
-$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swform/accelerator/es/default.xml,swform/accelerator/es/default.xml))
-$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swform/accelerator/fr/default.xml,swform/accelerator/fr/default.xml))
$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swform/menubar/menubar.xml,swform/menubar/menubar.xml))
$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swform/statusbar/statusbar.xml,swform/statusbar/statusbar.xml))
$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swform/toolbar/alignmentbar.xml,swform/toolbar/alignmentbar.xml))
@@ -151,10 +139,6 @@ $(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swform/toolba
$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swform/toolbar/textobjectbar.xml,swform/toolbar/textobjectbar.xml))
$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swform/toolbar/toolbar.xml,swform/toolbar/toolbar.xml))
$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swform/toolbar/viewerbar.xml,swform/toolbar/viewerbar.xml))
-$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swreport/accelerator/de/default.xml,swreport/accelerator/de/default.xml))
-$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swreport/accelerator/en-US/default.xml,swreport/accelerator/en-US/default.xml))
-$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swreport/accelerator/es/default.xml,swreport/accelerator/es/default.xml))
-$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swreport/accelerator/fr/default.xml,swreport/accelerator/fr/default.xml))
$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swreport/menubar/menubar.xml,swreport/menubar/menubar.xml))
$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swreport/statusbar/statusbar.xml,swreport/statusbar/statusbar.xml))
$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swreport/toolbar/alignmentbar.xml,swreport/toolbar/alignmentbar.xml))
@@ -194,10 +178,6 @@ $(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swreport/tool
$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swreport/toolbar/textobjectbar.xml,swreport/toolbar/textobjectbar.xml))
$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swreport/toolbar/toolbar.xml,swreport/toolbar/toolbar.xml))
$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swreport/toolbar/viewerbar.xml,swreport/toolbar/viewerbar.xml))
-$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swriter/accelerator/de/default.xml,swriter/accelerator/de/default.xml))
-$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swriter/accelerator/en-US/default.xml,swriter/accelerator/en-US/default.xml))
-$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swriter/accelerator/es/default.xml,swriter/accelerator/es/default.xml))
-$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swriter/accelerator/fr/default.xml,swriter/accelerator/fr/default.xml))
$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swriter/menubar/menubar.xml,swriter/menubar/menubar.xml))
$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swriter/statusbar/statusbar.xml,swriter/statusbar/statusbar.xml))
$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swriter/toolbar/alignmentbar.xml,swriter/toolbar/alignmentbar.xml))
@@ -236,10 +216,6 @@ $(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swriter/toolb
$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swriter/toolbar/textobjectbar.xml,swriter/toolbar/textobjectbar.xml))
$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swriter/toolbar/toolbar.xml,swriter/toolbar/toolbar.xml))
$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swriter/toolbar/viewerbar.xml,swriter/toolbar/viewerbar.xml))
-$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swxform/accelerator/de/default.xml,swxform/accelerator/de/default.xml))
-$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swxform/accelerator/en-US/default.xml,swxform/accelerator/en-US/default.xml))
-$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swxform/accelerator/es/default.xml,swxform/accelerator/es/default.xml))
-$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swxform/accelerator/fr/default.xml,swxform/accelerator/fr/default.xml))
$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swxform/menubar/menubar.xml,swxform/menubar/menubar.xml))
$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swxform/statusbar/statusbar.xml,swxform/statusbar/statusbar.xml))
$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swxform/toolbar/alignmentbar.xml,swxform/toolbar/alignmentbar.xml))
diff --git a/sw/inc/AnnotationWin.hxx b/sw/inc/AnnotationWin.hxx
new file mode 100644
index 000000000000..ef39ad6e4c8f
--- /dev/null
+++ b/sw/inc/AnnotationWin.hxx
@@ -0,0 +1,83 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#ifndef _ANNOTATIONWIN_HXX
+#define _ANNOTATIONWIN_HXX
+
+#include <SidebarWin.hxx>
+
+class PopupMenu;
+class OutlinerParaObject;
+
+namespace sw { namespace annotation {
+
+class SwAnnotationWin : public sw::sidebarwindows::SwSidebarWin
+{
+ public:
+ SwAnnotationWin( SwEditWin& rEditWin,
+ WinBits nBits,
+ SwPostItMgr& aMgr,
+ SwPostItBits aBits,
+ SwSidebarItem& rSidebarItem,
+ SwFmtFld* aField );
+ virtual ~SwAnnotationWin();
+
+ virtual void UpdateData();
+ virtual void SetPostItText();
+ virtual void Delete();
+ virtual void GotoPos();
+
+ virtual String GetAuthor();
+ virtual Date GetDate();
+ virtual Time GetTime();
+
+ virtual sal_uInt32 MoveCaret();
+
+ virtual bool CalcFollow();
+ void InitAnswer(OutlinerParaObject* pText);
+
+ virtual bool IsProtected();
+
+ protected:
+ virtual MenuButton* CreateMenuButton();
+
+ private:
+ virtual SvxLanguageItem GetLanguage(void);
+ sal_uInt32 CountFollowing();
+
+ SwFmtFld* mpFmtFld;
+ SwPostItField* mpFld;
+ PopupMenu* mpButtonPopup;
+
+};
+
+} } // end of namespace sw::annotation
+#endif
diff --git a/sw/inc/PostItMgr.hxx b/sw/inc/PostItMgr.hxx
index e3d46238a286..485a9a5733f7 100644
--- a/sw/inc/PostItMgr.hxx
+++ b/sw/inc/PostItMgr.hxx
@@ -39,6 +39,7 @@
#include <unotools/options.hxx>
#include <com/sun/star/util/SearchOptions.hpp>
#include <com/sun/star/uno/Any.hxx>
+#include <SidebarWindowsTypes.hxx>
#include <svl/lstner.hxx>
class SwWrtShell;
@@ -53,9 +54,16 @@ class SwEditWin;
class Color;
class SvxSearchItem;
class SvxLanguageItem;
-class SwPostIt;
-class SwMarginWin;
-class SwMarginItem;
+namespace sw { namespace annotation {
+ class SwAnnotationWin;
+}}
+namespace sw { namespace sidebarwindows {
+ class SwSidebarWin;
+ class SwFrmSidebarWinContainer;
+}}
+class SwSidebarItem;
+class SwFrm;
+class Window;
#define SORT_POS 1
#define SORT_AUTHOR 2
@@ -64,23 +72,20 @@ class SwMarginItem;
#define COL_NOTES_SIDEPANE_ARROW_ENABLED RGB_COLORDATA(0,0,0)
#define COL_NOTES_SIDEPANE_ARROW_DISABLED RGB_COLORDATA(172,168,153)
-typedef std::list<SwMarginItem*> SwMarginItem_list;
-typedef std::list<SwMarginItem*>::iterator SwMarginItem_iterator;
+typedef std::list<SwSidebarItem*> SwSidebarItem_list;
+typedef std::list<SwSidebarItem*>::iterator SwSidebarItem_iterator;
-using namespace ::com::sun::star;
-using namespace ::com::sun::star::uno;
-using ::rtl::OUString;
struct SwPostItPageItem
{
bool bScrollbar;
- bool bMarginSide;
+ sw::sidebarwindows::SidebarPosition eSidebarPosition;
long lOffset;
SwRect mPageRect;
- SwMarginItem_list* mList;
+ SwSidebarItem_list* mList;
SwPostItPageItem(): bScrollbar(false),lOffset(0)
{
- mList = new SwMarginItem_list;
+ mList = new SwSidebarItem_list;
}
~SwPostItPageItem()
{
@@ -103,25 +108,27 @@ struct FieldShadowState
class SwNoteProps: public utl::ConfigItem
{
private:
- bool bIsShowAnkor;
+ bool bIsShowAnchor;
public:
- SwNoteProps() : ConfigItem(::rtl::OUString::createFromAscii("Office.Writer/Notes")), bIsShowAnkor(false)
+ SwNoteProps()
+ : ConfigItem(::rtl::OUString::createFromAscii("Office.Writer/Notes"))
+ , bIsShowAnchor(false)
{
- const Sequence<OUString>& rNames = GetPropertyNames();
- Sequence<Any> aValues = GetProperties(rNames);
- const Any* pValues = aValues.getConstArray();
+ const ::com::sun::star::uno::Sequence< ::rtl::OUString >& rNames = GetPropertyNames();
+ ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > aValues = GetProperties(rNames);
+ const ::com::sun::star::uno::Any* pValues = aValues.getConstArray();
DBG_ASSERT(aValues.getLength() == rNames.getLength(), "GetProperties failed");
if (aValues.getLength())
- pValues[0]>>=bIsShowAnkor;
+ pValues[0]>>=bIsShowAnchor;
}
- bool IsShowAnkor()
+ bool IsShowAnchor()
{
- return bIsShowAnkor;
+ return bIsShowAnchor;
}
- Sequence<OUString>& GetPropertyNames()
+ ::com::sun::star::uno::Sequence< ::rtl::OUString >& GetPropertyNames()
{
- static Sequence<OUString> aNames;
+ static ::com::sun::star::uno::Sequence< ::rtl::OUString > aNames;
if(!aNames.getLength())
{
static const char* aPropNames[] =
@@ -130,9 +137,9 @@ class SwNoteProps: public utl::ConfigItem
};
const int nCount = sizeof(aPropNames)/sizeof(const char*);
aNames.realloc(nCount);
- OUString* pNames = aNames.getArray();
+ ::rtl::OUString* pNames = aNames.getArray();
for(int i = 0; i < nCount; i++)
- pNames[i] = OUString::createFromAscii(aPropNames[i]);
+ pNames[i] = ::rtl::OUString::createFromAscii(aPropNames[i]);
}
return aNames;
}
@@ -147,11 +154,11 @@ class SwPostItMgr: public SfxListener
SwView* mpView;
SwWrtShell* mpWrtShell;
SwEditWin* mpEditWin;
- std::list< SwMarginItem*> mvPostItFlds;
+ std::list< SwSidebarItem*> mvPostItFlds;
std::vector<SwPostItPageItem*> mPages;
ULONG mnEventId;
bool mbWaitingForCalcRects;
- SwMarginWin* mpActivePostIt;
+ sw::sidebarwindows::SwSidebarWin* mpActivePostIt;
bool mbLayout;
long mbLayoutHeight;
long mbLayouting;
@@ -159,18 +166,23 @@ class SwPostItMgr: public SfxListener
bool mbDeleteNote;
FieldShadowState mShadowState;
OutlinerParaObject* mpAnswer;
- bool mpIsShowAnkor;
+ bool mbIsShowAnchor;
- typedef std::list<SwMarginWin*>::iterator SwMarginWin_iterator;
+ // data structure to collect the <SwSidebarWin> instances for certain <SwFrm> instances.
+ sw::sidebarwindows::SwFrmSidebarWinContainer* mpFrmSidebarWinContainer;
+
+ typedef std::list<sw::sidebarwindows::SwSidebarWin*>::iterator SwSidebarWin_iterator;
void AddPostIts(bool bCheckExistance = true,bool bFocus = true);
//void AddRedlineComments(bool bCheckExistance, bool bFocus);
- void RemoveMarginWin();
+ void RemoveSidebarWin();
void PreparePageContainer();
void Scroll(const long lScroll,const unsigned long aPage );
- void AutoScroll(const SwMarginWin* pPostIt,const unsigned long aPage );
+ void AutoScroll(const sw::sidebarwindows::SwSidebarWin* pPostIt,const unsigned long aPage );
bool ScrollbarHit(const unsigned long aPage,const Point &aPoint);
- bool LayoutByPage(std::list<SwMarginWin*> &aVisiblePostItList,const Rectangle aBorder,long lNeededHeight);
+ bool LayoutByPage( std::list<sw::sidebarwindows::SwSidebarWin*> &aVisiblePostItList,
+ const Rectangle aBorder,
+ long lNeededHeight);
void CheckForRemovedPostIts();
bool ArrowEnabled(USHORT aDirection,unsigned long aPage) const;
bool BorderOverPageBorder(unsigned long aPage) const;
@@ -182,29 +194,34 @@ class SwPostItMgr: public SfxListener
sal_Int32 GetSpaceBetween() const;
void SetReadOnlyState();
DECL_LINK( CalcHdl, void*);
- protected:
+
+ sw::sidebarwindows::SwSidebarWin* GetSidebarWin(const SfxBroadcaster* pBroadcaster) const;
+
+ void InsertItem( SfxBroadcaster* pItem, bool bCheckExistance, bool bFocus);
+ void RemoveItem( SfxBroadcaster* pBroadcast );
+
+ void Sort(const short aType);
public:
SwPostItMgr(SwView* aDoc);
~SwPostItMgr();
- typedef std::list< SwMarginItem* >::const_iterator const_iterator;
+ typedef std::list< SwSidebarItem* >::const_iterator const_iterator;
const_iterator begin() const { return mvPostItFlds.begin(); }
const_iterator end() const { return mvPostItFlds.end(); }
- void InsertItem( SfxBroadcaster* pItem, bool bCheckExistance, bool bFocus);
- void RemoveItem( SfxBroadcaster* pBroadcast );
void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
void LayoutPostIts();
bool CalcRects();
- void MakeVisible(const SwMarginWin* pPostIt,long aPage = -1);
+ void MakeVisible( const sw::sidebarwindows::SwSidebarWin* pPostIt,
+ long aPage = -1);
bool ShowScrollbar(const unsigned long aPage) const;
bool HasNotes() const ;
bool ShowNotes() const;
- bool IsShowAnkor() { return mpIsShowAnkor;}
+ bool IsShowAnchor() { return mbIsShowAnchor;}
unsigned long GetSidebarWidth(bool bPx = false) const;
unsigned long GetSidebarBorderWidth(bool bPx = false) const;
unsigned long GetNoteWidth();
@@ -213,13 +230,13 @@ class SwPostItMgr: public SfxListener
void CorrectPositions();
- void Sort(const short aType);
-
void SetLayout() { mbLayout = true; };
void Delete(String aAuthor);
void Delete();
+#if 0
void Hide( SwPostItField* pPostItField );
+#endif
void Hide( const String& rAuthor );
void Hide();
void Show();
@@ -232,27 +249,33 @@ class SwPostItMgr: public SfxListener
bool IsHit(const Point &aPointPixel);
Color GetArrowColor(USHORT aDirection,unsigned long aPage) const;
- SwMarginWin* GetNextPostIt(USHORT aDirection, SwMarginWin* aPostIt);
+ sw::annotation::SwAnnotationWin* GetAnnotationWin(const SwPostItField* pFld) const;
+
+ sw::sidebarwindows::SwSidebarWin* GetNextPostIt( USHORT aDirection,
+ sw::sidebarwindows::SwSidebarWin* aPostIt);
long GetNextBorder();
- SwMarginWin* GetActivePostIt() { return mpActivePostIt; }
- void SetActivePostIt( SwMarginWin* p);
+
+ sw::sidebarwindows::SwSidebarWin* GetActiveSidebarWin() { return mpActivePostIt; }
+ void SetActiveSidebarWin( sw::sidebarwindows::SwSidebarWin* p);
+ bool HasActiveSidebarWin() const;
+ bool HasActiveAnnotationWin() const;
+ void GrabFocusOnActiveSidebarWin();
+ void UpdateDataOnActiveSidebarWin();
+ void DeleteActiveSidebarWin();
+ void HideActiveSidebarWin();
+ void ToggleInsModeOnActiveSidebarWin();
+
sal_Int32 GetMinimumSizeWithMeta() const;
sal_Int32 GetSidebarScrollerHeight() const;
- SwMarginWin* GetPostIt(const SfxBroadcaster* pBroadcaster) const;
- SwMarginWin* GetPostIt(SfxBroadcaster* pBroadcaster) const;
- SwPostIt* GetPostIt(const SwPostItField* pFld) const;
- SwPostIt* GetPostIt(SwPostItField* pFld) const;
-
void SetShadowState(const SwPostItField* pFld,bool bCursor = true);
void SetSpellChecking();
Color GetColorDark(sal_uInt16 aAuthorIndex);
Color GetColorLight(sal_uInt16 aAuthorIndex);
- Color GetColorAnkor(sal_uInt16 aAuthorIndex);
+ Color GetColorAnchor(sal_uInt16 aAuthorIndex);
- bool ShowPreview(const SwField* pFld,SwFmtFld*& pFmtFld) const;
void RegisterAnswer(OutlinerParaObject* pAnswer) { mpAnswer = pAnswer;}
OutlinerParaObject* IsAnswer() {return mpAnswer;}
@@ -263,7 +286,18 @@ class SwPostItMgr: public SfxListener
sal_uInt16 SearchReplace(const SwFmtFld &pFld, const ::com::sun::star::util::SearchOptions& rSearchOptions,bool bSrchForward);
sal_uInt16 FinishSearchReplace(const ::com::sun::star::util::SearchOptions& rSearchOptions,bool bSrchForward);
- void AssureStdModeAtShell();
+ void AssureStdModeAtShell();
+
+ void ConnectSidebarWinToFrm( const SwFrm& rFrm,
+ const SwFmtFld& rFmtFld,
+ sw::sidebarwindows::SwSidebarWin& rSidebarWin );
+ void DisconnectSidebarWinFromFrm( const SwFrm& rFrm,
+ sw::sidebarwindows::SwSidebarWin& rSidebarWin );
+ bool HasFrmConnectedSidebarWins( const SwFrm& rFrm );
+ Window* GetSidebarWinForFrmByIndex( const SwFrm& rFrm,
+ const sal_Int32 nIndex );
+ void GetAllSidebarWinForFrm( const SwFrm& rFrm,
+ std::vector< Window* >* pChildren );
};
#endif
diff --git a/sw/inc/SidebarWin.hxx b/sw/inc/SidebarWin.hxx
new file mode 100644
index 000000000000..729dc18a780b
--- /dev/null
+++ b/sw/inc/SidebarWin.hxx
@@ -0,0 +1,274 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#ifndef _SIDEBARWIN_HXX
+#define _SIDEBARWIN_HXX
+
+#include <postithelper.hxx>
+#include <SidebarWindowsTypes.hxx>
+
+#include <vcl/window.hxx>
+#include <swrect.hxx>
+
+#include <tools/datetime.hxx>
+#include <tools/date.hxx>
+
+#include <vcl/lineinfo.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <editeng/editstat.hxx>
+
+class SwPostItMgr;
+class SwPostItField;
+class OutlinerView;
+class Outliner;
+class ScrollBar;
+class SwEditWin;
+class SwView;
+class Edit;
+class MenuButton;
+//class SwRedline;
+class SwFrm;
+
+
+namespace sw { namespace sidebarwindows {
+
+class SidebarTxtControl;
+class AnchorOverlayObject;
+class ShadowOverlayObject;
+
+typedef sal_Int64 SwPostItBits;
+
+#define PB_Preview ((SwPostItBits)0x00000001)
+
+
+class SwSidebarWin : public Window
+{
+ public:
+ SwSidebarWin( SwEditWin& rEditWin,
+ WinBits nBits,
+ SwPostItMgr& aMgr,
+ SwPostItBits aBits,
+ SwSidebarItem& rSidebarItem );
+ virtual ~SwSidebarWin();
+
+ void SetSize( const Size& rNewSize );
+ void SetPosSizePixelRect( long nX,
+ long nY,
+ long nWidth,
+ long nHeight,
+ const SwRect &aRect,
+ const long PageBorder);
+ void SetPosAndSize();
+ void TranslateTopPosition(const long aAmount);
+ virtual void CheckMetaText();
+
+ inline Point GetAnchorPos() { return mAnchorRect.Pos(); }
+ SwEditWin* EditWin();
+
+ inline OutlinerView* GetOutlinerView() { return mpOutlinerView;}
+ bool HasScrollbar() const;
+ bool IsScrollbarVisible() const;
+ inline ScrollBar* Scrollbar() { return mpVScrollbar; }
+ inline ::sw::sidebarwindows::AnchorOverlayObject* Anchor() { return mpAnchor;}
+ inline ::sw::sidebarwindows::ShadowOverlayObject* Shadow() { return mpShadow;}
+
+ long GetPostItTextHeight();
+
+ void SwitchToPostIt(USHORT aDirection);
+ virtual void SwitchToFieldPos();
+
+ virtual sal_uInt32 MoveCaret() = 0;
+
+ virtual void UpdateData() = 0;
+ virtual void SetPostItText() = 0;
+ virtual void Delete();
+ virtual void GotoPos() = 0;
+
+ virtual String GetAuthor() = 0;
+ virtual Date GetDate() = 0;
+ virtual Time GetTime() = 0;
+
+ void ExecuteCommand(USHORT nSlot);
+ void InitControls();
+ void HidePostIt();
+ void DoResize();
+ void ResizeIfNeccessary(long aOldHeight, long aNewHeight);
+ void SetScrollbar();
+
+ void SetVirtualPosSize( const Point& aPoint, const Size& aSize);
+ const Point VirtualPos() { return mPosSize.TopLeft(); }
+ const Size VirtualSize() { return mPosSize.GetSize(); }
+
+ void ShowAnchorOnly(const Point &aPoint);
+ void ShowNote();
+ void HideNote();
+
+ void ResetAttributes();
+
+ void SetSidebarPosition(sw::sidebarwindows::SidebarPosition eSidebarPosition);
+ void SetReadonly(BOOL bSet);
+ BOOL IsReadOnly() { return mbReadonly;}
+ bool IsPreview() { return nFlags & PB_Preview;}
+
+ void SetColor(Color aColorDark,Color aColorLight, Color aColorAnchor);
+ const Color& ColorAnchor() { return mColorAnchor; }
+ const Color& ColorDark() { return mColorDark; }
+ const Color& ColorLight() { return mColorLight; }
+ void Rescale();
+
+ void SetViewState(::sw::sidebarwindows::ViewState bViewState);
+
+ bool IsFollow() { return mbIsFollow; }
+ void SetFollow( bool bIsFollow) { mbIsFollow = bIsFollow; };
+ virtual bool CalcFollow() = 0;
+
+#if 0
+#endif
+
+ sal_Int32 GetMetaHeight();
+ sal_Int32 GetMinimumSizeWithMeta();
+ sal_Int32 GetMinimumSizeWithoutMeta();
+ sal_Int32 GetMetaButtonAreaWidth();
+ sal_Int32 GetScrollbarWidth();
+
+ void SetSpellChecking();
+
+ void ToggleInsMode();
+
+ virtual void ActivatePostIt();
+ virtual void DeactivatePostIt();
+
+ void SetChangeTracking( const SwPostItHelper::SwLayoutStatus aStatus,
+ const Color& aColor);
+ SwPostItHelper::SwLayoutStatus GetLayoutStatus() { return mLayoutStatus; }
+ Color GetChangeColor() { return mChangeColor; }
+
+ virtual bool IsProtected() {return mbReadonly;};
+
+ DECL_LINK( WindowEventListener, VclSimpleEvent* );
+ inline bool IsMouseOverSidebarWin() const { return mbMouseOver; }
+
+ void SetLanguage(const SvxLanguageItem aNewItem);
+
+ void ChangeSidebarItem( SwSidebarItem& rSidebarItem );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible();
+
+ protected:
+ virtual void DataChanged( const DataChangedEvent& aEvent);
+ virtual void LoseFocus();
+ virtual void Paint( const Rectangle& rRect);
+ virtual void GetFocus();
+ virtual MenuButton* CreateMenuButton() = 0;
+
+ void SetSizePixel( const Size& rNewSize );
+ SfxItemSet DefaultItem();
+
+ DECL_LINK(ModifyHdl, void*);
+ DECL_LINK(ScrollHdl, ScrollBar*);
+ DECL_LINK(DeleteHdl, void*);
+
+ inline SwView& DocView() { return mrView;}
+ inline SwPostItMgr& Mgr() { return mrMgr; }
+ inline Outliner* Engine() { return mpOutliner;}
+
+ private:
+ SwSidebarWin* GetTopReplyNote();
+
+ virtual SvxLanguageItem GetLanguage(void);
+
+ SwPostItMgr& mrMgr;
+ SwView& mrView;
+ const SwPostItBits nFlags;
+
+ ULONG mnEventId;
+
+ OutlinerView* mpOutlinerView;
+ Outliner* mpOutliner;
+
+ sw::sidebarwindows::SidebarTxtControl* mpSidebarTxtControl;
+ ScrollBar* mpVScrollbar;
+ Edit* mpMetadataAuthor;
+ Edit* mpMetadataDate;
+ MenuButton* mpMenuButton;
+
+ sw::sidebarwindows::AnchorOverlayObject* mpAnchor;
+ sw::sidebarwindows::ShadowOverlayObject* mpShadow;
+
+ Color mColorAnchor;
+ Color mColorDark;
+ Color mColorLight;
+ Color mChangeColor;
+
+ sw::sidebarwindows::SidebarPosition meSidebarPosition;
+
+ Rectangle mPosSize;
+ SwRect mAnchorRect;
+ long mPageBorder;
+
+ bool mbMouseOver;
+ SwPostItHelper::SwLayoutStatus mLayoutStatus;
+
+ bool mbReadonly;
+ bool mbIsFollow;
+
+ SwSidebarItem& mrSidebarItem;
+ const SwFrm* mpAnchorFrm;
+};
+
+} } // eof namespace sw::sidebarwindows
+
+
+// implementation for change tracking comments, fully functional, but not yet used
+/*
+class SwRedComment : public SwSidebarWin
+{
+ private:
+ SwRedline* pRedline;
+
+ protected:
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ public:
+ SwRedComment( Window* pParent, WinBits nBits,SwPostItMgr* aMgr,SwPostItBits aBits,SwRedline* pRed);
+ virtual ~SwRedComment() {};
+
+ virtual void UpdateData();
+ virtual void SetPostItText();
+ virtual void Delete();
+ virtual void GotoPos();
+ virtual void SetPopup();
+ virtual void ActivatePostIt();
+ virtual void DeactivatePostIt();
+
+ virtual String GetAuthor();
+ virtual Date GetDate();
+ virtual Time GetTime();
+
+ virtual bool IsProtected();
+};
+*/
+
+#endif
diff --git a/sw/inc/warnpassword.hxx b/sw/inc/SidebarWindowsTypes.hxx
index 05ee61d7587c..8b86f87edf87 100644
--- a/sw/inc/warnpassword.hxx
+++ b/sw/inc/SidebarWindowsTypes.hxx
@@ -2,10 +2,14 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2000, 2010 Oracle and/or its affiliates.
+ * 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
@@ -25,23 +29,25 @@
*
************************************************************************/
-#ifndef SW_WARNPASSWORD_HXX
-#define SW_WARNPASSWORD_HXX
+#ifndef _SIDEBARWINDOWSTYPES_HXX
+#define _SIDEBARWINDOWSTYPES_HXX
+namespace sw { namespace sidebarwindows {
+enum ViewState
+{
+ VS_NORMAL,
+ VS_VIEW,
+ VS_EDIT
+};
-class SfxMedium;
-/** Static API helper functions. */
-class SwWarnPassword
+enum SidebarPosition
{
-public:
- /** Opens a query warning dialog.
- @descr Pop up Query on export with a choice of yes/no if a
- an encrypted password is imported.
- @return true if yes and false if no. default to true.
- */
- static bool WarningOnPassword( SfxMedium& rMedium );
+ SIDEBAR_LEFT, // sidebar on left side
+ SIDEBAR_RIGHT, // sidebar on right side
+ SIDEBAR_NONE // sidebar on neither side
};
+} } // end of namespace sw::sidebarwindows
#endif
diff --git a/sw/inc/SwNumberTree.hxx b/sw/inc/SwNumberTree.hxx
index a361cb61690b..58c5f38a5696 100644
--- a/sw/inc/SwNumberTree.hxx
+++ b/sw/inc/SwNumberTree.hxx
@@ -165,13 +165,6 @@ public:
}
/**
- Returns the first child of this node.
-
- @return the child
- */
- SwNumberTreeNode* GetFirstChild() const;
-
- /**
Returns number of this node.
@param bValidate validate the number?
diff --git a/sw/inc/access.hrc b/sw/inc/access.hrc
index 7ce855267cd6..b6c6bb30086e 100644
--- a/sw/inc/access.hrc
+++ b/sw/inc/access.hrc
@@ -30,28 +30,29 @@
#include "rcid.hrc"
-// --> OD 2004-09-27 #117970# - remove STR_ACCESS_PARAGRAPH_NAME, STR_ACCESS_HEADING_NAME
-// STR_ACCESS_PARAGRAPH_DESC and STR_ACCESS_HEADING_DESC
-#define STR_ACCESS_DOC_NAME (RC_ACCESS_BEGIN + 1)
-#define STR_ACCESS_DOC_DESC (RC_ACCESS_BEGIN + 2)
-#define STR_ACCESS_HEADING_WITH_NUM_DESC (RC_ACCESS_BEGIN + 3)
-#define STR_ACCESS_HEADER_NAME (RC_ACCESS_BEGIN + 4)
-#define STR_ACCESS_HEADER_DESC (RC_ACCESS_BEGIN + 5)
-#define STR_ACCESS_FOOTER_NAME (RC_ACCESS_BEGIN + 6)
-#define STR_ACCESS_FOOTER_DESC (RC_ACCESS_BEGIN + 7)
+#define STR_ACCESS_DOC_NAME (RC_ACCESS_BEGIN + 1)
+#define STR_ACCESS_DOC_DESC (RC_ACCESS_BEGIN + 2)
+#define STR_ACCESS_HEADING_WITH_NUM_DESC (RC_ACCESS_BEGIN + 3)
+#define STR_ACCESS_HEADER_NAME (RC_ACCESS_BEGIN + 4)
+#define STR_ACCESS_HEADER_DESC (RC_ACCESS_BEGIN + 5)
+#define STR_ACCESS_FOOTER_NAME (RC_ACCESS_BEGIN + 6)
+#define STR_ACCESS_FOOTER_DESC (RC_ACCESS_BEGIN + 7)
#define STR_ACCESS_FOOTNOTE_NAME (RC_ACCESS_BEGIN + 8)
#define STR_ACCESS_FOOTNOTE_DESC (RC_ACCESS_BEGIN + 9)
-#define STR_ACCESS_ENDNOTE_NAME (RC_ACCESS_BEGIN + 10)
-#define STR_ACCESS_ENDNOTE_DESC (RC_ACCESS_BEGIN + 11)
-#define STR_ACCESS_REPLACEMENT_POSTIT (RC_ACCESS_BEGIN + 12)
-#define STR_ACCESS_REPLACEMENT_FRAME (RC_ACCESS_BEGIN + 13)
-#define STR_ACCESS_REPLACEMENT_BULLET_GRAPHICS (RC_ACCESS_BEGIN + 14)
+#define STR_ACCESS_ENDNOTE_NAME (RC_ACCESS_BEGIN + 10)
+#define STR_ACCESS_ENDNOTE_DESC (RC_ACCESS_BEGIN + 11)
+#define STR_ACCESS_REPLACEMENT_POSTIT (RC_ACCESS_BEGIN + 12)
+#define STR_ACCESS_REPLACEMENT_FRAME (RC_ACCESS_BEGIN + 13)
+#define STR_ACCESS_REPLACEMENT_BULLET_GRAPHICS (RC_ACCESS_BEGIN + 14)
#define STR_ACCESS_TABLE_DESC (RC_ACCESS_BEGIN + 15)
#define STR_ACCESS_PAGE_NAME (RC_ACCESS_BEGIN + 16)
#define STR_ACCESS_PAGE_DESC (RC_ACCESS_BEGIN + 17)
-// <--
+#define STR_ACCESS_ANNOTATION_AUTHOR_NAME (RC_ACCESS_BEGIN + 18)
+#define STR_ACCESS_ANNOTATION_DATE_NAME (RC_ACCESS_BEGIN + 19)
+#define STR_ACCESS_ANNOTATION_BUTTON_NAME (RC_ACCESS_BEGIN + 20)
+#define STR_ACCESS_ANNOTATION_BUTTON_DESC (RC_ACCESS_BEGIN + 21)
-#define ACCESS_ACT_END STR_ACCESS_PAGE_DESC
+#define ACCESS_ACT_END STR_ACCESS_ANNOTATION_BUTTON_DESC
#if ACCESS_ACT_END > RC_ACCESS_END
#error Resource-Id Ueberlauf in #file, #line
diff --git a/sw/inc/accmap.hxx b/sw/inc/accmap.hxx
index 5ee891e3e1f4..01c4593fe636 100644
--- a/sw/inc/accmap.hxx
+++ b/sw/inc/accmap.hxx
@@ -33,14 +33,15 @@
#include <vos/mutex.hxx>
#include <svx/IAccessibleViewForwarder.hxx>
#include <svx/IAccessibleParent.hxx>
-#include "viewsh.hxx"
#include <tools/debug.hxx>
#include <tools/fract.hxx>
#include <vector>
+class ViewShell;
class Rectangle;
class SwFrm;
+class SwTxtFrm;
class SwPageFrm;
class SwAccessibleContext;
class SwAccessibleContextMap_Impl;
@@ -48,85 +49,17 @@ class SwAccessibleEventList_Impl;
class SwAccessibleEventMap_Impl;
class SwShapeList_Impl;
class SdrObject;
-namespace accessibility { class AccessibleShape; }
+namespace accessibility {
+ class AccessibleShape;
+}
class SwAccessibleShapeMap_Impl;
struct SwAccessibleEvent_Impl;
-// --> OD 2005-12-13 #i27301#
class SwAccessibleSelectedParas_Impl;
-// <--
class SwRect;
class MapMode;
class SwAccPreviewData;
-// OD 14.01.2003 #103492#
-#ifndef _PREVWPAGE_HXX
-#include <prevwpage.hxx>
-#endif
-
-// helper class that stores preview data
-class SwAccPreviewData
-{
- typedef std::vector<Rectangle> Rectangles;
- Rectangles maPreviewRects;
- Rectangles maLogicRects;
-
- SwRect maVisArea;
- Fraction maScale;
-
- const SwPageFrm *mpSelPage;
-
- /** adjust logic page retangle to its visible part
-
- OD 17.01.2003 #103492#
-
- @author OD
-
- @param _iorLogicPgSwRect
- input/output parameter - reference to the logic page rectangle, which
- has to be adjusted.
-
- @param _rPrevwPgSwRect
- input parameter - constant reference to the corresponding preview page
- rectangle; needed to determine the visible part of the logic page rectangle.
-
- @param _rPrevwWinSize
- input paramter - constant reference to the preview window size in TWIP;
- needed to determine the visible part of the logic page rectangle
- */
- void AdjustLogicPgRectToVisibleArea( SwRect& _iorLogicPgSwRect,
- const SwRect& _rPrevwPgSwRect,
- const Size& _rPrevwWinSize );
-
-public:
- SwAccPreviewData();
- ~SwAccPreviewData();
-
- // OD 14.01.2003 #103492# - complete re-factoring of method due to new
- // page/print preview functionality.
- void Update( const std::vector<PrevwPage*>& _rPrevwPages,
- const Fraction& _rScale,
- const SwPageFrm* _pSelectedPageFrm,
- const Size& _rPrevwWinSize );
-
- // OD 14.01.2003 #103492# - complete re-factoring of method due to new
- // page/print preview functionality.
- void InvalidateSelection( const SwPageFrm* _pSelectedPageFrm );
-
- const SwRect& GetVisArea() const;
-
- MapMode GetMapModeForPreview( ) const;
-
- /** Adjust the MapMode so that the preview page appears at the
- * proper position. rPoint identifies the page for which the
- * MapMode should be adjusted. If bFromPreview is true, rPoint is
- * a preview coordinate; else it's a document coordinate. */
- // OD 17.01.2003 #103492# - delete unused 3rd parameter.
- void AdjustMapMode( MapMode& rMapMode,
- const Point& rPoint ) const;
-
- inline const SwPageFrm *GetSelPage() const { return mpSelPage; }
-
- void DisposePage(const SwPageFrm *pPageFrm );
-};
+struct PrevwPage;
+class Window;
// real states for events
#define ACC_STATE_EDITABLE 0x01
@@ -154,7 +87,7 @@ typedef sal_uInt16 tAccessibleStates;
class SwAccessibleMap : public accessibility::IAccessibleViewForwarder,
public accessibility::IAccessibleParent
{
- ::vos::OMutex maMutex;
+ mutable ::vos::OMutex maMutex;
::vos::OMutex maEventMutex;
SwAccessibleContextMap_Impl *mpFrmMap;
SwAccessibleShapeMap_Impl *mpShapeMap;
@@ -246,14 +179,7 @@ public:
return mpVSh;
}
- inline const SwRect& GetVisArea() const
- {
- DBG_ASSERT( !GetShell()->IsPreView() || (mpPreview != NULL),
- "preview without preview data?" );
- return GetShell()->IsPreView()
- ? mpPreview->GetVisArea()
- : GetShell()->VisArea();
- }
+ const SwRect& GetVisArea() const;
/** get size of a dedicated preview page
@@ -274,10 +200,14 @@ public:
void RemoveContext( const SdrObject *pObj );
// Dispose frame and its children if bRecursive is set
- void Dispose( const SwFrm *pFrm, const SdrObject *pObj,
- sal_Bool bRecursive=sal_False );
-
- void InvalidatePosOrSize( const SwFrm *pFrm, const SdrObject *pObj,
+ void Dispose( const SwFrm* pFrm,
+ const SdrObject* pObj,
+ Window* pWindow,
+ sal_Bool bRecursive = sal_False );
+
+ void InvalidatePosOrSize( const SwFrm* pFrm,
+ const SdrObject* pObj,
+ Window* pWindow,
const SwRect& rOldFrm );
void InvalidateContent( const SwFrm *pFrm );
@@ -333,6 +263,9 @@ public:
*/
void InvalidateTextSelectionOfAllParas();
+ sal_Int32 GetChildIndex( const SwFrm& rParentFrm,
+ Window& rChild ) const;
+
// update preview data (and fire events if necessary)
// OD 15.01.2003 #103492# - complete re-factoring of method due to new
// page/print preview functionality.
diff --git a/sw/inc/cmdid.h b/sw/inc/cmdid.h
index c8defcc78a42..a206392aad3b 100644
--- a/sw/inc/cmdid.h
+++ b/sw/inc/cmdid.h
@@ -717,7 +717,6 @@ Achtung: Ab sofort sind in diesem File keine C++-Kommentare (//) mehr
--------------------------------------------------------------------*/
#define FN_LINE_NUMBERING_DLG (FN_EXTRA + 2 ) /* Zeilennumerierung */
-#define FN_THESAURUS_DLG (FN_EXTRA + 3 ) /* Thesaurus */
#define FN_HYPHENATE_OPT_DLG (FN_EXTRA + 5 ) /* Silbentrennung */
#define FN_ADD_UNKNOWN (FN_EXTRA + 6 ) /* Woerter lernen */
#define FN_DICTIONARY_DLG (FN_EXTRA + 8 ) /* Woerterbuecher */
@@ -907,6 +906,7 @@ Achtung: Ab sofort sind in diesem File keine C++-Kommentare (//) mehr
#define FN_UNO_PARA_NUM_STRING (FN_EXTRA2 + 110)
#define FN_UNO_TABLE_NAME (FN_EXTRA2 + 111)
#define FN_UNO_META (FN_EXTRA2 + 112)
+#define FN_UNO_NESTED_TEXT_CONTENT (FN_EXTRA2 + 113)
/*--------------------------------------------------------------------
Bereich: Hilfe
diff --git a/sw/inc/crsrsh.hxx b/sw/inc/crsrsh.hxx
index bcf511aa2a5b..22cb3613502e 100644
--- a/sw/inc/crsrsh.hxx
+++ b/sw/inc/crsrsh.hxx
@@ -27,6 +27,8 @@
#ifndef _CRSRSH_HXX
#define _CRSRSH_HXX
+#include <com/sun/star/i18n/WordType.hpp>
+
#include <tools/string.hxx>
#include <tools/link.hxx>
#include <tools/rtti.hxx>
@@ -746,11 +748,12 @@ public:
BOOL GoStartSentence();
BOOL GoEndSentence();
BOOL SelectWord( const Point* pPt = 0 );
+ BOOL ExpandToSentenceBorders();
// Position vom akt. Cursor erfragen
- BOOL IsStartWord()const;
- BOOL IsEndWord() const;
- BOOL IsInWord() const;
+ BOOL IsStartWord( sal_Int16 nWordType = com::sun::star::i18n::WordType::ANYWORD_IGNOREWHITESPACES )const;
+ BOOL IsEndWord( sal_Int16 nWordType = com::sun::star::i18n::WordType::ANYWORD_IGNOREWHITESPACES ) const;
+ BOOL IsInWord( sal_Int16 nWordType = com::sun::star::i18n::WordType::ANYWORD_IGNOREWHITESPACES ) const;
BOOL IsStartSentence() const;
BOOL IsEndSentence() const;
BOOL IsSttPara() const;
diff --git a/sw/inc/doc.hxx b/sw/inc/doc.hxx
index ff3d91add396..10befb703b96 100644
--- a/sw/inc/doc.hxx
+++ b/sw/inc/doc.hxx
@@ -164,6 +164,7 @@ class SwRubyList;
class SwRubyListEntry;
class SwSectionFmt;
class SwSectionFmts;
+class SwSectionData;
class SwSelBoxes;
class SwSpzFrmFmts;
class SwTOXBase;
@@ -715,6 +716,7 @@ private:
bool DeleteAndJoinImpl(SwPaM&, const bool);
bool DeleteAndJoinWithRedlineImpl(SwPaM&, const bool unused = false);
bool DeleteRangeImpl(SwPaM&, const bool unused = false);
+ bool DeleteRangeImplImpl(SwPaM &);
bool ReplaceRangeImpl(SwPaM&, String const&, const bool);
public:
@@ -1803,8 +1805,9 @@ public:
inline const Link& GetOle2Link() const {return aOle2Link;}
// insert section (the ODF kind of section, not the nodesarray kind)
- SwSection* InsertSwSection( const SwPaM& rRange, const SwSection& rNew,
- const SfxItemSet* pAttr = 0, bool bUpdate = true);
+ SwSection * InsertSwSection(SwPaM const& rRange, SwSectionData &,
+ SwTOXBase const*const pTOXBase = 0,
+ SfxItemSet const*const pAttr = 0, bool const bUpdate = true);
sal_uInt16 IsInsRegionAvailable( const SwPaM& rRange,
const SwNode** ppSttNd = 0 ) const;
SwSection* GetCurrSection( const SwPosition& rPos ) const;
@@ -1812,7 +1815,8 @@ public:
const SwSectionFmts& GetSections() const { return *pSectionFmtTbl; }
SwSectionFmt *MakeSectionFmt( SwSectionFmt *pDerivedFrom );
void DelSectionFmt( SwSectionFmt *pFmt, sal_Bool bDelNodes = sal_False );
- void ChgSection( sal_uInt16 nSect, const SwSection&, const SfxItemSet* = 0, sal_Bool bPreventLinkUpdate = FALSE);
+ void UpdateSection(sal_uInt16 const nSect, SwSectionData &,
+ SfxItemSet const*const = 0, bool const bPreventLinkUpdate = false);
String GetUniqueSectionName( const String* pChkStr = 0 ) const;
/* @@@MAINTAINABILITY-HORROR@@@
@@ -2127,7 +2131,7 @@ public:
::sfx2::IXmlIdRegistry& GetXmlIdRegistry();
::sw::MetaFieldManager & GetMetaFieldManager();
- SwDoc* CreateCopy() const;
+ SfxObjectShell* CreateCopy(bool bCallInitNew) const;
};
diff --git a/sw/inc/dochdl.hrc b/sw/inc/dochdl.hrc
index ae39f480e6a3..47b0b8014240 100644
--- a/sw/inc/dochdl.hrc
+++ b/sw/inc/dochdl.hrc
@@ -43,10 +43,8 @@
#define STR_PRIVATEOLE (RC_DOCHDL_BEGIN + 10)
#define STR_DDEFORMAT (RC_DOCHDL_BEGIN + 11)
-#define BMP_SW_TEAM_MUGSHOT (RC_DOCHDL_BEGIN + 12)
-#define STR_SW_TEAM_NAMES (RC_DOCHDL_BEGIN + 13)
-#define DOCHDL_ACT_END STR_SW_TEAM_NAMES
+#define DOCHDL_ACT_END STR_DDEFORMAT
#if DOCHDL_ACT_END > RC_DOCHDL_END
#error Resource-Id Ueberlauf in #file, #line
diff --git a/sw/inc/docsh.hxx b/sw/inc/docsh.hxx
index 16e6cd047fb6..3dd338a5e129 100755
--- a/sw/inc/docsh.hxx
+++ b/sw/inc/docsh.hxx
@@ -29,6 +29,7 @@
#include <rtl/ref.hxx>
#include <com/sun/star/frame/XController.hpp>
+#include <com/sun/star/uno/Sequence.h>
#include <vcl/timer.hxx>
#include <sfx2/docfac.hxx>
#include <sfx2/objsh.hxx>
@@ -302,6 +303,14 @@ public:
SfxInPlaceClient* GetIPClient( const ::svt::EmbeddedObjectRef& xObjRef );
virtual const ::sfx2::IXmlIdRegistry* GetXmlIdRegistry() const;
+
+ // passwword protection for Writer (derived from SfxObjectShell)
+ // see also: FN_REDLINE_ON, FN_REDLINE_ON
+ virtual bool IsChangeRecording() const;
+ virtual bool HasChangeRecordProtection() const;
+ virtual void SetChangeRecording( bool bActivate );
+ virtual bool SetProtectionPassword( const String &rPassword );
+ virtual bool GetProtectionHash( /*out*/ ::com::sun::star::uno::Sequence< sal_Int8 > &rPasswordHash );
};
class Graphic;
diff --git a/sw/inc/editsh.hxx b/sw/inc/editsh.hxx
index b2483f21a75a..9dc09103606e 100644
--- a/sw/inc/editsh.hxx
+++ b/sw/inc/editsh.hxx
@@ -89,6 +89,7 @@ class SwTable;
class SwTextBlocks; // fuer GlossaryRW
class SwFmtFtn;
class SwSection;
+class SwSectionData;
class SwSectionFmt;
class SwTOXMarks;
class SwTOXBase;
@@ -200,6 +201,7 @@ public:
// change text to Upper/Lower/Hiragana/Katagana/...
void TransliterateText( sal_uInt32 nType );
+ void TransliterateText( const String& rModuleName );
// count words in current selection
void CountWords( SwDocStat& rStat ) const;
@@ -743,9 +745,14 @@ public:
bool SpellSentence(::svx::SpellPortions& rToFill, bool bIsGrammarCheck );
// make SpellIter start with the current sentence when called next time
void PutSpellingToSentenceStart();
+ // moves the continuation position to the end of the currently checked sentence
+ void MoveContinuationPosToEndOfCheckedSentence();
//applies a changed sentence
- void ApplyChangedSentence(const ::svx::SpellPortions& rNewPortions, bool bIsGrammarCheck);
+ void ApplyChangedSentence(const ::svx::SpellPortions& rNewPortions, bool bRecheck);
+
+ // check SwSpellIter data to see if the last sentence got grammar checked
+ bool HasLastSentenceGotGrammarChecked() const;
// Is text conversion active somewhere else?
BOOL HasConvIter() const;
// Is hyphenation active somewhere else?
@@ -809,9 +816,8 @@ public:
// gebe Liste aller Fussnoten und deren Anfangstexte
USHORT GetSeqFtnList( SwSeqFldList& rList, bool bEndNotes = false );
- // SS fuer Bereiche
- const SwSection* InsertSection( const SwSection& rNew,
- const SfxItemSet* = 0 );
+ SwSection const* InsertSection(
+ SwSectionData & rNewData, SfxItemSet const*const = 0 );
BOOL IsInsRegionAvailable() const;
const SwSection* GetCurrSection() const;
// liefert wie GetCurrSection() den aktuellen Bereich, allerdings geht diese Funktion
@@ -825,7 +831,8 @@ public:
USHORT GetSectionFmtPos( const SwSectionFmt& ) const;
const SwSectionFmt& GetSectionFmt(USHORT nFmt) const;
void DelSectionFmt( USHORT nFmt );
- void ChgSection( USHORT nSect, const SwSection&, const SfxItemSet* = 0 );
+ void UpdateSection(sal_uInt16 const nSect, SwSectionData &,
+ SfxItemSet const*const = 0);
BOOL IsAnySectionInDoc( BOOL bChkReadOnly = FALSE,
BOOL bChkHidden = FALSE,
BOOL BChkTOX = FALSE ) const;
@@ -871,7 +878,7 @@ public:
BOOL IsGlblDocSaveLinks() const;
USHORT GetGlobalDocContent( SwGlblDocContents& rArr ) const;
BOOL InsertGlobalDocContent( const SwGlblDocContent& rPos,
- const SwSection& rNew );
+ SwSectionData & rNew );
BOOL InsertGlobalDocContent( const SwGlblDocContent& rPos,
const SwTOXBase& rTOX );
BOOL InsertGlobalDocContent( const SwGlblDocContent& rPos );
diff --git a/sw/inc/fesh.hxx b/sw/inc/fesh.hxx
index 7da1c30e6577..216f902e4b6c 100644
--- a/sw/inc/fesh.hxx
+++ b/sw/inc/fesh.hxx
@@ -63,6 +63,11 @@ class SwFrmFmt;
struct SwSortOptions;
class SdrMarkList;
+namespace svx
+{
+ class ISdrObjectFilter;
+}
+
// return values for GetFrmType() und GetSelFrmType().
//! values can be combined via logival or
@@ -464,6 +469,7 @@ public:
BOOL GetObjAttr( SfxItemSet &rSet ) const;
BOOL SetObjAttr( const SfxItemSet &rSet );
+ const SdrObject* GetBestObject( BOOL bNext, USHORT eType = GOTOOBJ_DRAW_ANY, BOOL bFlat = TRUE, const ::svx::ISdrObjectFilter* pFilter = NULL );
BOOL GotoObj( BOOL bNext, USHORT /*GOTOOBJ_...*/ eType = GOTOOBJ_DRAW_ANY);
//Setzen vom DragMode (z.B. Rotate), tut nix bei Rahmenselektion.
@@ -476,7 +482,7 @@ public:
void EndTextEdit(); //Loescht ggf. das Objekt.
//Ankertyp des selektierten Objektes, -1 bei Uneindeutigkeit oder
- //Rahmenselektion; FLY_PAGE bzw. FLY_AT_CNTNT aus frmatr.hxx sonst.
+ //Rahmenselektion; FLY_AT_PAGE bzw. FLY_AT_PARA aus frmatr.hxx sonst.
short GetAnchorId() const;
//Erzeugen von DrawObjekten, beim Begin wird der Objekttyp mitgegeben.
diff --git a/sw/inc/fldbas.hxx b/sw/inc/fldbas.hxx
index a39dcefaabd3..a2e08366ba24 100644
--- a/sw/inc/fldbas.hxx
+++ b/sw/inc/fldbas.hxx
@@ -305,12 +305,17 @@ inline void SwFieldType::UpdateFlds() const
class SW_DLLPUBLIC SwField
{
+private:
+ mutable String m_Cache; /// #i85766# cached expansion (for clipboard)
USHORT nLang; // Immer ueber SetLanguage aendern!
BOOL bIsAutomaticLanguage;
sal_uInt32 nFormat;
SwFieldType* pType;
+ virtual String Expand() const = 0;
+ virtual SwField* Copy() const = 0;
+
protected:
void SetFormat(sal_uInt32 nSet) {nFormat = nSet;}
@@ -325,12 +330,16 @@ public:
// neuen Typ setzen (wird fuer das Kopieren zwischen Dokumenten benutzt)
virtual SwFieldType* ChgTyp( SwFieldType* );
- // Expandierung fuer die Anzeige
- virtual String Expand() const = 0;
+ /** expand the field.
+ @param bInClipboard field is in clipboard document?
+ @return the generated text (suitable for display)
+ */
+ String ExpandField(bool const bInClipboard) const;
// liefert den Namen oder den Inhalt
virtual String GetCntnt(BOOL bName = FALSE) const;
- virtual SwField* Copy() const = 0;
+
+ SwField * CopyField() const;
// ResId
USHORT Which() const
diff --git a/sw/inc/htmltbl.hxx b/sw/inc/htmltbl.hxx
index 941e6bc43eb2..ef16a2a89b86 100644
--- a/sw/inc/htmltbl.hxx
+++ b/sw/inc/htmltbl.hxx
@@ -267,6 +267,7 @@ class SwHTMLTableLayout
DECL_STATIC_LINK( SwHTMLTableLayout, DelayedResize_Impl, void* );
+ static USHORT GetBrowseWidthByVisArea( const SwDoc& rDoc );
public:
SwHTMLTableLayout( const SwTable *pSwTbl,
@@ -348,7 +349,6 @@ public:
// oder eine ViewShell vorhanden ist. Sonst wird 0 zurueckgegeben.
// (Wird vom HTML-Filter benoetigt, da der nicht an das Layout kommt.)
static USHORT GetBrowseWidth( const SwDoc& rDoc );
- static USHORT GetBrowseWidthByVisArea( const SwDoc& rDoc );
// Ermitteln der verfuegbaren Breite uber den Tabellen-Frame
USHORT GetBrowseWidthByTabFrm( const SwTabFrm& rTabFrm ) const;
diff --git a/sw/inc/index.hxx b/sw/inc/index.hxx
index 3cf78b290029..5b9dd827108e 100644
--- a/sw/inc/index.hxx
+++ b/sw/inc/index.hxx
@@ -63,7 +63,7 @@ class SW_DLLPUBLIC SwIndex
void Remove(); // Ausketten
public:
- SwIndex( SwIndexReg * pReg, xub_StrLen nIdx = 0 );
+ explicit SwIndex(SwIndexReg *const pReg, xub_StrLen const nIdx = 0);
SwIndex( const SwIndex & );
SwIndex( const SwIndex &, short nDiff );
~SwIndex() { Remove(); }
diff --git a/sw/inc/ndarr.hxx b/sw/inc/ndarr.hxx
index 787edb8f0ae6..dd822a11dfdd 100644
--- a/sw/inc/ndarr.hxx
+++ b/sw/inc/ndarr.hxx
@@ -25,19 +25,19 @@
*
************************************************************************/
-#ifndef _NDARR_HXX
-#define _NDARR_HXX
+#ifndef SW_NDARR_HXX
+#define SW_NDARR_HXX
+
+#include <vector>
#include <com/sun/star/embed/XEmbeddedObject.hpp>
+
#include <svl/svarray.hxx>
+#include <svtools/embedhlp.hxx>
-#ifndef _BPARR_HXX
#include <bparr.hxx>
-#endif
#include <ndtyp.hxx>
-#include <svtools/embedhlp.hxx>
-#include <vector>
class Graphic;
class GraphicObject;
@@ -55,8 +55,9 @@ class SwNodeRange;
class SwOLENode;
class SwOutlineNodes;
class SwPaM;
-class SwSection;
+class SwSectionData;
class SwSectionFmt;
+class SwTOXBase;
class SwSectionNode;
class SwStartNode;
class SwTableBoxFmt;
@@ -134,6 +135,9 @@ protected:
public:
~SwNodes();
+ typedef ::std::vector<SwNodeRange> NodeRanges_t;
+ typedef ::std::vector<NodeRanges_t> TableRanges_t;
+
SwNodePtr operator[]( ULONG n ) const
{ return (SwNodePtr)BigPtrArray::operator[] ( n ); }
@@ -275,8 +279,11 @@ public:
SwTableBoxFmt* pBoxFmt,
SwTxtFmtColl* pTxtColl,
SwUndoTxtToTbl* pUndo = 0 );
+
+ SwNodeRange * ExpandRangeForTableBox(const SwNodeRange & rRange);
+
//create a table from a vector of NodeRanges - API support
- SwTableNode* TextToTable( const std::vector< std::vector<SwNodeRange> >& rTableNodes,
+ SwTableNode* TextToTable( const TableRanges_t& rTableNodes,
SwTableFmt* pTblFmt,
SwTableLineFmt* pLineFmt,
SwTableBoxFmt* pBoxFmt,
@@ -310,12 +317,13 @@ public:
USHORT nMode = 0, SwHistory* pHistory = 0 );
// fuege eine neue SwSection ein
- SwSectionNode* InsertSection( const SwNodeIndex& rNdIdx,
+ SwSectionNode* InsertTextSection(SwNodeIndex const& rNdIdx,
SwSectionFmt& rSectionFmt,
- const SwSection&,
- const SwNodeIndex* pEnde,
- BOOL bInsAtStart = TRUE,
- BOOL bCreateFrms = TRUE );
+ SwSectionData const&,
+ SwTOXBase const*const pTOXBase,
+ SwNodeIndex const*const pEnde,
+ bool const bInsAtStart = true,
+ bool const bCreateFrms = true);
// in welchem Doc steht das Nodes-Array ?
SwDoc* GetDoc() { return pMyDoc; }
diff --git a/sw/inc/ndtxt.hxx b/sw/inc/ndtxt.hxx
index 868340edc800..53168d5a9cb4 100644
--- a/sw/inc/ndtxt.hxx
+++ b/sw/inc/ndtxt.hxx
@@ -24,8 +24,8 @@
* for a copy of the LGPLv3 License.
*
************************************************************************/
-#ifndef _NDTXT_HXX
-#define _NDTXT_HXX
+#ifndef SW_NDTXT_HXX
+#define SW_NDTXT_HXX
#include <cppuhelper/weakref.hxx>
@@ -133,6 +133,8 @@ class SW_DLLPUBLIC SwTxtNode: public SwCntntNode, public ::sfx2::Metadatable
// pointer to the list, to whose the text node is added to
SwList* mpList;
// <--
+ /// #i111677# cached expansion (for clipboard)
+ ::std::auto_ptr< ::rtl::OUString > m_pNumStringCache;
::com::sun::star::uno::WeakReference<
::com::sun::star::text::XTextContent> m_wXParagraph;
@@ -199,6 +201,8 @@ class SW_DLLPUBLIC SwTxtNode: public SwCntntNode, public ::sfx2::Metadatable
inline void TryDeleteSwpHints();
+ SW_DLLPRIVATE void impl_FmtToTxtAttr(const SfxItemSet& i_rAttrSet);
+
public:
bool IsWordCountDirty() const;
bool IsWrongDirty() const;
@@ -363,14 +367,30 @@ public:
BOOL DontExpandFmt( const SwIndex& rIdx, bool bFlag = true,
BOOL bFmtToTxtAttributes = TRUE );
- // gebe das vorgegebene Attribut, welches an der TextPosition (rIdx)
- // gesetzt ist zurueck. Gibt es keines, returne 0-Pointer
- // gesetzt heisst: Start <= rIdx < End
- // FIXME: this function does not seem to be well-defined for those
- // hints of which several may cover a single position, like TOXMark,
- // or CharFmt
- SwTxtAttr *GetTxtAttr( const SwIndex& rIdx, USHORT nWhichHt,
- BOOL bExpand = FALSE ) const;
+ enum GetTxtAttrMode {
+ DEFAULT, /// DEFAULT: (Start < nIndex <= End)
+ EXPAND, /// EXPAND : (Start <= nIndex < End)
+ PARENT, /// PARENT : (Start < nIndex < End)
+ };
+
+ /** get the innermost text attribute covering position nIndex.
+ @param nWhich only attribute with this id is returned.
+ @param eMode the predicate for matching (@see GetTxtAttrMode).
+
+ ATTENTION: this function is not well-defined for those
+ hints of which several may cover a single position, like
+ RES_TXTATR_CHARFMT, RES_TXTATR_REFMARK, RES_TXTATR_TOXMARK
+ */
+ SwTxtAttr *GetTxtAttrAt(xub_StrLen const nIndex, RES_TXTATR const nWhich,
+ enum GetTxtAttrMode const eMode = DEFAULT) const;
+
+ /** get the innermost text attributes covering position nIndex.
+ @param nWhich only attributes with this id are returned.
+ @param eMode the predicate for matching (@see GetTxtAttrMode).
+ */
+ ::std::vector<SwTxtAttr *> GetTxtAttrsAt(xub_StrLen const nIndex,
+ RES_TXTATR const nWhich,
+ enum GetTxtAttrMode const eMode = DEFAULT) const;
/** get the text attribute at position nIndex which owns
the dummy character CH_TXTATR_* at that position, if one exists.
diff --git a/sw/inc/node.hxx b/sw/inc/node.hxx
index cdf14c33d05b..6cc14bbbf2c2 100644
--- a/sw/inc/node.hxx
+++ b/sw/inc/node.hxx
@@ -25,18 +25,23 @@
*
************************************************************************/
-#ifndef _NODE_HXX
-#define _NODE_HXX
+#ifndef SW_NODE_HXX
+#define SW_NODE_HXX
+
+#include <vector>
+
+#include <boost/utility.hpp>
+#include <boost/shared_ptr.hpp>
#include <tools/mempool.hxx>
#include <tools/gen.hxx>
+
#include "swdllapi.h"
#include <ndarr.hxx>
#include <ndtyp.hxx>
#include <index.hxx>
#include <fmtcol.hxx>
-#include <boost/shared_ptr.hpp>
-#include <vector>
+
// ---------------------
// forward Deklarationen
// ---------------------
@@ -55,6 +60,7 @@ class SwOLENode;
class SwRect;
class SwSection;
class SwSectionFmt;
+class SwTOXBase;
class SwSectionNode;
class SwStartNode;
class SwTabFrm;
@@ -547,22 +553,24 @@ private:
//---------
// SwSectionNode
//---------
-class SwSectionNode : public SwStartNode
+class SwSectionNode
+ : public SwStartNode
+ , private ::boost::noncopyable
{
friend class SwNodes;
- SwSection* pSection;
+
+private:
+ ::std::auto_ptr<SwSection> const m_pSection;
+
protected:
virtual ~SwSectionNode();
public:
- SwSectionNode( const SwNodeIndex&, SwSectionFmt& rFmt );
+ SwSectionNode(SwNodeIndex const&,
+ SwSectionFmt & rFmt, SwTOXBase const*const pTOXBase);
- const SwSection& GetSection() const { return *pSection; }
- SwSection& GetSection() { return *pSection; }
-
- // setze ein neues SectionObject. Erstmal nur gedacht fuer die
- // neuen VerzeichnisSections. Der geht ueber in den Besitz des Nodes!
- void SetNewSection( SwSection* pNewSection );
+ const SwSection& GetSection() const { return *m_pSection; }
+ SwSection& GetSection() { return *m_pSection; }
SwFrm *MakeFrm();
@@ -591,10 +599,6 @@ public:
// _nicht_ in einem versteckten (Unter-)Bereich liegt
BOOL IsCntntHidden() const;
-private:
- // privater Constructor, weil nie kopiert werden darf !!
- SwSectionNode( const SwSection& rNode );
- SwSectionNode & operator= ( const SwSection& rNode );
};
diff --git a/sw/inc/pch/precompiled_sw.hxx b/sw/inc/pch/precompiled_sw.hxx
index 35c887f22f87..fd7f3b135365 100644
--- a/sw/inc/pch/precompiled_sw.hxx
+++ b/sw/inc/pch/precompiled_sw.hxx
@@ -728,7 +728,7 @@
#include "editeng/eeitem.hxx"
#include "filter/msfilter/escherex.hxx"
#include "svx/extrusionbar.hxx"
-#include "svx/extrusioncontrols.hxx"
+#include "svx/extrusioncolorcontrol.hxx"
#include "svx/fillctrl.hxx"
#include "svx/flagsdef.hxx"
#include "editeng/flstitem.hxx"
diff --git a/sw/inc/postit.hxx b/sw/inc/postit.hxx
deleted file mode 100644
index 6a21f8781d6c..000000000000
--- a/sw/inc/postit.hxx
+++ /dev/null
@@ -1,413 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * 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.
- *
- ************************************************************************/
-
-#ifndef _POSTIT_HXX
-#define _POSTIT_HXX
-
-#include <postithelper.hxx>
-
-#include <vcl/window.hxx>
-#include <swrect.hxx>
-#include <svx/sdr/overlay/overlayobject.hxx>
-
-#include <tools/datetime.hxx>
-#include <tools/date.hxx>
-
-#include <vcl/lineinfo.hxx>
-#include <basegfx/polygon/b2dpolygon.hxx>
-#include <editeng/editstat.hxx>
-
-class SwPostItMgr;
-class SwPostItField;
-class SwFmtFld;
-class OutlinerView;
-class Outliner;
-class ScrollBar;
-class SwEditWin;
-class SwView;
-class SwPostIt;
-class Edit;
-class MultiLineEdit;
-class PopupMenu;
-class SvxLanguageItem;
-class SwRedline;
-class OutlinerParaObject;
-
-#define ANKORLINE_WIDTH 1
-
-enum AnkorState {AS_ALL, AS_START, AS_END,AS_TRI};
-
-class SwPostItAnkor: public sdr::overlay::OverlayObjectWithBasePosition
-{
- protected:
- /* 6------------7
- 1 /
- /4\ ---------------5
- 2 - 3
- */
-
- basegfx::B2DPoint maSecondPosition;
- basegfx::B2DPoint maThirdPosition;
- basegfx::B2DPoint maFourthPosition;
- basegfx::B2DPoint maFifthPosition;
- basegfx::B2DPoint maSixthPosition;
- basegfx::B2DPoint maSeventhPosition;
-
- // helpers to fill and reset geometry
- void implEnsureGeometry();
- void implResetGeometry();
-
- // geometry creation for OverlayObject
- virtual drawinglayer::primitive2d::Primitive2DSequence createOverlayObjectPrimitive2DSequence();
-
- private:
- // object's geometry
- basegfx::B2DPolygon maTriangle;
- basegfx::B2DPolygon maLine;
- basegfx::B2DPolygon maLineTop;
- unsigned long mHeight;
- AnkorState mAnkorState;
-
- // bitfield
- unsigned mbShadowedEffect : 1;
- unsigned mbLineSolid : 1;
-
- public:
- SwPostItAnkor(const basegfx::B2DPoint& rBasePos,
- const basegfx::B2DPoint& rSecondPos,
- const basegfx::B2DPoint& rThirdPos,
- const basegfx::B2DPoint& rFourthPos,
- const basegfx::B2DPoint& rFifthPos,
- const basegfx::B2DPoint& rSixthPos,
- const basegfx::B2DPoint& rSeventhPos,
- Color aBaseColor,
- bool bShadowedEffect,
- bool bLineSolid);
- virtual ~SwPostItAnkor();
-
- const basegfx::B2DPoint& GetSecondPosition() const { return maSecondPosition; }
- const basegfx::B2DPoint& GetThirdPosition() const { return maThirdPosition; }
- const basegfx::B2DPoint& GetFourthPosition() const { return maFourthPosition; }
- const basegfx::B2DPoint& GetFifthPosition() const { return maFifthPosition; }
- const basegfx::B2DPoint& GetSixthPosition() const { return maSixthPosition; }
- const basegfx::B2DPoint& GetSeventhPosition() const { return maSeventhPosition; }
-
- void SetAllPosition(const basegfx::B2DPoint& rPoint1, const basegfx::B2DPoint& rPoint2, const basegfx::B2DPoint& rPoint3,
- const basegfx::B2DPoint& rPoint4, const basegfx::B2DPoint& rPoint5, const basegfx::B2DPoint& rPoint6, const basegfx::B2DPoint& rPoint7);
- void SetTriPosition(const basegfx::B2DPoint& rPoint1,const basegfx::B2DPoint& rPoint2,const basegfx::B2DPoint& rPoint3,
- const basegfx::B2DPoint& rPoint4,const basegfx::B2DPoint& rPoint5);
- void SetSixthPosition(const basegfx::B2DPoint& rNew);
- void SetSeventhPosition(const basegfx::B2DPoint& rNew);
-
- bool getLineSolid() const { return mbLineSolid; }
- void setLineSolid(bool bNew);
-
- void SetHeight(const unsigned long aHeight) {mHeight = aHeight;};
-
- bool getShadowedEffect() const { return mbShadowedEffect; }
-
- void SetAnkorState(AnkorState aState);
- AnkorState GetAnkorState() const {return mAnkorState;}
-};
-
-enum ShadowState {SS_NORMAL, SS_VIEW, SS_EDIT};
-
-class SwPostItShadow: public sdr::overlay::OverlayObjectWithBasePosition
-{
- protected:
- // geometry creation for OverlayObject
- virtual drawinglayer::primitive2d::Primitive2DSequence createOverlayObjectPrimitive2DSequence();
-
- private:
- basegfx::B2DPoint maSecondPosition;
- ShadowState mShadowState;
-
- public:
- SwPostItShadow(const basegfx::B2DPoint& rBasePos, const basegfx::B2DPoint& rSecondPosition, Color aBaseColor,ShadowState aState);
- virtual ~SwPostItShadow();
-
- void SetShadowState(ShadowState aState);
- ShadowState GetShadowState() {return mShadowState;}
-
- const basegfx::B2DPoint& GetSecondPosition() const { return maSecondPosition; }
- void SetSecondPosition(const basegfx::B2DPoint& rNew);
- void SetPosition(const basegfx::B2DPoint& rPoint1,const basegfx::B2DPoint& rPoint2);
-};
-
-class PostItTxt : public Window
-{
- private:
- OutlinerView* mpOutlinerView;
- SwMarginWin* mpMarginWin;
-
- bool mMouseOver;
- BOOL mbShowPopup;
-
- protected:
- virtual void Paint( const Rectangle& rRect);
- virtual void KeyInput( const KeyEvent& rKeyEvt );
- virtual void MouseMove( const MouseEvent& rMEvt );
- virtual void MouseButtonDown( const MouseEvent& rMEvt );
- virtual void MouseButtonUp( const MouseEvent& rMEvt );
- virtual void Command( const CommandEvent& rCEvt );
- virtual void DataChanged( const DataChangedEvent& aData);
- virtual void LoseFocus();
- virtual void RequestHelp(const HelpEvent &rEvt);
- virtual XubString GetSurroundingText() const;
- virtual Selection GetSurroundingTextSelection() const;
-
- DECL_LINK( Select, Menu* );
-
- public:
- PostItTxt(Window* pParent, WinBits nBits);
- ~PostItTxt();
-
- virtual void GetFocus();
- void SetTextView( OutlinerView* aEditView ) { mpOutlinerView = aEditView; }
-
- DECL_LINK( WindowEventListener, VclSimpleEvent* );
- DECL_LINK( OnlineSpellCallback, SpellCallbackInfo*);
-};
-
-typedef sal_Int64 SwPostItBits;
-
-#define PB_Preview ((SwPostItBits)0x00000001)
-
-
-class SwMarginWin : public Window
-{
- private:
- ULONG mnEventId;
- SwView* mpView;
- sdr::overlay::OverlayManager* pOverlayManager;
- OutlinerView* mpOutlinerView;
- Outliner* mpOutliner;
- PostItTxt* mpPostItTxt;
- MultiLineEdit* mpMeta;
- ScrollBar* mpVScrollbar;
- SwPostItAnkor* mpAnkor;
- SwPostItShadow* mpShadow;
- SwPostItMgr* mpMgr;
- bool mbMeta;
- Color mColorAnkor;
- Color mColorDark;
- Color mColorLight;
- basegfx::B2DPolygon aPopupTriangle;
- bool mbMarginSide;
- Rectangle mPosSize;
- SwRect mAnkorRect;
- long mPageBorder;
- SwPostItBits nFlags;
- bool mbMouseOverButton;
-
- protected:
- bool mbReadonly;
- PopupMenu* mpButtonPopup;
- bool mbIsFollow;
- Rectangle mRectMetaButton;
- virtual void DataChanged( const DataChangedEvent& aEvent);
- virtual void LoseFocus();
- virtual void MouseButtonDown( const MouseEvent& rMEvt );
- virtual void MouseMove( const MouseEvent& rMEvt );
- virtual void Paint( const Rectangle& rRect);
- virtual void GetFocus();
-
- void SetSizePixel( const Size& rNewSize );
- SfxItemSet DefaultItem();
-
- DECL_LINK(ModifyHdl, void*);
- DECL_LINK(ScrollHdl, ScrollBar*);
- DECL_LINK(DeleteHdl, void*);
-
- public:
- TYPEINFO();
- SwMarginWin( Window* pParent, WinBits nBits, SwPostItMgr* aMgr,SwPostItBits aBits);
- virtual ~SwMarginWin();
-
- void SetSize( const Size& rNewSize );
- void SetPosSizePixelRect( long nX, long nY,long nWidth, long nHeight,const SwRect &aRect,const long PageBorder);
- void SetPosAndSize();
- void TranslateTopPosition(const long aAmount);
- virtual void CheckMetaText();
-
- PostItTxt* PostItText() { return mpPostItTxt;}
- ScrollBar* Scrollbar() { return mpVScrollbar;}
- SwPostItAnkor* Ankor() { return mpAnkor;}
- SwPostItShadow* Shadow() { return mpShadow;}
- OutlinerView* View() { return mpOutlinerView;}
- SwView* DocView() { return mpView;}
- Outliner* Engine() { return mpOutliner;}
- SwPostItMgr* Mgr() { return mpMgr; }
-
- SwRect GetAnkorRect() { return mAnkorRect; }
- SwEditWin* EditWin();
-
- long GetPostItTextHeight();
-
- void SwitchToPostIt(USHORT aDirection);
- //void SwitchToPostIt(bool aDirection);
- virtual void SwitchToFieldPos();
- virtual sal_uInt32 MoveCaret() { return 0;};
-
- virtual void UpdateData() = 0;
- virtual void SetPostItText() = 0;
- virtual void Delete();
- virtual void GotoPos() = 0;
- virtual void SetPopup() = 0;
-
- virtual String GetAuthor();
- virtual Date GetDate();
- virtual Time GetTime();
-
- void ExecuteCommand(USHORT nSlot);
- void InitControls();
- void HidePostIt();
- void DoResize();
- void ResizeIfNeccessary(long aOldHeight, long aNewHeight);
- void SetScrollbar();
-
- void SetVirtualPosSize( const Point& aPoint, const Size& aSize);
- const Point VirtualPos() { return mPosSize.TopLeft(); }
- const Size VirtualSize() { return mPosSize.GetSize(); }
-
- void ShowAnkorOnly(const Point &aPoint);
- void ShowNote();
- void HideNote();
-
- void ResetAttributes();
-
- void SetMarginSide(bool aMarginSide);
- void SetReadonly(BOOL bSet);
- BOOL IsReadOnly() { return mbReadonly;}
- bool IsPreview() { return nFlags & PB_Preview;}
-
- void SetLanguage(const SvxLanguageItem aNewItem);
- virtual SvxLanguageItem GetLanguage(void);
-
- void SetColor(Color aColorDark,Color aColorLight, Color aColorAnkor);
- Color ColorDark() { return mColorDark; }
- Color ColorLight() { return mColorLight; }
- void Rescale();
-
- void SetViewState(ShadowState bState);
-
- bool IsFollow() { return mbIsFollow; }
- void SetFollow( bool bIsFollow) { mbIsFollow = bIsFollow;};
- virtual bool CalcFollow();
-
- SwMarginWin* GetTopReplyNote();
- bool IsAnyStackParentVisible();
-
- sal_Int32 GetMetaHeight();
- sal_Int32 GetMinimumSizeWithMeta();
- sal_Int32 GetMinimumSizeWithoutMeta();
- sal_Int32 GetMetaButtonAreaWidth();
- sal_Int32 GetScrollbarWidth();
-
- void SetSpellChecking();
-
- void ToggleInsMode();
-
- virtual void ActivatePostIt();
- virtual void DeactivatePostIt();
-
- virtual SwPostItHelper::SwLayoutStatus GetStatus() { return SwPostItHelper::NONE; }
-
- virtual bool IsProtected() {return mbReadonly;};
-};
-
-// implementation for change tracking comments, fully functional, but not yet used
-/*
-class SwRedComment : public SwMarginWin
-{
- private:
- SwRedline* pRedline;
-
- protected:
- virtual void MouseButtonDown( const MouseEvent& rMEvt );
- public:
- TYPEINFO();
- SwRedComment( Window* pParent, WinBits nBits,SwPostItMgr* aMgr,SwPostItBits aBits,SwRedline* pRed);
- virtual ~SwRedComment() {};
-
- virtual void UpdateData();
- virtual void SetPostItText();
- virtual void Delete();
- virtual void GotoPos();
- virtual void SetPopup();
- virtual void ActivatePostIt();
- virtual void DeactivatePostIt();
-
- virtual String GetAuthor();
- virtual Date GetDate();
- virtual Time GetTime();
-
- virtual bool IsProtected();
-};
-*/
-class SwPostIt : public SwMarginWin
-{
- private:
- SwFmtFld* mpFmtFld;
- SwPostItField* mpFld;
- SwPostItHelper::SwLayoutStatus mStatus;
- Color mChangeColor;
-
- protected:
- virtual void MouseButtonDown( const MouseEvent& rMEvt );
-
- public:
- TYPEINFO();
- SwPostIt( Window* pParent, WinBits nBits,SwFmtFld* aField,SwPostItMgr* aMgr,SwPostItBits aBits);
- virtual ~SwPostIt() {};
-
- virtual void UpdateData();
- virtual void SetPostItText();
- virtual void Delete();
- virtual void GotoPos();
- virtual void SetPopup();
-
- virtual String GetAuthor();
- virtual Date GetDate();
- virtual Time GetTime();
-
- virtual sal_uInt32 MoveCaret();
-
- void SetChangeTracking(SwPostItHelper::SwLayoutStatus& aStatus,Color aColor);
- virtual SwPostItHelper::SwLayoutStatus GetStatus() { return mStatus; }
- Color GetChangeColor() { return mChangeColor; }
-
- sal_uInt32 CountFollowing();
- virtual bool CalcFollow();
- void InitAnswer(OutlinerParaObject* pText);
-
- virtual SvxLanguageItem GetLanguage(void);
-
- virtual bool IsProtected();
-};
-
-#endif
diff --git a/sw/inc/postithelper.hxx b/sw/inc/postithelper.hxx
index c6d68b8c2c63..31df018985c6 100644
--- a/sw/inc/postithelper.hxx
+++ b/sw/inc/postithelper.hxx
@@ -32,14 +32,18 @@
#include <redline.hxx>
#include <vector>
#include <vcl/window.hxx>
+#include <SidebarWindowsTypes.hxx>
#include <svl/brdcst.hxx>
class SwTxtFld;
class SwRootFrm;
class SwPostIt;
class String;
-class SwMarginWin;
class SwPostItMgr;
+class SwEditWin;
+namespace sw { namespace sidebarwindows {
+ class SwSidebarWin;
+} }
struct SwPosition;
@@ -47,12 +51,23 @@ typedef sal_Int64 SwPostItBits;
struct SwLayoutInfo
{
+ const SwFrm* mpAnchorFrm;
SwRect mPosition;
SwRect mPageFrame;
SwRect mPagePrtArea;
unsigned long mnPageNumber;
- bool mbMarginSide;
+ sw::sidebarwindows::SidebarPosition meSidebarPosition;
USHORT mRedlineAuthor;
+
+ SwLayoutInfo()
+ : mpAnchorFrm(0)
+ , mPosition()
+ , mPageFrame()
+ , mPagePrtArea()
+ , mnPageNumber(1)
+ , meSidebarPosition(sw::sidebarwindows::SIDEBAR_NONE)
+ , mRedlineAuthor(0)
+ {}
};
namespace SwPostItHelper
@@ -63,77 +78,82 @@ namespace SwPostItHelper
};
SwLayoutStatus getLayoutInfos( std::vector< SwLayoutInfo >&, SwPosition& );
- SwLayoutStatus getLayoutInfos( std::vector< SwLayoutInfo >&, SwTxtFld* );
long getLayoutHeight( const SwRootFrm* pRoot );
void setSidebarChanged( SwRootFrm* pRoot, bool bBrowseMode );
unsigned long getPageInfo( SwRect& rPageFrm, const SwRootFrm* , const Point& );
}
-class SwMarginItem
+class SwSidebarItem
{
public:
- SwMarginWin* pPostIt;
+ sw::sidebarwindows::SwSidebarWin* pPostIt;
bool bShow;
bool bFocus;
- bool bMarginSide;
- SwRect mPos;
- SwRect mFramePos;
- SwRect mPagePos;
- unsigned long mnPageNumber;
+
SwPostItHelper::SwLayoutStatus mLayoutStatus;
- USHORT mRedlineAuthor;
- SwMarginItem(bool aShow, bool aFocus)
- : pPostIt(0),
- bShow(aShow),
- bFocus(aFocus),
- bMarginSide(false),
- mnPageNumber(1),
- mLayoutStatus( SwPostItHelper::INVISIBLE ),
- mRedlineAuthor(0)
+ SwLayoutInfo maLayoutInfo;
+
+ SwSidebarItem( const bool aShow,
+ const bool aFocus)
+ : pPostIt(0)
+ , bShow(aShow)
+ , bFocus(aFocus)
+ , mLayoutStatus( SwPostItHelper::INVISIBLE )
+ , maLayoutInfo()
{}
- virtual ~SwMarginItem(){}
- virtual SwPosition GetPosition() = 0;
+ virtual ~SwSidebarItem(){}
+ virtual SwPosition GetAnchorPosition() const = 0;
virtual bool UseElement() = 0;
- virtual SwFmtFld* GetFmtFld() = 0;
+ virtual SwFmtFld* GetFmtFld() const = 0;
virtual SfxBroadcaster* GetBroadCaster() const = 0;
- virtual SwMarginWin* GetMarginWindow(Window* pParent, WinBits nBits,SwPostItMgr* aMgr,SwPostItBits aBits) = 0;
+ virtual sw::sidebarwindows::SwSidebarWin* GetSidebarWindow( SwEditWin& rEditWin,
+ WinBits nBits,
+ SwPostItMgr& aMgr,
+ SwPostItBits aBits) = 0;
};
/*
-class SwRedCommentItem: public SwMarginItem
+class SwRedCommentItem: public SwSidebarItem
{
private:
SwRedline* pRedline;
public:
SwRedCommentItem( SwRedline* pRed, bool aShow, bool aFocus)
- : SwMarginItem(aShow,aFocus),
+ : SwSidebarItem(aShow,aFocus),
pRedline(pRed) {}
virtual ~SwRedCommentItem() {}
- virtual SwPosition GetPosition();
+ virtual SwPosition GetAnchorPosition() const;
virtual bool UseElement();
- virtual SwFmtFld* GetFmtFld() {return 0; }
+ virtual SwFmtFld* GetFmtFld() const {return 0; }
virtual SfxBroadcaster* GetBroadCaster() const { return dynamic_cast<SfxBroadcaster *> (pRedline); }
- virtual SwMarginWin* GetMarginWindow(Window* pParent, WinBits nBits,SwPostItMgr* aMgr,SwPostItBits aBits);
+ virtual sw::sidebarwindows::SwSidebarWin* GetSidebarWindow( SwEditWin& rEditWin,
+ WinBits nBits,
+ SwPostItMgr& aMgr,
+ SwPostItBits aBits);
};
*/
-class SwPostItItem: public SwMarginItem
+class SwAnnotationItem: public SwSidebarItem
{
private:
SwFmtFld* pFmtFld;
public:
- SwPostItItem( SwFmtFld* p, bool aShow, bool aFocus)
- : SwMarginItem(aShow,aFocus) ,
- pFmtFld(p)
- {
- }
- virtual ~SwPostItItem() {}
- virtual SwPosition GetPosition();
+ SwAnnotationItem( SwFmtFld* p,
+ const bool aShow,
+ const bool aFocus)
+ : SwSidebarItem( aShow, aFocus )
+ , pFmtFld(p)
+ {}
+ virtual ~SwAnnotationItem() {}
+ virtual SwPosition GetAnchorPosition() const;
virtual bool UseElement();
- virtual SwFmtFld* GetFmtFld() {return pFmtFld;}
+ virtual SwFmtFld* GetFmtFld() const {return pFmtFld;}
virtual SfxBroadcaster* GetBroadCaster() const { return dynamic_cast<SfxBroadcaster *> (pFmtFld); }
- virtual SwMarginWin* GetMarginWindow(Window* pParent, WinBits nBits,SwPostItMgr* aMgr,SwPostItBits aBits);
+ virtual sw::sidebarwindows::SwSidebarWin* GetSidebarWindow( SwEditWin& rEditWin,
+ WinBits nBits,
+ SwPostItMgr& aMgr,
+ SwPostItBits aBits);
};
#endif // _POSTITHELPER_HXX
diff --git a/sw/inc/printdata.hxx b/sw/inc/printdata.hxx
index ce5cf81a6f00..f76ac65e747a 100755
--- a/sw/inc/printdata.hxx
+++ b/sw/inc/printdata.hxx
@@ -230,6 +230,9 @@ class SwRenderData
std::set< sal_Int32 > m_aValidPages; // the set of possible pages (see StringRangeEnumerator::getRangesFromString )
std::map< sal_Int32, const SwPageFrm * > m_aValidStartFrames; // the map of start frames for those pages
+ // printer paper tray to use for each of the m_aValidPages above
+ std::map< sal_Int32, sal_Int32 > m_aPrinterPaperTrays;
+
// vector of pages and their order to be printed (duplicates and any order allowed!)
// (see 'render' in unotxdoc.cxx)
std::vector< sal_Int32 > m_aPagesToPrint;
@@ -264,6 +267,7 @@ public:
void DeletePostItData();
bool IsViewOptionAdjust() const { return m_pViewOptionAdjust != 0; }
+ bool NeedNewViewOptionAdjust( const SwWrtShell& ) const;
void ViewOptionAdjustStart( SwWrtShell &rSh, const SwViewOption &rViewOptions );
void ViewOptionAdjust( const SwPrtOptions *pPrtOptions );
void ViewOptionAdjustStop();
@@ -284,6 +288,11 @@ public:
ValidStartFramesMap_t & GetValidStartFrames() { return m_aValidStartFrames; }
const ValidStartFramesMap_t & GetValidStartFrames() const { return m_aValidStartFrames; }
+ // a map for printer paper tray numbers to use for each document page
+ // a value of -1 for the tray means that there is no specific tray defined
+ std::map< sal_Int32, sal_Int32 >& GetPrinterPaperTrays() { return m_aPrinterPaperTrays; }
+ const std::map< sal_Int32, sal_Int32 >& GetPrinterPaperTrays() const { return m_aPrinterPaperTrays; }
+
// used for 'normal' printing
// A page value of 0 as entry indicates that this page is not from the document but
// from the post-it document. (See also GetPostItStartFrame below)
diff --git a/sw/inc/rcid.hrc b/sw/inc/rcid.hrc
index 86f47b0b9194..8a788933dc4e 100644
--- a/sw/inc/rcid.hrc
+++ b/sw/inc/rcid.hrc
@@ -78,6 +78,7 @@
#define RC_UNDO (RC_BASE + 3750)
#define RC_SMARTTAG (RC_BASE + 3950) // SMARTTAGS
#define RC_UNOCORE (RC_BASE + 4050)
+#define RC_ANNOTATION (RC_BASE + 4150)
/*--------------------------------------------------------------------
Beschreibung: Bereiche ausspannen
@@ -87,8 +88,6 @@
#define RC_APP_BEGIN RC_APP
#define RC_APP_END (RC_APP_BEGIN + 199)
-
-
// Dialog-Verzeichnis
#define RC_DIALOG_BEGIN RC_DIALOG
#define RC_DIALOG_END (RC_DIALOG_BEGIN + 99)
@@ -97,6 +96,10 @@
#define RC_DOCVW_BEGIN RC_DOCVW
#define RC_DOCVW_END (RC_DOCVW_BEGIN + 99)
+// Annotation
+#define RC_ANNOTATION_BEGIN RC_ANNOTATION
+#define RC_ANNOTATION_END (RC_ANNOTATION_BEGIN + 99)
+
// SW/Web
#define RC_WEB_BEGIN RC_WEB
#define RC_WEB_END (RC_WEB_BEGIN + 199)
diff --git a/sw/inc/rolbck.hxx b/sw/inc/rolbck.hxx
index 8cac6c06691b..e2aa129f65e1 100644
--- a/sw/inc/rolbck.hxx
+++ b/sw/inc/rolbck.hxx
@@ -75,13 +75,6 @@ class SwCharFmt;
#include <memory>
-#ifdef DBG_UTIL
-class Writer;
-#define OUT_HSTR_HINT( name ) \
- friend Writer& OutUndo_Hstr_ ## name( Writer&, const SwHistoryHint& );
-#else
-#define OUT_HSTR_HINT( name )
-#endif
enum HISTORY_HINT {
HSTRY_SETFMTHNT,
@@ -126,7 +119,6 @@ public:
virtual void SetInDoc( SwDoc* pDoc, bool bTmpSet );
virtual String GetDescription() const;
- OUT_HSTR_HINT(SetFmtHnt)
};
class SwHistoryResetFmt : public SwHistoryHint
@@ -140,7 +132,6 @@ public:
// <--
virtual void SetInDoc( SwDoc* pDoc, bool bTmpSet );
- OUT_HSTR_HINT(ResetFmtHnt)
};
class SwHistorySetTxt : public SwHistoryHint
@@ -155,12 +146,11 @@ public:
virtual ~SwHistorySetTxt();
virtual void SetInDoc( SwDoc* pDoc, bool bTmpSet );
- OUT_HSTR_HINT(SetTxtHnt)
};
class SwHistorySetTxtFld : public SwHistoryHint
{
- //!! beware of the order for the declation of thje auto_ptrs.
+ //!! beware of the order for the declation of the auto_ptrs.
//!! If they get destroyed in the wrong order sw may crash (namely mail-merge as well)
::std::auto_ptr<SwFieldType> m_pFldType;
const ::std::auto_ptr<SwFmtFld> m_pFld;
@@ -176,7 +166,6 @@ public:
virtual String GetDescription() const;
- OUT_HSTR_HINT(SetTxtFldHnt)
};
class SwHistorySetRefMark : public SwHistoryHint
@@ -190,7 +179,6 @@ public:
SwHistorySetRefMark( SwTxtRefMark* pTxtHt, ULONG nNode );
virtual void SetInDoc( SwDoc* pDoc, bool bTmpSet );
- OUT_HSTR_HINT(SetRefMarkHnt)
};
class SwHistorySetTOXMark : public SwHistoryHint
@@ -207,7 +195,6 @@ public:
virtual void SetInDoc( SwDoc* pDoc, bool bTmpSet );
int IsEqual( const SwTOXMark& rCmp ) const;
- OUT_HSTR_HINT(SetToxMarkHnt)
};
class SwHistoryResetTxt : public SwHistoryHint
@@ -226,7 +213,6 @@ public:
ULONG GetNode() const { return m_nNodeIndex; }
xub_StrLen GetCntnt() const { return m_nStart; }
- OUT_HSTR_HINT(ResetTxtHnt)
};
class SwHistorySetFootnote : public SwHistoryHint
@@ -245,7 +231,6 @@ public:
virtual String GetDescription() const;
- OUT_HSTR_HINT(SetFtnHnt)
};
class SwHistoryChangeFmtColl : public SwHistoryHint
@@ -258,7 +243,6 @@ public:
SwHistoryChangeFmtColl( SwFmtColl* pColl, ULONG nNode, BYTE nNodeWhich );
virtual void SetInDoc( SwDoc* pDoc, bool bTmpSet );
- OUT_HSTR_HINT(ChangeFmtColl)
};
class SwHistoryTxtFlyCnt : public SwHistoryHint
@@ -271,7 +255,6 @@ public:
virtual void SetInDoc( SwDoc* pDoc, bool bTmpSet );
SwUndoDelLayFmt* GetUDelLFmt() { return m_pUndo.get(); }
- OUT_HSTR_HINT(FlyCnt)
};
class SwHistoryBookmark : public SwHistoryHint
@@ -284,7 +267,6 @@ class SwHistoryBookmark : public SwHistoryHint
bool IsEqualBookmark(const ::sw::mark::IMark& rBkmk);
const ::rtl::OUString& GetName() const;
- OUT_HSTR_HINT(Bookmark)
private:
const ::rtl::OUString m_aName;
@@ -312,7 +294,6 @@ public:
const SvUShortsSort& rSetArr );
virtual void SetInDoc( SwDoc* pDoc, bool bTmpSet );
- OUT_HSTR_HINT(SetAttrSet)
};
@@ -333,7 +314,6 @@ public:
ULONG GetNode() const { return m_nNodeIndex; }
xub_StrLen GetCntnt() const { return m_nStart; }
- OUT_HSTR_HINT(ResetAttrSet)
};
class SwHistoryChangeFlyAnchor : public SwHistoryHint
@@ -368,7 +348,6 @@ public:
SwHistoryChangeCharFmt( const SfxItemSet& rSet, const String & sFmt);
virtual void SetInDoc( SwDoc* pDoc, bool bTmpSet );
- OUT_HSTR_HINT(SetAttrSet)
};
diff --git a/sw/inc/section.hxx b/sw/inc/section.hxx
index 6ca584c82a11..db99cfdf4d52 100644
--- a/sw/inc/section.hxx
+++ b/sw/inc/section.hxx
@@ -28,14 +28,16 @@
#ifndef _SECTION_HXX
#define _SECTION_HXX
+#include <boost/utility.hpp>
#include <com/sun/star/uno/Sequence.h>
-#include <sfx2/lnkbase.hxx>
+
#include <tools/rtti.hxx>
-#ifndef _TOOLS_REF_HXX
#include <tools/ref.hxx>
-#endif
#include <svl/svarray.hxx>
+#include <sfx2/lnkbase.hxx>
+#include <sfx2/Metadatable.hxx>
+
#include <frmfmt.hxx>
@@ -77,61 +79,119 @@ enum LinkCreateType
CREATE_UPDATE // Link connecten und updaten
};
+class SW_DLLPUBLIC SwSectionData
+{
+private:
+ SectionType m_eType;
+
+ String m_sSectionName;
+ String m_sCondition;
+ String m_sLinkFileName;
+ String m_sLinkFilePassword; // JP 27.02.2001: must be changed to Sequence
+ ::com::sun::star::uno::Sequence <sal_Int8> m_Password;
+
+ /// it seems this flag caches the current final "hidden" state
+ bool m_bHiddenFlag : 1;
+ /// flags that correspond to attributes in the format:
+ /// may have different value than format attribute:
+ /// format attr has value for this section, while flag is
+ /// effectively ORed with parent sections!
+ bool m_bProtectFlag : 1;
+ // --> FME 2004-06-22 #114856# edit in readonly sections
+ bool m_bEditInReadonlyFlag : 1;
+ // <--
+ bool m_bHidden : 1; // all paragraphs hidden?
+ bool m_bCondHiddenFlag : 1; // Hiddenflag for condition
+ bool m_bConnectFlag : 1; // connected to server?
+
+public:
+
+ SwSectionData(SectionType const eType, String const& rName);
+ explicit SwSectionData(SwSection const&);
+ SwSectionData(SwSectionData const&);
+ SwSectionData & operator=(SwSectionData const&);
+ bool operator==(SwSectionData const&) const;
+
+ String const& GetSectionName() const { return m_sSectionName; }
+ void SetSectionName(String const& rName){ m_sSectionName = rName; }
+ SectionType GetType() const { return m_eType; }
+ void SetType(SectionType const eNew) { m_eType = eNew; }
+
+ bool IsHidden() const { return m_bHidden; }
+ void SetHidden(bool const bFlag = true) { m_bHidden = bFlag; }
+
+ bool IsHiddenFlag() const { return m_bHiddenFlag; }
+ SW_DLLPRIVATE void
+ SetHiddenFlag(bool const bFlag) { m_bHiddenFlag = bFlag; }
+ bool IsProtectFlag() const { return m_bProtectFlag; }
+ SW_DLLPRIVATE void
+ SetProtectFlag(bool const bFlag) { m_bProtectFlag = bFlag; }
+ // --> FME 2004-06-22 #114856# edit in readonly sections
+ bool IsEditInReadonlyFlag() const { return m_bEditInReadonlyFlag; }
+ void SetEditInReadonlyFlag(bool const bFlag)
+ { m_bEditInReadonlyFlag = bFlag; }
+ // <--
+
+ void SetCondHidden(bool const bFlag = true) { m_bCondHiddenFlag = bFlag; };
+ bool IsCondHidden() const { return m_bCondHiddenFlag; }
+
+ String const& GetCondition() const { return m_sCondition; }
+ void SetCondition(String const& rNew) { m_sCondition = rNew; }
+
+ String const& GetLinkFileName() const { return m_sLinkFileName; };
+ void SetLinkFileName(String const& rNew, String const* pPassWd = 0)
+ {
+ m_sLinkFileName = rNew;
+ if (pPassWd) { SetLinkFilePassword(*pPassWd); }
+ }
+
+ String const& GetLinkFilePassword() const { return m_sLinkFilePassword; }
+ void SetLinkFilePassword(String const& rS) { m_sLinkFilePassword = rS; }
-class SW_DLLPUBLIC SwSection : public SwClient
+ ::com::sun::star::uno::Sequence<sal_Int8> const& GetPassword() const
+ { return m_Password; }
+ void SetPassword(::com::sun::star::uno::Sequence<sal_Int8> const& rNew)
+ { m_Password = rNew; }
+ bool IsLinkType() const
+ { return (DDE_LINK_SECTION == m_eType) || (FILE_LINK_SECTION == m_eType); }
+
+ bool IsConnectFlag() const { return m_bConnectFlag; }
+ void SetConnectFlag(bool const bFlag = true){ m_bConnectFlag = bFlag; }
+};
+
+class SW_DLLPUBLIC SwSection
+ : public SwClient
+ , private ::boost::noncopyable
{
// damit beim Anlegen/Loeschen von Frames das Flag richtig gepflegt wird!
friend class SwSectionNode;
// the "read CTOR" of SwSectionFrm have to change the Hiddenflag
friend class SwSectionFrm;
- String sSectionNm;
- String sCondition; // erstmal, vielleicht auch mal ein Feld ??
- String sLinkFileName,
- sLinkFilePassWd; // JP 27.02.2001: must later changed to Sequence
- ::com::sun::star::uno::Sequence <sal_Int8> aPasswd;
-
- SwServerObjectRef refObj; // falls DataServer -> Pointer gesetzt
- ::sfx2::SvBaseLinkRef refLink;
-
- SectionType eType;
-
- BOOL bProtectFlag : 1; // Flags fuer schnelle Abfragen, wird ueber
- // Attribut im Format gesetzt
- BOOL bHiddenFlag : 1; // Flag: Absaetze versteckt ?
- // --> FME 2004-06-22 #114856# edit in readonly sections
- BOOL bEditInReadonlyFlag : 1;
- // <--
- BOOL bHidden : 1; // alle Absaetze nicht sichtbar ?
- BOOL bCondHiddenFlag : 1; // Hiddenflag fuer die Bedingung ?
- BOOL bConnectFlag : 1; // Flag: "Verbindung zum Server" vorhanden?
-
+private:
+ SwSectionData m_Data;
- SW_DLLPRIVATE void _SetHiddenFlag( BOOL bHidden, BOOL bCondition );
- SW_DLLPRIVATE void _SetProtectFlag( BOOL bFlag ) { bProtectFlag = bFlag; }
- /* SW_DLLPUBLIC */ BOOL _IsProtect() const;
+ SwServerObjectRef m_RefObj; // set if DataServer
+ ::sfx2::SvBaseLinkRef m_RefLink;
- // --> FME 2004-06-22 #114856# edit in readonly sections
- void _SetEditInReadonlyFlag( BOOL bFlag ) { bEditInReadonlyFlag = bFlag; }
- BOOL _IsEditInReadonly() const;
- // <--
+ SW_DLLPRIVATE void ImplSetHiddenFlag(
+ bool const bHidden, bool const bCondition);
public:
TYPEINFO(); // rtti
- SwSection( SectionType eType, const String& rName,
- SwSectionFmt* pFmt = 0 );
- ~SwSection();
+ SwSection(SectionType const eType, String const& rName,
+ SwSectionFmt & rFormat);
+ virtual ~SwSection();
- // kopiere nur die Daten der Section!
- // Ableitung bleibt (beim Left) erhalten.
- SwSection& operator=( const SwSection& );
- BOOL operator==( const SwSection& rCmp ) const;
+ bool DataEquals(SwSectionData const& rCmp) const;
- const String& GetName() const { return sSectionNm; }
- void SetName( const String& rName ) { sSectionNm = rName; }
- SectionType GetType() const { return eType; }
- void SetType( SectionType eNew ) { eType = eNew; }
+ void SetSectionData(SwSectionData const& rData);
+
+ String const& GetSectionName() const { return m_Data.GetSectionName(); }
+ void SetSectionName(String const& rName){ m_Data.SetSectionName(rName); }
+ SectionType GetType() const { return m_Data.GetType(); }
+ void SetType(SectionType const eType) { return m_Data.SetType(eType); }
SwSectionFmt* GetFmt() { return (SwSectionFmt*)pRegisteredIn; }
SwSectionFmt* GetFmt() const { return (SwSectionFmt*)pRegisteredIn; }
@@ -140,78 +200,76 @@ public:
// setze die Hidden/Protected -> gesamten Baum updaten !
// (Attribute/Flags werden gesetzt/erfragt)
- BOOL IsHidden() const { return bHidden; }
- BOOL IsProtect() const { return GetFmt() ? _IsProtect()
- : IsProtectFlag(); }
-
+ bool IsHidden() const { return m_Data.IsHidden(); }
+ void SetHidden (bool const bFlag = true);
+ bool IsProtect() const;
+ void SetProtect(bool const bFlag = true);
// --> FME 2004-06-22 #114856# edit in readonly sections
- BOOL IsEditInReadonly()const { return GetFmt() ? _IsEditInReadonly() : IsEditInReadonlyFlag(); }
- void SetEditInReadonly( BOOL bFlag = TRUE );
+ bool IsEditInReadonly() const;
+ void SetEditInReadonly(bool const bFlag = true);
// <--
- void SetHidden( BOOL bFlag = TRUE );
- void SetProtect( BOOL bFlag = TRUE );
-
// erfrage die internen Flags (Zustand inklusive Parents nicht, was
// aktuell an der Section gesetzt ist!!)
- BOOL IsHiddenFlag() const { return bHiddenFlag; }
- BOOL IsProtectFlag() const { return bProtectFlag; }
+ bool IsHiddenFlag() const { return m_Data.IsHiddenFlag(); }
+ bool IsProtectFlag() const { return m_Data.IsProtectFlag(); }
// --> FME 2004-06-22 #114856# edit in readonly sections
- BOOL IsEditInReadonlyFlag() const { return bEditInReadonlyFlag; }
+ bool IsEditInReadonlyFlag() const { return m_Data.IsEditInReadonlyFlag(); }
// <--
- void SetCondHidden( BOOL bFlag = TRUE );
- BOOL IsCondHidden() const { return bCondHiddenFlag; }
+ void SetCondHidden(bool const bFlag = true);
+ bool IsCondHidden() const { return m_Data.IsCondHidden(); }
// erfrage (auch ueber die Parents), ob diese Section versteckt sein soll.
BOOL CalcHiddenFlag() const;
inline SwSection* GetParent() const;
- // setze/erfrage die Bedingung
- const String& GetCondition() const { return sCondition; }
- void SetCondition( const String& rNew ) { sCondition = rNew; }
+ String const& GetCondition() const { return m_Data.GetCondition(); }
+ void SetCondition(String const& rNew) { m_Data.SetCondition(rNew); }
- // setze/erfrage den gelinkten FileNamen
const String& GetLinkFileName() const;
- void SetLinkFileName( const String& rNew, const String* pPassWd = 0 );
- // Passwort des gelinkten Files (nur waehrend der Laufzeit gueltig!)
- const String& GetLinkFilePassWd() const { return sLinkFilePassWd; }
- void SetLinkFilePassWd( const String& rS ) { sLinkFilePassWd = rS; }
+ void SetLinkFileName(String const& rNew, String const*const pPassWd = 0);
+ // password of linked file (only valid during runtime!)
+ String const& GetLinkFilePassword() const
+ { return m_Data.GetLinkFilePassword(); }
+ void SetLinkFilePassword(String const& rS)
+ { m_Data.SetLinkFilePassword(rS); }
// get / set password of this section
- const ::com::sun::star::uno::Sequence <sal_Int8>&
- GetPasswd() const { return aPasswd; }
- void SetPasswd( const ::com::sun::star::uno::Sequence <sal_Int8>& rNew )
- { aPasswd = rNew; }
+ ::com::sun::star::uno::Sequence<sal_Int8> const& GetPassword() const
+ { return m_Data.GetPassword(); }
+ void SetPassword(::com::sun::star::uno::Sequence <sal_Int8> const& rNew)
+ { m_Data.SetPassword(rNew); }
// Daten Server-Methoden
void SetRefObject( SwServerObject* pObj );
- const SwServerObject* GetObject() const { return &refObj; }
- SwServerObject* GetObject() { return &refObj; }
- BOOL IsServer() const { return refObj.Is(); }
+ const SwServerObject* GetObject() const { return & m_RefObj; }
+ SwServerObject* GetObject() { return & m_RefObj; }
+ bool IsServer() const { return m_RefObj.Is(); }
// Methoden fuer gelinkte Bereiche
- USHORT GetUpdateType() const { return refLink->GetUpdateMode(); }
- void SetUpdateType( USHORT nType ) { refLink->SetUpdateMode( nType ); }
+ USHORT GetUpdateType() const { return m_RefLink->GetUpdateMode(); }
+ void SetUpdateType(USHORT const nType )
+ { m_RefLink->SetUpdateMode(nType); }
- BOOL IsConnected() const { return refLink.Is(); }
- void UpdateNow() { refLink->Update(); }
- void Disconnect() { refLink->Disconnect(); }
+ bool IsConnected() const { return m_RefLink.Is(); }
+ void UpdateNow() { m_RefLink->Update(); }
+ void Disconnect() { m_RefLink->Disconnect(); }
- const ::sfx2::SvBaseLink& GetBaseLink() const { return *refLink; }
- ::sfx2::SvBaseLink& GetBaseLink() { return *refLink; }
+ const ::sfx2::SvBaseLink& GetBaseLink() const { return *m_RefLink; }
+ ::sfx2::SvBaseLink& GetBaseLink() { return *m_RefLink; }
void CreateLink( LinkCreateType eType );
void MakeChildLinksVisible( const SwSectionNode& rSectNd );
- BOOL IsLinkType() const
- { return DDE_LINK_SECTION == eType || FILE_LINK_SECTION == eType; }
+ bool IsLinkType() const { return m_Data.IsLinkType(); }
// Flags fuer UI - Verbindung geklappt?
- BOOL IsConnectFlag() const { return bConnectFlag; }
- void SetConnectFlag( BOOL bFlag = TRUE ) { bConnectFlag = bFlag; }
+ bool IsConnectFlag() const { return m_Data.IsConnectFlag(); }
+ void SetConnectFlag(bool const bFlag = true)
+ { m_Data.SetConnectFlag(bFlag); }
// return the TOX base class if the section is a TOX section
const SwTOXBase* GetTOXBase() const;
@@ -219,16 +277,15 @@ public:
// --> OD 2007-02-14 #b6521322#
void BreakLink();
// <--
-private:
- // privater Constructor, weil nie kopiert werden darf !!
- SwSection( const SwSection& );
- // @@@ but copy assignment "SwSection & operator= ( const SwSection& )" is public? @@@
+
};
enum SectionSort { SORTSECT_NOT, SORTSECT_NAME, SORTSECT_POS };
-class SW_DLLPUBLIC SwSectionFmt : public SwFrmFmt
+class SW_DLLPUBLIC SwSectionFmt
+ : public SwFrmFmt
+ , public ::sfx2::Metadatable
{
friend class SwDoc;
@@ -239,7 +296,6 @@ class SW_DLLPUBLIC SwSectionFmt : public SwFrmFmt
::com::sun::star::uno::WeakReference<
::com::sun::star::text::XTextSection> m_wXTextSection;
- /* SW_DLLPUBLIC */ SwSection* _GetSection() const;
SW_DLLPRIVATE void UpdateParent(); // Parent wurde veraendert
protected:
@@ -259,7 +315,7 @@ public:
// erfrage vom Format Informationen
virtual BOOL GetInfo( SfxPoolItem& ) const;
- SwSection* GetSection() const { return (SwSection*)_GetSection(); }
+ SwSection* GetSection() const;
inline SwSectionFmt* GetParent() const;
inline SwSection* GetParentSection() const;
@@ -274,9 +330,10 @@ public:
// befindet.
BOOL IsInNodesArr() const;
- SwSectionNode* GetSectionNode( BOOL bAlways = FALSE );
- const SwSectionNode* GetSectionNode( BOOL bAlways = FALSE ) const
- { return ((SwSectionFmt*)this)->GetSectionNode( bAlways ); }
+ SwSectionNode* GetSectionNode(bool const bEvenIfInUndo = false);
+ const SwSectionNode* GetSectionNode(bool const bEvenIfInUndo = false) const
+ { return const_cast<SwSectionFmt *>(this)
+ ->GetSectionNode(bEvenIfInUndo); }
// ist die Section eine gueltige fuers GlobalDocument?
const SwSection* GetGlobalDocSection() const;
@@ -288,6 +345,14 @@ public:
::com::sun::star::text::XTextSection> const& xTextSection)
{ m_wXTextSection = xTextSection; }
+ // sfx2::Metadatable
+ virtual ::sfx2::IXmlIdRegistry& GetRegistry();
+ virtual bool IsInClipboard() const;
+ virtual bool IsInUndo() const;
+ virtual bool IsInContent() const;
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::rdf::XMetadatable > MakeUnoObject();
+
};
// -------------- inlines ---------------------------------
@@ -314,7 +379,9 @@ inline SwSection* SwSectionFmt::GetParentSection() const
SwSectionFmt* pParent = GetParent();
SwSection* pRet = 0;
if( pParent )
- pRet = pParent->_GetSection();
+ {
+ pRet = pParent->GetSection();
+ }
return pRet;
}
diff --git a/sw/inc/shellio.hxx b/sw/inc/shellio.hxx
index 782161557753..0e52ce256754 100644
--- a/sw/inc/shellio.hxx
+++ b/sw/inc/shellio.hxx
@@ -24,8 +24,11 @@
* for a copy of the LGPLv3 License.
*
************************************************************************/
-#ifndef _SHELLIO_HXX
-#define _SHELLIO_HXX
+#ifndef SW_SHELLIO_HXX
+#define SW_SHELLIO_HXX
+
+#include <memory>
+#include <boost/utility.hpp>
#include <com/sun/star/uno/Reference.h>
#include <com/sun/star/embed/XStorage.hpp>
@@ -431,7 +434,9 @@ extern BOOL SetHTMLTemplate( SwDoc &rDoc ); //Fuer Vorlagen aus HTML.vor laden s
class IDocumentSettingAccess;
class IDocumentStylePoolAccess;
-class SW_DLLPUBLIC Writer : public SvRefBase
+class SW_DLLPUBLIC Writer
+ : public SvRefBase
+ , private ::boost::noncopyable
{
SwAsciiOptions aAscOpts;
String sBaseURL;
@@ -439,10 +444,10 @@ class SW_DLLPUBLIC Writer : public SvRefBase
void _AddFontItem( SfxItemPool& rPool, const SvxFontItem& rFont );
void _AddFontItems( SfxItemPool& rPool, USHORT nWhichId );
+ ::std::auto_ptr<Writer_Impl> m_pImpl;
+
protected:
- Writer_Impl* pImpl;
- SvStream* pStrm;
SwPaM* pOrigPam; // der letze zu bearbeitende Pam
const String* pOrigFileName;
@@ -534,12 +539,8 @@ public:
inline SvStream& OutLong( long nVal ) { return OutLong( Strm(), nVal ); }
inline SvStream& OutULong( ULONG nVal ) { return OutULong( Strm(), nVal ); }
- void SetStrm( SvStream& rStrm ) { pStrm = &rStrm; }
-#ifndef DBG_UTIL
- SvStream& Strm() { return *pStrm; }
-#else
+ void SetStream(SvStream *const pStream);
SvStream& Strm();
-#endif
void SetOrganizerMode( BOOL bSet ) { bOrganizerMode = bSet; }
};
diff --git a/sw/inc/sw_primitivetypes2d.hxx b/sw/inc/sw_primitivetypes2d.hxx
index 8102b69872a1..12e245791f4c 100644
--- a/sw/inc/sw_primitivetypes2d.hxx
+++ b/sw/inc/sw_primitivetypes2d.hxx
@@ -34,9 +34,9 @@
//////////////////////////////////////////////////////////////////////////////
-#define PRIMITIVE2D_ID_SWVIRTFLYDRAWOBJPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_SW| 0)
-#define PRIMITIVE2D_ID_SWPOSTITANKORPRIMITIVE (PRIMITIVE2D_ID_RANGE_SW| 1)
-#define PRIMITIVE2D_ID_SWPOSTITSHADOWPRIMITIVE (PRIMITIVE2D_ID_RANGE_SW| 2)
+#define PRIMITIVE2D_ID_SWVIRTFLYDRAWOBJPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_SW| 0)
+#define PRIMITIVE2D_ID_SWSIDEBARANCHORPRIMITIVE (PRIMITIVE2D_ID_RANGE_SW| 1)
+#define PRIMITIVE2D_ID_SWSIDEBARSHADOWPRIMITIVE (PRIMITIVE2D_ID_RANGE_SW| 2)
//////////////////////////////////////////////////////////////////////////////
diff --git a/sw/inc/swabstdlg.hxx b/sw/inc/swabstdlg.hxx
index 824e3269e1a5..d189f3c31349 100644
--- a/sw/inc/swabstdlg.hxx
+++ b/sw/inc/swabstdlg.hxx
@@ -73,7 +73,7 @@ class SwForm;
struct CurTOXType;
class SwTOXDescription;
class SwTOXBase;
-class SwSection;
+class SwSectionData;
struct SwDBData;
class SwField;
class Printer;
@@ -194,7 +194,7 @@ public:
class AbstractInsertSectionTabDialog : public VclAbstractDialog //add for SwInsertSectionTabDialog
{
public:
- virtual void SetSection(const SwSection& rSect) = 0;
+ virtual void SetSectionData(SwSectionData const& rSect) = 0;
};
class AbstractSwWordCountDialog : public VclAbstractDialog
diff --git a/sw/inc/swcrsr.hxx b/sw/inc/swcrsr.hxx
index 6e26a6a3bfcb..49a95e9b7c41 100644
--- a/sw/inc/swcrsr.hxx
+++ b/sw/inc/swcrsr.hxx
@@ -26,7 +26,9 @@
************************************************************************/
#ifndef _SWCRSR_HXX
#define _SWCRSR_HXX
+
#include <com/sun/star/i18n/WordType.hpp>
+
#include <pam.hxx>
#include <tblsel.hxx>
#include <cshtyp.hxx>
@@ -129,10 +131,10 @@ public:
const SfxItemSet* rReplSet = 0 );
// UI versions
- BOOL IsStartWord() const;
- BOOL IsEndWord() const;
+ BOOL IsStartWord( sal_Int16 nWordType = com::sun::star::i18n::WordType::ANYWORD_IGNOREWHITESPACES ) const;
+ BOOL IsEndWord( sal_Int16 nWordType = com::sun::star::i18n::WordType::ANYWORD_IGNOREWHITESPACES ) const;
+ BOOL IsInWord( sal_Int16 nWordType = com::sun::star::i18n::WordType::ANYWORD_IGNOREWHITESPACES ) const;
BOOL IsStartEndSentence( bool bEnd ) const;
- BOOL IsInWord() const;
BOOL GoStartWord();
BOOL GoEndWord();
BOOL GoNextWord();
@@ -162,6 +164,7 @@ public:
BOOL GoEndSentence(){return GoSentence(END_SENT);}
BOOL GoPrevSentence(){return GoSentence(PREV_SENT);}
BOOL GoStartSentence(){return GoSentence(START_SENT);}
+ BOOL ExpandToSentenceBorders();
virtual BOOL LeftRight( BOOL bLeft, USHORT nCnt, USHORT nMode,
BOOL bAllowVisual, BOOL bSkipHidden, BOOL bInsertCrsr );
diff --git a/sw/inc/swmodule.hxx b/sw/inc/swmodule.hxx
index 8ad108513297..c8e601143877 100644
--- a/sw/inc/swmodule.hxx
+++ b/sw/inc/swmodule.hxx
@@ -133,7 +133,7 @@ protected:
public:
// public Data - used for internal Clipboard / Drag & Drop / XSelection
- SwTransferable *pClipboard, *pDragDrop, *pXSelection;
+ SwTransferable *pDragDrop, *pXSelection;
TYPEINFO();
SFX_DECL_INTERFACE(SW_INTERFACE_MODULE)
diff --git a/sw/inc/swtable.hxx b/sw/inc/swtable.hxx
index 51a609ad85dc..1b1316ce37d1 100644
--- a/sw/inc/swtable.hxx
+++ b/sw/inc/swtable.hxx
@@ -39,6 +39,8 @@
#include <node.hxx> // fuer StartNode->GetMyIndex
#else
class SwStartNode;
+#include <memory>
+#include <boost/noncopyable.hpp>
#endif
class Color;
@@ -468,4 +470,21 @@ public:
{ return const_cast<SwTableBox*>(this)->FindEndOfRowSpan( rTable, nMaxStep ); }
};
+class SwCellFrm;
+class SW_DLLPUBLIC SwTableCellInfo : public ::boost::noncopyable
+{
+ struct Impl;
+ ::std::auto_ptr<Impl> m_pImpl;
+
+ const SwCellFrm * getCellFrm() const ;
+
+public:
+ SwTableCellInfo(const SwTable * pTable);
+ ~SwTableCellInfo();
+
+ bool getNext();
+ SwRect getRect() const;
+ const SwTableBox * getTableBox() const;
+};
+
#endif //_SWTABLE_HXX
diff --git a/sw/inc/swtblfmt.hxx b/sw/inc/swtblfmt.hxx
index 33d38e42ba55..96479197cde6 100644
--- a/sw/inc/swtblfmt.hxx
+++ b/sw/inc/swtblfmt.hxx
@@ -31,7 +31,7 @@
class SwDoc;
-class SwTableFmt : public SwFrmFmt
+class SW_DLLPUBLIC SwTableFmt : public SwFrmFmt
{
friend class SwDoc;
diff --git a/sw/inc/txtfld.hxx b/sw/inc/txtfld.hxx
index 1daff7d2e914..d0be4a008cab 100644
--- a/sw/inc/txtfld.hxx
+++ b/sw/inc/txtfld.hxx
@@ -41,7 +41,8 @@ class SwTxtFld : public SwTxtAttr
SwTxtNode * m_pTxtNode;
public:
- SwTxtFld( SwFmtFld& rAttr, xub_StrLen nStart );
+ SwTxtFld(SwFmtFld & rAttr, xub_StrLen const nStart,
+ bool const bInClipboard);
virtual ~SwTxtFld();
void CopyFld( SwTxtFld *pDest ) const;
diff --git a/sw/inc/txtftn.hxx b/sw/inc/txtftn.hxx
index 0b55053d03dd..07043a9263bc 100644
--- a/sw/inc/txtftn.hxx
+++ b/sw/inc/txtftn.hxx
@@ -49,7 +49,7 @@ public:
inline SwNodeIndex *GetStartNode() const { return m_pStartNode; }
void SetStartNode( const SwNodeIndex *pNode, BOOL bDelNodes = TRUE );
void SetNumber( const USHORT nNumber, const String* = 0 );
- void CopyFtn( SwTxtFtn *pDest ) const;
+ void CopyFtn(SwTxtFtn & rDest, SwTxtNode & rDestNode) const;
// get and set TxtNode pointer
inline const SwTxtNode& GetTxtNode() const;
diff --git a/sw/inc/undobj.hxx b/sw/inc/undobj.hxx
index b5298895317d..cf92a707e40f 100644
--- a/sw/inc/undobj.hxx
+++ b/sw/inc/undobj.hxx
@@ -24,8 +24,18 @@
* for a copy of the LGPLv3 License.
*
************************************************************************/
-#ifndef _UNDOBJ_HXX
-#define _UNDOBJ_HXX
+#ifndef SW_UNDOBJ_HXX
+#define SW_UNDOBJ_HXX
+
+// --> OD 2006-11-01 #130889#
+#include <vector>
+// <--
+#include <memory>
+
+#include <boost/shared_ptr.hpp>
+
+#include <com/sun/star/uno/Sequence.h>
+
#include <tools/mempool.hxx>
#ifndef _SVSTDARR_HXX
#define _SVSTDARR_USHORTS
@@ -36,23 +46,16 @@
#include <svl/svstdarr.hxx>
#endif
#include <svl/itemset.hxx>
-#include <com/sun/star/uno/Sequence.h>
+
+#include <svx/svdundo.hxx> // #111827#
+
#include <numrule.hxx>
#include <itabenum.hxx>
#include <format.hxx>
#include <SwRewriter.hxx>
-#include <svx/svdundo.hxx> // #111827#
-
#include <swundo.hxx>
-
#include <IMark.hxx>
#include <IDocumentContentOperations.hxx>
-// --> OD 2006-11-01 #130889#
-#include <vector>
-// <--
-
-#include <boost/shared_ptr.hpp>
-#include <memory>
class SwUndoIter;
@@ -71,8 +74,9 @@ class SwTableBox;
struct SwSortOptions;
class SwFrmFmt;
class SwHistoryBookmark;
-class SwSection;
+class SwSectionData;
class SwSectionFmt;
+class SwTOXBase;
class SvxTabStopItem;
class SwDDEFieldType;
class Graphic;
@@ -112,15 +116,6 @@ namespace utl {
class TransliterationWrapper;
}
-#ifdef DBG_UTIL
-class Writer;
-class SwUndo;
-#define OUT_UNDOBJ( name ) \
- friend Writer& OutUndo_ ## name( Writer&, const SwUndo& );
-#else
-#define OUT_UNDOBJ( name )
-#endif
-
const String UNDO_ARG1("$1", RTL_TEXTENCODING_ASCII_US);
const String UNDO_ARG2("$2", RTL_TEXTENCODING_ASCII_US);
@@ -244,7 +239,6 @@ protected:
public:
SwUndoSaveCntnt();
~SwUndoSaveCntnt();
- OUT_UNDOBJ( SaveCntnt )
};
@@ -271,7 +265,6 @@ public:
const SwHistory* GetHistory() const { return pHistory; }
SwHistory* GetHistory() { return pHistory; }
- OUT_UNDOBJ( SaveSection )
};
@@ -320,7 +313,6 @@ public:
// Setzen vom End-Undo-Offset geschieht im Doc::EndUndo
USHORT GetEndOffset() const { return nEndOffset; }
void SetEndOffset( USHORT n ) { nEndOffset = n; }
- OUT_UNDOBJ( Start )
};
class SwUndoEnd: public SwUndo
@@ -352,7 +344,6 @@ public:
// Setzen vom Start-Undo-Offset geschieht im Doc::EndUndo
void SetSttOffset(USHORT _nSttOffSet) { nSttOffset = _nSttOffSet; }
USHORT GetSttOffset() const { return nSttOffset; }
- OUT_UNDOBJ( End )
};
class SwUndoInsert: public SwUndo, private SwUndoSaveCntnt
@@ -401,8 +392,6 @@ public:
*/
virtual SwRewriter GetRewriter() const;
- BOOL CanGrouping( const SwPosition&, sal_Unicode cIns );
- OUT_UNDOBJ( Insert )
DECL_FIXEDMEMPOOL_NEWDEL(SwUndoInsert)
};
@@ -472,8 +461,6 @@ public:
xub_StrLen ContentStart() const { return nSttCntnt; }
BOOL IsDelFullPara() const { return bDelFullPara; }
- OUT_UNDOBJ( Delete )
-
DECL_FIXEDMEMPOOL_NEWDEL(SwUndoDelete)
};
@@ -509,7 +496,6 @@ public:
virtual SwRewriter GetRewriter() const;
BOOL CanGrouping( SwDoc*, SwPosition&, sal_Unicode cIns );
- OUT_UNDOBJ( Overwrite )
};
@@ -528,7 +514,6 @@ public:
virtual void Redo( SwUndoIter& );
virtual void Repeat( SwUndoIter& );
void SetTblFlag() { bTblFlag = TRUE; }
- OUT_UNDOBJ( SplitNode )
};
@@ -563,11 +548,9 @@ public:
ULONG GetEndNode() const { return nEndNode; }
ULONG GetDestSttNode() const { return nDestSttNode; }
xub_StrLen GetDestSttCntnt() const { return nDestSttCntnt; }
- void AddTblMrgFlyHstry( SwHistory& rHstr );
void SetMoveRedlines( bool b ) { bMoveRedlines = b; }
- OUT_UNDOBJ( Move )
};
@@ -593,7 +576,6 @@ public:
SwHistory& GetHistory() { return *m_pHistory; }
- OUT_UNDOBJ( InsAttr )
};
class SwUndoResetAttr : public SwUndo, private SwUndRng
@@ -613,7 +595,6 @@ public:
SwHistory& GetHistory() { return *m_pHistory; }
- OUT_UNDOBJ( ResetAttr )
};
class SwUndoFmtAttr : public SwUndo
@@ -659,8 +640,6 @@ public:
virtual void Repeat( SwUndoIter& );
virtual SwRewriter GetRewriter() const;
- OUT_UNDOBJ( InsFmtAttr )
-
void PutAttr( const SfxPoolItem& rItem );
SwFmt* GetFmt( SwDoc& rDoc ); // checks if it is still in the Doc!
};
@@ -757,7 +736,7 @@ public:
virtual SwRewriter GetRewriter() const;
SwHistory* GetHistory() { return pHistory; }
- OUT_UNDOBJ( SetFmtColl )
+
};
@@ -775,7 +754,6 @@ public:
SwHistory& GetHistory() { return *m_pHistory; }
- OUT_UNDOBJ( MoveLeftMargin )
};
// Basis-Klasse fuer Insert von Dokument, Glossaries und Kopieren
@@ -801,21 +779,18 @@ public:
// setze den Destination-Bereich nach dem Einlesen.
void SetInsertRange( const SwPaM&, BOOL bScanFlys = TRUE,
BOOL bSttWasTxtNd = TRUE );
- OUT_UNDOBJ( Inserts )
};
class SwUndoInsDoc : public SwUndoInserts
{
public:
SwUndoInsDoc( const SwPaM& );
- OUT_UNDOBJ( InsDoc )
};
class SwUndoCpyDoc : public SwUndoInserts
{
public:
SwUndoCpyDoc( const SwPaM& );
- OUT_UNDOBJ( Copy )
};
class SwUndoInsTbl : public SwUndo
@@ -842,7 +817,6 @@ public:
virtual SwRewriter GetRewriter() const;
- OUT_UNDOBJ( InsTable )
};
class SwUndoTxtToTbl : public SwUndo, public SwUndRng
@@ -867,7 +841,6 @@ public:
SwHistory& GetHistory(); // wird ggfs. angelegt
void AddFillBox( const SwTableBox& rBox );
- OUT_UNDOBJ( TextToTable )
};
class SwUndoTblToTxt : public SwUndo
@@ -893,7 +866,6 @@ public:
void SetRange( const SwNodeRange& );
void AddBoxPos( SwDoc& rDoc, ULONG nNdIdx, ULONG nEndIdx,
xub_StrLen nCntntIdx = STRING_MAXLEN);
- OUT_UNDOBJ( TableToText )
};
class SwUndoAttrTbl : public SwUndo
@@ -906,7 +878,6 @@ public:
virtual ~SwUndoAttrTbl();
virtual void Undo( SwUndoIter& );
virtual void Redo( SwUndoIter& );
- OUT_UNDOBJ( SetTableAttr )
};
class SwUndoTblAutoFmt : public SwUndo
@@ -924,7 +895,6 @@ public:
virtual void Undo( SwUndoIter& );
virtual void Redo( SwUndoIter& );
void SaveBoxCntnt( const SwTableBox& rBox );
- OUT_UNDOBJ( TableAutoFmt )
};
class SwUndoTblNdsChg : public SwUndo
@@ -974,7 +944,6 @@ public:
nRelDiff = (USHORT)nRelDif;
}
- OUT_UNDOBJ( TblNodesChg )
};
class SwUndoTblMerge : public SwUndo, private SwUndRng
@@ -1000,7 +969,6 @@ public:
void SaveCollection( const SwTableBox& rBox );
- OUT_UNDOBJ( TblMerge )
};
@@ -1028,7 +996,6 @@ public:
void SetNumFmt( ULONG nNewNumFmtIdx, const double& rNewNumber )
{ nFmtIdx = nNewNumFmtIdx; fNum = rNewNumber; }
void SetBox( const SwTableBox& rBox );
- OUT_UNDOBJ( TblNumFmt )
};
class _UndoTblCpyTbl_Entries;
@@ -1053,7 +1020,6 @@ public:
BOOL IsEmpty() const;
BOOL InsertRow( SwTable& rTbl, const SwSelBoxes& rBoxes, USHORT nCnt );
- OUT_UNDOBJ( TblCpyTbl )
};
class SwUndoCpyTbl : public SwUndo
@@ -1067,7 +1033,6 @@ public:
virtual void Redo( SwUndoIter& );
void SetTableSttIdx( ULONG nIdx ) { nTblNode = nIdx; }
- OUT_UNDOBJ( CpyTbl )
};
class SwUndoSplitTbl : public SwUndo
@@ -1140,22 +1105,12 @@ public:
};
-class SwUndoDelBookmark : public SwUndoBookmark
-{
-public:
- SwUndoDelBookmark( const ::sw::mark::IMark& );
- virtual void Undo( SwUndoIter& );
- virtual void Redo( SwUndoIter& );
- OUT_UNDOBJ( DelBookmark )
-};
-
class SwUndoInsBookmark : public SwUndoBookmark
{
public:
SwUndoInsBookmark( const ::sw::mark::IMark& );
virtual void Undo( SwUndoIter& );
virtual void Redo( SwUndoIter& );
- OUT_UNDOBJ( InsBookmark )
};
@@ -1214,7 +1169,6 @@ public:
void Insert( const String& rOrgPos, const String& rNewPos );
void Insert( ULONG nOrgPos, ULONG nNewPos );
- OUT_UNDOBJ( Sort )
};
@@ -1244,7 +1198,6 @@ public:
virtual void Undo( SwUndoIter& ) = 0;
virtual void Redo( SwUndoIter& ) = 0;
- OUT_UNDOBJ( FlyBase )
};
class SwUndoInsLayFmt : public SwUndoFlyBase
@@ -1261,7 +1214,6 @@ public:
String GetComment() const;
- OUT_UNDOBJ( InsLayFmt )
};
class SwUndoDelLayFmt : public SwUndoFlyBase
@@ -1278,7 +1230,6 @@ public:
virtual SwRewriter GetRewriter() const;
- OUT_UNDOBJ( DelLayFmt )
};
@@ -1355,7 +1306,6 @@ public:
BOOL IsFull() const
{ return ((USHRT_MAX / sizeof( void* )) - 50 ) < aArr.Count(); }
- OUT_UNDOBJ( Replace )
};
@@ -1372,7 +1322,6 @@ public:
virtual void Undo( SwUndoIter& );
virtual void Redo( SwUndoIter& );
virtual void Repeat( SwUndoIter& );
- OUT_UNDOBJ( SwUndoTblHeadline )
};
@@ -1380,57 +1329,36 @@ public:
class SwUndoInsSection : public SwUndo, private SwUndRng
{
- SwHistory* pHistory;
- SwSection* pSection;
- SwRedlineData* pRedlData;
- SfxItemSet* pAttr;
- ULONG nSectNodePos;
- BOOL bSplitAtStt : 1;
- BOOL bSplitAtEnd : 1;
- BOOL bUpdateFtn : 1;
+private:
+ const ::std::auto_ptr<SwSectionData> m_pSectionData;
+ const ::std::auto_ptr<SwTOXBase> m_pTOXBase; /// set iff section is TOX
+ const ::std::auto_ptr<SfxItemSet> m_pAttrSet;
+ ::std::auto_ptr<SwHistory> m_pHistory;
+ ::std::auto_ptr<SwRedlineData> m_pRedlData;
+ ULONG m_nSectionNodePos;
+ bool m_bSplitAtStart : 1;
+ bool m_bSplitAtEnd : 1;
+ bool m_bUpdateFtn : 1;
void Join( SwDoc& rDoc, ULONG nNode );
public:
- SwUndoInsSection( const SwPaM&, const SwSection&,
- const SfxItemSet* pSet );
+ SwUndoInsSection(SwPaM const&, SwSectionData const&,
+ SfxItemSet const*const pSet, SwTOXBase const*const pTOXBase);
virtual ~SwUndoInsSection();
virtual void Undo( SwUndoIter& );
virtual void Redo( SwUndoIter& );
virtual void Repeat( SwUndoIter& );
- OUT_UNDOBJ( SwUndoInsSection )
- void SetSectNdPos( ULONG nPos ) { nSectNodePos = nPos; }
- void SaveSplitNode( SwTxtNode* pTxtNd, BOOL bAtStt );
- void SetUpdtFtnFlag( BOOL bFlag ) { bUpdateFtn = bFlag; }
+ void SetSectNdPos(ULONG const nPos) { m_nSectionNodePos = nPos; }
+ void SaveSplitNode(SwTxtNode *const pTxtNd, bool const bAtStart);
+ void SetUpdtFtnFlag(bool const bFlag) { m_bUpdateFtn = bFlag; }
};
-class SwUndoDelSection : public SwUndo
-{
- ULONG nSttNd, nEndNd;
- SwSection* pSection;
- SfxItemSet* pAttr;
-public:
- SwUndoDelSection( const SwSectionFmt& );
- virtual ~SwUndoDelSection();
- virtual void Undo( SwUndoIter& );
- virtual void Redo( SwUndoIter& );
- OUT_UNDOBJ( SwUndoDelSection )
-};
+SW_DLLPRIVATE SwUndo * MakeUndoDelSection(SwSectionFmt const&);
+
+SW_DLLPRIVATE SwUndo * MakeUndoUpdateSection(SwSectionFmt const&, bool const);
-class SwUndoChgSection : public SwUndo
-{
- ULONG nSttNd;
- SwSection* pSection;
- SfxItemSet* pAttr;
- BOOL bOnlyAttrChgd;
-public:
- SwUndoChgSection( const SwSectionFmt&, BOOL bOnlyAttrChgd );
- virtual ~SwUndoChgSection();
- virtual void Undo( SwUndoIter& );
- virtual void Redo( SwUndoIter& );
- OUT_UNDOBJ( SwUndoChgSection )
-};
//------------ Undo von verschieben/stufen von Gliederung ----------------
@@ -1442,7 +1370,6 @@ public:
virtual void Undo( SwUndoIter& );
virtual void Redo( SwUndoIter& );
virtual void Repeat( SwUndoIter& );
- OUT_UNDOBJ( SwUndoOutlineLeftRight )
};
//--------------------------------------------------------------------
@@ -1458,7 +1385,6 @@ public:
virtual ~SwUndoDefaultAttr();
virtual void Undo( SwUndoIter& );
virtual void Redo( SwUndoIter& );
- OUT_UNDOBJ( DefaultAttr )
};
//--------------------------------------------------------------------
@@ -1490,7 +1416,6 @@ public:
void SetLRSpaceEndPos();
- OUT_UNDOBJ( InsNum )
};
class SwUndoDelNum : public SwUndo, private SwUndRng
@@ -1509,7 +1434,6 @@ public:
void AddNode( const SwTxtNode& rNd, BOOL bResetLRSpace );
SwHistory* GetHistory() { return pHistory; }
- OUT_UNDOBJ( DelNum )
};
class SwUndoMoveNum : public SwUndo, private SwUndRng
@@ -1522,7 +1446,6 @@ public:
virtual void Redo( SwUndoIter& );
virtual void Repeat( SwUndoIter& );
void SetStartNode( ULONG nValue ) { nNewStt = nValue; }
- OUT_UNDOBJ( MoveNum )
};
class SwUndoNumUpDown : public SwUndo, private SwUndRng
@@ -1533,7 +1456,6 @@ public:
virtual void Undo( SwUndoIter& );
virtual void Redo( SwUndoIter& );
virtual void Repeat( SwUndoIter& );
- OUT_UNDOBJ( NumUpDown )
};
class SwUndoNumOrNoNum : public SwUndo
@@ -1547,7 +1469,6 @@ public:
virtual void Undo( SwUndoIter& );
virtual void Redo( SwUndoIter& );
virtual void Repeat( SwUndoIter& );
- OUT_UNDOBJ( NumOrNoNum )
};
class SwUndoNumRuleStart : public SwUndo
@@ -1562,7 +1483,6 @@ public:
virtual void Undo( SwUndoIter& );
virtual void Redo( SwUndoIter& );
virtual void Repeat( SwUndoIter& );
- OUT_UNDOBJ( NumRuleStart )
};
//--------------------------------------------------------------------
diff --git a/sw/inc/unocrsrhelper.hxx b/sw/inc/unocrsrhelper.hxx
index e3ced236d10c..7ca06ee09391 100644
--- a/sw/inc/unocrsrhelper.hxx
+++ b/sw/inc/unocrsrhelper.hxx
@@ -55,6 +55,9 @@ namespace com{ namespace sun{ namespace star{
namespace beans{
struct PropertyValue;
}
+ namespace text {
+ class XTextContent;
+ }
}}}
/* -----------------03.12.98 12:16-------------------
@@ -84,6 +87,10 @@ namespace SwUnoCursorHelper
bool FillValue( USHORT nWhichId, USHORT nMemberId, const com::sun::star::uno::Any*& pAny );
};
+ ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextContent >
+ GetNestedTextContent(SwTxtNode & rTextNode, xub_StrLen const nIndex,
+ bool const bParent);
+
sal_Bool getCrsrPropertyValue(const SfxItemPropertySimpleEntry& rEntry
, SwPaM& rPam
, com::sun::star::uno::Any *pAny
diff --git a/sw/inc/unoflatpara.hxx b/sw/inc/unoflatpara.hxx
index caacec514174..acc004d473ab 100644
--- a/sw/inc/unoflatpara.hxx
+++ b/sw/inc/unoflatpara.hxx
@@ -29,6 +29,7 @@
#define _UNOFLATPARA_HXX
#include <cppuhelper/implbase1.hxx>
+#include <com/sun/star/lang/XUnoTunnel.hpp>
#include <com/sun/star/text/XFlatParagraph.hpp>
#include <com/sun/star/text/XFlatParagraphIterator.hpp>
#include <calbck.hxx>
@@ -51,9 +52,10 @@ class SwDoc;
******************************************************************************/
class SwXFlatParagraph:
- public ::cppu::WeakImplHelper1
+ public ::cppu::WeakImplHelper2
<
- css::text::XFlatParagraph
+ css::text::XFlatParagraph,
+ css::lang::XUnoTunnel
>,
public SwXTextMarkup
{
@@ -85,6 +87,12 @@ public:
const SwTxtNode* getTxtNode() const;
+ static const css::uno::Sequence< sal_Int8 >& getUnoTunnelId();
+
+ // XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething(const css::uno::Sequence< sal_Int8 >& rId)
+ throw (css::uno::RuntimeException);
+
private:
SwXFlatParagraph( const SwXFlatParagraph & ); // not defined
SwXFlatParagraph & operator = ( const SwXFlatParagraph & ); // not defined
diff --git a/sw/inc/unoidx.hxx b/sw/inc/unoidx.hxx
index c545250783cb..fe42330685a6 100644
--- a/sw/inc/unoidx.hxx
+++ b/sw/inc/unoidx.hxx
@@ -36,6 +36,8 @@
#include <cppuhelper/implbase4.hxx>
#include <cppuhelper/implbase5.hxx>
+#include <sfx2/Metadatable.hxx>
+
#include <unocoll.hxx>
#include <toxe.hxx>
@@ -48,8 +50,9 @@ class SwTOXType;
*
* --------------------------------------------------*/
-typedef ::cppu::WeakImplHelper5
-< ::com::sun::star::lang::XUnoTunnel
+typedef ::cppu::ImplInheritanceHelper5
+< ::sfx2::MetadatableMixin
+, ::com::sun::star::lang::XUnoTunnel
, ::com::sun::star::lang::XServiceInfo
, ::com::sun::star::beans::XPropertySet
, ::com::sun::star::container::XNamed
@@ -81,6 +84,11 @@ public:
::com::sun::star::text::XDocumentIndex>
CreateXDocumentIndex(SwDoc & rDoc, SwTOXBaseSection const& rSection);
+ // MetadatableMixin
+ virtual ::sfx2::Metadatable* GetCoreObject();
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >
+ GetModel();
+
static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId();
// XUnoTunnel
diff --git a/sw/inc/unoprnms.hxx b/sw/inc/unoprnms.hxx
index 46087df2b62c..0ea5fa9db598 100644
--- a/sw/inc/unoprnms.hxx
+++ b/sw/inc/unoprnms.hxx
@@ -805,9 +805,8 @@ enum SwPropNameIds
/* 0737 */ UNO_NAME_DESCRIPTION,
// <--
/* 0738 */ UNO_NAME_META, // #i91565#
-/* 0739 */ UNO_NAME_IS_TEMPLATE,
-/* 0740 */ UNO_NAME_VBA_DOCOBJ,
-/* 0741 */ SW_PROPNAME_END
+/* 0739 */ UNO_NAME_NESTED_TEXT_CONTENT, // #i109601#
+/* 0740 */ SW_PROPNAME_END
};
diff --git a/sw/inc/unosection.hxx b/sw/inc/unosection.hxx
index e5c189c26af0..e54bdd5775af 100644
--- a/sw/inc/unosection.hxx
+++ b/sw/inc/unosection.hxx
@@ -39,6 +39,8 @@
#include <cppuhelper/implbase7.hxx>
+#include <sfx2/Metadatable.hxx>
+
#include <unobaseclass.hxx>
@@ -52,8 +54,9 @@ class SwSectionFmt;
struct SwTextSectionProperties_Impl;
-typedef ::cppu::WeakImplHelper7
-< ::com::sun::star::lang::XUnoTunnel
+typedef ::cppu::ImplInheritanceHelper7
+< ::sfx2::MetadatableMixin
+, ::com::sun::star::lang::XUnoTunnel
, ::com::sun::star::lang::XServiceInfo
, ::com::sun::star::beans::XPropertySet
, ::com::sun::star::beans::XPropertyState
@@ -84,6 +87,11 @@ public:
CreateXTextSection(SwSectionFmt *const pFmt = 0,
const bool bIndexHeader = false);
+ // MetadatableMixin
+ virtual ::sfx2::Metadatable* GetCoreObject();
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >
+ GetModel();
+
static const ::com::sun::star::uno::Sequence< sal_Int8 >& getUnoTunnelId();
// XUnoTunnel
diff --git a/sw/inc/unotext.hxx b/sw/inc/unotext.hxx
index 76fa7ee3befe..d6ada94d5396 100644
--- a/sw/inc/unotext.hxx
+++ b/sw/inc/unotext.hxx
@@ -31,6 +31,7 @@
#include <com/sun/star/lang/XUnoTunnel.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/text/XText.hpp>
+#include <com/sun/star/text/XTextCopy.hpp>
#include <com/sun/star/text/XTextRangeCompare.hpp>
#include <com/sun/star/text/XRelativeTextContentInsert.hpp>
#include <com/sun/star/text/XRelativeTextContentRemove.hpp>
@@ -62,6 +63,7 @@ class SwXText
, public ::com::sun::star::lang::XUnoTunnel
, public ::com::sun::star::beans::XPropertySet
, public ::com::sun::star::text::XTextAppendAndConvert
+ , public ::com::sun::star::text::XTextCopy
, public ::com::sun::star::text::XTextRangeCompare
, public ::com::sun::star::text::XRelativeTextContentInsert
, public ::com::sun::star::text::XRelativeTextContentRemove
@@ -333,6 +335,11 @@ public:
throw (::com::sun::star::lang::IllegalArgumentException,
::com::sun::star::uno::RuntimeException);
+ // XTextCopy
+ virtual void SAL_CALL copyText(
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::text::XTextCopy >& xSource )
+ throw (::com::sun::star::uno::RuntimeException);
};
#endif // SW_UNOTEXT_HXX
diff --git a/sw/inc/unotextmarkup.hxx b/sw/inc/unotextmarkup.hxx
index c0b6f3a7e048..98bb3416d385 100644
--- a/sw/inc/unotextmarkup.hxx
+++ b/sw/inc/unotextmarkup.hxx
@@ -42,7 +42,6 @@ namespace com { namespace sun { namespace star { namespace container {
} } } }
class SwTxtNode;
-class SwWrongList;
class SfxPoolItem;
/** Implementation of the css::text::XTextMarkup interface
diff --git a/sw/inc/unotextrange.hxx b/sw/inc/unotextrange.hxx
index cb333da905d9..ff7a536fb69e 100644
--- a/sw/inc/unotextrange.hxx
+++ b/sw/inc/unotextrange.hxx
@@ -60,12 +60,12 @@ class SwUnoInternalPaM
private:
SwUnoInternalPaM(const SwUnoInternalPaM&);
- SwUnoInternalPaM& operator=(const SwPaM& rPaM);
public:
SwUnoInternalPaM(SwDoc& rDoc);
virtual ~SwUnoInternalPaM();
+ SwUnoInternalPaM& operator=(const SwPaM& rPaM);
};
diff --git a/sw/inc/unotxdoc.hxx b/sw/inc/unotxdoc.hxx
index fc5ae0fad8a9..b50d5b0a1b76 100755
--- a/sw/inc/unotxdoc.hxx
+++ b/sw/inc/unotxdoc.hxx
@@ -607,6 +607,9 @@ public:
~SwViewOptionAdjust_Impl();
void AdjustViewOptions( const SwPrtOptions *pPrtOptions );
+
+ bool checkShell( const SwWrtShell& rCompare ) const
+ { return &rCompare == &m_rShell; }
};
diff --git a/sw/inc/viewopt.hxx b/sw/inc/viewopt.hxx
index f0036e7abf35..8d37888ea789 100755
--- a/sw/inc/viewopt.hxx
+++ b/sw/inc/viewopt.hxx
@@ -41,7 +41,7 @@ class ViewShell;
class SwDocShell;
namespace svtools{ class ColorConfig;}
-#define VIEWOPT_1_IDLE 0x00000001L
+//#define VIEWOPT_1_IDLE 0x00000001L no longer used, see new member 'bIdle'
#define VIEWOPT_1_TAB 0x00000002L
#define VIEWOPT_1_BLANK 0x00000004L
#define VIEWOPT_1_HARDBLANK 0x00000008L
@@ -164,6 +164,7 @@ protected:
BOOL bBookview : 1; // view mode for page preview
BOOL mbViewLayoutBookMode : 1; // book view mode for edit view
sal_Bool bShowPlaceHolderFields : 1; //only used in printing!
+ mutable bool bIdle;
// Maszstab
USHORT nZoom; // Angaben in Prozent
@@ -202,9 +203,14 @@ public:
----------------------------------------------------------------------------*/
inline BOOL IsIdle() const
- { return nCoreOptions & VIEWOPT_1_IDLE ? TRUE : FALSE; }
- inline void SetIdle( BOOL b )
- { (b != 0) ? (nCoreOptions |= VIEWOPT_1_IDLE ) : ( nCoreOptions &= ~VIEWOPT_1_IDLE); }
+ { return bIdle; }
+
+ // logically this is a const function since it does not modify the viewoptions
+ // but only effects idle formatting. Of course that member is already implement
+ // in the wrong place here... Also currently there are many const modifying casts in the code
+ // just to call this function on otherwise const objects. Thus declaring it as const now.
+ inline void SetIdle( BOOL b ) const
+ { bIdle = b; }
inline BOOL IsTab(BOOL bHard = FALSE) const
{ return !bReadonly && (nCoreOptions & VIEWOPT_1_TAB) &&
diff --git a/sw/inc/viewsh.hxx b/sw/inc/viewsh.hxx
index 700b50121675..6c7011d78bb4 100755
--- a/sw/inc/viewsh.hxx
+++ b/sw/inc/viewsh.hxx
@@ -77,19 +77,15 @@ struct ShellResource;
class SwRegionRects;
class SwFrm;
class SvtAccessibilityOptions;
-// OD 12.12.2002 #103492#
class SwPagePreviewLayout;
-// --> OD 2005-12-01 #i27138#
class SwTxtFrm;
-// <--
class BitmapEx;
struct SwAccessibilityOptions;
class Region;
class SwPostItMgr;
-
-// #i74769#
class SdrPaintWindow;
+class SwAccessibleMap;
namespace vcl
{
@@ -264,7 +260,7 @@ public:
sal_Bool SmoothScroll( long lXDiff, long lYDiff, const Rectangle* );//Browser
void EnableSmooth( sal_Bool b ) { bEnableSmooth = b; }
- const SwRect &VisArea() const { return aVisArea; }
+ const SwRect& VisArea() const { return aVisArea; }
//Es wird, wenn notwendig, soweit gescrollt, dass das
//uebergebene Rect im sichtbaren Ausschnitt liegt.
void MakeVisible( const SwRect & );
@@ -399,9 +395,6 @@ public:
// compatible behaviour of tabs
void SetTabCompat( bool bNew );
- //#i24363# tab stops relative to indent
- void SetTabsRelativeToIndent( bool bNew );
-
// font metric attribute "External Leading" should be considered
void SetAddExtLeading( bool bNew );
@@ -557,9 +550,11 @@ public:
*/
void InvalidateAccessibleParaTextSelection();
- /** invalidate attributes for paragraphs
+ /** invalidate attributes for paragraphs and paragraph's characters
OD 2009-01-06 #i88069#
+ OD 2010-02-16 #i104008# - usage also for changes of the attributes of
+ paragraph's characters.
@author OD
@@ -568,6 +563,8 @@ public:
*/
void InvalidateAccessibleParaAttrs( const SwTxtFrm& rTxtFrm );
+ SwAccessibleMap* GetAccessibleMap();
+
ViewShell( ViewShell&, Window *pWin = 0, OutputDevice *pOut = 0,
long nFlags = 0 );
ViewShell( SwDoc& rDoc, Window *pWin,
diff --git a/sw/inc/viscrs.hxx b/sw/inc/viscrs.hxx
index ee5ef83eb8a2..827671a7f94e 100644
--- a/sw/inc/viscrs.hxx
+++ b/sw/inc/viscrs.hxx
@@ -92,8 +92,6 @@ class SwSelPaintRects : public SwRects
// die Shell
const SwCrsrShell* pCShell;
- void Paint( const SwRect& rRect );
-
virtual void Paint( const Rectangle& rRect );
virtual void FillRects() = 0;
diff --git a/sw/prj/d.lst b/sw/prj/d.lst
index ed58b3140762..79fecb5a629b 100644
--- a/sw/prj/d.lst
+++ b/sw/prj/d.lst
@@ -20,36 +20,6 @@ mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\sweb\toolbar
mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\sglobal\toolbar
mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\swform\toolbar
mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\swreport\toolbar
-mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\swriter\accelerator
-mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\swxform\accelerator
-mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\sweb\accelerator
-mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\sglobal\accelerator
-mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\swform\accelerator
-mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\swreport\accelerator
-mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\swriter\accelerator\en-US
-mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\swriter\accelerator\de
-mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\swriter\accelerator\es
-mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\swriter\accelerator\fr
-mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\swxform\accelerator\en-US
-mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\swxform\accelerator\de
-mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\swxform\accelerator\es
-mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\swxform\accelerator\fr
-mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\sweb\accelerator\en-US
-mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\sweb\accelerator\de
-mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\sweb\accelerator\es
-mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\sweb\accelerator\fr
-mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\sglobal\accelerator\en-US
-mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\sglobal\accelerator\de
-mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\sglobal\accelerator\es
-mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\sglobal\accelerator\fr
-mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\swform\accelerator\en-US
-mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\swform\accelerator\de
-mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\swform\accelerator\es
-mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\swform\accelerator\fr
-mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\swreport\accelerator\en-US
-mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\swreport\accelerator\de
-mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\swreport\accelerator\es
-mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\swreport\accelerator\fr
mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\swriter\statusbar
mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\swxform\statusbar
mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\sweb\statusbar
@@ -80,30 +50,6 @@ mkdir: %_DEST%\xml%_EXT%\uiconfig\modules\swreport\statusbar
..\uiconfig\sglobal\toolbar\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\sglobal\toolbar\*.xml
..\uiconfig\swform\toolbar\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\swform\toolbar\*.xml
..\uiconfig\swreport\toolbar\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\swreport\toolbar\*.xml
-..\uiconfig\swriter\accelerator\en-US\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\swriter\accelerator\en-US\*.xml
-..\uiconfig\swriter\accelerator\de\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\swriter\accelerator\de\*.xml
-..\uiconfig\swriter\accelerator\es\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\swriter\accelerator\es\*.xml
-..\uiconfig\swriter\accelerator\fr\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\swriter\accelerator\fr\*.xml
-..\uiconfig\swxform\accelerator\en-US\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\swxform\accelerator\en-US\*.xml
-..\uiconfig\swxform\accelerator\de\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\swxform\accelerator\de\*.xml
-..\uiconfig\swxform\accelerator\es\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\swxform\accelerator\es\*.xml
-..\uiconfig\swxform\accelerator\fr\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\swxform\accelerator\fr\*.xml
-..\uiconfig\sweb\accelerator\en-US\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\sweb\accelerator\en-US\*.xml
-..\uiconfig\sweb\accelerator\de\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\sweb\accelerator\de\*.xml
-..\uiconfig\sweb\accelerator\es\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\sweb\accelerator\es\*.xml
-..\uiconfig\sweb\accelerator\fr\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\sweb\accelerator\fr\*.xml
-..\uiconfig\sglobal\accelerator\en-US\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\sglobal\accelerator\en-US\*.xml
-..\uiconfig\sglobal\accelerator\de\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\sglobal\accelerator\de\*.xml
-..\uiconfig\sglobal\accelerator\es\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\sglobal\accelerator\es\*.xml
-..\uiconfig\sglobal\accelerator\fr\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\sglobal\accelerator\fr\*.xml
-..\uiconfig\swform\accelerator\en-US\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\swform\accelerator\en-US\*.xml
-..\uiconfig\swform\accelerator\de\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\swform\accelerator\de\*.xml
-..\uiconfig\swform\accelerator\es\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\swform\accelerator\es\*.xml
-..\uiconfig\swform\accelerator\fr\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\swform\accelerator\fr\*.xml
-..\uiconfig\swreport\accelerator\en-US\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\swreport\accelerator\en-US\*.xml
-..\uiconfig\swreport\accelerator\de\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\swreport\accelerator\de\*.xml
-..\uiconfig\swreport\accelerator\es\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\swreport\accelerator\es\*.xml
-..\uiconfig\swreport\accelerator\fr\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\swreport\accelerator\fr\*.xml
..\uiconfig\swriter\statusbar\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\swriter\statusbar\*.xml
..\uiconfig\swxform\statusbar\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\swxform\statusbar\*.xml
..\uiconfig\sweb\statusbar\*.xml %_DEST%\xml%_EXT%\uiconfig\modules\sweb\statusbar\*.xml
diff --git a/sw/qa/complex/writer/TextPortionEnumerationTest.java b/sw/qa/complex/writer/TextPortionEnumerationTest.java
index 72e9664aaab4..2eda02bfa518 100755
--- a/sw/qa/complex/writer/TextPortionEnumerationTest.java
+++ b/sw/qa/complex/writer/TextPortionEnumerationTest.java
@@ -34,12 +34,16 @@ import com.sun.star.uno.XComponentContext;
import com.sun.star.lang.XMultiServiceFactory;
import com.sun.star.lang.XComponent;
import com.sun.star.lang.XServiceInfo;
+import com.sun.star.lang.NoSupportException;
import com.sun.star.beans.XPropertySet;
import com.sun.star.beans.XPropertySetInfo;
import com.sun.star.beans.PropertyValue;
import com.sun.star.beans.Pair;
import com.sun.star.beans.StringPair;
import com.sun.star.container.XNamed;
+import com.sun.star.container.XChild;
+import com.sun.star.container.XIndexAccess;
+import com.sun.star.container.XNameAccess;
import com.sun.star.container.XContentEnumerationAccess;
import com.sun.star.container.XEnumerationAccess;
import com.sun.star.container.XEnumeration;
@@ -56,10 +60,16 @@ import com.sun.star.text.XSentenceCursor;
import com.sun.star.text.XParagraphCursor;
import com.sun.star.text.XFootnote;
import com.sun.star.text.XTextField;
+import com.sun.star.text.XBookmarksSupplier;
+import com.sun.star.text.XTextSectionsSupplier;
+import com.sun.star.text.XDocumentIndexesSupplier;
import com.sun.star.text.TextContentAnchorType;
import static com.sun.star.text.TextContentAnchorType.*;
import static com.sun.star.text.ControlCharacter.*;
import com.sun.star.rdf.XMetadatable;
+import com.sun.star.rdf.Statement;
+import com.sun.star.rdf.XDocumentRepository;
+import com.sun.star.rdf.XRepositorySupplier;
import java.util.Map;
import java.util.HashMap;
@@ -976,7 +986,7 @@ abstract class Inserter
xPropSet.setPropertyValue("RubyText", rubytext);
}
- void insertMeta(XTextCursor xCursor, StringPair xmlid)
+ XTextContent insertMeta(XTextCursor xCursor, StringPair xmlid)
throws Exception
{
XTextContent xContent = makeMeta();
@@ -984,6 +994,7 @@ abstract class Inserter
XMetadatable xMetadatable = (XMetadatable)
UnoRuntime.queryInterface(XMetadatable.class, xContent);
xMetadatable.setMetadataReference(xmlid);
+ return xContent;
}
XTextContent makeMeta() throws Exception
@@ -995,14 +1006,15 @@ abstract class Inserter
return xContent;
}
- void insertMetaField(XTextCursor xCursor, StringPair xmlid)
+ XTextField insertMetaField(XTextCursor xCursor, StringPair xmlid)
throws Exception
{
- XTextContent xContent = makeMetaField();
+ XTextField xContent = makeMetaField();
xContent.attach(xCursor);
XMetadatable xMetadatable = (XMetadatable)
UnoRuntime.queryInterface(XMetadatable.class, xContent);
xMetadatable.setMetadataReference(xmlid);
+ return xContent;
}
XTextField makeMetaField() throws Exception
@@ -1165,15 +1177,16 @@ class RangeInserter extends Inserter
}
*/
- void insertRange(Range range) throws Exception
+ XTextContent insertRange(Range range) throws Exception
{
m_xCursor.gotoStartOfParagraph(false);
m_xCursor.goRight(range.getStart(), false);
m_xCursor.goRight(range.getExtent(), true);
- insertNode(m_xCursor, range.getNode());
+ return insertNode(m_xCursor, range.getNode());
}
- void insertNode(XParagraphCursor xCursor, TreeNode node) throws Exception
+ XTextContent insertNode(XParagraphCursor xCursor, TreeNode node)
+ throws Exception
{
String type = node.getType();
if (type.equals("Bookmark")) {
@@ -1196,10 +1209,10 @@ class RangeInserter extends Inserter
insertRuby(xCursor, ruby.getRubyText());
} else if (type.equals("InContentMetadata")) {
MetaNode meta = (MetaNode) node;
- insertMeta(xCursor, meta.getXmlId());
+ return insertMeta(xCursor, meta.getXmlId());
} else if (type.equals("MetadataField")) {
MetaFieldNode meta = (MetaFieldNode) node;
- insertMetaField(xCursor, meta.getXmlId());
+ return insertMetaField(xCursor, meta.getXmlId());
} else if (type.equals("Text")) {
TextNode text = (TextNode) node;
insertText(xCursor, text.getContent());
@@ -1220,6 +1233,7 @@ class RangeInserter extends Inserter
} else {
throw new RuntimeException("unexpected type: " + type);
}
+ return null;
}
}
@@ -1306,6 +1320,7 @@ public class TextPortionEnumerationTest extends ComplexTestCase
"testRange5",
"testRange6",
"testRange7",
+ "testMetaXChild",
"testMetaXText",
"testMetaXTextCursor",
"testMetaXTextAttachToxMark",
@@ -1316,6 +1331,7 @@ public class TextPortionEnumerationTest extends ComplexTestCase
"testMetaFieldXTextField",
"testMetaFieldXPropertySet",
"testLoadStore",
+ "testLoadStoreXmlid",
};
}
@@ -1640,12 +1656,28 @@ public class TextPortionEnumerationTest extends ComplexTestCase
public void testRefMark3() throws Exception
{
+ // BUG: #i107672# (non-deterministic; depends on pointer ordering)
String name1 = mkName("refmark");
String name2 = mkName("refmark");
+ String name3 = mkName("refmark");
+ String name4 = mkName("refmark");
+ String name5 = mkName("refmark");
+ String name6 = mkName("refmark");
+ String name7 = mkName("refmark");
TreeNode root = new TreeNode();
root.appendChild( new ReferenceMarkStartNode(name1) );
root.appendChild( new ReferenceMarkStartNode(name2) );
+ root.appendChild( new ReferenceMarkStartNode(name3) );
+ root.appendChild( new ReferenceMarkStartNode(name4) );
+ root.appendChild( new ReferenceMarkStartNode(name5) );
+ root.appendChild( new ReferenceMarkStartNode(name6) );
+ root.appendChild( new ReferenceMarkStartNode(name7) );
root.appendChild( new TextNode("abc") );
+ root.appendChild( new ReferenceMarkEndNode(name7) );
+ root.appendChild( new ReferenceMarkEndNode(name6) );
+ root.appendChild( new ReferenceMarkEndNode(name5) );
+ root.appendChild( new ReferenceMarkEndNode(name4) );
+ root.appendChild( new ReferenceMarkEndNode(name3) );
root.appendChild( new ReferenceMarkEndNode(name2) );
root.appendChild( new ReferenceMarkEndNode(name1) );
root.appendChild( new TextNode("de") );
@@ -1665,12 +1697,28 @@ public class TextPortionEnumerationTest extends ComplexTestCase
public void testToxMark3() throws Exception
{
+ // BUG: #i107672# (non-deterministic; depends on pointer ordering)
String name1 = mkName("toxmark");
String name2 = mkName("toxmark");
+ String name3 = mkName("toxmark");
+ String name4 = mkName("toxmark");
+ String name5 = mkName("toxmark");
+ String name6 = mkName("toxmark");
+ String name7 = mkName("toxmark");
TreeNode root = new TreeNode();
root.appendChild( new DocumentIndexMarkStartNode(name1) );
root.appendChild( new DocumentIndexMarkStartNode(name2) );
+ root.appendChild( new DocumentIndexMarkStartNode(name3) );
+ root.appendChild( new DocumentIndexMarkStartNode(name4) );
+ root.appendChild( new DocumentIndexMarkStartNode(name5) );
+ root.appendChild( new DocumentIndexMarkStartNode(name6) );
+ root.appendChild( new DocumentIndexMarkStartNode(name7) );
root.appendChild( new TextNode("abc") );
+ root.appendChild( new DocumentIndexMarkEndNode(name7) );
+ root.appendChild( new DocumentIndexMarkEndNode(name6) );
+ root.appendChild( new DocumentIndexMarkEndNode(name5) );
+ root.appendChild( new DocumentIndexMarkEndNode(name4) );
+ root.appendChild( new DocumentIndexMarkEndNode(name3) );
root.appendChild( new DocumentIndexMarkEndNode(name2) );
root.appendChild( new DocumentIndexMarkEndNode(name1) );
root.appendChild( new TextNode("de") );
@@ -2898,6 +2946,136 @@ public class TextPortionEnumerationTest extends ComplexTestCase
/* TODO: test partial selection, test UNDO/REDO */
+ // #i109601# NestedTextContent and XChild
+ public void testMetaXChild() throws Exception
+ {
+ StringPair id1 = new StringPair("content.xml", mkName("id"));
+ StringPair id2 = new StringPair("content.xml", mkName("id"));
+ StringPair id3 = new StringPair("content.xml", mkName("id"));
+ StringPair id4 = new StringPair("content.xml", mkName("id"));
+ StringPair id5 = new StringPair("content.xml", mkName("id"));
+ StringPair id6 = new StringPair("content.xml", mkName("id"));
+ TreeNode meta1 = new MetaNode(id1);
+ TreeNode meta2 = new MetaNode(id2);
+ TreeNode meta3 = new MetaFieldNode(id3);
+ TreeNode meta4 = new MetaNode(id4);
+ TreeNode meta5 = new MetaNode(id5);
+ TreeNode meta6 = new MetaFieldNode(id6);
+ TreeNode root = new TreeNode()
+ .appendChild( meta1.dup()
+ .appendChild( new TextNode("1") ) )
+ .appendChild( new TextNode("2") )
+ .appendChild( meta2.dup()
+ .appendChild( meta3.dup()
+ .appendChild( new TextNode("34") )
+ .appendChild( meta4.dup()
+ .appendChild( new TextNode("56") ) )
+ .appendChild( meta5.dup() )
+ .appendChild( new TextNode("7") ) ) )
+ .appendChild( new TextNode("8") )
+ .appendChild( meta6.dup()
+ .appendChild( new TextNode("9") ) );
+
+ RangeInserter inserter = new RangeInserter(m_xDoc);
+ TreeNode text = new TextNode("123456789");
+ inserter.insertRange( new Range(0, 0, text) );
+ XTextContent xMeta1 = inserter.insertRange( new Range(0, 1, meta1) );
+ XTextContent xMeta2 = inserter.insertRange( new Range(3, 8, meta2) );
+ XTextContent xMeta3 = inserter.insertRange( new Range(4, 9, meta3) );
+ XTextContent xMeta4 = inserter.insertRange( new Range(7, 9, meta4) );
+ XTextContent xMeta5 = inserter.insertRange( new Range(10, 10, meta5) );
+ XTextContent xMeta6 = inserter.insertRange( new Range(13, 14, meta6) );
+
+ doTest(root, false);
+
+ XText xDocText = m_xDoc.getText();
+ XTextCursor xDocTextCursor = xDocText.createTextCursor();
+ XParagraphCursor xParagraphCursor = (XParagraphCursor)
+ UnoRuntime.queryInterface(XParagraphCursor.class, xDocTextCursor);
+ xParagraphCursor.gotoNextParagraph(false); // second paragraph
+ // X12XX34X56X78X9
+ // 1 23 4 5 6
+ // 1 452 6
+ // 3
+ StringPair [] nestedTextContent = new StringPair[] {
+ null,
+ id1,
+ id1,
+ null,
+ id2,
+ id3,
+ id3,
+ id3,
+ id4,
+ id4,
+ id4,
+ id5,
+ id3,
+ null,
+ id6,
+ id6,
+ };
+ XPropertySet xPropertySet = (XPropertySet)
+ UnoRuntime.queryInterface(XPropertySet.class, xDocTextCursor);
+ for (int i = 0; i < nestedTextContent.length; ++i) {
+ Object oNTC = xPropertySet.getPropertyValue("NestedTextContent");
+ XTextContent xNTC = (XTextContent)
+ UnoRuntime.queryInterface(XTextContent.class, oNTC);
+ if (null == nestedTextContent[i]) {
+ assure("unexpected NestedTextContent at: " + i, null == xNTC);
+ } else {
+ XMetadatable xMetadatable = (XMetadatable)
+ UnoRuntime.queryInterface(XMetadatable.class, xNTC);
+ StringPair xmlid = xMetadatable.getMetadataReference();
+ assure("wrong NestedTextContent at: " + i,
+ MetaNode.eq(nestedTextContent[i], xmlid));
+ }
+ xDocTextCursor.goRight((short)1, false);
+ }
+
+ XChild xChild1 = (XChild)
+ UnoRuntime.queryInterface(XChild.class, xMeta1);
+ XChild xChild2 = (XChild)
+ UnoRuntime.queryInterface(XChild.class, xMeta2);
+ XChild xChild3 = (XChild)
+ UnoRuntime.queryInterface(XChild.class, xMeta3);
+ XChild xChild4 = (XChild)
+ UnoRuntime.queryInterface(XChild.class, xMeta4);
+ XChild xChild5 = (XChild)
+ UnoRuntime.queryInterface(XChild.class, xMeta5);
+ XChild xChild6 = (XChild)
+ UnoRuntime.queryInterface(XChild.class, xMeta6);
+ try {
+ xChild1.setParent(xChild4);
+ assure("setParent(): allowed?", false);
+ } catch (NoSupportException e) { /* expected */ }
+ assure("getParent(): not null", xChild1.getParent() == null);
+ assure("getParent(): not null", xChild2.getParent() == null);
+ assure("getParent(): not null", xChild6.getParent() == null);
+ {
+ Object xParent3 = xChild3.getParent();
+ assure("getParent(): null", null != xParent3);
+ XMetadatable xMetadatable = (XMetadatable)
+ UnoRuntime.queryInterface(XMetadatable.class, xParent3);
+ StringPair xmlid = xMetadatable.getMetadataReference();
+ assure("getParent(): wrong", MetaNode.eq(xmlid, id2));
+ }{
+ Object xParent4 = xChild4.getParent();
+ assure("getParent(): null", null != xParent4);
+ XMetadatable xMetadatable = (XMetadatable)
+ UnoRuntime.queryInterface(XMetadatable.class, xParent4);
+ StringPair xmlid = xMetadatable.getMetadataReference();
+ assure("getParent(): wrong", MetaNode.eq(xmlid, id3));
+ }{
+ Object xParent5 = xChild5.getParent();
+ assure("getParent(): null", null != xParent5);
+ XMetadatable xMetadatable = (XMetadatable)
+ UnoRuntime.queryInterface(XMetadatable.class, xParent5);
+ StringPair xmlid = xMetadatable.getMetadataReference();
+ assure("getParent(): wrong", MetaNode.eq(xmlid, id3));
+ }
+ }
+
/** test SwXMeta XText interface */
public void testMetaXText() throws Exception
{
@@ -3685,7 +3863,7 @@ public class TextPortionEnumerationTest extends ComplexTestCase
public void testLoadStore() throws Exception
{
- XComponent xComp = null;
+ XTextDocument xComp = null;
String filename = "TESTMETA.odt";
String file;
try {
@@ -3693,10 +3871,12 @@ public class TextPortionEnumerationTest extends ComplexTestCase
xComp = doLoad(file);
if (xComp != null)
{
+ checkLoadMeta(xComp);
file = m_TmpDir + filename;
doStore(xComp, file);
close(xComp);
xComp = doLoad(file);
+ checkLoadMeta(xComp);
}
} finally {
close(xComp);
@@ -3715,7 +3895,7 @@ public class TextPortionEnumerationTest extends ComplexTestCase
log.println("...done");
}
- public XComponent doLoad(String file) throws Exception
+ public XTextDocument doLoad(String file) throws Exception
{
XComponent xComp = null;
@@ -3729,14 +3909,20 @@ public class TextPortionEnumerationTest extends ComplexTestCase
xComp = util.DesktopTools.loadDoc(m_xMSF, file, loadProps);
// xComp = util.DesktopTools.getCLoader(m_xMSF).loadComponentFromURL(file, "_blank", 0, loadProps);
-
XTextDocument xTextDoc = (XTextDocument)
UnoRuntime.queryInterface(XTextDocument.class, xComp);
- XText xText = xTextDoc.getText();
+ assure("cannot load: " + file, xTextDoc != null);
log.println("...done");
+ return xTextDoc;
+ }
+
+ public void checkLoadMeta(XTextDocument xTextDoc) throws Exception
+ {
+ XText xText = xTextDoc.getText();
+
log.println("Checking meta(-field)s in loaded test document...");
TreeNode root = new TreeNode()
@@ -3783,8 +3969,199 @@ public class TextPortionEnumerationTest extends ComplexTestCase
doTest(xTextDoc, root, false);
log.println("...done");
+ }
- return xComp;
+ public void testLoadStoreXmlid() throws Exception
+ {
+ XTextDocument xComp = null;
+ String filename = "TESTXMLID.odt";
+ String file;
+ try {
+ file = util.utils.getFullTestURL(filename);
+ xComp = doLoad(file);
+ if (xComp != null)
+ {
+ checkLoadXmlId(xComp);
+ file = m_TmpDir + filename;
+ doStore(xComp, file);
+ close(xComp);
+ xComp = doLoad(file);
+ checkLoadXmlId(xComp);
+ }
+ } finally {
+ close(xComp);
+ }
+ }
+
+ public void checkLoadXmlId(XTextDocument xTextDoc) throws Exception
+ {
+ XText xText = xTextDoc.getText();
+
+ log.println("Checking bookmarks in loaded test document...");
+
+ XRepositorySupplier xRS = (XRepositorySupplier)
+ UnoRuntime.queryInterface(XRepositorySupplier.class, xTextDoc);
+ XDocumentRepository xRepo = (XDocumentRepository)
+ UnoRuntime.queryInterface(XDocumentRepository.class,
+ xRS.getRDFRepository());
+ XBookmarksSupplier xBMS = (XBookmarksSupplier)
+ UnoRuntime.queryInterface(XBookmarksSupplier.class, xTextDoc);
+ XNameAccess xBookmarks = xBMS.getBookmarks();
+ XMetadatable xMark1 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xBookmarks.getByName("mk1"));
+ assure("mark1",
+ eq(xMark1.getMetadataReference(),
+ new StringPair("content.xml", "id90")));
+
+ XMetadatable xMark2 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xBookmarks.getByName("mk2"));
+ Pair<Statement[], Boolean> result = xRepo.getStatementRDFa(xMark2);
+ assure("mark2", (result.First.length == 1)
+ && result.First[0].Subject.getStringValue().equals("uri:foo")
+ && result.First[0].Predicate.getStringValue().equals("uri:bar")
+ && result.First[0].Object.getStringValue().contains("a fooish bar")
+ );
+
+ XMetadatable xMark3 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xBookmarks.getByName("mk3"));
+ assure("mark3",
+ eq(xMark3.getMetadataReference(),
+ new StringPair("content.xml", "id91")));
+
+ log.println("...done");
+
+ log.println("Checking sections in loaded test document...");
+
+ XTextSectionsSupplier xTSS = (XTextSectionsSupplier)
+ UnoRuntime.queryInterface(XTextSectionsSupplier.class, xTextDoc);
+
+ XNameAccess xSections = xTSS.getTextSections();
+
+ XMetadatable xSection1 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xSections.getByName("Section 1"));
+ assure("idsection1", eq(xSection1.getMetadataReference(),
+ new StringPair("content.xml", "idSection1")));
+
+ XMetadatable xSection2 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xSections.getByName("Section 2"));
+ assure("idSection2", eq(xSection2.getMetadataReference(),
+ new StringPair("content.xml", "idSection2")));
+
+ XMetadatable xSection3 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class,
+ xSections.getByName("Table of Contents1_Head"));
+ assure("idTOCTitle", eq(xSection3.getMetadataReference(),
+ new StringPair("content.xml", "idTOCTitle")));
+
+ XMetadatable xSection4 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class,
+ xSections.getByName("Alphabetical Index1_Head"));
+ assure("idAITitle", eq(xSection4.getMetadataReference(),
+ new StringPair("content.xml", "idAITitle")));
+
+ XMetadatable xSection5 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class,
+ xSections.getByName("Illustration Index1_Head"));
+ assure("idIITitle", eq(xSection5.getMetadataReference(),
+ new StringPair("content.xml", "idIITitle")));
+
+ XMetadatable xSection6 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class,
+ xSections.getByName("Index of Tables1_Head"));
+ assure("idIOTTitle", eq(xSection6.getMetadataReference(),
+ new StringPair("content.xml", "idIOTTitle")));
+
+ XMetadatable xSection7 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class,
+ xSections.getByName("User-Defined1_Head"));
+ assure("idUDTitle", eq(xSection7.getMetadataReference(),
+ new StringPair("content.xml", "idUDTitle")));
+
+ XMetadatable xSection8 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class,
+ xSections.getByName("Table of Objects1_Head"));
+ assure("idTOOTitle", eq(xSection8.getMetadataReference(),
+ new StringPair("content.xml", "idTOOTitle")));
+
+ XMetadatable xSection9 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xSections.getByName("Bibliography1_Head"));
+ assure("idBibTitle", eq(xSection9.getMetadataReference(),
+ new StringPair("content.xml", "idBibTitle")));
+
+ log.println("...done");
+
+ log.println("Checking indexes in loaded test document...");
+
+ XDocumentIndexesSupplier xDIS = (XDocumentIndexesSupplier)
+ UnoRuntime.queryInterface(XDocumentIndexesSupplier.class, xTextDoc);
+ XIndexAccess xIndexesIA = xDIS.getDocumentIndexes();
+ XNameAccess xIndexes =
+ UnoRuntime.queryInterface(XNameAccess.class, xIndexesIA);
+
+ XMetadatable xIndex1 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xIndexes.getByName("Table of Contents1"));
+ assure("idTOC", eq(xIndex1.getMetadataReference(),
+ new StringPair("content.xml", "idTOC")));
+ XMetadatable xIndex1s = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xSections.getByName("Table of Contents1"));
+ assure("idTOC", eq(xIndex1s.getMetadataReference(),
+ new StringPair("content.xml", "idTOC")));
+
+ XMetadatable xIndex2 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xIndexes.getByName("Alphabetical Index1"));
+ assure("idAI", eq(xIndex2.getMetadataReference(),
+ new StringPair("content.xml", "idAI")));
+ XMetadatable xIndex2s = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xSections.getByName("Alphabetical Index1"));
+ assure("idAI", eq(xIndex2s.getMetadataReference(),
+ new StringPair("content.xml", "idAI")));
+
+ XMetadatable xIndex3 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xIndexes.getByName("Illustration Index1"));
+ assure("idII", eq(xIndex3.getMetadataReference(),
+ new StringPair("content.xml", "idII")));
+ XMetadatable xIndex3s = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xSections.getByName("Illustration Index1"));
+ assure("idII", eq(xIndex3s.getMetadataReference(),
+ new StringPair("content.xml", "idII")));
+
+ XMetadatable xIndex4 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xIndexes.getByName("Index of Tables1"));
+ assure("idIOT", eq(xIndex4.getMetadataReference(),
+ new StringPair("content.xml", "idIOT")));
+ XMetadatable xIndex4s = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xSections.getByName("Index of Tables1"));
+ assure("idIOT", eq(xIndex4s.getMetadataReference(),
+ new StringPair("content.xml", "idIOT")));
+
+ XMetadatable xIndex5 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xIndexes.getByName("User-Defined1"));
+ assure("idUD", eq(xIndex5.getMetadataReference(),
+ new StringPair("content.xml", "idUD")));
+ XMetadatable xIndex5s = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xSections.getByName("User-Defined1"));
+ assure("idUD", eq(xIndex5s.getMetadataReference(),
+ new StringPair("content.xml", "idUD")));
+
+ XMetadatable xIndex6 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xIndexes.getByName("Table of Objects1"));
+ assure("idTOO", eq(xIndex6.getMetadataReference(),
+ new StringPair("content.xml", "idTOO")));
+ XMetadatable xIndex6s = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xSections.getByName("Table of Objects1"));
+ assure("idTOO", eq(xIndex6s.getMetadataReference(),
+ new StringPair("content.xml", "idTOO")));
+
+ XMetadatable xIndex7 = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xIndexes.getByName("Bibliography1"));
+ assure("idBib", eq(xIndex7.getMetadataReference(),
+ new StringPair("content.xml", "idBib")));
+ XMetadatable xIndex7s = (XMetadatable) UnoRuntime.queryInterface(
+ XMetadatable.class, xSections.getByName("Bibliography1"));
+ assure("idBib", eq(xIndex7s.getMetadataReference(),
+ new StringPair("content.xml", "idBib")));
+
+ log.println("...done");
}
static void close(XComponent i_comp)
@@ -3863,6 +4240,12 @@ public class TextPortionEnumerationTest extends ComplexTestCase
return new StringPair("content.xml", id);
}
+ static boolean eq(StringPair i_Left, StringPair i_Right)
+ {
+ return ((i_Left.First).equals(i_Right.First)) &&
+ ((i_Left.Second).equals(i_Right.Second));
+ }
+
public void assure(String str, boolean cond) { super.assure(str, cond); }
}
diff --git a/sw/qa/complex/writer/testdocuments/TESTXMLID.odt b/sw/qa/complex/writer/testdocuments/TESTXMLID.odt
new file mode 100644
index 000000000000..063d392a489f
--- /dev/null
+++ b/sw/qa/complex/writer/testdocuments/TESTXMLID.odt
Binary files differ
diff --git a/sw/qa/core/export.map b/sw/qa/core/export.map
index 0e4fe0c88ff2..7321bbca16ad 100644
--- a/sw/qa/core/export.map
+++ b/sw/qa/core/export.map
@@ -25,7 +25,7 @@
#
#*************************************************************************
-UDK_3.0 {
+UDK_3_0_0 {
global:
registerAllTestFunction;
diff --git a/sw/qa/core/makefile.mk b/sw/qa/core/makefile.mk
index 02e69f45dae2..00ebfda8844a 100644
--- a/sw/qa/core/makefile.mk
+++ b/sw/qa/core/makefile.mk
@@ -37,6 +37,8 @@ ENABLE_EXCEPTIONS=TRUE
.INCLUDE : settings.mk
+CFLAGSCXX += $(CPPUNIT_CFLAGS)
+
# BEGIN ----------------------------------------------------------------
# auto generated Target:testjob by codegen.pl
diff --git a/sw/qa/unoapi/Test.java b/sw/qa/unoapi/Test.java
new file mode 100644
index 000000000000..e0311cc069bb
--- /dev/null
+++ b/sw/qa/unoapi/Test.java
@@ -0,0 +1,51 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* 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.
+************************************************************************/
+
+package org.openoffice.sw.qa.unoapi;
+
+import org.openoffice.Runner;
+import org.openoffice.test.OfficeConnection;
+import static org.junit.Assert.*;
+
+public final class Test {
+ @org.junit.Before public void setUp() throws Exception {
+ connection.setUp();
+ }
+
+ @org.junit.After public void tearDown()
+ throws InterruptedException, com.sun.star.uno.Exception
+ {
+ connection.tearDown();
+ }
+
+ @org.junit.Test public void test() {
+ assertTrue(
+ Runner.run(
+ "-sce", "sw.sce", "-xcl", "knownissues.xcl", "-tdoc",
+ "testdocuments", "-cs", connection.getDescription()));
+ }
+
+ private final OfficeConnection connection = new OfficeConnection();
+}
diff --git a/sw/qa/unoapi/knownissues.xcl b/sw/qa/unoapi/knownissues.xcl
index ee20559798a6..08e441211cf7 100644
--- a/sw/qa/unoapi/knownissues.xcl
+++ b/sw/qa/unoapi/knownissues.xcl
@@ -21,6 +21,9 @@ sw.XMLStylesImporter::com::sun::star::xml::sax::XDocumentHandler
### i23422 ###
sw.SwXTextViewCursor::com::sun::star::beans::XMultiPropertyStates
+### i112111 ###
+sw.SwXViewSettings::com::sun::star::beans::XPropertySet
+
### i23623 ###
sw.SwXStyleFamily::com::sun::star::container::XNameReplace
@@ -150,4 +153,23 @@ sw.SwXTextEmbeddedObject::com::sun::star::text::BaseFrameProperties
sw.SwXTextPortion::com::sun::star::style::CharacterProperties
### i94977 ###
-sw.SwXTextGraphicObject::com::sun::star::text::BaseFrameProperties \ No newline at end of file
+sw.SwXTextGraphicObject::com::sun::star::text::BaseFrameProperties
+
+### i109917 ###
+sw.SwXTextDocument::com::sun::star::document::XEventBroadcaster
+
+### i111186 ###
+sw.PageStyle::com::sun::star::beans::XPropertySet
+
+### i111218 ###
+sw.SwAccessibleParagraphView::com::sun::star::accessibility::XAccessibleEventBroadcaster
+
+### i111220 ###
+sw.XMLContentExporter::com::sun::star::document::XFilter
+sw.XMLSettingsExporter::com::sun::star::document::XFilter
+
+### i111273 ###
+sw.SwXTextEmbeddedObject::com::sun::star::document::XEmbeddedObjectSupplier
+
+### i111332 ###
+sw.XMLStylesExporter::com::sun::star::document::XFilter
diff --git a/sw/qa/unoapi/makefile.mk b/sw/qa/unoapi/makefile.mk
index 777c108c9e3e..f5102c2c9c84 100644
--- a/sw/qa/unoapi/makefile.mk
+++ b/sw/qa/unoapi/makefile.mk
@@ -1,7 +1,6 @@
#*************************************************************************
-#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
+#
# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
@@ -22,18 +21,28 @@
# version 3 along with OpenOffice.org. If not, see
# <http://www.openoffice.org/license.html>
# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-PRJ=..$/..
+#***********************************************************************/
-PRJNAME=sw
-TARGET=qa_unoapi
+.IF "$(OOO_SUBSEQUENT_TESTS)" == ""
+nothing .PHONY:
+.ELSE
-.INCLUDE: settings.mk
+PRJ = ../..
+PRJNAME = sw
+TARGET = qa_unoapi
+
+.IF "$(OOO_JUNIT_JAR)" != ""
+PACKAGE = org/openoffice/sw/qa/unoapi
+JAVATESTFILES = Test.java
+JAVAFILES = $(JAVATESTFILES)
+JARFILES = OOoRunner.jar ridl.jar test.jar
+EXTRAJARFILES = $(OOO_JUNIT_JAR)
+.END
+.INCLUDE: settings.mk
.INCLUDE: target.mk
+.INCLUDE: installationtest.mk
-ALLTAR : UNOAPI_TEST
+ALLTAR : javatest
-UNOAPI_TEST:
- +$(SOLARENV)$/bin$/checkapi -sce sw.sce -xcl knownissues.xcl -tdoc $(PWD)$/testdocuments
+.END
diff --git a/sw/qa/unoapi/sw.sce b/sw/qa/unoapi/sw.sce
index 6d8c2b30d56d..e57a6643cd0d 100644
--- a/sw/qa/unoapi/sw.sce
+++ b/sw/qa/unoapi/sw.sce
@@ -2,41 +2,41 @@
-o sw.ConditionalParagraphStyle
-o sw.PageStyle
-o sw.ParagraphStyle
--o sw.SwAccessibleDocumentPageView
+#i111197 -o sw.SwAccessibleDocumentPageView
#i86751 -o sw.SwAccessibleDocumentView
--o sw.SwAccessibleEndnoteView
+#i111185 -o sw.SwAccessibleEndnoteView
-o sw.SwAccessibleFooterView
--o sw.SwAccessibleFootnoteView
+#i111185 -o sw.SwAccessibleFootnoteView
-o sw.SwAccessibleHeaderView
#i89022 -o sw.SwAccessiblePageView
-o sw.SwAccessibleParagraphView
-o sw.SwAccessibleTableCellView
#i85634 -o sw.SwAccessibleTableView
--o sw.SwAccessibleTextEmbeddedObject
--o sw.SwAccessibleTextFrameView
+#i111178 -o sw.SwAccessibleTextEmbeddedObject
+#i111178 -o sw.SwAccessibleTextFrameView
-o sw.SwAccessibleTextGraphicObject
-o sw.SwXAutoTextContainer
-o sw.SwXAutoTextEntry
-o sw.SwXAutoTextGroup
--o sw.SwXBodyText
+#i111185 -o sw.SwXBodyText
-o sw.SwXBookmark
-o sw.SwXBookmarks
-o sw.SwXCell
-o sw.SwXCellRange
-o sw.SwXChapterNumbering
--o sw.SwXDocumentIndex
--o sw.SwXDocumentIndexMark
+#i111185 -o sw.SwXDocumentIndex
+#i111185 -o sw.SwXDocumentIndexMark
-o sw.SwXDocumentIndexes
-o sw.SwXDrawPage
--o sw.SwXEndnoteProperties
+#i111185 -o sw.SwXEndnoteProperties
-o sw.SwXFieldEnumeration
-o sw.SwXFieldMaster
--o sw.SwXFootnote
--o sw.SwXFootnoteProperties
--o sw.SwXFootnoteText
--o sw.SwXFootnotes
+#i111185 -o sw.SwXFootnote
+#i111185 -o sw.SwXFootnoteProperties
+#i111185 -o sw.SwXFootnoteText
+#i111185 -o sw.SwXFootnotes
-o sw.SwXFrames
--o sw.SwXHeadFootText
+#i111185 -o sw.SwXHeadFootText
-o sw.SwXLineNumberingProperties
#i85640 -o sw.SwXMailMerge
-o sw.SwXModule
@@ -48,23 +48,23 @@
-o sw.SwXPropertySetInfo
-o sw.SwXReferenceMark
-o sw.SwXReferenceMarks
--o sw.SwXShape
+#i111190 -o sw.SwXShape
-o sw.SwXStyleFamilies
-o sw.SwXStyleFamily
--o sw.SwXTableCellText
+#i111185 -o sw.SwXTableCellText
-o sw.SwXTableColumns
-o sw.SwXTableRows
-o sw.SwXTextColumns
-o sw.SwXTextCursor
#i89021 -o sw.SwXTextDefaults
--o sw.SwXTextDocument
+#i111185 -o sw.SwXTextDocument
-o sw.SwXTextEmbeddedObject
-o sw.SwXTextEmbeddedObjects
-o sw.SwXTextField
-o sw.SwXTextFieldMasters
-o sw.SwXTextFieldTypes
-o sw.SwXTextFrame
--o sw.SwXTextFrameText
+#i111185 -o sw.SwXTextFrameText
-o sw.SwXTextGraphicObject
-o sw.SwXTextGraphicObjects
#i103696 -o sw.SwXTextPortion
@@ -83,7 +83,7 @@
-o sw.SwXViewSettings
-o sw.XMLContentExporter
#i23394 -o sw.XMLContentImporter
--o sw.XMLExporter
+#i111194-o sw.XMLExporter
-o sw.XMLImporter
#i23394 -o sw.XMLMetaExporter
-o sw.XMLMetaImporter
diff --git a/sw/sdi/_textsh.sdi b/sw/sdi/_textsh.sdi
index 589ecf9e5939..e264aec28c28 100644
--- a/sw/sdi/_textsh.sdi
+++ b/sw/sdi/_textsh.sdi
@@ -472,6 +472,11 @@ interface BaseText
//
// Goto - Methoden
//
+ SID_FM_TOGGLECONTROLFOCUS
+ [
+ ExecMethod = ExecMoveMisc ;
+ StateMethod = NoState ;
+ ]
FN_CNTNT_TO_NEXT_FRAME // status(final|play)
[
ExecMethod = ExecMoveMisc ;
@@ -1480,6 +1485,24 @@ interface BaseText
DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
]
+ SID_TRANSLITERATE_SENTENCE_CASE
+ [
+ ExecMethod = ExecTransliteration;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_TRANSLITERATE_TITLE_CASE
+ [
+ ExecMethod = ExecTransliteration;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_TRANSLITERATE_TOGGLE_CASE
+ [
+ ExecMethod = ExecTransliteration;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
SID_TRANSLITERATE_UPPER
[
ExecMethod = ExecTransliteration;
@@ -1580,6 +1603,12 @@ interface BaseText
DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR"; // e.g. disable for read-only documents
]
+ SID_THES
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR"; // e.g. disable for read-only documents
+ ]
} //ende interface text
diff --git a/sw/sdi/_viewsh.sdi b/sw/sdi/_viewsh.sdi
index b45e4a305328..ee5fc431e165 100644
--- a/sw/sdi/_viewsh.sdi
+++ b/sw/sdi/_viewsh.sdi
@@ -398,7 +398,7 @@ interface BaseTextEditView
ExecMethod = Execute ;
StateMethod = GetState ;
]
- FN_THESAURUS_DLG // status(final|play)
+ SID_THESAURUS // status(final|play)
[
ExecMethod = ExecLingu ;
StateMethod = GetState ;
diff --git a/sw/sdi/annotsh.sdi b/sw/sdi/annotsh.sdi
index 441beec686c6..349e17b9d985 100755
--- a/sw/sdi/annotsh.sdi
+++ b/sw/sdi/annotsh.sdi
@@ -31,7 +31,7 @@ interface Annotation : _Annotation
]
{
- FN_THESAURUS_DLG // api:
+ SID_THESAURUS // api:
[
ExecMethod = ExecLingu ;
StateMethod = GetLinguState ;
@@ -178,6 +178,27 @@ interface Annotation : _Annotation
DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
]
+ SID_TRANSLITERATE_SENTENCE_CASE
+ [
+ ExecMethod = ExecTransliteration;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_TRANSLITERATE_TITLE_CASE
+ [
+ ExecMethod = ExecTransliteration;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
+ SID_TRANSLITERATE_TOGGLE_CASE
+ [
+ ExecMethod = ExecTransliteration;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+
SID_TRANSLITERATE_UPPER
[
ExecMethod = ExecTransliteration;
@@ -344,6 +365,13 @@ interface Annotation : _Annotation
DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
]
+ SID_THES
+ [
+ ExecMethod = ExecLingu ;
+ StateMethod = GetLinguState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR"; // e.g. disable for read-only documents
+ ]
+
}
shell SwAnnotationShell
diff --git a/sw/sdi/drwtxtsh.sdi b/sw/sdi/drwtxtsh.sdi
index 6887346ee012..d98d368a9460 100644
--- a/sw/sdi/drwtxtsh.sdi
+++ b/sw/sdi/drwtxtsh.sdi
@@ -424,7 +424,7 @@ interface TextDrawText
DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
]
- FN_THESAURUS_DLG // api:
+ SID_THESAURUS // api:
[
ExecMethod = ExecDrawLingu ;
StateMethod = GetState ;
@@ -478,6 +478,24 @@ interface TextDrawText
[
StateMethod = StateInsert ;
]
+ SID_TRANSLITERATE_SENTENCE_CASE
+ [
+ ExecMethod = ExecTransliteration;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_TRANSLITERATE_TITLE_CASE
+ [
+ ExecMethod = ExecTransliteration;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
+ SID_TRANSLITERATE_TOGGLE_CASE
+ [
+ ExecMethod = ExecTransliteration;
+ StateMethod = NoState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
SID_TRANSLITERATE_UPPER
[
ExecMethod = ExecTransliteration;
@@ -514,6 +532,7 @@ interface TextDrawText
StateMethod = GetState ;
DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
]
+
SID_LANGUAGE_STATUS
[
ExecMethod = Execute;
@@ -521,6 +540,13 @@ interface TextDrawText
DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR"; // e.g. disable for read-only documents
]
+ SID_THES
+ [
+ ExecMethod = Execute;
+ StateMethod = GetState;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR"; // e.g. disable for read-only documents
+ ]
+
FN_FORMAT_FOOTNOTE_DLG // status()
[
ExecMethod = Execute ;
diff --git a/sw/sdi/swriter.sdi b/sw/sdi/swriter.sdi
index aede24688e1e..aae7ec7a019c 100644..100755
--- a/sw/sdi/swriter.sdi
+++ b/sw/sdi/swriter.sdi
@@ -6623,7 +6623,7 @@ SfxBoolItem ProtectTraceChangeMode FN_REDLINE_PROTECT
FastCall = FALSE,
HasCoreId = FALSE,
HasDialog = FALSE,
- ReadOnlyDoc = TRUE,
+ ReadOnlyDoc = FALSE,
Toggle = FALSE,
Container = FALSE,
RecordAbsolute = FALSE,
@@ -8319,31 +8319,6 @@ SfxVoidItem TextWrap FN_DRAW_WRAP_DLG
]
//--------------------------------------------------------------------------
-SfxVoidItem ThesaurusDialog FN_THESAURUS_DLG
-()
-[
- /* flags: */
- AutoUpdate = FALSE,
- Cachable = Cachable,
- FastCall = FALSE,
- HasCoreId = FALSE,
- HasDialog = TRUE,
- ReadOnlyDoc = FALSE,
- Toggle = FALSE,
- Container = FALSE,
- RecordAbsolute = FALSE,
- RecordPerSet;
- Asynchron;
-
- /* config: */
- AccelConfig = TRUE,
- MenuConfig = TRUE,
- StatusBarConfig = FALSE,
- ToolBoxConfig = TRUE,
- GroupId = GID_OPTIONS;
-]
-
-//--------------------------------------------------------------------------
SfxVoidItem ToggleAnchorType FN_TOOL_ANKER
()
[
diff --git a/sw/sdi/swslots.src b/sw/sdi/swslots.src
deleted file mode 100644
index 030fdee2a157..000000000000
--- a/sw/sdi/swslots.src
+++ /dev/null
@@ -1,1488 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * 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.
- *
- ************************************************************************/
-#include "cmdid.h"
-#include "svx/svxids.hrc"
-#include "globals.hrc"
-SfxSlotInfo FN_ABSTRACT_NEWDOC
-{
- Slotname [ en-US ] = "Document From Abstract";
-};
-SfxSlotInfo FN_ABSTRACT_STARIMPRESS
-{
- Slotname [ en-US ] = "Presentation from Abstract";
-};
-SfxSlotInfo FN_ADD_UNKNOWN
-{
- Slotname [ en-US ] = "Add Unknown Words";
-};
-SfxSlotInfo FN_AUTO_CORRECT
-{
- Slotname [ en-US ] = "AutoCorrect";
-};
-SfxSlotInfo FN_AUTOFORMAT_APPLY
-{
- Slotname [ en-US ] = "Apply AutoFormat Options";
-};
-SfxSlotInfo FN_AUTOFORMAT_AUTO
-{
- Slotname [ en-US ] = "AutoFormat While Typing";
-};
-SfxSlotInfo FN_AUTOFORMAT_REDLINE_APPLY
-{
- Slotname [ en-US ] = "Apply AutoFormat Options and confirm Changes";
-};
-SfxSlotInfo FN_BACKSPACE
-{
- Slotname [ en-US ] = "Backspace";
-};
-SfxSlotInfo FN_CALC_TABLE
-{
- Slotname [ en-US ] = "Calculate Table";
-};
-SfxSlotInfo FN_CALCULATE
-{
- Slotname [ en-US ] = "Calculate Selection";
-};
-SfxSlotInfo FN_CHANGE_DBFIELD
-{
- Slotname [ en-US ] = "Change Database";
-};
-SfxSlotInfo FN_CHANGE_PAGENUM
-{
- Slotname [ en-US ] = "Page Number";
-};
-SfxSlotInfo FN_CHAR_LEFT
-{
- Slotname [ en-US ] = "To Character Left";
-};
-SfxSlotInfo FN_CHAR_LEFT_SEL
-{
- Slotname [ en-US ] = "Select Character Left";
-};
-SfxSlotInfo FN_CHAR_RIGHT
-{
- Slotname [ en-US ] = "Go Right";
-};
-SfxSlotInfo FN_CHAR_RIGHT_SEL
-{
- Slotname [ en-US ] = "Select Character Right";
-};
-SfxSlotInfo FN_CNTNT_TO_NEXT_FRAME
-{
- Slotname [ en-US ] = "To Next Frame";
-};
-SfxSlotInfo FN_CONVERT_TEXT_TABLE
-{
- Slotname [ en-US ] = "Convert Table/Text";
-};
-SfxSlotInfo FN_DEC_INDENT_OFFSET
-{
- Slotname [ en-US ] = "Decrement Indent Value";
-};
-SfxSlotInfo FN_DELETE_BACK_LINE
-{
- Slotname [ en-US ] = "Delete to Start of Line";
-};
-SfxSlotInfo FN_DELETE_BACK_PARA
-{
- Slotname [ en-US ] = "Delete to Start of Paragraph";
-};
-SfxSlotInfo FN_DELETE_BACK_SENT
-{
- Slotname [ en-US ] = "Delete to Start of Sentence";
-};
-SfxSlotInfo FN_DELETE_BACK_WORD
-{
- Slotname [ en-US ] = "Delete to Start of Word";
-};
-SfxSlotInfo FN_DELETE_LINE
-{
- Slotname [ en-US ] = "Delete to End of Line";
-};
-SfxSlotInfo FN_DELETE_PARA
-{
- Slotname [ en-US ] = "Delete to End of Paragraph";
-};
-SfxSlotInfo FN_DELETE_SENT
-{
- Slotname [ en-US ] = "Delete to End of Sentence";
-};
-SfxSlotInfo FN_DELETE_WHOLE_LINE
-{
- Slotname [ en-US ] = "Delete Row";
-};
-SfxSlotInfo FN_DELETE_WORD
-{
- Slotname [ en-US ] = "Delete to End of Word";
-};
-SfxSlotInfo FN_DRAW_WRAP_DLG
-{
- Slotname [ en-US ] = "Text Wrap";
-};
-SfxSlotInfo FN_DRAWTEXT_ATTR_DLG
-{
- Slotname [ en-US ] = "Text Attributes";
-};
-SfxSlotInfo FN_EDIT_FIELD
-{
- Slotname [ en-US ] = "Fields";
-};
-SfxSlotInfo FN_EDIT_FOOTNOTE
-{
- Slotname [ en-US ] = "Footnote";
-};
-SfxSlotInfo FN_EDIT_FORMULA
-{
- Slotname [ en-US ] = "Formula Bar";
-};
-SfxSlotInfo FN_EDIT_IDX_ENTRY_DLG
-{
- Slotname [ en-US ] = "Index Entry";
-};
-SfxSlotInfo FN_EDIT_LINK_DLG
-{
- Slotname [ en-US ] = "Links";
-};
-SfxSlotInfo FN_EDIT_REGION
-{
- Slotname [ en-US ] = "Sections";
-};
-SfxSlotInfo FN_END_DOC_DIRECT
-{
- Slotname [ en-US ] = "Directly to Document End";
-};
-SfxSlotInfo FN_END_OF_COLUMN
-{
- Slotname [ en-US ] = "To Column End";
-};
-SfxSlotInfo FN_END_OF_DOCUMENT
-{
- Slotname [ en-US ] = "To Document End";
-};
-SfxSlotInfo FN_END_OF_DOCUMENT_SEL
-{
- Slotname [ en-US ] = "Select to Document End";
-};
-SfxSlotInfo FN_END_OF_LINE
-{
- Slotname [ en-US ] = "To End of Line";
-};
-SfxSlotInfo FN_END_OF_LINE_SEL
-{
- Slotname [ en-US ] = "Select to End of Line";
-};
-SfxSlotInfo FN_END_OF_NEXT_COLUMN
-{
- Slotname [ en-US ] = "To End of Next Column";
-};
-SfxSlotInfo FN_END_OF_NEXT_PAGE
-{
- Slotname [ en-US ] = "To End of Next Page";
-};
-SfxSlotInfo FN_END_OF_NEXT_PAGE_SEL
-{
- Slotname [ en-US ] = "Select to End of Next Page";
-};
-SfxSlotInfo FN_END_OF_PAGE
-{
- Slotname [ en-US ] = "To Page End";
-};
-SfxSlotInfo FN_END_OF_PAGE_SEL
-{
- Slotname [ en-US ] = "Select to Page End";
-};
-SfxSlotInfo FN_END_OF_PARA
-{
- Slotname [ en-US ] = "To Paragraph End";
-};
-SfxSlotInfo FN_END_OF_PARA_SEL
-{
- Slotname [ en-US ] = "Select to Paragraph End";
-};
-SfxSlotInfo FN_END_OF_PREV_COLUMN
-{
- Slotname [ en-US ] = "To Previous Column";
-};
-SfxSlotInfo FN_END_OF_PREV_PAGE
-{
- Slotname [ en-US ] = "To End of Previous Page";
-};
-SfxSlotInfo FN_END_OF_PREV_PAGE_SEL
-{
- Slotname [ en-US ] = "Select to End of Previous Page";
-};
-SfxSlotInfo FN_END_TABLE
-{
- Slotname [ en-US ] = "To Table End";
-};
-SfxSlotInfo FN_ENVELOP
-{
- Slotname [ en-US ] = "Insert Envelope";
-};
-SfxSlotInfo FN_ESCAPE
-{
- Slotname [ en-US ] = "Cancel";
-};
-SfxSlotInfo FN_EXECUTE_MACROFIELD
-{
- Slotname [ en-US ] = "Run Macro Field";
-};
-SfxSlotInfo FN_EXPAND_GLOSSARY
-{
- Slotname [ en-US ] = "Run AutoText Entry";
-};
-SfxSlotInfo FN_FLIP_HORZ_GRAFIC
-{
- Slotname [ en-US ] = "Flip Vertically";
-};
-SfxSlotInfo FN_FLIP_VERT_GRAFIC
-{
- Slotname [ en-US ] = "Flip Horizontally";
-};
-SfxSlotInfo FN_FOOTNOTE_TO_ANCHOR
-{
- Slotname [ en-US ] = "To Footnote Anchor";
-};
-SfxSlotInfo FN_FORMAT_BACKGROUND_DLG
-{
- Slotname [ en-US ] = "Background";
-};
-SfxSlotInfo FN_FORMAT_BORDER_DLG
-{
- Slotname [ en-US ] = "Borders";
-};
-SfxSlotInfo FN_FORMAT_DROPCAPS
-{
- Slotname [ en-US ] = "Drop Caps";
-};
-SfxSlotInfo FN_FORMAT_FOOTNOTE_DLG
-{
- Slotname [ en-US ] = "Footnotes";
-};
-SfxSlotInfo FN_FORMAT_FRAME_DLG
-{
- Slotname [ en-US ] = "Frame Properties";
-};
-SfxSlotInfo FN_FORMAT_GRAFIC_DLG
-{
- Slotname [ en-US ] = "Edit Graphics";
-};
-SfxSlotInfo FN_FORMAT_PAGE_COLUMN_DLG
-{
- Slotname [ en-US ] = "Page Columns";
-};
-SfxSlotInfo FN_FORMAT_PAGE_DLG
-{
- Slotname [ en-US ] = "Page Settings";
-};
-SfxSlotInfo FN_FORMAT_RESET
-{
- Slotname [ en-US ] = "Reset Font Attributes";
-};
-SfxSlotInfo FN_FORMAT_TABLE_DLG
-{
- Slotname [ en-US ] = "Edit Table";
-};
-SfxSlotInfo FN_FRAME_ALIGN_HORZ_CENTER
-{
- Slotname [ en-US ] = "Center Horizontal";
-};
-SfxSlotInfo FN_FRAME_ALIGN_HORZ_LEFT
-{
- Slotname [ en-US ] = "Align Left";
-};
-SfxSlotInfo FN_FRAME_ALIGN_HORZ_RIGHT
-{
- Slotname [ en-US ] = "Align Right";
-};
-SfxSlotInfo FN_FRAME_ALIGN_VERT_BOTTOM
-{
- Slotname [ en-US ] = "Align Bottom";
-};
-SfxSlotInfo FN_FRAME_ALIGN_VERT_CENTER
-{
- Slotname [ en-US ] = "Align Vertical Center";
-};
-SfxSlotInfo FN_FRAME_ALIGN_VERT_CHAR_BOTTOM
-{
- Slotname [ en-US ] = "Align to Bottom of Character";
-};
-SfxSlotInfo FN_FRAME_ALIGN_VERT_CHAR_CENTER
-{
- Slotname [ en-US ] = "Align to Vertical Center of Character";
-};
-SfxSlotInfo FN_FRAME_ALIGN_VERT_CHAR_TOP
-{
- Slotname [ en-US ] = "Align to Top of Character";
-};
-SfxSlotInfo FN_FRAME_ALIGN_VERT_ROW_BOTTOM
-{
- Slotname [ en-US ] = "Align to Bottom of Line";
-};
-SfxSlotInfo FN_FRAME_ALIGN_VERT_ROW_CENTER
-{
- Slotname [ en-US ] = "Align to Vertical Center of Line";
-};
-SfxSlotInfo FN_FRAME_ALIGN_VERT_ROW_TOP
-{
- Slotname [ en-US ] = "Align to Top of Line";
-};
-SfxSlotInfo FN_FRAME_ALIGN_VERT_TOP
-{
- Slotname [ en-US ] = "Align Top";
-};
-SfxSlotInfo FN_FRAME_CHAIN
-{
- Slotname [ en-US ] = "Link Frames";
-};
-SfxSlotInfo FN_FRAME_DOWN
-{
- Slotname [ en-US ] = "Send Backward";
-};
-SfxSlotInfo FN_FRAME_MIRROR_ON_EVEN_PAGES
-{
- Slotname [ en-US ] = "Mirror Object on Even Pages";
-};
-SfxSlotInfo FN_FRAME_NOWRAP
-{
- Slotname [ en-US ] = "Wrap Off";
-};
-SfxSlotInfo FN_FRAME_TO_ANCHOR
-{
- Slotname [ en-US ] = "Set Cursor To Anchor";
-};
-SfxSlotInfo FN_FRAME_UNCHAIN
-{
- Slotname [ en-US ] = "Unlink Frames";
-};
-SfxSlotInfo FN_FRAME_UP
-{
- Slotname [ en-US ] = "Bring Forward";
-};
-SfxSlotInfo FN_FRAME_WRAP
-{
- Slotname [ en-US ] = "Wrap On";
-};
-SfxSlotInfo FN_FRAME_WRAP_CONTOUR
-{
- Slotname [ en-US ] = "Wrap Contour On";
-};
-SfxSlotInfo FN_FRAME_WRAP_IDEAL
-{
- Slotname [ en-US ] = "Wrap Optimal";
-};
-SfxSlotInfo FN_FRAME_WRAP_LEFT
-{
- Slotname [ en-US ] = "Wrap Left";
-};
-SfxSlotInfo FN_FRAME_WRAP_RIGHT
-{
- Slotname [ en-US ] = "Wrap Right";
-};
-SfxSlotInfo FN_FRAME_WRAPTHRU
-{
- Slotname [ en-US ] = "Wrap Through";
-};
-SfxSlotInfo FN_FRAME_WRAPTHRU_TRANSP
-{
- Slotname [ en-US ] = "Wrap Transparent";
-};
-SfxSlotInfo FN_GLOSSARY_DLG
-{
- Slotname [ en-US ] = "Edit AutoText";
-};
-SfxSlotInfo FN_GOTO_NEXT_INPUTFLD
-{
- Slotname [ en-US ] = "To Next Input Field";
-};
-SfxSlotInfo FN_GOTO_NEXT_MARK
-{
- Slotname [ en-US ] = "To Next Placeholder";
-};
-SfxSlotInfo FN_GOTO_NEXT_OBJ
-{
- Slotname [ en-US ] = "To Next Object";
-};
-SfxSlotInfo FN_GOTO_NEXT_REGION
-{
- Slotname [ en-US ] = "To Next Section";
-};
-SfxSlotInfo FN_GOTO_PREV_INPUTFLD
-{
- Slotname [ en-US ] = "To Previous Input Field";
-};
-SfxSlotInfo FN_GOTO_PREV_MARK
-{
- Slotname [ en-US ] = "To Previous Placeholder";
-};
-SfxSlotInfo FN_GOTO_PREV_OBJ
-{
- Slotname [ en-US ] = "To Previous Object";
-};
-SfxSlotInfo FN_GOTO_PREV_REGION
-{
- Slotname [ en-US ] = "To Previous Section";
-};
-SfxSlotInfo FN_GOTO_REFERENCE
-{
- Slotname [ en-US ] = "To Reference";
-};
-SfxSlotInfo FN_GRAPHIC_MIRROR_ON_EVEN_PAGES
-{
- Slotname [ en-US ] = "Flip Graphics on Even Pages";
-};
-SfxSlotInfo FN_GROW_FONT_SIZE
-{
- Slotname [ en-US ] = "Increase Font";
-};
-SfxSlotInfo FN_HSCROLLBAR
-{
- Slotname [ en-US ] = "Scroll Horizontal";
-};
-SfxSlotInfo FN_HYPHENATE_OPT_DLG
-{
- Slotname [ en-US ] = "Hyphenation";
-};
-SfxSlotInfo FN_IDX_MARK_TO_IDX
-{
- Slotname [ en-US ] = "Index Mark to Index";
-};
-SfxSlotInfo FN_INC_INDENT_OFFSET
-{
- Slotname [ en-US ] = "Increment Indent Value";
-};
-SfxSlotInfo FN_INSERT_BOOKMARK
-{
- Slotname [ en-US ] = "Insert Bookmark";
-};
-SfxSlotInfo FN_INSERT_BREAK
-{
- Slotname [ en-US ] = "Insert Paragraph";
-};
-SfxSlotInfo FN_INSERT_BREAK_DLG
-{
- Slotname [ en-US ] = "Insert Manual Break";
-};
-SfxSlotInfo FN_INSERT_CAPTION
-{
- Slotname [ en-US ] = "Insert Caption";
-};
-SfxSlotInfo FN_INSERT_COLUMN_BREAK
-{
- Slotname [ en-US ] = "Insert Column Break";
-};
-SfxSlotInfo FN_INSERT_CTRL
-{
- Slotname [ en-US ] = "Insert";
-};
-SfxSlotInfo FN_INSERT_ENDNOTE
-{
- Slotname [ en-US ] = "Insert Endnote Directly";
-};
-SfxSlotInfo FN_INSERT_FIELD
-{
- Slotname [ en-US ] = "Fields Dialog";
-};
-SfxSlotInfo FN_INSERT_FIELD_CTRL
-{
- Slotname [ en-US ] = "Insert Fields";
-};
-SfxSlotInfo FN_INSERT_FLD_AUTHOR
-{
- Slotname [ en-US ] = "Insert Author Field";
-};
-SfxSlotInfo FN_INSERT_FLD_DATE
-{
- Slotname [ en-US ] = "Insert Date";
-};
-SfxSlotInfo FN_INSERT_FLD_PGCOUNT
-{
- Slotname [ en-US ] = "Insert Page Count";
-};
-SfxSlotInfo FN_INSERT_FLD_PGNUMBER
-{
- Slotname [ en-US ] = "Insert Page Number";
-};
-SfxSlotInfo FN_INSERT_FLD_TIME
-{
- Slotname [ en-US ] = "Insert Time";
-};
-SfxSlotInfo FN_INSERT_FLD_TITLE
-{
- Slotname [ en-US ] = "Insert Document Title";
-};
-SfxSlotInfo FN_INSERT_FLD_TOPIC
-{
- Slotname [ en-US ] = "Insert Subject";
-};
-SfxSlotInfo FN_INSERT_FOOTNOTE
-{
- Slotname [ en-US ] = "Insert Footnote Directly";
-};
-SfxSlotInfo FN_INSERT_FOOTNOTE_DLG
-{
- Slotname [ en-US ] = "Insert Footnote";
-};
-SfxSlotInfo FN_INSERT_FRAME
-{
- Slotname [ en-US ] = "Insert Frame";
-};
-SfxSlotInfo FN_INSERT_FRAME_INTERACT_NOCOL
-{
- Slotname [ en-US ] = "Insert single-column frame manually";
-};
-SfxSlotInfo FN_INSERT_FRAME_INTERACT
-{
- Slotname [ en-US ] = "Insert Frame Manually";
-};
-SfxSlotInfo FN_INSERT_HARD_SPACE
-{
- Slotname [ en-US ] = "Insert Non-breaking Space";
-};
-SfxSlotInfo FN_INSERT_HARDHYPHEN
-{
- Slotname [ en-US ] = "Insert Non-breaking Hyphen";
-};
-SfxSlotInfo FN_INSERT_HRULER
-{
- Slotname [ en-US ] = "Insert Horizontal Ruler";
-};
-SfxSlotInfo FN_INSERT_HYPERLINK
-{
- Slotname [ en-US ] = "Insert Hyperlink";
-};
-SfxSlotInfo FN_INSERT_IDX_ENTRY_DLG
-{
- Slotname [ en-US ] = "Insert Index Marker";
-};
-SfxSlotInfo FN_INSERT_LINEBREAK
-{
- Slotname [ en-US ] = "Insert Manual Row Break";
-};
-SfxSlotInfo FN_INSERT_OBJ_CTRL
-{
- Slotname [ en-US ] = "Insert Object";
-};
-SfxSlotInfo FN_INSERT_OBJECT_DLG
-{
- Slotname [ en-US ] = "Insert Other Objects";
-};
-SfxSlotInfo FN_INSERT_PAGEBREAK
-{
- Slotname [ en-US ] = "Insert Manual Page Break";
-};
-SfxSlotInfo FN_INSERT_PAGEFOOTER
-{
- Slotname [ en-US ] = "Insert Footer";
-};
-SfxSlotInfo FN_INSERT_PAGEHEADER
-{
- Slotname [ en-US ] = "Insert Header";
-};
-SfxSlotInfo FN_INSERT_REF_FIELD
-{
- Slotname [ en-US ] = "Insert Field Reference";
-};
-SfxSlotInfo FN_INSERT_REGION
-{
- Slotname [ en-US ] = "Insert Section";
-};
-SfxSlotInfo FN_INSERT_SMA
-{
- Slotname [ en-US ] = "Insert %PRODUCTNAME Math object";
-};
-SfxSlotInfo FN_INSERT_SOFT_HYPHEN
-{
- Slotname [ en-US ] = "Insert Optional Hyphen";
-};
-SfxSlotInfo FN_INSERT_SYMBOL
-{
- Slotname [ en-US ] = "Insert Special Character ";
-};
-SfxSlotInfo FN_INSERT_TABLE
-{
- Slotname [ en-US ] = "Insert Table";
-};
-SfxSlotInfo FN_JAVAEDIT
-{
- Slotname [ en-US ] = "Insert Script";
-};
-SfxSlotInfo FN_LABEL
-{
- Slotname [ en-US ] = "Insert Labels";
-};
-SfxSlotInfo FN_BUSINESS_CARD
-{
- Slotname [ en-US ] = "Insert business cards";
-};
-SfxSlotInfo FN_LINE_DOWN
-{
- Slotname [ en-US ] = "To Line Below";
-};
-SfxSlotInfo FN_LINE_DOWN_SEL
-{
- Slotname [ en-US ] = "Select Down";
-};
-SfxSlotInfo FN_LINE_NUMBERING_DLG
-{
- Slotname [ en-US ] = "Set Line Numbering";
-};
-SfxSlotInfo FN_LINE_UP
-{
- Slotname [ en-US ] = "To Top Line";
-};
-SfxSlotInfo FN_LINE_UP_SEL
-{
- Slotname [ en-US ] = "Select to Top Line";
-};
-SfxSlotInfo FN_NAVIGATION_PI_GOTO_PAGE
-{
- Slotname [ en-US ] = "To Page";
-};
-SfxSlotInfo FN_NEW_GLOBAL_DOC
-{
- Slotname [ en-US ] = "Create Master Document";
-};
-SfxSlotInfo FN_NEW_HTML_DOC
-{
- Slotname [ en-US ] = "Create HTML Document";
-};
-SfxSlotInfo FN_NEXT_BOOKMARK
-{
- Slotname [ en-US ] = "To Next Bookmark";
-};
-SfxSlotInfo FN_NEXT_FOOTNOTE
-{
- Slotname [ en-US ] = "To Next Footnote";
-};
-SfxSlotInfo FN_NEXT_PARA
-{
- Slotname [ en-US ] = "To Next Paragraph";
-};
-SfxSlotInfo FN_NEXT_SENT
-{
- Slotname [ en-US ] = "To Next Sentence";
-};
-SfxSlotInfo FN_NEXT_SENT_SEL
-{
- Slotname [ en-US ] = "Select to Next Sentence";
-};
-SfxSlotInfo FN_NEXT_TABLE
-{
- Slotname [ en-US ] = "To Next Table";
-};
-SfxSlotInfo FN_NEXT_TBLFML
-{
- Slotname [ en-US ] = "Go to next table formula";
-};
-SfxSlotInfo FN_NEXT_TBLFML_ERR
-{
- Slotname [ en-US ] = "Go to next faulty table formula";
-};
-SfxSlotInfo FN_NEXT_TOXMARK
-{
- Slotname [ en-US ] = "Go to Next Index Mark";
-};
-SfxSlotInfo FN_NEXT_WORD
-{
- Slotname [ en-US ] = "To Word Right";
-};
-SfxSlotInfo FN_NEXT_WORD_SEL
-{
- Slotname [ en-US ] = "Select to Word Right";
-};
-SfxSlotInfo FN_NUM_BULLET_DOWN
-{
- Slotname [ en-US ] = "Down One Level";
-};
-SfxSlotInfo FN_NUM_BULLET_MOVEDOWN
-{
- Slotname [ en-US ] = "Move Down";
-};
-SfxSlotInfo FN_NUM_BULLET_MOVEUP
-{
- Slotname [ en-US ] = "Move Up";
-};
-SfxSlotInfo FN_NUM_BULLET_NEXT
-{
- Slotname [ en-US ] = "To Next Paragraph in Level";
-};
-SfxSlotInfo FN_NUM_BULLET_NONUM
-{
- Slotname [ en-US ] = "Insert Unnumbered Entry";
-};
-SfxSlotInfo FN_NUM_BULLET_OFF
-{
- Slotname [ en-US ] = "Numbering Off";
-};
-SfxSlotInfo FN_NUM_BULLET_OUTLINE_DOWN
-{
- Slotname [ en-US ] = "Move Down with Subpoints";
-};
-SfxSlotInfo FN_NUM_BULLET_OUTLINE_MOVEDOWN
-{
- Slotname [ en-US ] = "Move Down with Subpoints";
-};
-SfxSlotInfo FN_NUM_BULLET_OUTLINE_MOVEUP
-{
- Slotname [ en-US ] = "Move Up with Subpoints";
-};
-SfxSlotInfo FN_NUM_BULLET_OUTLINE_UP
-{
- Slotname [ en-US ] = "Move Up with Subpoints";
-};
-SfxSlotInfo FN_NUM_BULLET_PREV
-{
- Slotname [ en-US ] = "To Previous Paragraph in Level";
-};
-SfxSlotInfo FN_NUM_BULLET_UP
-{
- Slotname [ en-US ] = "Up One Level";
-};
-SfxSlotInfo FN_NUM_FORMAT_TABLE_DLG
-{
- Slotname [ en-US ] = "Edit Number Format";
-};
-SfxSlotInfo FN_NUM_OR_NONUM
-{
- Slotname [ en-US ] = "Numbering On/Off";
-};
-SfxSlotInfo FN_NUMBER_BULLETS
-{
- Slotname [ en-US ] = "Edit Numbering";
-};
-SfxSlotInfo FN_NUMBER_CURRENCY
-{
- Slotname [ en-US ] = "Number Format: Currency";
-};
-SfxSlotInfo FN_NUMBER_DATE
-{
- Slotname [ en-US ] = "Number Format : Date";
-};
-SfxSlotInfo FN_NUMBER_NEWSTART
-{
- Slotname [ en-US ] = "Restart Numbering";
-};
-SfxSlotInfo FN_NUMBER_PERCENT
-{
- Slotname [ en-US ] = "Number Format: Percent";
-};
-SfxSlotInfo FN_NUMBER_SCIENTIFIC
-{
- Slotname [ en-US ] = "Number Format: Exponential";
-};
-SfxSlotInfo FN_NUMBER_STANDARD
-{
- Slotname [ en-US ] = "Number Format: Standard";
-};
-SfxSlotInfo FN_NUMBER_TIME
-{
- Slotname [ en-US ] = "Number Format: Time";
-};
-SfxSlotInfo FN_NUMBER_TWODEC
-{
- Slotname [ en-US ] = "Number Format: Decimal";
-};
-SfxSlotInfo FN_NUMBERING_OUTLINE_DLG
-{
- Slotname [ en-US ] = "Outline Numbering";
-};
-SfxSlotInfo FN_OPTIMIZE_TABLE
-{
- Slotname [ en-US ] = "Optimize";
-};
-SfxSlotInfo FN_OUTLINE_TO_CLIPBOARD
-{
- Slotname [ en-US ] = "Outline to Clipboard";
-};
-SfxSlotInfo FN_OUTLINE_TO_IMPRESS
-{
- Slotname [ en-US ] = "Outline to Presentation";
-};
-SfxSlotInfo FN_PAGE_STYLE_SET_COLS
-{
- Slotname [ en-US ] = "Page Style: Columns";
-};
-SfxSlotInfo FN_PAGEDOWN
-{
- Slotname [ en-US ] = "Next Page";
-};
-SfxSlotInfo FN_PAGEDOWN_SEL
-{
- Slotname [ en-US ] = "Select to Next Page";
-};
-SfxSlotInfo FN_PAGEUP
-{
- Slotname [ en-US ] = "Previous Page";
-};
-SfxSlotInfo FN_PAGEUP_SEL
-{
- Slotname [ en-US ] = "Select to Previous Page";
-};
-SfxSlotInfo FN_PASTESPECIAL
-{
- Slotname [ en-US ] = "Paste Special";
-};
-SfxSlotInfo FN_PASTEUNFORMATTED
-{
- Slotname [ en-US ] = "Paste Unformatted Text";
-};
-SfxSlotInfo FN_POSTIT
-{
- Slotname [ en-US ] = "Insert Note";
-};
-SfxSlotInfo FN_PREV_BOOKMARK
-{
- Slotname [ en-US ] = "To Previous Bookmark";
-};
-SfxSlotInfo FN_PREV_FOOTNOTE
-{
- Slotname [ en-US ] = "To Previous Footnote";
-};
-SfxSlotInfo FN_PREV_PARA
-{
- Slotname [ en-US ] = "To Previous Paragraph";
-};
-SfxSlotInfo FN_PREV_SENT
-{
- Slotname [ en-US ] = "To Previous Sentence";
-};
-SfxSlotInfo FN_PREV_SENT_SEL
-{
- Slotname [ en-US ] = "Select to Previous Sentence";
-};
-SfxSlotInfo FN_PREV_TABLE
-{
- Slotname [ en-US ] = "To Previous Table";
-};
-SfxSlotInfo FN_PREV_TBLFML
-{
- Slotname [ en-US ] = "Go to previous table formula";
-};
-SfxSlotInfo FN_PREV_TBLFML_ERR
-{
- Slotname [ en-US ] = "Go to previous faulty table formula";
-};
-SfxSlotInfo FN_PREV_TOXMARK
-{
- Slotname [ en-US ] = "Go to Previous Index Mark";
-};
-SfxSlotInfo FN_PREV_WORD
-{
- Slotname [ en-US ] = "To Word Left";
-};
-SfxSlotInfo FN_PREV_WORD_SEL
-{
- Slotname [ en-US ] = "Select to Begin of Word";
-};
-SfxSlotInfo FN_PREVIEW_ZOOM
-{
- Slotname [ en-US ] = "Preview Zoom";
-};
-SfxSlotInfo FN_PRINT_LAYOUT
-{
- Slotname [ en-US ] = "Print Layout On/Off";
-};
-SfxSlotInfo FN_PRINT_PAGEPREVIEW
-{
- Slotname [ en-US ] = "Print document";
-};
-SfxSlotInfo FN_MAILMERGE_WIZARD
-{
- SlotName[ en-US ] = "Mail Merge Wizard";
-};
-SfxSlotInfo FN_QRY_MERGE
-{
- Slotname [ en-US ] = "Prepare Mail Merge";
-};
-SfxSlotInfo FN_REDLINE_ACCEPT
-{
- Slotname [ en-US ] = "Accept or Reject Changes";
-};
-SfxSlotInfo FN_REDLINE_COMMENT
-{
- Slotname [ en-US ] = "Insert Comment";
-};
-SfxSlotInfo FN_REDLINE_ON
-{
- Slotname [ en-US ] = "Switch on Review";
-};
-SfxSlotInfo FN_REDLINE_PROTECT
-{
- Slotname [ en-US ] = "Protect Record of Changes";
-};
-SfxSlotInfo FN_REDLINE_SHOW
-{
- Slotname [ en-US ] = "Highlight Changes";
-};
-SfxSlotInfo FN_REFRESH_VIEW
-{
- Slotname [ en-US ] = "Restore View";
-};
-SfxSlotInfo FN_REPAGINATE
-{
- Slotname [ en-US ] = "Repaginate";
-};
-SfxSlotInfo FN_REPEAT_SEARCH
-{
- Slotname [ en-US ] = "Repeat Search";
-};
-SfxSlotInfo FN_RULER
-{
- Slotname [ en-US ] = "Ruler On/Off";
-};
-SfxSlotInfo FN_SELECT_PARA
-{
- Slotname [ en-US ] = "Select Paragraph";
-};
-SfxSlotInfo FN_SELECT_WORD
-{
- Slotname [ en-US ] = "Select Word";
-};
-SfxSlotInfo FN_SET_ADD_MODE
-{
- Slotname [ en-US ] = "MultiSelection On";
-};
-SfxSlotInfo FN_SET_EXT_MODE
-{
- Slotname [ en-US ] = "Extended Selection On";
-};
-SfxSlotInfo FN_SET_PAGE_STYLE
-{
- Slotname [ en-US ] = "Apply Page Style";
-};
-SfxSlotInfo FN_SET_SUB_SCRIPT
-{
- Slotname [ en-US ] = "Subscript";
-};
-SfxSlotInfo FN_SET_SUPER_SCRIPT
-{
- Slotname [ en-US ] = "Superscript";
-};
-SfxSlotInfo FN_SHADOWCURSOR
-{
- Slotname [ en-US ] = "Direct Cursor On/Off";
-};
-SfxSlotInfo FN_SHIFT_BACKSPACE
-{
- Slotname [ en-US ] = "Backspace";
-};
-SfxSlotInfo FN_SHOW_MULTIPLE_PAGES
-{
- Slotname [ en-US ] = "Page Preview: Multiple Pages";
-};
-SfxSlotInfo FN_SHOW_TWO_PAGES
-{
- Slotname [ en-US ] = "Page Preview: Two Pages";
-};
-SfxSlotInfo FN_SHOW_BOOKVIEW
-{
- SlotName[ en-US ] = "Book Preview";
-};
-SfxSlotInfo FN_SHRINK_FONT_SIZE
-{
- Slotname [ en-US ] = "Reduce Font";
-};
-SfxSlotInfo FN_SORTING_DLG
-{
- Slotname [ en-US ] = "Sort";
-};
-SfxSlotInfo FN_START_DOC_DIRECT
-{
- Slotname [ en-US ] = "Directly to Document Begin";
-};
-SfxSlotInfo FN_START_OF_COLUMN
-{
- Slotname [ en-US ] = "To Column Begin";
-};
-SfxSlotInfo FN_START_OF_DOCUMENT
-{
- Slotname [ en-US ] = "To Document Begin";
-};
-SfxSlotInfo FN_START_OF_DOCUMENT_SEL
-{
- Slotname [ en-US ] = "Select to Document Begin";
-};
-SfxSlotInfo FN_START_OF_LINE
-{
- Slotname [ en-US ] = "To Line Begin";
-};
-SfxSlotInfo FN_START_OF_LINE_SEL
-{
- Slotname [ en-US ] = "Select to Begin of Line";
-};
-SfxSlotInfo FN_START_OF_NEXT_COLUMN
-{
- Slotname [ en-US ] = "To Begin of Next Column";
-};
-SfxSlotInfo FN_START_OF_NEXT_PAGE
-{
- Slotname [ en-US ] = "To Begin of Next Page";
-};
-SfxSlotInfo FN_START_OF_NEXT_PAGE_SEL
-{
- Slotname [ en-US ] = "Select to Begin of Next Page";
-};
-SfxSlotInfo FN_START_OF_PAGE
-{
- Slotname [ en-US ] = "To Page Begin";
-};
-SfxSlotInfo FN_START_OF_PAGE_SEL
-{
- Slotname [ en-US ] = "Select to Page Begin";
-};
-SfxSlotInfo FN_START_OF_PARA
-{
- Slotname [ en-US ] = "To Paragraph Begin";
-};
-SfxSlotInfo FN_START_OF_PARA_SEL
-{
- Slotname [ en-US ] = "Select to Paragraph Begin";
-};
-SfxSlotInfo FN_START_OF_PREV_COLUMN
-{
- Slotname [ en-US ] = "To Begin of Previous Column";
-};
-SfxSlotInfo FN_START_OF_PREV_PAGE
-{
- Slotname [ en-US ] = "To Begin of Previous Page";
-};
-SfxSlotInfo FN_START_OF_PREV_PAGE_SEL
-{
- Slotname [ en-US ] = "Select to Begin of Previous Page";
-};
-SfxSlotInfo FN_START_TABLE
-{
- Slotname [ en-US ] = "To Table Begin";
-};
-SfxSlotInfo FN_STAT_PAGE
-{
- Slotname [ en-US ] = "Page Number";
-};
-SfxSlotInfo FN_STAT_SELMODE
-{
- Slotname [ en-US ] = "Selection Mode";
-};
-SfxSlotInfo FN_STAT_TEMPLATE
-{
- Slotname [ en-US ] = "Page Style";
-};
-SfxSlotInfo FN_TABLE_ADJUST_CELLS
-{
- Slotname [ en-US ] = "Optimal Column Width";
-};
-SfxSlotInfo FN_TABLE_AUTOSUM
-{
- Slotname [ en-US ] = "Sum";
-};
-SfxSlotInfo FN_TABLE_BALANCE_CELLS
-{
- Slotname [ en-US ] = "Space Columns Equally";
-};
-SfxSlotInfo FN_TABLE_BALANCE_ROWS
-{
- Slotname [ en-US ] = "Space Rows Equally ";
-};
-SfxSlotInfo FN_TABLE_DELETE_COL
-{
- Slotname [ en-US ] = "Delete Column";
-};
-SfxSlotInfo FN_TABLE_DELETE_ROW
-{
- Slotname [ en-US ] = "Delete Row";
-};
-SfxSlotInfo FN_TABLE_INSERT_COL
-{
- Slotname [ en-US ] = "Insert Column";
-};
-SfxSlotInfo FN_TABLE_INSERT_ROW
-{
- Slotname [ en-US ] = "Insert Row";
-};
-SfxSlotInfo FN_TABLE_MERGE_CELLS
-{
- Slotname [ en-US ] = "Merge Cells";
-};
-SfxSlotInfo FN_TABLE_MERGE_TABLE
-{
- Slotname [ en-US ] = "Merge Table";
-};
-SfxSlotInfo FN_FORMAT_APPLY_HEAD1
-{
- Slotname [ en-US ] = "Apply Style Heading 1";
-};
-SfxSlotInfo FN_FORMAT_APPLY_HEAD2
-{
- Slotname [ en-US ] = "Apply Style Heading 2";
-};
-SfxSlotInfo FN_FORMAT_APPLY_HEAD3
-{
- Slotname [ en-US ] = "Apply Style Heading 3";
-};
-SfxSlotInfo FN_FORMAT_APPLY_DEFAULT
-{
- Slotname [ en-US ] = "Apply Style Default";
-};
-SfxSlotInfo FN_FORMAT_APPLY_TEXTBODY
-{
- Slotname [ en-US ] = "Apply Style Textbody";
-};
-SfxSlotInfo FN_TABLE_MODE_FIX
-{
- Slotname [ en-US ] = "Table: Fixed";
-};
-SfxSlotInfo FN_TABLE_MODE_FIX_PROP
-{
- Slotname [ en-US ] = "Table: Fixed, Proportional";
-};
-SfxSlotInfo FN_TABLE_MODE_VARIABLE
-{
- Slotname [ en-US ] = "Table: Variable";
-};
-SfxSlotInfo FN_TABLE_OPTIMAL_HEIGHT
-{
- Slotname [ en-US ] = "Optimal Row Height";
-};
-SfxSlotInfo FN_TABLE_SELECT_ALL
-{
- Slotname [ en-US ] = "Select Table";
-};
-SfxSlotInfo FN_TABLE_SELECT_COL
-{
- Slotname [ en-US ] = "Select Column";
-};
-SfxSlotInfo FN_TABLE_SELECT_ROW
-{
- Slotname [ en-US ] = "Select Rows";
-};
-SfxSlotInfo FN_TABLE_SET_READ_ONLY_CELLS
-{
- Slotname [ en-US ] = "Protect Cells";
-};
-SfxSlotInfo FN_TABLE_SET_ROW_HEIGHT
-{
- Slotname [ en-US ] = "Row Height";
-};
-SfxSlotInfo FN_TABLE_SPLIT_CELLS
-{
- Slotname [ en-US ] = "Split Cells";
-};
-SfxSlotInfo FN_TABLE_SPLIT_TABLE
-{
- Slotname [ en-US ] = "Split Table";
-};
-SfxSlotInfo FN_TABLE_UNSET_READ_ONLY
-{
- Slotname [ en-US ] = "Unprotect sheet";
-};
-SfxSlotInfo FN_TABLE_UNSET_READ_ONLY_CELLS
-{
- Slotname [ en-US ] = "Unprotect cells";
-};
-SfxSlotInfo FN_TABLE_VERT_BOTTOM
-{
- Slotname [ en-US ] = "Bottom";
-};
-SfxSlotInfo FN_TABLE_VERT_CENTER
-{
- Slotname [ en-US ] = "Center ( vertical )";
-};
-SfxSlotInfo FN_TABLE_VERT_NONE
-{
- Slotname [ en-US ] = "Top";
-};
-SfxSlotInfo FN_THESAURUS_DLG
-{
- Slotname [ en-US ] = "Thesaurus";
-};
-SfxSlotInfo FN_TO_FOOTER
-{
- Slotname [ en-US ] = "To Footer";
-};
-SfxSlotInfo FN_TO_HEADER
-{
- Slotname [ en-US ] = "To Header";
-};
-SfxSlotInfo FN_TOOL_ANKER
-{
- Slotname [ en-US ] = "Change Anchor";
-};
-SfxSlotInfo FN_TOOL_ANKER_AT_CHAR
-{
- Slotname [ en-US ] = "Anchor to Character";
-};
-SfxSlotInfo FN_TOOL_ANKER_CHAR
-{
- Slotname [ en-US ] = "Anchor as Character";
-};
-SfxSlotInfo FN_TOOL_ANKER_FRAME
-{
- Slotname [ en-US ] = "Anchor To Frame";
-};
-SfxSlotInfo FN_TOOL_ANKER_PAGE
-{
- Slotname [ en-US ] = "Anchor To Page";
-};
-SfxSlotInfo FN_TOOL_ANKER_PARAGRAPH
-{
- Slotname [ en-US ] = "Anchor To Paragraph";
-};
-SfxSlotInfo FN_TOOL_GROUP
-{
- Slotname [ en-US ] = "Group";
-};
-SfxSlotInfo FN_TOOL_HIERARCHIE
-{
- Slotname [ en-US ] = "Change Position";
-};
-SfxSlotInfo FN_TOOL_UNGROUP
-{
- Slotname [ en-US ] = "Ungroup";
-};
-SfxSlotInfo FN_UNDERLINE_DOUBLE
-{
- Slotname [ en-US ] = "Double Underline ";
-};
-SfxSlotInfo FN_UPDATE_ALL
-{
- Slotname [ en-US ] = "Update All";
-};
-SfxSlotInfo FN_UPDATE_ALL_LINKS
-{
- Slotname [ en-US ] = "Update All Links";
-};
-SfxSlotInfo FN_UPDATE_CUR_TOX
-{
- Slotname [ en-US ] = "Update Index";
-};
-SfxSlotInfo FN_EDIT_CURRENT_TOX
-{
- Slotname [ en-US ] = "Edit index";
-};
-SfxSlotInfo FN_UPDATE_FIELDS
-{
- Slotname [ en-US ] = "Update Fields";
-};
-SfxSlotInfo FN_UPDATE_INPUTFIELDS
-{
- Slotname [ en-US ] = "Update Input Fields";
-};
-SfxSlotInfo FN_UPDATE_TOX
-{
- Slotname [ en-US ] = "Update Indexes";
-};
-SfxSlotInfo FN_VIEW_BOUNDS
-{
- Slotname [ en-US ] = "Text Limits";
-};
-SfxSlotInfo FN_VIEW_FIELDNAME
-{
- Slotname [ en-US ] = "Field Names On/Off";
-};
-SfxSlotInfo FN_VIEW_FIELDS
-{
- Slotname [ en-US ] = "Fields";
-};
-SfxSlotInfo FN_VIEW_GRAPHIC
-{
- Slotname [ en-US ] = "Graphics On/Off";
-};
-
-SfxSlotInfo FN_VIEW_HIDDEN_PARA
-{
- Slotname [ en-US ] = "Hidden Paragraphs";
-};
-SfxSlotInfo FN_VIEW_MARKS
-{
- Slotname [ en-US ] = "Field Shadings";
-};
-SfxSlotInfo FN_VIEW_META_CHARS
-{
- Slotname [ en-US ] = "Nonprinting Characters On/Off";
-};
-SfxSlotInfo FN_VIEW_TABLEGRID
-{
- Slotname [ en-US ] = "Table Limits";
-};
-SfxSlotInfo FN_VLINEAL
-{
- Slotname [ en-US ] = "Vertical Ruler";
-};
-SfxSlotInfo FN_VSCROLLBAR
-{
- Slotname [ en-US ] = "Vertical Scroll Bar";
-};
-SfxSlotInfo FN_WRAP_ANCHOR_ONLY
-{
- Slotname [ en-US ] = "Wrap First Paragraph";
-};
-SfxSlotInfo SID_ATTR_CHAR_COLOR_BACKGROUND
-{
- Slotname [ en-US ] = "Highlighting";
-};
-SfxSlotInfo SID_ATTR_CHAR_COLOR_BACKGROUND_EXT
-{
- Slotname [ en-US ] = "Highlight Fill";
-};
-SfxSlotInfo SID_ATTR_CHAR_COLOR_EXT
-{
- Slotname [ en-US ] = "Font Color Fill";
-};
-SfxSlotInfo SID_ATTR_CHAR_COLOR2
-{
- Slotname [ en-US ] = "Font Color";
-};
-SfxSlotInfo SID_TEMPLATE_LOAD
-{
- Slotname [ en-US ] = "Load Styles";
-};
-SfxSlotInfo FN_FORMAT_COLUMN
-{
- Slotname [ en-US ] = "Columns";
-};
-SfxSlotInfo FN_INSERT_MULTI_TOX
-{
-
- Slotname [ en-US ] = "Insert Index";
-};
-SfxSlotInfo FN_INSERT_AUTH_ENTRY_DLG
-{
- Slotname [ en-US ] = "Insert Bibliography Entry";
-};
-
-SfxSlotInfo FN_EDIT_AUTH_ENTRY_DLG
-{
- Slotname [ en-US ] = "Edit Bibliography Entry";
-};
-
-SfxSlotInfo FN_REMOVE_CUR_TOX
-{
- Slotname [ en-US ] = "Delete index";
-};
-SfxSlotInfo FN_EDIT_HYPERLINK
-{
- Slotname [ en-US ] = "Edit hyperlink";
-};
-SfxSlotInfo FN_SET_MODOPT_TBLNUMFMT
-{
- Slotname [ en-US ] = "Number Recognition";
-};
-SfxSlotInfo FN_UPDATE_CHARTS
-{
- Slotname [ en-US ] = "Update Charts";
-};
-SfxSlotInfo FN_NAME_SHAPE
-{
- Slotname [ en-US ] = "Name...";
-};
-// #i68101#
-SfxSlotInfo FN_TITLE_DESCRIPTION_SHAPE
-{
- Slotname [ en-US ] = "Description...";
-};
-SfxSlotInfo FN_CLOSE_PAGEPREVIEW
-{
- Slotname [ en-US ] = "Close Preview";
-};
-
-SfxSlotInfo FN_TO_FOOTNOTE_AREA
-{
- Slotname [ en-US ] = "Edit Footnote/Endnote";
-};
-
-SfxSlotInfo FN_READONLY_SELECTION_MODE
-{
- Slotname [ en-US ] = "Select Text";
-};
-
-SfxSlotInfo FN_TABLE_ROW_SPLIT
-{
- Slotname [ en-US ] = "Break across page and columns";
-};
-SfxSlotInfo FN_WORDCOUNT_DIALOG
-{
- SlotName[ en-US ] = "Word Count";
-};
-SfxSlotInfo FN_TABLE_DELETE_TABLE
-{
- SlotName [ en-US ] = "Delete table";
-};
-SfxSlotInfo FN_TABLE_SELECT_CELL
-{
- SlotName [ en-US ] = "Select cell";
-};
-SfxSlotInfo FN_CONVERT_TEXT_TO_TABLE
-{
- SlotName [ en-US ] = "Convert Text to Table";
-};
-
-SfxSlotInfo FN_CONVERT_TABLE_TO_TEXT
-{
- SlotName [ en-US ] = "Convert Table to Text";
-};
-SfxSlotInfo FN_TABLE_SORT_DIALOG
-{
- SlotName [ en-US ] = "Sort";
-};
-SfxSlotInfo FN_TABLE_HEADLINE_REPEAT
-{
- SlotName [ en-US ] = "Heading Rows Repeat";
-};
-SfxSlotInfo FN_XFORMS_DESIGN_MODE
-{
- SlotName[ en-US ] = "Design Mode On/Off";
-};
-SfxSlotInfo FN_XFORMS_INIT
-{
- SlotName[ en-US ] = "XML Form Document";
-};
-SfxSlotInfo FN_NUM_CONTINUE
-{
- SlotName[ en-US ] = "Continue previous numbering";
-};
-
-SfxSlotInfo FN_INSERT_RLM
-{
- SlotName[ en-US ] = "Right-to-left mark";
-};
-SfxSlotInfo FN_INSERT_LRM
-{
- SlotName[ en-US ] = "Left-to-right mark";
-};
-SfxSlotInfo FN_INSERT_ZWSP
-{
- SlotName[ en-US ] = "No-width no break";
-};
-SfxSlotInfo FN_INSERT_ZWNBSP
-{
- SlotName[ en-US ] = "No-width optional break";
-};
-SfxSlotInfo FN_VIEW_NOTES
-{
- Slotname [ en-US ] = "Notes";
-};
-
diff --git a/sw/source/core/SwNumberTree/SwNodeNum.cxx b/sw/source/core/SwNumberTree/SwNodeNum.cxx
index d1113f4fb484..d4a9dc0a07d0 100644
--- a/sw/source/core/SwNumberTree/SwNodeNum.cxx
+++ b/sw/source/core/SwNumberTree/SwNodeNum.cxx
@@ -38,7 +38,7 @@
#include <IDocumentListItems.hxx>
// <--
// --> OD 2010-01-13 #b6912256#
-#include <svl/svstdarr.hxx>
+//#include <svtools/svstdarr.hxx>
#include <doc.hxx>
// <--
diff --git a/sw/source/core/SwNumberTree/SwNumberTree.cxx b/sw/source/core/SwNumberTree/SwNumberTree.cxx
index 4d5f06ff0b8f..05c30aa97f5b 100644
--- a/sw/source/core/SwNumberTree/SwNumberTree.cxx
+++ b/sw/source/core/SwNumberTree/SwNumberTree.cxx
@@ -127,19 +127,6 @@ SwNumberTreeNode * SwNumberTreeNode::GetRoot() const
return pResult;
}
-SwNumberTreeNode * SwNumberTreeNode::GetFirstChild() const
-{
- SwNumberTreeNode * pResult = 0;
-
- tSwNumberTreeChildren::iterator aIt = mChildren.begin();
-
- if (aIt != mChildren.end() )
- pResult = *aIt;
-
- return pResult;
-}
-
-
void SwNumberTreeNode::ClearObsoletePhantoms()
{
tSwNumberTreeChildren::iterator aIt = mChildren.begin();
diff --git a/sw/source/core/access/acccell.cxx b/sw/source/core/access/acccell.cxx
index b44530f40cca..f4cf864b7217 100644
--- a/sw/source/core/access/acccell.cxx
+++ b/sw/source/core/access/acccell.cxx
@@ -41,6 +41,7 @@
#include <swtable.hxx>
#include "crsrsh.hxx"
#include "viscrs.hxx"
+#include <accfrmobj.hxx>
#include <accfrmobjslist.hxx>
#include "frmfmt.hxx"
#include "cellatr.hxx"
@@ -56,6 +57,7 @@
using namespace ::com::sun::star;
using namespace ::com::sun::star::accessibility;
using ::rtl::OUString;
+using namespace sw::access;
const sal_Char sServiceName[] = "com.sun.star.table.AccessibleCellView";
const sal_Char sImplementationName[] = "com.sun.star.comp.Writer.SwAccessibleCellView";
@@ -83,8 +85,7 @@ sal_Bool SwAccessibleCell::IsSelected()
return bRet;
}
-void SwAccessibleCell::GetStates(
- ::utl::AccessibleStateSetHelper& rStateSet )
+void SwAccessibleCell::GetStates( ::utl::AccessibleStateSetHelper& rStateSet )
{
SwAccessibleContext::GetStates( rStateSet );
@@ -104,11 +105,10 @@ void SwAccessibleCell::GetStates(
}
}
-SwAccessibleCell::SwAccessibleCell(
- SwAccessibleMap *pInitMap,
- const SwCellFrm *pCellFrm ) :
- SwAccessibleContext( pInitMap, AccessibleRole::TABLE_CELL, pCellFrm ),
- bIsSelected( sal_False )
+SwAccessibleCell::SwAccessibleCell( SwAccessibleMap *pInitMap,
+ const SwCellFrm *pCellFrm )
+ : SwAccessibleContext( pInitMap, AccessibleRole::TABLE_CELL, pCellFrm )
+ , bIsSelected( sal_False )
{
vos::OGuard aGuard(Application::GetSolarMutex());
OUString sBoxName( pCellFrm->GetTabBox()->GetName() );
@@ -145,11 +145,11 @@ sal_Bool SwAccessibleCell::_InvalidateChildrenCursorPos( const SwFrm *pFrm )
{
sal_Bool bChanged = sal_False;
- const SwFrmOrObjSList aVisList( GetVisArea(), pFrm );
- SwFrmOrObjSList::const_iterator aIter( aVisList.begin() );
+ const SwAccessibleChildSList aVisList( GetVisArea(), *pFrm, *GetMap() );
+ SwAccessibleChildSList::const_iterator aIter( aVisList.begin() );
while( aIter != aVisList.end() )
{
- const SwFrmOrObj& rLower = *aIter;
+ const SwAccessibleChild& rLower = *aIter;
const SwFrm *pLower = rLower.GetSwFrm();
if( pLower )
{
@@ -184,7 +184,7 @@ sal_Bool SwAccessibleCell::_InvalidateChildrenCursorPos( const SwFrm *pFrm )
void SwAccessibleCell::_InvalidateCursorPos()
{
- const SwFrm *pParent = GetParent( GetFrm(), IsInPagePreview() );
+ const SwFrm *pParent = GetParent( SwAccessibleChild(GetFrm()), IsInPagePreview() );
ASSERT( pParent->IsTabFrm(), "parent is not a tab frame" );
const SwTabFrm *pTabFrm = static_cast< const SwTabFrm * >( pParent );
if( pTabFrm->IsFollow() )
@@ -253,21 +253,21 @@ uno::Sequence< OUString > SAL_CALL SwAccessibleCell::getSupportedServiceNames()
void SwAccessibleCell::Dispose( sal_Bool bRecursive )
{
- const SwFrm *pParent = GetParent( GetFrm(), IsInPagePreview() );
+ const SwFrm *pParent = GetParent( SwAccessibleChild(GetFrm()), IsInPagePreview() );
::vos::ORef< SwAccessibleContext > xAccImpl(
GetMap()->GetContextImpl( pParent, sal_False ) );
if( xAccImpl.isValid() )
- xAccImpl->DisposeChild( GetFrm(), bRecursive );
+ xAccImpl->DisposeChild( SwAccessibleChild(GetFrm()), bRecursive );
SwAccessibleContext::Dispose( bRecursive );
}
void SwAccessibleCell::InvalidatePosOrSize( const SwRect& rOldBox )
{
- const SwFrm *pParent = GetParent( GetFrm(), IsInPagePreview() );
+ const SwFrm *pParent = GetParent( SwAccessibleChild(GetFrm()), IsInPagePreview() );
::vos::ORef< SwAccessibleContext > xAccImpl(
GetMap()->GetContextImpl( pParent, sal_False ) );
if( xAccImpl.isValid() )
- xAccImpl->InvalidateChildPosOrSize( GetFrm(), rOldBox );
+ xAccImpl->InvalidateChildPosOrSize( SwAccessibleChild(GetFrm()), rOldBox );
SwAccessibleContext::InvalidatePosOrSize( rOldBox );
}
diff --git a/sw/source/core/access/acccell.hxx b/sw/source/core/access/acccell.hxx
index 4ac0e461c640..db3d7d5fd5cb 100644
--- a/sw/source/core/access/acccell.hxx
+++ b/sw/source/core/access/acccell.hxx
@@ -26,12 +26,12 @@
************************************************************************/
#ifndef _ACCCELL_HXX
#define _ACCCELL_HXX
-#ifndef _ACCCONTEXT_HXX
+
#include "acccontext.hxx"
-#endif
#include <com/sun/star/accessibility/XAccessibleValue.hpp>
class SwCellFrm;
+class SwFrmFmt;
class SwAccessibleCell : public SwAccessibleContext,
::com::sun::star::accessibility::XAccessibleValue
diff --git a/sw/source/core/access/acccontext.cxx b/sw/source/core/access/acccontext.cxx
index 54cf0d61f9e9..1b5e66071b84 100644
--- a/sw/source/core/access/acccontext.cxx
+++ b/sw/source/core/access/acccontext.cxx
@@ -38,8 +38,8 @@
#endif // #if (OSL_DEBUG_LEVEL > 1) && defined TEST_MIB
#include <tools/debug.hxx>
#include <vcl/window.hxx>
-#include "errhdl.hxx"
-#include "swtypes.hxx"
+#include <errhdl.hxx>
+#include <swtypes.hxx>
#include <com/sun/star/accessibility/XAccessible.hpp>
#include <com/sun/star/accessibility/XAccessibleStateSet.hpp>
@@ -51,18 +51,22 @@
#include <unotools/accessiblerelationsethelper.hxx>
#include <viewsh.hxx>
#include <crsrsh.hxx>
-#include "fesh.hxx"
+#include <fesh.hxx>
#include <txtfrm.hxx>
#include <ndtxt.hxx>
+#include <pagefrm.hxx>
+#include <flyfrm.hxx>
+#include <dflyobj.hxx>
#include <pam.hxx>
#include <viewimp.hxx>
#include <accmap.hxx>
#include <accfrmobjslist.hxx>
-#ifndef _ACCCONTEXT_HXX
#include <acccontext.hxx>
-#endif
#include <svx/AccessibleShape.hxx>
#include <comphelper/accessibleeventnotifier.hxx>
+#include <PostItMgr.hxx>
+
+using namespace sw::access;
#if (OSL_DEBUG_LEVEL > 1) && defined TEST_MIB
#define DBG_MSG( _msg ) \
@@ -91,10 +95,10 @@ using ::rtl::OUString;
void SwAccessibleContext::InitStates()
{
- bIsShowingState = IsShowing();
+ bIsShowingState = GetMap() ? IsShowing( *(GetMap()) ) : sal_False;
ViewShell *pVSh = GetMap()->GetShell();
- bIsEditableState = pVSh && IsEditable( pVSh );
+ bIsEditableState = pVSh && IsEditable( pVSh );
bIsOpaqueState = pVSh && IsOpaque( pVSh );
bIsDefuncState = sal_False;
}
@@ -165,21 +169,17 @@ enum Action { NONE, SCROLLED, SCROLLED_WITHIN,
SCROLLED_IN, SCROLLED_OUT };
void SwAccessibleContext::ChildrenScrolled( const SwFrm *pFrm,
- const SwRect& rOldVisArea )
+ const SwRect& rOldVisArea )
{
const SwRect& rNewVisArea = GetVisArea();
- SwFrmOrObj aFrm( pFrm );
- sal_Bool bVisibleOnly = aFrm.IsVisibleChildrenOnly();
-
- uno::Reference < XAccessible > xAcc;
+ const bool bVisibleChildrenOnly = SwAccessibleChild( pFrm ).IsVisibleChildrenOnly();
- const SwFrmOrObjSList aList( pFrm );
- SwFrmOrObjSList::const_iterator aIter( aList.begin() );
+ const SwAccessibleChildSList aList( *pFrm, *(GetMap()) );
+ SwAccessibleChildSList::const_iterator aIter( aList.begin() );
while( aIter != aList.end() )
{
- const SwFrmOrObj& rLower = *aIter;
- const SwFrm *pLower = rLower.GetSwFrm();
- SwRect aBox( rLower.GetBox() );
+ const SwAccessibleChild& rLower = *aIter;
+ const SwRect aBox( rLower.GetBox( *(GetMap()) ) );
if( rLower.IsAccessible( GetShell()->IsPreView() ) )
{
Action eAction = NONE;
@@ -191,20 +191,31 @@ void SwAccessibleContext::ChildrenScrolled( const SwFrm *pFrm,
}
else
{
- if( bVisibleOnly )
+ if ( bVisibleChildrenOnly &&
+ !rLower.AlwaysIncludeAsChild() )
+ {
eAction = SCROLLED_IN;
+ }
else
+ {
eAction = SCROLLED;
+ }
}
}
else if( aBox.IsOver( rOldVisArea ) )
{
- if( bVisibleOnly )
+ if ( bVisibleChildrenOnly &&
+ !rLower.AlwaysIncludeAsChild() )
+ {
eAction = SCROLLED_OUT;
+ }
else
+ {
eAction = SCROLLED;
+ }
}
- else if( !bVisibleOnly )
+ else if( !bVisibleChildrenOnly ||
+ rLower.AlwaysIncludeAsChild() )
{
// This wouldn't be required if the SwAccessibleFrame,
// wouldn't know about the vis area.
@@ -212,8 +223,11 @@ void SwAccessibleContext::ChildrenScrolled( const SwFrm *pFrm,
}
if( NONE != eAction )
{
- if( pLower )
+ if ( rLower.GetSwFrm() )
{
+ ASSERT( !rLower.AlwaysIncludeAsChild(),
+ "<SwAccessibleContext::ChildrenScrolled(..)> - always included child not considered!" );
+ const SwFrm* pLower( rLower.GetSwFrm() );
::vos::ORef< SwAccessibleContext > xAccImpl =
GetMap()->GetContextImpl( pLower, SCROLLED_OUT == eAction ||
SCROLLED_IN == eAction );
@@ -242,10 +256,12 @@ void SwAccessibleContext::ChildrenScrolled( const SwFrm *pFrm,
ChildrenScrolled( pLower, rOldVisArea );
}
}
- else
+ else if ( rLower.GetDrawObject() )
{
+ ASSERT( !rLower.AlwaysIncludeAsChild(),
+ "<SwAccessibleContext::ChildrenScrolled(..)> - always included child not considered!" );
::vos::ORef< ::accessibility::AccessibleShape > xAccImpl =
- GetMap()->GetContextImpl( rLower.GetSdrObject(),
+ GetMap()->GetContextImpl( rLower.GetDrawObject(),
this,
SCROLLED_OUT == eAction ||
SCROLLED_IN == eAction );
@@ -260,7 +276,7 @@ void SwAccessibleContext::ChildrenScrolled( const SwFrm *pFrm,
GetMap() );
break;
case SCROLLED_IN:
- ScrolledInShape( rLower.GetSdrObject(),
+ ScrolledInShape( rLower.GetDrawObject(),
xAccImpl.getBodyPtr() );
break;
case SCROLLED_OUT:
@@ -268,7 +284,7 @@ void SwAccessibleContext::ChildrenScrolled( const SwFrm *pFrm,
xAccImpl->ViewForwarderChanged(
::accessibility::IAccessibleViewForwarderListener::VISIBLE_AREA,
GetMap() );
- DisposeShape( rLower.GetSdrObject(),
+ DisposeShape( rLower.GetDrawObject(),
xAccImpl.getBodyPtr() );
}
break;
@@ -277,14 +293,21 @@ void SwAccessibleContext::ChildrenScrolled( const SwFrm *pFrm,
}
}
}
+ else if ( rLower.GetWindow() )
+ {
+ // nothing to do - as such children are always included as children.
+ ASSERT( rLower.AlwaysIncludeAsChild(),
+ "<SwAccessibleContext::ChildrenScrolled(..)> - not always included child not considered!" );
+ }
}
}
- else if( pLower && (!bVisibleOnly ||
- aBox.IsOver( rOldVisArea ) ||
- aBox.IsOver( rNewVisArea )) )
+ else if ( rLower.GetSwFrm() &&
+ ( !bVisibleChildrenOnly ||
+ aBox.IsOver( rOldVisArea ) ||
+ aBox.IsOver( rNewVisArea ) ) )
{
// There are no unaccessible SdrObjects that need to be notified
- ChildrenScrolled( pLower, rOldVisArea );
+ ChildrenScrolled( rLower.GetSwFrm(), rOldVisArea );
}
++aIter;
}
@@ -297,7 +320,7 @@ void SwAccessibleContext::Scrolled( const SwRect& rOldVisArea )
ChildrenScrolled( GetFrm(), rOldVisArea );
sal_Bool bIsOldShowingState;
- sal_Bool bIsNewShowingState = IsShowing();
+ sal_Bool bIsNewShowingState = IsShowing( *(GetMap()) );
{
vos::OGuard aGuard( aMutex );
bIsOldShowingState = bIsShowingState;
@@ -327,7 +350,7 @@ void SwAccessibleContext::ScrolledIn()
"Vis area of child is wrong. Did it exist already?" );
// Send child event at parent. That's all we have to do here.
- const SwFrm *pParent = GetParent();
+ const SwFrm* pParent = GetParent();
::vos::ORef< SwAccessibleContext > xParentImpl(
GetMap()->GetContextImpl( pParent, sal_False ) );
uno::Reference < XAccessibleContext > xThis( this );
@@ -379,13 +402,13 @@ void SwAccessibleContext::ScrolledOut( const SwRect& rOldVisArea )
void SwAccessibleContext::InvalidateChildrenStates( const SwFrm* _pFrm,
tAccessibleStates _nStates )
{
- const SwFrmOrObjSList aVisList( GetVisArea(), _pFrm );
+ const SwAccessibleChildSList aVisList( GetVisArea(), *_pFrm, *(GetMap()) );
- SwFrmOrObjSList::const_iterator aIter( aVisList.begin() );
+ SwAccessibleChildSList::const_iterator aIter( aVisList.begin() );
while( aIter != aVisList.end() )
{
- const SwFrmOrObj& rLower = *aIter;
- const SwFrm *pLower = rLower.GetSwFrm();
+ const SwAccessibleChild& rLower = *aIter;
+ const SwFrm* pLower = rLower.GetSwFrm();
if( pLower )
{
::vos::ORef< SwAccessibleContext > xAccImpl;
@@ -396,10 +419,15 @@ void SwAccessibleContext::InvalidateChildrenStates( const SwFrm* _pFrm,
else
InvalidateChildrenStates( pLower, _nStates );
}
- else
+ else if ( rLower.GetDrawObject() )
{
// TODO: SdrObjects
}
+ else if ( rLower.GetWindow() )
+ {
+ // nothing to do ?
+ }
+
++aIter;
}
}
@@ -408,12 +436,12 @@ void SwAccessibleContext::InvalidateChildrenStates( const SwFrm* _pFrm,
void SwAccessibleContext::DisposeChildren( const SwFrm *pFrm,
sal_Bool bRecursive )
{
- const SwFrmOrObjSList aVisList( GetVisArea(), pFrm );
- SwFrmOrObjSList::const_iterator aIter( aVisList.begin() );
+ const SwAccessibleChildSList aVisList( GetVisArea(), *pFrm, *(GetMap()) );
+ SwAccessibleChildSList::const_iterator aIter( aVisList.begin() );
while( aIter != aVisList.end() )
{
- const SwFrmOrObj& rLower = *aIter;
- const SwFrm *pLower = rLower.GetSwFrm();
+ const SwAccessibleChild& rLower = *aIter;
+ const SwFrm* pLower = rLower.GetSwFrm();
if( pLower )
{
::vos::ORef< SwAccessibleContext > xAccImpl;
@@ -424,13 +452,17 @@ void SwAccessibleContext::DisposeChildren( const SwFrm *pFrm,
else if( bRecursive )
DisposeChildren( pLower, bRecursive );
}
- else
+ else if ( rLower.GetDrawObject() )
{
::vos::ORef< ::accessibility::AccessibleShape > xAccImpl(
- GetMap()->GetContextImpl( rLower.GetSdrObject(),
+ GetMap()->GetContextImpl( rLower.GetDrawObject(),
this, sal_False ) );
if( xAccImpl.isValid() )
- DisposeShape( rLower.GetSdrObject(), xAccImpl.getBodyPtr() );
+ DisposeShape( rLower.GetDrawObject(), xAccImpl.getBodyPtr() );
+ }
+ else if ( rLower.GetWindow() )
+ {
+ DisposeChild( rLower, sal_False );
}
++aIter;
}
@@ -528,16 +560,14 @@ sal_Bool SwAccessibleContext::IsEditableState()
SwAccessibleContext::SwAccessibleContext( SwAccessibleMap *pM,
sal_Int16 nR,
- const SwFrm *pF ) :
- SwAccessibleFrame( pM->GetVisArea().SVRect(), pF,
- pM->GetShell()->IsPreView() ),
- pMap( pM ),
- nClientId(0),
- nRole( nR ),
- bDisposing( sal_False ),
- // --> OD 2008-03-10 #i85634#
- bRegisteredAtAccessibleMap( true )
- // <--
+ const SwFrm *pF )
+ : SwAccessibleFrame( pM->GetVisArea().SVRect(), pF,
+ pM->GetShell()->IsPreView() )
+ , pMap( pM )
+ , nClientId(0)
+ , nRole( nR )
+ , bDisposing( sal_False )
+ , bRegisteredAtAccessibleMap( true )
{
InitStates();
DBG_MSG_CD( "constructed" )
@@ -548,11 +578,7 @@ SwAccessibleContext::~SwAccessibleContext()
vos::OGuard aGuard(Application::GetSolarMutex());
DBG_MSG_CD( "destructed" )
- // --> OD 2008-03-10 #i85634#
-// if( GetFrm() && GetMap() )
-// GetMap()->RemoveContext( GetFrm() );
RemoveFrmFromAccessibleMap();
- // <--
}
uno::Reference< XAccessibleContext > SAL_CALL
@@ -570,7 +596,7 @@ sal_Int32 SAL_CALL SwAccessibleContext::getAccessibleChildCount( void )
CHECK_FOR_DEFUNC( XAccessibleContext )
- return bDisposing ? 0 : GetChildCount();
+ return bDisposing ? 0 : GetChildCount( *(GetMap()) );
}
uno::Reference< XAccessible> SAL_CALL
@@ -581,7 +607,7 @@ uno::Reference< XAccessible> SAL_CALL
CHECK_FOR_DEFUNC( XAccessibleContext )
- const SwFrmOrObj aChild( GetChild( nIndex ) );
+ const SwAccessibleChild aChild( GetChild( *(GetMap()), nIndex ) );
if( !aChild.IsValid() )
{
uno::Reference < XAccessibleContext > xThis( this );
@@ -602,14 +628,18 @@ uno::Reference< XAccessible> SAL_CALL
xChild = xChildImpl.getBodyPtr();
}
}
- else
+ else if ( aChild.GetDrawObject() )
{
::vos::ORef < ::accessibility::AccessibleShape > xChildImpl(
- GetMap()->GetContextImpl( aChild.GetSdrObject(),
+ GetMap()->GetContextImpl( aChild.GetDrawObject(),
this, !bDisposing ) );
if( xChildImpl.isValid() )
xChild = xChildImpl.getBodyPtr();
}
+ else if ( aChild.GetWindow() )
+ {
+ xChild = aChild.GetWindow()->GetAccessible();
+ }
return xChild;
}
@@ -656,7 +686,7 @@ sal_Int32 SAL_CALL SwAccessibleContext::getAccessibleIndexInParent (void)
GetMap()->GetContextImpl( pUpper, !bDisposing ) );
ASSERT( xAccImpl.isValid() || bDisposing, "no parent found" );
if( xAccImpl.isValid() )
- nIndex = xAccImpl->GetChildIndex( GetFrm() );
+ nIndex = xAccImpl->GetChildIndex( *(GetMap()), SwAccessibleChild(GetFrm()) );
}
return nIndex;
@@ -792,20 +822,24 @@ uno::Reference< XAccessible > SAL_CALL SwAccessibleContext::getAccessibleAtPoint
Point aPixPoint( aPoint.X, aPoint.Y ); // px rel to parent
if( !GetFrm()->IsRootFrm() )
{
- SwRect aLogBounds( GetBounds( GetFrm() ) ); // twip rel to doc root
+ SwRect aLogBounds( GetBounds( *(GetMap()), GetFrm() ) ); // twip rel to doc root
Point aPixPos( GetMap()->CoreToPixel( aLogBounds.SVRect() ).TopLeft() );
aPixPoint.X() += aPixPos.X();
aPixPoint.Y() += aPixPos.Y();
}
- const SwFrmOrObj aChild( GetChildAtPixel( aPixPoint, GetMap() ) );
+ const SwAccessibleChild aChild( GetChildAtPixel( aPixPoint, *(GetMap()) ) );
if( aChild.GetSwFrm() )
{
xAcc = GetMap()->GetContext( aChild.GetSwFrm() );
}
- else if( aChild.GetSdrObject() )
+ else if( aChild.GetDrawObject() )
{
- xAcc = GetMap()->GetContext( aChild.GetSdrObject(), this );
+ xAcc = GetMap()->GetContext( aChild.GetDrawObject(), this );
+ }
+ else if ( aChild.GetWindow() )
+ {
+ xAcc = aChild.GetWindow()->GetAccessible();
}
return xAcc;
@@ -843,7 +877,7 @@ awt::Rectangle SAL_CALL SwAccessibleContext::getBoundsImpl(sal_Bool bRelative)
CHECK_FOR_WINDOW( XAccessibleComponent, pWin && pParent )
- SwRect aLogBounds( GetBounds( GetFrm() ) ); // twip rel to doc root
+ SwRect aLogBounds( GetBounds( *(GetMap()), GetFrm() ) ); // twip rel to doc root
Rectangle aPixBounds( 0, 0, 0, 0 );
if( GetFrm()->IsPageFrm() &&
static_cast < const SwPageFrm * >( GetFrm() )->IsEmptyPage() )
@@ -862,7 +896,7 @@ awt::Rectangle SAL_CALL SwAccessibleContext::getBoundsImpl(sal_Bool bRelative)
aPixBounds = GetMap()->CoreToPixel( aLogBounds.SVRect() );
if( !pParent->IsRootFrm() && bRelative)
{
- SwRect aParentLogBounds( GetBounds( pParent ) ); // twip rel to doc root
+ SwRect aParentLogBounds( GetBounds( *(GetMap()), pParent ) ); // twip rel to doc root
Point aParentPixPos( GetMap()->CoreToPixel( aParentLogBounds.SVRect() ).TopLeft() );
aPixBounds.Move( -aParentPixPos.X(), -aParentPixPos.Y() );
}
@@ -1087,24 +1121,21 @@ void SwAccessibleContext::Dispose( sal_Bool bRecursive )
DBG_MSG_CD( "dispose" )
}
- // --> OD 2008-03-10 #i85634#
-// if( GetFrm() && GetMap() )
-// GetMap()->RemoveContext( GetFrm() );
RemoveFrmFromAccessibleMap();
- // <--
ClearFrm();
pMap = 0;
bDisposing = sal_False;
}
-void SwAccessibleContext::DisposeChild( const SwFrmOrObj& rChildFrmOrObj,
+void SwAccessibleContext::DisposeChild( const SwAccessibleChild& rChildFrmOrObj,
sal_Bool bRecursive )
{
vos::OGuard aGuard(Application::GetSolarMutex());
- SwFrmOrObj aFrmOrObj( GetFrm() );
- if( IsShowing( rChildFrmOrObj ) || !aFrmOrObj.IsVisibleChildrenOnly() )
+ if ( IsShowing( *(GetMap()), rChildFrmOrObj ) ||
+ rChildFrmOrObj.AlwaysIncludeAsChild() ||
+ !SwAccessibleChild( GetFrm() ).IsVisibleChildrenOnly() )
{
// If the object could have existed before, than there is nothing to do,
// because no wrapper exists now and therefor no one is interested to
@@ -1116,14 +1147,23 @@ void SwAccessibleContext::DisposeChild( const SwFrmOrObj& rChildFrmOrObj,
sal_True );
xAccImpl->Dispose( bRecursive );
}
- else
+ else if ( rChildFrmOrObj.GetDrawObject() )
{
::vos::ORef< ::accessibility::AccessibleShape > xAccImpl =
- GetMap()->GetContextImpl( rChildFrmOrObj.GetSdrObject(),
+ GetMap()->GetContextImpl( rChildFrmOrObj.GetDrawObject(),
this, sal_True );
- DisposeShape( rChildFrmOrObj.GetSdrObject(),
+ DisposeShape( rChildFrmOrObj.GetDrawObject(),
xAccImpl.getBodyPtr() );
}
+ else if ( rChildFrmOrObj.GetWindow() )
+ {
+ AccessibleEventObject aEvent;
+ aEvent.EventId = AccessibleEventId::CHILD;
+ uno::Reference< XAccessible > xAcc =
+ rChildFrmOrObj.GetWindow()->GetAccessible();
+ aEvent.OldValue <<= xAcc;
+ FireAccessibleEvent( aEvent );
+ }
}
else if( bRecursive && rChildFrmOrObj.GetSwFrm() )
DisposeChildren( rChildFrmOrObj.GetSwFrm(), bRecursive );
@@ -1136,7 +1176,7 @@ void SwAccessibleContext::InvalidatePosOrSize( const SwRect& )
ASSERT( GetFrm() && !GetFrm()->Frm().IsEmpty(), "context should have a size" );
sal_Bool bIsOldShowingState;
- sal_Bool bIsNewShowingState = IsShowing();
+ sal_Bool bIsNewShowingState = IsShowing( *(GetMap()) );
{
vos::OGuard aShowingStateGuard( aMutex );
bIsOldShowingState = bIsShowingState;
@@ -1154,8 +1194,8 @@ void SwAccessibleContext::InvalidatePosOrSize( const SwRect& )
FireVisibleDataEvent();
}
- SwFrmOrObj aParent( GetParent() );
- if( !bIsNewShowingState && aParent.IsVisibleChildrenOnly() )
+ if( !bIsNewShowingState &&
+ SwAccessibleChild( GetParent() ).IsVisibleChildrenOnly() )
{
// The frame is now invisible -> dispose it
Dispose( sal_True );
@@ -1167,7 +1207,7 @@ void SwAccessibleContext::InvalidatePosOrSize( const SwRect& )
}
void SwAccessibleContext::InvalidateChildPosOrSize(
- const SwFrmOrObj& rChildFrmOrObj,
+ const SwAccessibleChild& rChildFrmOrObj,
const SwRect& rOldFrm )
{
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -1176,15 +1216,21 @@ void SwAccessibleContext::InvalidateChildPosOrSize(
!rChildFrmOrObj.GetSwFrm()->Frm().IsEmpty(),
"child context should have a size" );
- SwFrmOrObj aFrm( GetFrm() );
- sal_Bool bNew = rOldFrm.IsEmpty() ||
- (rOldFrm.Left() == 0 && rOldFrm.Top() == 0);
- if( IsShowing( rChildFrmOrObj ) )
+ if ( rChildFrmOrObj.AlwaysIncludeAsChild() )
+ {
+ // nothing to do;
+ return;
+ }
+
+ const bool bVisibleChildrenOnly = SwAccessibleChild( GetFrm() ).IsVisibleChildrenOnly();
+ const bool bNew = rOldFrm.IsEmpty() ||
+ ( rOldFrm.Left() == 0 && rOldFrm.Top() == 0 );
+ if( IsShowing( *(GetMap()), rChildFrmOrObj ) )
{
// If the object could have existed before, than there is nothing to do,
// because no wrapper exists now and therefor no one is interested to
// get notified of the movement.
- if( bNew || (aFrm.IsVisibleChildrenOnly() && !IsShowing( rOldFrm )) )
+ if( bNew || (bVisibleChildrenOnly && !IsShowing( rOldFrm )) )
{
if( rChildFrmOrObj.GetSwFrm() )
{
@@ -1194,15 +1240,15 @@ void SwAccessibleContext::InvalidateChildPosOrSize(
sal_True );
xAccImpl->ScrolledIn();
}
- else
+ else if ( rChildFrmOrObj.GetDrawObject() )
{
::vos::ORef< ::accessibility::AccessibleShape > xAccImpl =
- GetMap()->GetContextImpl( rChildFrmOrObj.GetSdrObject(),
+ GetMap()->GetContextImpl( rChildFrmOrObj.GetDrawObject(),
this, sal_True );
// --> OD 2004-11-29 #i37790#
if ( xAccImpl.isValid() )
{
- ScrolledInShape( rChildFrmOrObj.GetSdrObject(),
+ ScrolledInShape( rChildFrmOrObj.GetDrawObject(),
xAccImpl.getBodyPtr() );
}
else
@@ -1212,6 +1258,13 @@ void SwAccessibleContext::InvalidateChildPosOrSize(
}
// <--
}
+ else if ( rChildFrmOrObj.GetWindow() )
+ {
+ AccessibleEventObject aEvent;
+ aEvent.EventId = AccessibleEventId::CHILD;
+ aEvent.NewValue <<= (rChildFrmOrObj.GetWindow()->GetAccessible());
+ FireAccessibleEvent( aEvent );
+ }
}
}
else
@@ -1220,7 +1273,7 @@ void SwAccessibleContext::InvalidateChildPosOrSize(
// needs to be send. However, there is no wrapper existing, and so
// no notifications for grandchildren are required. If the are
// grandgrandchildren, they would be notified by the layout.
- if( aFrm.IsVisibleChildrenOnly() &&
+ if( bVisibleChildrenOnly &&
!bNew && IsShowing( rOldFrm ) )
{
if( rChildFrmOrObj.GetSwFrm() )
@@ -1231,14 +1284,19 @@ void SwAccessibleContext::InvalidateChildPosOrSize(
xAccImpl->SetParent( this );
xAccImpl->Dispose( sal_True );
}
- else
+ else if ( rChildFrmOrObj.GetDrawObject() )
{
::vos::ORef< ::accessibility::AccessibleShape > xAccImpl =
- GetMap()->GetContextImpl( rChildFrmOrObj.GetSdrObject(),
+ GetMap()->GetContextImpl( rChildFrmOrObj.GetDrawObject(),
this, sal_True );
- DisposeShape( rChildFrmOrObj.GetSdrObject(),
+ DisposeShape( rChildFrmOrObj.GetDrawObject(),
xAccImpl.getBodyPtr() );
}
+ else if ( rChildFrmOrObj.GetWindow() )
+ {
+ ASSERT( false,
+ "<SwAccessibleContext::InvalidateChildPosOrSize(..)> - not expected to handle dispose of child of type <Window>." );
+ }
}
}
}
@@ -1422,13 +1480,67 @@ OUString SwAccessibleContext::GetResource( sal_uInt16 nResId,
return OUString( sStr );
}
-// --> OD 2008-03-10 #i85634#
void SwAccessibleContext::RemoveFrmFromAccessibleMap()
{
if( bRegisteredAtAccessibleMap && GetFrm() && GetMap() )
GetMap()->RemoveContext( GetFrm() );
}
-// <--
+
+bool SwAccessibleContext::HasAdditionalAccessibleChildren()
+{
+ bool bRet( false );
+
+ if ( GetFrm()->IsTxtFrm() )
+ {
+ SwPostItMgr* pPostItMgr = GetMap()->GetShell()->GetPostItMgr();
+ if ( pPostItMgr && pPostItMgr->HasNotes() && pPostItMgr->ShowNotes() )
+ {
+ bRet = pPostItMgr->HasFrmConnectedSidebarWins( *(GetFrm()) );
+ }
+ }
+
+ return bRet;
+}
+/** get additional accessible child by index
+
+ OD 2010-01-27 #i88070#
+
+ @author OD
+*/
+Window* SwAccessibleContext::GetAdditionalAccessibleChild( const sal_Int32 nIndex )
+{
+ Window* pAdditionalAccessibleChild( 0 );
+
+ if ( GetFrm()->IsTxtFrm() )
+ {
+ SwPostItMgr* pPostItMgr = GetMap()->GetShell()->GetPostItMgr();
+ if ( pPostItMgr && pPostItMgr->HasNotes() && pPostItMgr->ShowNotes() )
+ {
+ pAdditionalAccessibleChild =
+ pPostItMgr->GetSidebarWinForFrmByIndex( *(GetFrm()), nIndex );
+ }
+ }
+
+ return pAdditionalAccessibleChild;
+}
+
+/** get all additional accessible children
+
+ OD 2010-01-27 #i88070#
+
+ @author OD
+*/
+void SwAccessibleContext::GetAdditionalAccessibleChildren( std::vector< Window* >* pChildren )
+{
+ if ( GetFrm()->IsTxtFrm() )
+ {
+ SwPostItMgr* pPostItMgr = GetMap()->GetShell()->GetPostItMgr();
+ if ( pPostItMgr && pPostItMgr->HasNotes() && pPostItMgr->ShowNotes() )
+ {
+ pPostItMgr->GetAllSidebarWinForFrm( *(GetFrm()), pChildren );
+ }
+ }
+}
#if (OSL_DEBUG_LEVEL > 1) && defined TEST_MIB
void lcl_SwAccessibleContext_DbgMsg( SwAccessibleContext *pThisAcc,
diff --git a/sw/source/core/access/acccontext.hxx b/sw/source/core/access/acccontext.hxx
index 5461995bc400..8bad4ab9074b 100644
--- a/sw/source/core/access/acccontext.hxx
+++ b/sw/source/core/access/acccontext.hxx
@@ -40,8 +40,14 @@ class SwAccessibleMap;
class SwCrsrShell;
class SdrObject;
class SwPaM;
-namespace utl { class AccessibleStateSetHelper; }
-namespace accessibility { class AccessibleShape; }
+namespace utl {
+ class AccessibleStateSetHelper;
+}
+namespace accessibility {
+ class AccessibleShape;
+}
+class SwFmtFld;
+class SwAccessibleChildContainer;
const sal_Char sAccessibleServiceName[] = "com.sun.star.accessibility.Accessible";
@@ -339,13 +345,13 @@ public:
virtual void Dispose( sal_Bool bRecursive = sal_False );
// The child object is not visible an longer and should be destroyed
- virtual void DisposeChild( const SwFrmOrObj& rFrmOrObj, sal_Bool bRecursive );
+ virtual void DisposeChild( const sw::access::SwAccessibleChild& rFrmOrObj, sal_Bool bRecursive );
// The object has been moved by the layout
virtual void InvalidatePosOrSize( const SwRect& rFrm );
// The vhild object has been moved by the layout
- virtual void InvalidateChildPosOrSize( const SwFrmOrObj& rFrmOrObj,
+ virtual void InvalidateChildPosOrSize( const sw::access::SwAccessibleChild& rFrmOrObj,
const SwRect& rFrm );
// The content may have changed (but it hasn't tohave changed)
@@ -381,6 +387,25 @@ public:
*/
void InvalidateAttr();
+ bool HasAdditionalAccessibleChildren();
+
+ /** get additional child by index
+
+ OD 2010-01-27 #i88070#
+
+ @author OD
+ */
+ Window* GetAdditionalAccessibleChild( const sal_Int32 nIndex );
+
+ /** get all additional accessible children
+
+ OD 2010-01-27 #i88070#
+
+ @author OD
+ */
+ void GetAdditionalAccessibleChildren( std::vector< Window* >* pChildren );
+
+
const ::rtl::OUString& GetName() const { return sName; }
virtual sal_Bool HasCursor(); // required by map to remember that object
diff --git a/sw/source/core/access/accdoc.cxx b/sw/source/core/access/accdoc.cxx
index 614366226df2..e0d3945e0a51 100644
--- a/sw/source/core/access/accdoc.cxx
+++ b/sw/source/core/access/accdoc.cxx
@@ -155,8 +155,10 @@ uno::Reference< XAccessible> SAL_CALL
if( mpChildWin )
{
CHECK_FOR_DEFUNC( XAccessibleContext )
- if( nIndex == GetChildCount() )
+ if ( nIndex == GetChildCount( *(GetMap()) ) )
+ {
return mpChildWin->GetAccessible();
+ }
}
return SwAccessibleContext::getAccessibleChild( nIndex );
diff --git a/sw/source/core/access/accfootnote.hxx b/sw/source/core/access/accfootnote.hxx
index 614e85f9f6b6..1c7330bc694d 100644
--- a/sw/source/core/access/accfootnote.hxx
+++ b/sw/source/core/access/accfootnote.hxx
@@ -26,9 +26,13 @@
************************************************************************/
#ifndef _ACCFOOTNOTE_HXX
#define _ACCFOOTNOTE_HXX
-#ifndef _ACCCONTEXT_HXX
-#include "acccontext.hxx"
-#endif
+
+#include <sal/types.h>
+
+#include <acccontext.hxx>
+
+class SwAccessibleMap;
+class SwFtnFrm;
class SwAccessibleFootnote : public SwAccessibleContext
{
diff --git a/sw/source/core/access/accframe.cxx b/sw/source/core/access/accframe.cxx
index 533cf358a618..043e40bb943b 100644
--- a/sw/source/core/access/accframe.cxx
+++ b/sw/source/core/access/accframe.cxx
@@ -52,22 +52,24 @@
#include <accfrmobjmap.hxx>
#include <accframe.hxx>
+using namespace sw::access;
// Regarding visibilily (or in terms of accessibility: regarding the showing
// state): A frame is visible and therfor contained in the tree if its frame
// size overlaps with the visible area. The bounding box however is the
// frame's paint area.
-sal_Int32 SwAccessibleFrame::GetChildCount( const SwRect& rVisArea,
- const SwFrm *pFrm,
- sal_Bool bInPagePreview )
+/* static */ sal_Int32 SwAccessibleFrame::GetChildCount( SwAccessibleMap& rAccMap,
+ const SwRect& rVisArea,
+ const SwFrm *pFrm,
+ sal_Bool bInPagePreview )
{
sal_Int32 nCount = 0;
- const SwFrmOrObjSList aVisList( rVisArea, pFrm );
- SwFrmOrObjSList::const_iterator aIter( aVisList.begin() );
+ const SwAccessibleChildSList aVisList( rVisArea, *pFrm, rAccMap );
+ SwAccessibleChildSList::const_iterator aIter( aVisList.begin() );
while( aIter != aVisList.end() )
{
- const SwFrmOrObj& rLower = *aIter;
+ const SwAccessibleChild& rLower = *aIter;
if( rLower.IsAccessible( bInPagePreview ) )
{
nCount++;
@@ -75,7 +77,8 @@ sal_Int32 SwAccessibleFrame::GetChildCount( const SwRect& rVisArea,
else if( rLower.GetSwFrm() )
{
// There are no unaccessible SdrObjects that count
- nCount += GetChildCount( rVisArea, rLower.GetSwFrm(),
+ nCount += GetChildCount( rAccMap,
+ rVisArea, rLower.GetSwFrm(),
bInPagePreview );
}
++aIter;
@@ -84,23 +87,25 @@ sal_Int32 SwAccessibleFrame::GetChildCount( const SwRect& rVisArea,
return nCount;
}
-SwFrmOrObj SwAccessibleFrame::GetChild( const SwRect& rVisArea,
- const SwFrm *pFrm,
- sal_Int32& rPos,
- sal_Bool bInPagePreview )
+/* static */ SwAccessibleChild SwAccessibleFrame::GetChild(
+ SwAccessibleMap& rAccMap,
+ const SwRect& rVisArea,
+ const SwFrm& rFrm,
+ sal_Int32& rPos,
+ sal_Bool bInPagePreview )
{
- SwFrmOrObj aRet;
+ SwAccessibleChild aRet;
if( rPos >= 0 )
{
- if( SwFrmOrObjMap::IsSortingRequired( pFrm ) )
+ if( SwAccessibleChildMap::IsSortingRequired( rFrm ) )
{
// We need a sorted list here
- const SwFrmOrObjMap aVisMap( rVisArea, pFrm );
- SwFrmOrObjMap::const_iterator aIter( aVisMap.begin() );
+ const SwAccessibleChildMap aVisMap( rVisArea, rFrm, rAccMap );
+ SwAccessibleChildMap::const_iterator aIter( aVisMap.begin() );
while( aIter != aVisMap.end() && !aRet.IsValid() )
{
- const SwFrmOrObj& rLower = (*aIter).second;
+ const SwAccessibleChild& rLower = (*aIter).second;
if( rLower.IsAccessible( bInPagePreview ) )
{
if( 0 == rPos )
@@ -111,7 +116,8 @@ SwFrmOrObj SwAccessibleFrame::GetChild( const SwRect& rVisArea,
else if( rLower.GetSwFrm() )
{
// There are no unaccessible SdrObjects that count
- aRet = GetChild( rVisArea, rLower.GetSwFrm(), rPos,
+ aRet = GetChild( rAccMap,
+ rVisArea, *(rLower.GetSwFrm()), rPos,
bInPagePreview );
}
++aIter;
@@ -121,11 +127,11 @@ SwFrmOrObj SwAccessibleFrame::GetChild( const SwRect& rVisArea,
{
// The unsorted list is sorted enough, because it return lower
// frames in the correct order.
- const SwFrmOrObjSList aVisList( rVisArea, pFrm );
- SwFrmOrObjSList::const_iterator aIter( aVisList.begin() );
+ const SwAccessibleChildSList aVisList( rVisArea, rFrm, rAccMap );
+ SwAccessibleChildSList::const_iterator aIter( aVisList.begin() );
while( aIter != aVisList.end() && !aRet.IsValid() )
{
- const SwFrmOrObj& rLower = *aIter;
+ const SwAccessibleChild& rLower = *aIter;
if( rLower.IsAccessible( bInPagePreview ) )
{
if( 0 == rPos )
@@ -136,7 +142,8 @@ SwFrmOrObj SwAccessibleFrame::GetChild( const SwRect& rVisArea,
else if( rLower.GetSwFrm() )
{
// There are no unaccessible SdrObjects that count
- aRet = GetChild( rVisArea, rLower.GetSwFrm(), rPos,
+ aRet = GetChild( rAccMap,
+ rVisArea, *(rLower.GetSwFrm()), rPos,
bInPagePreview );
}
++aIter;
@@ -147,22 +154,24 @@ SwFrmOrObj SwAccessibleFrame::GetChild( const SwRect& rVisArea,
return aRet;
}
-sal_Bool SwAccessibleFrame::GetChildIndex( const SwRect& rVisArea,
- const SwFrm *pFrm,
- const SwFrmOrObj& rChild,
- sal_Int32& rPos,
- sal_Bool bInPagePreview )
+/* static */ sal_Bool SwAccessibleFrame::GetChildIndex(
+ SwAccessibleMap& rAccMap,
+ const SwRect& rVisArea,
+ const SwFrm& rFrm,
+ const SwAccessibleChild& rChild,
+ sal_Int32& rPos,
+ sal_Bool bInPagePreview )
{
sal_Bool bFound = sal_False;
- if( SwFrmOrObjMap::IsSortingRequired( pFrm ) )
+ if( SwAccessibleChildMap::IsSortingRequired( rFrm ) )
{
// We need a sorted list here
- const SwFrmOrObjMap aVisMap( rVisArea, pFrm );
- SwFrmOrObjMap::const_iterator aIter( aVisMap.begin() );
+ const SwAccessibleChildMap aVisMap( rVisArea, rFrm, rAccMap );
+ SwAccessibleChildMap::const_iterator aIter( aVisMap.begin() );
while( aIter != aVisMap.end() && !bFound )
{
- const SwFrmOrObj& rLower = (*aIter).second;
+ const SwAccessibleChild& rLower = (*aIter).second;
if( rLower.IsAccessible( bInPagePreview ) )
{
if( rChild == rLower )
@@ -173,7 +182,8 @@ sal_Bool SwAccessibleFrame::GetChildIndex( const SwRect& rVisArea,
else if( rLower.GetSwFrm() )
{
// There are no unaccessible SdrObjects that count
- bFound = GetChildIndex( rVisArea, rLower.GetSwFrm(), rChild,
+ bFound = GetChildIndex( rAccMap,
+ rVisArea, *(rLower.GetSwFrm()), rChild,
rPos, bInPagePreview );
}
++aIter;
@@ -183,11 +193,11 @@ sal_Bool SwAccessibleFrame::GetChildIndex( const SwRect& rVisArea,
{
// The unsorted list is sorted enough, because it return lower
// frames in the correct order.
- const SwFrmOrObjSList aVisList( rVisArea, pFrm );
- SwFrmOrObjSList::const_iterator aIter( aVisList.begin() );
+ const SwAccessibleChildSList aVisList( rVisArea, rFrm, rAccMap );
+ SwAccessibleChildSList::const_iterator aIter( aVisList.begin() );
while( aIter != aVisList.end() && !bFound )
{
- const SwFrmOrObj& rLower = *aIter;
+ const SwAccessibleChild& rLower = *aIter;
if( rLower.IsAccessible( bInPagePreview ) )
{
if( rChild == rLower )
@@ -198,7 +208,8 @@ sal_Bool SwAccessibleFrame::GetChildIndex( const SwRect& rVisArea,
else if( rLower.GetSwFrm() )
{
// There are no unaccessible SdrObjects that count
- bFound = GetChildIndex( rVisArea, rLower.GetSwFrm(), rChild,
+ bFound = GetChildIndex( rAccMap,
+ rVisArea, *(rLower.GetSwFrm()), rChild,
rPos, bInPagePreview );
}
++aIter;
@@ -208,31 +219,31 @@ sal_Bool SwAccessibleFrame::GetChildIndex( const SwRect& rVisArea,
return bFound;
}
-SwFrmOrObj SwAccessibleFrame::GetChildAtPixel( const SwRect& rVisArea,
- const SwFrm *pFrm,
+SwAccessibleChild SwAccessibleFrame::GetChildAtPixel( const SwRect& rVisArea,
+ const SwFrm& rFrm,
const Point& rPixPos,
sal_Bool bInPagePreview,
- const SwAccessibleMap *pMap )
+ SwAccessibleMap& rAccMap )
{
- SwFrmOrObj aRet;
+ SwAccessibleChild aRet;
- if( SwFrmOrObjMap::IsSortingRequired( pFrm ) )
+ if( SwAccessibleChildMap::IsSortingRequired( rFrm ) )
{
// We need a sorted list here, and we have to reverse iterate,
// because objects in front should be returned.
- const SwFrmOrObjMap aVisMap( rVisArea, pFrm );
- SwFrmOrObjMap::const_reverse_iterator aRIter( aVisMap.rbegin() );
+ const SwAccessibleChildMap aVisMap( rVisArea, rFrm, rAccMap );
+ SwAccessibleChildMap::const_reverse_iterator aRIter( aVisMap.rbegin() );
while( aRIter != aVisMap.rend() && !aRet.IsValid() )
{
- const SwFrmOrObj& rLower = (*aRIter).second;
+ const SwAccessibleChild& rLower = (*aRIter).second;
// A frame is returned if it's frame size is inside the visarea
// and the positiion is inside the frame's paint area.
if( rLower.IsAccessible( bInPagePreview ) )
{
- SwRect aLogBounds( rLower.GetBounds( ) );
+ SwRect aLogBounds( rLower.GetBounds( rAccMap ) );
if( !aLogBounds.IsEmpty() )
{
- Rectangle aPixBounds( pMap->CoreToPixel( aLogBounds.SVRect() ) );
+ Rectangle aPixBounds( rAccMap.CoreToPixel( aLogBounds.SVRect() ) );
if( aPixBounds.IsInside( rPixPos ) )
aRet = rLower;
}
@@ -240,8 +251,8 @@ SwFrmOrObj SwAccessibleFrame::GetChildAtPixel( const SwRect& rVisArea,
else if( rLower.GetSwFrm() )
{
// There are no unaccessible SdrObjects that count
- aRet = GetChildAtPixel( rVisArea, rLower.GetSwFrm(), rPixPos,
- bInPagePreview, pMap );
+ aRet = GetChildAtPixel( rVisArea, *(rLower.GetSwFrm()), rPixPos,
+ bInPagePreview, rAccMap );
}
aRIter++;
}
@@ -251,19 +262,19 @@ SwFrmOrObj SwAccessibleFrame::GetChildAtPixel( const SwRect& rVisArea,
// The unsorted list is sorted enough, because it returns lower
// frames in the correct order. Morover, we can iterate forward,
// because the lowers don't overlap!
- const SwFrmOrObjSList aVisList( rVisArea, pFrm );
- SwFrmOrObjSList::const_iterator aIter( aVisList.begin() );
+ const SwAccessibleChildSList aVisList( rVisArea, rFrm, rAccMap );
+ SwAccessibleChildSList::const_iterator aIter( aVisList.begin() );
while( aIter != aVisList.end() && !aRet.IsValid() )
{
- const SwFrmOrObj& rLower = *aIter;
+ const SwAccessibleChild& rLower = *aIter;
// A frame is returned if it's frame size is inside the visarea
// and the positiion is inside the frame's paint area.
if( rLower.IsAccessible( bInPagePreview ) )
{
- SwRect aLogBounds( rLower.GetBounds( ) );
+ SwRect aLogBounds( rLower.GetBounds( rAccMap ) );
if( !aLogBounds.IsEmpty() )
{
- Rectangle aPixBounds( pMap->CoreToPixel( aLogBounds.SVRect() ) );
+ Rectangle aPixBounds( rAccMap.CoreToPixel( aLogBounds.SVRect() ) );
if( aPixBounds.IsInside( rPixPos ) )
aRet = rLower;
}
@@ -271,8 +282,8 @@ SwFrmOrObj SwAccessibleFrame::GetChildAtPixel( const SwRect& rVisArea,
else if( rLower.GetSwFrm() )
{
// There are no unaccessible SdrObjects that count
- aRet = GetChildAtPixel( rVisArea, rLower.GetSwFrm(), rPixPos,
- bInPagePreview, pMap );
+ aRet = GetChildAtPixel( rVisArea, *(rLower.GetSwFrm()), rPixPos,
+ bInPagePreview, rAccMap );
}
++aIter;
}
@@ -281,18 +292,20 @@ SwFrmOrObj SwAccessibleFrame::GetChildAtPixel( const SwRect& rVisArea,
return aRet;
}
-void SwAccessibleFrame::GetChildren( const SwRect& rVisArea, const SwFrm *pFrm,
- ::std::list< SwFrmOrObj >& rChildren,
- sal_Bool bInPagePreview )
+/* static */ void SwAccessibleFrame::GetChildren( SwAccessibleMap& rAccMap,
+ const SwRect& rVisArea,
+ const SwFrm& rFrm,
+ ::std::list< SwAccessibleChild >& rChildren,
+ sal_Bool bInPagePreview )
{
- if( SwFrmOrObjMap::IsSortingRequired( pFrm ) )
+ if( SwAccessibleChildMap::IsSortingRequired( rFrm ) )
{
// We need a sorted list here
- const SwFrmOrObjMap aVisMap( rVisArea, pFrm );
- SwFrmOrObjMap::const_iterator aIter( aVisMap.begin() );
+ const SwAccessibleChildMap aVisMap( rVisArea, rFrm, rAccMap );
+ SwAccessibleChildMap::const_iterator aIter( aVisMap.begin() );
while( aIter != aVisMap.end() )
{
- const SwFrmOrObj& rLower = (*aIter).second;
+ const SwAccessibleChild& rLower = (*aIter).second;
if( rLower.IsAccessible( bInPagePreview ) )
{
rChildren.push_back( rLower );
@@ -300,8 +313,8 @@ void SwAccessibleFrame::GetChildren( const SwRect& rVisArea, const SwFrm *pFrm,
else if( rLower.GetSwFrm() )
{
// There are no unaccessible SdrObjects that count
- GetChildren( rVisArea, rLower.GetSwFrm(), rChildren,
- bInPagePreview );
+ GetChildren( rAccMap, rVisArea, *(rLower.GetSwFrm()),
+ rChildren, bInPagePreview );
}
++aIter;
}
@@ -310,11 +323,11 @@ void SwAccessibleFrame::GetChildren( const SwRect& rVisArea, const SwFrm *pFrm,
{
// The unsorted list is sorted enough, because it return lower
// frames in the correct order.
- const SwFrmOrObjSList aVisList( rVisArea, pFrm );
- SwFrmOrObjSList::const_iterator aIter( aVisList.begin() );
+ const SwAccessibleChildSList aVisList( rVisArea, rFrm, rAccMap );
+ SwAccessibleChildSList::const_iterator aIter( aVisList.begin() );
while( aIter != aVisList.end() )
{
- const SwFrmOrObj& rLower = *aIter;
+ const SwAccessibleChild& rLower = *aIter;
if( rLower.IsAccessible( bInPagePreview ) )
{
rChildren.push_back( rLower );
@@ -322,21 +335,22 @@ void SwAccessibleFrame::GetChildren( const SwRect& rVisArea, const SwFrm *pFrm,
else if( rLower.GetSwFrm() )
{
// There are no unaccessible SdrObjects that count
- GetChildren( rVisArea, rLower.GetSwFrm(), rChildren,
- bInPagePreview );
+ GetChildren( rAccMap, rVisArea, *(rLower.GetSwFrm()),
+ rChildren, bInPagePreview );
}
++aIter;
}
}
}
-SwRect SwAccessibleFrame::GetBounds( const SwFrm *pFrm )
+SwRect SwAccessibleFrame::GetBounds( const SwAccessibleMap& rAccMap,
+ const SwFrm *pFrm )
{
if( !pFrm )
pFrm = GetFrm();
- SwFrmOrObj aFrm( pFrm );
- SwRect aBounds( aFrm.GetBounds().Intersection( maVisArea ) );
+ SwAccessibleChild aFrm( pFrm );
+ SwRect aBounds( aFrm.GetBounds( rAccMap ).Intersection( maVisArea ) );
return aBounds;
}
@@ -359,7 +373,7 @@ sal_Bool SwAccessibleFrame::IsEditable( ViewShell *pVSh ) const
sal_Bool SwAccessibleFrame::IsOpaque( ViewShell *pVSh ) const
{
- SwFrmOrObj aFrm( GetFrm() );
+ SwAccessibleChild aFrm( GetFrm() );
if( !aFrm.GetSwFrm() )
return sal_False;
@@ -423,71 +437,10 @@ SwAccessibleFrame::~SwAccessibleFrame()
{
}
-const SwFrm *SwAccessibleFrame::GetParent( const SwFrmOrObj& rFrmOrObj,
- sal_Bool bInPagePreview )
+/* static */ const SwFrm* SwAccessibleFrame::GetParent( const SwAccessibleChild& rFrmOrObj,
+ sal_Bool bInPagePreview )
{
- SwFrmOrObj aParent;
- const SwFrm *pFrm = rFrmOrObj.GetSwFrm();
- if( pFrm )
- {
- if( pFrm->IsFlyFrm() )
- {
- const SwFlyFrm *pFly = static_cast< const SwFlyFrm *>( pFrm );
- if( pFly->IsFlyInCntFrm() )
- {
- // For FLY_AS_CHAR the parent is the anchor
- aParent = pFly->GetAnchorFrm();
- ASSERT( aParent.IsAccessible( bInPagePreview ),
- "parent is not accessible" );
- }
- else
- {
- // In any other case the parent is the root frm
- // (in page preview, the page frame)
- if( bInPagePreview )
- aParent = pFly->FindPageFrm();
- else
- aParent = pFly->FindRootFrm();
- }
- }
- else
- {
- SwFrmOrObj aUpper( pFrm->GetUpper() );
- while( aUpper.GetSwFrm() && !aUpper.IsAccessible(bInPagePreview) )
- aUpper = aUpper.GetSwFrm()->GetUpper();
- aParent = aUpper;
- }
- }
- else if( rFrmOrObj.GetSdrObject() )
- {
- const SwDrawContact *pContact =
- static_cast< const SwDrawContact* >(
- GetUserCall( rFrmOrObj.GetSdrObject() ) );
- ASSERT( pContact, "sdr contact is missing" );
- if( pContact )
- {
- const SwFrmFmt *pFrmFmt = pContact->GetFmt();
- ASSERT( pFrmFmt, "frame format is missing" );
- if (pFrmFmt && FLY_AS_CHAR == pFrmFmt->GetAnchor().GetAnchorId())
- {
- // For FLY_AS_CHAR the parent is the anchor
- aParent = pContact->GetAnchorFrm();
- ASSERT( aParent.IsAccessible( bInPagePreview ),
- "parent is not accessible" );
-
- }
- else
- {
- // In any other case the parent is the root frm
- if( bInPagePreview )
- aParent = pContact->GetAnchorFrm()->FindPageFrm();
- else
- aParent = pContact->GetAnchorFrm()->FindRootFrm();
- }
- }
- }
-
- return aParent.GetSwFrm();
+ return rFrmOrObj.GetParent( bInPagePreview );
}
String SwAccessibleFrame::GetFormattedPageNumber() const
@@ -501,3 +454,44 @@ String SwAccessibleFrame::GetFormattedPageNumber() const
String sRet( FormatNumber( nPageNum, nFmt ) );
return sRet;
}
+
+sal_Int32 SwAccessibleFrame::GetChildCount( SwAccessibleMap& rAccMap ) const
+{
+ return GetChildCount( rAccMap, maVisArea, mpFrm, IsInPagePreview() );
+}
+
+sw::access::SwAccessibleChild SwAccessibleFrame::GetChild(
+ SwAccessibleMap& rAccMap,
+ sal_Int32 nPos ) const
+{
+ return SwAccessibleFrame::GetChild( rAccMap, maVisArea, *mpFrm, nPos, IsInPagePreview() );
+}
+
+sal_Int32 SwAccessibleFrame::GetChildIndex( SwAccessibleMap& rAccMap,
+ const sw::access::SwAccessibleChild& rChild ) const
+{
+ sal_Int32 nPos = 0;
+ return GetChildIndex( rAccMap, maVisArea, *mpFrm, rChild, nPos, IsInPagePreview() )
+ ? nPos
+ : -1L;
+}
+
+sw::access::SwAccessibleChild SwAccessibleFrame::GetChildAtPixel(
+ const Point& rPos,
+ SwAccessibleMap& rAccMap ) const
+{
+ return GetChildAtPixel( maVisArea, *mpFrm, rPos, IsInPagePreview(), rAccMap );
+}
+
+void SwAccessibleFrame::GetChildren( SwAccessibleMap& rAccMap,
+ ::std::list< sw::access::SwAccessibleChild >& rChildren ) const
+{
+ GetChildren( rAccMap, maVisArea, *mpFrm, rChildren, IsInPagePreview() );
+}
+
+sal_Bool SwAccessibleFrame::IsShowing( const SwAccessibleMap& rAccMap,
+ const sw::access::SwAccessibleChild& rFrmOrObj ) const
+{
+ return IsShowing( rFrmOrObj.GetBox( rAccMap ) );
+}
+
diff --git a/sw/source/core/access/accframe.hxx b/sw/source/core/access/accframe.hxx
index d1b256958fdb..48da1bdbb9cb 100644
--- a/sw/source/core/access/accframe.hxx
+++ b/sw/source/core/access/accframe.hxx
@@ -27,14 +27,22 @@
#ifndef _ACCFRAME_HXX
#define _ACCFRAME_HXX
+#include <swrect.hxx>
+
#include <sal/types.h>
+#include <tools/string.hxx>
#include <list>
#include <accfrmobj.hxx>
-// Any method of this class must be called with an acquired solar mutex!
-
class SwAccessibleMap;
+class SwFrm;
+class ViewShell;
+namespace sw { namespace access {
+ class SwAccessibleChild;
+}}
+
+// Any method of this class must be called with an acquired solar mutex!
class SwAccessibleFrame
{
@@ -45,26 +53,34 @@ class SwAccessibleFrame
protected:
// --> OD 2007-06-29 #i77106#
// method needs to be called by new class <SwAccessibleTableColHeaders>
- static sal_Int32 GetChildCount( const SwRect& rVisArea,
+ static sal_Int32 GetChildCount( SwAccessibleMap& rAccMap,
+ const SwRect& rVisArea,
const SwFrm *pFrm,
sal_Bool bInPagePreview );
private:
- static SwFrmOrObj GetChild( const SwRect& rVisArea,
- const SwFrm *pFrm,
- sal_Int32& rPos,
- sal_Bool bInPagePreview);
- static sal_Bool GetChildIndex( const SwRect& rVisArea,
- const SwFrm *pFrm,
- const SwFrmOrObj& rChild,
- sal_Int32& rPos,
- sal_Bool bInPagePreview );
- static SwFrmOrObj GetChildAtPixel( const SwRect& rVisArea,
- const SwFrm *pFrm,
- const Point& rPos,
- sal_Bool bInPagePreview,
- const SwAccessibleMap *pMap );
- static void GetChildren( const SwRect& rVisArea, const SwFrm *pFrm,
- ::std::list< SwFrmOrObj >& rChildren,
+ static sw::access::SwAccessibleChild GetChild( SwAccessibleMap& rAccMap,
+ const SwRect& rVisArea,
+ const SwFrm& rFrm,
+ sal_Int32& rPos,
+ sal_Bool bInPagePreview);
+
+ static sal_Bool GetChildIndex( SwAccessibleMap& rAccMap,
+ const SwRect& rVisArea,
+ const SwFrm& rFrm,
+ const sw::access::SwAccessibleChild& rChild,
+ sal_Int32& rPos,
+ sal_Bool bInPagePreview );
+
+ static sw::access::SwAccessibleChild GetChildAtPixel( const SwRect& rVisArea,
+ const SwFrm& rFrm,
+ const Point& rPos,
+ sal_Bool bInPagePreview,
+ SwAccessibleMap& rAccMap );
+
+ static void GetChildren( SwAccessibleMap& rAccMap,
+ const SwRect& rVisArea,
+ const SwFrm& rFrm,
+ ::std::list< sw::access::SwAccessibleChild >& rChildren,
sal_Bool bInPagePreview );
protected:
@@ -73,9 +89,10 @@ protected:
sal_Bool IsOpaque( ViewShell *pVSh ) const;
+ sal_Bool IsShowing( const SwAccessibleMap& rAccMap,
+ const sw::access::SwAccessibleChild& rFrmOrObj ) const;
inline sal_Bool IsShowing( const SwRect& rFrm ) const;
- inline sal_Bool IsShowing( const SwFrmOrObj& rFrmOrObj ) const;
- inline sal_Bool IsShowing() const;
+ inline sal_Bool IsShowing( const SwAccessibleMap& rAccMap ) const;
inline sal_Bool IsInPagePreview() const
{
@@ -94,17 +111,20 @@ protected:
public:
// Return the SwFrm this context is attached to.
- const SwFrm *GetFrm() const { return mpFrm; };
-
+ const SwFrm* GetFrm() const { return mpFrm; };
- static const SwFrm *GetParent( const SwFrmOrObj& rFrmOrObj,
+ static const SwFrm* GetParent( const sw::access::SwAccessibleChild& rFrmOrObj,
sal_Bool bInPagePreview );
+ sal_Int32 GetChildIndex( SwAccessibleMap& rAccMap,
+ const sw::access::SwAccessibleChild& rChild ) const;
+
protected:
// Return the bounding box of the frame clipped to the vis area. If
// no frame is specified, use this' frame.
- SwRect GetBounds( const SwFrm *pFrm=0 );
+ SwRect GetBounds( const SwAccessibleMap& rAccMap,
+ const SwFrm *pFrm = 0 );
// Return the upper that has a context attached. This might be
// another one than the immediate upper.
@@ -112,12 +132,13 @@ protected:
// Return the lower count or the nth lower, there the lowers have a
// not be same one as the SwFrm's lowers
- inline sal_Int32 GetChildCount() const;
- inline SwFrmOrObj GetChild( sal_Int32 nPos ) const;
- inline sal_Int32 GetChildIndex( const SwFrmOrObj& rChild ) const;
- inline SwFrmOrObj GetChildAtPixel( const Point& rPos,
- const SwAccessibleMap *pMap ) const;
- inline void GetChildren( ::std::list< SwFrmOrObj >& rChildren ) const;
+ sal_Int32 GetChildCount( SwAccessibleMap& rAccMap ) const;
+ sw::access::SwAccessibleChild GetChild( SwAccessibleMap& rAccMap,
+ sal_Int32 nPos ) const;
+ sw::access::SwAccessibleChild GetChildAtPixel( const Point& rPos,
+ SwAccessibleMap& rAccMap ) const;
+ void GetChildren( SwAccessibleMap& rAccMap,
+ ::std::list< sw::access::SwAccessibleChild >& rChildren ) const;
inline void SetVisArea( const SwRect& rNewVisArea )
{
@@ -138,48 +159,17 @@ inline sal_Bool SwAccessibleFrame::IsShowing( const SwRect& rFrm ) const
return rFrm.IsOver( maVisArea );
}
-inline sal_Bool SwAccessibleFrame::IsShowing( const SwFrmOrObj& rFrmOrObj ) const
-{
- return IsShowing( rFrmOrObj.GetBox() );
-}
-
-inline sal_Bool SwAccessibleFrame::IsShowing() const
+inline sal_Bool SwAccessibleFrame::IsShowing( const SwAccessibleMap& rAccMap ) const
{
- SwFrmOrObj aFrmOrObj( GetFrm() );
- return IsShowing( aFrmOrObj );
+ sw::access::SwAccessibleChild aFrmOrObj( GetFrm() );
+ return IsShowing( rAccMap, aFrmOrObj );
}
inline const SwFrm *SwAccessibleFrame::GetParent() const
{
- SwFrmOrObj aFrmOrObj( GetFrm() );
+ sw::access::SwAccessibleChild aFrmOrObj( GetFrm() );
return GetParent( aFrmOrObj, IsInPagePreview() );
}
-inline sal_Int32 SwAccessibleFrame::GetChildCount() const
-{
- return GetChildCount( maVisArea, mpFrm, IsInPagePreview() );
-}
-
-inline SwFrmOrObj SwAccessibleFrame::GetChild( sal_Int32 nPos ) const
-{
- return GetChild( maVisArea, mpFrm, nPos, IsInPagePreview() );
-}
-
-inline sal_Int32 SwAccessibleFrame::GetChildIndex( const SwFrmOrObj& rChild ) const
-{
- sal_Int32 nPos = 0;
- return GetChildIndex( maVisArea, mpFrm, rChild, nPos, IsInPagePreview() ) ? nPos : -1L;
-}
-
-inline SwFrmOrObj SwAccessibleFrame::GetChildAtPixel( const Point& rPos,
- const SwAccessibleMap *pMap ) const
-{
- return GetChildAtPixel( maVisArea, mpFrm, rPos, IsInPagePreview(), pMap );
-}
-
-inline void SwAccessibleFrame::GetChildren( ::std::list< SwFrmOrObj >& rChildren ) const
-{
- GetChildren( maVisArea, mpFrm, rChildren, IsInPagePreview() );
-}
#endif
diff --git a/sw/source/core/access/accframebase.hxx b/sw/source/core/access/accframebase.hxx
index d1623591ad05..faa4bb492697 100644
--- a/sw/source/core/access/accframebase.hxx
+++ b/sw/source/core/access/accframebase.hxx
@@ -26,13 +26,15 @@
************************************************************************/
#ifndef _ACCFRAMEBASE_HXX
#define _ACCFRAMEBASE_HXX
-#ifndef _ACCCONTEXT_HXX
-#include "acccontext.hxx"
-#endif
+
+#include <acccontext.hxx>
+
+#include <calbck.hxx>
class SwFlyFrm;
-class SwAccessibleFrameBase : public SwAccessibleContext, public SwClient
+class SwAccessibleFrameBase : public SwAccessibleContext,
+ public SwClient
{
sal_Bool bIsSelected; // protected by base class mutex
diff --git a/sw/source/core/access/accfrmobj.cxx b/sw/source/core/access/accfrmobj.cxx
index 131610c66f56..47b4007c1496 100644
--- a/sw/source/core/access/accfrmobj.cxx
+++ b/sw/source/core/access/accfrmobj.cxx
@@ -28,38 +28,401 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_sw.hxx"
+#include <accfrmobj.hxx>
+
+#include <accmap.hxx>
+#include <acccontext.hxx>
+#include <viewsh.hxx>
+#include <rootfrm.hxx>
+#include <flyfrm.hxx>
+#include <pagefrm.hxx>
+#include <cellfrm.hxx>
+#include <swtable.hxx>
+#include <dflyobj.hxx>
#include <frmfmt.hxx>
#include <fmtanchr.hxx>
-#include <accfrmobj.hxx>
#include <dcontact.hxx>
-#include <cellfrm.hxx>
-sal_Bool SwFrmOrObj::IsAccessible( sal_Bool bPagePreview ) const
+#include <vcl/window.hxx>
+
+namespace css = ::com::sun::star;
+
+namespace sw { namespace access {
+
+SwAccessibleChild::SwAccessibleChild()
+ : mpFrm( 0 )
+ , mpDrawObj( 0 )
+ , mpWindow( 0 )
+{}
+
+SwAccessibleChild::SwAccessibleChild( const SdrObject* pDrawObj )
+ : mpFrm( 0 )
+ , mpDrawObj( 0 )
+ , mpWindow( 0 )
+{
+ Init( pDrawObj );
+}
+
+SwAccessibleChild::SwAccessibleChild( const SwFrm* pFrm )
+ : mpFrm( 0 )
+ , mpDrawObj( 0 )
+ , mpWindow( 0 )
+{
+ Init( pFrm );
+}
+
+SwAccessibleChild::SwAccessibleChild( Window* pWindow )
+ : mpFrm( 0 )
+ , mpDrawObj( 0 )
+ , mpWindow( 0 )
+{
+ Init( pWindow );
+}
+
+
+SwAccessibleChild::SwAccessibleChild( const SwFrm* pFrm,
+ const SdrObject* pDrawObj,
+ Window* pWindow )
+{
+ if ( pFrm )
+ {
+ Init( pFrm );
+ }
+ else if ( pDrawObj )
+ {
+ Init( pDrawObj );
+ }
+ else if ( pWindow )
+ {
+ Init( pWindow );
+ }
+ ASSERT( (!pFrm || pFrm == mpFrm) &&
+ (!pDrawObj || pDrawObj == mpDrawObj) &&
+ (!pWindow || pWindow == mpWindow),
+ "invalid frame/object/window combination" );
+
+}
+
+void SwAccessibleChild::Init( const SdrObject* pDrawObj )
+{
+ mpDrawObj = pDrawObj;
+ mpFrm = mpDrawObj && mpDrawObj->ISA(SwVirtFlyDrawObj)
+ ? static_cast < const SwVirtFlyDrawObj * >( mpDrawObj )->GetFlyFrm()
+ : 0;
+ mpWindow = 0;
+}
+
+void SwAccessibleChild::Init( const SwFrm* pFrm )
+{
+ mpFrm = pFrm;
+ mpDrawObj = mpFrm && mpFrm->IsFlyFrm()
+ ? static_cast < const SwFlyFrm * >( mpFrm )->GetVirtDrawObj()
+ : 0;
+ mpWindow = 0;
+}
+
+void SwAccessibleChild::Init( Window* pWindow )
+{
+ mpWindow = pWindow;
+ mpFrm = 0;
+ mpDrawObj = 0;
+}
+
+bool SwAccessibleChild::IsAccessible( sal_Bool bPagePreview ) const
+{
+ bool bRet( false );
+
+ if ( mpFrm )
+ {
+ bRet = mpFrm->IsAccessibleFrm() &&
+ ( !mpFrm->IsCellFrm() ||
+ static_cast<const SwCellFrm *>( mpFrm )->GetTabBox()->GetSttNd() != 0 ) &&
+ !mpFrm->IsInCoveredCell() &&
+ ( bPagePreview ||
+ !mpFrm->IsPageFrm() );
+ }
+ else if ( mpDrawObj )
+ {
+ bRet = true;
+ }
+ else if ( mpWindow )
+ {
+ bRet = true;
+ }
+
+ return bRet;
+}
+
+bool SwAccessibleChild::IsBoundAsChar() const
+{
+ bool bRet( false );
+
+ if ( mpFrm )
+ {
+ bRet = mpFrm->IsFlyFrm() &&
+ static_cast< const SwFlyFrm *>(mpFrm)->IsFlyInCntFrm();
+ }
+ else if ( mpDrawObj )
+ {
+ const SwFrmFmt* mpFrmFmt = ::FindFrmFmt( mpDrawObj );
+ bRet = mpFrmFmt
+ ? (FLY_AS_CHAR == mpFrmFmt->GetAnchor().GetAnchorId())
+ : false;
+ }
+ else if ( mpWindow )
+ {
+ bRet = false;
+ }
+
+ return bRet;
+}
+
+SwAccessibleChild::SwAccessibleChild( const SwAccessibleChild& r )
+ : mpFrm( r.mpFrm )
+ , mpDrawObj( r.mpDrawObj )
+ , mpWindow( r.mpWindow )
+{}
+
+SwAccessibleChild& SwAccessibleChild::operator=( const SwAccessibleChild& r )
+{
+ mpDrawObj = r.mpDrawObj;
+ mpFrm = r.mpFrm;
+ mpWindow = r.mpWindow;
+
+ return *this;
+}
+
+SwAccessibleChild& SwAccessibleChild::operator=( const SdrObject* pDrawObj )
{
- return ( pFrm && pFrm->IsAccessibleFrm() &&
- ( !pFrm->IsCellFrm() ||
- static_cast<const SwCellFrm *>( pFrm )->GetTabBox()->GetSttNd() != 0 ) &&
- !pFrm->IsInCoveredCell() &&
- ( bPagePreview || !pFrm->IsPageFrm() ) ) ||
- pObj;
+ Init( pDrawObj );
+ return *this;
}
-sal_Bool SwFrmOrObj::IsBoundAsChar() const
+SwAccessibleChild& SwAccessibleChild::operator=( const SwFrm* pFrm )
{
- // currently only SwFrms are accessible
- if( pFrm )
+ Init( pFrm );
+ return *this;
+}
+
+SwAccessibleChild& SwAccessibleChild::operator=( Window* pWindow )
+{
+ Init( pWindow );
+ return *this;
+}
+
+bool SwAccessibleChild::operator==( const SwAccessibleChild& r ) const
+{
+ return mpFrm == r.mpFrm &&
+ mpDrawObj == r.mpDrawObj &&
+ mpWindow == r.mpWindow;
+}
+
+bool SwAccessibleChild::IsValid() const
+{
+ return mpFrm != 0 ||
+ mpDrawObj != 0 ||
+ mpWindow != 0;
+}
+
+const SdrObject* SwAccessibleChild::GetDrawObject() const
+{
+ return mpDrawObj;
+}
+
+const SwFrm *SwAccessibleChild::GetSwFrm() const
+{
+ return mpFrm;
+}
+
+Window* SwAccessibleChild::GetWindow() const
+{
+ return mpWindow;
+}
+
+bool SwAccessibleChild::IsVisibleChildrenOnly() const
+{
+ bool bRet( false );
+
+ if ( !mpFrm )
{
- return pFrm->IsFlyFrm() &&
- static_cast< const SwFlyFrm *>(pFrm)->IsFlyInCntFrm();
+ bRet = true;
}
else
{
- const SwFrmFmt *pFrmFmt = pObj ? ::FindFrmFmt( pObj ) : 0;
- return (pFrmFmt)
- ? static_cast<sal_Bool>(FLY_AS_CHAR ==
- pFrmFmt->GetAnchor().GetAnchorId())
- : sal_False;
+ bRet = mpFrm->IsRootFrm() ||
+ !( mpFrm->IsTabFrm() ||
+ mpFrm->IsInTab() ||
+ ( IsBoundAsChar() &&
+ static_cast<const SwFlyFrm*>(mpFrm)->GetAnchorFrm()->IsInTab() ) );
+ }
+
+ return bRet;
+}
+
+SwRect SwAccessibleChild::GetBox( const SwAccessibleMap& rAccMap ) const
+{
+ SwRect aBox;
+
+ if ( mpFrm )
+ {
+ if ( mpFrm->IsPageFrm() &&
+ static_cast< const SwPageFrm * >( mpFrm )->IsEmptyPage() )
+ {
+ aBox = SwRect( mpFrm->Frm().Left(), mpFrm->Frm().Top()-1, 1, 1 );
+ }
+ else if ( mpFrm->IsTabFrm() )
+ {
+ aBox = SwRect( mpFrm->Frm() );
+ aBox.Intersection( mpFrm->GetUpper()->Frm() );
+ }
+ else
+ {
+ aBox = mpFrm->Frm();
+ }
}
+ else if( mpDrawObj )
+ {
+ aBox = SwRect( mpDrawObj->GetCurrentBoundRect() );
+ }
+ else if ( mpWindow )
+ {
+ aBox = SwRect( rAccMap.GetShell()->GetWin()->PixelToLogic(
+ Rectangle( mpWindow->GetPosPixel(),
+ mpWindow->GetSizePixel() ) ) );
}
+ return aBox;
+}
+
+SwRect SwAccessibleChild::GetBounds( const SwAccessibleMap& rAccMap ) const
+{
+ SwRect aBound;
+
+ if( mpFrm )
+ {
+ if( mpFrm->IsPageFrm() &&
+ static_cast< const SwPageFrm * >( mpFrm )->IsEmptyPage() )
+ {
+ aBound = SwRect( mpFrm->Frm().Left(), mpFrm->Frm().Top()-1, 0, 0 );
+ }
+ else
+ aBound = mpFrm->PaintArea();
+ }
+ else if( mpDrawObj )
+ {
+ aBound = GetBox( rAccMap );
+ }
+ else if ( mpWindow )
+ {
+ aBound = GetBox( rAccMap );
+ }
+
+ return aBound;
+}
+
+bool SwAccessibleChild::AlwaysIncludeAsChild() const
+{
+ bool bAlwaysIncludedAsChild( false );
+
+ if ( mpWindow )
+ {
+ bAlwaysIncludedAsChild = true;
+ }
+
+ return bAlwaysIncludedAsChild;
+}
+
+const SwFrm* SwAccessibleChild::GetParent( const sal_Bool bInPagePreview ) const
+{
+ const SwFrm* pParent( 0 );
+
+ if ( mpFrm )
+ {
+ if( mpFrm->IsFlyFrm() )
+ {
+ const SwFlyFrm* pFly = static_cast< const SwFlyFrm *>( mpFrm );
+ if( pFly->IsFlyInCntFrm() )
+ {
+ // For FLY_AS_CHAR the parent is the anchor
+ pParent = pFly->GetAnchorFrm();
+ ASSERT( SwAccessibleChild( pParent ).IsAccessible( bInPagePreview ),
+ "parent is not accessible" );
+ }
+ else
+ {
+ // In any other case the parent is the root frm
+ // (in page preview, the page frame)
+ if( bInPagePreview )
+ pParent = pFly->FindPageFrm();
+ else
+ pParent = pFly->FindRootFrm();
+ }
+ }
+ else
+ {
+ SwAccessibleChild aUpper( mpFrm->GetUpper() );
+ while( aUpper.GetSwFrm() && !aUpper.IsAccessible(bInPagePreview) )
+ {
+ aUpper = aUpper.GetSwFrm()->GetUpper();
+ }
+ pParent = aUpper.GetSwFrm();
+ }
+ }
+ else if( mpDrawObj )
+ {
+ const SwDrawContact *pContact =
+ static_cast< const SwDrawContact* >( GetUserCall( mpDrawObj ) );
+ ASSERT( pContact, "sdr contact is missing" );
+ if( pContact )
+ {
+ const SwFrmFmt *pFrmFmt = pContact->GetFmt();
+ ASSERT( pFrmFmt, "frame format is missing" );
+ if( pFrmFmt && FLY_AS_CHAR == pFrmFmt->GetAnchor().GetAnchorId() )
+ {
+ // For FLY_AS_CHAR the parent is the anchor
+ pParent = pContact->GetAnchorFrm();
+ ASSERT( SwAccessibleChild( pParent ).IsAccessible( bInPagePreview ),
+ "parent is not accessible" );
+
+ }
+ else
+ {
+ // In any other case the parent is the root frm
+ if( bInPagePreview )
+ pParent = pContact->GetAnchorFrm()->FindPageFrm();
+ else
+ pParent = pContact->GetAnchorFrm()->FindRootFrm();
+ }
+ }
+ }
+ else if ( mpWindow )
+ {
+ css::uno::Reference < css::accessibility::XAccessible > xAcc =
+ mpWindow->GetAccessible();
+ if ( xAcc.is() )
+ {
+ css::uno::Reference < css::accessibility::XAccessibleContext > xAccContext =
+ xAcc->getAccessibleContext();
+ if ( xAccContext.is() )
+ {
+ css::uno::Reference < css::accessibility::XAccessible > xAccParent =
+ xAccContext->getAccessibleParent();
+ if ( xAccParent.is() )
+ {
+ SwAccessibleContext* pAccParentImpl =
+ dynamic_cast< SwAccessibleContext *>( xAccParent.get() );
+ if ( pAccParentImpl )
+ {
+ pParent = pAccParentImpl->GetFrm();
+ }
+ }
+ }
+ }
+ }
+
+ return pParent;
+}
+
+} } // eof of namespace sw::access
+
diff --git a/sw/source/core/access/accfrmobj.hxx b/sw/source/core/access/accfrmobj.hxx
index 45414f8cc6e0..76113c62eae3 100644
--- a/sw/source/core/access/accfrmobj.hxx
+++ b/sw/source/core/access/accfrmobj.hxx
@@ -26,192 +26,70 @@
************************************************************************/
#ifndef _ACCFRMOBJ_HXX
#define _ACCFRMOBJ_HXX
-#include <flyfrm.hxx>
-#include <pagefrm.hxx>
-#include <dflyobj.hxx>
-#include <swtable.hxx>
-class SwFrmOrObj
-{
- const SdrObject *pObj;
- const SwFrm *pFrm;
-
- inline void Init( const SdrObject *pO );
- inline void Init( const SwFrm *pF );
-
-public:
-
- inline SwFrmOrObj();
- inline SwFrmOrObj( const SdrObject *pO );
- inline SwFrmOrObj( const SwFrm *pF );
- inline SwFrmOrObj( const SwFrm *pF, const SdrObject *pO );
- inline SwFrmOrObj( const SwFrmOrObj& r );
+#include <sal/types.h>
- inline SwFrmOrObj& operator=( const SwFrmOrObj& r );
- inline SwFrmOrObj& operator=( const SdrObject *pO );
- inline SwFrmOrObj& operator=( const SwFrm *pF );
+class SwAccessibleMap;
+class SwFrm;
+class SdrObject;
+class Window;
+class SwRect;
- inline sal_Bool operator==( const SwFrmOrObj& r ) const;
- inline sal_Bool operator==( const SdrObject *pO ) const;
- inline sal_Bool operator==( const SwFrm *pF ) const;
-
- inline sal_Bool IsValid() const;
-
- inline const SdrObject *GetSdrObject() const;
- inline const SwFrm *GetSwFrm() const;
-
- sal_Bool IsAccessible( sal_Bool bPagePreview ) const;
- sal_Bool IsBoundAsChar() const;
- inline sal_Bool IsVisibleChildrenOnly() const;
- inline SwRect GetBox() const;
- inline SwRect GetBounds() const;
-};
+namespace sw { namespace access {
-inline void SwFrmOrObj::Init( const SdrObject *pO )
+class SwAccessibleChild
{
- pObj = pO;
- // #110094#-1
- pFrm = pObj && pObj->ISA(SwVirtFlyDrawObj)
- ? static_cast < const SwVirtFlyDrawObj * >( pObj )->GetFlyFrm()
- : 0;
-}
-
-inline void SwFrmOrObj::Init( const SwFrm *pF )
-{
- pFrm = pF;
- pObj = pFrm && pFrm->IsFlyFrm()
- ? static_cast < const SwFlyFrm * >( pFrm )->GetVirtDrawObj()
- : 0;
-}
+ public:
+ SwAccessibleChild();
+ explicit SwAccessibleChild( const SdrObject* pDrawObj );
+ explicit SwAccessibleChild( const SwFrm* pFrm );
+ explicit SwAccessibleChild( Window* pWindow );
+ SwAccessibleChild( const SwFrm* pFrm,
+ const SdrObject* pDrawObj,
+ Window* pWindow );
-inline SwFrmOrObj::SwFrmOrObj() :
- pObj( 0 ), pFrm( 0 )
-{}
+ SwAccessibleChild( const SwAccessibleChild& r );
+ SwAccessibleChild& operator=( const SwAccessibleChild& r );
-inline SwFrmOrObj::SwFrmOrObj( const SdrObject *pO )
-{
- Init( pO );
-}
+ SwAccessibleChild& operator=( const SdrObject* pDrawObj );
+ SwAccessibleChild& operator=( const SwFrm* pFrm );
+ SwAccessibleChild& operator=( Window* pWindow );
-inline SwFrmOrObj::SwFrmOrObj( const SwFrm *pF )
-{
- Init( pF );
-}
+ bool operator==( const SwAccessibleChild& r ) const;
-inline SwFrmOrObj::SwFrmOrObj( const SwFrm *pF, const SdrObject *pO )
-{
- if( pF )
- Init( pF );
- else
- Init( pO );
- ASSERT( (!pF || pF == pFrm) && (!pO || pO == pObj),
- "invalid frame/object combination" );
+ bool IsValid() const;
-}
+ const SwFrm* GetSwFrm() const;
+ const SdrObject* GetDrawObject() const;
+ Window* GetWindow() const;
-inline SwFrmOrObj::SwFrmOrObj( const SwFrmOrObj& r ) :
- pObj( r.pObj ), pFrm( r.pFrm )
-{}
+ const SwFrm* GetParent( const sal_Bool bInPagePreview ) const;
-inline SwFrmOrObj& SwFrmOrObj::operator=( const SwFrmOrObj& r )
-{
- pObj = r.pObj;
- pFrm = r.pFrm;
- return *this;
-}
+ bool IsAccessible( sal_Bool bPagePreview ) const;
+ bool IsBoundAsChar() const;
-inline SwFrmOrObj& SwFrmOrObj::operator=( const SdrObject *pO )
-{
- Init( pO );
- return *this;
-}
+ bool IsVisibleChildrenOnly() const;
+ SwRect GetBox( const SwAccessibleMap& rAccMap ) const;
+ SwRect GetBounds( const SwAccessibleMap& rAccMap ) const;
-inline SwFrmOrObj& SwFrmOrObj::operator=( const SwFrm *pF )
-{
- Init( pF );
- return *this;
-}
+ /** indicating, if accessible child is included even, if the corresponding
+ object is not visible.
-inline sal_Bool SwFrmOrObj::operator==( const SwFrmOrObj& r ) const
-{
- return pObj == r.pObj && pFrm == r.pFrm;
-}
-
-inline sal_Bool SwFrmOrObj::operator==( const SdrObject *pO ) const
-{
- return pObj == pO;
-}
-
-inline sal_Bool SwFrmOrObj::operator==( const SwFrm *pF ) const
-{
- return pFrm == pF;
-}
-
-inline sal_Bool SwFrmOrObj::IsValid() const
-{
- return pObj != 0 || pFrm != 0;
-}
+ @author OD
+ */
+ bool AlwaysIncludeAsChild() const;
-inline const SdrObject *SwFrmOrObj::GetSdrObject() const
-{
- return pObj;
-}
-
-inline const SwFrm *SwFrmOrObj::GetSwFrm() const
-{
- return pFrm;
-}
+ private:
+ const SwFrm* mpFrm;
+ const SdrObject* mpDrawObj;
+ Window* mpWindow;
-inline sal_Bool SwFrmOrObj::IsVisibleChildrenOnly() const
-{
- return !pFrm || pFrm->IsRootFrm() ||
- !( pFrm->IsTabFrm() || pFrm->IsInTab() ||
- ( IsBoundAsChar() &&
- static_cast<const SwFlyFrm*>(pFrm)->GetAnchorFrm()->IsInTab()) );
-}
+ void Init( const SdrObject* pDrawObj );
+ void Init( const SwFrm* pFrm );
+ void Init( Window* pWindow );
+};
-inline SwRect SwFrmOrObj::GetBox() const
-{
- if( pFrm )
- {
- if( pFrm->IsPageFrm() &&
- static_cast< const SwPageFrm * >( pFrm )->IsEmptyPage() )
- {
- SwRect aBox( pFrm->Frm().Left(), pFrm->Frm().Top()-1, 1, 1 );
- return aBox;
- }
- else if ( pFrm->IsTabFrm() )
- {
- SwRect aBox( pFrm->Frm() );
- aBox.Intersection( pFrm->GetUpper()->Frm() );
- return aBox;
- }
- else
- return pFrm->Frm();
- }
- else if( pObj )
- return SwRect( pObj->GetCurrentBoundRect() );
- else
- return SwRect();
-}
-
-inline SwRect SwFrmOrObj::GetBounds() const
-{
- if( pFrm )
- {
- if( pFrm->IsPageFrm() &&
- static_cast< const SwPageFrm * >( pFrm )->IsEmptyPage() )
- {
- SwRect aBox( pFrm->Frm().Left(), pFrm->Frm().Top()-1, 0, 0 );
- return aBox;
- }
- else
- return pFrm->PaintArea();
- }
- else if( pObj )
- return SwRect( pObj->GetCurrentBoundRect() );
- return SwRect();
-}
+} } // eof of namespace sw::access
#endif
diff --git a/sw/source/core/access/accfrmobjmap.cxx b/sw/source/core/access/accfrmobjmap.cxx
index 0d1bb40e39fb..11834ee89963 100644
--- a/sw/source/core/access/accfrmobjmap.cxx
+++ b/sw/source/core/access/accfrmobjmap.cxx
@@ -28,95 +28,141 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_sw.hxx"
+#include <accfrmobjmap.hxx>
+#include <accframe.hxx>
+#include <accmap.hxx>
+#include <acccontext.hxx>
+#include <viewsh.hxx>
#include <doc.hxx>
#include <frmfmt.hxx>
#include <pagefrm.hxx>
#include <txtfrm.hxx>
#include <node.hxx>
-// OD 2004-05-24 #i28701#
#include <sortedobjs.hxx>
+#include <anchoredobject.hxx>
-#ifndef _ACCFFRMOBJMAP_HXX
-#include <accfrmobjmap.hxx>
-#endif
-
-::std::pair< SwFrmOrObjMap::iterator, bool > SwFrmOrObjMap::insert(
- sal_uInt32 nPos, const SwFrmOrObj& rLower )
-{
- SwFrmOrObjMapKey aKey( SwFrmOrObjMapKey::TEXT, nPos );
- value_type aEntry( aKey, rLower );
- return _SwFrmOrObjMap::insert( aEntry );
-}
-
-::std::pair< SwFrmOrObjMap::iterator, bool > SwFrmOrObjMap::insert(
- const SdrObject *pObj, const SwFrmOrObj& rLower, const SwDoc *pDoc )
-{
- if( !bLayerIdsValid )
- {
- nHellId = pDoc->GetHellId();
- nControlsId = pDoc->GetControlsId();
- bLayerIdsValid = sal_True;
- }
+#include <svx/svdobj.hxx>
- SdrLayerID nLayer = pObj->GetLayer();
- SwFrmOrObjMapKey::LayerId eLayerId = (nHellId == nLayer)
- ? SwFrmOrObjMapKey::HELL
- : ((nControlsId == nLayer) ? SwFrmOrObjMapKey::CONTROLS
- : SwFrmOrObjMapKey::HEAVEN);
- SwFrmOrObjMapKey aKey( eLayerId, pObj->GetOrdNum() );
- value_type aEntry( aKey, rLower );
- return _SwFrmOrObjMap::insert( aEntry );
-}
+using namespace sw::access;
-SwFrmOrObjMap::SwFrmOrObjMap(
- const SwRect& rVisArea, const SwFrm *pFrm ) :
- bLayerIdsValid( sal_False )
+SwAccessibleChildMap::SwAccessibleChildMap( const SwRect& rVisArea,
+ const SwFrm& rFrm,
+ SwAccessibleMap& rAccMap )
+ : nHellId( rAccMap.GetShell()->GetDoc()->GetHellId() )
+ , nControlsId( rAccMap.GetShell()->GetDoc()->GetControlsId() )
{
- SwFrmOrObj aFrm( pFrm );
- sal_Bool bVisibleOnly = aFrm.IsVisibleChildrenOnly();
+ const bool bVisibleChildrenOnly = SwAccessibleChild( &rFrm ).IsVisibleChildrenOnly();
sal_uInt32 nPos = 0;
- SwFrmOrObj aLower( pFrm->GetLower() );
+ SwAccessibleChild aLower( rFrm.GetLower() );
while( aLower.GetSwFrm() )
{
- if( !bVisibleOnly || aLower.GetBox().IsOver( rVisArea ) )
- insert( nPos++, aLower );
+ if ( !bVisibleChildrenOnly ||
+ aLower.AlwaysIncludeAsChild() ||
+ aLower.GetBox( rAccMap ).IsOver( rVisArea ) )
+ {
+ insert( nPos++, SwAccessibleChildMapKey::TEXT, aLower );
+ }
aLower = aLower.GetSwFrm()->GetNext();
}
- if( pFrm->IsPageFrm() )
+ if ( rFrm.IsPageFrm() )
{
- ASSERT( bVisibleOnly, "page frame within tab frame???" );
+ ASSERT( bVisibleChildrenOnly, "page frame within tab frame???" );
const SwPageFrm *pPgFrm =
- static_cast< const SwPageFrm * >( pFrm );
+ static_cast< const SwPageFrm * >( &rFrm );
const SwSortedObjs *pObjs = pPgFrm->GetSortedObjs();
- if( pObjs )
+ if ( pObjs )
{
- const SwDoc *pDoc = pPgFrm->GetFmt()->GetDoc();
for( sal_uInt16 i=0; i<pObjs->Count(); i++ )
{
aLower = (*pObjs)[i]->GetDrawObj();
- if( aLower.GetBox().IsOver( rVisArea ) )
- insert( aLower.GetSdrObject(), aLower, pDoc );
+ if ( aLower.GetBox( rAccMap ).IsOver( rVisArea ) )
+ {
+ insert( aLower.GetDrawObject(), aLower );
+ }
}
}
}
- else if( pFrm->IsTxtFrm() )
+ else if( rFrm.IsTxtFrm() )
{
- const SwDoc *pDoc = static_cast< const SwTxtFrm * >( pFrm )->GetNode()
- ->GetDoc();
- const SwSortedObjs *pObjs = pFrm->GetDrawObjs();
- if( pObjs )
+ const SwSortedObjs *pObjs = rFrm.GetDrawObjs();
+ if ( pObjs )
{
for( sal_uInt16 i=0; i<pObjs->Count(); i++ )
{
aLower = (*pObjs)[i]->GetDrawObj();
- if( aLower.IsBoundAsChar() &&
- (!bVisibleOnly || aLower.GetBox().IsOver( rVisArea )) )
- insert( aLower.GetSdrObject(), aLower, pDoc );
+ if ( aLower.IsBoundAsChar() &&
+ ( !bVisibleChildrenOnly ||
+ aLower.AlwaysIncludeAsChild() ||
+ aLower.GetBox( rAccMap ).IsOver( rVisArea ) ) )
+ {
+ insert( aLower.GetDrawObject(), aLower );
+ }
+ }
+ }
+
+ {
+ ::vos::ORef < SwAccessibleContext > xAccImpl =
+ rAccMap.GetContextImpl( &rFrm, sal_False );
+ if( xAccImpl.isValid() )
+ {
+ SwAccessibleContext* pAccImpl = xAccImpl.getBodyPtr();
+ if ( pAccImpl &&
+ pAccImpl->HasAdditionalAccessibleChildren() )
+ {
+ std::vector< Window* >* pAdditionalChildren =
+ new std::vector< Window* >();
+ pAccImpl->GetAdditionalAccessibleChildren( pAdditionalChildren );
+
+ sal_Int32 nCounter( 0 );
+ for ( std::vector< Window* >::iterator aIter = pAdditionalChildren->begin();
+ aIter != pAdditionalChildren->end();
+ ++aIter )
+ {
+ aLower = (*aIter);
+ insert( ++nCounter, SwAccessibleChildMapKey::XWINDOW, aLower );
+ }
+
+ delete pAdditionalChildren;
+ }
}
}
}
}
+
+::std::pair< SwAccessibleChildMap::iterator, bool > SwAccessibleChildMap::insert(
+ const sal_uInt32 nPos,
+ const SwAccessibleChildMapKey::LayerId eLayerId,
+ const SwAccessibleChild& rLower )
+{
+ SwAccessibleChildMapKey aKey( eLayerId, nPos );
+ value_type aEntry( aKey, rLower );
+ return _SwAccessibleChildMap::insert( aEntry );
+}
+
+::std::pair< SwAccessibleChildMap::iterator, bool > SwAccessibleChildMap::insert(
+ const SdrObject *pObj,
+ const SwAccessibleChild& rLower )
+{
+ const SdrLayerID nLayer = pObj->GetLayer();
+ SwAccessibleChildMapKey::LayerId eLayerId =
+ (nHellId == nLayer)
+ ? SwAccessibleChildMapKey::HELL
+ : ( (nControlsId == nLayer)
+ ? SwAccessibleChildMapKey::CONTROLS
+ : SwAccessibleChildMapKey::HEAVEN );
+ SwAccessibleChildMapKey aKey( eLayerId, pObj->GetOrdNum() );
+ value_type aEntry( aKey, rLower );
+ return _SwAccessibleChildMap::insert( aEntry );
+}
+
+/* static */ sal_Bool SwAccessibleChildMap::IsSortingRequired( const SwFrm& rFrm )
+{
+ return ( rFrm.IsPageFrm() &&
+ static_cast< const SwPageFrm& >( rFrm ).GetSortedObjs() ) ||
+ ( rFrm.IsTxtFrm() &&
+ rFrm.GetDrawObjs() );
+}
diff --git a/sw/source/core/access/accfrmobjmap.hxx b/sw/source/core/access/accfrmobjmap.hxx
index ab474037ef62..91365ed9c258 100644
--- a/sw/source/core/access/accfrmobjmap.hxx
+++ b/sw/source/core/access/accfrmobjmap.hxx
@@ -26,79 +26,71 @@
************************************************************************/
#ifndef _ACCFRMOBJMAP_HXX
#define _ACCFRMOBJMAP_HXX
+
#include <accfrmobj.hxx>
+#include <svx/svdtypes.hxx>
+
#include <map>
+class SwAccessibleMap;
class SwDoc;
+class SwRect;
+class SwFrm;
+class SdrObject;
-class SwFrmOrObjMapKey
+class SwAccessibleChildMapKey
{
public:
- enum LayerId { INVALID, HELL, TEXT, HEAVEN, CONTROLS };
+ enum LayerId { INVALID, HELL, TEXT, HEAVEN, CONTROLS, XWINDOW };
+
+ inline SwAccessibleChildMapKey()
+ : eLayerId( INVALID )
+ , nOrdNum( 0 )
+ {}
+
+ inline SwAccessibleChildMapKey( LayerId eId, sal_uInt32 nOrd )
+ : eLayerId( eId )
+ , nOrdNum( nOrd )
+ {}
+
+ inline bool operator()( const SwAccessibleChildMapKey& r1,
+ const SwAccessibleChildMapKey& r2 ) const
+ {
+ return (r1.eLayerId == r2.eLayerId)
+ ? (r1.nOrdNum < r2.nOrdNum)
+ : (r1.eLayerId < r2.eLayerId);
+ }
+
private:
LayerId eLayerId;
sal_uInt32 nOrdNum;
-public:
-
- inline SwFrmOrObjMapKey();
- inline SwFrmOrObjMapKey( LayerId eId, sal_uInt32 nOrd );
-
- inline sal_Bool operator()( const SwFrmOrObjMapKey& r1,
- const SwFrmOrObjMapKey& r2 ) const;
};
-typedef ::std::map < SwFrmOrObjMapKey, SwFrmOrObj, SwFrmOrObjMapKey >
- _SwFrmOrObjMap;
+typedef ::std::map < SwAccessibleChildMapKey, sw::access::SwAccessibleChild, SwAccessibleChildMapKey >
+ _SwAccessibleChildMap;
-class SwFrmOrObjMap : public _SwFrmOrObjMap
+class SwAccessibleChildMap : public _SwAccessibleChildMap
{
- SdrLayerID nHellId;
- SdrLayerID nControlsId;
- sal_Bool bLayerIdsValid;
+ const SdrLayerID nHellId;
+ const SdrLayerID nControlsId;
- ::std::pair< iterator, bool > insert( sal_uInt32 nPos,
- const SwFrmOrObj& rLower );
- ::std::pair< iterator, bool > insert( const SdrObject *pObj,
- const SwFrmOrObj& rLower,
- const SwDoc *pDoc );
+ ::std::pair< iterator, bool > insert( const sal_uInt32 nPos,
+ const SwAccessibleChildMapKey::LayerId eLayerId,
+ const sw::access::SwAccessibleChild& rLower );
+ ::std::pair< iterator, bool > insert( const SdrObject* pObj,
+ const sw::access::SwAccessibleChild& rLower );
public:
- SwFrmOrObjMap( const SwRect& rVisArea, const SwFrm *pFrm );
+ SwAccessibleChildMap( const SwRect& rVisArea,
+ const SwFrm& rFrm,
+ SwAccessibleMap& rAccMap );
- inline static sal_Bool IsSortingRequired( const SwFrm *pFrm );
+ static sal_Bool IsSortingRequired( const SwFrm& rFrm );
};
-inline SwFrmOrObjMapKey::SwFrmOrObjMapKey() :
- eLayerId( INVALID ),
- nOrdNum( 0 )
-{
-}
-
-inline SwFrmOrObjMapKey::SwFrmOrObjMapKey(
- LayerId eId, sal_uInt32 nOrd ) :
- eLayerId( eId ),
- nOrdNum( nOrd )
-{
-}
-
-inline sal_Bool SwFrmOrObjMapKey::operator()(
- const SwFrmOrObjMapKey& r1,
- const SwFrmOrObjMapKey& r2 ) const
-{
- return (r1.eLayerId == r2.eLayerId) ? (r1.nOrdNum < r2.nOrdNum) :
- (r1.eLayerId < r2.eLayerId);
-}
-
-inline sal_Bool SwFrmOrObjMap::IsSortingRequired( const SwFrm *pFrm )
-{
- return ( pFrm->IsPageFrm() &&
- static_cast< const SwPageFrm * >( pFrm )->GetSortedObjs() ) ||
- (pFrm->IsTxtFrm() && pFrm->GetDrawObjs() );
-}
-
#endif
diff --git a/sw/source/core/access/accfrmobjslist.cxx b/sw/source/core/access/accfrmobjslist.cxx
index e23cb6702a70..2f3e8399187a 100644
--- a/sw/source/core/access/accfrmobjslist.cxx
+++ b/sw/source/core/access/accfrmobjslist.cxx
@@ -28,97 +28,146 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_sw.hxx"
+#include <accfrmobjslist.hxx>
+#include <accmap.hxx>
+#include <acccontext.hxx>
#include <pagefrm.hxx>
-// OD 2004-05-24 #i28701#
#include <sortedobjs.hxx>
-#include <accfrmobjslist.hxx>
+#include <anchoredobject.hxx>
+using namespace ::sw::access;
-SwFrmOrObjSList_const_iterator::SwFrmOrObjSList_const_iterator(
- const SwFrmOrObjSList& rLst, sal_Bool ) :
- rList( rLst ), aCurr( rList.pFrm->GetLower() ), nNextObj( 0 )
+SwAccessibleChildSList_const_iterator::SwAccessibleChildSList_const_iterator(
+ const SwAccessibleChildSList& rLst,
+ SwAccessibleMap& rAccMap )
+ : rList( rLst ),
+ aCurr( rList.GetFrm().GetLower() ),
+ nNextObj( 0 )
{
if( !aCurr.GetSwFrm() )
{
- if( rList.pFrm->IsPageFrm() )
+ const SwFrm& rFrm = rList.GetFrm();
+ if( rFrm.IsPageFrm() )
{
- const SwPageFrm *pPgFrm =
- static_cast< const SwPageFrm * >( rList.pFrm );
- const SwSortedObjs *pObjs = pPgFrm->GetSortedObjs();
+ const SwPageFrm& rPgFrm = static_cast< const SwPageFrm& >( rFrm );
+ const SwSortedObjs *pObjs = rPgFrm.GetSortedObjs();
if( pObjs && pObjs->Count() )
+ {
aCurr = (*pObjs)[nNextObj++]->GetDrawObj();
+ }
}
- else if( rList.pFrm->IsTxtFrm() )
+ else if( rFrm.IsTxtFrm() )
{
- const SwSortedObjs *pObjs = rList.pFrm->GetDrawObjs();
- if( pObjs && pObjs->Count() )
+ const SwSortedObjs *pObjs = rFrm.GetDrawObjs();
+ if ( pObjs && pObjs->Count() )
{
aCurr = (*pObjs)[nNextObj++]->GetDrawObj();
while( aCurr.IsValid() && !aCurr.IsBoundAsChar() )
+ {
aCurr = (nNextObj < pObjs->Count())
- ? (*pObjs)[nNextObj++]->GetDrawObj()
- : static_cast< const SdrObject *>( 0 );
-
+ ? (*pObjs)[nNextObj++]->GetDrawObj()
+ : static_cast< const SdrObject *>( 0 );
+ }
+ }
+ if ( !aCurr.IsValid() )
+ {
+ ::vos::ORef < SwAccessibleContext > xAccImpl =
+ rAccMap.GetContextImpl( &rFrm, sal_False );
+ if( xAccImpl.isValid() )
+ {
+ SwAccessibleContext* pAccImpl = xAccImpl.getBodyPtr();
+ aCurr = SwAccessibleChild( pAccImpl->GetAdditionalAccessibleChild( 0 ) );
+ ++nNextObj;
+ }
}
}
}
- if( rList.bVisibleOnly )
+
+ if( rList.IsVisibleChildrenOnly() )
{
// Find the first visible
while( aCurr.IsValid() &&
- !aCurr.GetBox().IsOver( rList.aVisArea ) )
+ !aCurr.AlwaysIncludeAsChild() &&
+ !aCurr.GetBox( rAccMap ).IsOver( rList.GetVisArea() ) )
+ {
next();
+ }
}
}
-SwFrmOrObjSList_const_iterator& SwFrmOrObjSList_const_iterator::next()
+SwAccessibleChildSList_const_iterator& SwAccessibleChildSList_const_iterator::next()
{
- sal_Bool bGetSdrObject = sal_False;
- if( aCurr.GetSdrObject() )
+ bool bNextTaken( true );
+ if( aCurr.GetDrawObject() || aCurr.GetWindow() )
{
- bGetSdrObject = sal_True;
+ bNextTaken = false;
}
else if( aCurr.GetSwFrm() )
{
aCurr = aCurr.GetSwFrm()->GetNext();
if( !aCurr.GetSwFrm() )
- bGetSdrObject = sal_True;
+ {
+ bNextTaken = false;
+ }
}
- if( bGetSdrObject )
+ if( !bNextTaken )
{
- if( rList.pFrm->IsPageFrm() )
+ const SwFrm& rFrm = rList.GetFrm();
+ if( rFrm.IsPageFrm() )
{
- const SwPageFrm *pPgFrm =
- static_cast< const SwPageFrm * >( rList.pFrm );
- const SwSortedObjs *pObjs = pPgFrm->GetSortedObjs();
- aCurr = (pObjs && nNextObj < pObjs->Count())
- ? (*pObjs)[nNextObj++]->GetDrawObj()
- : static_cast< const SdrObject *>( 0 );
+ const SwPageFrm& rPgFrm = static_cast< const SwPageFrm& >( rFrm );
+ const SwSortedObjs *pObjs = rPgFrm.GetSortedObjs();
+ aCurr = ( pObjs && nNextObj < pObjs->Count() )
+ ? (*pObjs)[nNextObj++]->GetDrawObj()
+ : static_cast< const SdrObject *>( 0 );
}
- else if( rList.pFrm->IsTxtFrm() )
+ else if( rFrm.IsTxtFrm() )
{
- const SwSortedObjs *pObjs = rList.pFrm->GetDrawObjs();
- aCurr = (pObjs && nNextObj < pObjs->Count())
- ? (*pObjs)[nNextObj++]->GetDrawObj()
- : static_cast< const SdrObject *>( 0 );
+ const SwSortedObjs* pObjs = rFrm.GetDrawObjs();
+ const sal_uInt32 nObjsCount = pObjs ? pObjs->Count() : 0;
+ aCurr = ( pObjs && nNextObj < nObjsCount )
+ ? (*pObjs)[nNextObj++]->GetDrawObj()
+ : static_cast< const SdrObject *>( 0 );
while( aCurr.IsValid() && !aCurr.IsBoundAsChar() )
- aCurr = (nNextObj < pObjs->Count())
- ? (*pObjs)[nNextObj++]->GetDrawObj()
- : static_cast< const SdrObject *>( 0 );
+ {
+ aCurr = ( nNextObj < nObjsCount )
+ ? (*pObjs)[nNextObj++]->GetDrawObj()
+ : static_cast< const SdrObject *>( 0 );
+ }
+ if ( !aCurr.IsValid() )
+ {
+ ::vos::ORef < SwAccessibleContext > xAccImpl =
+ rList.GetAccMap().GetContextImpl( &rFrm, sal_False );
+ if( xAccImpl.isValid() )
+ {
+ SwAccessibleContext* pAccImpl = xAccImpl.getBodyPtr();
+ aCurr = SwAccessibleChild( pAccImpl->GetAdditionalAccessibleChild( nNextObj - nObjsCount ) );
+ ++nNextObj;
+ }
+ }
}
}
return *this;
}
-SwFrmOrObjSList_const_iterator& SwFrmOrObjSList_const_iterator::next_visible()
+SwAccessibleChildSList_const_iterator& SwAccessibleChildSList_const_iterator::next_visible()
{
next();
while( aCurr.IsValid() &&
- !aCurr.GetBox().IsOver( rList.aVisArea ) )
+ !aCurr.AlwaysIncludeAsChild() &&
+ !aCurr.GetBox( rList.GetAccMap() ).IsOver( rList.GetVisArea() ) )
+ {
next();
+ }
return *this;
}
+
+SwAccessibleChildSList_const_iterator& SwAccessibleChildSList_const_iterator::operator++()
+{
+ return rList.IsVisibleChildrenOnly() ? next_visible() : next();
+}
+
diff --git a/sw/source/core/access/accfrmobjslist.hxx b/sw/source/core/access/accfrmobjslist.hxx
index 2374dbc361ac..f81cfc85a9d7 100644
--- a/sw/source/core/access/accfrmobjslist.hxx
+++ b/sw/source/core/access/accfrmobjslist.hxx
@@ -28,117 +28,118 @@
#define _ACCFRMOBJSLIST_HXX
#include <accfrmobj.hxx>
+#include <swrect.hxx>
-class SwFrmOrObjSList;
+class SwAccessibleMap;
-class SwFrmOrObjSList_const_iterator
-{
- friend class SwFrmOrObjSList;
- const SwFrmOrObjSList& rList; // The frame we are iterating over
- SwFrmOrObj aCurr; // The current object
- sal_uInt16 nNextObj; // The index of the current sdr object
-
- inline SwFrmOrObjSList_const_iterator( const SwFrmOrObjSList& rLst );
- SwFrmOrObjSList_const_iterator( const SwFrmOrObjSList& rLst, sal_Bool );
-
-// SwFrmOrObjSList_const_iterator& begin();
- SwFrmOrObjSList_const_iterator& next();
- SwFrmOrObjSList_const_iterator& next_visible();
-
-public:
-
- inline SwFrmOrObjSList_const_iterator(
- const SwFrmOrObjSList_const_iterator& rIter );
- inline sal_Bool operator==(
- const SwFrmOrObjSList_const_iterator& r ) const;
- inline sal_Bool operator!=(
- const SwFrmOrObjSList_const_iterator& r ) const;
- inline SwFrmOrObjSList_const_iterator& operator++();
- inline const SwFrmOrObj& operator*() const;
-};
+class SwAccessibleChildSList;
-// An iterator to iterate over a frame's child in any order
-class SwFrmOrObjSList
+class SwAccessibleChildSList_const_iterator
{
- friend class SwFrmOrObjSList_const_iterator;
+private:
+ friend class SwAccessibleChildSList;
- SwRect aVisArea;
- const SwFrm *pFrm; // The frame we are iterating over
- sal_Bool bVisibleOnly;
-
-public:
+ const SwAccessibleChildSList& rList; // The frame we are iterating over
+ sw::access::SwAccessibleChild aCurr; // The current object
+ sal_uInt16 nNextObj; // The index of the current sdr object
- typedef SwFrmOrObjSList_const_iterator const_iterator;
+ inline SwAccessibleChildSList_const_iterator( const SwAccessibleChildSList& rLst )
+ : rList( rLst )
+ , nNextObj( 0 )
+ {}
- inline SwFrmOrObjSList( const SwFrm *pF );
- inline SwFrmOrObjSList( const SwRect& rVisArea, const SwFrm *pF );
+ SwAccessibleChildSList_const_iterator( const SwAccessibleChildSList& rLst,
+ SwAccessibleMap& rAccMap );
- inline const_iterator begin() const;
- inline const_iterator end() const;
-};
-
-inline SwFrmOrObjSList_const_iterator::SwFrmOrObjSList_const_iterator(
- const SwFrmOrObjSList& rLst ) :
- rList( rLst ), nNextObj( 0 )
-{
-}
+ SwAccessibleChildSList_const_iterator& next();
+ SwAccessibleChildSList_const_iterator& next_visible();
-inline SwFrmOrObjSList_const_iterator::SwFrmOrObjSList_const_iterator(
- const SwFrmOrObjSList_const_iterator& rIter ) :
- rList( rIter.rList ),
- aCurr( rIter.aCurr ),
- nNextObj( rIter.nNextObj )
-{
-}
+public:
-inline sal_Bool SwFrmOrObjSList_const_iterator::operator==(
- const SwFrmOrObjSList_const_iterator& r ) const
-{
- return aCurr == r.aCurr;
-}
+ inline SwAccessibleChildSList_const_iterator( const SwAccessibleChildSList_const_iterator& rIter )
+ : rList( rIter.rList )
+ , aCurr( rIter.aCurr )
+ , nNextObj( rIter.nNextObj )
+ {}
-inline sal_Bool SwFrmOrObjSList_const_iterator::operator!=(
- const SwFrmOrObjSList_const_iterator& r ) const
-{
- return !(aCurr == r.aCurr);
-}
+ inline sal_Bool operator==( const SwAccessibleChildSList_const_iterator& r ) const
+ {
+ return aCurr == r.aCurr;
+ }
-inline SwFrmOrObjSList_const_iterator& SwFrmOrObjSList_const_iterator::operator++()
-{
- return rList.bVisibleOnly ? next_visible() : next();
-}
+ inline sal_Bool operator!=(
+ const SwAccessibleChildSList_const_iterator& r ) const
+ {
+ return !(*this == r);
+ }
-inline const SwFrmOrObj& SwFrmOrObjSList_const_iterator::operator*() const
-{
- return aCurr;
-}
+ SwAccessibleChildSList_const_iterator& operator++();
-inline SwFrmOrObjSList::SwFrmOrObjSList( const SwFrm *pF ) :
- pFrm( pF ),
- bVisibleOnly( sal_False )
-{
-}
+ inline const sw::access::SwAccessibleChild& operator*() const
+ {
+ return aCurr;
+ }
+};
-inline SwFrmOrObjSList::SwFrmOrObjSList( const SwRect& rVisArea,
- const SwFrm *pF ) :
- aVisArea( rVisArea ),
- pFrm( pF )
+// An iterator to iterate over a frame's child in any order
+class SwAccessibleChildSList
{
- SwFrmOrObj aFrm( pFrm );
- bVisibleOnly = aFrm.IsVisibleChildrenOnly();
-}
+ const SwRect maVisArea;
+ const SwFrm& mrFrm;
+ const sal_Bool mbVisibleChildrenOnly;
+ SwAccessibleMap& mrAccMap;
-inline SwFrmOrObjSList_const_iterator SwFrmOrObjSList::begin() const
-{
-// SwFrmOrObjSList_const_iterator aIter2( *this );
-// aIter2.begin();
-// return aIter2;
- return SwFrmOrObjSList_const_iterator( *this, sal_True );
-}
+public:
-inline SwFrmOrObjSList_const_iterator SwFrmOrObjSList::end() const
-{
- return SwFrmOrObjSList_const_iterator( *this );
-}
+ typedef SwAccessibleChildSList_const_iterator const_iterator;
+
+ inline SwAccessibleChildSList( const SwFrm& rFrm,
+ SwAccessibleMap& rAccMap )
+ : maVisArea()
+ , mrFrm( rFrm )
+ , mbVisibleChildrenOnly( sal_False )
+ , mrAccMap( rAccMap )
+ {}
+
+ inline SwAccessibleChildSList( const SwRect& rVisArea,
+ const SwFrm& rFrm,
+ SwAccessibleMap& rAccMap )
+ : maVisArea( rVisArea )
+ , mrFrm( rFrm )
+ , mbVisibleChildrenOnly( sw::access::SwAccessibleChild( &rFrm ).IsVisibleChildrenOnly() )
+ , mrAccMap( rAccMap )
+ {
+ }
+
+ inline const_iterator begin() const
+ {
+ return SwAccessibleChildSList_const_iterator( *this, mrAccMap );
+ }
+
+ inline const_iterator end() const
+ {
+ return SwAccessibleChildSList_const_iterator( *this );
+ }
+
+ inline const SwFrm& GetFrm() const
+ {
+ return mrFrm;
+ }
+
+ inline sal_Bool IsVisibleChildrenOnly() const
+ {
+ return mbVisibleChildrenOnly;
+ }
+
+ inline const SwRect& GetVisArea() const
+ {
+ return maVisArea;
+ }
+
+ inline SwAccessibleMap& GetAccMap() const
+ {
+ return mrAccMap;
+ }
+};
#endif
diff --git a/sw/source/core/access/accmap.cxx b/sw/source/core/access/accmap.cxx
index 367db154a30a..0d7ab98d3b03 100644
--- a/sw/source/core/access/accmap.cxx
+++ b/sw/source/core/access/accmap.cxx
@@ -39,9 +39,7 @@
#include <map>
#include <list>
#include <accmap.hxx>
-#ifndef _ACCCONTEXT_HXX
#include <acccontext.hxx>
-#endif
#include <accdoc.hxx>
#include <accpreview.hxx>
#include <accpage.hxx>
@@ -53,7 +51,7 @@
#include <accembedded.hxx>
#include <acccell.hxx>
#include <acctable.hxx>
-#include "fesh.hxx"
+#include <fesh.hxx>
#include <rootfrm.hxx>
#include <txtfrm.hxx>
#include <hffrm.hxx>
@@ -61,10 +59,9 @@
#include <cellfrm.hxx>
#include <tabfrm.hxx>
#include <pagefrm.hxx>
+#include <flyfrm.hxx>
#include <ndtyp.hxx>
-#ifndef IDOCUMENTDRAWMODELACCESS_HXX_INCLUDED
#include <IDocumentDrawModelAccess.hxx>
-#endif
#include <svx/ShapeTypeHandler.hxx>
#include <vcl/svapp.hxx>
#include <com/sun/star/accessibility/AccessibleRelationType.hpp>
@@ -77,10 +74,13 @@
#include <pam.hxx>
#include <ndtxt.hxx>
// <--
+#include <dflyobj.hxx>
+#include <prevwpage.hxx>
using namespace ::com::sun::star;
using namespace ::com::sun::star::accessibility;
using ::rtl::OUString;
+using namespace ::sw::access;
struct SwFrmFunc
{
@@ -329,7 +329,7 @@ private:
SwRect maOldBox; // the old bounds for CHILD_POS_CHANGED
// and POS_CHANGED
uno::WeakReference < XAccessible > mxAcc; // The object that fires the event
- SwFrmOrObj maFrmOrObj; // the child for CHILD_POS_CHANGED and
+ SwAccessibleChild maFrmOrObj; // the child for CHILD_POS_CHANGED and
// the same as xAcc for any other
// event type
EventType meType; // The event type
@@ -342,7 +342,7 @@ private:
public:
SwAccessibleEvent_Impl( EventType eT,
SwAccessibleContext *pA,
- const SwFrmOrObj& rFrmOrObj )
+ const SwAccessibleChild& rFrmOrObj )
: mxAcc( pA ),
maFrmOrObj( rFrmOrObj ),
meType( eT ),
@@ -350,7 +350,7 @@ public:
{}
SwAccessibleEvent_Impl( EventType eT,
- const SwFrmOrObj& rFrmOrObj )
+ const SwAccessibleChild& rFrmOrObj )
: maFrmOrObj( rFrmOrObj ),
meType( eT ),
mnStates( 0 )
@@ -369,7 +369,7 @@ public:
SwAccessibleEvent_Impl( EventType eT,
SwAccessibleContext *pA,
- const SwFrmOrObj& rFrmOrObj,
+ const SwAccessibleChild& rFrmOrObj,
const SwRect& rR )
: maOldBox( rR ),
mxAcc( pA ),
@@ -385,7 +385,7 @@ public:
// --> OD 2005-12-12 #i27301# - use new type definition for parameter <_nStates>
SwAccessibleEvent_Impl( EventType eT,
SwAccessibleContext *pA,
- const SwFrmOrObj& rFrmOrObj,
+ const SwAccessibleChild& rFrmOrObj,
const tAccessibleStates _nStates )
: mxAcc( pA ),
maFrmOrObj( rFrmOrObj ),
@@ -425,7 +425,7 @@ public:
maOldBox = rOldBox;
}
- inline const SwFrmOrObj& GetFrmOrObj() const
+ inline const SwAccessibleChild& GetFrmOrObj() const
{
return maFrmOrObj;
}
@@ -524,22 +524,26 @@ public:
//------------------------------------------------------------------------------
-struct SwFrmOrObjFunc
+struct SwAccessibleChildFunc
{
- sal_Bool operator()( const SwFrmOrObj& r1,
- const SwFrmOrObj& r2 ) const
+ sal_Bool operator()( const SwAccessibleChild& r1,
+ const SwAccessibleChild& r2 ) const
{
const void *p1 = r1.GetSwFrm()
- ? static_cast < const void * >( r1.GetSwFrm())
- : static_cast < const void * >( r1.GetSdrObject() );
+ ? static_cast < const void * >( r1.GetSwFrm())
+ : ( r1.GetDrawObject()
+ ? static_cast < const void * >( r1.GetDrawObject() )
+ : static_cast < const void * >( r1.GetWindow() ) );
const void *p2 = r2.GetSwFrm()
- ? static_cast < const void * >( r2.GetSwFrm())
- : static_cast < const void * >( r2.GetSdrObject() );
+ ? static_cast < const void * >( r2.GetSwFrm())
+ : ( r2.GetDrawObject()
+ ? static_cast < const void * >( r2.GetDrawObject() )
+ : static_cast < const void * >( r2.GetWindow() ) );
return p1 < p2;
}
};
-typedef ::std::map < SwFrmOrObj, SwAccessibleEventList_Impl::iterator,
- SwFrmOrObjFunc > _SwAccessibleEventMap_Impl;
+typedef ::std::map < SwAccessibleChild, SwAccessibleEventList_Impl::iterator,
+ SwAccessibleChildFunc > _SwAccessibleEventMap_Impl;
class SwAccessibleEventMap_Impl: public _SwAccessibleEventMap_Impl
{
@@ -577,6 +581,222 @@ typedef ::std::map< uno::WeakReference < XAccessible >,
class SwAccessibleSelectedParas_Impl: public _SwAccessibleSelectedParas_Impl
{};
// <--
+
+// helper class that stores preview data
+class SwAccPreviewData
+{
+ typedef std::vector<Rectangle> Rectangles;
+ Rectangles maPreviewRects;
+ Rectangles maLogicRects;
+
+ SwRect maVisArea;
+ Fraction maScale;
+
+ const SwPageFrm *mpSelPage;
+
+ /** adjust logic page retangle to its visible part
+
+ OD 17.01.2003 #103492#
+
+ @author OD
+
+ @param _iorLogicPgSwRect
+ input/output parameter - reference to the logic page rectangle, which
+ has to be adjusted.
+
+ @param _rPrevwPgSwRect
+ input parameter - constant reference to the corresponding preview page
+ rectangle; needed to determine the visible part of the logic page rectangle.
+
+ @param _rPrevwWinSize
+ input paramter - constant reference to the preview window size in TWIP;
+ needed to determine the visible part of the logic page rectangle
+ */
+ void AdjustLogicPgRectToVisibleArea( SwRect& _iorLogicPgSwRect,
+ const SwRect& _rPrevwPgSwRect,
+ const Size& _rPrevwWinSize );
+
+public:
+ SwAccPreviewData();
+ ~SwAccPreviewData();
+
+ // OD 14.01.2003 #103492# - complete re-factoring of method due to new
+ // page/print preview functionality.
+ void Update( const SwAccessibleMap& rAccMap,
+ const std::vector<PrevwPage*>& _rPrevwPages,
+ const Fraction& _rScale,
+ const SwPageFrm* _pSelectedPageFrm,
+ const Size& _rPrevwWinSize );
+
+ // OD 14.01.2003 #103492# - complete re-factoring of method due to new
+ // page/print preview functionality.
+ void InvalidateSelection( const SwPageFrm* _pSelectedPageFrm );
+
+ const SwRect& GetVisArea() const;
+
+ MapMode GetMapModeForPreview( ) const;
+
+ /** Adjust the MapMode so that the preview page appears at the
+ * proper position. rPoint identifies the page for which the
+ * MapMode should be adjusted. If bFromPreview is true, rPoint is
+ * a preview coordinate; else it's a document coordinate. */
+ // OD 17.01.2003 #103492# - delete unused 3rd parameter.
+ void AdjustMapMode( MapMode& rMapMode,
+ const Point& rPoint ) const;
+
+ inline const SwPageFrm *GetSelPage() const { return mpSelPage; }
+
+ void DisposePage(const SwPageFrm *pPageFrm );
+};
+
+SwAccPreviewData::SwAccPreviewData() :
+ mpSelPage( 0 )
+{
+}
+
+SwAccPreviewData::~SwAccPreviewData()
+{
+}
+
+// OD 13.01.2003 #103492# - complete re-factoring of method due to new page/print
+// preview functionality.
+void SwAccPreviewData::Update( const SwAccessibleMap& rAccMap,
+ const std::vector<PrevwPage*>& _rPrevwPages,
+ const Fraction& _rScale,
+ const SwPageFrm* _pSelectedPageFrm,
+ const Size& _rPrevwWinSize )
+{
+ // store preview scaling, maximal preview page size and selected page
+ maScale = _rScale;
+ mpSelPage = _pSelectedPageFrm;
+
+ // prepare loop on preview pages
+ maPreviewRects.clear();
+ maLogicRects.clear();
+ SwAccessibleChild aPage;
+ maVisArea.Clear();
+
+ // loop on preview pages to calculate <maPreviewRects>, <maLogicRects> and
+ // <maVisArea>
+ for ( std::vector<PrevwPage*>::const_iterator aPageIter = _rPrevwPages.begin();
+ aPageIter != _rPrevwPages.end();
+ ++aPageIter )
+ {
+ aPage = (*aPageIter)->pPage;
+
+ // add preview page rectangle to <maPreviewRects>
+ Rectangle aPrevwPgRect( (*aPageIter)->aPrevwWinPos, (*aPageIter)->aPageSize );
+ maPreviewRects.push_back( aPrevwPgRect );
+
+ // add logic page rectangle to <maLogicRects>
+ SwRect aLogicPgSwRect( aPage.GetBox( rAccMap ) );
+ Rectangle aLogicPgRect( aLogicPgSwRect.SVRect() );
+ maLogicRects.push_back( aLogicPgRect );
+ // union visible area with visible part of logic page rectangle
+ if ( (*aPageIter)->bVisible )
+ {
+ if ( !(*aPageIter)->pPage->IsEmptyPage() )
+ {
+ AdjustLogicPgRectToVisibleArea( aLogicPgSwRect,
+ SwRect( aPrevwPgRect ),
+ _rPrevwWinSize );
+ }
+ if ( maVisArea.IsEmpty() )
+ maVisArea = aLogicPgSwRect;
+ else
+ maVisArea.Union( aLogicPgSwRect );
+ }
+ }
+}
+
+// OD 16.01.2003 #103492# - complete re-factoring of method due to new page/print
+// preview functionality.
+void SwAccPreviewData::InvalidateSelection( const SwPageFrm* _pSelectedPageFrm )
+{
+ mpSelPage = _pSelectedPageFrm;
+ ASSERT( mpSelPage, "selected page not found" );
+}
+
+struct ContainsPredicate
+{
+ const Point& mrPoint;
+ ContainsPredicate( const Point& rPoint ) : mrPoint(rPoint) {}
+ bool operator() ( const Rectangle& rRect ) const
+ {
+ return rRect.IsInside( mrPoint ) ? true : false;
+ }
+};
+
+const SwRect& SwAccPreviewData::GetVisArea() const
+{
+ return maVisArea;
+}
+
+void SwAccPreviewData::AdjustMapMode( MapMode& rMapMode,
+ const Point& rPoint ) const
+{
+ // adjust scale
+ rMapMode.SetScaleX( maScale );
+ rMapMode.SetScaleY( maScale );
+
+ // find proper rectangle
+ Rectangles::const_iterator aBegin = maLogicRects.begin();
+ Rectangles::const_iterator aEnd = maLogicRects.end();
+ Rectangles::const_iterator aFound = ::std::find_if( aBegin, aEnd,
+ ContainsPredicate( rPoint ) );
+
+ if( aFound != aEnd )
+ {
+ // found! set new origin
+ Point aPoint = (maPreviewRects.begin() + (aFound - aBegin))->TopLeft();
+ aPoint -= (maLogicRects.begin() + (aFound-aBegin))->TopLeft();
+ rMapMode.SetOrigin( aPoint );
+ }
+ // else: don't adjust MapMode
+}
+
+void SwAccPreviewData::DisposePage(const SwPageFrm *pPageFrm )
+{
+ if( mpSelPage == pPageFrm )
+ mpSelPage = 0;
+}
+
+/** adjust logic page retangle to its visible part
+
+ OD 17.01.2003 #103492#
+
+ @author OD
+*/
+void SwAccPreviewData::AdjustLogicPgRectToVisibleArea(
+ SwRect& _iorLogicPgSwRect,
+ const SwRect& _rPrevwPgSwRect,
+ const Size& _rPrevwWinSize )
+{
+ // determine preview window rectangle
+ const SwRect aPrevwWinSwRect( Point( 0, 0 ), _rPrevwWinSize );
+ // calculate visible preview page rectangle
+ SwRect aVisPrevwPgSwRect( _rPrevwPgSwRect );
+ aVisPrevwPgSwRect.Intersection( aPrevwWinSwRect );
+ // adjust logic page rectangle
+ SwTwips nTmpDiff;
+ // left
+ nTmpDiff = aVisPrevwPgSwRect.Left() - _rPrevwPgSwRect.Left();
+ if ( nTmpDiff > 0 )
+ _iorLogicPgSwRect.Left( _iorLogicPgSwRect.Left() + nTmpDiff );
+ // top
+ nTmpDiff = aVisPrevwPgSwRect.Top() - _rPrevwPgSwRect.Top();
+ if ( nTmpDiff > 0 )
+ _iorLogicPgSwRect.Top( _iorLogicPgSwRect.Top() + nTmpDiff );
+ // right
+ nTmpDiff = _rPrevwPgSwRect.Right() - aVisPrevwPgSwRect.Right();
+ if ( nTmpDiff > 0 )
+ _iorLogicPgSwRect.Right( _iorLogicPgSwRect.Right() - nTmpDiff );
+ // bottom
+ nTmpDiff = _rPrevwPgSwRect.Bottom() - aVisPrevwPgSwRect.Bottom();
+ if ( nTmpDiff > 0 )
+ _iorLogicPgSwRect.Bottom( _iorLogicPgSwRect.Bottom() - nTmpDiff );
+}
+
//------------------------------------------------------------------------------
static sal_Bool AreInSameTable( const uno::Reference< XAccessible >& rAcc,
const SwFrm *pFrm )
@@ -796,9 +1016,10 @@ void SwAccessibleMap::InvalidateCursorPosition(
ASSERT( pAccImpl->GetFrm(), "caret context is disposed" );
if( GetShell()->ActionPend() )
{
- SwAccessibleEvent_Impl aEvent(
- SwAccessibleEvent_Impl::CARET_OR_STATES, pAccImpl,
- pAccImpl->GetFrm(), ACC_STATE_CARET );
+ SwAccessibleEvent_Impl aEvent( SwAccessibleEvent_Impl::CARET_OR_STATES,
+ pAccImpl,
+ SwAccessibleChild(pAccImpl->GetFrm()),
+ ACC_STATE_CARET );
AppendEvent( aEvent );
}
else
@@ -873,11 +1094,10 @@ void SwAccessibleMap::DoInvalidateShapeSelection()
}
if( bChanged )
{
- SwFrmOrObj aFrmOrObj( pShape->first );
- SwFrmOrObj aParent =
- SwAccessibleFrame::GetParent( aFrmOrObj,
- GetShell()->IsPreView() );
- aParents.push_back( aParent.GetSwFrm() );
+ const SwFrm* pParent = SwAccessibleFrame::GetParent(
+ SwAccessibleChild( pShape->first ),
+ GetShell()->IsPreView() );
+ aParents.push_back( pParent );
}
}
@@ -1166,7 +1386,7 @@ uno::Reference<XAccessible> SwAccessibleMap::GetDocumentPreview(
// create & update preview data object
if( mpPreview == NULL )
mpPreview = new SwAccPreviewData();
- mpPreview->Update( _rPrevwPages, _rScale, _pSelectedPageFrm, _rPrevwWinSize );
+ mpPreview->Update( *this, _rPrevwPages, _rScale, _pSelectedPageFrm, _rPrevwWinSize );
uno::Reference<XAccessible> xAcc = _GetDocumentView( sal_True );
return xAcc;
@@ -1197,8 +1417,8 @@ uno::Reference< XAccessible> SwAccessibleMap::GetContext( const SwFrm *pFrm,
{
case FRM_TXT:
mnPara++;
- pAcc = new SwAccessibleParagraph( this,
- static_cast< const SwTxtFrm * >( pFrm ) );
+ pAcc = new SwAccessibleParagraph( *this,
+ static_cast< const SwTxtFrm& >( *pFrm ) );
break;
case FRM_HEADER:
pAcc = new SwAccessibleHeaderFooter( this,
@@ -1458,10 +1678,12 @@ void SwAccessibleMap::RemoveContext( const SdrObject *pObj )
}
-void SwAccessibleMap::Dispose( const SwFrm *pFrm, const SdrObject *pObj,
+void SwAccessibleMap::Dispose( const SwFrm *pFrm,
+ const SdrObject *pObj,
+ Window* pWindow,
sal_Bool bRecursive )
{
- SwFrmOrObj aFrmOrObj( pFrm, pObj );
+ SwAccessibleChild aFrmOrObj( pFrm, pObj, pWindow );
// Indeed, the following assert checks the frame's accessible flag,
// because that's the one that is evaluated in the layout. The frame
@@ -1470,11 +1692,11 @@ void SwAccessibleMap::Dispose( const SwFrm *pFrm, const SdrObject *pObj,
ASSERT( !aFrmOrObj.GetSwFrm() || aFrmOrObj.GetSwFrm()->IsAccessibleFrm(),
"non accessible frame should be disposed" );
- ::vos::ORef< SwAccessibleContext > xAccImpl;
- ::vos::ORef< SwAccessibleContext > xParentAccImpl;
- ::vos::ORef< ::accessibility::AccessibleShape > xShapeAccImpl;
if( aFrmOrObj.IsAccessible( GetShell()->IsPreView() ) )
{
+ ::vos::ORef< SwAccessibleContext > xAccImpl;
+ ::vos::ORef< SwAccessibleContext > xParentAccImpl;
+ ::vos::ORef< ::accessibility::AccessibleShape > xShapeAccImpl;
// get accessible context for frame
{
vos::OGuard aGuard( maMutex );
@@ -1514,7 +1736,7 @@ void SwAccessibleMap::Dispose( const SwFrm *pFrm, const SdrObject *pObj,
mpShapeMap )
{
SwAccessibleShapeMap_Impl::iterator aIter =
- mpShapeMap->find( aFrmOrObj.GetSdrObject() );
+ mpShapeMap->find( aFrmOrObj.GetDrawObject() );
if( aIter != mpShapeMap->end() )
{
uno::Reference < XAccessible > xAcc( (*aIter).second );
@@ -1574,7 +1796,7 @@ void SwAccessibleMap::Dispose( const SwFrm *pFrm, const SdrObject *pObj,
}
else if( xShapeAccImpl.isValid() )
{
- RemoveContext( aFrmOrObj.GetSdrObject() );
+ RemoveContext( aFrmOrObj.GetDrawObject() );
xShapeAccImpl->dispose();
}
@@ -1585,9 +1807,10 @@ void SwAccessibleMap::Dispose( const SwFrm *pFrm, const SdrObject *pObj,
void SwAccessibleMap::InvalidatePosOrSize( const SwFrm *pFrm,
const SdrObject *pObj,
+ Window* pWindow,
const SwRect& rOldBox )
{
- SwFrmOrObj aFrmOrObj( pFrm, pObj );
+ SwAccessibleChild aFrmOrObj( pFrm, pObj, pWindow );
if( aFrmOrObj.IsAccessible( GetShell()->IsPreView() ) )
{
::vos::ORef< SwAccessibleContext > xAccImpl;
@@ -1669,7 +1892,7 @@ void SwAccessibleMap::InvalidatePosOrSize( const SwFrm *pFrm,
void SwAccessibleMap::InvalidateContent( const SwFrm *pFrm )
{
- SwFrmOrObj aFrmOrObj( pFrm );
+ SwAccessibleChild aFrmOrObj( pFrm );
if( aFrmOrObj.IsAccessible( GetShell()->IsPreView() ) )
{
uno::Reference < XAccessible > xAcc;
@@ -1708,7 +1931,7 @@ void SwAccessibleMap::InvalidateContent( const SwFrm *pFrm )
// --> OD 2009-01-06 #i88069#
void SwAccessibleMap::InvalidateAttr( const SwTxtFrm& rTxtFrm )
{
- SwFrmOrObj aFrmOrObj( &rTxtFrm );
+ SwAccessibleChild aFrmOrObj( &rTxtFrm );
if( aFrmOrObj.IsAccessible( GetShell()->IsPreView() ) )
{
uno::Reference < XAccessible > xAcc;
@@ -1747,7 +1970,7 @@ void SwAccessibleMap::InvalidateAttr( const SwTxtFrm& rTxtFrm )
void SwAccessibleMap::InvalidateCursorPosition( const SwFrm *pFrm )
{
- SwFrmOrObj aFrmOrObj( pFrm );
+ SwAccessibleChild aFrmOrObj( pFrm );
sal_Bool bShapeSelected = sal_False;
const ViewShell *pVSh = GetShell();
if( pVSh->ISA( SwCrsrShell ) )
@@ -1873,7 +2096,7 @@ void SwAccessibleMap::InvalidateStates( tAccessibleStates _nStates,
const SwFrm* _pFrm )
{
// Start with the frame or the first upper that is accessible
- SwFrmOrObj aFrmOrObj( _pFrm );
+ SwAccessibleChild aFrmOrObj( _pFrm );
while( aFrmOrObj.GetSwFrm() &&
!aFrmOrObj.IsAccessible( GetShell()->IsPreView() ) )
aFrmOrObj = aFrmOrObj.GetSwFrm()->GetUpper();
@@ -1885,9 +2108,10 @@ void SwAccessibleMap::InvalidateStates( tAccessibleStates _nStates,
static_cast< SwAccessibleContext *>( xAcc.get() );
if( GetShell()->ActionPend() )
{
- SwAccessibleEvent_Impl aEvent(
- SwAccessibleEvent_Impl::CARET_OR_STATES, pAccImpl,
- pAccImpl->GetFrm(), _nStates );
+ SwAccessibleEvent_Impl aEvent( SwAccessibleEvent_Impl::CARET_OR_STATES,
+ pAccImpl,
+ SwAccessibleChild(pAccImpl->GetFrm()),
+ _nStates );
AppendEvent( aEvent );
}
else
@@ -1902,7 +2126,7 @@ void SwAccessibleMap::_InvalidateRelationSet( const SwFrm* pFrm,
sal_Bool bFrom )
{
// first, see if this frame is accessible, and if so, get the respective
- SwFrmOrObj aFrmOrObj( pFrm );
+ SwAccessibleChild aFrmOrObj( pFrm );
if( aFrmOrObj.IsAccessible( GetShell()->IsPreView() ) )
{
uno::Reference < XAccessible > xAcc;
@@ -1927,9 +2151,11 @@ void SwAccessibleMap::_InvalidateRelationSet( const SwFrm* pFrm,
static_cast< SwAccessibleContext *>( xAcc.get() );
if( GetShell()->ActionPend() )
{
- SwAccessibleEvent_Impl aEvent(
- SwAccessibleEvent_Impl::CARET_OR_STATES, pAccImpl, pFrm,
- bFrom ? ACC_STATE_RELATION_FROM : ACC_STATE_RELATION_TO );
+ SwAccessibleEvent_Impl aEvent( SwAccessibleEvent_Impl::CARET_OR_STATES,
+ pAccImpl, SwAccessibleChild(pFrm),
+ ( bFrom
+ ? ACC_STATE_RELATION_FROM
+ : ACC_STATE_RELATION_TO ) );
AppendEvent( aEvent );
}
else
@@ -1971,7 +2197,7 @@ void SwAccessibleMap::InvalidateParaFlowRelation( const SwTxtFrm& _rTxtFrm,
void SwAccessibleMap::InvalidateParaTextSelection( const SwTxtFrm& _rTxtFrm )
{
// first, see if this frame is accessible, and if so, get the respective
- SwFrmOrObj aFrmOrObj( &_rTxtFrm );
+ SwAccessibleChild aFrmOrObj( &_rTxtFrm );
if( aFrmOrObj.IsAccessible( GetShell()->IsPreView() ) )
{
uno::Reference < XAccessible > xAcc;
@@ -1998,7 +2224,8 @@ void SwAccessibleMap::InvalidateParaTextSelection( const SwTxtFrm& _rTxtFrm )
{
SwAccessibleEvent_Impl aEvent(
SwAccessibleEvent_Impl::CARET_OR_STATES,
- pAccImpl, &_rTxtFrm,
+ pAccImpl,
+ SwAccessibleChild( &_rTxtFrm ),
ACC_STATE_TEXT_SELECTION_CHANGED );
AppendEvent( aEvent );
}
@@ -2011,6 +2238,43 @@ void SwAccessibleMap::InvalidateParaTextSelection( const SwTxtFrm& _rTxtFrm )
}
}
+sal_Int32 SwAccessibleMap::GetChildIndex( const SwFrm& rParentFrm,
+ Window& rChild ) const
+{
+ sal_Int32 nIndex( -1 );
+
+ SwAccessibleChild aFrmOrObj( &rParentFrm );
+ if( aFrmOrObj.IsAccessible( GetShell()->IsPreView() ) )
+ {
+ uno::Reference < XAccessible > xAcc;
+ {
+ vos::OGuard aGuard( maMutex );
+
+ if( mpFrmMap )
+ {
+ SwAccessibleContextMap_Impl::iterator aIter =
+ mpFrmMap->find( aFrmOrObj.GetSwFrm() );
+ if( aIter != mpFrmMap->end() )
+ {
+ xAcc = (*aIter).second;
+ }
+ }
+ }
+
+ if( xAcc.is() )
+ {
+ SwAccessibleContext *pAccImpl =
+ static_cast< SwAccessibleContext *>( xAcc.get() );
+
+ nIndex = pAccImpl->GetChildIndex( const_cast<SwAccessibleMap&>(*this),
+ SwAccessibleChild( &rChild ) );
+ }
+ }
+
+ return nIndex;
+}
+
+
// OD 15.01.2003 #103492# - complete re-factoring of method due to new page/print
// preview functionality.
void SwAccessibleMap::UpdatePreview( const std::vector<PrevwPage*>& _rPrevwPages,
@@ -2022,7 +2286,7 @@ void SwAccessibleMap::UpdatePreview( const std::vector<PrevwPage*>& _rPrevwPages
DBG_ASSERT( mpPreview != NULL, "no preview data?" );
// OD 15.01.2003 #103492# - adjustments for changed method signature
- mpPreview->Update( _rPrevwPages, _rScale, _pSelectedPageFrm, _rPrevwWinSize );
+ mpPreview->Update( *this, _rPrevwPages, _rScale, _pSelectedPageFrm, _rPrevwWinSize );
// propagate change of VisArea through the document's
// accessibility tree; this will also send appropriate scroll
@@ -2247,7 +2511,7 @@ sal_Bool SwAccessibleMap::ReplaceChild (
// Also get keep parent.
uno::Reference < XAccessible > xParent( pCurrentChild->getAccessibleParent() );
pCurrentChild = 0; // well be realease by dispose
- Dispose( 0, pObj );
+ Dispose( 0, pObj, 0 );
{
vos::OGuard aGuard( maMutex );
@@ -2284,7 +2548,7 @@ sal_Bool SwAccessibleMap::ReplaceChild (
}
SwRect aEmptyRect;
- InvalidatePosOrSize( 0, pObj, aEmptyRect );
+ InvalidatePosOrSize( 0, pObj, 0, aEmptyRect );
return sal_True;
}
@@ -2612,153 +2876,13 @@ void SwAccessibleMap::InvalidateTextSelectionOfAllParas()
}
}
-//
-// SwAccPreviewData
-//
-
-SwAccPreviewData::SwAccPreviewData() :
- mpSelPage( 0 )
-{
-}
-
-SwAccPreviewData::~SwAccPreviewData()
-{
-}
-
-// OD 13.01.2003 #103492# - complete re-factoring of method due to new page/print
-// preview functionality.
-void SwAccPreviewData::Update( const std::vector<PrevwPage*>& _rPrevwPages,
- const Fraction& _rScale,
- const SwPageFrm* _pSelectedPageFrm,
- const Size& _rPrevwWinSize )
+const SwRect& SwAccessibleMap::GetVisArea() const
{
- // store preview scaling, maximal preview page size and selected page
- maScale = _rScale;
- mpSelPage = _pSelectedPageFrm;
-
- // prepare loop on preview pages
- maPreviewRects.clear();
- maLogicRects.clear();
- SwFrmOrObj aPage;
- maVisArea.Clear();
+ DBG_ASSERT( !GetShell()->IsPreView() || (mpPreview != NULL),
+ "preview without preview data?" );
- // loop on preview pages to calculate <maPreviewRects>, <maLogicRects> and
- // <maVisArea>
- for ( std::vector<PrevwPage*>::const_iterator aPageIter = _rPrevwPages.begin();
- aPageIter != _rPrevwPages.end();
- ++aPageIter )
- {
- aPage = (*aPageIter)->pPage;
-
- // add preview page rectangle to <maPreviewRects>
- Rectangle aPrevwPgRect( (*aPageIter)->aPrevwWinPos, (*aPageIter)->aPageSize );
- maPreviewRects.push_back( aPrevwPgRect );
-
- // add logic page rectangle to <maLogicRects>
- SwRect aLogicPgSwRect( aPage.GetBox() );
- Rectangle aLogicPgRect( aLogicPgSwRect.SVRect() );
- maLogicRects.push_back( aLogicPgRect );
- // union visible area with visible part of logic page rectangle
- if ( (*aPageIter)->bVisible )
- {
- if ( !(*aPageIter)->pPage->IsEmptyPage() )
- {
- AdjustLogicPgRectToVisibleArea( aLogicPgSwRect,
- SwRect( aPrevwPgRect ),
- _rPrevwWinSize );
- }
- if ( maVisArea.IsEmpty() )
- maVisArea = aLogicPgSwRect;
- else
- maVisArea.Union( aLogicPgSwRect );
- }
- }
+ return GetShell()->IsPreView()
+ ? mpPreview->GetVisArea()
+ : GetShell()->VisArea();
}
-// OD 16.01.2003 #103492# - complete re-factoring of method due to new page/print
-// preview functionality.
-void SwAccPreviewData::InvalidateSelection( const SwPageFrm* _pSelectedPageFrm )
-{
- mpSelPage = _pSelectedPageFrm;
- ASSERT( mpSelPage, "selected page not found" );
-}
-
-struct ContainsPredicate
-{
- const Point& mrPoint;
- ContainsPredicate( const Point& rPoint ) : mrPoint(rPoint) {}
- bool operator() ( const Rectangle& rRect ) const
- {
- return rRect.IsInside( mrPoint ) ? true : false;
- }
-};
-
-const SwRect& SwAccPreviewData::GetVisArea() const
-{
- return maVisArea;
-}
-
-void SwAccPreviewData::AdjustMapMode( MapMode& rMapMode,
- const Point& rPoint ) const
-{
- // adjust scale
- rMapMode.SetScaleX( maScale );
- rMapMode.SetScaleY( maScale );
-
- // find proper rectangle
- Rectangles::const_iterator aBegin = maLogicRects.begin();
- Rectangles::const_iterator aEnd = maLogicRects.end();
- Rectangles::const_iterator aFound = ::std::find_if( aBegin, aEnd,
- ContainsPredicate( rPoint ) );
-
- if( aFound != aEnd )
- {
- // found! set new origin
- Point aPoint = (maPreviewRects.begin() + (aFound - aBegin))->TopLeft();
- aPoint -= (maLogicRects.begin() + (aFound-aBegin))->TopLeft();
- rMapMode.SetOrigin( aPoint );
- }
- // else: don't adjust MapMode
-}
-
-void SwAccPreviewData::DisposePage(const SwPageFrm *pPageFrm )
-{
- if( mpSelPage == pPageFrm )
- mpSelPage = 0;
-}
-
-/** adjust logic page retangle to its visible part
-
- OD 17.01.2003 #103492#
-
- @author OD
-*/
-void SwAccPreviewData::AdjustLogicPgRectToVisibleArea(
- SwRect& _iorLogicPgSwRect,
- const SwRect& _rPrevwPgSwRect,
- const Size& _rPrevwWinSize )
-{
- // determine preview window rectangle
- const SwRect aPrevwWinSwRect( Point( 0, 0 ), _rPrevwWinSize );
- // calculate visible preview page rectangle
- SwRect aVisPrevwPgSwRect( _rPrevwPgSwRect );
- aVisPrevwPgSwRect.Intersection( aPrevwWinSwRect );
- // adjust logic page rectangle
- SwTwips nTmpDiff;
- // left
- nTmpDiff = aVisPrevwPgSwRect.Left() - _rPrevwPgSwRect.Left();
- if ( nTmpDiff > 0 )
- _iorLogicPgSwRect.Left( _iorLogicPgSwRect.Left() + nTmpDiff );
- // top
- nTmpDiff = aVisPrevwPgSwRect.Top() - _rPrevwPgSwRect.Top();
- if ( nTmpDiff > 0 )
- _iorLogicPgSwRect.Top( _iorLogicPgSwRect.Top() + nTmpDiff );
- // right
- nTmpDiff = _rPrevwPgSwRect.Right() - aVisPrevwPgSwRect.Right();
- if ( nTmpDiff > 0 )
- _iorLogicPgSwRect.Right( _iorLogicPgSwRect.Right() - nTmpDiff );
- // bottom
- nTmpDiff = _rPrevwPgSwRect.Bottom() - aVisPrevwPgSwRect.Bottom();
- if ( nTmpDiff > 0 )
- _iorLogicPgSwRect.Bottom( _iorLogicPgSwRect.Bottom() - nTmpDiff );
-}
diff --git a/sw/source/core/access/accpara.cxx b/sw/source/core/access/accpara.cxx
index 3961c8988351..368e076470ab 100644
--- a/sw/source/core/access/accpara.cxx
+++ b/sw/source/core/access/accpara.cxx
@@ -29,13 +29,14 @@
#include "precompiled_sw.hxx"
#include <txtfrm.hxx>
+#include <flyfrm.hxx>
#include <ndtxt.hxx>
#include <pam.hxx>
#include <unotextrange.hxx>
#include <unocrsrhelper.hxx>
#include <crstate.hxx>
#include <accmap.hxx>
-#include "fesh.hxx"
+#include <fesh.hxx>
#include <viewopt.hxx>
#include <vos/mutex.hxx>
#include <vcl/svapp.hxx>
@@ -51,56 +52,44 @@
#include <com/sun/star/i18n/XBreakIterator.hpp>
#include <com/sun/star/beans/UnknownPropertyException.hpp>
#include <breakit.hxx>
-#include "accpara.hxx"
-#ifndef _ACCESS_HRC
-#include "access.hrc"
-#endif
-#include "accportions.hxx"
+#include <accpara.hxx>
+#include <access.hrc>
+#include <accportions.hxx>
#include <sfx2/viewsh.hxx> // for ExecuteAtViewShell(...)
#include <sfx2/viewfrm.hxx> // for ExecuteAtViewShell(...)
#include <sfx2/dispatch.hxx> // for ExecuteAtViewShell(...)
#include <unotools/charclass.hxx> // for GetWordBoundary
// for get/setCharacterAttribute(...)
-#include "unocrsr.hxx"
-#include "unoport.hxx"
-#include "doc.hxx"
-#include "crsskip.hxx"
+#include <unocrsr.hxx>
+//#include <unoobj.hxx>
+#include <unoport.hxx>
+#include <doc.hxx>
+#include <crsskip.hxx>
#include <txtatr.hxx>
#include <acchyperlink.hxx>
#include <acchypertextdata.hxx>
-// --> OD 2005-12-02 #i27138#
#include <unotools/accessiblerelationsethelper.hxx>
#include <com/sun/star/accessibility/AccessibleRelationType.hpp>
-// <--
#include <comphelper/accessibletexthelper.hxx>
-// --> OD 2006-07-12 #i63870#
#include <unomap.hxx>
-// <--
-// --> OD 2007-01-15 #i72800#
#include <unoprnms.hxx>
-// <--
-// --> OD 2007-01-15 #i73371#
#include <com/sun/star/text/WritingMode2.hpp>
-// <--
-// --> OD 2007-01-17 #i71385#
#include <editeng/brshitem.hxx>
#include <viewimp.hxx>
-// <--
-// --> OD 2007-11-12 #i82637#
#include <boost/scoped_ptr.hpp>
-// <--
-// --> OD 2008-05-26 #i71360#
#include <textmarkuphelper.hxx>
+// --> OD 2010-02-22 #i10825#
+#include <parachangetrackinginfo.hxx>
+#include <com/sun/star/text/TextMarkupType.hpp>
+// <--
+// --> OD 2010-03-08 #i92233#
+#include <comphelper/stlunosequence.hxx>
// <--
#include <algorithm>
using namespace ::com::sun::star;
-using namespace ::com::sun::star::i18n;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::accessibility;
-using ::rtl::OUString;
using beans::PropertyValue;
using beans::XMultiPropertySet;
@@ -132,15 +121,15 @@ const SwTxtNode* SwAccessibleParagraph::GetTxtNode() const
return pNode;
}
-OUString SwAccessibleParagraph::GetString()
+::rtl::OUString SwAccessibleParagraph::GetString()
{
return GetPortionData().GetAccessibleString();
}
-OUString SwAccessibleParagraph::GetDescription()
+::rtl::OUString SwAccessibleParagraph::GetDescription()
{
// --> OD 2004-09-29 #117933# - provide empty description for paragraphs
- return OUString();
+ return ::rtl::OUString();
// <--
}
@@ -389,11 +378,11 @@ void SwAccessibleParagraph::GetStates(
void SwAccessibleParagraph::_InvalidateContent( sal_Bool bVisibleDataFired )
{
- OUString sOldText( GetString() );
+ ::rtl::OUString sOldText( GetString() );
ClearPortionData();
- const OUString& rText = GetString();
+ const ::rtl::OUString& rText = GetString();
if( rText != sOldText )
{
@@ -425,8 +414,8 @@ void SwAccessibleParagraph::_InvalidateContent( sal_Bool bVisibleDataFired )
if( bNewIsHeading != bOldIsHeading || rText != sOldText )
{
- OUString sNewDesc( GetDescription() );
- OUString sOldDesc;
+ ::rtl::OUString sNewDesc( GetDescription() );
+ ::rtl::OUString sOldDesc;
{
vos::OGuard aGuard( aMutex );
sOldDesc = sDesc;
@@ -503,19 +492,27 @@ void SwAccessibleParagraph::_InvalidateFocus()
}
SwAccessibleParagraph::SwAccessibleParagraph(
- SwAccessibleMap* pInitMap,
- const SwTxtFrm *pTxtFrm ) :
- SwAccessibleContext( pInitMap, AccessibleRole::PARAGRAPH, pTxtFrm ),
- pPortionData( NULL ),
- pHyperTextData( NULL ),
- nOldCaretPos( -1 ),
- aSelectionHelper( *this )
+ SwAccessibleMap& rInitMap,
+ const SwTxtFrm& rTxtFrm )
+ // --> OD 2010-02-24 #i108125#
+ : SwClient( const_cast<SwTxtNode*>(rTxtFrm.GetTxtNode()) )
+ // <--
+ , SwAccessibleContext( &rInitMap, AccessibleRole::PARAGRAPH, &rTxtFrm )
+ , sDesc()
+ , pPortionData( NULL )
+ , pHyperTextData( NULL )
+ , nOldCaretPos( -1 )
+ , bIsHeading( sal_False )
+ , aSelectionHelper( *this )
+ // --> OD 2010-02-19 #i108125#
+ , mpParaChangeTrackInfo( new SwParaChangeTrackingInfo( rTxtFrm ) )
+ // <--
{
vos::OGuard aGuard(Application::GetSolarMutex());
bIsHeading = IsHeading();
// --> OD 2004-09-27 #117970# - set an empty accessibility name for paragraphs
- SetName( OUString() );
+ SetName( ::rtl::OUString() );
// <--
// If this object has the focus, then it is remembered by the map itself.
@@ -528,6 +525,9 @@ SwAccessibleParagraph::~SwAccessibleParagraph()
delete pPortionData;
delete pHyperTextData;
+ // --> OD 2010-02-22 #i108125#
+ delete mpParaChangeTrackInfo;
+ // <--
}
sal_Bool SwAccessibleParagraph::HasCursor()
@@ -648,8 +648,8 @@ sal_Bool SwAccessibleParagraph::IsValidRange(
sal_Bool SwAccessibleParagraph::GetCharBoundary(
- Boundary& rBound,
- const OUString&,
+ i18n::Boundary& rBound,
+ const ::rtl::OUString&,
sal_Int32 nPos )
{
rBound.startPos = nPos;
@@ -658,8 +658,8 @@ sal_Bool SwAccessibleParagraph::GetCharBoundary(
}
sal_Bool SwAccessibleParagraph::GetWordBoundary(
- Boundary& rBound,
- const OUString& rText,
+ i18n::Boundary& rBound,
+ const ::rtl::OUString& rText,
sal_Int32 nPos )
{
sal_Bool bRet = sal_False;
@@ -671,12 +671,12 @@ sal_Bool SwAccessibleParagraph::GetWordBoundary(
{
// get locale for this position
USHORT nModelPos = GetPortionData().GetModelPosition( nPos );
- Locale aLocale = pBreakIt->GetLocale(
+ lang::Locale aLocale = pBreakIt->GetLocale(
GetTxtNode()->GetLang( nModelPos ) );
// which type of word are we interested in?
// (DICTIONARY_WORD includes punctuation, ANY_WORD doesn't.)
- const USHORT nWordType = WordType::ANY_WORD;
+ const USHORT nWordType = i18n::WordType::ANY_WORD;
// get word boundary, as the Break-Iterator sees fit.
rBound = pBreakIt->GetBreakIter()->getWordBoundary(
@@ -697,8 +697,8 @@ sal_Bool SwAccessibleParagraph::GetWordBoundary(
}
sal_Bool SwAccessibleParagraph::GetSentenceBoundary(
- Boundary& rBound,
- const OUString&,
+ i18n::Boundary& rBound,
+ const ::rtl::OUString&,
sal_Int32 nPos )
{
GetPortionData().GetSentenceBoundary( rBound, nPos );
@@ -706,8 +706,8 @@ sal_Bool SwAccessibleParagraph::GetSentenceBoundary(
}
sal_Bool SwAccessibleParagraph::GetLineBoundary(
- Boundary& rBound,
- const OUString& rText,
+ i18n::Boundary& rBound,
+ const ::rtl::OUString& rText,
sal_Int32 nPos )
{
if( rText.getLength() == nPos )
@@ -718,8 +718,8 @@ sal_Bool SwAccessibleParagraph::GetLineBoundary(
}
sal_Bool SwAccessibleParagraph::GetParagraphBoundary(
- Boundary& rBound,
- const OUString& rText,
+ i18n::Boundary& rBound,
+ const ::rtl::OUString& rText,
sal_Int32 )
{
rBound.startPos = 0;
@@ -728,8 +728,8 @@ sal_Bool SwAccessibleParagraph::GetParagraphBoundary(
}
sal_Bool SwAccessibleParagraph::GetAttributeBoundary(
- Boundary& rBound,
- const OUString&,
+ i18n::Boundary& rBound,
+ const ::rtl::OUString&,
sal_Int32 nPos )
{
GetPortionData().GetAttributeBoundary( rBound, nPos );
@@ -737,8 +737,8 @@ sal_Bool SwAccessibleParagraph::GetAttributeBoundary(
}
sal_Bool SwAccessibleParagraph::GetGlyphBoundary(
- Boundary& rBound,
- const OUString& rText,
+ i18n::Boundary& rBound,
+ const ::rtl::OUString& rText,
sal_Int32 nPos )
{
sal_Bool bRet = sal_False;
@@ -751,11 +751,11 @@ sal_Bool SwAccessibleParagraph::GetGlyphBoundary(
{
// get locale for this position
USHORT nModelPos = GetPortionData().GetModelPosition( nPos );
- Locale aLocale = pBreakIt->GetLocale(
+ lang::Locale aLocale = pBreakIt->GetLocale(
GetTxtNode()->GetLang( nModelPos ) );
// get word boundary, as the Break-Iterator sees fit.
- const USHORT nIterMode = CharacterIteratorMode::SKIPCELL;
+ const USHORT nIterMode = i18n::CharacterIteratorMode::SKIPCELL;
sal_Int32 nDone = 0;
rBound.endPos = pBreakIt->GetBreakIter()->nextCharacters(
rText, nPos, aLocale, nIterMode, 1, nDone );
@@ -777,20 +777,20 @@ sal_Bool SwAccessibleParagraph::GetGlyphBoundary(
sal_Bool SwAccessibleParagraph::GetTextBoundary(
- Boundary& rBound,
- const OUString& rText,
+ i18n::Boundary& rBound,
+ const ::rtl::OUString& rText,
sal_Int32 nPos,
sal_Int16 nTextType )
throw (
- IndexOutOfBoundsException,
- IllegalArgumentException,
+ lang::IndexOutOfBoundsException,
+ lang::IllegalArgumentException,
uno::RuntimeException)
{
// error checking
if( !( AccessibleTextType::LINE == nTextType
? IsValidPosition( nPos, rText.getLength() )
: IsValidChar( nPos, rText.getLength() ) ) )
- throw IndexOutOfBoundsException();
+ throw lang::IndexOutOfBoundsException();
sal_Bool bRet;
@@ -825,13 +825,13 @@ sal_Bool SwAccessibleParagraph::GetTextBoundary(
break;
default:
- throw IllegalArgumentException( );
+ throw lang::IllegalArgumentException( );
}
return bRet;
}
-OUString SAL_CALL SwAccessibleParagraph::getAccessibleDescription (void)
+::rtl::OUString SAL_CALL SwAccessibleParagraph::getAccessibleDescription (void)
throw (uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -845,7 +845,7 @@ OUString SAL_CALL SwAccessibleParagraph::getAccessibleDescription (void)
return sDesc;
}
-Locale SAL_CALL SwAccessibleParagraph::getLocale (void)
+lang::Locale SAL_CALL SwAccessibleParagraph::getLocale (void)
throw (IllegalAccessibleComponentStateException, uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -857,7 +857,7 @@ Locale SAL_CALL SwAccessibleParagraph::getLocale (void)
}
const SwTxtNode *pTxtNd = pTxtFrm->GetTxtNode();
- Locale aLoc( pBreakIt->GetLocale( pTxtNd->GetLang( 0 ) ) );
+ lang::Locale aLoc( pBreakIt->GetLocale( pTxtNd->GetLang( 0 ) ) );
return aLoc;
}
@@ -1010,10 +1010,10 @@ sal_Int32 SAL_CALL SwAccessibleParagraph::getBackground()
}
// <--
-OUString SAL_CALL SwAccessibleParagraph::getImplementationName()
+::rtl::OUString SAL_CALL SwAccessibleParagraph::getImplementationName()
throw( uno::RuntimeException )
{
- return OUString(RTL_CONSTASCII_USTRINGPARAM(sImplementationName));
+ return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sImplementationName));
}
sal_Bool SAL_CALL SwAccessibleParagraph::supportsService(
@@ -1026,13 +1026,13 @@ sal_Bool SAL_CALL SwAccessibleParagraph::supportsService(
sizeof(sAccessibleServiceName)-1 );
}
-Sequence< OUString > SAL_CALL SwAccessibleParagraph::getSupportedServiceNames()
+uno::Sequence< ::rtl::OUString > SAL_CALL SwAccessibleParagraph::getSupportedServiceNames()
throw( uno::RuntimeException )
{
- Sequence< OUString > aRet(2);
- OUString* pArray = aRet.getArray();
- pArray[0] = OUString( RTL_CONSTASCII_USTRINGPARAM(sServiceName) );
- pArray[1] = OUString( RTL_CONSTASCII_USTRINGPARAM(sAccessibleServiceName) );
+ uno::Sequence< ::rtl::OUString > aRet(2);
+ ::rtl::OUString* pArray = aRet.getArray();
+ pArray[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(sServiceName) );
+ pArray[1] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(sAccessibleServiceName) );
return aRet;
}
@@ -1040,10 +1040,10 @@ Sequence< OUString > SAL_CALL SwAccessibleParagraph::getSupportedServiceNames()
//===== XInterface =======================================================
//
-Any SwAccessibleParagraph::queryInterface( const Type& rType )
- throw (RuntimeException)
+uno::Any SwAccessibleParagraph::queryInterface( const uno::Type& rType )
+ throw (uno::RuntimeException)
{
- Any aRet;
+ uno::Any aRet;
if ( rType == ::getCppuType((uno::Reference<XAccessibleText> *)0) )
{
uno::Reference<XAccessibleText> aAccText = (XAccessibleText *) *this; // resolve ambiguity
@@ -1095,9 +1095,9 @@ Any SwAccessibleParagraph::queryInterface( const Type& rType )
}
//====== XTypeProvider ====================================================
-Sequence< Type > SAL_CALL SwAccessibleParagraph::getTypes() throw(RuntimeException)
+uno::Sequence< uno::Type > SAL_CALL SwAccessibleParagraph::getTypes() throw(uno::RuntimeException)
{
- Sequence< Type > aTypes( SwAccessibleContext::getTypes() );
+ uno::Sequence< uno::Type > aTypes( SwAccessibleContext::getTypes() );
sal_Int32 nIndex = aTypes.getLength();
// --> OD 2006-07-13 #i63870#
@@ -1106,7 +1106,7 @@ Sequence< Type > SAL_CALL SwAccessibleParagraph::getTypes() throw(RuntimeExcepti
// add type accessibility::XAccessibleTextMarkup and accessibility::XAccessibleMultiLineText
aTypes.realloc( nIndex + 6 );
- Type* pTypes = aTypes.getArray();
+ uno::Type* pTypes = aTypes.getArray();
pTypes[nIndex++] = ::getCppuType( static_cast< uno::Reference< XAccessibleEditableText > * >( 0 ) );
pTypes[nIndex++] = ::getCppuType( static_cast< uno::Reference< XAccessibleTextAttributes > * >( 0 ) );
pTypes[nIndex++] = ::getCppuType( static_cast< uno::Reference< XAccessibleSelection > * >( 0 ) );
@@ -1118,11 +1118,11 @@ Sequence< Type > SAL_CALL SwAccessibleParagraph::getTypes() throw(RuntimeExcepti
return aTypes;
}
-Sequence< sal_Int8 > SAL_CALL SwAccessibleParagraph::getImplementationId()
- throw(RuntimeException)
+uno::Sequence< sal_Int8 > SAL_CALL SwAccessibleParagraph::getImplementationId()
+ throw(uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
- static Sequence< sal_Int8 > aId( 16 );
+ static uno::Sequence< sal_Int8 > aId( 16 );
static sal_Bool bInit = sal_False;
if(!bInit)
{
@@ -1138,7 +1138,7 @@ Sequence< sal_Int8 > SAL_CALL SwAccessibleParagraph::getImplementationId()
//
sal_Int32 SwAccessibleParagraph::getCaretPosition()
- throw (RuntimeException)
+ throw (uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -1160,7 +1160,7 @@ sal_Int32 SwAccessibleParagraph::getCaretPosition()
}
sal_Bool SAL_CALL SwAccessibleParagraph::setCaretPosition( sal_Int32 nIndex )
- throw (IndexOutOfBoundsException, uno::RuntimeException)
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -1170,7 +1170,7 @@ sal_Bool SAL_CALL SwAccessibleParagraph::setCaretPosition( sal_Int32 nIndex )
sal_Int32 nLength = GetString().getLength();
if ( ! IsValidPosition( nIndex, nLength ) )
{
- throw IndexOutOfBoundsException();
+ throw lang::IndexOutOfBoundsException();
}
sal_Bool bRet = sal_False;
@@ -1193,13 +1193,13 @@ sal_Bool SAL_CALL SwAccessibleParagraph::setCaretPosition( sal_Int32 nIndex )
}
sal_Unicode SwAccessibleParagraph::getCharacter( sal_Int32 nIndex )
- throw (IndexOutOfBoundsException, uno::RuntimeException)
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
CHECK_FOR_DEFUNC_THIS( XAccessibleText, *this );
- OUString sText( GetString() );
+ ::rtl::OUString sText( GetString() );
// return character (if valid)
if( IsValidChar(nIndex, sText.getLength() ) )
@@ -1207,25 +1207,25 @@ sal_Unicode SwAccessibleParagraph::getCharacter( sal_Int32 nIndex )
return sText.getStr()[nIndex];
}
else
- throw IndexOutOfBoundsException();
+ throw lang::IndexOutOfBoundsException();
}
// --> OD 2006-07-20 #i63870#
// re-implement method on behalf of methods <_getDefaultAttributesImpl(..)> and
// <_getRunAttributesImpl(..)>
-Sequence<PropertyValue> SwAccessibleParagraph::getCharacterAttributes(
+uno::Sequence<PropertyValue> SwAccessibleParagraph::getCharacterAttributes(
sal_Int32 nIndex,
const uno::Sequence< ::rtl::OUString >& aRequestedAttributes )
- throw (IndexOutOfBoundsException, uno::RuntimeException)
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
CHECK_FOR_DEFUNC_THIS( XAccessibleText, *this );
- const OUString& rText = GetString();
+ const ::rtl::OUString& rText = GetString();
if( ! IsValidChar( nIndex, rText.getLength() ) )
- throw IndexOutOfBoundsException();
+ throw lang::IndexOutOfBoundsException();
// retrieve default character attributes
tAccParaPropValMap aDefAttrSeq;
@@ -1236,7 +1236,7 @@ Sequence<PropertyValue> SwAccessibleParagraph::getCharacterAttributes(
_getRunAttributesImpl( nIndex, aRequestedAttributes, aRunAttrSeq );
// merge default and run attributes
- Sequence< PropertyValue > aValues( aDefAttrSeq.size() );
+ uno::Sequence< PropertyValue > aValues( aDefAttrSeq.size() );
PropertyValue* pValues = aValues.getArray();
sal_Int32 i = 0;
for ( tAccParaPropValMap::const_iterator aDefIter = aDefAttrSeq.begin();
@@ -1354,7 +1354,7 @@ void SwAccessibleParagraph::_getDefaultAttributesImpl(
const SfxPoolItem* pItem = pSet->GetItem( aPropIt->nWID );
if ( pItem )
{
- Any aVal;
+ uno::Any aVal;
pItem->QueryValue( aVal, aPropIt->nMemberId );
PropertyValue rPropVal;
@@ -1372,14 +1372,14 @@ void SwAccessibleParagraph::_getDefaultAttributesImpl(
// add property value entry for the paragraph style
if ( !bOnlyCharAttrs && pTxtNode->GetTxtColl() )
{
- const OUString sParaStyleName =
- OUString::createFromAscii(
+ const ::rtl::OUString sParaStyleName =
+ ::rtl::OUString::createFromAscii(
GetPropName( UNO_NAME_PARA_STYLE_NAME ).pName );
if ( aDefAttrSeq.find( sParaStyleName ) == aDefAttrSeq.end() )
{
PropertyValue rPropVal;
rPropVal.Name = sParaStyleName;
- Any aVal( makeAny( OUString( pTxtNode->GetTxtColl()->GetName() ) ) );
+ uno::Any aVal( uno::makeAny( ::rtl::OUString( pTxtNode->GetTxtColl()->GetName() ) ) );
rPropVal.Value = aVal;
rPropVal.Handle = -1;
rPropVal.State = beans::PropertyState_DEFAULT_VALUE;
@@ -1393,8 +1393,8 @@ void SwAccessibleParagraph::_getDefaultAttributesImpl(
// resolve value text::WritingMode2::PAGE of property value entry WritingMode
if ( !bOnlyCharAttrs && GetFrm() )
{
- const OUString sWritingMode =
- OUString::createFromAscii(
+ const ::rtl::OUString sWritingMode =
+ ::rtl::OUString::createFromAscii(
GetPropName( UNO_NAME_WRITING_MODE ).pName );
tAccParaPropValMap::iterator aIter = aDefAttrSeq.find( sWritingMode );
if ( aIter != aDefAttrSeq.end() )
@@ -1447,7 +1447,7 @@ void SwAccessibleParagraph::_getDefaultAttributesImpl(
}
else
{
- const OUString* pReqAttrs = aRequestedAttributes.getConstArray();
+ const ::rtl::OUString* pReqAttrs = aRequestedAttributes.getConstArray();
const sal_Int32 nLength = aRequestedAttributes.getLength();
for( sal_Int32 i = 0; i < nLength; ++i )
{
@@ -1460,8 +1460,8 @@ void SwAccessibleParagraph::_getDefaultAttributesImpl(
}
}
-Sequence< PropertyValue > SwAccessibleParagraph::getDefaultAttributes(
- const Sequence< ::rtl::OUString >& aRequestedAttributes )
+uno::Sequence< PropertyValue > SwAccessibleParagraph::getDefaultAttributes(
+ const uno::Sequence< ::rtl::OUString >& aRequestedAttributes )
throw ( uno::RuntimeException )
{
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -1470,7 +1470,30 @@ Sequence< PropertyValue > SwAccessibleParagraph::getDefaultAttributes(
tAccParaPropValMap aDefAttrSeq;
_getDefaultAttributesImpl( aRequestedAttributes, aDefAttrSeq );
- Sequence< PropertyValue > aValues( aDefAttrSeq.size() );
+ // --> OD 2010-03-08 #i92233#
+ static rtl::OUString sMMToPixelRatio( rtl::OUString::createFromAscii( "MMToPixelRatio" ) );
+ bool bProvideMMToPixelRatio( false );
+ {
+ if ( aRequestedAttributes.getLength() == 0 )
+ {
+ bProvideMMToPixelRatio = true;
+ }
+ else
+ {
+ const rtl::OUString* aRequestedAttrIter =
+ ::std::find( ::comphelper::stl_begin( aRequestedAttributes ),
+ ::comphelper::stl_end( aRequestedAttributes ),
+ sMMToPixelRatio );
+ if ( aRequestedAttrIter != ::comphelper::stl_end( aRequestedAttributes ) )
+ {
+ bProvideMMToPixelRatio = true;
+ }
+ }
+ }
+ // <--
+
+ uno::Sequence< PropertyValue > aValues( aDefAttrSeq.size() +
+ ( bProvideMMToPixelRatio ? 1 : 0 ) );
PropertyValue* pValues = aValues.getArray();
sal_Int32 i = 0;
for ( tAccParaPropValMap::const_iterator aIter = aDefAttrSeq.begin();
@@ -1481,6 +1504,21 @@ Sequence< PropertyValue > SwAccessibleParagraph::getDefaultAttributes(
++i;
}
+ // --> OD 2010-03-08 #i92233#
+ if ( bProvideMMToPixelRatio )
+ {
+ PropertyValue rPropVal;
+ rPropVal.Name = sMMToPixelRatio;
+ const Size a100thMMSize( 1000, 1000 );
+ const Size aPixelSize = GetMap()->LogicToPixel( a100thMMSize );
+ const float fRatio = ((float)a100thMMSize.Width()/100)/aPixelSize.Width();
+ rPropVal.Value = uno::makeAny( fRatio );
+ rPropVal.Handle = -1;
+ rPropVal.State = beans::PropertyState_DEFAULT_VALUE;
+ pValues[ aValues.getLength() - 1 ] = rPropVal;
+ }
+ // <--
+
return aValues;
}
@@ -1557,7 +1595,7 @@ void SwAccessibleParagraph::_getRunAttributesImpl(
// the corresponding default character attributes, are excluded.
if ( aSet.GetItemState( aPropIt->nWID, TRUE, &pItem ) == SFX_ITEM_SET )
{
- Any aVal;
+ uno::Any aVal;
pItem->QueryValue( aVal, aPropIt->nMemberId );
PropertyValue rPropVal;
@@ -1585,7 +1623,7 @@ void SwAccessibleParagraph::_getRunAttributesImpl(
}
else
{
- const OUString* pReqAttrs = aRequestedAttributes.getConstArray();
+ const ::rtl::OUString* pReqAttrs = aRequestedAttributes.getConstArray();
const sal_Int32 nLength = aRequestedAttributes.getLength();
for( sal_Int32 i = 0; i < nLength; ++i )
{
@@ -1601,27 +1639,27 @@ void SwAccessibleParagraph::_getRunAttributesImpl(
delete pPaM;
}
-Sequence< PropertyValue > SwAccessibleParagraph::getRunAttributes(
+uno::Sequence< PropertyValue > SwAccessibleParagraph::getRunAttributes(
sal_Int32 nIndex,
- const Sequence< ::rtl::OUString >& aRequestedAttributes )
- throw ( IndexOutOfBoundsException,
+ const uno::Sequence< ::rtl::OUString >& aRequestedAttributes )
+ throw ( lang::IndexOutOfBoundsException,
uno::RuntimeException )
{
vos::OGuard aGuard(Application::GetSolarMutex());
CHECK_FOR_DEFUNC_THIS( XAccessibleText, *this );
{
- const OUString& rText = GetString();
+ const ::rtl::OUString& rText = GetString();
if ( !IsValidChar( nIndex, rText.getLength() ) )
{
- throw IndexOutOfBoundsException();
+ throw lang::IndexOutOfBoundsException();
}
}
tAccParaPropValMap aRunAttrSeq;
_getRunAttributesImpl( nIndex, aRequestedAttributes, aRunAttrSeq );
- Sequence< PropertyValue > aValues( aRunAttrSeq.size() );
+ uno::Sequence< PropertyValue > aValues( aRunAttrSeq.size() );
PropertyValue* pValues = aValues.getArray();
sal_Int32 i = 0;
for ( tAccParaPropValMap::const_iterator aIter = aRunAttrSeq.begin();
@@ -1638,7 +1676,7 @@ Sequence< PropertyValue > SwAccessibleParagraph::getRunAttributes(
awt::Rectangle SwAccessibleParagraph::getCharacterBounds(
sal_Int32 nIndex )
- throw (IndexOutOfBoundsException, uno::RuntimeException)
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -1649,7 +1687,7 @@ awt::Rectangle SwAccessibleParagraph::getCharacterBounds(
IsValidChar -> IsValidPosition
*/
if( ! (IsValidPosition( nIndex, GetString().getLength() ) ) )
- throw IndexOutOfBoundsException();
+ throw lang::IndexOutOfBoundsException();
/* #i12332# */
sal_Bool bBehindText = sal_False;
@@ -1689,7 +1727,7 @@ awt::Rectangle SwAccessibleParagraph::getCharacterBounds(
CHECK_FOR_WINDOW( XAccessibleComponent, pWin );
Rectangle aScreenRect( GetMap()->CoreToPixel( aCoreRect.SVRect() ));
- SwRect aFrmLogBounds( GetBounds() ); // twip rel to doc root
+ SwRect aFrmLogBounds( GetBounds( *(GetMap()) ) ); // twip rel to doc root
Point aFrmPixPos( GetMap()->CoreToPixel( aFrmLogBounds.SVRect() ).TopLeft() );
aScreenRect.Move( -aFrmPixPos.X(), -aFrmPixPos.Y() );
@@ -1701,7 +1739,7 @@ awt::Rectangle SwAccessibleParagraph::getCharacterBounds(
}
sal_Int32 SwAccessibleParagraph::getCharacterCount()
- throw (RuntimeException)
+ throw (uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -1711,7 +1749,7 @@ sal_Int32 SwAccessibleParagraph::getCharacterCount()
}
sal_Int32 SwAccessibleParagraph::getIndexAtPoint( const awt::Point& rPoint )
- throw (RuntimeException)
+ throw (uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -1727,7 +1765,7 @@ sal_Int32 SwAccessibleParagraph::getIndexAtPoint( const awt::Point& rPoint )
Window *pWin = GetWindow();
CHECK_FOR_WINDOW( XAccessibleComponent, pWin );
Point aPoint( rPoint.X, rPoint.Y );
- SwRect aLogBounds( GetBounds( GetFrm() ) ); // twip rel to doc root
+ SwRect aLogBounds( GetBounds( *(GetMap()), GetFrm() ) ); // twip rel to doc root
Point aPixPos( GetMap()->CoreToPixel( aLogBounds.SVRect() ).TopLeft() );
aPoint.X() += aPixPos.X();
aPoint.Y() += aPixPos.Y();
@@ -1787,8 +1825,8 @@ sal_Int32 SwAccessibleParagraph::getIndexAtPoint( const awt::Point& rPoint )
: -1L;
}
-OUString SwAccessibleParagraph::getSelectedText()
- throw (RuntimeException)
+::rtl::OUString SwAccessibleParagraph::getSelectedText()
+ throw (uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -1796,11 +1834,13 @@ OUString SwAccessibleParagraph::getSelectedText()
sal_Int32 nStart, nEnd;
sal_Bool bSelected = GetSelection( nStart, nEnd );
- return bSelected ? GetString().copy( nStart, nEnd - nStart ) : OUString();
+ return bSelected
+ ? GetString().copy( nStart, nEnd - nStart )
+ : ::rtl::OUString();
}
sal_Int32 SwAccessibleParagraph::getSelectionStart()
- throw (RuntimeException)
+ throw (uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -1812,7 +1852,7 @@ sal_Int32 SwAccessibleParagraph::getSelectionStart()
}
sal_Int32 SwAccessibleParagraph::getSelectionEnd()
- throw (RuntimeException)
+ throw (uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -1824,7 +1864,7 @@ sal_Int32 SwAccessibleParagraph::getSelectionEnd()
}
sal_Bool SwAccessibleParagraph::setSelection( sal_Int32 nStartIndex, sal_Int32 nEndIndex )
- throw (IndexOutOfBoundsException, uno::RuntimeException)
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -1834,7 +1874,7 @@ sal_Bool SwAccessibleParagraph::setSelection( sal_Int32 nStartIndex, sal_Int32 n
sal_Int32 nLength = GetString().getLength();
if ( ! IsValidRange( nStartIndex, nEndIndex, nLength ) )
{
- throw IndexOutOfBoundsException();
+ throw lang::IndexOutOfBoundsException();
}
sal_Bool bRet = sal_False;
@@ -1859,8 +1899,8 @@ sal_Bool SwAccessibleParagraph::setSelection( sal_Int32 nStartIndex, sal_Int32 n
return bRet;
}
-OUString SwAccessibleParagraph::getText()
- throw (RuntimeException)
+::rtl::OUString SwAccessibleParagraph::getText()
+ throw (uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -1869,15 +1909,15 @@ OUString SwAccessibleParagraph::getText()
return GetString();
}
-OUString SwAccessibleParagraph::getTextRange(
+::rtl::OUString SwAccessibleParagraph::getTextRange(
sal_Int32 nStartIndex, sal_Int32 nEndIndex )
- throw (IndexOutOfBoundsException, uno::RuntimeException)
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
CHECK_FOR_DEFUNC_THIS( XAccessibleText, *this );
- OUString sText( GetString() );
+ ::rtl::OUString sText( GetString() );
if ( IsValidRange( nStartIndex, nEndIndex, sText.getLength() ) )
{
@@ -1885,7 +1925,7 @@ OUString SwAccessibleParagraph::getTextRange(
return sText.copy(nStartIndex, nEndIndex-nStartIndex );
}
else
- throw IndexOutOfBoundsException();
+ throw lang::IndexOutOfBoundsException();
}
/*accessibility::*/TextSegment SwAccessibleParagraph::getTextAtIndex( sal_Int32 nIndex, sal_Int16 nTextType ) throw (lang::IndexOutOfBoundsException, lang::IllegalArgumentException, uno::RuntimeException)
@@ -1898,7 +1938,7 @@ OUString SwAccessibleParagraph::getTextRange(
aResult.SegmentStart = -1;
aResult.SegmentEnd = -1;
- const OUString rText = GetString();
+ const ::rtl::OUString rText = GetString();
// implement the silly specification that first position after
// text must return an empty string, rather than throwing an
// IndexOutOfBoundsException, except for LINE, where the last
@@ -1907,7 +1947,7 @@ OUString SwAccessibleParagraph::getTextRange(
return aResult;
// with error checking
- Boundary aBound;
+ i18n::Boundary aBound;
sal_Bool bWord = GetTextBoundary( aBound, rText, nIndex, nTextType );
DBG_ASSERT( aBound.startPos >= 0, "illegal boundary" );
@@ -1930,14 +1970,14 @@ OUString SwAccessibleParagraph::getTextRange(
CHECK_FOR_DEFUNC_THIS( XAccessibleText, *this );
- const OUString rText = GetString();
+ const ::rtl::OUString rText = GetString();
/*accessibility::*/TextSegment aResult;
aResult.SegmentStart = -1;
aResult.SegmentEnd = -1;
// get starting pos
- Boundary aBound;
+ i18n::Boundary aBound;
if (nIndex == rText.getLength())
aBound.startPos = aBound.endPos = nIndex;
else
@@ -1977,7 +2017,7 @@ OUString SwAccessibleParagraph::getTextRange(
/*accessibility::*/TextSegment aResult;
aResult.SegmentStart = -1;
aResult.SegmentEnd = -1;
- const OUString rText = GetString();
+ const ::rtl::OUString rText = GetString();
// implement the silly specification that first position after
// text must return an empty string, rather than throwing an
@@ -1987,7 +2027,7 @@ OUString SwAccessibleParagraph::getTextRange(
// get first word, then skip to next word
- Boundary aBound;
+ i18n::Boundary aBound;
GetTextBoundary( aBound, rText, nIndex, nTextType );
sal_Bool bWord = sal_False;
while( !bWord )
@@ -2009,7 +2049,7 @@ OUString SwAccessibleParagraph::getTextRange(
}
sal_Bool SwAccessibleParagraph::copyText( sal_Int32 nStartIndex, sal_Int32 nEndIndex )
- throw (IndexOutOfBoundsException, uno::RuntimeException)
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
CHECK_FOR_DEFUNC_THIS( XAccessibleText, *this );
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -2026,7 +2066,7 @@ sal_Bool SwAccessibleParagraph::copyText( sal_Int32 nStartIndex, sal_Int32 nEndI
//
sal_Bool SwAccessibleParagraph::cutText( sal_Int32 nStartIndex, sal_Int32 nEndIndex )
- throw (IndexOutOfBoundsException, uno::RuntimeException)
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
CHECK_FOR_DEFUNC( XAccessibleEditableText );
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -2041,7 +2081,7 @@ sal_Bool SwAccessibleParagraph::cutText( sal_Int32 nStartIndex, sal_Int32 nEndIn
}
sal_Bool SwAccessibleParagraph::pasteText( sal_Int32 nIndex )
- throw (IndexOutOfBoundsException, uno::RuntimeException)
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
CHECK_FOR_DEFUNC( XAccessibleEditableText );
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -2056,27 +2096,27 @@ sal_Bool SwAccessibleParagraph::pasteText( sal_Int32 nIndex )
}
sal_Bool SwAccessibleParagraph::deleteText( sal_Int32 nStartIndex, sal_Int32 nEndIndex )
- throw (IndexOutOfBoundsException, uno::RuntimeException)
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
- return replaceText( nStartIndex, nEndIndex, OUString() );
+ return replaceText( nStartIndex, nEndIndex, ::rtl::OUString() );
}
-sal_Bool SwAccessibleParagraph::insertText( const OUString& sText, sal_Int32 nIndex )
- throw (IndexOutOfBoundsException, uno::RuntimeException)
+sal_Bool SwAccessibleParagraph::insertText( const ::rtl::OUString& sText, sal_Int32 nIndex )
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
return replaceText( nIndex, nIndex, sText );
}
sal_Bool SwAccessibleParagraph::replaceText(
sal_Int32 nStartIndex, sal_Int32 nEndIndex,
- const OUString& sReplacement )
- throw (IndexOutOfBoundsException, uno::RuntimeException)
+ const ::rtl::OUString& sReplacement )
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
CHECK_FOR_DEFUNC( XAccessibleEditableText );
- const OUString& rText = GetString();
+ const ::rtl::OUString& rText = GetString();
if( IsValidRange( nStartIndex, nEndIndex, rText.getLength() ) )
{
@@ -2114,7 +2154,7 @@ sal_Bool SwAccessibleParagraph::replaceText(
return bSuccess;
}
else
- throw IndexOutOfBoundsException();
+ throw lang::IndexOutOfBoundsException();
}
struct IndexCompare
@@ -2131,16 +2171,16 @@ struct IndexCompare
sal_Bool SwAccessibleParagraph::setAttributes(
sal_Int32 nStartIndex,
sal_Int32 nEndIndex,
- const Sequence<PropertyValue>& rAttributeSet )
- throw (IndexOutOfBoundsException, uno::RuntimeException)
+ const uno::Sequence<PropertyValue>& rAttributeSet )
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
CHECK_FOR_DEFUNC( XAccessibleEditableText );
- const OUString& rText = GetString();
+ const ::rtl::OUString& rText = GetString();
if( ! IsValidRange( nStartIndex, nEndIndex, rText.getLength() ) )
- throw IndexOutOfBoundsException();
+ throw lang::IndexOutOfBoundsException();
if( !IsEditableState() )
return sal_False;
@@ -2161,10 +2201,10 @@ sal_Bool SwAccessibleParagraph::setAttributes(
sort( &pIndices[0], &pIndices[nLength], IndexCompare(pPairs) );
// create sorted sequences accoring to index array
- Sequence<OUString> aNames( nLength );
- OUString* pNames = aNames.getArray();
- Sequence<Any> aValues( nLength );
- Any* pValues = aValues.getArray();
+ uno::Sequence< ::rtl::OUString > aNames( nLength );
+ ::rtl::OUString* pNames = aNames.getArray();
+ uno::Sequence< uno::Any > aValues( nLength );
+ uno::Any* pValues = aValues.getArray();
for( i = 0; i < nLength; i++ )
{
const PropertyValue& rVal = pPairs[pIndices[i]];
@@ -2188,8 +2228,8 @@ sal_Bool SwAccessibleParagraph::setAttributes(
return bRet;
}
-sal_Bool SwAccessibleParagraph::setText( const OUString& sText )
- throw (RuntimeException)
+sal_Bool SwAccessibleParagraph::setText( const ::rtl::OUString& sText )
+ throw (uno::RuntimeException)
{
return replaceText(0, GetString().getLength(), sText);
}
@@ -2198,7 +2238,7 @@ sal_Bool SwAccessibleParagraph::setText( const OUString& sText )
void SwAccessibleParagraph::selectAccessibleChild(
sal_Int32 nChildIndex )
- throw ( IndexOutOfBoundsException,
+ throw ( lang::IndexOutOfBoundsException,
uno::RuntimeException )
{
CHECK_FOR_DEFUNC( XAccessibleSelection );
@@ -2208,7 +2248,7 @@ void SwAccessibleParagraph::selectAccessibleChild(
sal_Bool SwAccessibleParagraph::isAccessibleChildSelected(
sal_Int32 nChildIndex )
- throw ( IndexOutOfBoundsException,
+ throw ( lang::IndexOutOfBoundsException,
uno::RuntimeException )
{
CHECK_FOR_DEFUNC( XAccessibleSelection );
@@ -2242,7 +2282,7 @@ sal_Int32 SwAccessibleParagraph::getSelectedAccessibleChildCount( )
uno::Reference<XAccessible> SwAccessibleParagraph::getSelectedAccessibleChild(
sal_Int32 nSelectedChildIndex )
- throw ( IndexOutOfBoundsException,
+ throw ( lang::IndexOutOfBoundsException,
uno::RuntimeException)
{
CHECK_FOR_DEFUNC( XAccessibleSelection );
@@ -2253,7 +2293,7 @@ uno::Reference<XAccessible> SwAccessibleParagraph::getSelectedAccessibleChild(
// --> OD 2004-11-16 #111714# - index has to be treated as global child index.
void SwAccessibleParagraph::deselectAccessibleChild(
sal_Int32 nChildIndex )
- throw ( IndexOutOfBoundsException,
+ throw ( lang::IndexOutOfBoundsException,
uno::RuntimeException )
{
CHECK_FOR_DEFUNC( XAccessibleSelection );
@@ -2315,7 +2355,7 @@ const SwTxtAttr *SwHyperlinkIter_Impl::next()
};
sal_Int32 SAL_CALL SwAccessibleParagraph::getHyperLinkCount()
- throw (RuntimeException)
+ throw (uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -2337,7 +2377,7 @@ sal_Int32 SAL_CALL SwAccessibleParagraph::getHyperLinkCount()
uno::Reference< XAccessibleHyperlink > SAL_CALL
SwAccessibleParagraph::getHyperLink( sal_Int32 nLinkIndex )
- throw (IndexOutOfBoundsException, uno::RuntimeException)
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
CHECK_FOR_DEFUNC( XAccessibleHypertext );
@@ -2386,13 +2426,13 @@ uno::Reference< XAccessibleHyperlink > SAL_CALL
}
if( !xRet.is() )
- throw IndexOutOfBoundsException();
+ throw lang::IndexOutOfBoundsException();
return xRet;
}
sal_Int32 SAL_CALL SwAccessibleParagraph::getHyperLinkIndex( sal_Int32 nCharIndex )
- throw (IndexOutOfBoundsException, uno::RuntimeException)
+ throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
vos::OGuard aGuard(Application::GetSolarMutex());
CHECK_FOR_DEFUNC( XAccessibleHypertext );
@@ -2401,7 +2441,7 @@ sal_Int32 SAL_CALL SwAccessibleParagraph::getHyperLinkIndex( sal_Int32 nCharInde
sal_Int32 nLength = GetString().getLength();
if ( ! IsValidPosition( nCharIndex, nLength ) )
{
- throw IndexOutOfBoundsException();
+ throw lang::IndexOutOfBoundsException();
}
sal_Int32 nRet = -1;
@@ -2430,13 +2470,30 @@ sal_Int32 SAL_CALL SwAccessibleParagraph::getHyperLinkIndex( sal_Int32 nCharInde
}
// --> OD 2008-05-26 #i71360#
+// --> OD 2010-02-22 #i108125# - adjustments for change tracking text markup
sal_Int32 SAL_CALL SwAccessibleParagraph::getTextMarkupCount( sal_Int32 nTextMarkupType )
throw (lang::IllegalArgumentException,
uno::RuntimeException)
{
- SwTextMarkupHelper aTextMarkupHelper( *GetTxtNode(), GetPortionData() );
+ std::auto_ptr<SwTextMarkupHelper> pTextMarkupHelper;
+ switch ( nTextMarkupType )
+ {
+ case text::TextMarkupType::TRACK_CHANGE_INSERTION:
+ case text::TextMarkupType::TRACK_CHANGE_DELETION:
+ case text::TextMarkupType::TRACK_CHANGE_FORMATCHANGE:
+ {
+ pTextMarkupHelper.reset( new SwTextMarkupHelper(
+ GetPortionData(),
+ *(mpParaChangeTrackInfo->getChangeTrackingTextMarkupList( nTextMarkupType ) )) );
+ }
+ break;
+ default:
+ {
+ pTextMarkupHelper.reset( new SwTextMarkupHelper( GetPortionData(), *GetTxtNode() ) );
+ }
+ }
- return aTextMarkupHelper.getTextMarkupCount( nTextMarkupType );
+ return pTextMarkupHelper->getTextMarkupCount( nTextMarkupType );
}
/*accessibility::*/TextSegment SAL_CALL
@@ -2446,9 +2503,25 @@ sal_Int32 SAL_CALL SwAccessibleParagraph::getTextMarkupCount( sal_Int32 nTextMar
lang::IllegalArgumentException,
uno::RuntimeException)
{
- SwTextMarkupHelper aTextMarkupHelper( *GetTxtNode(), GetPortionData() );
+ std::auto_ptr<SwTextMarkupHelper> pTextMarkupHelper;
+ switch ( nTextMarkupType )
+ {
+ case text::TextMarkupType::TRACK_CHANGE_INSERTION:
+ case text::TextMarkupType::TRACK_CHANGE_DELETION:
+ case text::TextMarkupType::TRACK_CHANGE_FORMATCHANGE:
+ {
+ pTextMarkupHelper.reset( new SwTextMarkupHelper(
+ GetPortionData(),
+ *(mpParaChangeTrackInfo->getChangeTrackingTextMarkupList( nTextMarkupType ) )) );
+ }
+ break;
+ default:
+ {
+ pTextMarkupHelper.reset( new SwTextMarkupHelper( GetPortionData(), *GetTxtNode() ) );
+ }
+ }
- return aTextMarkupHelper.getTextMarkup( nTextMarkupIndex, nTextMarkupType );
+ return pTextMarkupHelper->getTextMarkup( nTextMarkupIndex, nTextMarkupType );
}
uno::Sequence< /*accessibility::*/TextSegment > SAL_CALL
@@ -2465,9 +2538,25 @@ uno::Sequence< /*accessibility::*/TextSegment > SAL_CALL
throw lang::IndexOutOfBoundsException();
}
- SwTextMarkupHelper aTextMarkupHelper( *GetTxtNode(), GetPortionData() );
+ std::auto_ptr<SwTextMarkupHelper> pTextMarkupHelper;
+ switch ( nTextMarkupType )
+ {
+ case text::TextMarkupType::TRACK_CHANGE_INSERTION:
+ case text::TextMarkupType::TRACK_CHANGE_DELETION:
+ case text::TextMarkupType::TRACK_CHANGE_FORMATCHANGE:
+ {
+ pTextMarkupHelper.reset( new SwTextMarkupHelper(
+ GetPortionData(),
+ *(mpParaChangeTrackInfo->getChangeTrackingTextMarkupList( nTextMarkupType ) )) );
+ }
+ break;
+ default:
+ {
+ pTextMarkupHelper.reset( new SwTextMarkupHelper( GetPortionData(), *GetTxtNode() ) );
+ }
+ }
- return aTextMarkupHelper.getTextMarkupAtIndex( nCharIndex, nTextMarkupType );
+ return pTextMarkupHelper->getTextMarkupAtIndex( nCharIndex, nTextMarkupType );
}
// <--
@@ -2499,7 +2588,7 @@ sal_Int32 SAL_CALL SwAccessibleParagraph::getLineNumberAtIndex( sal_Int32 nIndex
throw lang::IndexOutOfBoundsException();
}
- Boundary aLineBound;
+ i18n::Boundary aLineBound;
GetPortionData().GetBoundaryOfLine( nLineNo, aLineBound );
/*accessibility::*/TextSegment aTextAtLine;
@@ -2541,7 +2630,7 @@ sal_Int32 SAL_CALL SwAccessibleParagraph::getNumberOfLineWithCaret()
// special handling for cursor positioned at end of text line via End key
if ( nCaretPos != 0 )
{
- Boundary aLineBound;
+ i18n::Boundary aLineBound;
GetPortionData().GetBoundaryOfLine( nLineNo, aLineBound );
if ( nCaretPos == aLineBound.startPos )
{
@@ -2557,7 +2646,7 @@ sal_Int32 SAL_CALL SwAccessibleParagraph::getNumberOfLineWithCaret()
Rectangle aScreenRect( GetMap()->CoreToPixel( aCursorCoreRect.SVRect() ));
- SwRect aFrmLogBounds( GetBounds() ); // twip rel to doc root
+ SwRect aFrmLogBounds( GetBounds( *(GetMap()) ) ); // twip rel to doc root
Point aFrmPixPos( GetMap()->CoreToPixel( aFrmLogBounds.SVRect() ).TopLeft() );
aScreenRect.Move( -aFrmPixPos.X(), -aFrmPixPos.Y() );
@@ -2579,4 +2668,11 @@ sal_Int32 SAL_CALL SwAccessibleParagraph::getNumberOfLineWithCaret()
return nLineNo;
}
+// --> OD 2010-02-19 #i108125#
+void SwAccessibleParagraph::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew )
+{
+ mpParaChangeTrackInfo->reset();
+
+ SwClient::Modify( pOld, pNew );
+}
// <--
diff --git a/sw/source/core/access/accpara.hxx b/sw/source/core/access/accpara.hxx
index 1a745d8af01e..7e07fa132d05 100644
--- a/sw/source/core/access/accpara.hxx
+++ b/sw/source/core/access/accpara.hxx
@@ -26,24 +26,19 @@
************************************************************************/
#ifndef _ACCPARA_HXX
#define _ACCPARA_HXX
-#ifndef _ACCCONTEXT_HXX
-#include "acccontext.hxx"
-#endif
+
+#include <acccontext.hxx>
#include <com/sun/star/accessibility/XAccessibleEditableText.hpp>
#include <com/sun/star/accessibility/XAccessibleSelection.hpp>
#include <com/sun/star/accessibility/XAccessibleHypertext.hpp>
-// --> OD 2008-05-19 #i71360#
#include <com/sun/star/accessibility/XAccessibleTextMarkup.hpp>
-// <--
-// --> OD 2008-05-29 #i89175#
#include <com/sun/star/accessibility/XAccessibleMultiLineText.hpp>
-// <--
-
-// --> OD 2006-07-11 #i63870#
#include <com/sun/star/accessibility/XAccessibleTextAttributes.hpp>
#include <hash_map>
+#include <accselectionhelper.hxx>
+// --> OD 2010-02-19 #i108125#
+#include <calbck.hxx>
// <--
-#include "accselectionhelper.hxx"
class SwTxtFrm;
class SwTxtNode;
@@ -51,6 +46,10 @@ class SwPaM;
class SwAccessiblePortionData;
class SwAccessibleHyperTextData;
class SwXTextPortion;
+// --> OD 2010-02-19 #i108125#
+class SwParaChangeTrackingInfo;
+// <--
+
namespace rtl { class OUString; }
namespace com { namespace sun { namespace star {
namespace i18n { struct Boundary; }
@@ -63,19 +62,16 @@ typedef ::std::hash_map< ::rtl::OUString,
::std::equal_to< ::rtl::OUString > > tAccParaPropValMap;
class SwAccessibleParagraph :
+ // --> OD 2010-02-19 #i108125#
+ public SwClient,
+ // <--
public SwAccessibleContext,
public ::com::sun::star::accessibility::XAccessibleEditableText,
public com::sun::star::accessibility::XAccessibleSelection,
public com::sun::star::accessibility::XAccessibleHypertext,
- // --> OD 2008-05-19 #i71360#
public com::sun::star::accessibility::XAccessibleTextMarkup,
- // <--
- // --> OD 2008-05-29 #i89175#
public com::sun::star::accessibility::XAccessibleMultiLineText,
- // <--
- // --> OD 2006-07-11 #i63870#
public ::com::sun::star::accessibility::XAccessibleTextAttributes
- // <--
{
friend class SwAccessibleHyperlink;
@@ -98,6 +94,9 @@ class SwAccessibleParagraph :
// implementation for XAccessibleSelection
SwAccessibleSelectionHelper aSelectionHelper;
+ // --> OD 2010-02-19 #i108125#
+ SwParaChangeTrackingInfo* mpParaChangeTrackInfo;
+ // <--
/// get the SwTxtNode (requires frame; check before)
const SwTxtNode* GetTxtNode() const;
@@ -237,13 +236,17 @@ protected:
public:
- SwAccessibleParagraph( SwAccessibleMap* pInitMap,
- const SwTxtFrm *pTxtFrm );
+ SwAccessibleParagraph( SwAccessibleMap& rInitMap,
+ const SwTxtFrm& rTxtFrm );
inline operator ::com::sun::star::accessibility::XAccessibleText *();
virtual sal_Bool HasCursor(); // required by map to remember that object
+ // --> OD 2010-02-19 #i108125#
+ virtual void Modify( SfxPoolItem* pOld, SfxPoolItem* pNew);
+ // <--
+
//===== XAccessibleContext ==============================================
/// Return this object's description.
diff --git a/sw/source/core/access/accportions.cxx b/sw/source/core/access/accportions.cxx
index 705e0026b767..093d22136d81 100644
--- a/sw/source/core/access/accportions.cxx
+++ b/sw/source/core/access/accportions.cxx
@@ -173,6 +173,17 @@ void SwAccessiblePortionData::Special(
sDisplay = aTmpBuffer.makeStringAndClear();
break;
}
+ // --> OD 2010-06-04 #i111768# - apply patch from kstribley:
+ // Include the control characters.
+ case POR_CONTROLCHAR:
+ {
+ OUStringBuffer aTmpBuffer( rText.Len() + 1 );
+ aTmpBuffer.append( rText );
+ aTmpBuffer.append( pTxtNode->GetTxt().GetChar(nModelPosition) );
+ sDisplay = aTmpBuffer.makeStringAndClear();
+ break;
+ }
+ // <--
default:
sDisplay = rText;
break;
@@ -259,12 +270,6 @@ sal_Bool SwAccessiblePortionData::IsReadOnlyPortion( size_t nPortionNo ) const
return IsPortionAttrSet(nPortionNo, PORATTR_READONLY);
}
-sal_Bool SwAccessiblePortionData::IsGrayPortion( size_t nPortionNo ) const
-{
- return IsPortionAttrSet(nPortionNo, PORATTR_GRAY);
-}
-
-
sal_Bool SwAccessiblePortionData::IsGrayPortionType( USHORT nType ) const
{
// gray portions?
diff --git a/sw/source/core/access/accportions.hxx b/sw/source/core/access/accportions.hxx
index 64bd308fbbd6..807070a6573d 100644
--- a/sw/source/core/access/accportions.hxx
+++ b/sw/source/core/access/accportions.hxx
@@ -90,7 +90,6 @@ class SwAccessiblePortionData : public SwPortionHandler
sal_Bool IsPortionAttrSet( size_t nPortionNo, sal_uInt8 nAttr ) const;
sal_Bool IsSpecialPortion( size_t nPortionNo ) const;
sal_Bool IsReadOnlyPortion( size_t nPortionNo ) const;
- sal_Bool IsGrayPortion( size_t nPortionNo ) const;
sal_Bool IsGrayPortionType( USHORT nType ) const;
// helper method for GetEditableRange(...):
diff --git a/sw/source/core/access/accselectionhelper.cxx b/sw/source/core/access/accselectionhelper.cxx
index 31f05063263e..8e4593377c63 100644
--- a/sw/source/core/access/accselectionhelper.cxx
+++ b/sw/source/core/access/accselectionhelper.cxx
@@ -32,15 +32,14 @@
#include <com/sun/star/accessibility/XAccessibleSelection.hpp>
#include <accselectionhelper.hxx>
-#ifndef _ACCCONTEXT_HXX
#include <acccontext.hxx>
-#endif
#include <accmap.hxx>
#include <svx/AccessibleShape.hxx>
#include <viewsh.hxx>
-#include "fesh.hxx"
+#include <fesh.hxx>
#include <vcl/svapp.hxx> // for SolarMutex
#include <tools/debug.hxx>
+#include <flyfrm.hxx>
using namespace ::com::sun::star;
@@ -50,7 +49,7 @@ using ::com::sun::star::accessibility::XAccessible;
using ::com::sun::star::accessibility::XAccessibleContext;
using ::com::sun::star::accessibility::XAccessibleSelection;
-
+using namespace ::sw::access;
SwAccessibleSelectionHelper::SwAccessibleSelectionHelper(
SwAccessibleContext& rCtxt ) :
@@ -100,7 +99,8 @@ void SwAccessibleSelectionHelper::selectAccessibleChild(
vos::OGuard aGuard(Application::GetSolarMutex());
// Get the respective child as SwFrm (also do index checking), ...
- const SwFrmOrObj aChild = rContext.GetChild( nChildIndex );
+ const SwAccessibleChild aChild = rContext.GetChild( *(rContext.GetMap()),
+ nChildIndex );
if( !aChild.IsValid() )
throwIndexOutOfBoundsException();
@@ -110,7 +110,7 @@ void SwAccessibleSelectionHelper::selectAccessibleChild(
SwFEShell* pFEShell = GetFEShell();
if( pFEShell != NULL )
{
- const SdrObject *pObj = aChild.GetSdrObject();
+ const SdrObject *pObj = aChild.GetDrawObject();
if( pObj )
{
bRet = rContext.Select( const_cast< SdrObject *>( pObj ), 0==aChild.GetSwFrm());
@@ -129,7 +129,8 @@ sal_Bool SwAccessibleSelectionHelper::isAccessibleChildSelected(
vos::OGuard aGuard(Application::GetSolarMutex());
// Get the respective child as SwFrm (also do index checking), ...
- const SwFrmOrObj aChild = rContext.GetChild( nChildIndex );
+ const SwAccessibleChild aChild = rContext.GetChild( *(rContext.GetMap()),
+ nChildIndex );
if( !aChild.IsValid() )
throwIndexOutOfBoundsException();
@@ -138,13 +139,13 @@ sal_Bool SwAccessibleSelectionHelper::isAccessibleChildSelected(
SwFEShell* pFEShell = GetFEShell();
if( pFEShell )
{
- if( aChild.GetSwFrm() != 0 )
+ if ( aChild.GetSwFrm() != 0 )
{
bRet = (pFEShell->GetCurrFlyFrm() == aChild.GetSwFrm());
}
- else
+ else if ( aChild.GetDrawObject() )
{
- bRet = pFEShell->IsObjSelected( *aChild.GetSdrObject() );
+ bRet = pFEShell->IsObjSelected( *aChild.GetDrawObject() );
}
}
@@ -168,15 +169,15 @@ void SwAccessibleSelectionHelper::selectAllAccessibleChildren( )
SwFEShell* pFEShell = GetFEShell();
if( pFEShell )
{
- ::std::list< SwFrmOrObj > aChildren;
- rContext.GetChildren( aChildren );
+ ::std::list< SwAccessibleChild > aChildren;
+ rContext.GetChildren( *(rContext.GetMap()), aChildren );
- ::std::list< SwFrmOrObj >::const_iterator aIter = aChildren.begin();
- ::std::list< SwFrmOrObj >::const_iterator aEndIter = aChildren.end();
+ ::std::list< SwAccessibleChild >::const_iterator aIter = aChildren.begin();
+ ::std::list< SwAccessibleChild >::const_iterator aEndIter = aChildren.end();
while( aIter != aEndIter )
{
- const SwFrmOrObj& rChild = *aIter;
- const SdrObject *pObj = rChild.GetSdrObject();
+ const SwAccessibleChild& rChild = *aIter;
+ const SdrObject* pObj = rChild.GetDrawObject();
const SwFrm* pFrm = rChild.GetSwFrm();
if( pObj && !(pFrm != 0 && pFEShell->IsObjSelected()) )
{
@@ -200,11 +201,11 @@ sal_Int32 SwAccessibleSelectionHelper::getSelectedAccessibleChildCount( )
SwFEShell* pFEShell = GetFEShell();
if( pFEShell != 0 )
{
- const SwFlyFrm *pFlyFrm = pFEShell->GetCurrFlyFrm();
+ const SwFlyFrm* pFlyFrm = pFEShell->GetCurrFlyFrm();
if( pFlyFrm )
{
- if( rContext.GetParent(pFlyFrm, rContext.IsInPagePreview()) ==
- rContext.GetFrm() )
+ if( rContext.GetParent( SwAccessibleChild(pFlyFrm), rContext.IsInPagePreview()) ==
+ rContext.GetFrm() )
{
nCount = 1;
}
@@ -214,20 +215,20 @@ sal_Int32 SwAccessibleSelectionHelper::getSelectedAccessibleChildCount( )
sal_uInt16 nSelObjs = pFEShell->IsObjSelected();
if( nSelObjs > 0 )
{
- ::std::list< SwFrmOrObj > aChildren;
- rContext.GetChildren( aChildren );
+ ::std::list< SwAccessibleChild > aChildren;
+ rContext.GetChildren( *(rContext.GetMap()), aChildren );
- ::std::list< SwFrmOrObj >::const_iterator aIter =
+ ::std::list< SwAccessibleChild >::const_iterator aIter =
aChildren.begin();
- ::std::list< SwFrmOrObj >::const_iterator aEndIter =
+ ::std::list< SwAccessibleChild >::const_iterator aEndIter =
aChildren.end();
while( aIter != aEndIter && nCount < nSelObjs )
{
- const SwFrmOrObj& rChild = *aIter;
- if( rChild.GetSdrObject() && !rChild.GetSwFrm() &&
+ const SwAccessibleChild& rChild = *aIter;
+ if( rChild.GetDrawObject() && !rChild.GetSwFrm() &&
rContext.GetParent(rChild, rContext.IsInPagePreview())
== rContext.GetFrm() &&
- pFEShell->IsObjSelected( *rChild.GetSdrObject() ) )
+ pFEShell->IsObjSelected( *rChild.GetDrawObject() ) )
{
nCount++;
}
@@ -254,12 +255,12 @@ Reference<XAccessible> SwAccessibleSelectionHelper::getSelectedAccessibleChild(
if( 0 == pFEShell )
throwIndexOutOfBoundsException();
- SwFrmOrObj aChild;
+ SwAccessibleChild aChild;
const SwFlyFrm *pFlyFrm = pFEShell->GetCurrFlyFrm();
if( pFlyFrm )
{
if( 0 == nSelectedChildIndex &&
- rContext.GetParent(pFlyFrm, rContext.IsInPagePreview()) ==
+ rContext.GetParent( SwAccessibleChild(pFlyFrm), rContext.IsInPagePreview()) ==
rContext.GetFrm() )
{
aChild = pFlyFrm;
@@ -271,18 +272,18 @@ Reference<XAccessible> SwAccessibleSelectionHelper::getSelectedAccessibleChild(
if( 0 == nSelObjs || nSelectedChildIndex >= nSelObjs )
throwIndexOutOfBoundsException();
- ::std::list< SwFrmOrObj > aChildren;
- rContext.GetChildren( aChildren );
+ ::std::list< SwAccessibleChild > aChildren;
+ rContext.GetChildren( *(rContext.GetMap()), aChildren );
- ::std::list< SwFrmOrObj >::const_iterator aIter = aChildren.begin();
- ::std::list< SwFrmOrObj >::const_iterator aEndIter = aChildren.end();
+ ::std::list< SwAccessibleChild >::const_iterator aIter = aChildren.begin();
+ ::std::list< SwAccessibleChild >::const_iterator aEndIter = aChildren.end();
while( aIter != aEndIter && !aChild.IsValid() )
{
- const SwFrmOrObj& rChild = *aIter;
- if( rChild.GetSdrObject() && !rChild.GetSwFrm() &&
+ const SwAccessibleChild& rChild = *aIter;
+ if( rChild.GetDrawObject() && !rChild.GetSwFrm() &&
rContext.GetParent(rChild, rContext.IsInPagePreview()) ==
rContext.GetFrm() &&
- pFEShell->IsObjSelected( *rChild.GetSdrObject() ) )
+ pFEShell->IsObjSelected( *rChild.GetDrawObject() ) )
{
if( 0 == nSelectedChildIndex )
aChild = rChild;
@@ -309,10 +310,10 @@ Reference<XAccessible> SwAccessibleSelectionHelper::getSelectedAccessibleChild(
xChild = xChildImpl.getBodyPtr();
}
}
- else
+ else if ( aChild.GetDrawObject() )
{
::vos::ORef < ::accessibility::AccessibleShape > xChildImpl(
- rContext.GetMap()->GetContextImpl( aChild.GetSdrObject(),
+ rContext.GetMap()->GetContextImpl( aChild.GetDrawObject(),
&rContext, sal_True ) );
if( xChildImpl.isValid() )
xChild = xChildImpl.getBodyPtr();
@@ -328,6 +329,6 @@ void SwAccessibleSelectionHelper::deselectAccessibleChild(
{
// return sal_False // we can't deselect
if( nChildIndex < 0 ||
- nChildIndex >= rContext.GetChildCount() )
+ nChildIndex >= rContext.GetChildCount( *(rContext.GetMap()) ) )
throwIndexOutOfBoundsException();
}
diff --git a/sw/source/core/access/acctable.cxx b/sw/source/core/access/acctable.cxx
index 667319058fa1..43befb2a3f86 100644
--- a/sw/source/core/access/acctable.cxx
+++ b/sw/source/core/access/acctable.cxx
@@ -42,26 +42,25 @@
#include <vcl/svapp.hxx>
#include <frmfmt.hxx>
#include <tabfrm.hxx>
-// --> OD 2007-06-27 #i77106#
#include <rowfrm.hxx>
-// <--
#include <cellfrm.hxx>
#include <swtable.hxx>
-#include "crsrsh.hxx"
-#include "viscrs.hxx"
+#include <crsrsh.hxx>
+#include <viscrs.hxx>
#include <hints.hxx>
-#include "fesh.hxx"
+#include <fesh.hxx>
#include <accfrmobjslist.hxx>
-#include "accmap.hxx"
-#ifndef _ACCESS_HRC
-#include "access.hrc"
-#endif
+#include <accmap.hxx>
+#include <access.hrc>
#include <acctable.hxx>
+#include <com/sun/star/accessibility/XAccessibleText.hpp>
+
using namespace ::com::sun::star;
using namespace ::com::sun::star::accessibility;
using ::rtl::OUString;
using ::rtl::OUStringBuffer;
+using namespace ::sw::access;
const sal_Char sServiceName[] = "com.sun.star.table.AccessibleTableView";
const sal_Char sImplementationName[] = "com.sun.star.comp.Writer.SwAccessibleTableView";
@@ -83,15 +82,14 @@ public:
class SwAccessibleTableData_Impl
{
+ SwAccessibleMap& mrAccMap;
Int32Set_Impl maRows;
Int32Set_Impl maColumns;
Int32PairList_Impl maExtents; // cell extends for event processing only
Point maTabFrmPos;
const SwTabFrm *mpTabFrm;
sal_Bool mbIsInPagePreview;
- // --> OD 2007-06-27 #i77106#
bool mbOnlyTableColumnHeader;
- // <--
void CollectData( const SwFrm *pFrm );
void CollectExtents( const SwFrm *pFrm );
@@ -114,7 +112,8 @@ class SwAccessibleTableData_Impl
public:
// --> OD 2007-06-27 #i77106#
// add third optional parameter <bOnlyTableColumnHeader>, default value <false>
- SwAccessibleTableData_Impl( const SwTabFrm *pTabFrm,
+ SwAccessibleTableData_Impl( SwAccessibleMap& rAccMap,
+ const SwTabFrm *pTabFrm,
sal_Bool bIsInPagePreview,
bool bOnlyTableColumnHeader = false );
// <--
@@ -154,12 +153,12 @@ public:
void SwAccessibleTableData_Impl::CollectData( const SwFrm *pFrm )
{
- const SwFrmOrObjSList aList( pFrm );
- SwFrmOrObjSList::const_iterator aIter( aList.begin() );
- SwFrmOrObjSList::const_iterator aEndIter( aList.end() );
+ const SwAccessibleChildSList aList( *pFrm, mrAccMap );
+ SwAccessibleChildSList::const_iterator aIter( aList.begin() );
+ SwAccessibleChildSList::const_iterator aEndIter( aList.end() );
while( aIter != aEndIter )
{
- const SwFrmOrObj& rLower = *aIter;
+ const SwAccessibleChild& rLower = *aIter;
const SwFrm *pLower = rLower.GetSwFrm();
if( pLower )
{
@@ -189,12 +188,12 @@ void SwAccessibleTableData_Impl::CollectData( const SwFrm *pFrm )
void SwAccessibleTableData_Impl::CollectExtents( const SwFrm *pFrm )
{
- const SwFrmOrObjSList aList( pFrm );
- SwFrmOrObjSList::const_iterator aIter( aList.begin() );
- SwFrmOrObjSList::const_iterator aEndIter( aList.end() );
+ const SwAccessibleChildSList aList( *pFrm, mrAccMap );
+ SwAccessibleChildSList::const_iterator aIter( aList.begin() );
+ SwAccessibleChildSList::const_iterator aEndIter( aList.end() );
while( aIter != aEndIter )
{
- const SwFrmOrObj& rLower = *aIter;
+ const SwAccessibleChild& rLower = *aIter;
const SwFrm *pLower = rLower.GetSwFrm();
if( pLower )
{
@@ -230,12 +229,12 @@ sal_Bool SwAccessibleTableData_Impl::FindCell(
{
sal_Bool bFound = sal_False;
- const SwFrmOrObjSList aList( pFrm );
- SwFrmOrObjSList::const_iterator aIter( aList.begin() );
- SwFrmOrObjSList::const_iterator aEndIter( aList.end() );
+ const SwAccessibleChildSList aList( *pFrm, mrAccMap );
+ SwAccessibleChildSList::const_iterator aIter( aList.begin() );
+ SwAccessibleChildSList::const_iterator aEndIter( aList.end() );
while( !bFound && aIter != aEndIter )
{
- const SwFrmOrObj& rLower = *aIter;
+ const SwAccessibleChild& rLower = *aIter;
const SwFrm *pLower = rLower.GetSwFrm();
ASSERT( pLower, "child should be a frame" );
if( pLower )
@@ -282,15 +281,15 @@ void SwAccessibleTableData_Impl::GetSelection(
SwAccTableSelHander_Impl& rSelHdl,
sal_Bool bColumns ) const
{
- const SwFrmOrObjSList aList( pFrm );
- SwFrmOrObjSList::const_iterator aIter( aList.begin() );
- SwFrmOrObjSList::const_iterator aEndIter( aList.end() );
+ const SwAccessibleChildSList aList( *pFrm, mrAccMap );
+ SwAccessibleChildSList::const_iterator aIter( aList.begin() );
+ SwAccessibleChildSList::const_iterator aEndIter( aList.end() );
while( aIter != aEndIter )
{
- const SwFrmOrObj& rLower = *aIter;
+ const SwAccessibleChild& rLower = *aIter;
const SwFrm *pLower = rLower.GetSwFrm();
ASSERT( pLower, "child should be a frame" );
- const SwRect& rBox = rLower.GetBox();
+ const SwRect& rBox = rLower.GetBox( mrAccMap );
if( pLower && rBox.IsOver( rArea ) )
{
if( rLower.IsAccessible( mbIsInPagePreview ) )
@@ -430,15 +429,15 @@ sal_Bool SwAccessibleTableData_Impl::CompareExtents(
return sal_True;
}
-SwAccessibleTableData_Impl::SwAccessibleTableData_Impl( const SwTabFrm *pTabFrm,
+SwAccessibleTableData_Impl::SwAccessibleTableData_Impl( SwAccessibleMap& rAccMap,
+ const SwTabFrm *pTabFrm,
sal_Bool bIsInPagePreview,
bool bOnlyTableColumnHeader )
- : maTabFrmPos( pTabFrm->Frm().Pos() ),
- mpTabFrm( pTabFrm ),
- mbIsInPagePreview( bIsInPagePreview ),
- // --> OD 2007-06-27 #i77106#
- mbOnlyTableColumnHeader( bOnlyTableColumnHeader )
- // <--
+ : mrAccMap( rAccMap )
+ , maTabFrmPos( pTabFrm->Frm().Pos() )
+ , mpTabFrm( pTabFrm )
+ , mbIsInPagePreview( bIsInPagePreview )
+ , mbOnlyTableColumnHeader( bOnlyTableColumnHeader )
{
CollectData( mpTabFrm );
CollectExtents( mpTabFrm );
@@ -641,7 +640,7 @@ const SwTableBox* SwAccessibleTable::GetTableBox( sal_Int32 nChildIndex ) const
const SwTableBox* pBox = NULL;
// get table box for 'our' table cell
- SwFrmOrObj aCell( GetChild( nChildIndex ) );
+ SwAccessibleChild aCell( GetChild( *(const_cast<SwAccessibleMap*>(GetMap())), nChildIndex ) );
if( aCell.GetSwFrm() )
{
const SwFrm* pChildFrm = aCell.GetSwFrm();
@@ -855,7 +854,7 @@ uno::Sequence< sal_Int8 > SAL_CALL SwAccessibleTable::getImplementationId()
SwAccessibleTableData_Impl* SwAccessibleTable::CreateNewTableData()
{
const SwTabFrm* pTabFrm = static_cast<const SwTabFrm*>( GetFrm() );
- return new SwAccessibleTableData_Impl( pTabFrm, IsInPagePreview() );
+ return new SwAccessibleTableData_Impl( *GetMap(), pTabFrm, IsInPagePreview() );
}
// <--
@@ -907,24 +906,72 @@ OUString SAL_CALL SwAccessibleTable::getAccessibleRowDescription(
sal_Int32 nRow )
throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
- // TODO: Is there any reasonable we can do here?
- OUString sTmpDesc;
+ // --> OD 2010-03-10 #i87532#
+ // determine table cell in <nRow>th row and in first column of row header table
+ // and return its text content.
+ OUString sRowDesc;
GetTableData().CheckRowAndCol(nRow, 0, this);
- return sTmpDesc;
+ uno::Reference< XAccessibleTable > xTableRowHeader = getAccessibleRowHeaders();
+ if ( xTableRowHeader.is() )
+ {
+ uno::Reference< XAccessible > xRowHeaderCell =
+ xTableRowHeader->getAccessibleCellAt( nRow, 0 );
+ ASSERT( xRowHeaderCell.is(),
+ "<SwAccessibleTable::getAccessibleRowDescription(..)> - missing row header cell -> serious issue." );
+ uno::Reference< XAccessibleContext > xRowHeaderCellContext =
+ xRowHeaderCell->getAccessibleContext();
+ const sal_Int32 nCellChildCount( xRowHeaderCellContext->getAccessibleChildCount() );
+ for ( sal_Int32 nChildIndex = 0; nChildIndex < nCellChildCount; ++nChildIndex )
+ {
+ uno::Reference< XAccessible > xChild = xRowHeaderCellContext->getAccessibleChild( nChildIndex );
+ uno::Reference< XAccessibleText > xChildText( xChild, uno::UNO_QUERY );
+ if ( xChildText.is() )
+ {
+ sRowDesc = sRowDesc + xChildText->getText();
+ }
+ }
+ }
+
+ return sRowDesc;
+ // <--
}
OUString SAL_CALL SwAccessibleTable::getAccessibleColumnDescription(
sal_Int32 nColumn )
throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
- // TODO: Is there any reasonable we can do here?
- OUString sTmpDesc;
+ // --> OD 2010-03-10 #i87532#
+ // determine table cell in first row and in <nColumn>th column of column header table
+ // and return its text content.
+ OUString sColumnDesc;
GetTableData().CheckRowAndCol(0, nColumn, this);
- return sTmpDesc;
+ uno::Reference< XAccessibleTable > xTableColumnHeader = getAccessibleColumnHeaders();
+ if ( xTableColumnHeader.is() )
+ {
+ uno::Reference< XAccessible > xColumnHeaderCell =
+ xTableColumnHeader->getAccessibleCellAt( 0, nColumn );
+ ASSERT( xColumnHeaderCell.is(),
+ "<SwAccessibleTable::getAccessibleColumnDescription(..)> - missing column header cell -> serious issue." );
+ uno::Reference< XAccessibleContext > xColumnHeaderCellContext =
+ xColumnHeaderCell->getAccessibleContext();
+ const sal_Int32 nCellChildCount( xColumnHeaderCellContext->getAccessibleChildCount() );
+ for ( sal_Int32 nChildIndex = 0; nChildIndex < nCellChildCount; ++nChildIndex )
+ {
+ uno::Reference< XAccessible > xChild = xColumnHeaderCellContext->getAccessibleChild( nChildIndex );
+ uno::Reference< XAccessibleText > xChildText( xChild, uno::UNO_QUERY );
+ if ( xChildText.is() )
+ {
+ sColumnDesc = sColumnDesc + xChildText->getText();
+ }
+ }
+ }
+
+ return sColumnDesc;
+ // <--
}
sal_Int32 SAL_CALL SwAccessibleTable::getAccessibleRowExtentAt(
@@ -1001,9 +1048,18 @@ uno::Reference< XAccessibleTable > SAL_CALL
SwAccessibleTable::getAccessibleColumnHeaders( )
throw (uno::RuntimeException)
{
- // --> OD 2007-06-29 #i77106#
- return new SwAccessibleTableColHeaders(
- GetMap(), static_cast< const SwTabFrm *>( GetFrm() ) );
+ // --> OD 2010-03-10 #i87532#
+ // assure that return accesible object is empty, if no column header exists.
+ SwAccessibleTableColHeaders* pTableColHeaders =
+ new SwAccessibleTableColHeaders( GetMap(), static_cast< const SwTabFrm *>( GetFrm() ) );
+ uno::Reference< XAccessibleTable > xTableColumnHeaders( pTableColHeaders );
+ if ( pTableColHeaders->getAccessibleChildCount() <= 0 )
+ {
+ return uno::Reference< XAccessibleTable >();
+ }
+
+ return xTableColumnHeaders;
+ // <--
}
uno::Sequence< sal_Int32 > SAL_CALL SwAccessibleTable::getSelectedAccessibleRows()
@@ -1176,9 +1232,11 @@ sal_Int32 SAL_CALL SwAccessibleTable::getAccessibleIndex(
CHECK_FOR_DEFUNC( XAccessibleTable )
- SwFrmOrObj aCell( GetTableData().GetCell( nRow, nColumn, sal_False, this ));
- if( aCell.IsValid() )
- nRet = GetChildIndex( aCell );
+ SwAccessibleChild aCell( GetTableData().GetCell( nRow, nColumn, sal_False, this ));
+ if ( aCell.IsValid() )
+ {
+ nRet = GetChildIndex( *(GetMap()), aCell );
+ }
return nRet;
}
@@ -1200,8 +1258,8 @@ sal_Int32 SAL_CALL SwAccessibleTable::getAccessibleRow( sal_Int32 nChildIndex )
}
// <--
- SwFrmOrObj aCell( GetChild( nChildIndex ) );
- if( aCell.GetSwFrm() )
+ SwAccessibleChild aCell( GetChild( *(GetMap()), nChildIndex ) );
+ if ( aCell.GetSwFrm() )
{
sal_Int32 nTop = aCell.GetSwFrm()->Frm().Top();
nTop -= GetFrm()->Frm().Top();
@@ -1239,8 +1297,8 @@ sal_Int32 SAL_CALL SwAccessibleTable::getAccessibleColumn(
}
// <--
- SwFrmOrObj aCell( GetChild( nChildIndex ) );
- if( aCell.GetSwFrm() )
+ SwAccessibleChild aCell( GetChild( *(GetMap()), nChildIndex ) );
+ if ( aCell.GetSwFrm() )
{
sal_Int32 nLeft = aCell.GetSwFrm()->Frm().Left();
nLeft -= GetFrm()->Frm().Left();
@@ -1307,8 +1365,8 @@ void SwAccessibleTable::Dispose( sal_Bool bRecursive )
SwAccessibleContext::Dispose( bRecursive );
}
-void SwAccessibleTable::DisposeChild( const SwFrmOrObj& rChildFrmOrObj,
- sal_Bool bRecursive )
+void SwAccessibleTable::DisposeChild( const SwAccessibleChild& rChildFrmOrObj,
+ sal_Bool bRecursive )
{
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -1330,7 +1388,7 @@ void SwAccessibleTable::DisposeChild( const SwFrmOrObj& rChildFrmOrObj,
SwAccessibleContext::DisposeChild( rChildFrmOrObj, bRecursive );
}
-void SwAccessibleTable::InvalidateChildPosOrSize( const SwFrmOrObj& rChildFrmOrObj,
+void SwAccessibleTable::InvalidateChildPosOrSize( const SwAccessibleChild& rChildFrmOrObj,
const SwRect& rOldBox )
{
vos::OGuard aGuard(Application::GetSolarMutex());
@@ -1358,15 +1416,9 @@ void SwAccessibleTable::InvalidateChildPosOrSize( const SwFrmOrObj& rChildFrmOrO
}
}
- // There are two reason why this method has been called. The first one
- // is there is no context for pFrm. The method is them called by
- // the map, and we have to call our superclass.
- // The other situation is that we have been call by a call to get notified
- // about its change. We then must not call the superclass
- ASSERT( rChildFrmOrObj.GetSwFrm(), "frame expected" );
- uno::Reference< XAccessible > xAcc( GetMap()->GetContext( rChildFrmOrObj.GetSwFrm(), sal_False ) );
- if( !xAcc.is() )
- SwAccessibleContext::InvalidateChildPosOrSize( rChildFrmOrObj, rOldBox );
+ // --> OD 2010-02-18 #i013961# - always call super class method
+ SwAccessibleContext::InvalidateChildPosOrSize( rChildFrmOrObj, rOldBox );
+ // <--
}
@@ -1661,7 +1713,7 @@ SwAccessibleTableColHeaders::SwAccessibleTableColHeaders( SwAccessibleMap *pMap2
SwAccessibleTableData_Impl* SwAccessibleTableColHeaders::CreateNewTableData()
{
const SwTabFrm* pTabFrm = static_cast<const SwTabFrm*>( GetFrm() );
- return new SwAccessibleTableData_Impl( pTabFrm, IsInPagePreview(), true );
+ return new SwAccessibleTableData_Impl( *(GetMap()), pTabFrm, IsInPagePreview(), true );
}
@@ -1687,11 +1739,11 @@ sal_Int32 SAL_CALL SwAccessibleTableColHeaders::getAccessibleChildCount(void)
sal_Int32 nCount = 0;
const SwTabFrm* pTabFrm = static_cast<const SwTabFrm*>( GetFrm() );
- const SwFrmOrObjSList aVisList( GetVisArea(), pTabFrm );
- SwFrmOrObjSList::const_iterator aIter( aVisList.begin() );
+ const SwAccessibleChildSList aVisList( GetVisArea(), *pTabFrm, *(GetMap()) );
+ SwAccessibleChildSList::const_iterator aIter( aVisList.begin() );
while( aIter != aVisList.end() )
{
- const SwFrmOrObj& rLower = *aIter;
+ const SwAccessibleChild& rLower = *aIter;
if( rLower.IsAccessible( IsInPagePreview() ) )
{
nCount++;
@@ -1702,7 +1754,8 @@ sal_Int32 SAL_CALL SwAccessibleTableColHeaders::getAccessibleChildCount(void)
if ( !rLower.GetSwFrm()->IsRowFrm() ||
pTabFrm->IsInHeadline( *(rLower.GetSwFrm()) ) )
{
- nCount += SwAccessibleFrame::GetChildCount( GetVisArea(),
+ nCount += SwAccessibleFrame::GetChildCount( *(GetMap()),
+ GetVisArea(),
rLower.GetSwFrm(),
IsInPagePreview() );
}
diff --git a/sw/source/core/access/acctable.hxx b/sw/source/core/access/acctable.hxx
index d874c86bcf3b..8bdf2e8b49b2 100644
--- a/sw/source/core/access/acctable.hxx
+++ b/sw/source/core/access/acctable.hxx
@@ -29,13 +29,16 @@
#include <com/sun/star/accessibility/XAccessibleTable.hpp>
#include <com/sun/star/accessibility/XAccessibleSelection.hpp>
-#ifndef _ACCCONTEXT_HXX
-#include "acccontext.hxx"
-#endif
+#include <acccontext.hxx>
class SwTabFrm;
class SwAccessibleTableData_Impl;
class SwTableBox;
+class SwSelBoxes;
+
+namespace sw { namespace access {
+ class SwAccessibleChild;
+} }
class SwAccessibleTable :
public SwAccessibleContext,
@@ -218,9 +221,10 @@ public:
// The object is not visible an longer and should be destroyed
virtual void Dispose( sal_Bool bRecursive = sal_False );
- virtual void DisposeChild( const SwFrmOrObj& rFrmOrObj, sal_Bool bRecursive );
- virtual void InvalidateChildPosOrSize( const SwFrmOrObj& rFrmOrObj,
- const SwRect& rFrm );
+ virtual void DisposeChild( const sw::access::SwAccessibleChild& rFrmOrObj,
+ sal_Bool bRecursive );
+ virtual void InvalidateChildPosOrSize( const sw::access::SwAccessibleChild& rFrmOrObj,
+ const SwRect& rFrm );
//===== XAccessibleSelection ============================================
diff --git a/sw/source/core/access/makefile.mk b/sw/source/core/access/makefile.mk
index 20ffdad32118..72871314f722 100644
--- a/sw/source/core/access/makefile.mk
+++ b/sw/source/core/access/makefile.mk
@@ -63,7 +63,8 @@ SLOFILES = \
$(SLO)$/accselectionhelper.obj \
$(SLO)$/acctable.obj \
$(SLO)$/acctextframe.obj \
- $(SLO)$/textmarkuphelper.obj
+ $(SLO)$/textmarkuphelper.obj \
+ $(SLO)$/parachangetrackinginfo.obj
EXCEPTIONSFILES= \
$(SLO)$/acccell.obj \
@@ -89,7 +90,8 @@ EXCEPTIONSFILES= \
$(SLO)$/accselectionhelper.obj \
$(SLO)$/acctable.obj \
$(SLO)$/acctextframe.obj \
- $(SLO)$/textmarkuphelper.obj
+ $(SLO)$/textmarkuphelper.obj \
+ $(SLO)$/parachangetrackinginfo.obj
# --- Targets -------------------------------------------------------
diff --git a/sw/source/core/access/parachangetrackinginfo.cxx b/sw/source/core/access/parachangetrackinginfo.cxx
new file mode 100644
index 000000000000..7c1e25f05c93
--- /dev/null
+++ b/sw/source/core/access/parachangetrackinginfo.cxx
@@ -0,0 +1,231 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#include "precompiled_sw.hxx"
+
+#include <parachangetrackinginfo.hxx>
+
+#include <errhdl.hxx>
+#include <wrong.hxx>
+#include <com/sun/star/text/TextMarkupType.hpp>
+
+#include <txtfrm.hxx>
+#include <ndtxt.hxx>
+#include <IDocumentRedlineAccess.hxx>
+#include <docary.hxx>
+#include <redline.hxx>
+
+namespace css = com::sun::star;
+
+namespace {
+ void initChangeTrackTextMarkupLists( const SwTxtFrm& rTxtFrm,
+ SwWrongList*& opChangeTrackInsertionTextMarkupList,
+ SwWrongList*& opChangeTrackDeletionTextMarkupList,
+ SwWrongList*& opChangeTrackFormatChangeTextMarkupList )
+ {
+ opChangeTrackInsertionTextMarkupList = new SwWrongList( WRONGLIST_CHANGETRACKING );
+ opChangeTrackDeletionTextMarkupList = new SwWrongList( WRONGLIST_CHANGETRACKING );
+ opChangeTrackFormatChangeTextMarkupList = new SwWrongList( WRONGLIST_CHANGETRACKING );
+
+ if ( !rTxtFrm.GetTxtNode() )
+ {
+ ASSERT( false,
+ "<initChangeTrackTextMarkupLists(..) - missing <SwTxtNode> instance!" );
+ return;
+ }
+ const SwTxtNode& rTxtNode( *(rTxtFrm.GetTxtNode()) );
+
+ const IDocumentRedlineAccess* pIDocChangeTrack( rTxtNode.getIDocumentRedlineAccess() );
+ if ( !pIDocChangeTrack )
+ {
+ ASSERT( false,
+ "<initChangeTrackTextMarkupLists(..) - missing <IDocumentRedlineAccess> instance!" );
+ return;
+ }
+
+ if ( !IDocumentRedlineAccess::IsShowChanges( pIDocChangeTrack->GetRedlineMode() ) ||
+ pIDocChangeTrack->GetRedlineTbl().Count() == 0 )
+ {
+ // nothing to do --> empty change track text markup lists.
+ return;
+ }
+
+ const sal_uInt16 nIdxOfFirstRedlineForTxtNode =
+ pIDocChangeTrack->GetRedlinePos( rTxtNode, USHRT_MAX );
+ if ( nIdxOfFirstRedlineForTxtNode == USHRT_MAX )
+ {
+ // nothing to do --> empty change track text markup lists.
+ return;
+ }
+
+ const xub_StrLen nTxtFrmTextStartPos = rTxtFrm.IsFollow()
+ ? rTxtFrm.GetOfst()
+ : 0;
+ const xub_StrLen nTxtFrmTextEndPos = rTxtFrm.HasFollow()
+ ? rTxtFrm.GetFollow()->GetOfst()
+ : rTxtFrm.GetTxt().Len();
+
+ // iteration over the redlines which overlap with the text node.
+ const SwRedlineTbl& rRedlineTbl = pIDocChangeTrack->GetRedlineTbl();
+ const USHORT nRedlineCount( rRedlineTbl.Count() );
+ for ( sal_uInt16 nActRedline = nIdxOfFirstRedlineForTxtNode;
+ nActRedline < nRedlineCount;
+ ++nActRedline)
+ {
+ const SwRedline* pActRedline = rRedlineTbl[ nActRedline ];
+ if ( pActRedline->Start()->nNode > rTxtNode.GetIndex() )
+ {
+ break;
+ }
+
+ xub_StrLen nTxtNodeChangeTrackStart( STRING_LEN );
+ xub_StrLen nTxtNodeChangeTrackEnd( STRING_LEN );
+ pActRedline->CalcStartEnd( rTxtNode.GetIndex(),
+ nTxtNodeChangeTrackStart,
+ nTxtNodeChangeTrackEnd );
+ if ( nTxtNodeChangeTrackStart > nTxtFrmTextEndPos ||
+ nTxtNodeChangeTrackEnd < nTxtFrmTextStartPos )
+ {
+ // Consider only redlines which overlap with the text frame's text.
+ continue;
+ }
+
+ SwWrongList* pMarkupList( 0 );
+ switch ( pActRedline->GetType() )
+ {
+ case nsRedlineType_t::REDLINE_INSERT:
+ {
+ pMarkupList = opChangeTrackInsertionTextMarkupList;
+ }
+ break;
+ case nsRedlineType_t::REDLINE_DELETE:
+ {
+ pMarkupList = opChangeTrackDeletionTextMarkupList;
+ }
+ break;
+ case nsRedlineType_t::REDLINE_FORMAT:
+ {
+ pMarkupList = opChangeTrackFormatChangeTextMarkupList;
+ }
+ break;
+ default:
+ {
+ // other types are not considered
+ }
+ }
+ if ( pMarkupList )
+ {
+ const xub_StrLen nTxtFrmChangeTrackStart =
+ nTxtNodeChangeTrackStart <= nTxtFrmTextStartPos
+ ? nTxtFrmTextStartPos
+ : nTxtNodeChangeTrackStart;
+
+ const xub_StrLen nTxtFrmChangeTrackEnd =
+ nTxtNodeChangeTrackEnd >= nTxtFrmTextEndPos
+ ? nTxtFrmTextEndPos
+ : nTxtNodeChangeTrackEnd;
+
+ pMarkupList->Insert( rtl::OUString(), 0,
+ nTxtFrmChangeTrackStart,
+ nTxtFrmChangeTrackEnd - nTxtFrmChangeTrackStart,
+ pMarkupList->Count() );
+ }
+ } // eof iteration over the redlines which overlap with the text node
+ }
+} // eof anonymous namespace
+
+SwParaChangeTrackingInfo::SwParaChangeTrackingInfo( const SwTxtFrm& rTxtFrm )
+ : mrTxtFrm( rTxtFrm )
+ , mpChangeTrackInsertionTextMarkupList( 0 )
+ , mpChangeTrackDeletionTextMarkupList( 0 )
+ , mpChangeTrackFormatChangeTextMarkupList( 0 )
+{
+}
+
+
+SwParaChangeTrackingInfo::~SwParaChangeTrackingInfo()
+{
+ reset();
+}
+
+void SwParaChangeTrackingInfo::reset()
+{
+ delete mpChangeTrackInsertionTextMarkupList;
+ mpChangeTrackInsertionTextMarkupList = 0;
+
+ delete mpChangeTrackDeletionTextMarkupList;
+ mpChangeTrackDeletionTextMarkupList = 0;
+
+ delete mpChangeTrackFormatChangeTextMarkupList;
+ mpChangeTrackFormatChangeTextMarkupList = 0;
+}
+
+const SwWrongList* SwParaChangeTrackingInfo::getChangeTrackingTextMarkupList( const sal_Int32 nTextMarkupType )
+{
+ SwWrongList* pChangeTrackingTextMarkupList = 0;
+
+ if ( mpChangeTrackInsertionTextMarkupList == 0 )
+ {
+ ASSERT( mpChangeTrackDeletionTextMarkupList == 0,
+ "<SwParaChangeTrackingInfo::getChangeTrackingTextMarkupList(..) - <mpChangeTrackDeletionTextMarkupList> expected to be NULL." );
+ ASSERT( mpChangeTrackFormatChangeTextMarkupList == 0,
+ "<SwParaChangeTrackingInfo::getChangeTrackingTextMarkupList(..) - <mpChangeTrackFormatChangeTextMarkupList> expected to be NULL." );
+ initChangeTrackTextMarkupLists( mrTxtFrm,
+ mpChangeTrackInsertionTextMarkupList,
+ mpChangeTrackDeletionTextMarkupList,
+ mpChangeTrackFormatChangeTextMarkupList );
+ }
+
+ switch ( nTextMarkupType )
+ {
+ case css::text::TextMarkupType::TRACK_CHANGE_INSERTION:
+ {
+ pChangeTrackingTextMarkupList = mpChangeTrackInsertionTextMarkupList;
+ }
+ break;
+ case css::text::TextMarkupType::TRACK_CHANGE_DELETION:
+ {
+ pChangeTrackingTextMarkupList = mpChangeTrackDeletionTextMarkupList;
+ }
+ break;
+ case css::text::TextMarkupType::TRACK_CHANGE_FORMATCHANGE:
+ {
+ pChangeTrackingTextMarkupList = mpChangeTrackFormatChangeTextMarkupList;
+ }
+ break;
+ default:
+ {
+ ASSERT( false,
+ "<SwParaChangeTrackingInfo::getChangeTrackingTextMarkupList(..)> - misusage - unexpected text markup type for change tracking." );
+ }
+ }
+
+ return pChangeTrackingTextMarkupList;
+}
diff --git a/sw/source/core/access/parachangetrackinginfo.hxx b/sw/source/core/access/parachangetrackinginfo.hxx
new file mode 100644
index 000000000000..91131f37b757
--- /dev/null
+++ b/sw/source/core/access/parachangetrackinginfo.hxx
@@ -0,0 +1,59 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+#ifndef _PARACHANGETRACKINGINFO_HXX_
+#define _PARACHANGETRACKINGINFO_HXX_
+
+#include <sal/types.h>
+
+class SwTxtFrm;
+class SwWrongList;
+
+class SwParaChangeTrackingInfo
+{
+ public:
+ explicit SwParaChangeTrackingInfo( const SwTxtFrm& rTxtFrm );
+ ~SwParaChangeTrackingInfo();
+
+ void reset();
+
+ const SwWrongList* getChangeTrackingTextMarkupList( const sal_Int32 nTextMarkupType );
+
+ private:
+ SwParaChangeTrackingInfo( const SwParaChangeTrackingInfo& );
+ SwParaChangeTrackingInfo& operator=( const SwParaChangeTrackingInfo& );
+
+ const SwTxtFrm& mrTxtFrm;
+
+ SwWrongList* mpChangeTrackInsertionTextMarkupList;
+ SwWrongList* mpChangeTrackDeletionTextMarkupList;
+ SwWrongList* mpChangeTrackFormatChangeTextMarkupList;
+};
+#endif
+
diff --git a/sw/source/core/access/textmarkuphelper.cxx b/sw/source/core/access/textmarkuphelper.cxx
index 0d92791ab29f..408a22ebd8ba 100644
--- a/sw/source/core/access/textmarkuphelper.cxx
+++ b/sw/source/core/access/textmarkuphelper.cxx
@@ -34,7 +34,7 @@
#include <algorithm>
#include <comphelper/stlunosequence.hxx>
-#include "errhdl.hxx"
+#include <errhdl.hxx>
#include <com/sun/star/text/TextMarkupType.hpp>
#include <com/sun/star/accessibility/TextSegment.hpp>
@@ -81,22 +81,39 @@ namespace {
}
}
-// implementation of calss <SwTextMarkupoHelper>
-SwTextMarkupHelper::SwTextMarkupHelper( const SwTxtNode& rTxtNode,
- const SwAccessiblePortionData& rPortionData )
- : mrTxtNode( rTxtNode ),
- mrPortionData( rPortionData )
+// implementation of class <SwTextMarkupoHelper>
+SwTextMarkupHelper::SwTextMarkupHelper( const SwAccessiblePortionData& rPortionData,
+ const SwTxtNode& rTxtNode )
+ : mrPortionData( rPortionData )
+ // --> OD 2010-02-19 #i108125#
+ , mpTxtNode( &rTxtNode )
+ , mpTextMarkupList( 0 )
+ // <--
{
}
-sal_Int32 SwTextMarkupHelper::getTextMarkupCount( sal_Int32 nTextMarkupType )
+// --> OD 2010-02-19 #i108125#
+SwTextMarkupHelper::SwTextMarkupHelper( const SwAccessiblePortionData& rPortionData,
+ const SwWrongList& rTextMarkupList )
+ : mrPortionData( rPortionData )
+ , mpTxtNode( 0 )
+ , mpTextMarkupList( &rTextMarkupList )
+{
+}
+// <--
+
+sal_Int32 SwTextMarkupHelper::getTextMarkupCount( const sal_Int32 nTextMarkupType )
throw (::com::sun::star::lang::IllegalArgumentException,
::com::sun::star::uno::RuntimeException)
{
sal_Int32 nTextMarkupCount( 0 );
+ // --> OD 2010-02-19 #i108125#
const SwWrongList* pTextMarkupList =
- getTextMarkupList( mrTxtNode, nTextMarkupType );
+ mpTextMarkupList
+ ? mpTextMarkupList
+ : getTextMarkupList( *mpTxtNode, nTextMarkupType );
+ // <--
if ( pTextMarkupList )
{
nTextMarkupCount = pTextMarkupList->Count();
@@ -105,8 +122,8 @@ sal_Int32 SwTextMarkupHelper::getTextMarkupCount( sal_Int32 nTextMarkupType )
return nTextMarkupCount;
}
::com::sun::star::accessibility::TextSegment
- SwTextMarkupHelper::getTextMarkup( sal_Int32 nTextMarkupIndex,
- sal_Int32 nTextMarkupType )
+ SwTextMarkupHelper::getTextMarkup( const sal_Int32 nTextMarkupIndex,
+ const sal_Int32 nTextMarkupType )
throw (::com::sun::star::lang::IndexOutOfBoundsException,
::com::sun::star::lang::IllegalArgumentException,
::com::sun::star::uno::RuntimeException)
@@ -121,8 +138,12 @@ sal_Int32 SwTextMarkupHelper::getTextMarkupCount( sal_Int32 nTextMarkupType )
aTextMarkupSegment.SegmentStart = -1;
aTextMarkupSegment.SegmentEnd = -1;
+ // --> OD 2010-02-19 #i108125#
const SwWrongList* pTextMarkupList =
- getTextMarkupList( mrTxtNode, nTextMarkupType );
+ mpTextMarkupList
+ ? mpTextMarkupList
+ : getTextMarkupList( *mpTxtNode, nTextMarkupType );
+ // <--
if ( pTextMarkupList )
{
const SwWrongArea* pTextMarkup =
@@ -149,8 +170,8 @@ sal_Int32 SwTextMarkupHelper::getTextMarkupCount( sal_Int32 nTextMarkupType )
}
::com::sun::star::uno::Sequence< ::com::sun::star::accessibility::TextSegment >
- SwTextMarkupHelper::getTextMarkupAtIndex( sal_Int32 nCharIndex,
- sal_Int32 nTextMarkupType )
+ SwTextMarkupHelper::getTextMarkupAtIndex( const sal_Int32 nCharIndex,
+ const sal_Int32 nTextMarkupType )
throw (::com::sun::star::lang::IndexOutOfBoundsException,
::com::sun::star::lang::IllegalArgumentException,
::com::sun::star::uno::RuntimeException)
@@ -166,9 +187,13 @@ sal_Int32 SwTextMarkupHelper::getTextMarkupCount( sal_Int32 nTextMarkupType )
return uno::Sequence< ::com::sun::star::accessibility::TextSegment >();
}
- ::std::vector< ::com::sun::star::accessibility::TextSegment > aTmpTextMarkups;
+ // --> OD 2010-02-19 #i108125#
const SwWrongList* pTextMarkupList =
- getTextMarkupList( mrTxtNode, nTextMarkupType );
+ mpTextMarkupList
+ ? mpTextMarkupList
+ : getTextMarkupList( *mpTxtNode, nTextMarkupType );
+ // <--
+ ::std::vector< ::com::sun::star::accessibility::TextSegment > aTmpTextMarkups;
if ( pTextMarkupList )
{
const ::rtl::OUString rText = mrPortionData.GetAccessibleString();
diff --git a/sw/source/core/access/textmarkuphelper.hxx b/sw/source/core/access/textmarkuphelper.hxx
index 64fbfec394d7..9b2bb519a2a1 100644
--- a/sw/source/core/access/textmarkuphelper.hxx
+++ b/sw/source/core/access/textmarkuphelper.hxx
@@ -37,30 +37,37 @@ namespace com { namespace sun { namespace star { namespace accessibility {
struct TextSegment;
} } } }
-class SwTxtNode;
class SwAccessiblePortionData;
+class SwTxtNode;
+// --> OD 2010-02-19 #i108125#
+class SwWrongList;
+// <--
class SwTextMarkupHelper
{
public:
- SwTextMarkupHelper( const SwTxtNode& rTxtNode,
- const SwAccessiblePortionData& rPortionData );
+ SwTextMarkupHelper( const SwAccessiblePortionData& rPortionData,
+ const SwTxtNode& rTxtNode );
+ // --> OD 2010-02-19 #i108125#
+ SwTextMarkupHelper( const SwAccessiblePortionData& rPortionData,
+ const SwWrongList& rTextMarkupList );
+ // <--
~SwTextMarkupHelper() {}
- sal_Int32 getTextMarkupCount( sal_Int32 nTextMarkupType )
+ sal_Int32 getTextMarkupCount( const sal_Int32 nTextMarkupType )
throw (::com::sun::star::lang::IllegalArgumentException,
::com::sun::star::uno::RuntimeException);
::com::sun::star::accessibility::TextSegment getTextMarkup(
- sal_Int32 nTextMarkupIndex,
- sal_Int32 nTextMarkupType )
+ const sal_Int32 nTextMarkupIndex,
+ const sal_Int32 nTextMarkupType )
throw (::com::sun::star::lang::IndexOutOfBoundsException,
::com::sun::star::lang::IllegalArgumentException,
::com::sun::star::uno::RuntimeException);
::com::sun::star::uno::Sequence< ::com::sun::star::accessibility::TextSegment >
- getTextMarkupAtIndex( sal_Int32 nCharIndex,
- sal_Int32 nTextMarkupType )
+ getTextMarkupAtIndex( const sal_Int32 nCharIndex,
+ const sal_Int32 nTextMarkupType )
throw (::com::sun::star::lang::IndexOutOfBoundsException,
::com::sun::star::lang::IllegalArgumentException,
::com::sun::star::uno::RuntimeException);
@@ -69,8 +76,12 @@ class SwTextMarkupHelper
SwTextMarkupHelper( const SwTextMarkupHelper& );
SwTextMarkupHelper& operator=( const SwTextMarkupHelper& );
- const SwTxtNode& mrTxtNode;
const SwAccessiblePortionData& mrPortionData;
+
+ // --> OD 2010-02-19 #i108125#
+ const SwTxtNode* mpTxtNode;
+ const SwWrongList* mpTextMarkupList;
+ // <--
};
#endif
diff --git a/sw/source/core/bastyp/index.cxx b/sw/source/core/bastyp/index.cxx
index 92cd9f5833cf..2c1b6e2bbb65 100644
--- a/sw/source/core/bastyp/index.cxx
+++ b/sw/source/core/bastyp/index.cxx
@@ -84,7 +84,7 @@ void SwIndexReg::ChkArr()
-SwIndex::SwIndex( SwIndexReg* pArr, xub_StrLen nIdx )
+SwIndex::SwIndex(SwIndexReg *const pArr, xub_StrLen const nIdx)
: nIndex( nIdx ), pArray( pArr ), pNext( 0 ), pPrev( 0 )
{
if( !pArray )
diff --git a/sw/source/core/bastyp/swrect.cxx b/sw/source/core/bastyp/swrect.cxx
index fa06142ea627..1213bfaea896 100644
--- a/sw/source/core/bastyp/swrect.cxx
+++ b/sw/source/core/bastyp/swrect.cxx
@@ -242,7 +242,7 @@ void SwRect::Justify()
}
if ( m_Size.getWidth() < 0 )
{
- m_Point.Y() += m_Size.getWidth() + 1;
+ m_Point.X() += m_Size.getWidth() + 1;
m_Size.setWidth(-m_Size.getWidth());
}
}
diff --git a/sw/source/core/crsr/crsrsh.cxx b/sw/source/core/crsr/crsrsh.cxx
index 9af115269cd8..9cf698a3a709 100644
--- a/sw/source/core/crsr/crsrsh.cxx
+++ b/sw/source/core/crsr/crsrsh.cxx
@@ -3303,19 +3303,6 @@ String SwCrsrShell::GetCrsrDescr() const
return aResult;
}
-SwRect SwCrsrShell::GetRectOfCurrentChar()
-{
- SwCntntFrm* pFrm = pCurCrsr->GetCntntNode()->GetFrm( 0, pCurCrsr->GetPoint(), FALSE );
- SwRect aRet;
- SwCrsrMoveState aTmpState( MV_NONE );
- aTmpState.bRealHeight = TRUE;
- pFrm->GetCharRect( aRet, *pCurCrsr->GetPoint(), &aTmpState );
- //const SwTwips nRealHeight = aTmpState.aRealHeight.Y();
- if (aTmpState.aRealHeight.X() != 0)
- aRet.Top(aRet.Top() + aTmpState.aRealHeight.X());
- return aRet;
-}
-
// SMARTTAGS
void lcl_FillRecognizerData( uno::Sequence< rtl::OUString >& rSmartTagTypes,
diff --git a/sw/source/core/crsr/crstrvl.cxx b/sw/source/core/crsr/crstrvl.cxx
index 9ea80b899a6d..c11092c5fd9d 100644
--- a/sw/source/core/crsr/crstrvl.cxx
+++ b/sw/source/core/crsr/crstrvl.cxx
@@ -34,9 +34,7 @@
#include <editeng/lrspitem.hxx>
#include <editeng/adjitem.hxx>
#include <editeng/brkitem.hxx>
-#ifndef _SVX_SVDOBJ_HXX
#include <svx/svdobj.hxx>
-#endif
#include <crsrsh.hxx>
#include <doc.hxx>
#include <pagefrm.hxx>
@@ -710,15 +708,17 @@ BOOL SwCrsrShell::MoveFldType( const SwFieldType* pFldType, BOOL bNext,
SwTxtNode* pTNd = rPos.nNode.GetNode().GetTxtNode();
ASSERT( pTNd, "Wo ist mein CntntNode?" );
- SwTxtFld* pTxtFld = (SwTxtFld*)pTNd->GetTxtAttr( rPos.nContent,
- RES_TXTATR_FIELD );
+ SwTxtFld * pTxtFld = static_cast<SwTxtFld *>(
+ pTNd->GetTxtAttrForCharAt(rPos.nContent.GetIndex(),
+ RES_TXTATR_FIELD));
BOOL bDelFld = 0 == pTxtFld;
if( bDelFld )
{
SwFmtFld* pFmtFld = new SwFmtFld( SwDateTimeField(
(SwDateTimeFieldType*)pDoc->GetSysFldType( RES_DATETIMEFLD ) ) );
- pTxtFld = new SwTxtFld( *pFmtFld, rPos.nContent.GetIndex() );
+ pTxtFld = new SwTxtFld( *pFmtFld, rPos.nContent.GetIndex(),
+ pDoc->IsClipBoard() );
pTxtFld->ChgTxtNode( pTNd );
}
@@ -1242,13 +1242,27 @@ BOOL SwCrsrShell::GetContentAtPos( const Point& rPt,
{
pTxtAttr = 0;
if( SwContentAtPos::SW_TOXMARK & rCntntAtPos.eCntntAtPos )
- pTxtAttr = pTxtNd->GetTxtAttr( aPos.nContent,
- RES_TXTATR_TOXMARK );
+ {
+ ::std::vector<SwTxtAttr *> const marks(
+ pTxtNd->GetTxtAttrsAt(
+ aPos.nContent.GetIndex(), RES_TXTATR_TOXMARK));
+ if (marks.size())
+ { // hmm... can only return 1 here
+ pTxtAttr = *marks.begin();
+ }
+ }
if( !pTxtAttr &&
SwContentAtPos::SW_REFMARK & rCntntAtPos.eCntntAtPos )
- pTxtAttr = pTxtNd->GetTxtAttr( aPos.nContent,
- RES_TXTATR_REFMARK );
+ {
+ ::std::vector<SwTxtAttr *> const marks(
+ pTxtNd->GetTxtAttrsAt(
+ aPos.nContent.GetIndex(), RES_TXTATR_REFMARK));
+ if (marks.size())
+ { // hmm... can only return 1 here
+ pTxtAttr = *marks.begin();
+ }
+ }
if( pTxtAttr )
{
@@ -1293,8 +1307,8 @@ BOOL SwCrsrShell::GetContentAtPos( const Point& rPt,
if( !bRet && SwContentAtPos::SW_INETATTR & rCntntAtPos.eCntntAtPos
&& !aTmpState.bFtnNoInfo )
{
- pTxtAttr = pTxtNd->GetTxtAttr( aPos.nContent,
- RES_TXTATR_INETFMT );
+ pTxtAttr = pTxtNd->GetTxtAttrAt(
+ aPos.nContent.GetIndex(), RES_TXTATR_INETFMT);
// nur INetAttrs mit URLs "erkennen"
if( pTxtAttr && pTxtAttr->GetINetFmt().GetValue().Len() )
{
@@ -1629,8 +1643,11 @@ BOOL SwCrsrShell::SelectTxtAttr( USHORT nWhich, BOOL bExpand,
if( !pTxtAttr )
{
SwTxtNode* pTxtNd = rPos.nNode.GetNode().GetTxtNode();
- pTxtAttr = pTxtNd ? pTxtNd->GetTxtAttr( rPos.nContent,
- nWhich, bExpand ) : 0;
+ pTxtAttr = (pTxtNd)
+ ? pTxtNd->GetTxtAttrAt(rPos.nContent.GetIndex(),
+ static_cast<RES_TXTATR>(nWhich),
+ (bExpand) ? SwTxtNode::EXPAND : SwTxtNode::DEFAULT)
+ : 0;
}
if( pTxtAttr )
diff --git a/sw/source/core/crsr/crstrvl1.cxx b/sw/source/core/crsr/crstrvl1.cxx
index fcdcd99241f4..53790c2ac28f 100644
--- a/sw/source/core/crsr/crstrvl1.cxx
+++ b/sw/source/core/crsr/crstrvl1.cxx
@@ -33,26 +33,30 @@
#include <viscrs.hxx>
#include <callnk.hxx>
-BOOL SwCrsrShell::IsStartWord() const
+BOOL SwCrsrShell::IsStartWord( sal_Int16 nWordType ) const
{
- return pCurCrsr->IsStartWord();
+ return pCurCrsr->IsStartWord( nWordType );
}
-BOOL SwCrsrShell::IsEndWord() const
+
+BOOL SwCrsrShell::IsEndWord( sal_Int16 nWordType ) const
{
- return pCurCrsr->IsEndWord();
+ return pCurCrsr->IsEndWord( nWordType );
}
+
+BOOL SwCrsrShell::IsInWord( sal_Int16 nWordType ) const
+{
+ return pCurCrsr->IsInWord( nWordType );
+}
+
BOOL SwCrsrShell::IsStartSentence() const
{
return pCurCrsr->IsStartEndSentence( false );
}
+
BOOL SwCrsrShell::IsEndSentence() const
{
return pCurCrsr->IsStartEndSentence( true );
}
-BOOL SwCrsrShell::IsInWord() const
-{
- return pCurCrsr->IsInWord();
-}
BOOL SwCrsrShell::GoStartWord()
@@ -94,4 +98,8 @@ BOOL SwCrsrShell::SelectWord( const Point* pPt )
return pCurCrsr->SelectWord( pPt );
}
+BOOL SwCrsrShell::ExpandToSentenceBorders()
+{
+ return pCurCrsr->ExpandToSentenceBorders();
+}
diff --git a/sw/source/core/crsr/findtxt.cxx b/sw/source/core/crsr/findtxt.cxx
index bb458ad49643..9fd6dd0516e9 100644
--- a/sw/source/core/crsr/findtxt.cxx
+++ b/sw/source/core/crsr/findtxt.cxx
@@ -48,7 +48,6 @@
#include <swundo.hxx>
#include <breakit.hxx>
-/*testarea*/
#include <docsh.hxx>
#include <PostItMgr.hxx>
#include <viewsh.hxx>
@@ -145,7 +144,9 @@ String& lcl_CleanStr( const SwTxtNode& rNd, xub_StrLen nStart,
// Fuer das Ende merken wir uns die Ersetzungen und entferenen
// hinterher alle am Stringende (koenten ja 'normale' 0x7f drinstehen
BOOL bEmpty = RES_TXTATR_FIELD != pHt->Which() ||
- !((SwTxtFld*)pHt)->GetFld().GetFld()->Expand().Len();
+ !(static_cast<SwTxtFld const*>(pHt)
+ ->GetFld().GetFld()->ExpandField(
+ rNd.GetDoc()->IsClipBoard()).Len());
if ( bEmpty && nStart == nAkt )
{
rArr.Insert( nAkt, rArr.Count() );
@@ -334,7 +335,7 @@ BYTE SwPaM::Find( const SearchOptions& rSearchOpt, BOOL bSearchInNotes , utl::Te
xub_StrLen aStart = 0;
// do we need to finish a note?
- if (POSTITMGR->GetActivePostIt())
+ if (POSTITMGR->HasActiveSidebarWin())
{
if (bSearchInNotes)
{
@@ -354,7 +355,7 @@ BYTE SwPaM::Find( const SearchOptions& rSearchOpt, BOOL bSearchInNotes , utl::Te
}
else
{
- POSTITMGR->SetActivePostIt(0);
+ POSTITMGR->SetActiveSidebarWin(0);
}
}
diff --git a/sw/source/core/crsr/swcrsr.cxx b/sw/source/core/crsr/swcrsr.cxx
index d8286d007395..7637df0a67b4 100644
--- a/sw/source/core/crsr/swcrsr.cxx
+++ b/sw/source/core/crsr/swcrsr.cxx
@@ -1141,19 +1141,19 @@ short SwCursor::MaxReplaceArived()
}
-BOOL SwCursor::IsStartWord() const
+BOOL SwCursor::IsStartWord( sal_Int16 nWordType ) const
{
- return IsStartWordWT( WordType::ANYWORD_IGNOREWHITESPACES );
+ return IsStartWordWT( nWordType );
}
-BOOL SwCursor::IsEndWord() const
+BOOL SwCursor::IsEndWord( sal_Int16 nWordType ) const
{
- return IsEndWordWT( WordType::ANYWORD_IGNOREWHITESPACES );
+ return IsEndWordWT( nWordType );
}
-BOOL SwCursor::IsInWord() const
+BOOL SwCursor::IsInWord( sal_Int16 nWordType ) const
{
- return IsInWordWT( WordType::ANYWORD_IGNOREWHITESPACES );
+ return IsInWordWT( nWordType );
}
BOOL SwCursor::GoStartWord()
@@ -1401,11 +1401,11 @@ BOOL SwCursor::SelectWordWT( sal_Int16 nWordType, const Point* pPt )
}
//-----------------------------------------------------------------------------
-BOOL SwCursor::GoSentence( SentenceMoveType eMoveType )
+
+static String lcl_MaskDeletedRedlines( const SwTxtNode* pTxtNd )
{
- BOOL bRet = FALSE;
- const SwTxtNode* pTxtNd = GetNode()->GetTxtNode();
- if( pTxtNd && pBreakIt->GetBreakIter().is() )
+ String aRes;
+ if (pTxtNd)
{
//mask deleted redlines
String sNodeText(pTxtNd->GetTxt());
@@ -1430,11 +1430,30 @@ BOOL SwCursor::GoSentence( SentenceMoveType eMoveType )
}
}
}
+ aRes = sNodeText;
+ }
+ return aRes;
+}
+
+BOOL SwCursor::GoSentence( SentenceMoveType eMoveType )
+{
+ BOOL bRet = FALSE;
+ const SwTxtNode* pTxtNd = GetNode()->GetTxtNode();
+ if( pTxtNd && pBreakIt->GetBreakIter().is() )
+ {
+ String sNodeText( lcl_MaskDeletedRedlines( pTxtNd ) );
+
SwCrsrSaveState aSave( *this );
xub_StrLen nPtPos = GetPoint()->nContent.GetIndex();
switch ( eMoveType )
{
- case END_SENT:
+ case START_SENT: /* when modifying: see also ExpandToSentenceBorders below! */
+ nPtPos = (xub_StrLen)pBreakIt->GetBreakIter()->beginOfSentence(
+ sNodeText,
+ nPtPos, pBreakIt->GetLocale(
+ pTxtNd->GetLang( nPtPos ) ));
+ break;
+ case END_SENT: /* when modifying: see also ExpandToSentenceBorders below! */
nPtPos = (xub_StrLen)pBreakIt->GetBreakIter()->endOfSentence(
sNodeText,
nPtPos, pBreakIt->GetLocale(
@@ -1451,12 +1470,6 @@ BOOL SwCursor::GoSentence( SentenceMoveType eMoveType )
;
break;
}
- case START_SENT:
- nPtPos = (xub_StrLen)pBreakIt->GetBreakIter()->beginOfSentence(
- sNodeText,
- nPtPos, pBreakIt->GetLocale(
- pTxtNd->GetLang( nPtPos ) ));
- break;
case PREV_SENT:
nPtPos = (xub_StrLen)pBreakIt->GetBreakIter()->beginOfSentence(
sNodeText,
@@ -1484,6 +1497,51 @@ BOOL SwCursor::GoSentence( SentenceMoveType eMoveType )
return bRet;
}
+
+BOOL SwCursor::ExpandToSentenceBorders()
+{
+ BOOL bRes = FALSE;
+ const SwTxtNode* pStartNd = Start()->nNode.GetNode().GetTxtNode();
+ const SwTxtNode* pEndNd = End()->nNode.GetNode().GetTxtNode();
+ if (pStartNd && pEndNd && pBreakIt->GetBreakIter().is())
+ {
+ if (!HasMark())
+ SetMark();
+
+ String sStartText( lcl_MaskDeletedRedlines( pStartNd ) );
+ String sEndText( pStartNd == pEndNd? sStartText : lcl_MaskDeletedRedlines( pEndNd ) );
+
+ SwCrsrSaveState aSave( *this );
+ xub_StrLen nStartPos = Start()->nContent.GetIndex();
+ xub_StrLen nEndPos = End()->nContent.GetIndex();
+
+ nStartPos = (xub_StrLen)pBreakIt->GetBreakIter()->beginOfSentence(
+ sStartText, nStartPos,
+ pBreakIt->GetLocale( pStartNd->GetLang( nStartPos ) ) );
+ nEndPos = (xub_StrLen)pBreakIt->GetBreakIter()->endOfSentence(
+ sEndText, nEndPos,
+ pBreakIt->GetLocale( pEndNd->GetLang( nEndPos ) ) );
+
+ // it is allowed to place the PaM just behind the last
+ // character in the text thus <= ...Len
+ bool bChanged = false;
+ if (nStartPos <= pStartNd->GetTxt().Len())
+ {
+ GetMark()->nContent = nStartPos;
+ bChanged = true;
+ }
+ if (nEndPos <= pEndNd->GetTxt().Len())
+ {
+ GetPoint()->nContent = nEndPos;
+ bChanged = true;
+ }
+ if (bChanged && !IsSelOvr())
+ bRes = TRUE;
+ }
+ return bRes;
+}
+
+
BOOL SwTableCursor::LeftRight( BOOL bLeft, USHORT nCnt, USHORT /*nMode*/,
BOOL /*bVisualAllowed*/, BOOL /*bSkipHidden*/, BOOL /*bInsertCrsr*/ )
{
diff --git a/sw/source/core/crsr/trvlfnfl.cxx b/sw/source/core/crsr/trvlfnfl.cxx
index af7360d64b40..3edf3718eabe 100644
--- a/sw/source/core/crsr/trvlfnfl.cxx
+++ b/sw/source/core/crsr/trvlfnfl.cxx
@@ -62,11 +62,13 @@ BOOL SwCursor::GotoFtnTxt()
{
// springe aus dem Content zur Fussnote
BOOL bRet = FALSE;
- SwTxtAttr *pFtn;
SwTxtNode* pTxtNd = GetPoint()->nNode.GetNode().GetTxtNode();
- if( pTxtNd && 0 != (
- pFtn = pTxtNd->GetTxtAttr( GetPoint()->nContent, RES_TXTATR_FTN ) ))
+ SwTxtAttr *const pFtn( (pTxtNd)
+ ? pTxtNd->GetTxtAttrForCharAt(
+ GetPoint()->nContent.GetIndex(), RES_TXTATR_FTN)
+ : 0);
+ if (pFtn)
{
SwCrsrSaveState aSaveState( *this );
GetPoint()->nNode = *((SwTxtFtn*)pFtn)->GetStartNode();
diff --git a/sw/source/core/crsr/trvlreg.cxx b/sw/source/core/crsr/trvlreg.cxx
index e9cf58df2dc4..bf6343e77bc0 100644
--- a/sw/source/core/crsr/trvlreg.cxx
+++ b/sw/source/core/crsr/trvlreg.cxx
@@ -262,7 +262,7 @@ BOOL SwCursor::GotoRegion( const String& rName )
const SwNodeIndex* pIdx;
const SwSection* pSect;
if( 0 != ( pSect = pFmt->GetSection() ) &&
- pSect->GetName() == rName &&
+ pSect->GetSectionName() == rName &&
0 != ( pIdx = pFmt->GetCntnt().GetCntntIdx() ) &&
pIdx->GetNode().GetNodes().IsDocNodes() )
{
diff --git a/sw/source/core/crsr/viscrs.cxx b/sw/source/core/crsr/viscrs.cxx
index 16bf730b33a7..214700c5e680 100644
--- a/sw/source/core/crsr/viscrs.cxx
+++ b/sw/source/core/crsr/viscrs.cxx
@@ -666,16 +666,6 @@ void SwSelPaintRects::Paint( const Rectangle& /*rRect*/ )
// nothing to do with overlays
}
-/*
- * Rectangle ist in Dokument-Koordianten !!
- * pWin != 0 -> auch wirklich malen
- * == 0 -> nur testen, ob es gemalt werden kann
- */
-
-void SwSelPaintRects::Paint( const SwRect& /*rRect*/ )
-{
- // nothing to do with overlays
-}
// check current MapMode of the shell and set possibly the static members.
// Optional set the parameters pX, pY
diff --git a/sw/source/core/doc/dbgoutsw.cxx b/sw/source/core/doc/dbgoutsw.cxx
index e675e900e0f8..3c85091c7d20 100644
--- a/sw/source/core/doc/dbgoutsw.cxx
+++ b/sw/source/core/doc/dbgoutsw.cxx
@@ -52,6 +52,7 @@
#include <dbgoutsw.hxx>
#include <SwRewriter.hxx>
#include <iostream>
+#include <cstdio>
using namespace std;
diff --git a/sw/source/core/doc/doc.cxx b/sw/source/core/doc/doc.cxx
index 31c88825ec35..f1ae3e241b1b 100755
--- a/sw/source/core/doc/doc.cxx
+++ b/sw/source/core/doc/doc.cxx
@@ -47,6 +47,7 @@
#include <rtl/ustring.hxx>
#include <vcl/virdev.hxx>
#include <svl/itemiter.hxx>
+#include <svl/poolitem.hxx>
#include <unotools/syslocale.hxx>
#include <sfx2/printer.hxx>
#include <editeng/keepitem.hxx>
@@ -55,9 +56,11 @@
#include <sfx2/linkmgr.hxx>
#include <editeng/forbiddencharacterstable.hxx>
#include <svx/svdmodel.hxx>
+#include <editeng/pbinitem.hxx>
#include <unotools/charclass.hxx>
#include <unotools/localedatawrapper.hxx>
+#include <swatrset.hxx>
#include <swmodule.hxx>
#include <fmtpdsc.hxx>
#include <fmtanchr.hxx>
@@ -474,6 +477,16 @@ void SwDoc::setPrinter(/*[in]*/ SfxPrinter *pP,/*[in]*/ bool bDeleteOld,/*[in]*/
delete pPrt;
pPrt = pP;
+ // our printer should always use TWIP. Don't rely on this being set in ViewShell::InitPrt, there
+ // are situations where this isn't called.
+ // #i108712# / 2010-02-26 / frank.schoenheit@sun.com
+ if ( pPrt )
+ {
+ MapMode aMapMode( pPrt->GetMapMode() );
+ aMapMode.SetMapUnit( MAP_TWIP );
+ pPrt->SetMapMode( aMapMode );
+ }
+
if ( pDrawModel && !get( IDocumentSettingAccess::USE_VIRTUAL_DEVICE ) )
pDrawModel->SetRefDevice( pPrt );
}
@@ -1177,6 +1190,23 @@ static void lcl_FormatPostIt(
}
+// provide the paper tray to use according to the page style in use,
+// but do that only if the respective item is NOT just the default item
+static sal_Int32 lcl_GetPaperBin( const SwPageFrm *pStartFrm )
+{
+ sal_Int32 nRes = -1;
+
+ const SwFrmFmt &rFmt = pStartFrm->GetPageDesc()->GetMaster();
+ const SfxPoolItem *pItem = NULL;
+ SfxItemState eState = rFmt.GetItemState( RES_PAPER_BIN, FALSE, &pItem );
+ const SvxPaperBinItem *pPaperBinItem = dynamic_cast< const SvxPaperBinItem * >(pItem);
+ if (eState > SFX_ITEM_DEFAULT && pPaperBinItem)
+ nRes = pPaperBinItem->GetValue();
+
+ return nRes;
+}
+
+
void SwDoc::CalculatePagesForPrinting(
/* out */ SwRenderData &rData,
const SwPrintUIOptions &rOptions,
@@ -1187,11 +1217,15 @@ void SwDoc::CalculatePagesForPrinting(
if (!pLayout)
return;
+ const sal_Int32 nContent = rOptions.getIntValue( "PrintContent", 0 );
+ const bool bPrintSelection = nContent == 2;
+
// properties to take into account when calcualting the set of pages
// (PDF export UI does not allow for selecting left or right pages only)
bool bPrintLeftPages = bIsPDFExport ? true : rOptions.IsPrintLeftPages();
bool bPrintRightPages = bIsPDFExport ? true : rOptions.IsPrintRightPages();
- bool bPrintEmptyPages = rOptions.IsPrintEmptyPages( bIsPDFExport );
+ // #i103700# printing selections should not allow for automatic inserting empty pages
+ bool bPrintEmptyPages = bPrintSelection ? false : rOptions.IsPrintEmptyPages( bIsPDFExport );
Range aPages( 1, nDocPageCount );
@@ -1253,6 +1287,7 @@ void SwDoc::CalculatePagesForPrinting(
nPageNo = nFirstPageNo;
+ std::map< sal_Int32, sal_Int32 > &rPrinterPaperTrays = rData.GetPrinterPaperTrays();
std::set< sal_Int32 > &rValidPages = rData.GetValidPagesSet();
std::map< sal_Int32, const SwPageFrm * > &rValidStartFrms = rData.GetValidStartFrames();
rValidPages.clear();
@@ -1268,9 +1303,10 @@ void SwDoc::CalculatePagesForPrinting(
if ( bPrintEmptyPages || pStPage->Frm().Height() )
// <--
{
- // pStPage->GetUpper()->Paint( pStPage->Frm() );
rValidPages.insert( nPageNo );
rValidStartFrms[ nPageNo ] = pStPage;
+
+ rPrinterPaperTrays[ nPageNo ] = lcl_GetPaperBin( pStPage );
}
}
@@ -1306,7 +1342,6 @@ void SwDoc::CalculatePagesForPrinting(
// 0 -> print all pages (default if aPageRange is empty)
// 1 -> print range according to PageRange
// 2 -> print selection
- const sal_Int32 nContent = rOptions.getIntValue( "PrintContent", 0 );
if (1 == nContent)
aPageRange = rOptions.getStringValue( "PageRange", OUString() );
if (2 == nContent)
@@ -1526,8 +1561,9 @@ void SwDoc::CalculatePagePairsForProspectPrinting(
const SwPrintUIOptions &rOptions,
sal_Int32 nDocPageCount )
{
- std::set< sal_Int32 > &rValidPagesSet = rData.GetValidPagesSet();
- std::map< sal_Int32, const SwPageFrm * > &rValidStartFrms = rData.GetValidStartFrames();
+ std::map< sal_Int32, sal_Int32 > &rPrinterPaperTrays = rData.GetPrinterPaperTrays();
+ std::set< sal_Int32 > &rValidPagesSet = rData.GetValidPagesSet();
+ std::map< sal_Int32, const SwPageFrm * > &rValidStartFrms = rData.GetValidStartFrames();
std::vector< std::pair< sal_Int32, sal_Int32 > > &rPagePairs = rData.GetPagePairsForProspectPrinting();
rPagePairs.clear();
@@ -1535,6 +1571,18 @@ void SwDoc::CalculatePagePairsForProspectPrinting(
rValidStartFrms.clear();
rtl::OUString aPageRange = rOptions.getStringValue( "PageRange", rtl::OUString() );
+ // PageContent :
+ // 0 -> print all pages (default if aPageRange is empty)
+ // 1 -> print range according to PageRange
+ // 2 -> print selection
+ const sal_Int32 nContent = rOptions.getIntValue( "PrintContent", 0 );
+ if (0 == nContent)
+ {
+ // set page range to print to 'all pages'
+ aPageRange = OUString::valueOf( (sal_Int32)1 );
+ aPageRange += OUString::valueOf( (sal_Unicode)'-');
+ aPageRange += OUString::valueOf( nDocPageCount );
+ }
StringRangeEnumerator aRange( aPageRange, 1, nDocPageCount, 0 );
DBG_ASSERT( pLayout, "no layout present" );
@@ -1559,6 +1607,8 @@ void SwDoc::CalculatePagePairsForProspectPrinting(
rValidPagesSet.insert( nPageNum );
rValidStartFrms[ nPageNum ] = pPageFrm;
pPageFrm = (SwPageFrm*)pPageFrm->GetNext();
+
+ rPrinterPaperTrays[ nPageNum ] = lcl_GetPaperBin( pStPage );
}
DBG_ASSERT( nPageNum == nDocPageCount, "unexpected number of pages" );
@@ -2283,11 +2333,10 @@ BOOL SwDoc::RemoveInvisibleContent()
}
if( pSect->GetCondition().Len() )
{
- SwSection aSect( pSect->GetType(), pSect->GetName() );
- aSect = *pSect;
- aSect.SetCondition( aEmptyStr );
- aSect.SetHidden( FALSE );
- ChgSection( n, aSect );
+ SwSectionData aSectionData( *pSect );
+ aSectionData.SetCondition( aEmptyStr );
+ aSectionData.SetHidden( false );
+ UpdateSection( n, aSectionData );
}
}
diff --git a/sw/source/core/doc/docbm.cxx b/sw/source/core/doc/docbm.cxx
index 1e058867ba32..0080694722ba 100644
--- a/sw/source/core/doc/docbm.cxx
+++ b/sw/source/core/doc/docbm.cxx
@@ -1023,9 +1023,8 @@ SaveBookmark::SaveBookmark(
m_aShortName = pBookmark->GetShortName();
m_aCode = pBookmark->GetKeyCode();
- ::sfx2::Metadatable * const pMetadatable(
- const_cast< ::sfx2::Metadatable * >( // CreateUndo should be const?
- dynamic_cast< ::sfx2::Metadatable const* >(pBookmark)));
+ ::sfx2::Metadatable const*const pMetadatable(
+ dynamic_cast< ::sfx2::Metadatable const* >(pBookmark));
if (pMetadatable)
{
m_pMetadataUndo = pMetadatable->CreateUndo();
diff --git a/sw/source/core/doc/doccomp.cxx b/sw/source/core/doc/doccomp.cxx
index 6451aebd4251..170193778421 100644
--- a/sw/source/core/doc/doccomp.cxx
+++ b/sw/source/core/doc/doccomp.cxx
@@ -1412,7 +1412,7 @@ void SwCompareData::ShowDelete( const CompareData& rData, ULONG nStt,
if( *pCorr->GetPoint() == *pTmp->GetPoint() )
{
SwNodeIndex aTmpPos( pTmp->GetMark()->nNode, -1 );
- *pCorr->GetPoint() = SwPosition( aTmpPos, 0 );
+ *pCorr->GetPoint() = SwPosition( aTmpPos );
}
}
}
@@ -1480,6 +1480,17 @@ void SwCompareData::SetRedlinesToDoc( BOOL bUseDocInfo )
pTmp->GetPoint()->nNode++;
pTmp->GetPoint()->nContent.Assign( pTmp->GetCntntNode(), 0 );
}
+ // --> mst 2010-05-17 #i101009#
+ // prevent redlines that end on structural end node
+ if (& rDoc.GetNodes().GetEndOfContent() ==
+ & pTmp->GetPoint()->nNode.GetNode())
+ {
+ pTmp->GetPoint()->nNode--;
+ SwCntntNode *const pContentNode( pTmp->GetCntntNode() );
+ pTmp->GetPoint()->nContent.Assign( pContentNode,
+ (pContentNode) ? pContentNode->Len() : 0 );
+ }
+ // <--
rDoc.DeleteRedline( *pTmp, false, USHRT_MAX );
@@ -1499,6 +1510,17 @@ void SwCompareData::SetRedlinesToDoc( BOOL bUseDocInfo )
pTmp->GetPoint()->nNode++;
pTmp->GetPoint()->nContent.Assign( pTmp->GetCntntNode(), 0 );
}
+ // --> mst 2010-05-17 #i101009#
+ // prevent redlines that end on structural end node
+ if (& rDoc.GetNodes().GetEndOfContent() ==
+ & pTmp->GetPoint()->nNode.GetNode())
+ {
+ pTmp->GetPoint()->nNode--;
+ SwCntntNode *const pContentNode( pTmp->GetCntntNode() );
+ pTmp->GetPoint()->nContent.Assign( pContentNode,
+ (pContentNode) ? pContentNode->Len() : 0 );
+ }
+ // <--
} while( pInsRing != ( pTmp = (SwPaM*)pTmp->GetNext() ));
SwRedlineData aRedlnData( nsRedlineType_t::REDLINE_INSERT, nAuthor, aTimeStamp,
aEmptyStr, 0, 0 );
diff --git a/sw/source/core/doc/docdde.cxx b/sw/source/core/doc/docdde.cxx
index 5bf14845cbf3..d21e6313a2df 100644
--- a/sw/source/core/doc/docdde.cxx
+++ b/sw/source/core/doc/docdde.cxx
@@ -99,7 +99,9 @@ BOOL lcl_FindSection( const SwSectionFmtPtr& rpSectFmt, void* pArgs, bool bCaseS
SwSection* pSect = rpSectFmt->GetSection();
if( pSect )
{
- String sNm( bCaseSensitive ? pSect->GetName() : GetAppCharClass().lower( pSect->GetName() ));
+ String sNm( (bCaseSensitive)
+ ? pSect->GetSectionName()
+ : GetAppCharClass().lower( pSect->GetSectionName() ));
String sCompare( (bCaseSensitive)
? pItem->m_Item
: GetAppCharClass().lower( pItem->m_Item ) );
diff --git a/sw/source/core/doc/docedt.cxx b/sw/source/core/doc/docedt.cxx
index c9ee5b00e181..31484ac303dd 100644
--- a/sw/source/core/doc/docedt.cxx
+++ b/sw/source/core/doc/docedt.cxx
@@ -1604,17 +1604,9 @@ bool SwDoc::DeleteAndJoinImpl( SwPaM & rPam,
}
// <--
{
- // dann eine Kopie vom Cursor erzeugen um alle Pams aus den
- // anderen Sichten aus dem Loeschbereich zu verschieben
- // ABER NICHT SICH SELBST !!
- SwPaM aDelPam( *rPam.GetMark(), *rPam.GetPoint() );
- ::PaMCorrAbs( aDelPam, *aDelPam.GetPoint() );
-
- const bool bSuccess( DeleteRangeImpl( aDelPam ) );
+ bool const bSuccess( DeleteRangeImpl( rPam ) );
if (!bSuccess)
return false;
-
- *rPam.GetPoint() = *aDelPam.GetPoint();
}
if( bJoinTxt )
@@ -1625,7 +1617,24 @@ bool SwDoc::DeleteAndJoinImpl( SwPaM & rPam,
return true;
}
-bool SwDoc::DeleteRangeImpl( SwPaM & rPam, const bool )
+bool SwDoc::DeleteRangeImpl(SwPaM & rPam, const bool)
+{
+ // move all cursors out of the deleted range.
+ // but first copy the given PaM, because it could be a cursor that
+ // would be moved!
+ SwPaM aDelPam( *rPam.GetMark(), *rPam.GetPoint() );
+ ::PaMCorrAbs( aDelPam, *aDelPam.GetPoint() );
+
+ bool const bSuccess( DeleteRangeImplImpl( aDelPam ) );
+ if (bSuccess)
+ { // now copy position from temp copy to given PaM
+ *rPam.GetPoint() = *aDelPam.GetPoint();
+ }
+
+ return bSuccess;
+}
+
+bool SwDoc::DeleteRangeImplImpl(SwPaM & rPam)
{
SwPosition *pStt = (SwPosition*)rPam.Start(), *pEnd = (SwPosition*)rPam.End();
diff --git a/sw/source/core/doc/docfld.cxx b/sw/source/core/doc/docfld.cxx
index ebac34bf3540..f4e80e9de52a 100644
--- a/sw/source/core/doc/docfld.cxx
+++ b/sw/source/core/doc/docfld.cxx
@@ -1241,13 +1241,18 @@ void SwDoc::FldsToExpand( SwHash**& ppHashTbl, USHORT& rTblSize,
// Eintrag in den HashTable eintragen
// Eintrag vorhanden ?
pFnd = Find( rName, ppHashTbl, rTblSize, &nPos );
+ String const value(pFld->ExpandField(IsClipBoard()));
if( pFnd )
+ {
// Eintrag in der HashTabelle aendern
- ((_HashStr*)pFnd)->aSetStr = pFld->Expand();
+ static_cast<_HashStr*>(pFnd)->aSetStr = value;
+ }
else
+ {
// neuen Eintrag einfuegen
*(ppHashTbl + nPos ) = new _HashStr( rName,
- pFld->Expand(), (_HashStr*)*(ppHashTbl + nPos));
+ value, static_cast<_HashStr *>(*(ppHashTbl + nPos)));
+ }
}
break;
}
@@ -1413,13 +1418,18 @@ void SwDoc::UpdateExpFlds( SwTxtFld* pUpdtFld, bool bUpdRefFlds )
// Eintrag vorhanden ?
USHORT nPos;
SwHash* pFnd = Find( rName, pHashStrTbl, nStrFmtCnt, &nPos );
+ String const value(pFld->ExpandField(IsClipBoard()));
if( pFnd )
+ {
// Eintrag in der HashTabelle aendern
- ((_HashStr*)pFnd)->aSetStr = pFld->Expand();
+ static_cast<_HashStr*>(pFnd)->aSetStr = value;
+ }
else
+ {
// neuen Eintrag einfuegen
*(pHashStrTbl + nPos ) = new _HashStr( rName,
- pFld->Expand(), (_HashStr*)*(pHashStrTbl + nPos));
+ value, static_cast<_HashStr *>(*(pHashStrTbl + nPos)));
+ }
}
break;
case RES_GETEXPFLD:
@@ -2724,7 +2734,7 @@ bool SwDoc::UpdateFld(SwTxtFld * pDstTxtFld, SwField & rSrcFld,
//pDstFld->ChangeFormat( rSrcFld.GetFormat() );
//pDstFld->SetLanguage( rSrcFld.GetLanguage() );
- SwField * pNewFld = rSrcFld.Copy();
+ SwField * pNewFld = rSrcFld.CopyField();
pDstFmtFld->SetFld(pNewFld);
switch( nFldWhich )
diff --git a/sw/source/core/doc/docfmt.cxx b/sw/source/core/doc/docfmt.cxx
index af1236b6371c..d971ac0c51fe 100644
--- a/sw/source/core/doc/docfmt.cxx
+++ b/sw/source/core/doc/docfmt.cxx
@@ -397,10 +397,9 @@ void SwDoc::ResetAttrs( const SwPaM &rRg,
// JP 22.08.96: Sonderfall: steht der Crsr in einem URL-Attribut
// dann wird dessen Bereich genommen
- const SwTxtAttr* pURLAttr;
- if( pTxtNd->HasHints() &&
- 0 != ( pURLAttr = pTxtNd->GetTxtAttr( rSt, RES_TXTATR_INETFMT ))
- && pURLAttr->GetINetFmt().GetValue().Len() )
+ SwTxtAttr const*const pURLAttr(
+ pTxtNd->GetTxtAttrAt(rSt.GetIndex(), RES_TXTATR_INETFMT));
+ if (pURLAttr && pURLAttr->GetINetFmt().GetValue().Len())
{
nMkPos = *pURLAttr->GetStart();
nPtPos = *pURLAttr->GetEnd();
@@ -902,10 +901,9 @@ lcl_InsAttr(SwDoc *const pDoc, const SwPaM &rRg, const SfxItemSet& rChgSet,
// JP 22.08.96: Sonderfall: steht der Crsr in einem URL-Attribut
// dann wird dessen Bereich genommen
- const SwTxtAttr* pURLAttr;
- if( pTxtNd->HasHints() &&
- 0 != ( pURLAttr = pTxtNd->GetTxtAttr( rSt, RES_TXTATR_INETFMT ))
- && pURLAttr->GetINetFmt().GetValue().Len() )
+ SwTxtAttr const*const pURLAttr(
+ pTxtNd->GetTxtAttrAt(rSt.GetIndex(), RES_TXTATR_INETFMT));
+ if (pURLAttr && pURLAttr->GetINetFmt().GetValue().Len())
{
nMkPos = *pURLAttr->GetStart();
nPtPos = *pURLAttr->GetEnd();
diff --git a/sw/source/core/doc/docglbl.cxx b/sw/source/core/doc/docglbl.cxx
index abf2e5b2217b..30a385442fc0 100644
--- a/sw/source/core/doc/docglbl.cxx
+++ b/sw/source/core/doc/docglbl.cxx
@@ -400,11 +400,11 @@ BOOL SwDoc::SplitDoc( USHORT eDocType, const String& rPath,
default:
{
String sNm( INetURLObject( sFileName ).GetName() );
- SwSection aSect( FILE_LINK_SECTION,
+ SwSectionData aSectData( FILE_LINK_SECTION,
GetUniqueSectionName( &sNm ));
SwSectionFmt* pFmt = MakeSectionFmt( 0 );
- aSect.SetLinkFileName(sFileName );
- aSect.SetProtect();
+ aSectData.SetLinkFileName(sFileName);
+ aSectData.SetProtectFlag(true);
aEndIdx--; // im InsertSection ist Ende inclusive
while( aEndIdx.GetNode().IsStartNode() )
@@ -456,11 +456,15 @@ BOOL SwDoc::SplitDoc( USHORT eDocType, const String& rPath,
SwNodeIndex aStartIdx(*pSttNd);
if (aEndIdx >= aStartIdx)
- pSectNd = GetNodes().InsertSection
- (aStartIdx, *pFmt, aSect, &aEndIdx, FALSE );
+ {
+ pSectNd = GetNodes().InsertTextSection(aStartIdx,
+ *pFmt, aSectData, 0, &aEndIdx, false);
+ }
else
- pSectNd = GetNodes().InsertSection
- (aEndIdx, *pFmt, aSect, &aStartIdx, FALSE );
+ {
+ pSectNd = GetNodes().InsertTextSection(aEndIdx,
+ *pFmt, aSectData, 0, &aStartIdx, false);
+ }
// <- #i26762#
pSectNd->GetSection().CreateLink( CREATE_CONNECT );
@@ -747,11 +751,11 @@ BOOL SwDoc::SplitDoc( USHORT eDocType, const String& rPath, int nOutlineLevel )
default:
{
String sNm( INetURLObject( sFileName ).GetName() );
- SwSection aSect( FILE_LINK_SECTION,
+ SwSectionData aSectData( FILE_LINK_SECTION,
GetUniqueSectionName( &sNm ));
SwSectionFmt* pFmt = MakeSectionFmt( 0 );
- aSect.SetLinkFileName(sFileName );
- aSect.SetProtect();
+ aSectData.SetLinkFileName(sFileName);
+ aSectData.SetProtectFlag(true);
aEndIdx--; // im InsertSection ist Ende inclusive
while( aEndIdx.GetNode().IsStartNode() )
@@ -799,11 +803,15 @@ BOOL SwDoc::SplitDoc( USHORT eDocType, const String& rPath, int nOutlineLevel )
SwNodeIndex aStartIdx(*pSttNd);
if (aEndIdx >= aStartIdx)
- pSectNd = GetNodes().InsertSection
- (aStartIdx, *pFmt, aSect, &aEndIdx, FALSE );
+ {
+ pSectNd = GetNodes().InsertTextSection(aStartIdx,
+ *pFmt, aSectData, 0, &aEndIdx, false);
+ }
else
- pSectNd = GetNodes().InsertSection
- (aEndIdx, *pFmt, aSect, &aStartIdx, FALSE );
+ {
+ pSectNd = GetNodes().InsertTextSection(aEndIdx,
+ *pFmt, aSectData, 0, &aStartIdx, false);
+ }
pSectNd->GetSection().CreateLink( CREATE_CONNECT );
}
diff --git a/sw/source/core/doc/doclay.cxx b/sw/source/core/doc/doclay.cxx
index 6e04d49afb3e..ceb7d6e3463c 100644
--- a/sw/source/core/doc/doclay.cxx
+++ b/sw/source/core/doc/doclay.cxx
@@ -947,8 +947,6 @@ SwDrawFrmFmt* SwDoc::Insert( const SwPaM &rRg,
// Anker noch nicht gesetzt ?
// DrawObjecte duerfen niemals in Kopf-/Fusszeilen landen.
const bool bIsAtCntnt = (FLY_AT_PAGE != eAnchorId);
-// FLY_AT_CNTNT == eAnchorId || FLY_IN_CNTNT == eAnchorId ||
-// FLY_AT_FLY == eAnchorId || FLY_AUTO_CNTNT == eAnchorId;
const SwNodeIndex* pChkIdx = 0;
if( !pAnchor )
diff --git a/sw/source/core/doc/docnew.cxx b/sw/source/core/doc/docnew.cxx
index 8dfcbb215e3a..1b3d5fe6eb55 100644
--- a/sw/source/core/doc/docnew.cxx
+++ b/sw/source/core/doc/docnew.cxx
@@ -1084,14 +1084,10 @@ void SwDoc::InitTOXTypes()
/*-- 08.05.2009 10:07:57---------------------------------------------------
-----------------------------------------------------------------------*/
-SwDoc* SwDoc::CreateCopy() const
+SfxObjectShell* SwDoc::CreateCopy(bool bCallInitNew ) const
{
SwDoc* pRet = new SwDoc;
//copy settings
-/*
- //aNodes( this ),
- //aUndoNodes( this ),
- mpAttrPool(new SwAttrPool(this)),*/
USHORT __FAR_DATA aRangeOfDefaults[] = {
RES_FRMATR_BEGIN, RES_FRMATR_END-1,
RES_CHRATR_BEGIN, RES_CHRATR_END-1,
@@ -1120,143 +1116,8 @@ SwDoc* SwDoc::CreateCopy() const
if( aNewDefaults.Count() )
pRet->SetDefault( aNewDefaults );
- /*
- pDfltFrmFmt( new SwFrmFmt( GetAttrPool(), sFrmFmtStr, 0 ) ),
- pEmptyPageFmt( new SwFrmFmt( GetAttrPool(), sEmptyPageStr, pDfltFrmFmt ) ),
- pColumnContFmt( new SwFrmFmt( GetAttrPool(), sColumnCntStr, pDfltFrmFmt ) ),
- pDfltCharFmt( new SwCharFmt( GetAttrPool(), sCharFmtStr, 0 ) ),
- pDfltTxtFmtColl( new SwTxtFmtColl( GetAttrPool(), sTxtCollStr ) ),
- pDfltGrfFmtColl( new SwGrfFmtColl( GetAttrPool(), sGrfCollStr ) ),
- pFrmFmtTbl( new SwFrmFmts() ),
- pCharFmtTbl( new SwCharFmts() ),
- pSpzFrmFmtTbl( new SwSpzFrmFmts() ),
- pSectionFmtTbl( new SwSectionFmts() ),
- pTblFrmFmtTbl( new SwFrmFmts() ),
- pTxtFmtCollTbl( new SwTxtFmtColls() ),
- pGrfFmtCollTbl( new SwGrfFmtColls() ),
- pBookmarkTbl( new SwBookmarks( 0, 16 ) ),
- pTOXTypes( new SwTOXTypes() ),
- pDefTOXBases( new SwDefTOXBase_Impl() ),
- pLayout( 0 ), // Rootframe des spezifischen Layouts.
- pDrawModel( 0 ),
- pUndos( new SwUndos( 0, 20 ) ),
- pUpdtFlds( new SwDocUpdtFld() ),
- pFldTypes( new SwFldTypes() ),
- pVirDev( 0 ),
- pPrt( 0 ),
- pPrtData( 0 ),
- pGlossaryDoc( 0 ),
- pOutlineRule( 0 ),
- pFtnInfo( new SwFtnInfo ),
- pEndNoteInfo( new SwEndNoteInfo ),
- pLineNumberInfo( new SwLineNumberInfo ),
- pFtnIdxs( new SwFtnIdxs ),
- pDocStat( new SwDocStat ),
- pDocShell( 0 ),
- pDocShRef( 0 ),
- pLinkMgr( new sfx2::LinkManager( 0 ) ),
- pACEWord( 0 ),
- pURLStateChgd( 0 ),
- pNumberFormatter( 0 ),
- pNumRuleTbl( new SwNumRuleTbl ),
- // --> OD 2008-03-26 #refactorlists#
- maLists(),
- maListStyleLists(),
- // <--
- pRedlineTbl( new SwRedlineTbl ),
- pAutoFmtRedlnComment( 0 ),
- pUnoCrsrTbl( new SwUnoCrsrTbl( 0, 16 ) ),
- pPgPViewPrtData( 0 ),
- pExtInputRing( 0 ),
- pLayouter( 0 ),
- // --> OD 2008-03-07 #refactorlists#
- pStyleAccess( 0 ),
- // <--
- pLayoutCache( 0 ),
- pUnoCallBack(new SwUnoCallBack(0)),
- mpGrammarContact( 0 ),
- aChartDataProviderImplRef(),
- pChartControllerHelper( 0 ),
- // --> OD 2007-10-31 #i83479#
- mpListItemsList( new tImplSortedNodeNumList() ),
- // <--
- nUndoPos( 0 ),
- nUndoSavePos( 0 ),
- nUndoCnt( 0 ),
- nUndoSttEnd( 0 ),
- nAutoFmtRedlnCommentNo( 0 ),
- nLinkUpdMode( GLOBALSETTING ),
- eFldUpdMode( AUTOUPD_GLOBALSETTING ),
- eRedlineMode((RedlineMode_t)(nsRedlineMode_t::REDLINE_SHOW_INSERT | nsRedlineMode_t::REDLINE_SHOW_DELETE)),
- eChrCmprType( CHARCOMPRESS_NONE ),
- mReferenceCount(0),
- mIdleBlockCount(0),
- nLockExpFld( 0 ),
- mbReadlineChecked(false),
- mbWinEncryption(sal_False),
- // --> OD 2005-02-11 #i38810#
- mbLinksUpdated( sal_False ),
- mbClipBoard( false ),
- mbColumnSelection( false ),
- // i#78591#
- mbProtectForm(false),*/
pRet->n32DummyCompatabilityOptions1 = n32DummyCompatabilityOptions1;
pRet->n32DummyCompatabilityOptions2 = n32DummyCompatabilityOptions2;
- /*
- mbStartIdleTimer(sal_False)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLog, "SW", "JP93722", "SwDoc::SwDoc" );
-
- mbGlossDoc =
- mbModified =
- mbDtor =
- mbUndo =
- mbPageNums =
- mbLoaded =
- mbUpdateExpFld =
- mbNewDoc =
- mbCopyIsMove =
- mbNoDrawUndoObj =
- mbBrowseMode =
- mbInReading =
- mbInXMLImport =
- mbUpdateTOX =
- mbInLoadAsynchron =
- mbHTMLMode =
- mbInCallModified =
- mbIsGlobalDoc =
- mbGlblDocSaveLinks =
- mbIsLabelDoc =
- mbIsAutoFmtRedline =
- mbOLEPrtNotifyPending =
- mbAllOLENotify =
- mbIsRedlineMove =
- mbInsOnlyTxtGlssry =
- mbContains_MSVBasic =
- mbKernAsianPunctuation =
-#ifndef PRODUCT
- mbXMLExport =
-#endif
- // --> OD 2006-03-21 #b6375613#
- mbApplyWorkaroundForB6375613 =
- // <--
- false;
-
- mbGroupUndo =
- mbNewFldLst =
- mbVisibleLinks =
- mbPurgeOLE =
- true;
-
- //
- // COMPATIBILITY FLAGS START
- //
-
- // Note: Any non-hidden compatibility flag should obtain its default
- // by asking SvtCompatibilityOptions, see below.
- //
- const SvtCompatibilityOptions aOptions;
- */
pRet->mbParaSpaceMax = mbParaSpaceMax ;
pRet->mbParaSpaceMaxAtPages = mbParaSpaceMaxAtPages ;
pRet->mbTabCompat = mbTabCompat ;
@@ -1286,92 +1147,16 @@ SwDoc* SwDoc::CreateCopy() const
//
// COMPATIBILITY FLAGS END
//
- /*
- pMacroTable = new SvxMacroTableDtor;
-
- mpGrammarContact = ::createGrammarContact();
-
- // Formate
- pFrmFmtTbl->Insert(pDfltFrmFmt, 0 );
- pCharFmtTbl->Insert(pDfltCharFmt, 0 );
-
- // FmtColls
- // TXT
- pTxtFmtCollTbl->Insert(pDfltTxtFmtColl, 0 );
- // GRF
- pGrfFmtCollTbl->Insert(pDfltGrfFmtColl, 0 );
-
- // PageDesc, EmptyPageFmt und ColumnFmt anlegen
- if ( !aPageDescs.Count() )
- GetPageDescFromPool( RES_POOLPAGE_STANDARD );
-
- //Leere Seite Einstellen.
- pEmptyPageFmt->SetFmtAttr( SwFmtFrmSize( ATT_FIX_SIZE ) );
- //BodyFmt fuer Spalten Einstellen.
- pColumnContFmt->SetFmtAttr( SwFmtFillOrder( ATT_LEFT_TO_RIGHT ) );
-
- _InitFieldTypes();
-
- // lege (fuer die Filter) eine Default-OutlineNumRule an
- // --> OD 2008-02-11 #newlistlevelattrs#
- pOutlineRule = new SwNumRule( String::CreateFromAscii( SwNumRule::GetOutlineRuleName() ),
- // --> OD 2008-06-06 #i89178#
- numfunc::GetDefaultPositionAndSpaceMode(),
- // <--
- OUTLINE_RULE );
- // <--
- // #115901#
- AddNumRule(pOutlineRule);
- // --> OD 2005-10-21 - counting of phantoms depends on <IsOldNumbering()>
- pOutlineRule->SetCountPhantoms( !get(IDocumentSettingAccess::OLD_NUMBERING) );
- // <--
-
- new SwTxtNode( SwNodeIndex( aUndoNodes.GetEndOfContent() ), pDfltTxtFmtColl );
- new SwTxtNode( SwNodeIndex( aNodes.GetEndOfContent() ),
- GetTxtCollFromPool( RES_POOLCOLL_STANDARD ));
-
- // den eigenen IdleTimer setzen
- aIdleTimer.SetTimeout( 600 );
- aIdleTimer.SetTimeoutHdl( LINK(this, SwDoc, DoIdleJobs) );
-
- aOLEModifiedTimer.SetTimeout( 1000 );
- aOLEModifiedTimer.SetTimeoutHdl( LINK( this, SwDoc, DoUpdateModifiedOLE ));
-
- // DBMgr anlegen
- pNewDBMgr = new SwNewDBMgr;
-
- // create TOXTypes
- ShellResource* pShellRes = ViewShell::GetShellRes();
-
- SwTOXType * pNew = new SwTOXType(TOX_CONTENT, pShellRes->aTOXContentName );
- pTOXTypes->Insert( pNew, pTOXTypes->Count() );
- pNew = new SwTOXType(TOX_INDEX, pShellRes->aTOXIndexName );
- pTOXTypes->Insert( pNew, pTOXTypes->Count() );
- pNew = new SwTOXType(TOX_USER, pShellRes->aTOXUserName );
- pTOXTypes->Insert( pNew, pTOXTypes->Count() );
- pNew = new SwTOXType(TOX_ILLUSTRATIONS, pShellRes->aTOXIllustrationsName );
- pTOXTypes->Insert( pNew, pTOXTypes->Count() );
- pNew = new SwTOXType(TOX_OBJECTS, pShellRes->aTOXObjectsName );
- pTOXTypes->Insert( pNew, pTOXTypes->Count() );
- pNew = new SwTOXType(TOX_TABLES, pShellRes->aTOXTablesName );
- pTOXTypes->Insert( pNew, pTOXTypes->Count() );
- pNew = new SwTOXType(TOX_AUTHORITIES, pShellRes->aTOXAuthoritiesName );
- pTOXTypes->Insert( pNew, pTOXTypes->Count() );
-
- {
- SfxItemSet aIgnorableParagraphItems( GetAttrPool(),
- RES_PARATR_LIST_BEGIN, RES_PARATR_LIST_END-1,
- 0 );
- pStyleAccess = createStyleManager( &aIgnorableParagraphItems );
- }
-
- ResetModified();
-
-*/
- pRet->ReplaceStyles( *(SwDoc*)this );
+ pRet->ReplaceStyles( * const_cast< SwDoc*>( this ));
+ SfxObjectShellRef aDocShellRef = const_cast< SwDocShell* >( GetDocShell() );
+ pRet->SetRefForDocShell( boost::addressof(aDocShellRef) );
+ SfxObjectShellRef xRetShell = new SwDocShell( pRet, SFX_CREATE_MODE_STANDARD );
+ if( bCallInitNew )
+ xRetShell->DoInitNew();
//copy content
pRet->Paste( *this );
- return pRet;
+ pRet->SetRefForDocShell( 0 );
+ return xRetShell;
}
/*-- 08.05.2009 10:52:40---------------------------------------------------
copy document content - code from SwFEShell::Paste( SwDoc* , BOOL )
@@ -1407,8 +1192,8 @@ void SwDoc::Paste( const SwDoc& rSource )
{
aIndexBefore++;
- SwPaM aPaM(SwPosition(aIndexBefore, 0),
- SwPosition(rInsPos.nNode, 0));
+ SwPaM aPaM(SwPosition(aIndexBefore),
+ SwPosition(rInsPos.nNode));
MakeUniqueNumRules(aPaM);
}
diff --git a/sw/source/core/doc/docredln.cxx b/sw/source/core/doc/docredln.cxx
index 000da4987cbf..9997eabd79c3 100644
--- a/sw/source/core/doc/docredln.cxx
+++ b/sw/source/core/doc/docredln.cxx
@@ -914,17 +914,24 @@ bool SwDoc::AppendRedline( SwRedline* pNewRedl, bool bCallDelete )
case POS_INSIDE:
{
- pNewRedl->PushData( *pRedl, FALSE );
if( *pRStt == *pStt )
{
- pRedl->SetStart( *pEnd, pRStt );
- // neu einsortieren
- pRedlineTbl->Remove( n );
- pRedlineTbl->Insert( pRedl, n );
- bDec = true;
+ // --> mst 2010-05-17 #i97421#
+ // redline w/out extent loops
+ if (*pStt != *pEnd)
+ // <--
+ {
+ pNewRedl->PushData( *pRedl, FALSE );
+ pRedl->SetStart( *pEnd, pRStt );
+ // re-insert
+ pRedlineTbl->Remove( n );
+ pRedlineTbl->Insert( pRedl, n );
+ bDec = true;
+ }
}
else
{
+ pNewRedl->PushData( *pRedl, FALSE );
if( *pREnd != *pEnd )
{
pNew = new SwRedline( *pRedl );
@@ -1109,8 +1116,7 @@ bool SwDoc::AppendRedline( SwRedline* pNewRedl, bool bCallDelete )
case POS_EQUAL:
case POS_INSIDE:
- // TODO Check if there is any side effect
- //delete pNewRedl, pNewRedl = 0;
+ delete pNewRedl, pNewRedl = 0;
break;
case POS_OUTSIDE:
diff --git a/sw/source/core/doc/doctxm.cxx b/sw/source/core/doc/doctxm.cxx
index 3b36416ecb64..58b3e084cf7a 100644
--- a/sw/source/core/doc/doctxm.cxx
+++ b/sw/source/core/doc/doctxm.cxx
@@ -366,26 +366,23 @@ const SwTOXBaseSection* SwDoc::InsertTableOf( const SwPosition& rPos,
{
StartUndo( UNDO_INSTOX, NULL );
- SwTOXBaseSection* pNew = new SwTOXBaseSection( rTOX );
String sSectNm( rTOX.GetTOXName() );
sSectNm = GetUniqueTOXBaseName( *rTOX.GetTOXType(), &sSectNm );
- pNew->SetTOXName(sSectNm);
- pNew->SwSection::SetName(sSectNm);
SwPaM aPam( rPos );
- SwSection* pSect = InsertSwSection( aPam, *pNew, pSet, false );
- if( pSect )
+ SwSectionData aSectionData( TOX_CONTENT_SECTION, sSectNm );
+ SwTOXBaseSection *const pNewSection = dynamic_cast<SwTOXBaseSection *>(
+ InsertSwSection( aPam, aSectionData, & rTOX, pSet, false ));
+ if (pNewSection)
{
- SwSectionNode* pSectNd = pSect->GetFmt()->GetSectionNode();
- SwSection* pCl = pNew;
- pSect->GetFmt()->Add( pCl );
- pSectNd->SetNewSection( pNew );
+ SwSectionNode *const pSectNd = pNewSection->GetFmt()->GetSectionNode();
+ pNewSection->SetTOXName(sSectNm); // rTOX may have had no name...
if( bExpand )
{
// OD 19.03.2003 #106329# - add value for 2nd parameter = true to
// indicate, that a creation of a new table of content has to be performed.
// Value of 1st parameter = default value.
- pNew->Update( 0, true );
+ pNewSection->Update( 0, true );
}
else if( 1 == rTOX.GetTitle().Len() && IsInReading() )
// insert title of TOX
@@ -396,24 +393,22 @@ const SwTOXBaseSection* SwDoc::InsertTableOf( const SwPosition& rPos,
SwTxtNode* pHeadNd = GetNodes().MakeTxtNode( aIdx,
GetTxtCollFromPool( RES_POOLCOLL_STANDARD ) );
- String sNm( pNew->GetTOXName() );
+ String sNm( pNewSection->GetTOXName() );
// ??Resource
sNm.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "_Head" ));
- SwSection aSect( TOX_HEADER_SECTION, sNm );
+ SwSectionData headerData( TOX_HEADER_SECTION, sNm );
SwNodeIndex aStt( *pHeadNd ); aIdx--;
SwSectionFmt* pSectFmt = MakeSectionFmt( 0 );
- GetNodes().InsertSection( aStt, *pSectFmt, aSect, &aIdx,
- TRUE, FALSE );
+ GetNodes().InsertTextSection(
+ aStt, *pSectFmt, headerData, 0, &aIdx, true, false);
}
}
- else
- delete pNew, pNew = 0;
EndUndo( UNDO_INSTOX, NULL );
- return pNew;
+ return pNewSection;
}
@@ -433,13 +428,10 @@ const SwTOXBaseSection* SwDoc::InsertTableOf( ULONG nSttNd, ULONG nEndNd,
pSectNd = pSectNd->StartOfSectionNode()->FindSectionNode();
}
- // create SectionNode around the Nodes
- SwTOXBaseSection* pNew = new SwTOXBaseSection( rTOX );
-
String sSectNm( rTOX.GetTOXName() );
sSectNm = GetUniqueTOXBaseName(*rTOX.GetTOXType(), &sSectNm);
- pNew->SetTOXName(sSectNm);
- pNew->SwSection::SetName(sSectNm);
+
+ SwSectionData aSectionData( TOX_CONTENT_SECTION, sSectNm );
SwNodeIndex aStt( GetNodes(), nSttNd ), aEnd( GetNodes(), nEndNd );
SwSectionFmt* pFmt = MakeSectionFmt( 0 );
@@ -448,20 +440,18 @@ const SwTOXBaseSection* SwDoc::InsertTableOf( ULONG nSttNd, ULONG nEndNd,
// --aEnd; // im InsertSection ist Ende inclusive
- pSectNd = GetNodes().InsertSection( aStt, *pFmt, *pNew, &aEnd );
- if( pSectNd )
+ SwSectionNode *const pNewSectionNode =
+ GetNodes().InsertTextSection(aStt, *pFmt, aSectionData, &rTOX, &aEnd);
+ if (!pNewSectionNode)
{
- SwSection* pCl = pNew;
- pFmt->Add( pCl );
- pSectNd->SetNewSection( pNew );
- }
- else
- {
- delete pNew, pNew = 0;
DelSectionFmt( pFmt );
+ return 0;
}
- return pNew;
+ SwTOXBaseSection *const pNewSection(
+ dynamic_cast<SwTOXBaseSection*>(& pNewSectionNode->GetSection()));
+ pNewSection->SetTOXName(sSectNm); // rTOX may have had no name...
+ return pNewSection;
}
/*--------------------------------------------------------------------
@@ -578,7 +568,7 @@ BOOL SwDoc::DeleteTOX( const SwTOXBase& rTOXBase, BOOL bDelNodes )
aSearchPam will contain the point where to move the cursors
to. */
SwPaM aSearchPam(*pMyNode->EndOfSectionNode());
- SwPosition aEndPos(*pStartNd->EndOfSectionNode(), 0);
+ SwPosition aEndPos(*pStartNd->EndOfSectionNode());
if (! aSearchPam.Move() /* no content node found */
|| *aSearchPam.GetPoint() >= aEndPos /* content node found
outside surrounding */
@@ -588,7 +578,7 @@ BOOL SwDoc::DeleteTOX( const SwTOXBase& rTOXBase, BOOL bDelNodes )
content node */
SwPaM aTmpPam(*pMyNode);
aSearchPam = aTmpPam;
- SwPosition aStartPos(*pStartNd, 0);
+ SwPosition aStartPos(*pStartNd);
if ( ! aSearchPam.Move(fnMoveBackward) /* no content node found */
|| *aSearchPam.GetPoint() <= aStartPos /* content node
@@ -599,7 +589,7 @@ BOOL SwDoc::DeleteTOX( const SwTOXBase& rTOXBase, BOOL bDelNodes )
/* There is no content node in the surrounding of
TOX'. Append text node behind TOX' section. */
- SwPosition aInsPos(*pMyNode->EndOfSectionNode(), 0);
+ SwPosition aInsPos(*pMyNode->EndOfSectionNode());
AppendTxtNode(aInsPos);
SwPaM aTmpPam1(aInsPos);
@@ -697,7 +687,7 @@ String SwDoc::GetUniqueTOXBaseName( const SwTOXType& rType,
if( 0 != ( pSectNd = (*pSectionFmtTbl)[ n ]->GetSectionNode( FALSE ) )&&
TOX_CONTENT_SECTION == (pSect = &pSectNd->GetSection())->GetType())
{
- const String& rNm = pSect->GetName();
+ const String& rNm = pSect->GetSectionName();
if( rNm.Match( aName ) == nNmLen )
{
// Nummer bestimmen und das Flag setzen
@@ -743,7 +733,7 @@ BOOL SwDoc::SetTOXBaseName(const SwTOXBase& rTOXBase, const String& rName)
if(bRet)
{
pTOX->SetTOXName(rName);
- pTOX->SwTOXBaseSection::SetName(rName);
+ pTOX->SetSectionName(rName);
SetModified();
}
return bRet;
@@ -776,11 +766,12 @@ const SwTxtNode* lcl_FindChapterNode( const SwNode& rNd, BYTE nLvl = 0 )
Beschreibung: Verzeichnis-Klasse
--------------------------------------------------------------------*/
-SwTOXBaseSection::SwTOXBaseSection( const SwTOXBase& rBase )
- : SwTOXBase( rBase ), SwSection( TOX_CONTENT_SECTION, aEmptyStr )
+SwTOXBaseSection::SwTOXBaseSection(SwTOXBase const& rBase, SwSectionFmt & rFmt)
+ : SwTOXBase( rBase )
+ , SwSection( TOX_CONTENT_SECTION, aEmptyStr, rFmt )
{
SetProtect( rBase.IsProtected() );
- SwSection::SetName( GetTOXName() );
+ SetSectionName( GetTOXName() );
}
@@ -962,12 +953,12 @@ void SwTOXBaseSection::Update(const SfxItemSet* pAttr,
// ??Resource
sNm.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "_Head" ));
- SwSection aSect( TOX_HEADER_SECTION, sNm );
+ SwSectionData headerData( TOX_HEADER_SECTION, sNm );
SwNodeIndex aStt( *pHeadNd ); aIdx--;
SwSectionFmt* pSectFmt = pDoc->MakeSectionFmt( 0 );
- pDoc->GetNodes().InsertSection( aStt, *pSectFmt, aSect, &aIdx,
- TRUE, FALSE );
+ pDoc->GetNodes().InsertTextSection(
+ aStt, *pSectFmt, headerData, 0, &aIdx, true, false);
}
// jetzt waere ein prima Zeitpunkt, um die Numerierung zu updaten
diff --git a/sw/source/core/doc/extinput.cxx b/sw/source/core/doc/extinput.cxx
index 2b2c809c3cb2..f627870932f9 100644
--- a/sw/source/core/doc/extinput.cxx
+++ b/sw/source/core/doc/extinput.cxx
@@ -54,6 +54,9 @@ SwExtTextInput::SwExtTextInput( const SwPaM& rPam, Ring* pRing )
SwExtTextInput::~SwExtTextInput()
{
+ SwDoc *const pDoc = GetDoc();
+ if (pDoc->IsInDtor()) { return; /* #i58606# */ }
+
SwTxtNode* pTNd = GetPoint()->nNode.GetNode().GetTxtNode();
if( pTNd )
{
@@ -69,7 +72,6 @@ SwExtTextInput::~SwExtTextInput()
// damit Undo / Redlining usw. richtig funktioniert,
// muss ueber die Doc-Schnittstellen gegangen werden !!!
- SwDoc* pDoc = GetDoc();
if(eInputLanguage != LANGUAGE_DONTKNOW)
{
// --> FME 2005-02-11 #i41974# Only set language attribute
diff --git a/sw/source/core/doc/htmltbl.cxx b/sw/source/core/doc/htmltbl.cxx
index e762de8489e3..a3e28fc0e425 100644
--- a/sw/source/core/doc/htmltbl.cxx
+++ b/sw/source/core/doc/htmltbl.cxx
@@ -377,32 +377,12 @@ USHORT SwHTMLTableLayout::GetBrowseWidth( const SwDoc& rDoc )
return (USHORT)pPageFrm->Prt().Width();
}
- // Sonst versuchen wir es ueber die ViewShell
- USHORT nWidth = GetBrowseWidthByVisArea( rDoc );
- if( !nWidth )
- {
- // Und wenn das auch nicht geht, gibt es noch die ActualSize an der
- // DocShell.
- if( rDoc.GetDocShell() && GetpApp() && GetpApp()->GetDefaultDevice() )
- {
- // this case shouldn't happen because the filter always waits until
- // a view has been created
-/*
- nWidth = (USHORT)Application::GetDefaultDevice()
- ->PixelToLogic( rDoc.GetDocShell()->GetActualSize(),
- MapMode( MAP_TWIP ) ).Width();
-*/
- ASSERT( nWidth, "No browse width available" );
- }
-#ifdef DBG_UTIL
- else
- {
- // und wenn das auch nicht klappt, gibt es zur Zeit keine Breite
- ASSERT( nWidth, "No browse width available" );
- }
-#endif
- }
- return nWidth;
+ // --> OD 2010-05-12 #i91658#
+ // Assertion removed which state that no browse width is available.
+ // Investigation reveals that all calls can handle the case that no browse
+ // width is provided.
+ return GetBrowseWidthByVisArea( rDoc );
+ // <--
}
USHORT SwHTMLTableLayout::GetBrowseWidthByTabFrm(
@@ -1859,7 +1839,7 @@ BOOL SwHTMLTableLayout::Resize( USHORT nAbsAvail, BOOL bRecalc,
// weil sond die Umschaltung von relativ nach absolut nicht funktioniert.
if( pDoc->GetRootFrm() && pDoc->get(IDocumentSettingAccess::BROWSE_MODE) )
{
- USHORT nVisAreaWidth = GetBrowseWidthByVisArea( *pDoc );
+ const USHORT nVisAreaWidth = GetBrowseWidthByVisArea( *pDoc );
if( nVisAreaWidth < nAbsAvail && !FindFlyFrmFmt() )
nAbsAvail = nVisAreaWidth;
}
diff --git a/sw/source/core/doc/number.cxx b/sw/source/core/doc/number.cxx
index d60abccddc21..7af292626f06 100644
--- a/sw/source/core/doc/number.cxx
+++ b/sw/source/core/doc/number.cxx
@@ -998,7 +998,15 @@ void SwNumRule::SetInvalidRule(BOOL bFlag)
for ( aIter = maTxtNodeList.begin(); aIter != maTxtNodeList.end(); ++aIter )
{
const SwTxtNode* pTxtNode = *aIter;
- aLists.insert( pTxtNode->GetDoc()->getListByName( pTxtNode->GetListId() ) );
+ // --> OD 2010-06-04 #i111681# - applying patch from cmc
+// aLists.insert( pTxtNode->GetDoc()->getListByName( pTxtNode->GetListId() ) );
+ SwList* pList = pTxtNode->GetDoc()->getListByName( pTxtNode->GetListId() );
+ ASSERT( pList, "<SwNumRule::SetInvalidRule(..)> - list at which the text node is registered at does not exist. This is a serious issue --> please inform OD.");
+ if ( pList )
+ {
+ aLists.insert( pList );
+ }
+ // <--
}
std::for_each( aLists.begin(), aLists.end(),
std::mem_fun( &SwList::InvalidateListTree ) );
diff --git a/sw/source/core/docnode/ndcopy.cxx b/sw/source/core/docnode/ndcopy.cxx
index 08b5038a5c0d..9c2ce7af3139 100644
--- a/sw/source/core/docnode/ndcopy.cxx
+++ b/sw/source/core/docnode/ndcopy.cxx
@@ -919,6 +919,12 @@ bool SwDoc::CopyImpl( SwPaM& rPam, SwPosition& rPos,
bool bCopyBookmarks = true;
BOOL bStartIsTxtNode = 0 != pSttTxtNd;
+ // #i104585# copy outline num rule to clipboard (for ASCII filter)
+ if (pDoc->IsClipBoard() && GetOutlineNumRule())
+ {
+ pDoc->SetOutlineNumRule(*GetOutlineNumRule());
+ }
+
// --> OD 2009-08-25 #i86492#
// Correct the search for a previous list:
// First search for non-outline numbering list. Then search for non-outline
diff --git a/sw/source/core/docnode/ndsect.cxx b/sw/source/core/docnode/ndsect.cxx
index acb0d6acd274..306560272c6f 100644
--- a/sw/source/core/docnode/ndsect.cxx
+++ b/sw/source/core/docnode/ndsect.cxx
@@ -137,7 +137,7 @@ bool lcl_IsInSameTblBox( SwNodes& _rNds,
return true;
}
-void lcl_CheckEmptyLayFrm( SwNodes& rNds, SwSection& rSect,
+void lcl_CheckEmptyLayFrm( SwNodes& rNds, SwSectionData& rSectionData,
const SwNode& rStt, const SwNode& rEnd )
{
SwNodeIndex aIdx( rStt );
@@ -151,12 +151,16 @@ void lcl_CheckEmptyLayFrm( SwNodes& rNds, SwSection& rSect,
!CheckNodesRange( rEnd, aIdx, TRUE ) ||
// OD 04.11.2003 #i21457#
!lcl_IsInSameTblBox( rNds, rEnd, false ))
- rSect.SetHidden( FALSE );
+ {
+ rSectionData.SetHidden( false );
+ }
}
}
-SwSection* SwDoc::InsertSwSection( const SwPaM& rRange, const SwSection& rNew,
- const SfxItemSet* pAttr, bool bUpdate )
+SwSection *
+SwDoc::InsertSwSection(SwPaM const& rRange, SwSectionData & rNewData,
+ SwTOXBase const*const pTOXBase,
+ SfxItemSet const*const pAttr, bool const bUpdate)
{
const SwNode* pPrvNd = 0;
USHORT nRegionRet = 0;
@@ -169,14 +173,15 @@ SwSection* SwDoc::InsertSwSection( const SwPaM& rRange, const SwSection& rNew,
// Teste ob das gesamte Dokument versteckt werden soll,
// koennen wir zur Zeit nicht !!!!
- if( rNew.IsHidden() && rRange.HasMark() )
+ if (rNewData.IsHidden() && rRange.HasMark())
{
const SwPosition *pStt = rRange.Start(), *pEnd = rRange.End();
if( !pStt->nContent.GetIndex() &&
pEnd->nNode.GetNode().GetCntntNode()->Len() ==
pEnd->nContent.GetIndex() )
{
- ::lcl_CheckEmptyLayFrm( GetNodes(), const_cast<SwSection&>(rNew),
+ ::lcl_CheckEmptyLayFrm( GetNodes(),
+ rNewData,
pStt->nNode.GetNode(),
pEnd->nNode.GetNode() );
}
@@ -186,7 +191,7 @@ SwSection* SwDoc::InsertSwSection( const SwPaM& rRange, const SwSection& rNew,
if( DoesUndo() )
{
ClearRedo();
- pUndoInsSect = new SwUndoInsSection( rRange, rNew, pAttr );
+ pUndoInsSect = new SwUndoInsSection(rRange, rNewData, pAttr, pTOXBase);
AppendUndo( pUndoInsSect );
DoUndo( FALSE );
}
@@ -216,7 +221,8 @@ SwSection* SwDoc::InsertSwSection( const SwPaM& rRange, const SwSection& rNew,
aEnd++;
--aEnd; // im InsertSection ist Ende inclusive
- pNewSectNode = GetNodes().InsertSection( aStt, *pFmt, rNew, &aEnd );
+ pNewSectNode = GetNodes().InsertTextSection(
+ aStt, *pFmt, rNewData, pTOXBase, & aEnd);
}
else
{
@@ -287,8 +293,8 @@ SwSection* SwDoc::InsertSwSection( const SwPaM& rRange, const SwSection& rNew,
pEndPos->nContent.Assign( pTNd, nCntnt );
}
}
- pNewSectNode = GetNodes().InsertSection( pSttPos->nNode, *pFmt, rNew,
- &pEndPos->nNode );
+ pNewSectNode = GetNodes().InsertTextSection(
+ pSttPos->nNode, *pFmt, rNewData, pTOXBase, &pEndPos->nNode);
}
}
else
@@ -297,11 +303,13 @@ SwSection* SwDoc::InsertSwSection( const SwPaM& rRange, const SwSection& rNew,
const SwCntntNode* pCNd = pPos->nNode.GetNode().GetCntntNode();
if( !pPos->nContent.GetIndex() )
{
- pNewSectNode = GetNodes().InsertSection( pPos->nNode, *pFmt, rNew, 0, TRUE );
+ pNewSectNode = GetNodes().InsertTextSection(
+ pPos->nNode, *pFmt, rNewData, pTOXBase, 0, true);
}
else if( pPos->nContent.GetIndex() == pCNd->Len() )
{
- pNewSectNode = GetNodes().InsertSection( pPos->nNode, *pFmt, rNew, 0, FALSE );
+ pNewSectNode = GetNodes().InsertTextSection(
+ pPos->nNode, *pFmt, rNewData, pTOXBase, 0, false);
}
else
{
@@ -310,7 +318,8 @@ SwSection* SwDoc::InsertSwSection( const SwPaM& rRange, const SwSection& rNew,
pUndoInsSect->SaveSplitNode( (SwTxtNode*)pCNd, TRUE );
}
SplitNode( *pPos, false );
- pNewSectNode = GetNodes().InsertSection( pPos->nNode, *pFmt, rNew, 0, TRUE );
+ pNewSectNode = GetNodes().InsertTextSection(
+ pPos->nNode, *pFmt, rNewData, pTOXBase, 0, true);
}
}
@@ -334,7 +343,7 @@ SwSection* SwDoc::InsertSwSection( const SwPaM& rRange, const SwSection& rNew,
}
// ist eine Condition gesetzt
- if( rNew.IsHidden() && rNew.GetCondition().Len() )
+ if (rNewData.IsHidden() && rNewData.GetCondition().Len())
{
// dann berechne bis zu dieser Position
SwCalc aCalc( *this );
@@ -368,7 +377,7 @@ SwSection* SwDoc::InsertSwSection( const SwPaM& rRange, const SwSection& rNew,
DoUndo( TRUE );
}
- if( rNew.IsLinkType() )
+ if (rNewData.IsLinkType())
{
pNewSectNode->GetSection().CreateLink( bUpdate ? CREATE_UPDATE : CREATE_CONNECT );
}
@@ -549,7 +558,7 @@ void SwDoc::DelSectionFmt( SwSectionFmt *pFmt, BOOL bDelNodes )
EndUndo(UNDO_DELSECTION, NULL);
return ;
}
- AppendUndo( new SwUndoDelSection( *pFmt ) );
+ AppendUndo( MakeUndoDelSection( *pFmt ) );
}
else if( bDelNodes && pIdx && &GetNodes() == &pIdx->GetNodes() &&
0 != (pSectNd = pIdx->GetNode().GetSectionNode() ))
@@ -609,9 +618,8 @@ void SwDoc::DelSectionFmt( SwSectionFmt *pFmt, BOOL bDelNodes )
SetModified();
}
-void SwDoc::ChgSection( USHORT nPos, const SwSection& rSect,
- const SfxItemSet* pAttr,
- sal_Bool bPreventLinkUpdate )
+void SwDoc::UpdateSection(sal_uInt16 const nPos, SwSectionData & rNewData,
+ SfxItemSet const*const pAttr, bool const bPreventLinkUpdate)
{
SwSectionFmt* pFmt = (*pSectionFmtTbl)[ nPos ];
SwSection* pSection = pFmt->GetSection();
@@ -619,7 +627,7 @@ void SwDoc::ChgSection( USHORT nPos, const SwSection& rSect,
/// remember hidden condition flag of SwSection before changes
bool bOldCondHidden = pSection->IsCondHidden() ? true : false;
- if( *pSection == rSect )
+ if (pSection->DataEquals(rNewData))
{
// die Attribute ueberpruefen
BOOL bOnlyAttrChg = FALSE;
@@ -647,7 +655,7 @@ void SwDoc::ChgSection( USHORT nPos, const SwSection& rSect,
if( DoesUndo() )
{
ClearRedo();
- AppendUndo( new SwUndoChgSection( *pFmt, TRUE ) );
+ AppendUndo( MakeUndoUpdateSection( *pFmt, true ) );
// --> FME 2004-10-13 #i32968#
// Inserting columns in the section causes MakeFrmFmt to put two
// objects of type SwUndoFrmFmt on the undo stack. We don't want them.
@@ -668,12 +676,19 @@ void SwDoc::ChgSection( USHORT nPos, const SwSection& rSect,
// versteckt werden soll, koennen wir zur Zeit nicht !!!!
const SwNodeIndex* pIdx = 0;
{
- const SwSectionNode* pSectNd;
- if( rSect.IsHidden() && 0 != (pIdx = pFmt->GetCntnt().GetCntntIdx() )
- && 0 != (pSectNd = pIdx->GetNode().GetSectionNode() ) )
+ if (rNewData.IsHidden())
{
- ::lcl_CheckEmptyLayFrm( GetNodes(), (SwSection&)rSect,
+ pIdx = pFmt->GetCntnt().GetCntntIdx();
+ if (pIdx)
+ {
+ const SwSectionNode* pSectNd =
+ pIdx->GetNode().GetSectionNode();
+ if (pSectNd)
+ {
+ ::lcl_CheckEmptyLayFrm( GetNodes(), rNewData,
*pSectNd, *pSectNd->EndOfSectionNode() );
+ }
+ }
}
}
@@ -681,7 +696,7 @@ void SwDoc::ChgSection( USHORT nPos, const SwSection& rSect,
if( DoesUndo() )
{
ClearRedo();
- AppendUndo( new SwUndoChgSection( *pFmt, FALSE ) );
+ AppendUndo( MakeUndoUpdateSection( *pFmt, false ) );
// --> FME 2004-10-13 #i32968#
// Inserting columns in the section causes MakeFrmFmt to put two
// objects of type SwUndoFrmFmt on the undo stack. We don't want them.
@@ -692,14 +707,14 @@ void SwDoc::ChgSection( USHORT nPos, const SwSection& rSect,
// #56167# Der LinkFileName koennte auch nur aus Separatoren bestehen
String sCompareString = sfx2::cTokenSeperator;
sCompareString += sfx2::cTokenSeperator;
- BOOL bUpdate = ( !pSection->IsLinkType() && rSect.IsLinkType() ) ||
- ( rSect.GetLinkFileName().Len() &&
- rSect.GetLinkFileName() != sCompareString &&
- rSect.GetLinkFileName() !=
- pSection->GetLinkFileName());
-
- String sSectName( rSect.GetName() );
- if( sSectName != pSection->GetName() )
+ const bool bUpdate =
+ (!pSection->IsLinkType() && rNewData.IsLinkType())
+ || ( rNewData.GetLinkFileName().Len()
+ && (rNewData.GetLinkFileName() != sCompareString)
+ && (rNewData.GetLinkFileName() != pSection->GetLinkFileName()));
+
+ String sSectName( rNewData.GetSectionName() );
+ if (sSectName != pSection->GetSectionName())
GetUniqueSectionName( &sSectName );
else
sSectName.Erase();
@@ -711,13 +726,15 @@ void SwDoc::ChgSection( USHORT nPos, const SwSection& rSect,
/// or it is set to the value of SwSection which is assigned to it.
/// Discussion with AMA results that the adjustment to the assignment operator
/// could be very risky -> see notes in bug #102894#.
- *pSection = rSect;
+ pSection->SetSectionData(rNewData);
if( pAttr )
pSection->GetFmt()->SetFmtAttr( *pAttr );
if( sSectName.Len() )
- pSection->SetName( sSectName );
+ {
+ pSection->SetSectionName( sSectName );
+ }
// ist eine Condition gesetzt
if( pSection->IsHidden() && pSection->GetCondition().Len() )
@@ -729,7 +746,7 @@ void SwDoc::ChgSection( USHORT nPos, const SwSection& rSect,
FldsToCalc( aCalc, pIdx->GetIndex(), USHRT_MAX );
/// OD 04.10.2002 #102894#
/// Because on using SwSection::operator=() to set up <pSection>
- /// with <rSect> and the above given note, the hidden condition flag
+ /// with <rNewData> and the above given note, the hidden condition flag
/// has to be set to FALSE, if hidden condition flag of <pFmt->GetSection()>
/// (SwSection before the changes) is FALSE (already saved in <bOldCondHidden>)
/// and new calculated condition is TRUE.
@@ -800,17 +817,18 @@ void lcl_DeleteFtn( SwSectionNode *pNd, ULONG nStt, ULONG nEnd )
}
}
-inline BOOL lcl_IsTOXSection( const SwSection& rSection )
+static inline bool lcl_IsTOXSection(SwSectionData const& rSectionData)
{
- return TOX_CONTENT_SECTION == rSection.GetType() ||
- TOX_HEADER_SECTION == rSection.GetType();
+ return (TOX_CONTENT_SECTION == rSectionData.GetType())
+ || (TOX_HEADER_SECTION == rSectionData.GetType());
}
-SwSectionNode* SwNodes::InsertSection( const SwNodeIndex& rNdIdx,
+SwSectionNode* SwNodes::InsertTextSection(SwNodeIndex const& rNdIdx,
SwSectionFmt& rSectionFmt,
- const SwSection& rSection,
- const SwNodeIndex* pEnde,
- BOOL bInsAtStart, BOOL bCreateFrms )
+ SwSectionData const& rSectionData,
+ SwTOXBase const*const pTOXBase,
+ SwNodeIndex const*const pEnde,
+ bool const bInsAtStart, bool const bCreateFrms)
{
SwNodeIndex aInsPos( rNdIdx );
if( !pEnde ) // kein Bereich also neue Section davor/hinter anlegen
@@ -821,7 +839,7 @@ SwSectionNode* SwNodes::InsertSection( const SwNodeIndex& rNdIdx,
if( bInsAtStart )
{
- if( !lcl_IsTOXSection( rSection ))
+ if (!lcl_IsTOXSection(rSectionData))
{
do {
aInsPos--;
@@ -833,15 +851,20 @@ SwSectionNode* SwNodes::InsertSection( const SwNodeIndex& rNdIdx,
{
SwNode* pNd;
aInsPos++;
- if( !lcl_IsTOXSection( rSection ))
+ if (!lcl_IsTOXSection(rSectionData))
+ {
while( aInsPos.GetIndex() < Count() - 1 &&
( pNd = &aInsPos.GetNode())->IsEndNode() &&
pNd->StartOfSectionNode()->IsSectionNode())
+ {
aInsPos++;
+ }
+ }
}
}
- SwSectionNode* pSectNd = new SwSectionNode( aInsPos, rSectionFmt );
+ SwSectionNode *const pSectNd =
+ new SwSectionNode(aInsPos, rSectionFmt, pTOXBase);
if( pEnde )
{
// Sonderfall fuer die Reader/Writer
@@ -908,7 +931,7 @@ SwSectionNode* SwNodes::InsertSection( const SwNodeIndex& rNdIdx,
}
new SwEndNode( aInsPos, *pSectNd );
- pSectNd->GetSection() = rSection;
+ pSectNd->GetSection().SetSectionData(rSectionData);
SwSectionFmt* pSectFmt = pSectNd->GetSection().GetFmt();
// Hier bietet sich als Optimierung an, vorhandene Frames nicht zu
@@ -998,17 +1021,28 @@ SwSectionNode* SwNode::FindSectionNode()
// SwSectionNode
//---------
-SwSectionNode::SwSectionNode( const SwNodeIndex& rIdx, SwSectionFmt& rFmt )
- : SwStartNode( rIdx, ND_SECTIONNODE )
+// ugly hack to make m_pSection const
+static SwSectionFmt &
+lcl_initParent(SwSectionNode & rThis, SwSectionFmt & rFmt)
{
- SwSectionNode* pParent = StartOfSectionNode()->FindSectionNode();
+ SwSectionNode *const pParent =
+ rThis.StartOfSectionNode()->FindSectionNode();
if( pParent )
{
// das Format beim richtigen Parent anmelden.
rFmt.SetDerivedFrom( pParent->GetSection().GetFmt() );
}
- pSection = new SwSection( CONTENT_SECTION, rFmt.GetName(), &rFmt );
+ return rFmt;
+}
+SwSectionNode::SwSectionNode(SwNodeIndex const& rIdx,
+ SwSectionFmt & rFmt, SwTOXBase const*const pTOXBase)
+ : SwStartNode( rIdx, ND_SECTIONNODE )
+ , m_pSection( (pTOXBase)
+ ? new SwTOXBaseSection(*pTOXBase, lcl_initParent(*this, rFmt))
+ : new SwSection( CONTENT_SECTION, rFmt.GetName(),
+ lcl_initParent(*this, rFmt) ) )
+{
// jetzt noch die Verbindung von Format zum Node setzen
// Modify unterdruecken, interresiert keinen
rFmt.LockModify();
@@ -1049,7 +1083,7 @@ SwFrm* SwClearDummies( SwFrm* pFrm )
SwSectionNode::~SwSectionNode()
{
{
- SwClientIter aIter( *(pSection->GetFmt()) );
+ SwClientIter aIter( *(m_pSection->GetFmt()) );
SwClient *pLast = aIter.GoStart();
while ( pLast )
{
@@ -1065,7 +1099,7 @@ SwSectionNode::~SwSectionNode()
}
SwDoc* pDoc = GetDoc();
- SwSectionFmt* pFmt = pSection->GetFmt();
+ SwSectionFmt* pFmt = m_pSection->GetFmt();
if( pFmt )
{
// das Attribut entfernen, weil die Section ihr Format loescht
@@ -1079,41 +1113,14 @@ SwSectionNode::~SwSectionNode()
// verhinder beim Loeschen aus der Undo/Redo-History einen rekursiven Aufruf
if( bUndo && &pDoc->GetNodes() != &GetNodes() )
pDoc->DoUndo( FALSE );
- DELETEZ( pSection );
pDoc->DoUndo( bUndo );
}
-// setze ein neues SectionObject. Erstmal nur gedacht fuer die
-// neuen VerzeichnisSections. Der geht ueber in den Besitz des Nodes!
-void SwSectionNode::SetNewSection( SwSection* pNewSection )
-{
- ASSERT( pNewSection, "ohne Pointer geht hier nichts" );
- if( pNewSection )
- {
- SwNode2Layout aN2L( *this );
-
- // einige Flags sollten ueber nommen werden!
- pNewSection->bProtectFlag = pSection->bProtectFlag;
- pNewSection->bHiddenFlag = pSection->bHiddenFlag;
- pNewSection->bHidden = pSection->bHidden;
- pNewSection->bCondHiddenFlag = pSection->bCondHiddenFlag;
-
- // The section frame contains a pointer to the section. That for,
- // the frame must be destroyed before deleting the section.
- DelFrms();
-
- delete pSection;
- pSection = pNewSection;
-
- ULONG nIdx = GetIndex();
- aN2L.RestoreUpperFrms( GetNodes(), nIdx, nIdx + 1 );
- }
-}
SwFrm *SwSectionNode::MakeFrm()
{
- pSection->bHiddenFlag = FALSE;
- return new SwSectionFrm( *pSection );
+ m_pSection->m_Data.SetHiddenFlag(false);
+ return new SwSectionFrm( *m_pSection );
}
//Methode erzeugt fuer den vorhergehenden Node alle Ansichten vom
@@ -1240,7 +1247,7 @@ void SwSectionNode::MakeFrms( SwNodeIndex* pIdxBehind, SwNodeIndex* pEndIdx )
*pIdxBehind = *this;
- pSection->bHiddenFlag = TRUE;
+ m_pSection->m_Data.SetHiddenFlag(true);
if( rNds.IsDocNodes() )
{
@@ -1264,10 +1271,10 @@ void SwSectionNode::DelFrms()
}
SwNodes& rNds = GetNodes();
- pSection->GetFmt()->DelFrms();
+ m_pSection->GetFmt()->DelFrms();
// unser Flag muessen wir noch aktualisieren
- pSection->bHiddenFlag = TRUE;
+ m_pSection->m_Data.SetHiddenFlag(true);
// Bug 30582: falls der Bereich in Fly oder TabellenBox ist, dann
// kann er nur "gehiddet" werden, wenn weiterer Content
@@ -1285,7 +1292,9 @@ void SwSectionNode::DelFrms()
!CheckNodesRange( *EndOfSectionNode(), aIdx, TRUE ) ||
// OD 04.11.2003 #i21457#
!lcl_IsInSameTblBox( rNds, *EndOfSectionNode(), false ))
- pSection->bHiddenFlag = FALSE;
+ {
+ m_pSection->m_Data.SetHiddenFlag(false);
+ }
}
}
}
@@ -1299,37 +1308,35 @@ SwSectionNode* SwSectionNode::MakeCopy( SwDoc* pDoc, const SwNodeIndex& rIdx ) c
SwSectionFmt* pSectFmt = pDoc->MakeSectionFmt( 0 );
pSectFmt->CopyAttrs( *GetSection().GetFmt() );
- SwSectionNode* pSectNd = new SwSectionNode( rIdx, *pSectFmt );
+ ::std::auto_ptr<SwTOXBase> pTOXBase;
+ if (TOX_CONTENT_SECTION == GetSection().GetType())
+ {
+ ASSERT( GetSection().ISA( SwTOXBaseSection ), "no TOXBaseSection!" );
+ SwTOXBaseSection const& rTBS(
+ dynamic_cast<SwTOXBaseSection const&>(GetSection()));
+ pTOXBase.reset( new SwTOXBase(rTBS, pDoc) );
+ }
+
+ SwSectionNode *const pSectNd =
+ new SwSectionNode(rIdx, *pSectFmt, pTOXBase.get());
SwEndNode* pEndNd = new SwEndNode( rIdx, *pSectNd );
SwNodeIndex aInsPos( *pEndNd );
// Werte uebertragen
- SwSection* pNewSect = pSectNd->pSection;
+ SwSection *const pNewSect = pSectNd->m_pSection.get();
- switch( GetSection().GetType() )
+ if (TOX_CONTENT_SECTION != GetSection().GetType())
{
- case TOX_CONTENT_SECTION:
- {
- ASSERT( GetSection().ISA( SwTOXBaseSection ), "keine TOXBaseSection!" );
- SwTOXBaseSection& rTOXSect = (SwTOXBaseSection&)GetSection();
- SwTOXBase aTmp( rTOXSect, pDoc );
-
- SwTOXBaseSection* pNew = new SwTOXBaseSection( aTmp );
-
- pNewSect = pNew;
- pSectFmt->Add( pNewSect );
- pSectNd->SetNewSection( pNew );
- }
- break;
-
- default:
// beim Move den Namen beibehalten
if( rNds.GetDoc() == pDoc && pDoc->IsCopyIsMove() )
- pNewSect->SetName( GetSection().GetName() );
+ {
+ pNewSect->SetSectionName( GetSection().GetSectionName() );
+ }
else
- pNewSect->SetName( pDoc->GetUniqueSectionName(
- &GetSection().GetName() ) );
- break;
+ {
+ pNewSect->SetSectionName(
+ pDoc->GetUniqueSectionName( &GetSection().GetSectionName() ));
+ }
}
@@ -1358,18 +1365,22 @@ SwSectionNode* SwSectionNode::MakeCopy( SwDoc* pDoc, const SwNodeIndex& rIdx ) c
: CREATE_NONE );
// falls als Server aus dem Undo kopiert wird, wieder eintragen
- if( pSection->IsServer() && pDoc->GetUndoNds() == &rNds )
+ if (m_pSection->IsServer() && (pDoc->GetUndoNds() == &rNds))
{
- pNewSect->SetRefObject( pSection->GetObject() );
+ pNewSect->SetRefObject( m_pSection->GetObject() );
pDoc->GetLinkManager().InsertServer( pNewSect->GetObject() );
}
+ // METADATA: copy xml:id; must be done after insertion of node
+ pSectFmt->RegisterAsCopyOf(*GetSection().GetFmt());
+
return pSectNd;
}
BOOL SwSectionNode::IsCntntHidden() const
{
- ASSERT( !pSection->IsHidden(), "That's simple: Hidden Section => Hidden Content" );
+ ASSERT( !m_pSection->IsHidden(),
+ "That's simple: Hidden Section => Hidden Content" );
SwNodeIndex aTmp( *this, 1 );
ULONG nEnd = EndOfSectionIndex();
while( aTmp < nEnd )
@@ -1395,7 +1406,7 @@ BOOL SwSectionNode::IsCntntHidden() const
void SwSectionNode::NodesArrChgd()
{
- SwSectionFmt* pFmt = pSection->GetFmt();
+ SwSectionFmt *const pFmt = m_pSection->GetFmt();
if( pFmt )
{
SwNodes& rNds = GetNodes();
@@ -1431,20 +1442,28 @@ void SwSectionNode::NodesArrChgd()
{
ASSERT( pDoc == GetDoc(),
"verschieben in unterschiedliche Documente?" );
- if( pSection->IsLinkType() ) // den Link austragen
- pSection->CreateLink( pDoc->GetRootFrm() ? CREATE_CONNECT
+ if (m_pSection->IsLinkType())
+ {
+ m_pSection->CreateLink( pDoc->GetRootFrm() ? CREATE_CONNECT
: CREATE_NONE );
+ }
- if( pSection->IsServer() ) // als Server austragen
- pDoc->GetLinkManager().InsertServer( pSection->GetObject() );
+ if (m_pSection->IsServer())
+ {
+ pDoc->GetLinkManager().InsertServer( m_pSection->GetObject() );
+ }
}
else
{
- if( CONTENT_SECTION != pSection->GetType() ) // den Link austragen
- pDoc->GetLinkManager().Remove( &pSection->GetBaseLink() );
+ if (CONTENT_SECTION != m_pSection->GetType())
+ {
+ pDoc->GetLinkManager().Remove( &m_pSection->GetBaseLink() );
+ }
- if( pSection->IsServer() ) // als Server austragen
- pDoc->GetLinkManager().RemoveServer( pSection->GetObject() );
+ if (m_pSection->IsServer())
+ {
+ pDoc->GetLinkManager().RemoveServer( m_pSection->GetObject() );
+ }
}
}
}
@@ -1467,7 +1486,7 @@ String SwDoc::GetUniqueSectionName( const String* pChkStr ) const
for( n = 0; n < pSectionFmtTbl->Count(); ++n )
if( 0 != ( pSectNd = (*pSectionFmtTbl)[ n ]->GetSectionNode( FALSE ) ))
{
- const String& rNm = pSectNd->GetSection().GetName();
+ const String& rNm = pSectNd->GetSection().GetSectionName();
if( rNm.Match( aName ) == nNmLen )
{
// Nummer bestimmen und das Flag setzen
diff --git a/sw/source/core/docnode/ndtbl.cxx b/sw/source/core/docnode/ndtbl.cxx
index 3131147cc7c2..b213eb1d075d 100644
--- a/sw/source/core/docnode/ndtbl.cxx
+++ b/sw/source/core/docnode/ndtbl.cxx
@@ -1265,10 +1265,72 @@ const SwTable* SwDoc::TextToTable( const std::vector< std::vector<SwNodeRange> >
return pNdTbl;
}
+SwNodeRange * SwNodes::ExpandRangeForTableBox(const SwNodeRange & rRange)
+{
+ SwNodeRange * pResult = NULL;
+ bool bChanged = false;
+
+ SwNodeIndex aNewStart = rRange.aStart;
+ SwNodeIndex aNewEnd = rRange.aEnd;
+
+ SwNodeIndex aEndIndex = rRange.aEnd;
+ SwNodeIndex aIndex = rRange.aStart;
+
+ while (aIndex < aEndIndex)
+ {
+ SwNode& rNode = aIndex.GetNode();
+
+ if (rNode.IsStartNode())
+ {
+ // advance aIndex to the end node of this start node
+ SwNode * pEndNode = rNode.EndOfSectionNode();
+ aIndex = *pEndNode;
+
+ if (aIndex > aNewEnd)
+ {
+ aNewEnd = aIndex;
+ bChanged = true;
+ }
+ }
+ else if (rNode.IsEndNode())
+ {
+ SwNode * pStartNode = rNode.StartOfSectionNode();
+ SwNodeIndex aStartIndex = *pStartNode;
+
+ if (aStartIndex < aNewStart)
+ {
+ aNewStart = aStartIndex;
+ bChanged = true;
+ }
+ }
+
+ if (aIndex < aEndIndex)
+ ++aIndex;
+ }
+
+ SwNode * pNode = &aIndex.GetNode();
+ while (pNode->IsEndNode())
+ {
+ SwNode * pStartNode = pNode->StartOfSectionNode();
+ SwNodeIndex aStartIndex(*pStartNode);
+ aNewStart = aStartIndex;
+ aNewEnd = aIndex;
+ bChanged = true;
+
+ ++aIndex;
+ pNode = &aIndex.GetNode();
+ }
+
+ if (bChanged)
+ pResult = new SwNodeRange(aNewStart, aNewEnd);
+
+ return pResult;
+}
+
/*-- 18.05.2006 08:23:28---------------------------------------------------
-----------------------------------------------------------------------*/
-SwTableNode* SwNodes::TextToTable( const std::vector< std::vector<SwNodeRange> >& rTableNodes,
+SwTableNode* SwNodes::TextToTable( const SwNodes::TableRanges_t & rTableNodes,
SwTableFmt* pTblFmt,
SwTableLineFmt* pLineFmt,
SwTableBoxFmt* pBoxFmt,
diff --git a/sw/source/core/docnode/node2lay.cxx b/sw/source/core/docnode/node2lay.cxx
index b0d6a4a931b5..cce0919e1e1a 100644
--- a/sw/source/core/docnode/node2lay.cxx
+++ b/sw/source/core/docnode/node2lay.cxx
@@ -233,8 +233,8 @@ SwLayoutFrm* SwNode2LayImpl::UpperFrm( SwFrm* &rpFrm, const SwNode &rNode )
{
// #137684#: pFrm could be a "dummy"-section
if( ((SwSectionFrm*)pFrm)->GetSection() &&
- ((SwSectionNode*)pNode)->GetSection() ==
- *((SwSectionFrm*)pFrm)->GetSection() )
+ (&((SwSectionNode*)pNode)->GetSection() ==
+ ((SwSectionFrm*)pFrm)->GetSection()) )
{
// OD 2004-06-02 #i22922# - consider columned sections
// 'Go down' the section frame as long as the layout frame
diff --git a/sw/source/core/docnode/nodes.cxx b/sw/source/core/docnode/nodes.cxx
index d2c979535dbb..1d387df76063 100644
--- a/sw/source/core/docnode/nodes.cxx
+++ b/sw/source/core/docnode/nodes.cxx
@@ -2061,11 +2061,19 @@ void SwNodes::_CopyNodes( const SwNodeRange& rRange,
// falls aEnd-1 auf keinem ContentNode steht, dann suche den vorherigen
aRg.aEnd--;
- while( (( pAktNode = (*this)[ aRg.aEnd ])->GetStartNode() &&
- !pAktNode->IsSectionNode() ) ||
- ( pAktNode->IsEndNode() &&
- ND_STARTNODE == pAktNode->pStartOfSection->GetNodeType()) )
- aRg.aEnd--;
+ // #i107142#: if aEnd is start node of a special section, do nothing.
+ // Otherwise this could lead to crash: going through all previous
+ // special section nodes and then one before the first.
+ if (aRg.aEnd.GetNode().StartOfSectionIndex() != 0)
+ {
+ while( (( pAktNode = (*this)[ aRg.aEnd ])->GetStartNode() &&
+ !pAktNode->IsSectionNode() ) ||
+ ( pAktNode->IsEndNode() &&
+ ND_STARTNODE == pAktNode->pStartOfSection->GetNodeType()) )
+ {
+ aRg.aEnd--;
+ }
+ }
aRg.aEnd++;
// wird im selben Array's verschoben, dann ueberpruefe die Einfuegepos.
diff --git a/sw/source/core/docnode/section.cxx b/sw/source/core/docnode/section.cxx
index 653ce6794e7e..2d54cb88f2e6 100644
--- a/sw/source/core/docnode/section.cxx
+++ b/sw/source/core/docnode/section.cxx
@@ -51,9 +51,7 @@
#include <frmtool.hxx>
#include <editsh.hxx>
#include <hints.hxx>
-#ifndef _DOCSH_HXX
#include <docsh.hxx>
-#endif
#include <ndtxt.hxx>
#include <section.hxx>
#include <swserv.hxx>
@@ -70,6 +68,7 @@
#include <fmteiro.hxx>
// <--
#include <swerror.h>
+#include <unosection.hxx>
using namespace ::com::sun::star;
@@ -115,39 +114,126 @@ SV_IMPL_PTRARR( SwSections, SwSection*)
SV_IMPL_PTRARR(SwSectionFmts,SwSectionFmt*)
+SwSectionData::SwSectionData(SectionType const eType, String const& rName)
+ : m_eType(eType)
+ , m_sSectionName(rName)
+ , m_bHiddenFlag(false)
+ , m_bProtectFlag(false)
+ // --> FME 2004-06-22 #114856# edit in readonly sections
+ , m_bEditInReadonlyFlag(false)
+ // <--
+ , m_bHidden(false)
+ , m_bCondHiddenFlag(true)
+ , m_bConnectFlag(true)
+{
+}
-SwSection::SwSection( SectionType eTyp, const String& rName,
- SwSectionFmt* pFmt )
- : SwClient( pFmt ), sSectionNm( rName ),
- eType( eTyp )
+// this must have the same semantics as operator=()
+SwSectionData::SwSectionData(SwSection const& rSection)
+ : m_eType(rSection.GetType())
+ , m_sSectionName(rSection.GetSectionName())
+ , m_sCondition(rSection.GetCondition())
+ , m_sLinkFileName(rSection.GetLinkFileName())
+ , m_sLinkFilePassword(rSection.GetLinkFilePassword())
+ , m_Password(rSection.GetPassword())
+ , m_bHiddenFlag(rSection.IsHiddenFlag())
+ , m_bProtectFlag(rSection.IsProtect())
+ // --> FME 2004-06-22 #114856# edit in readonly sections
+ , m_bEditInReadonlyFlag(rSection.IsEditInReadonly())
+ // <--
+ , m_bHidden(rSection.IsHidden())
+ , m_bCondHiddenFlag(true)
+ , m_bConnectFlag(rSection.IsConnectFlag())
{
- bHidden = FALSE;
- bHiddenFlag = FALSE;
- bProtectFlag = FALSE;
+}
+
+// this must have the same semantics as operator=()
+SwSectionData::SwSectionData(SwSectionData const& rOther)
+ : m_eType(rOther.m_eType)
+ , m_sSectionName(rOther.m_sSectionName)
+ , m_sCondition(rOther.m_sCondition)
+ , m_sLinkFileName(rOther.m_sLinkFileName)
+ , m_sLinkFilePassword(rOther.m_sLinkFilePassword)
+ , m_Password(rOther.m_Password)
+ , m_bHiddenFlag(rOther.m_bHiddenFlag)
+ , m_bProtectFlag(rOther.m_bProtectFlag)
// --> FME 2004-06-22 #114856# edit in readonly sections
- bEditInReadonlyFlag = FALSE;
+ , m_bEditInReadonlyFlag(rOther.m_bEditInReadonlyFlag)
// <--
- bCondHiddenFlag = TRUE;
- bConnectFlag = TRUE;
+ , m_bHidden(rOther.m_bHidden)
+ , m_bCondHiddenFlag(true)
+ , m_bConnectFlag(rOther.m_bConnectFlag)
+{
+}
+
+// the semantics here are weird for reasons of backward compatibility
+SwSectionData & SwSectionData::operator= (SwSectionData const& rOther)
+{
+ m_eType = rOther.m_eType;
+ m_sSectionName = rOther.m_sSectionName;
+ m_sCondition = rOther.m_sCondition;
+ m_sLinkFileName = rOther.m_sLinkFileName;
+ m_sLinkFilePassword = rOther.m_sLinkFilePassword;
+ m_bConnectFlag = rOther.m_bConnectFlag;
+ m_Password = rOther.m_Password;
+
+ m_bEditInReadonlyFlag = rOther.m_bEditInReadonlyFlag;
+ m_bProtectFlag = rOther.m_bProtectFlag;
+
+ m_bHidden = rOther.m_bHidden;
+ // FIXME: old code did not assign m_bHiddenFlag ?
+ // FIXME: why should m_bCondHiddenFlag always default to true?
+ m_bCondHiddenFlag = true;
- SwSectionPtr pParentSect = GetParent();
+ return *this;
+}
+
+// the semantics here are weird for reasons of backward compatibility
+bool SwSectionData::operator==(SwSectionData const& rOther) const
+{
+ return (m_eType == rOther.m_eType)
+ && (m_sSectionName == rOther.m_sSectionName)
+ && (m_sCondition == rOther.m_sCondition)
+ && (m_bHidden == rOther.m_bHidden)
+ && (m_bProtectFlag == rOther.m_bProtectFlag)
+ && (m_bEditInReadonlyFlag == rOther.m_bEditInReadonlyFlag)
+ && (m_sLinkFileName == rOther.m_sLinkFileName)
+ && (m_sLinkFilePassword == rOther.m_sLinkFilePassword)
+ && (m_Password == rOther.m_Password);
+ // FIXME: old code ignored m_bCondHiddenFlag m_bHiddenFlag m_bConnectFlag
+}
+
+// SwSection ===========================================================
+
+SwSection::SwSection(
+ SectionType const eType, String const& rName, SwSectionFmt & rFormat)
+ : SwClient(& rFormat)
+ , m_Data(eType, rName)
+{
+ SwSection *const pParentSect = GetParent();
if( pParentSect )
{
if( pParentSect->IsHiddenFlag() )
- SetHidden( TRUE );
+ {
+ SetHidden( true );
+ }
- _SetProtectFlag( pParentSect->IsProtectFlag() );
+ m_Data.SetProtectFlag( pParentSect->IsProtectFlag() );
// --> FME 2004-06-22 #114856# edit in readonly sections
- _SetEditInReadonlyFlag( pParentSect->IsEditInReadonlyFlag() );
+ m_Data.SetEditInReadonlyFlag( pParentSect->IsEditInReadonlyFlag() );
// <--
}
- if( pFmt && !bProtectFlag )
- _SetProtectFlag( pFmt->GetProtect().IsCntntProtected() );
+ if (!m_Data.IsProtectFlag())
+ {
+ m_Data.SetProtectFlag( rFormat.GetProtect().IsCntntProtected() );
+ }
// --> FME 2004-06-22 #114856# edit in readonly sections
- if ( pFmt && !bEditInReadonlyFlag )
- _SetEditInReadonlyFlag( pFmt->GetEditInReadonly().GetValue() );
+ if (!m_Data.IsEditInReadonlyFlag())
+ {
+ m_Data.SetEditInReadonlyFlag( rFormat.GetEditInReadonly().GetValue() );
+ }
// <--
}
@@ -170,11 +256,15 @@ SwSection::~SwSection()
{
pFmt->Remove( this ); // austragen,
- if( CONTENT_SECTION != eType ) // den Link austragen
- pDoc->GetLinkManager().Remove( refLink );
+ if (CONTENT_SECTION != m_Data.GetType())
+ {
+ pDoc->GetLinkManager().Remove( m_RefLink );
+ }
- if( refObj.Is() ) // als Server austragen
- pDoc->GetLinkManager().RemoveServer( &refObj );
+ if (m_RefObj.Is())
+ {
+ pDoc->GetLinkManager().RemoveServer( &m_RefObj );
+ }
// ist die Section der letzte Client im Format, kann dieses
// geloescht werden
@@ -190,78 +280,56 @@ SwSection::~SwSection()
pDoc->DoUndo( bUndo );
}
}
- if( refObj.Is() )
- refObj->Closed();
+ if (m_RefObj.Is())
+ {
+ m_RefObj->Closed();
+ }
}
-
-SwSection& SwSection::operator=( const SwSection& rCpy )
+void SwSection::SetSectionData(SwSectionData const& rData)
{
- sSectionNm = rCpy.sSectionNm;
- sCondition = rCpy.sCondition;
- sLinkFileName = rCpy.GetLinkFileName();
- SetLinkFilePassWd( rCpy.GetLinkFilePassWd() );
- SetConnectFlag( rCpy.IsConnectFlag() );
- SetPasswd( rCpy.GetPasswd() );
-
- eType = rCpy.eType;
-
- if( !GetFmt() )
+ bool const bOldHidden( m_Data.IsHidden() );
+ m_Data = rData;
+ // now update format and reflink with new data
+// SetLinkFileName(m_Data.GetLinkFileName()); // old code did not do this?
+ // next 2 may actually overwrite m_Data.m_b{Protect,EditInReadonly}Flag
+ // in Modify, which should result in same flag value as the old code!
+ SetProtect(m_Data.IsProtectFlag());
+ SetEditInReadonly(m_Data.IsEditInReadonlyFlag());
+ if (bOldHidden != m_Data.IsHidden()) // check if changed...
{
- SetProtect( rCpy.IsProtect() );
- // --> FME 2004-06-22 #114856# edit in readonly sections
- SetEditInReadonly( rCpy.IsEditInReadonly() );
- // <--
+ ImplSetHiddenFlag(m_Data.IsHidden(), m_Data.IsCondHidden());
}
- else if( rCpy.GetFmt() )
- {
- _SetProtectFlag( rCpy.bProtectFlag );
- // --> FME 2004-06-22 #114856# edit in readonly sections
- _SetEditInReadonlyFlag( rCpy.bEditInReadonlyFlag );
- // <--
- }
- else
- {
- SetProtect( rCpy.bProtectFlag );
- // --> FME 2004-06-22 #114856# edit in readonly sections
- SetEditInReadonly( rCpy.bEditInReadonlyFlag );
- // <--
- }
-
- bCondHiddenFlag = TRUE; // sollte immer defaultet werden
- SetHidden( rCpy.bHidden );
-
- return *this;
}
-
-BOOL SwSection::operator==( const SwSection& rCmp ) const
+bool SwSection::DataEquals(SwSectionData const& rCmp) const
{
- return sSectionNm == rCmp.sSectionNm &&
- sCondition == rCmp.sCondition &&
- eType == rCmp.eType &&
- bHidden == rCmp.bHidden &&
- IsProtect() == rCmp.IsProtect() &&
- // --> FME 2004-06-22 #114856# edit in readonly sections
- IsEditInReadonly() == rCmp.IsEditInReadonly() &&
- // <--
- GetLinkFileName() == rCmp.GetLinkFileName() &&
- GetLinkFilePassWd() == rCmp.GetLinkFilePassWd() &&
- GetPasswd() == rCmp.GetPasswd() &&
- ( !GetFmt() || !rCmp.GetFmt() || GetFmt() == rCmp.GetFmt());
+ // note that the old code compared the flags of the parameter with the
+ // format attributes of this; the following mess should do the same...
+ (void) GetLinkFileName(); // updates m_sLinkFileName
+ bool const bProtect(m_Data.IsProtectFlag());
+ bool const bEditInReadonly(m_Data.IsEditInReadonlyFlag());
+ const_cast<SwSection*>(this)->m_Data.SetProtectFlag(IsProtect());
+ const_cast<SwSection*>(this)->m_Data
+ .SetEditInReadonlyFlag(IsEditInReadonly());
+ bool const bResult( m_Data == rCmp );
+ const_cast<SwSection*>(this)->m_Data.SetProtectFlag(bProtect);
+ const_cast<SwSection*>(this)->m_Data.SetEditInReadonlyFlag(bEditInReadonly);
+ return bResult;
}
-void SwSection::_SetHiddenFlag( BOOL bTmpHidden, BOOL bCondition )
+void SwSection::ImplSetHiddenFlag(bool const bTmpHidden, bool const bCondition)
{
SwSectionFmt* pFmt = GetFmt();
+ ASSERT(pFmt, "ImplSetHiddenFlag: no format?");
if( pFmt )
{
- BOOL bHide = bTmpHidden && bCondition;
+ const bool bHide = bTmpHidden && bCondition;
- if( bHide ) // die Nodes also "verstecken"
+ if (bHide) // should be hidden
{
- if( !bHiddenFlag ) // ist nicht versteckt
+ if (!m_Data.IsHiddenFlag()) // is not hidden
{
// wie sieht es mit dem Parent aus, ist der versteckt ?
// (eigentlich muesste das vom bHiddenFlag angezeigt werden!)
@@ -274,7 +342,7 @@ void SwSection::_SetHiddenFlag( BOOL bTmpHidden, BOOL bCondition )
pFmt->DelFrms();
}
}
- else if( bHiddenFlag ) // die Nodes wieder anzeigen
+ else if (m_Data.IsHiddenFlag()) // show Nodes again
{
// alle Frames sichtbar machen ( Childs Sections werden vom
// MakeFrms beruecksichtigt). Aber nur wenn die ParentSection
@@ -304,57 +372,76 @@ BOOL SwSection::CalcHiddenFlag() const
return FALSE;
}
-BOOL SwSection::_IsProtect() const
+bool SwSection::IsProtect() const
{
- return GetFmt()->GetProtect().IsCntntProtected();
+ SwSectionFmt *const pFmt( GetFmt() );
+ ASSERT(pFmt, "SwSection::IsProtect: no format?");
+ return (pFmt)
+ ? pFmt->GetProtect().IsCntntProtected()
+ : IsProtectFlag();
}
// --> FME 2004-06-22 #114856# edit in readonly sections
-BOOL SwSection::_IsEditInReadonly() const
+bool SwSection::IsEditInReadonly() const
{
- return GetFmt()->GetEditInReadonly().GetValue();
+ SwSectionFmt *const pFmt( GetFmt() );
+ ASSERT(pFmt, "SwSection::IsEditInReadonly: no format?");
+ return (pFmt)
+ ? pFmt->GetEditInReadonly().GetValue()
+ : IsEditInReadonlyFlag();
}
// <--
-void SwSection::SetHidden( BOOL bFlag )
+void SwSection::SetHidden(bool const bFlag)
{
- if( !bHidden == !bFlag )
+ if (!m_Data.IsHidden() == !bFlag)
return;
- bHidden = bFlag;
- _SetHiddenFlag( bHidden, bCondHiddenFlag );
+ m_Data.SetHidden(bFlag);
+ ImplSetHiddenFlag(bFlag, m_Data.IsCondHidden());
}
-void SwSection::SetProtect( BOOL bFlag )
+void SwSection::SetProtect(bool const bFlag)
{
- if( GetFmt() )
+ SwSectionFmt *const pFormat( GetFmt() );
+ ASSERT(pFormat, "SwSection::SetProtect: no format?");
+ if (pFormat)
{
SvxProtectItem aItem( RES_PROTECT );
aItem.SetCntntProtect( (BOOL)bFlag );
- GetFmt()->SetFmtAttr( aItem );
+ pFormat->SetFmtAttr( aItem );
+ // note: this will call m_Data.SetProtectFlag via Modify!
}
else
- bProtectFlag = bFlag;
+ {
+ m_Data.SetProtectFlag(bFlag);
+ }
}
// --> FME 2004-06-22 #114856# edit in readonly sections
-void SwSection::SetEditInReadonly( BOOL bFlag )
+void SwSection::SetEditInReadonly(bool const bFlag)
{
- if( GetFmt() )
+ SwSectionFmt *const pFormat( GetFmt() );
+ ASSERT(pFormat, "SwSection::SetEditInReadonly: no format?");
+ if (pFormat)
{
SwFmtEditInReadonly aItem;
aItem.SetValue( (BOOL)bFlag );
- GetFmt()->SetFmtAttr( aItem );
+ pFormat->SetFmtAttr( aItem );
+ // note: this will call m_Data.SetEditInReadonlyFlag via Modify!
}
else
- bEditInReadonlyFlag = bFlag;
+ {
+ m_Data.SetEditInReadonlyFlag(bFlag);
+ }
}
// <--
void SwSection::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew )
{
- BOOL bRemake = FALSE, bUpdateFtn = FALSE;
+ bool bRemake = false;
+ bool bUpdateFtn = false;
switch( pOld ? pOld->Which() : pNew ? pNew->Which() : 0 )
{
case RES_ATTRSET_CHG:
@@ -366,7 +453,8 @@ void SwSection::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew )
if( SFX_ITEM_SET == pNewSet->GetItemState(
RES_PROTECT, FALSE, &pItem ) )
{
- _SetProtectFlag( ((SvxProtectItem*)pItem)->IsCntntProtected() );
+ m_Data.SetProtectFlag( static_cast<SvxProtectItem const*>(pItem)
+ ->IsCntntProtected() );
pNewSet->ClearItem( RES_PROTECT );
pOldSet->ClearItem( RES_PROTECT );
}
@@ -375,7 +463,8 @@ void SwSection::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew )
if( SFX_ITEM_SET == pNewSet->GetItemState(
RES_EDIT_IN_READONLY, FALSE, &pItem ) )
{
- _SetEditInReadonlyFlag( ((SwFmtEditInReadonly*)pItem)->GetValue() );
+ m_Data.SetEditInReadonlyFlag(
+ static_cast<SwFmtEditInReadonly const*>(pItem)->GetValue());
pNewSet->ClearItem( RES_EDIT_IN_READONLY );
pOldSet->ClearItem( RES_EDIT_IN_READONLY );
}
@@ -385,7 +474,9 @@ void SwSection::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew )
RES_FTN_AT_TXTEND, FALSE, &pItem ) ||
SFX_ITEM_SET == pNewSet->GetItemState(
RES_END_AT_TXTEND, FALSE, &pItem ))
- bUpdateFtn = TRUE;
+ {
+ bUpdateFtn = true;
+ }
if( !pNewSet->Count() )
return;
@@ -395,7 +486,8 @@ void SwSection::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew )
case RES_PROTECT:
if( pNew )
{
- BOOL bNewFlag = ((SvxProtectItem*)pNew)->IsCntntProtected();
+ bool bNewFlag =
+ static_cast<SvxProtectItem*>(pNew)->IsCntntProtected();
if( !bNewFlag )
{
// Abschalten: teste ob nicht vielleich ueber die Parents
@@ -404,32 +496,34 @@ void SwSection::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew )
do {
if( pSect->IsProtect() )
{
- bNewFlag = TRUE;
+ bNewFlag = true;
break;
}
- } while( 0 != ( pSect = pSect->GetParent()) );
+ pSect = pSect->GetParent();
+ } while (pSect);
}
- _SetProtectFlag( bNewFlag );
+ m_Data.SetProtectFlag( bNewFlag );
}
return;
// --> FME 2004-06-22 #114856# edit in readonly sections
case RES_EDIT_IN_READONLY:
if( pNew )
{
- BOOL bNewFlag = ((SwFmtEditInReadonly*)pNew)->GetValue();
- _SetEditInReadonlyFlag( bNewFlag );
+ const bool bNewFlag =
+ static_cast<SwFmtEditInReadonly*>(pNew)->GetValue();
+ m_Data.SetEditInReadonlyFlag( bNewFlag );
}
return;
// <--
case RES_SECTION_HIDDEN:
- bHiddenFlag = TRUE;
+ m_Data.SetHiddenFlag(true);
return;
case RES_SECTION_NOT_HIDDEN:
case RES_SECTION_RESETHIDDENFLAG:
- bHiddenFlag = bHidden && bCondHiddenFlag;
+ m_Data.SetHiddenFlag( m_Data.IsHidden() && m_Data.IsCondHidden() );
return;
case RES_COL:
@@ -438,12 +532,16 @@ void SwSection::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew )
case RES_FTN_AT_TXTEND:
if( pNew && pOld )
- bUpdateFtn = TRUE;
+ {
+ bUpdateFtn = true;
+ }
break;
case RES_END_AT_TXTEND:
if( pNew && pOld )
- bUpdateFtn = TRUE;
+ {
+ bUpdateFtn = true;
+ }
break;
}
@@ -464,38 +562,38 @@ void SwSection::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew )
void SwSection::SetRefObject( SwServerObject* pObj )
{
- refObj = pObj;
+ m_RefObj = pObj;
}
-void SwSection::SetCondHidden( BOOL bFlag )
+void SwSection::SetCondHidden(bool const bFlag)
{
- if( !bCondHiddenFlag == !bFlag )
+ if (!m_Data.IsCondHidden() == !bFlag)
return;
- bCondHiddenFlag = bFlag;
- _SetHiddenFlag( bHidden, bCondHiddenFlag );
+ m_Data.SetCondHidden(bFlag);
+ ImplSetHiddenFlag(m_Data.IsHidden(), bFlag);
}
// setze/erfrage den gelinkten FileNamen
const String& SwSection::GetLinkFileName() const
{
- if( refLink.Is() )
+ if (m_RefLink.Is())
{
String sTmp;
- switch( eType )
+ switch (m_Data.GetType())
{
case DDE_LINK_SECTION:
- sTmp = refLink->GetLinkSourceName();
+ sTmp = m_RefLink->GetLinkSourceName();
break;
case FILE_LINK_SECTION:
{
String sRange, sFilter;
- if( refLink->GetLinkManager() &&
- refLink->GetLinkManager()->GetDisplayNames(
- refLink, 0, &sTmp, &sRange, &sFilter ) )
+ if (m_RefLink->GetLinkManager() &&
+ m_RefLink->GetLinkManager()->GetDisplayNames(
+ m_RefLink, 0, &sTmp, &sRange, &sFilter ))
{
( sTmp += sfx2::cTokenSeperator ) += sFilter;
( sTmp += sfx2::cTokenSeperator ) += sRange;
@@ -505,26 +603,29 @@ const String& SwSection::GetLinkFileName() const
// ist die Section im UndoNodesArray, dann steht
// der Link nicht im LinkManager, kann also auch nicht
// erfragt werden. Dann returne den akt. Namen
- return sLinkFileName;
+ return m_Data.GetLinkFileName();
}
}
break;
default: break;
}
- ((SwSection*)this)->sLinkFileName = sTmp;
+ const_cast<SwSection*>(this)->m_Data.SetLinkFileName(sTmp);
}
- return sLinkFileName;
+ return m_Data.GetLinkFileName();
}
-void SwSection::SetLinkFileName( const String& rNew, const String* pPassWd )
+void SwSection::SetLinkFileName(const String& rNew, String const*const pPassWd)
{
- if( refLink.Is() )
- refLink->SetLinkSourceName( rNew );
- else
- sLinkFileName = rNew;
+ if (m_RefLink.Is())
+ {
+ m_RefLink->SetLinkSourceName( rNew );
+ }
+ m_Data.SetLinkFileName(rNew);
if( pPassWd )
- SetLinkFilePassWd( *pPassWd );
+ {
+ SetLinkFilePassword( *pPassWd );
+ }
}
// falls es ein gelinkter Bereich war, dann muessen alle
@@ -563,6 +664,8 @@ const SwTOXBase* SwSection::GetTOXBase() const
return pRet;
}
+// SwSectionFmt ========================================================
+
SwSectionFmt::SwSectionFmt( SwSectionFmt* pDrvdFrm, SwDoc *pDoc )
: SwFrmFmt( pDoc->GetAttrPool(), sSectionFmtNm, pDrvdFrm )
{
@@ -594,7 +697,7 @@ SwSectionFmt::~SwSectionFmt()
if( !pParentSect || !pParentSect->IsHiddenFlag() )
{
// Nodes wieder anzeigen
- rSect.SetHidden( FALSE );
+ rSect.SetHidden(false);
}
}
SwClientIter aIter( *this );
@@ -621,7 +724,7 @@ SwSectionFmt::~SwSectionFmt()
}
-SwSectionPtr SwSectionFmt::_GetSection() const
+SwSection * SwSectionFmt::GetSection() const
{
if( GetDepends() )
{
@@ -908,7 +1011,8 @@ extern "C" {
const SwSectionPtr pFSect = *(SwSectionPtr*)pFirst;
const SwSectionPtr pSSect = *(SwSectionPtr*)pSecond;
ASSERT( pFSect && pSSect, "ungueltige Sections" );
- StringCompare eCmp = pFSect->GetName().CompareTo( pSSect->GetName() );
+ StringCompare const eCmp =
+ pFSect->GetSectionName().CompareTo( pSSect->GetSectionName() );
return eCmp == COMPARE_EQUAL ? 0
: eCmp == COMPARE_LESS ? 1 : -1;
}
@@ -923,7 +1027,7 @@ USHORT SwSectionFmt::GetChildSections( SwSections& rArr,
if( GetDepends() )
{
- SwClientIter aIter( *(SwSectionFmt*)this );
+ SwClientIter aIter( *this );
SwClient * pLast;
const SwNodeIndex* pIdx;
for( pLast = aIter.First(TYPE(SwSectionFmt)); pLast; pLast = aIter.Next() )
@@ -979,7 +1083,7 @@ void SwSectionFmt::UpdateParent() // Parent wurde veraendert
// --> FME 2004-06-22 #114856# edit in readonly sections
const SwFmtEditInReadonly* pEditInReadonly = 0;
// <--
- int bIsHidden = FALSE;
+ bool bIsHidden = false;
SwClientIter aIter( *this );
SwClient * pLast = aIter.GoStart();
@@ -1008,16 +1112,20 @@ void SwSectionFmt::UpdateParent() // Parent wurde veraendert
bIsHidden = pSection->IsHidden();
}
}
- if( pProtect->IsCntntProtected() !=
- pSection->IsProtectFlag() )
+ if (!pProtect->IsCntntProtected() !=
+ !pSection->IsProtectFlag())
+ {
pLast->Modify( (SfxPoolItem*)pProtect,
(SfxPoolItem*)pProtect );
+ }
// --> FME 2004-06-22 #114856# edit in readonly sections
- if ( pEditInReadonly->GetValue() !=
- pSection->IsEditInReadonlyFlag() )
+ if (!pEditInReadonly->GetValue() !=
+ !pSection->IsEditInReadonlyFlag())
+ {
pLast->Modify( (SfxPoolItem*)pEditInReadonly,
(SfxPoolItem*)pEditInReadonly );
+ }
// <--
if( bIsHidden == pSection->IsHiddenFlag() )
@@ -1054,7 +1162,7 @@ void SwSectionFmt::UpdateParent() // Parent wurde veraendert
}
-SwSectionNode* SwSectionFmt::GetSectionNode( BOOL bAlways )
+SwSectionNode* SwSectionFmt::GetSectionNode(bool const bAlways)
{
const SwNodeIndex* pIdx = GetCntnt(FALSE).GetCntntIdx();
if( pIdx && ( bAlways || &pIdx->GetNodes() == &GetDoc()->GetNodes() ))
@@ -1076,6 +1184,49 @@ const SwSection* SwSectionFmt::GetGlobalDocSection() const
return 0;
}
+// sw::Metadatable
+::sfx2::IXmlIdRegistry& SwSectionFmt::GetRegistry()
+{
+ return GetDoc()->GetXmlIdRegistry();
+}
+
+bool SwSectionFmt::IsInClipboard() const
+{
+ return GetDoc()->IsClipBoard();
+}
+
+bool SwSectionFmt::IsInUndo() const
+{
+ return !IsInNodesArr();
+}
+
+bool SwSectionFmt::IsInContent() const
+{
+ SwNodeIndex const*const pIdx = GetCntnt(FALSE).GetCntntIdx();
+ OSL_ENSURE(pIdx, "SwSectionFmt::IsInContent: no index?");
+ return (pIdx) ? !GetDoc()->IsInHeaderFooter(*pIdx) : true;
+}
+
+// n.b.: if the section format represents an index, then there is both a
+// SwXDocumentIndex and a SwXTextSection instance for this single core object.
+// these two can both implement XMetadatable and forward to the same core
+// section format. but here only one UNO object can be returned,
+// so always return the text section.
+uno::Reference< rdf::XMetadatable >
+SwSectionFmt::MakeUnoObject()
+{
+ uno::Reference<rdf::XMetadatable> xMeta;
+ SwSection *const pSection( GetSection() );
+ if (pSection)
+ {
+ xMeta.set( SwXTextSection::CreateXTextSection(this,
+ TOX_HEADER_SECTION == pSection->GetType()),
+ uno::UNO_QUERY );
+ }
+ return xMeta;
+}
+
+
// --> OD 2007-02-14 #b6521322#
// Method to break section links inside a linked section
void lcl_BreakSectionLinksInSect( const SwSectionNode& rSectNd )
@@ -1330,7 +1481,7 @@ void SwIntrnlSectRefLink::DataChanged( const String& rMimeType,
}
SwSection& rSection = pSectNd->GetSection();
- rSection.SetConnectFlag( FALSE );
+ rSection.SetConnectFlag(false);
::rtl::OUString sNewFileName;
Reader* pRead = 0;
@@ -1362,7 +1513,7 @@ void SwIntrnlSectRefLink::DataChanged( const String& rMimeType,
else
{
nRet = lcl_FindDocShell( xDocSh, sFileName,
- rSection.GetLinkFilePassWd(),
+ rSection.GetLinkFilePassword(),
sFilter, 0, pDoc->GetDocShell() );
if( nRet )
{
@@ -1374,18 +1525,18 @@ void SwIntrnlSectRefLink::DataChanged( const String& rMimeType,
if( nRet )
{
- rSection.SetConnectFlag( TRUE );
+ rSection.SetConnectFlag(true);
SwNodeIndex aSave( pPam->GetPoint()->nNode, -1 );
SwNodeRange* pCpyRg = 0;
if( xDocSh->GetMedium() &&
- !rSection.GetLinkFilePassWd().Len() )
+ !rSection.GetLinkFilePassword().Len() )
{
const SfxPoolItem* pItem;
if( SFX_ITEM_SET == xDocSh->GetMedium()->GetItemSet()->
GetItemState( SID_PASSWORD, FALSE, &pItem ) )
- rSection.SetLinkFilePassWd(
+ rSection.SetLinkFilePassword(
((SfxStringItem*)pItem)->GetValue() );
}
@@ -1518,7 +1669,9 @@ void SwIntrnlSectRefLink::DataChanged( const String& rMimeType,
SwReader aTmpReader( aStrm, aEmptyStr, pDoc->GetDocShell()->GetMedium()->GetBaseURL(), *pPam );
if( !IsError( aTmpReader.Read( *pRead ) ))
- rSection.SetConnectFlag( TRUE );
+ {
+ rSection.SetConnectFlag(true);
+ }
if( pESh )
{
@@ -1565,19 +1718,18 @@ void SwIntrnlSectRefLink::Closed()
else
pSh->StartAction();
- SwSection aSect( CONTENT_SECTION, aEmptyStr );
- aSect = *rSectFmt.GetSection();
- aSect.SetType( CONTENT_SECTION );
- aSect.SetLinkFileName( aEmptyStr );
- aSect.SetHidden( FALSE );
- aSect.SetProtect( FALSE );
+ SwSectionData aSectionData(*rSectFmt.GetSection());
+ aSectionData.SetType( CONTENT_SECTION );
+ aSectionData.SetLinkFileName( aEmptyStr );
+ aSectionData.SetHidden( false );
+ aSectionData.SetProtectFlag( false );
// --> FME 2004-06-22 #114856# edit in readonly sections
- aSect.SetEditInReadonly( FALSE );
+ aSectionData.SetEditInReadonlyFlag( false );
// <--
- aSect.SetConnectFlag( FALSE );
+ aSectionData.SetConnectFlag( false );
- pDoc->ChgSection( n, aSect );
+ pDoc->UpdateSection( n, aSectionData );
// alle in der Section liegenden Links werden sichtbar
SwSectionNode* pSectNd = rSectFmt.GetSectionNode( FALSE );
@@ -1598,21 +1750,26 @@ void SwIntrnlSectRefLink::Closed()
void SwSection::CreateLink( LinkCreateType eCreateType )
{
SwSectionFmt* pFmt = GetFmt();
- if( !pFmt || CONTENT_SECTION == eType )
+ ASSERT(pFmt, "SwSection::CreateLink: no format?");
+ if (!pFmt || (CONTENT_SECTION == m_Data.GetType()))
return ;
USHORT nUpdateType = sfx2::LINKUPDATE_ALWAYS;
- if( !refLink.Is() )
- // dann mal den BaseLink aufbauen
- refLink = new SwIntrnlSectRefLink( *pFmt, nUpdateType, FORMAT_RTF );
+ if (!m_RefLink.Is())
+ {
+ // create BaseLink
+ m_RefLink = new SwIntrnlSectRefLink( *pFmt, nUpdateType, FORMAT_RTF );
+ }
else
- // sonst aus dem Linkmanager entfernen
- pFmt->GetDoc()->GetLinkManager().Remove( refLink );
+ {
+ pFmt->GetDoc()->GetLinkManager().Remove( m_RefLink );
+ }
- SwIntrnlSectRefLink* pLnk = (SwIntrnlSectRefLink*)&refLink;
+ SwIntrnlSectRefLink *const pLnk =
+ static_cast<SwIntrnlSectRefLink*>(& m_RefLink);
- String sCmd( sLinkFileName );
+ String sCmd( m_Data.GetLinkFileName() );
xub_StrLen nPos;
while( STRING_NOTFOUND != (nPos = sCmd.SearchAscii( " " )) )
sCmd.Erase( nPos, 1 );
@@ -1620,7 +1777,7 @@ void SwSection::CreateLink( LinkCreateType eCreateType )
pLnk->SetUpdateMode( nUpdateType );
pLnk->SetVisible( pFmt->GetDoc()->IsVisibleLinks() );
- switch( eType )
+ switch (m_Data.GetType())
{
case DDE_LINK_SECTION:
pLnk->SetLinkSourceName( sCmd );
@@ -1632,7 +1789,7 @@ void SwSection::CreateLink( LinkCreateType eCreateType )
String sFltr( sCmd.GetToken( 1, sfx2::cTokenSeperator ) );
String sRange( sCmd.GetToken( 2, sfx2::cTokenSeperator ) );
pFmt->GetDoc()->GetLinkManager().InsertFileLink( *pLnk,
- static_cast<USHORT>(eType),
+ static_cast<USHORT>(m_Data.GetType()),
sCmd.GetToken( 0, sfx2::cTokenSeperator ),
( sFltr.Len() ? &sFltr : 0 ),
( sRange.Len() ? &sRange : 0 ) );
@@ -1668,19 +1825,21 @@ void SwSection::BreakLink()
}
// release link, if it exists
- if ( refLink.Is() )
+ if (m_RefLink.Is())
{
- if ( GetFmt() )
+ SwSectionFmt *const pFormat( GetFmt() );
+ ASSERT(pFormat, "SwSection::BreakLink: no format?");
+ if (pFormat)
{
- GetFmt()->GetDoc()->GetLinkManager().Remove( refLink );
+ pFormat->GetDoc()->GetLinkManager().Remove( m_RefLink );
}
- refLink.Clear();
+ m_RefLink.Clear();
}
// change type
SetType( CONTENT_SECTION );
// reset linked file data
SetLinkFileName( aEmptyStr );
- SetLinkFilePassWd( aEmptyStr );
+ SetLinkFilePassword( aEmptyStr );
}
// <--
diff --git a/sw/source/core/docnode/swbaslnk.cxx b/sw/source/core/docnode/swbaslnk.cxx
index df6c8dc8c9f2..cb804b102c0e 100644
--- a/sw/source/core/docnode/swbaslnk.cxx
+++ b/sw/source/core/docnode/swbaslnk.cxx
@@ -357,17 +357,19 @@ BOOL SetGrfFlySize( const Size& rGrfSz, const Size& rFrmSz, SwGrfNode* pGrfNd )
0 != (pANd = pDoc->GetNodes()[pAPos->nNode]) &&
0 != (pTblNd = pANd->FindTableNode()) )
{
- BOOL bLastGrf = !pTblNd->GetTable().DecGrfsThatResize();
+ const BOOL bLastGrf = !pTblNd->GetTable().DecGrfsThatResize();
SwHTMLTableLayout *pLayout =
pTblNd->GetTable().GetHTMLTableLayout();
if( pLayout )
{
- USHORT nBrowseWidth =
- pLayout->GetBrowseWidthByTable( *pDoc );
- if( nBrowseWidth )
+ const USHORT nBrowseWidth =
+ pLayout->GetBrowseWidthByTable( *pDoc );
+ if ( nBrowseWidth )
+ {
pLayout->Resize( nBrowseWidth, TRUE, TRUE,
bLastGrf ? HTMLTABLE_RESIZE_NOW
: 500 );
+ }
}
}
}
diff --git a/sw/source/core/draw/dview.cxx b/sw/source/core/draw/dview.cxx
index 96f15ba22be8..f7242d1d8132 100644
--- a/sw/source/core/draw/dview.cxx
+++ b/sw/source/core/draw/dview.cxx
@@ -1004,10 +1004,6 @@ void SwDrawView::CheckPossibilities()
}
if ( pFrm )
bProtect = pFrm->IsProtected(); //Rahmen, Bereiche usw.
- // --> OD 2006-11-06 #130889# - make code robust
-// if ( FLY_IN_CNTNT == ::FindFrmFmt( (SdrObject*)pObj )->GetAnchor().GetAnchorId() &&
-// rMrkList.GetMarkCount() > 1 )
-// bProtect = TRUE;
{
SwFrmFmt* pFrmFmt( ::FindFrmFmt( const_cast<SdrObject*>(pObj) ) );
if ( !pFrmFmt )
@@ -1022,7 +1018,6 @@ void SwDrawView::CheckPossibilities()
bProtect = TRUE;
}
}
- // <--
}
bMoveProtect |= bProtect;
bResizeProtect |= bProtect | bSzProtect;
diff --git a/sw/source/core/edit/edattr.cxx b/sw/source/core/edit/edattr.cxx
index 9e1cf28f0eb1..31c4a7dfea3e 100644
--- a/sw/source/core/edit/edattr.cxx
+++ b/sw/source/core/edit/edattr.cxx
@@ -31,14 +31,10 @@
#include <hintids.hxx>
-#ifndef _SVX_TSTPITEM_HXX //autogen
#include <editeng/tstpitem.hxx>
-#endif
#include <editeng/lrspitem.hxx>
#include <editeng/scripttypeitem.hxx>
-#ifndef _COM_SUN_STAR_I18N_SCRIPTTYPE_HDL_
#include <com/sun/star/i18n/ScriptType.hdl>
-#endif
#include <txatbase.hxx>
#include <txtftn.hxx>
#include <fmtftn.hxx>
@@ -230,8 +226,8 @@ BOOL SwEditShell::GetCurFtn( SwFmtFtn* pFillFtn )
if( !pTxtNd )
return FALSE;
- SwTxtAttr *pFtn = pTxtNd->GetTxtAttr( pCrsr->GetPoint()->nContent,
- RES_TXTATR_FTN );
+ SwTxtAttr *const pFtn = pTxtNd->GetTxtAttrForCharAt(
+ pCrsr->GetPoint()->nContent.GetIndex(), RES_TXTATR_FTN);
if( pFtn && pFillFtn )
{
// Daten vom Attribut uebertragen
@@ -461,7 +457,7 @@ BOOL lcl_IsNoEndTxtAttrAtPos( const SwTxtNode& rTNd, xub_StrLen nPos,
const SwField* const pFld = pAttr->GetFld().GetFld();
if (pFld)
{
- sExp += pFld->Expand();
+ sExp += pFld->ExpandField(rTNd.GetDoc()->IsClipBoard());
}
}
}
diff --git a/sw/source/core/edit/edfld.cxx b/sw/source/core/edit/edfld.cxx
index a919da9a6515..1e4f699fa203 100644
--- a/sw/source/core/edit/edfld.cxx
+++ b/sw/source/core/edit/edfld.cxx
@@ -42,9 +42,7 @@
#include <expfld.hxx>
#include <flddat.hxx>
#include <swundo.hxx>
-#ifndef _DBMGR_HXX
#include <dbmgr.hxx>
-#endif
#include <swddetbl.hxx>
#include <hints.hxx>
@@ -226,7 +224,8 @@ void SwEditShell::FieldToText( SwFieldType* pType )
*pFmtFld->GetTxtFld()->GetStart() );
// Feldinhalt durch Text ersetzen
- String aEntry( pFmtFld->GetFld()->Expand() );
+ String const aEntry(
+ pFmtFld->GetFld()->ExpandField(GetDoc()->IsClipBoard()) );
pPaM->SetMark();
pPaM->Move( fnMoveForward );
GetDoc()->DeleteRange( *pPaM );
diff --git a/sw/source/core/edit/edglbldc.cxx b/sw/source/core/edit/edglbldc.cxx
index 5ecc92e79acb..6f884f244326 100644
--- a/sw/source/core/edit/edglbldc.cxx
+++ b/sw/source/core/edit/edglbldc.cxx
@@ -146,7 +146,7 @@ USHORT SwEditShell::GetGlobalDocContent( SwGlblDocContents& rArr ) const
}
BOOL SwEditShell::InsertGlobalDocContent( const SwGlblDocContent& rInsPos,
- const SwSection& rNew )
+ SwSectionData & rNew)
{
if( !getIDocumentSettingAccess()->get(IDocumentSettingAccess::GLOBAL_DOCUMENT) )
return FALSE;
diff --git a/sw/source/core/edit/editsh.cxx b/sw/source/core/edit/editsh.cxx
index 7af79fde80a8..32ab9fa07e94 100644
--- a/sw/source/core/edit/editsh.cxx
+++ b/sw/source/core/edit/editsh.cxx
@@ -1162,8 +1162,7 @@ void SwEditShell::SetExtTextInputData( const CommandExtTextInputData& rData )
void SwEditShell::TransliterateText( sal_uInt32 nType )
{
- utl::TransliterationWrapper aTrans(
- ::comphelper::getProcessServiceFactory(), nType );
+ utl::TransliterationWrapper aTrans( ::comphelper::getProcessServiceFactory(), nType );
StartAllAction();
SET_CURR_SHELL( this );
@@ -1185,6 +1184,32 @@ void SwEditShell::TransliterateText( sal_uInt32 nType )
EndAllAction();
}
+void SwEditShell::TransliterateText( const String& rModuleName )
+{
+ utl::TransliterationWrapper aTrans(::comphelper::getProcessServiceFactory(), 0 );
+ aTrans.loadModuleByImplName( rModuleName, LANGUAGE_SYSTEM );
+ StartAllAction();
+ SET_CURR_SHELL( this );
+
+ SwPaM* pCrsr = GetCrsr();
+ if( pCrsr->GetNext() != pCrsr )
+ {
+ GetDoc()->StartUndo(UNDO_EMPTY, NULL);
+ FOREACHPAM_START( this )
+
+ if( PCURCRSR->HasMark() )
+ GetDoc()->TransliterateText( *PCURCRSR, aTrans );
+
+ FOREACHPAM_END()
+ GetDoc()->EndUndo(UNDO_EMPTY, NULL);
+ }
+ else
+ GetDoc()->TransliterateText( *pCrsr, aTrans );
+
+ EndAllAction();
+}
+
+
void SwEditShell::CountWords( SwDocStat& rStat ) const
{
FOREACHPAM_START( this )
diff --git a/sw/source/core/edit/edlingu.cxx b/sw/source/core/edit/edlingu.cxx
index 02dc1de62901..d99293071048 100644
--- a/sw/source/core/edit/edlingu.cxx
+++ b/sw/source/core/edit/edlingu.cxx
@@ -136,6 +136,7 @@ class SwSpellIter : public SwLinguIter
SpellContentPositions aLastPositions;
bool bBackToStartOfSentence;
+ bool bMoveToEndOfSentence;
void CreatePortion(uno::Reference< XSpellAlternatives > xAlt,
@@ -147,7 +148,7 @@ class SwSpellIter : public SwLinguIter
const SpellContentPositions& rDeletedRedlines);
public:
SwSpellIter() :
- bBackToStartOfSentence(false) {}
+ bBackToStartOfSentence(false), bMoveToEndOfSentence(false) {}
void Start( SwEditShell *pSh, SwDocPositions eStart, SwDocPositions eEnd );
@@ -157,6 +158,7 @@ public:
void ToSentenceStart();
const ::svx::SpellPortions GetLastPortions(){ return aLastPortions;}
SpellContentPositions GetLastPositions() {return aLastPositions;}
+ void ContinueAfterThisSentence() { bMoveToEndOfSentence = true; }
};
/*************************************************************************
@@ -693,6 +695,24 @@ void SwHyphIter::InsertSoftHyph( const xub_StrLen nHyphPos )
// --------------------- Methoden der SwEditShell ------------------------
+bool SwEditShell::HasLastSentenceGotGrammarChecked() const
+{
+ bool bTextWasGrammarChecked = false;
+ if (pSpellIter)
+ {
+ ::svx::SpellPortions aLastPortions( pSpellIter->GetLastPortions() );
+ for (size_t i = 0; i < aLastPortions.size() && !bTextWasGrammarChecked; ++i)
+ {
+ // bIsGrammarError is also true if the text was only checked but no
+ // grammar error was found. (That is if a ProofreadingResult was obtained in
+ // SwDoc::Spell and in turn bIsGrammarError was set in SwSpellIter::CreatePortion)
+ if (aLastPortions[i].bIsGrammarError)
+ bTextWasGrammarChecked = true;
+ }
+ }
+ return bTextWasGrammarChecked;
+}
+
/*************************************************************************
* SwEditShell::HasConvIter
*************************************************************************/
@@ -1283,7 +1303,20 @@ sal_uInt32 lcl_CountRedlines(
/*-- 18.09.2003 15:08:20---------------------------------------------------
-----------------------------------------------------------------------*/
-void SwEditShell::ApplyChangedSentence(const ::svx::SpellPortions& rNewPortions, bool bIsGrammarCheck)
+
+void SwEditShell::MoveContinuationPosToEndOfCheckedSentence()
+{
+ // give hint that continuation position for spell/grammar checking is
+ // at the end of this sentence
+ if (pSpellIter)
+ {
+ pSpellIter->SetCurr( new SwPosition( *pSpellIter->GetCurrX() ) );
+ pSpellIter->ContinueAfterThisSentence();
+ }
+}
+
+
+void SwEditShell::ApplyChangedSentence(const ::svx::SpellPortions& rNewPortions, bool bRecheck)
{
ASSERT( pSpellIter, "SpellIter missing" );
if(pSpellIter)
@@ -1300,9 +1333,14 @@ void SwEditShell::ApplyChangedSentence(const ::svx::SpellPortions& rNewPortions,
if(!rLastPortions.size())
return;
- SwPaM *pCrsr = GetCrsr();
pDoc->StartUndo( UNDO_OVERWRITE, NULL );
StartAction();
+
+ SwPaM *pCrsr = GetCrsr();
+ // save cursor position (which should be at the end of the current sentence)
+ // for later restoration
+ Push();
+
sal_uInt32 nRedlinePortions = lcl_CountRedlines(rLastPortions);
if((rLastPortions.size() - nRedlinePortions) == rNewPortions.size())
{
@@ -1391,16 +1429,24 @@ void SwEditShell::ApplyChangedSentence(const ::svx::SpellPortions& rNewPortions,
//set the cursor to the end of the inserted string
*pCrsr->Start() = *pCrsr->End();
++aCurrentNewPortion;
-
}
}
- //set the cursor to the end of the new sentence
+
+ // restore cursor to the end of the sentence
+ // (will work also if the sentence length has changed,
+ // since cursors get updated automatically!)
+ Pop( FALSE );
+
+ // collapse cursor to the end of the modified sentence
*pCrsr->Start() = *pCrsr->End();
- if( bIsGrammarCheck)
+ if (bRecheck)
{
//in grammar check the current sentence has to be checked again
GoStartSentence();
}
+ // set continuation position for spell/grammar checking to the end of this sentence
+ pSpellIter->SetCurr( new SwPosition( *pCrsr->Start() ) );
+
pDoc->EndUndo( UNDO_OVERWRITE, NULL );
EndAction();
}
diff --git a/sw/source/core/edit/edsect.cxx b/sw/source/core/edit/edsect.cxx
index 6ad8337e063a..ba3c2e9c7966 100644
--- a/sw/source/core/edit/edsect.cxx
+++ b/sw/source/core/edit/edsect.cxx
@@ -42,9 +42,9 @@
#include <rootfrm.hxx> // SwRootFrm
- // SS fuer Bereiche
-const SwSection* SwEditShell::InsertSection( const SwSection& rNew,
- const SfxItemSet* pAttr )
+SwSection const*
+SwEditShell::InsertSection(
+ SwSectionData & rNewData, SfxItemSet const*const pAttr)
{
const SwSection* pRet = 0;
if( !IsTableMode() )
@@ -53,8 +53,8 @@ const SwSection* SwEditShell::InsertSection( const SwSection& rNew,
GetDoc()->StartUndo( UNDO_INSSECTION, NULL );
FOREACHPAM_START(this)
- const SwSection* const pNew =
- GetDoc()->InsertSwSection( *PCURCRSR, rNew, pAttr );
+ SwSection const*const pNew =
+ GetDoc()->InsertSwSection( *PCURCRSR, rNewData, 0, pAttr );
if( !pRet )
pRet = pNew;
FOREACHPAM_END()
@@ -178,11 +178,11 @@ void SwEditShell::DelSectionFmt( USHORT nFmt )
}
-void SwEditShell::ChgSection( USHORT nSect, const SwSection& rSect,
- const SfxItemSet* pAttr )
+void SwEditShell::UpdateSection(sal_uInt16 const nSect,
+ SwSectionData & rNewData, SfxItemSet const*const pAttr)
{
StartAllAction();
- GetDoc()->ChgSection( nSect, rSect, pAttr );
+ GetDoc()->UpdateSection( nSect, rNewData, pAttr );
// rufe das AttrChangeNotify auf der UI-Seite.
CallChgLnk();
EndAllAction();
diff --git a/sw/source/core/edit/edtox.cxx b/sw/source/core/edit/edtox.cxx
index d6fb64577e11..230e45f71079 100644
--- a/sw/source/core/edit/edtox.cxx
+++ b/sw/source/core/edit/edtox.cxx
@@ -135,10 +135,9 @@ void SwEditShell::SetTOXBaseReadonly(const SwTOXBase& rTOXBase, BOOL bReadonly)
((SwTOXBase&)rTOXBase).SetProtected(bReadonly);
ASSERT( rTOXSect.SwSection::GetType() == TOX_CONTENT_SECTION, "not a TOXContentSection" );
- SwSection aSect(TOX_CONTENT_SECTION, rTOXSect.GetName());
- aSect = rTOXSect;
- aSect.SetProtect(bReadonly);
- ChgSection( GetSectionFmtPos( *rTOXSect.GetFmt() ), aSect, 0 );
+ SwSectionData aSectionData(rTOXSect);
+ aSectionData.SetProtectFlag(bReadonly);
+ UpdateSection( GetSectionFmtPos( *rTOXSect.GetFmt() ), aSectionData, 0 );
}
/* -----------------02.09.99 07:47-------------------
diff --git a/sw/source/core/fields/cellfml.cxx b/sw/source/core/fields/cellfml.cxx
index aa46869bca1a..182ed12d6ddd 100644
--- a/sw/source/core/fields/cellfml.cxx
+++ b/sw/source/core/fields/cellfml.cxx
@@ -203,7 +203,8 @@ double SwTableBox::GetValue( SwTblCalcPara& rCalcPara ) const
break;
default:
- nRet = rCalcPara.rCalc.Calculate( pFld->Expand() ).GetDouble();
+ String const value(pFld->ExpandField(pDoc->IsClipBoard()));
+ nRet = rCalcPara.rCalc.Calculate(value).GetDouble();
}
}
else
diff --git a/sw/source/core/fields/fldbas.cxx b/sw/source/core/fields/fldbas.cxx
index ec65d0644bba..c47bd63e70ad 100644
--- a/sw/source/core/fields/fldbas.cxx
+++ b/sw/source/core/fields/fldbas.cxx
@@ -437,6 +437,23 @@ BOOL SwField::IsFixed() const
return bRet;
}
+String SwField::ExpandField(bool const bInClipboard) const
+{
+ if (!bInClipboard) // #i85766# do not expand fields in clipboard documents
+ {
+ m_Cache = Expand();
+ }
+ return m_Cache;
+}
+
+SwField * SwField::CopyField() const
+{
+ SwField *const pNew = Copy();
+ // #i85766# cache expansion of source (for clipboard)
+ pNew->m_Cache = Expand();
+ return pNew;
+}
+
/*--------------------------------------------------------------------
Beschreibung: Numerierung expandieren
--------------------------------------------------------------------*/
diff --git a/sw/source/core/fields/postithelper.cxx b/sw/source/core/fields/postithelper.cxx
index 964a5a11cce4..1d76dce43117 100644
--- a/sw/source/core/fields/postithelper.cxx
+++ b/sw/source/core/fields/postithelper.cxx
@@ -32,7 +32,8 @@
#include <postithelper.hxx>
#include <PostItMgr.hxx>
-#include <postit.hxx>
+#include <AnnotationWin.hxx>
+
#include <fmtfld.hxx>
#include <txtfld.hxx>
#include <docufld.hxx>
@@ -41,12 +42,50 @@
#include <pagefrm.hxx>
#include <rootfrm.hxx>
#include <txtfrm.hxx>
+#include <tabfrm.hxx>
#include <IDocumentRedlineAccess.hxx>
#include <redline.hxx>
#include <scriptinfo.hxx>
#include <editeng/charhiddenitem.hxx>
+namespace {
+
+struct LayoutInfoOrder
+{
+ bool operator()( const SwLayoutInfo& rLayoutInfo,
+ const SwLayoutInfo& rNewLayoutInfo )
+ {
+ if ( rLayoutInfo.mnPageNumber != rNewLayoutInfo.mnPageNumber )
+ {
+ // corresponding <SwFrm> instances are on different pages
+ return rLayoutInfo.mnPageNumber < rNewLayoutInfo.mnPageNumber;
+ }
+ else
+ {
+ // corresponding <SwFrm> instances are in different repeating table header rows
+ ASSERT( rLayoutInfo.mpAnchorFrm->FindTabFrm(),
+ "<LayoutInfoOrder::operator()> - table frame not found" );
+ ASSERT( rNewLayoutInfo.mpAnchorFrm->FindTabFrm(),
+ "<LayoutInfoOrder::operator()> - table frame not found" );
+ const SwTabFrm* pLayoutInfoTabFrm( rLayoutInfo.mpAnchorFrm->FindTabFrm() );
+ const SwTabFrm* pNewLayoutInfoTabFrm( rNewLayoutInfo.mpAnchorFrm->FindTabFrm() );
+ const SwTabFrm* pTmpTabFrm( pNewLayoutInfoTabFrm );
+ while ( pTmpTabFrm && pTmpTabFrm->GetFollow() )
+ {
+ pTmpTabFrm = static_cast<const SwTabFrm*>(pTmpTabFrm->GetFollow()->GetFrm());
+ if ( pTmpTabFrm == pLayoutInfoTabFrm )
+ {
+ return false;
+ }
+ }
+ return true;
+ }
+ }
+};
+
+} // eof anonymous namespace
+
SwPostItHelper::SwLayoutStatus SwPostItHelper::getLayoutInfos( std::vector< SwLayoutInfo >& rInfo, SwPosition& rPos )
{
SwLayoutStatus aRet = INVISIBLE;
@@ -67,11 +106,12 @@ SwPostItHelper::SwLayoutStatus SwPostItHelper::getLayoutInfos( std::vector< SwLa
{
SwLayoutInfo aInfo;
pTxtFrm->GetCharRect( aInfo.mPosition, rPos, 0 );
+ aInfo.mpAnchorFrm = pTxtFrm;
aInfo.mPageFrame = pPage->Frm();
aInfo.mPagePrtArea = pPage->Prt();
aInfo.mPagePrtArea.Pos() += aInfo.mPageFrame.Pos();
aInfo.mnPageNumber = pPage->GetPhyPageNum();
- aInfo.mbMarginSide = pPage->MarginSide();
+ aInfo.meSidebarPosition = pPage->SidebarPosition();
aInfo.mRedlineAuthor = 0;
if( aRet == INVISIBLE )
@@ -91,7 +131,14 @@ SwPostItHelper::SwLayoutStatus SwPostItHelper::getLayoutInfos( std::vector< SwLa
}
}
}
- rInfo.push_back( aInfo );
+
+ {
+ std::vector< SwLayoutInfo >::iterator aInsPosIter =
+ std::lower_bound( rInfo.begin(), rInfo.end(),
+ aInfo, LayoutInfoOrder() );
+
+ rInfo.insert( aInsPosIter, aInfo );
+ }
}
}
}
@@ -126,23 +173,7 @@ unsigned long SwPostItHelper::getPageInfo( SwRect& rPageFrm, const SwRootFrm* pR
return nRet;
}
-SwPostItHelper::SwLayoutStatus SwPostItHelper::getLayoutInfos( std::vector< SwLayoutInfo >& rInfo, SwTxtFld* pFld )
-{
- SwLayoutStatus aRet = SwPostItHelper::INVISIBLE;
- if( pFld )
- {
- SwTxtNode* pTNd = pFld->GetpTxtNode();
- if( pTNd )
- {
- SwPosition aPos( *pTNd );
- aPos.nContent.Assign( pTNd, *pFld->GetStart() );
- aRet = getLayoutInfos( rInfo, aPos );
- }
- }
- return aRet;
-}
-
-SwPosition SwPostItItem::GetPosition()
+SwPosition SwAnnotationItem::GetAnchorPosition() const
{
SwTxtFld* pFld = pFmtFld->GetTxtFld();
//if( pFld )
@@ -157,23 +188,30 @@ SwPosition SwPostItItem::GetPosition()
//}
}
-bool SwPostItItem::UseElement()
+bool SwAnnotationItem::UseElement()
{
return pFmtFld->IsFldInDoc();
}
-SwMarginWin* SwPostItItem::GetMarginWindow(Window* pParent, WinBits nBits,SwPostItMgr* aMgr,SwPostItBits aBits)
+sw::sidebarwindows::SwSidebarWin* SwAnnotationItem::GetSidebarWindow(
+ SwEditWin& rEditWin,
+ WinBits nBits,
+ SwPostItMgr& aMgr,
+ SwPostItBits aBits)
{
- return new SwPostIt(pParent,nBits,pFmtFld,aMgr,aBits);
+ return new sw::annotation::SwAnnotationWin( rEditWin, nBits,
+ aMgr, aBits,
+ *this,
+ pFmtFld );
}
/*
-SwPosition SwRedCommentItem::GetPosition()
+SwPosition SwRedCommentItem::GetAnchorPosition()
{
return *pRedline->Start();
}
-SwMarginWin* SwRedCommentItem::GetMarginWindow(Window* pParent, WinBits nBits,SwPostItMgr* aMgr,SwPostItBits aBits)
+SwSidebarWin* SwRedCommentItem::GetSidebarWindow(Window* pParent, WinBits nBits,SwPostItMgr* aMgr,SwPostItBits aBits)
{
return new SwRedComment(pParent,nBits,aMgr,aBits,pRedline);
}
diff --git a/sw/source/core/frmedt/fecopy.cxx b/sw/source/core/frmedt/fecopy.cxx
index 4df81e2e188e..9fe5c9a22204 100644
--- a/sw/source/core/frmedt/fecopy.cxx
+++ b/sw/source/core/frmedt/fecopy.cxx
@@ -182,8 +182,9 @@ BOOL SwFEShell::Copy( SwDoc* pClpDoc, const String* pNewClpTxt )
// das kopierte TextAttribut wieder entfernt werden,
// sonst wird es als TextSelektion erkannt
const SwIndex& rIdx = pFlyFmt->GetAnchor().GetCntntAnchor()->nContent;
- SwTxtFlyCnt* pTxtFly = (SwTxtFlyCnt*)pTxtNd->GetTxtAttr(
- rIdx, RES_TXTATR_FLYCNT );
+ SwTxtFlyCnt *const pTxtFly = static_cast<SwTxtFlyCnt *>(
+ pTxtNd->GetTxtAttrForCharAt(
+ rIdx.GetIndex(), RES_TXTATR_FLYCNT));
if( pTxtFly )
{
((SwFmtFlyCnt&)pTxtFly->GetFlyCnt()).SetFlyFmt( 0 );
@@ -835,8 +836,8 @@ BOOL SwFEShell::Paste( SwDoc* pClpDoc, BOOL bIncludingPageFrames )
pClpDoc->CopyRange( rCopy, rInsPos, false );
{
aIndexBefore++;
- SwPaM aPaM(SwPosition(aIndexBefore, 0),
- SwPosition(rInsPos.nNode, 0));
+ SwPaM aPaM(SwPosition(aIndexBefore),
+ SwPosition(rInsPos.nNode));
aPaM.GetDoc()->MakeUniqueNumRules(aPaM);
}
}
@@ -1065,8 +1066,8 @@ BOOL SwFEShell::Paste( SwDoc* pClpDoc, BOOL bIncludingPageFrames )
{
aIndexBefore++;
- SwPaM aPaM(SwPosition(aIndexBefore, 0),
- SwPosition(rInsPos.nNode, 0));
+ SwPaM aPaM(SwPosition(aIndexBefore),
+ SwPosition(rInsPos.nNode));
aPaM.GetDoc()->MakeUniqueNumRules(aPaM);
}
diff --git a/sw/source/core/frmedt/fefly1.cxx b/sw/source/core/frmedt/fefly1.cxx
index a0d9141778cb..0dc721a62f12 100644
--- a/sw/source/core/frmedt/fefly1.cxx
+++ b/sw/source/core/frmedt/fefly1.cxx
@@ -1801,11 +1801,6 @@ ObjCntType SwFEShell::GetObjCntType( const SdrObject& rObj ) const
else
eType = OBJCNT_FLY;
}
- // --> OD 2006-11-06 #130889# - make code robust
-// else if( pInvestigatedObj->ISA( SdrObjGroup ) &&
-// FLY_IN_CNTNT !=
-// ((SwDrawContact*)GetUserCall(pInvestigatedObj))->GetFmt()->GetAnchor().GetAnchorId() )
-// eType = OBJCNT_GROUPOBJ;
else if ( pInvestigatedObj->ISA( SdrObjGroup ) )
{
SwDrawContact* pDrawContact( dynamic_cast<SwDrawContact*>(GetUserCall( pInvestigatedObj ) ) );
@@ -1830,7 +1825,6 @@ ObjCntType SwFEShell::GetObjCntType( const SdrObject& rObj ) const
}
}
}
- // <--
else
eType = OBJCNT_SIMPLE;
return eType;
diff --git a/sw/source/core/frmedt/feshview.cxx b/sw/source/core/frmedt/feshview.cxx
index 7242ca411616..4133433702a3 100644
--- a/sw/source/core/frmedt/feshview.cxx
+++ b/sw/source/core/frmedt/feshview.cxx
@@ -34,6 +34,8 @@
#define _FESHVIEW_ONLY_INLINE_NEEDED
#endif
+#include <svx/sdrobjectfilter.hxx>
+#include <svx/svditer.hxx>
#include <svx/svdobj.hxx>
#include <svx/svdouno.hxx>
#include <svx/svdoole2.hxx>
@@ -235,10 +237,7 @@ BOOL SwFEShell::SelectObj( const Point& rPt, BYTE nFlag, SdrObject *pObj )
if( bForget )
{
pDView->UnmarkAll();
- if ( pTmpObj )
- pDView->MarkObj( pTmpObj, Imp()->GetPageView(), bAddSelect, bEnterGroup );
- else
- pDView->MarkObj( rPt, MINMOVE );
+ pDView->MarkObj( pTmpObj, Imp()->GetPageView(), bAddSelect, bEnterGroup );
break;
}
}
@@ -1310,197 +1309,225 @@ BOOL lcl_IsControlGroup( const SdrObject *pObj )
return bRet;
}
-BOOL SwFEShell::GotoObj( BOOL bNext, USHORT /*GOTOOBJ_...*/ eType )
+namespace
{
- if( !Imp()->HasDrawView() )
- return FALSE;
- else
+ class MarkableObjectsOnly : public ::svx::ISdrObjectFilter
{
- const SdrObject *pBest = 0,
- *pTop = 0;
-
- const long nTmp = bNext ? LONG_MAX : 0;
- Point aBestPos( nTmp, nTmp );
- Point aTopPos( nTmp, nTmp );
- Point aCurPos;
- Point aPos;
- BOOL bRet = FALSE;
- BOOL bNoDraw = 0 == (GOTOOBJ_DRAW_ANY & eType);
- BOOL bNoFly = 0 == (GOTOOBJ_FLY_ANY & eType);
-
- if( !bNoFly && bNoDraw )
+ public:
+ MarkableObjectsOnly( SdrPageView* i_pPV )
+ :m_pPV( i_pPV )
{
- SwFlyFrm *pFly = GetCurrFrm( FALSE )->FindFlyFrm();
- if( pFly )
- pBest = pFly->GetVirtDrawObj();
}
- const SdrMarkList &rMrkList = Imp()->GetDrawView()->GetMarkedObjectList();
- SdrPageView* pPV = Imp()->GetDrawView()->GetSdrPageView();
- if( !pBest || rMrkList.GetMarkCount() == 1 )
+ virtual bool includeObject( const SdrObject& i_rObject ) const
{
- // Ausgangspunkt bestimmen.
- SdrObjList* pList = NULL;
- if ( rMrkList.GetMarkCount() )
- {
- const SdrObject* pStartObj = rMrkList.GetMark(0)->GetMarkedSdrObj();
- if( pStartObj->ISA(SwVirtFlyDrawObj) )
- aPos = ((SwVirtFlyDrawObj*)pStartObj)->GetFlyFrm()->Frm().Pos();
- else
- aPos = pStartObj->GetSnapRect().TopLeft();
+ return m_pPV && m_pPV->GetView().IsObjMarkable( const_cast< SdrObject* >( &i_rObject ), m_pPV );
+ }
- // If an object inside a group is selected, we want to
- // iterate over the group members.
- if ( ! pStartObj->GetUserCall() )
- pList = pStartObj->GetObjList();
- }
+ private:
+ SdrPageView* m_pPV;
+ };
+}
+
+const SdrObject* SwFEShell::GetBestObject( BOOL bNext, USHORT /*GOTOOBJ_...*/ eType, BOOL bFlat, const ::svx::ISdrObjectFilter* pFilter )
+{
+ if( !Imp()->HasDrawView() )
+ return NULL;
+
+ const SdrObject *pBest = 0,
+ *pTop = 0;
+
+ const long nTmp = bNext ? LONG_MAX : 0;
+ Point aBestPos( nTmp, nTmp );
+ Point aTopPos( nTmp, nTmp );
+ Point aCurPos;
+ Point aPos;
+ BOOL bNoDraw = 0 == (GOTOOBJ_DRAW_ANY & eType);
+ BOOL bNoFly = 0 == (GOTOOBJ_FLY_ANY & eType);
+
+ if( !bNoFly && bNoDraw )
+ {
+ SwFlyFrm *pFly = GetCurrFrm( FALSE )->FindFlyFrm();
+ if( pFly )
+ pBest = pFly->GetVirtDrawObj();
+ }
+ const SdrMarkList &rMrkList = Imp()->GetDrawView()->GetMarkedObjectList();
+ SdrPageView* pPV = Imp()->GetDrawView()->GetSdrPageView();
+
+ MarkableObjectsOnly aDefaultFilter( pPV );
+ if ( !pFilter )
+ pFilter = &aDefaultFilter;
+
+ if( !pBest || rMrkList.GetMarkCount() == 1 )
+ {
+ // Ausgangspunkt bestimmen.
+ SdrObjList* pList = NULL;
+ if ( rMrkList.GetMarkCount() )
+ {
+ const SdrObject* pStartObj = rMrkList.GetMark(0)->GetMarkedSdrObj();
+ if( pStartObj->ISA(SwVirtFlyDrawObj) )
+ aPos = ((SwVirtFlyDrawObj*)pStartObj)->GetFlyFrm()->Frm().Pos();
else
- {
- // If no object is selected, we check if we just entered a group.
- // In this case we want to iterate over the group members.
- aPos = GetCharRect().Center();
- const SdrObject* pStartObj = pPV ? pPV->GetAktGroup() : 0;
- if ( pStartObj && pStartObj->ISA( SdrObjGroup ) )
- pList = pStartObj->GetSubList();
- }
+ aPos = pStartObj->GetSnapRect().TopLeft();
- if ( ! pList )
- {
- // Here we are if
- // A No object has been selected and no group has been entered or
- // B An object has been selected and it is not inside a group
- pList = getIDocumentDrawModelAccess()->GetDrawModel()->GetPage( 0 );
- }
+ // If an object inside a group is selected, we want to
+ // iterate over the group members.
+ if ( ! pStartObj->GetUserCall() )
+ pList = pStartObj->GetObjList();
+ }
+ else
+ {
+ // If no object is selected, we check if we just entered a group.
+ // In this case we want to iterate over the group members.
+ aPos = GetCharRect().Center();
+ const SdrObject* pStartObj = pPV ? pPV->GetAktGroup() : 0;
+ if ( pStartObj && pStartObj->ISA( SdrObjGroup ) )
+ pList = pStartObj->GetSubList();
+ }
+
+ if ( ! pList )
+ {
+ // Here we are if
+ // A No object has been selected and no group has been entered or
+ // B An object has been selected and it is not inside a group
+ pList = getIDocumentDrawModelAccess()->GetDrawModel()->GetPage( 0 );
+ }
- ASSERT( pList, "No object list to iterate" )
+ ASSERT( pList, "No object list to iterate" )
- const ULONG nObjs = pList->GetObjCount();
- for( ULONG nObj = 0; nObj < nObjs; ++nObj )
+ SdrObjListIter aObjIter( *pList, bFlat ? IM_FLAT : IM_DEEPNOGROUPS );
+ while ( aObjIter.IsMore() )
+ {
+ SdrObject* pObj = aObjIter.Next();
+ BOOL bFlyFrm = pObj->ISA(SwVirtFlyDrawObj);
+ if( ( bNoFly && bFlyFrm ) ||
+ ( bNoDraw && !bFlyFrm ) ||
+ ( eType == GOTOOBJ_DRAW_SIMPLE && lcl_IsControlGroup( pObj ) ) ||
+ ( eType == GOTOOBJ_DRAW_CONTROL && !lcl_IsControlGroup( pObj ) ) ||
+ ( pFilter && !pFilter->includeObject( *pObj ) ) )
+ continue;
+ if( bFlyFrm )
{
- SdrObject* pObj = pList->GetObj( nObj );
- BOOL bFlyFrm = pObj->ISA(SwVirtFlyDrawObj);
- if( ( bNoFly && bFlyFrm ) ||
- ( bNoDraw && !bFlyFrm ) ||
- ( eType == GOTOOBJ_DRAW_SIMPLE && lcl_IsControlGroup( pObj ) ) ||
- ( eType == GOTOOBJ_DRAW_CONTROL && !lcl_IsControlGroup( pObj ) ) ||
- ( pPV && ! pPV->GetView().IsObjMarkable( pObj, pPV ) ) )
- continue;
- if( bFlyFrm )
+ SwVirtFlyDrawObj *pO = (SwVirtFlyDrawObj*)pObj;
+ SwFlyFrm *pFly = pO->GetFlyFrm();
+ if( GOTOOBJ_FLY_ANY != ( GOTOOBJ_FLY_ANY & eType ) )
{
- SwVirtFlyDrawObj *pO = (SwVirtFlyDrawObj*)pObj;
- SwFlyFrm *pFly = pO->GetFlyFrm();
- if( GOTOOBJ_FLY_ANY != ( GOTOOBJ_FLY_ANY & eType ) )
+ switch ( eType )
{
- switch ( eType )
- {
- case GOTOOBJ_FLY_FRM:
- if ( pFly->Lower() && pFly->Lower()->IsNoTxtFrm() )
- continue;
- break;
- case GOTOOBJ_FLY_GRF:
- if ( pFly->Lower() &&
- (pFly->Lower()->IsLayoutFrm() ||
- !((SwCntntFrm*)pFly->Lower())->GetNode()->GetGrfNode()))
- continue;
- break;
- case GOTOOBJ_FLY_OLE:
- if ( pFly->Lower() &&
- (pFly->Lower()->IsLayoutFrm() ||
- !((SwCntntFrm*)pFly->Lower())->GetNode()->GetOLENode()))
- continue;
- break;
- }
+ case GOTOOBJ_FLY_FRM:
+ if ( pFly->Lower() && pFly->Lower()->IsNoTxtFrm() )
+ continue;
+ break;
+ case GOTOOBJ_FLY_GRF:
+ if ( pFly->Lower() &&
+ (pFly->Lower()->IsLayoutFrm() ||
+ !((SwCntntFrm*)pFly->Lower())->GetNode()->GetGrfNode()))
+ continue;
+ break;
+ case GOTOOBJ_FLY_OLE:
+ if ( pFly->Lower() &&
+ (pFly->Lower()->IsLayoutFrm() ||
+ !((SwCntntFrm*)pFly->Lower())->GetNode()->GetOLENode()))
+ continue;
+ break;
}
- aCurPos = pFly->Frm().Pos();
}
- else
- aCurPos = pObj->GetCurrentBoundRect().TopLeft();
+ aCurPos = pFly->Frm().Pos();
+ }
+ else
+ aCurPos = pObj->GetCurrentBoundRect().TopLeft();
- // Sonderfall wenn ein anderes Obj auf selber Y steht.
- if( aCurPos != aPos && // nur wenn ich es nicht selber bin
- aCurPos.Y() == aPos.Y() && // ist die Y Position gleich
- (bNext? (aCurPos.X() > aPos.X()) : // liegt neben mir
- (aCurPos.X() < aPos.X())) ) // " reverse
+ // Sonderfall wenn ein anderes Obj auf selber Y steht.
+ if( aCurPos != aPos && // nur wenn ich es nicht selber bin
+ aCurPos.Y() == aPos.Y() && // ist die Y Position gleich
+ (bNext? (aCurPos.X() > aPos.X()) : // liegt neben mir
+ (aCurPos.X() < aPos.X())) ) // " reverse
+ {
+ aBestPos = Point( nTmp, nTmp );
+ SdrObjListIter aTmpIter( *pList, bFlat ? IM_FLAT : IM_DEEPNOGROUPS );
+ while ( aTmpIter.IsMore() )
{
- aBestPos = Point( nTmp, nTmp );
- for( ULONG i = 0; i < nObjs; ++i )
+ SdrObject* pTmpObj = aTmpIter.Next();
+ bFlyFrm = pTmpObj->ISA(SwVirtFlyDrawObj);
+ if( ( bNoFly && bFlyFrm ) || ( bNoDraw && !bFlyFrm ) )
+ continue;
+ if( bFlyFrm )
{
- SdrObject *pTmpObj = pList->GetObj( i );
- bFlyFrm = pTmpObj->ISA(SwVirtFlyDrawObj);
- if( ( bNoFly && bFlyFrm ) || ( bNoDraw && !bFlyFrm ) )
- continue;
- if( bFlyFrm )
- {
- SwVirtFlyDrawObj *pO = (SwVirtFlyDrawObj*)pTmpObj;
- aCurPos = pO->GetFlyFrm()->Frm().Pos();
- }
- else
- aCurPos = pTmpObj->GetCurrentBoundRect().TopLeft();
-
- if( aCurPos != aPos && aCurPos.Y() == aPos.Y() &&
- (bNext? (aCurPos.X() > aPos.X()) : // liegt neben mir
- (aCurPos.X() < aPos.X())) && // " reverse
- (bNext? (aCurPos.X() < aBestPos.X()) : // besser als Beste
- (aCurPos.X() > aBestPos.X())) ) // " reverse
- {
- aBestPos = aCurPos;
- pBest = pTmpObj;
- }
+ SwVirtFlyDrawObj *pO = (SwVirtFlyDrawObj*)pTmpObj;
+ aCurPos = pO->GetFlyFrm()->Frm().Pos();
}
- break;
- }
-
- if( (bNext? (aPos.Y() < aCurPos.Y()) : // nur unter mir
- (aPos.Y() > aCurPos.Y())) && // " reverse
- (bNext? (aBestPos.Y() > aCurPos.Y()) : // naeher drunter
- (aBestPos.Y() < aCurPos.Y())) || // " reverse
- (aBestPos.Y() == aCurPos.Y() &&
- (bNext? (aBestPos.X() > aCurPos.X()) : // weiter links
- (aBestPos.X() < aCurPos.X())))) // " reverse
-
- {
- aBestPos = aCurPos;
- pBest = pObj;
- }
+ else
+ aCurPos = pTmpObj->GetCurrentBoundRect().TopLeft();
- if( (bNext? (aTopPos.Y() > aCurPos.Y()) : // hoeher als Beste
- (aTopPos.Y() < aCurPos.Y())) || // " reverse
- (aTopPos.Y() == aCurPos.Y() &&
- (bNext? (aTopPos.X() > aCurPos.X()) : // weiter links
- (aTopPos.X() < aCurPos.X())))) // " reverse
- {
- aTopPos = aCurPos;
- pTop = pObj;
+ if( aCurPos != aPos && aCurPos.Y() == aPos.Y() &&
+ (bNext? (aCurPos.X() > aPos.X()) : // liegt neben mir
+ (aCurPos.X() < aPos.X())) && // " reverse
+ (bNext? (aCurPos.X() < aBestPos.X()) : // besser als Beste
+ (aCurPos.X() > aBestPos.X())) ) // " reverse
+ {
+ aBestPos = aCurPos;
+ pBest = pTmpObj;
+ }
}
+ break;
}
- // leider nichts gefunden
- if( (bNext? (aBestPos.X() == LONG_MAX) : (aBestPos.X() == 0)) )
- pBest = pTop;
- }
- if( pBest )
- {
- BOOL bFlyFrm = pBest->ISA(SwVirtFlyDrawObj);
- if( bFlyFrm )
+ if( (bNext? (aPos.Y() < aCurPos.Y()) : // nur unter mir
+ (aPos.Y() > aCurPos.Y())) && // " reverse
+ (bNext? (aBestPos.Y() > aCurPos.Y()) : // naeher drunter
+ (aBestPos.Y() < aCurPos.Y())) || // " reverse
+ (aBestPos.Y() == aCurPos.Y() &&
+ (bNext? (aBestPos.X() > aCurPos.X()) : // weiter links
+ (aBestPos.X() < aCurPos.X())))) // " reverse
+
{
- SwVirtFlyDrawObj *pO = (SwVirtFlyDrawObj*)pBest;
- const SwRect& rFrm = pO->GetFlyFrm()->Frm();
- SelectObj( rFrm.Pos(), 0, (SdrObject*)pBest );
- if( !ActionPend() )
- MakeVisible( rFrm );
+ aBestPos = aCurPos;
+ pBest = pObj;
}
- else
+
+ if( (bNext? (aTopPos.Y() > aCurPos.Y()) : // hoeher als Beste
+ (aTopPos.Y() < aCurPos.Y())) || // " reverse
+ (aTopPos.Y() == aCurPos.Y() &&
+ (bNext? (aTopPos.X() > aCurPos.X()) : // weiter links
+ (aTopPos.X() < aCurPos.X())))) // " reverse
{
- SelectObj( Point(), 0, (SdrObject*)pBest );
- if( !ActionPend() )
- MakeVisible( pBest->GetCurrentBoundRect() );
+ aTopPos = aCurPos;
+ pTop = pObj;
}
- CallChgLnk();
- bRet = TRUE;
}
- return bRet;
+ // leider nichts gefunden
+ if( (bNext? (aBestPos.X() == LONG_MAX) : (aBestPos.X() == 0)) )
+ pBest = pTop;
+ }
+
+ return pBest;
+}
+
+BOOL SwFEShell::GotoObj( BOOL bNext, USHORT /*GOTOOBJ_...*/ eType )
+{
+ const SdrObject* pBest = GetBestObject( bNext, eType );
+
+ if ( !pBest )
+ return FALSE;
+
+ BOOL bFlyFrm = pBest->ISA(SwVirtFlyDrawObj);
+ if( bFlyFrm )
+ {
+ SwVirtFlyDrawObj *pO = (SwVirtFlyDrawObj*)pBest;
+ const SwRect& rFrm = pO->GetFlyFrm()->Frm();
+ SelectObj( rFrm.Pos(), 0, (SdrObject*)pBest );
+ if( !ActionPend() )
+ MakeVisible( rFrm );
+ }
+ else
+ {
+ SelectObj( Point(), 0, (SdrObject*)pBest );
+ if( !ActionPend() )
+ MakeVisible( pBest->GetCurrentBoundRect() );
}
+ CallChgLnk();
+ return TRUE;
}
/*************************************************************************
@@ -2322,12 +2349,6 @@ bool SwFEShell::IsGroupAllowed() const
else
pUpGroup = pObj->GetUpGroup();
- // --> OD 2006-11-06 #130889# - make code robust
-// if ( bIsGroupAllowed &&
-// FLY_IN_CNTNT == ::FindFrmFmt( (SdrObject*)pObj )->GetAnchor().GetAnchorId() )
-// {
-// bIsGroupAllowed = false;
-// }
if ( bIsGroupAllowed )
{
SwFrmFmt* pFrmFmt( ::FindFrmFmt( const_cast<SdrObject*>(pObj) ) );
@@ -2342,7 +2363,6 @@ bool SwFEShell::IsGroupAllowed() const
bIsGroupAllowed = false;
}
}
- // <--
// OD 27.06.2003 #108784# - check, if all selected objects are in the
// same header/footer or not in header/footer.
diff --git a/sw/source/core/inc/SwGrammarMarkUp.hxx b/sw/source/core/inc/SwGrammarMarkUp.hxx
index ed3884a767f4..393c917bfc45 100644
--- a/sw/source/core/inc/SwGrammarMarkUp.hxx
+++ b/sw/source/core/inc/SwGrammarMarkUp.hxx
@@ -69,8 +69,6 @@ public:
/* getSentenceEnd returns the first start position of a sentence
which is greater than the given parameter */
xub_StrLen getSentenceEnd( xub_StrLen nPos );
- /* removeSentence removes all start positions in the given range */
- void removeSentence(xub_StrLen nStart, xub_StrLen nLength );
};
#endif
diff --git a/sw/source/core/inc/cellfrm.hxx b/sw/source/core/inc/cellfrm.hxx
index f737cecafd65..fb479fc86549 100644
--- a/sw/source/core/inc/cellfrm.hxx
+++ b/sw/source/core/inc/cellfrm.hxx
@@ -51,6 +51,10 @@ public:
virtual void Paint( const SwRect&, const SwPrtOptions *pPrintData = NULL ) const;
virtual void CheckDirection( BOOL bVert );
+ // --> OD 2010-02-17 #i103961#
+ virtual void Cut();
+ // <--
+
const SwTableBox *GetTabBox() const { return pTabBox; }
// used for breaking table rows:
diff --git a/sw/source/core/inc/doctxm.hxx b/sw/source/core/inc/doctxm.hxx
index 1372a82dbb6e..cb03e0531000 100644
--- a/sw/source/core/inc/doctxm.hxx
+++ b/sw/source/core/inc/doctxm.hxx
@@ -96,7 +96,7 @@ class SwTOXBaseSection : public SwTOXBase, public SwSection
SwTxtFmtColl* GetTxtFmtColl( USHORT nLevel );
public:
- SwTOXBaseSection( const SwTOXBase& rBase );
+ SwTOXBaseSection(SwTOXBase const& rBase, SwSectionFmt & rFmt);
virtual ~SwTOXBaseSection();
// OD 19.03.2003 #106329# - add parameter <_bNewTOX> in order to distinguish
diff --git a/sw/source/core/inc/frame.hxx b/sw/source/core/inc/frame.hxx
index 552555e925f9..e1560a230d7a 100644
--- a/sw/source/core/inc/frame.hxx
+++ b/sw/source/core/inc/frame.hxx
@@ -250,10 +250,6 @@ class SwFrm: public SwClient
friend SwFrm *SaveCntnt( SwLayoutFrm *, SwFrm* pStart = NULL );
friend void RestoreCntnt( SwFrm *, SwLayoutFrm *, SwFrm *pSibling, bool bGrow );
- //Checkt ob sich beim MakePos die Pos des Frm aendert oder nicht
- //layact.cxx
- friend BOOL CheckPos( SwFrm *pFrm );
-
#if OSL_DEBUG_LEVEL > 1
//entfernt leere SwSectionFrms aus einer Kette
friend SwFrm* SwClearDummies( SwFrm* pFrm );
diff --git a/sw/source/core/inc/pagefrm.hxx b/sw/source/core/inc/pagefrm.hxx
index 35e2ad6853bb..bc2fef9b8be4 100644
--- a/sw/source/core/inc/pagefrm.hxx
+++ b/sw/source/core/inc/pagefrm.hxx
@@ -33,6 +33,8 @@
#include "ftnboss.hxx"
#include <tools/mempool.hxx>
+#include <SidebarWindowsTypes.hxx>
+
class SwFlyFrm;
class SwFlyFrmFmt;
class SwPageDesc;
@@ -383,7 +385,7 @@ public:
static void GetBorderAndShadowBoundRect( const SwRect& _rPageRect,
ViewShell* _pViewShell,
SwRect& _orBorderAndShadowBoundRect,
- bool bRightSidebar );
+ const bool bRightSidebar );
static void PaintNotesSidebar(const SwRect& _rPageRect, ViewShell* _pViewShell, USHORT nPageNum, bool bRight);
static void PaintNotesSidebarArrows(const Point &aMiddleFirst, const Point &aMiddleSecond, ViewShell* _pViewShell, const Color aColorUp, const Color aColorDown);
@@ -393,7 +395,7 @@ public:
asks the page on which side a margin should be shown, e.g for notes
returns true for left side, false for right side
*/
- bool MarginSide() const;
+ sw::sidebarwindows::SidebarPosition SidebarPosition() const;
virtual bool FillSelection( SwSelectionList& rList, const SwRect& rRect ) const;
diff --git a/sw/source/core/inc/unometa.hxx b/sw/source/core/inc/unometa.hxx
index 771be61acc12..1f5c74612a81 100755
--- a/sw/source/core/inc/unometa.hxx
+++ b/sw/source/core/inc/unometa.hxx
@@ -33,12 +33,13 @@
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <com/sun/star/lang/XUnoTunnel.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/container/XChild.hpp>
#include <com/sun/star/container/XEnumerationAccess.hpp>
#include <com/sun/star/text/XTextContent.hpp>
#include <com/sun/star/text/XTextField.hpp>
#include <cppuhelper/implbase2.hxx>
-#include <cppuhelper/implbase5.hxx>
+#include <cppuhelper/implbase6.hxx>
#include <sfx2/Metadatable.hxx>
@@ -57,10 +58,11 @@ namespace sw {
class MetaField;
}
-typedef ::cppu::ImplInheritanceHelper5
+typedef ::cppu::ImplInheritanceHelper6
< ::sfx2::MetadatableMixin
, ::com::sun::star::lang::XUnoTunnel
, ::com::sun::star::lang::XServiceInfo
+, ::com::sun::star::container::XChild
, ::com::sun::star::container::XEnumerationAccess
, ::com::sun::star::text::XTextContent
, ::com::sun::star::text::XText
@@ -151,6 +153,17 @@ public:
::com::sun::star::lang::XEventListener > & xListener)
throw (::com::sun::star::uno::RuntimeException);
+ // XChild
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::uno::XInterface > SAL_CALL
+ getParent()
+ throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setParent(
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::uno::XInterface> const& xParent)
+ throw (::com::sun::star::uno::RuntimeException,
+ ::com::sun::star::lang::NoSupportException);
+
// XElementAccess
virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
throw (::com::sun::star::uno::RuntimeException);
diff --git a/sw/source/core/inc/viewimp.hxx b/sw/source/core/inc/viewimp.hxx
index 38fb3e2bac7a..0f89b3b75663 100644
--- a/sw/source/core/inc/viewimp.hxx
+++ b/sw/source/core/inc/viewimp.hxx
@@ -35,8 +35,8 @@
#include <tools/string.hxx>
-#include "swtypes.hxx"
-#include "swrect.hxx"
+#include <swtypes.hxx>
+#include <swrect.hxx>
class ViewShell;
class SwFlyFrm;
@@ -54,17 +54,10 @@ class SwAccessibleMap;
class SdrObject;
class Fraction;
class SwPrtOptions;
-// OD 12.12.2002 #103492#
class SwPagePreviewLayout;
-// OD 15.01.2003 #103492#
-#ifndef _PREVWPAGE_HXX
-#include <prevwpage.hxx>
-#endif
-// OD 15.01.2003 #103492#
+struct PrevwPage;
#include <vector>
-// --> OD 2005-12-01 #i27138#
class SwTxtFrm;
-// <--
class SwViewImp
{
@@ -175,7 +168,7 @@ private:
*/
void _InvalidateAccessibleParaTextSelection();
- /** invalidate attributes for paragraphs
+ /** invalidate attributes for paragraphs and paragraph's characters
OD 2009-01-06 #i88069#
implementation for wrapper method
diff --git a/sw/source/core/inc/wrong.hxx b/sw/source/core/inc/wrong.hxx
index 5c16c1171397..2f8c8047c96e 100644
--- a/sw/source/core/inc/wrong.hxx
+++ b/sw/source/core/inc/wrong.hxx
@@ -57,7 +57,13 @@ public:
: maType(rType), mxPropertyBag(xPropertyBag), mnPos(nPos), mnLen(nLen), mpSubList(pSubList) {}
};
-enum WrongListType { WRONGLIST_SPELL, WRONGLIST_GRAMMAR, WRONGLIST_SMARTTAG };
+enum WrongListType
+{
+ WRONGLIST_SPELL,
+ WRONGLIST_GRAMMAR,
+ WRONGLIST_SMARTTAG,
+ WRONGLIST_CHANGETRACKING
+};
class SwWrongList
{
diff --git a/sw/source/core/layout/layact.cxx b/sw/source/core/layout/layact.cxx
index 14bc23bb97a4..b51b2efc0a51 100644
--- a/sw/source/core/layout/layact.cxx
+++ b/sw/source/core/layout/layact.cxx
@@ -1460,15 +1460,23 @@ BOOL SwLayAction::FormatLayout( SwLayoutFrm *pLay, BOOL bAddRect )
//mod #i6193# added sidebar width
const SwPostItMgr* pPostItMgr = pImp->GetShell()->GetPostItMgr();
const int nSidebarWidth = pPostItMgr && pPostItMgr->HasNotes() && pPostItMgr->ShowNotes() ? pPostItMgr->GetSidebarWidth() + pPostItMgr->GetSidebarBorderWidth() : 0;
- if (pPageFrm->MarginSide())
+ switch ( pPageFrm->SidebarPosition() )
{
- aPaint.Left( aPaint.Left() - nBorderWidth - nSidebarWidth);
- aPaint.Right( aPaint.Right() + nBorderWidth + nShadowWidth);
- }
- else
- {
- aPaint.Left( aPaint.Left() - nBorderWidth );
- aPaint.Right( aPaint.Right() + nBorderWidth + nShadowWidth + nSidebarWidth);
+ case sw::sidebarwindows::SIDEBAR_LEFT:
+ {
+ aPaint.Left( aPaint.Left() - nBorderWidth - nSidebarWidth);
+ aPaint.Right( aPaint.Right() + nBorderWidth + nShadowWidth);
+ }
+ break;
+ case sw::sidebarwindows::SIDEBAR_RIGHT:
+ {
+ aPaint.Left( aPaint.Left() - nBorderWidth );
+ aPaint.Right( aPaint.Right() + nBorderWidth + nShadowWidth + nSidebarWidth);
+ }
+ break;
+ case sw::sidebarwindows::SIDEBAR_NONE:
+ // nothing to do
+ break;
}
aPaint.Top( aPaint.Top() - nBorderWidth );
aPaint.Bottom( aPaint.Bottom() + nBorderWidth + nShadowWidth);
@@ -1662,24 +1670,6 @@ BOOL SwLayAction::FormatLayoutFly( SwFlyFrm* pFly )
}
// OD 31.10.2002 #104100#
-// NOTE: no adjustments for vertical layout support necessary
-BOOL CheckPos( SwFrm *pFrm )
-{
- if ( !pFrm->GetValidPosFlag() )
- {
- Point aOld( pFrm->Frm().Pos() );
- pFrm->MakePos();
- if ( aOld != pFrm->Frm().Pos() )
- {
- pFrm->Frm().Pos( aOld );
- pFrm->_InvalidatePos();
- return FALSE;
- }
- }
- return TRUE;
-}
-
-// OD 31.10.2002 #104100#
// Implement vertical layout support
BOOL SwLayAction::FormatLayoutTab( SwTabFrm *pTab, BOOL bAddRect )
{
diff --git a/sw/source/core/layout/pagechg.cxx b/sw/source/core/layout/pagechg.cxx
index a2d32b3ab3bc..b45f1bcb2ceb 100644
--- a/sw/source/core/layout/pagechg.cxx
+++ b/sw/source/core/layout/pagechg.cxx
@@ -300,7 +300,7 @@ SwPageFrm::~SwPageFrm()
pImp->GetLayAction().SetAgain();
// OD 12.02.2003 #i9719#, #105645# - retouche area of page
// including border and shadow area.
- const bool bRightSidebar = !MarginSide();
+ const bool bRightSidebar = (SidebarPosition() == sw::sidebarwindows::SIDEBAR_RIGHT);
SwRect aRetoucheRect;
SwPageFrm::GetBorderAndShadowBoundRect( Frm(), pSh, aRetoucheRect, bRightSidebar );
pSh->AddPaintRect( aRetoucheRect );
@@ -655,7 +655,7 @@ void SwPageFrm::_UpdateAttr( SfxPoolItem *pOld, SfxPoolItem *pNew,
{
// OD 12.02.2003 #i9719#, #105645# - consider border and shadow of
// page frame for determine 'old' rectangle - it's used for invalidating.
- const bool bRightSidebar = !MarginSide();
+ const bool bRightSidebar = (SidebarPosition() == sw::sidebarwindows::SIDEBAR_RIGHT);
SwRect aOldRectWithBorderAndShadow;
SwPageFrm::GetBorderAndShadowBoundRect( aOldPageFrmRect, pSh, aOldRectWithBorderAndShadow, bRightSidebar );
pSh->InvalidateWindows( aOldRectWithBorderAndShadow );
@@ -1385,18 +1385,24 @@ SwPageFrm *SwFrm::InsertPage( SwPageFrm *pPrevPage, BOOL bFtn )
return pPage;
}
-// false = right, true = left
-bool SwPageFrm::MarginSide() const
+sw::sidebarwindows::SidebarPosition SwPageFrm::SidebarPosition() const
{
- if (!GetShell() || GetShell()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE))
- return false;
+ if ( !GetShell() ||
+ GetShell()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) )
+ {
+ // --> OD 2010-06-03 #i111964# - provide default sidebar position
+ return sw::sidebarwindows::SIDEBAR_RIGHT;
+ // <--
+ }
else
{
const bool bLTR = GetUpper() ? static_cast<const SwRootFrm*>(GetUpper())->IsLeftToRightViewLayout() : true;
const bool bBookMode = GetShell()->GetViewOptions()->IsViewLayoutBookMode();
const bool bRightSidebar = bLTR ? (!bBookMode || OnRightPage()) : (bBookMode && !OnRightPage());
- return !bRightSidebar;
+ return bRightSidebar
+ ? sw::sidebarwindows::SIDEBAR_RIGHT
+ : sw::sidebarwindows::SIDEBAR_LEFT;
}
}
@@ -2310,7 +2316,7 @@ void SwRootFrm::CheckViewLayout( const SwViewOption* pViewOpt, const SwRect* pVi
const SwTwips nCurrentPageWidth = pFormatPage->Frm().Width() + (pFormatPage->IsEmptyPage() ? 0 : nSidebarWidth);
const Point aOldPagePos = pPageToAdjust->Frm().Pos();
- const bool bLeftSidebar = pPageToAdjust->MarginSide();
+ const bool bLeftSidebar = pPageToAdjust->SidebarPosition() == sw::sidebarwindows::SIDEBAR_LEFT;
const SwTwips nLeftPageAddOffset = bLeftSidebar ?
nSidebarWidth :
0;
diff --git a/sw/source/core/layout/paintfrm.cxx b/sw/source/core/layout/paintfrm.cxx
index ee9671ac869f..09fc6b00e03d 100644
--- a/sw/source/core/layout/paintfrm.cxx
+++ b/sw/source/core/layout/paintfrm.cxx
@@ -2838,7 +2838,7 @@ void SwRootFrm::Paint( const SwRect& rRect, const SwPrtOptions *pPrintData ) con
// <--
{
const bool bPaintRightShadow = !bBookMode || (pPage == Lower()) || (!bLTR && !pPage->OnRightPage()) || (bLTR && pPage->OnRightPage());
- const bool bRightSidebar = !pPage->MarginSide();
+ const bool bRightSidebar = pPage->SidebarPosition() == sw::sidebarwindows::SIDEBAR_RIGHT;
if ( !pPage->IsEmptyPage() )
{
diff --git a/sw/source/core/layout/tabfrm.cxx b/sw/source/core/layout/tabfrm.cxx
index c3bccc695934..b747c4e7aaff 100644
--- a/sw/source/core/layout/tabfrm.cxx
+++ b/sw/source/core/layout/tabfrm.cxx
@@ -1680,62 +1680,6 @@ BOOL MA_FASTCALL lcl_InnerCalcLayout( SwFrm *pFrm,
return bRet;
}
-void MA_FASTCALL lcl_FirstTabCalc( SwTabFrm *pTab )
-{
- SWRECTFN( pTab )
- if ( !pTab->IsFollow() && !pTab->GetTable()->IsTblComplex() )
- {
- SwLayoutFrm* pRow = (SwLayoutFrm*)pTab->Lower();
- // --> FME 2006-07-17 #134526# TabFrm without a lower? Better we check
- // it before crashing. However, I still don't know how this can happen!
- while ( pRow )
- {
- SwLayoutFrm *pCell = (SwLayoutFrm*)pRow->Lower();
- SwFrm *pCnt = pCell->Lower();
- // --> OD 2006-11-08 #i70641# - make code robust
- if ( pCnt )
- {
- pCnt->Calc();
- const long nCellHeight = (pCell->Frm().*fnRect->fnGetHeight)();
- const long nCellY = (pCell->Frm().*fnRect->fnGetTop)()-1;
- const long nCntHeight = (pCnt->Frm().*fnRect->fnGetHeight)();
- const long nCntY = (pCnt->Frm().*fnRect->fnGetTop)()-1;
- if ( 0 != (pCell = (SwLayoutFrm*)pCell->GetNext()) )
- {
- do
- {
- (pCell->Frm().*fnRect->fnSetTopAndHeight)( nCellY, nCellHeight );
- (pCell->Prt().*fnRect->fnSetHeight)( nCellHeight );
- pCell->_InvalidateAll();
-
- pCnt = pCell->Lower();
- if ( pCnt )
- {
- (pCnt->Frm().*fnRect->fnSetTopAndHeight)(nCntY, nCntHeight);
- (pCnt->Prt().*fnRect->fnSetHeight)( nCntHeight );
- pCnt->_InvalidateAll();
- }
-
- pCell = (SwLayoutFrm*)pCell->GetNext();
- } while ( pCell );
- }
-
- SwTwips nRowTop = (pRow->Frm().*fnRect->fnGetTop)();
- SwTwips nUpBot = (pTab->GetUpper()->Frm().*fnRect->fnGetBottom)();
- if( (*fnRect->fnYDiff)( nUpBot, nRowTop ) < 0 )
- break;
- }
- // <--
- pRow = (SwLayoutFrm*)pRow->GetNext();
- }
- }
- SwFrm *pUp = pTab->GetUpper();
- long nBottom = (pUp->*fnRect->fnGetPrtBottom)();
- if ( pTab->GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) )
- nBottom += pUp->Grow( LONG_MAX, TRUE );
- lcl_CalcLowers( (SwLayoutFrm*)pTab->Lower(), pTab, LONG_MAX, false );
-}
-
void MA_FASTCALL lcl_RecalcRow( SwRowFrm& rRow, long nBottom )
{
// --> OD 2004-10-05 #i26945# - For correct appliance of the 'straightforward
@@ -2146,17 +2090,13 @@ void SwTabFrm::MakeAll()
if ( !bValidSize || !bValidPrtArea )
{
- // HB #i101593# no optimization as it leeds to not layouting certain nested tables
- // const BOOL bOptLower = (Frm().*fnRect->fnGetHeight)() == 0;
- const BOOL bOptLower = FALSE;
-
const long nOldPrtWidth = (Prt().*fnRect->fnGetWidth)();
const long nOldFrmWidth = (Frm().*fnRect->fnGetWidth)();
const Point aOldPrtPos = (Prt().*fnRect->fnGetPos)();
Format( pAttrs );
SwHTMLTableLayout *pLayout = GetTable()->GetHTMLTableLayout();
- if ( /*!bOptLower &&*/ pLayout &&
+ if ( pLayout &&
((Prt().*fnRect->fnGetWidth)() != nOldPrtWidth ||
(Frm().*fnRect->fnGetWidth)() != nOldFrmWidth) )
{
@@ -2167,100 +2107,8 @@ void SwTabFrm::MakeAll()
pAccess= new SwBorderAttrAccess( SwFrm::GetCache(), this );
pAttrs = pAccess->Get();
}
- if ( !bOptLower && aOldPrtPos != (Prt().*fnRect->fnGetPos)() )
+ if ( aOldPrtPos != (Prt().*fnRect->fnGetPos)() )
aNotify.SetLowersComplete( FALSE );
-
- if ( bOptLower && Lower() )
- {
- //MA 24. May. 95: Optimierungsversuch!
- //Ganz nigel nagel neu das Teil. Damit wir nicht n-fach
- //MakeAll'en formatieren wir flugs den Inhalt.
- //Das erste Format mussten wir allerdings abwarten, damit
- //die Breiten Stimmen!
- //MA: Fix, Kein Calc wenn evtl. noch Seitengebunde Flys
- //an den Cntnt haengen (siehe frmtool.cxx, ~SwCntntNotify).
- SwDoc *pDoc = GetFmt()->GetDoc();
- if ( !pDoc->GetSpzFrmFmts()->Count() ||
- pDoc->IsLoaded() || pDoc->IsNewDoc() )
- {
- //MA 28. Nov. 95: Und wieder ein Trick, gleich mal sehen
- //ob ein Rueckfluss lohnt.
- if ( bMoveable && !GetPrev() )
- {
- GetLeaf( MAKEPAGE_NONE, FALSE ); //setzt das BackMoveJump
- if ( SwFlowFrm::IsMoveBwdJump() )
- {
- BOOL bDummy;
- SwFtnBossFrm *pOldBoss = bFtnsInDoc ?
- FindFtnBossFrm( TRUE ) : 0;
- const BOOL bOldPrev = GetPrev() != 0;
- if ( MoveBwd( bDummy ) )
- {
- SWREFRESHFN( this )
- bMovedBwd = TRUE;
- if ( bFtnsInDoc )
- MoveLowerFtns( 0, pOldBoss, 0, TRUE );
-
- long nOldTop = (Frm().*fnRect->fnGetTop)();
- MakePos();
- if( nOldTop != (Frm().*fnRect->fnGetTop)() )
- {
- SwHTMLTableLayout *pHTMLLayout =
- GetTable()->GetHTMLTableLayout();
- if( pHTMLLayout )
- {
- delete pAccess;
- bCalcLowers |= pHTMLLayout->Resize(
- pHTMLLayout->GetBrowseWidthByTabFrm(
- *this ), FALSE );
- pAccess= new SwBorderAttrAccess(
- SwFrm::GetCache(), this );
- pAttrs = pAccess->Get();
- }
- }
-
- if ( bOldPrev != (0 != GetPrev()) )
- {
- //Abstand nicht vergessen!
- bValidPrtArea = FALSE;
- Format( pAttrs );
- }
- if ( bKeep && KEEPTAB )
- {
- // --> OD 2005-09-28 #b6329202#
- // Consider case that table is inside another
- // table, because it has to be avoided, that
- // superior table is formatted.
- // Thus, find next content, table or section
- // and, if a section is found, get its first
- // content.
-// SwFrm *pNxt = FindNextCnt();
-// // FindNextCnt geht ggf. in einen Bereich
-// // hinein, in eine Tabelle allerdings auch
-// if( pNxt && pNxt->IsInTab() )
-// pNxt = pNxt->FindTabFrm();
-// if ( pNxt )
-// {
-// pNxt->Calc();
-// if ( !GetNext() )
-// bValidPos = FALSE;
-// }
- if ( 0 != lcl_FormatNextCntntForKeep( this ) &&
- !GetNext() )
- {
- bValidPos = FALSE;
- }
- // <--
- }
- }
- }
- }
- ::lcl_FirstTabCalc( this );
- bValidSize = bValidPrtArea = FALSE;
- Format( pAttrs );
- aNotify.SetLowersComplete( TRUE );
- }
- }
}
//Wenn ich der erste einer Kette bin koennte ich mal sehen ob
@@ -4773,6 +4621,30 @@ void SwRowFrm::Cut()
{
pTab->FindMaster()->InvalidatePos();
}
+
+ // --> OD 2010-02-17 #i103961#
+ // notification for accessibility
+ {
+ SwRootFrm *pRootFrm = FindRootFrm();
+ if( pRootFrm && pRootFrm->IsAnyShellAccessible() )
+ {
+ ViewShell* pVSh = pRootFrm->GetCurrShell();
+ if ( pVSh && pVSh->Imp() )
+ {
+ SwFrm* pCellFrm( GetLower() );
+ while ( pCellFrm )
+ {
+ ASSERT( pCellFrm->IsCellFrm(),
+ "<SwRowFrm::Cut()> - unexpected type of SwRowFrm lower." );
+ pVSh->Imp()->DisposeAccessibleFrm( pCellFrm );
+
+ pCellFrm = pCellFrm->GetNext();
+ }
+ }
+ }
+ }
+ // <--
+
SwLayoutFrm::Cut();
}
@@ -5652,15 +5524,25 @@ long SwCellFrm::GetLayoutRowSpan() const
return nRet;
}
-/*************************************************************************
-|*
-|* SwCellFrm::Modify()
-|*
-|* Ersterstellung MA 20. Dec. 96
-|* Letzte Aenderung MA 20. Dec. 96
-|*
-|*************************************************************************/
+// --> OD 2010-02-17 #i103961#
+void SwCellFrm::Cut()
+{
+ // notification for accessibility
+ {
+ SwRootFrm *pRootFrm = FindRootFrm();
+ if( pRootFrm && pRootFrm->IsAnyShellAccessible() )
+ {
+ ViewShell* pVSh = pRootFrm->GetCurrShell();
+ if ( pVSh && pVSh->Imp() )
+ {
+ pVSh->Imp()->DisposeAccessibleFrm( this );
+ }
+ }
+ }
+ SwLayoutFrm::Cut();
+}
+// <--
//
// Helper functions for repeated headlines:
diff --git a/sw/source/core/layout/wsfrm.cxx b/sw/source/core/layout/wsfrm.cxx
index 5aff2f71b0d5..ade3efd4e70d 100644
--- a/sw/source/core/layout/wsfrm.cxx
+++ b/sw/source/core/layout/wsfrm.cxx
@@ -768,28 +768,6 @@ void SwFrm::Remove()
{
ASSERT( pUpper, "Removen ohne Upper?" );
- // --> OD 2004-09-27 #114344# - inform accessibility API - dispose table the
- // frame is in - before frame is 'removed from the layout' and
- // only for cell frames and row frames.
- if ( IsInTab() && ( IsRowFrm() || IsCellFrm() ) )
- {
- SwTabFrm* pTableFrm = FindTabFrm();
- if( pTableFrm != NULL &&
- pTableFrm->IsAccessibleFrm() &&
- pTableFrm->GetFmt() != NULL )
- {
- SwRootFrm *pRootFrm = pTableFrm->FindRootFrm();
- if( pRootFrm != NULL &&
- pRootFrm->IsAnyShellAccessible() )
- {
- ViewShell* pShell = pRootFrm->GetCurrShell();
- if( pShell != NULL )
- pShell->Imp()->DisposeAccessibleFrm( pTableFrm, sal_True );
- }
- }
- }
- // <--
-
if( pPrev )
// einer aus der Mitte wird removed
pPrev->pNext = pNext;
diff --git a/sw/source/core/swg/SwXMLSectionList.cxx b/sw/source/core/swg/SwXMLSectionList.cxx
index 69c77ad77226..a12693b8f72a 100644
--- a/sw/source/core/swg/SwXMLSectionList.cxx
+++ b/sw/source/core/swg/SwXMLSectionList.cxx
@@ -68,18 +68,22 @@ SvXMLImportContext *SwXMLSectionList::CreateContext(
{
SvXMLImportContext *pContext = 0;
- if (nPrefix == XML_NAMESPACE_OFFICE && IsXMLToken ( rLocalName, XML_BODY ) ||
- nPrefix == XML_NAMESPACE_TEXT &&
- (IsXMLToken ( rLocalName, XML_P ) ||
- IsXMLToken ( rLocalName, XML_H ) ||
- IsXMLToken ( rLocalName, XML_A ) ||
- IsXMLToken ( rLocalName, XML_SPAN ) ||
- IsXMLToken ( rLocalName, XML_SECTION ) ||
- IsXMLToken ( rLocalName, XML_INDEX_BODY ) ||
- IsXMLToken ( rLocalName, XML_INDEX_TITLE )||
- IsXMLToken ( rLocalName, XML_INSERTION ) ||
- IsXMLToken ( rLocalName, XML_DELETION ) ) )
+ if(( nPrefix == XML_NAMESPACE_OFFICE && IsXMLToken ( rLocalName, XML_BODY )) ||
+ ( nPrefix == XML_NAMESPACE_TEXT &&
+ (IsXMLToken ( rLocalName, XML_P ) ||
+ IsXMLToken ( rLocalName, XML_H ) ||
+ IsXMLToken ( rLocalName, XML_A ) ||
+ IsXMLToken ( rLocalName, XML_SPAN ) ||
+ IsXMLToken ( rLocalName, XML_SECTION ) ||
+ IsXMLToken ( rLocalName, XML_INDEX_BODY ) ||
+ IsXMLToken ( rLocalName, XML_INDEX_TITLE )||
+ IsXMLToken ( rLocalName, XML_INSERTION ) ||
+ IsXMLToken ( rLocalName, XML_DELETION ) )
+ )
+ )
+ {
pContext = new SvXMLSectionListContext (*this, nPrefix, rLocalName, xAttrList);
+ }
else
pContext = SvXMLImport::CreateContext( nPrefix, rLocalName, xAttrList );
return pContext;
diff --git a/sw/source/core/table/swtable.cxx b/sw/source/core/table/swtable.cxx
index c92b0aefb96c..281aac016e43 100644
--- a/sw/source/core/table/swtable.cxx
+++ b/sw/source/core/table/swtable.cxx
@@ -2726,3 +2726,160 @@ void SwTableBox_Impl::SetNewCol( Color** ppCol, const Color* pNewCol )
}
}
+struct SwTableCellInfo::Impl
+{
+ const SwTable * m_pTable;
+ const SwCellFrm * m_pCellFrm;
+ const SwTabFrm * m_pTabFrm;
+ typedef ::std::set<const SwTableBox *> TableBoxes_t;
+ TableBoxes_t m_HandledTableBoxes;
+
+public:
+ Impl()
+ : m_pTable(NULL), m_pCellFrm(NULL), m_pTabFrm(NULL)
+ {
+ }
+
+ ~Impl() {}
+
+ void setTable(const SwTable * pTable) {
+ m_pTable = pTable;
+ SwFrmFmt * pFrmFmt = m_pTable->GetFrmFmt();
+ SwClientIter aIter(*pFrmFmt);
+
+ m_pTabFrm =
+ static_cast<const SwTabFrm *>(aIter.First(TYPE(SwTabFrm)));
+
+ if (m_pTabFrm->IsFollow())
+ m_pTabFrm = m_pTabFrm->FindMaster(true);
+ }
+ const SwTable * getTable() const { return m_pTable; }
+
+ const SwCellFrm * getCellFrm() const { return m_pCellFrm; }
+
+ const SwFrm * getNextFrmInTable(const SwFrm * pFrm);
+ const SwCellFrm * getNextCellFrm(const SwFrm * pFrm);
+ const SwCellFrm * getNextTableBoxsCellFrm(const SwFrm * pFrm);
+ bool getNext();
+};
+
+const SwFrm * SwTableCellInfo::Impl::getNextFrmInTable(const SwFrm * pFrm)
+{
+ const SwFrm * pResult = NULL;
+
+ if (((! pFrm->IsTabFrm()) || pFrm == m_pTabFrm) && pFrm->GetLower())
+ pResult = pFrm->GetLower();
+ else if (pFrm->GetNext())
+ pResult = pFrm->GetNext();
+ else
+ {
+ while (pFrm->GetUpper() != NULL)
+ {
+ pFrm = pFrm->GetUpper();
+
+ if (pFrm->IsTabFrm())
+ {
+ m_pTabFrm = static_cast<const SwTabFrm *>(pFrm)->GetFollow();
+ pResult = m_pTabFrm;
+ break;
+ }
+ else if (pFrm->GetNext())
+ {
+ pResult = pFrm->GetNext();
+ break;
+ }
+ }
+ }
+
+ return pResult;
+}
+
+const SwCellFrm * SwTableCellInfo::Impl::getNextCellFrm(const SwFrm * pFrm)
+{
+ const SwCellFrm * pResult = NULL;
+
+ while ((pFrm = getNextFrmInTable(pFrm)) != NULL)
+ {
+ if (pFrm->IsCellFrm())
+ {
+ pResult = static_cast<const SwCellFrm *>(pFrm);
+ break;
+ }
+ }
+
+ return pResult;
+}
+
+const SwCellFrm * SwTableCellInfo::Impl::getNextTableBoxsCellFrm(const SwFrm * pFrm)
+{
+ const SwCellFrm * pResult = NULL;
+
+ while ((pFrm = getNextCellFrm(pFrm)) != NULL)
+ {
+ const SwCellFrm * pCellFrm = static_cast<const SwCellFrm *>(pFrm);
+ const SwTableBox * pTabBox = pCellFrm->GetTabBox();
+ TableBoxes_t::const_iterator aIt = m_HandledTableBoxes.find(pTabBox);
+
+ if (aIt == m_HandledTableBoxes.end())
+ {
+ pResult = pCellFrm;
+ m_HandledTableBoxes.insert(pTabBox);
+ break;
+ }
+ }
+
+ return pResult;
+}
+
+const SwCellFrm * SwTableCellInfo::getCellFrm() const
+{
+ return m_pImpl->getCellFrm();
+}
+
+bool SwTableCellInfo::Impl::getNext()
+{
+ if (m_pCellFrm == NULL)
+ {
+ if (m_pTabFrm != NULL)
+ m_pCellFrm = Impl::getNextTableBoxsCellFrm(m_pTabFrm);
+ }
+ else
+ m_pCellFrm = Impl::getNextTableBoxsCellFrm(m_pCellFrm);
+
+ return m_pCellFrm != NULL;
+}
+
+SwTableCellInfo::SwTableCellInfo(const SwTable * pTable)
+{
+ m_pImpl.reset(new Impl());
+ m_pImpl->setTable(pTable);
+}
+
+SwTableCellInfo::~SwTableCellInfo()
+{
+}
+
+bool SwTableCellInfo::getNext()
+{
+ return m_pImpl->getNext();
+}
+
+SwRect SwTableCellInfo::getRect() const
+{
+ SwRect aRet;
+
+ if (getCellFrm() != NULL)
+ aRet = getCellFrm()->Frm();
+
+ return aRet;
+}
+
+const SwTableBox * SwTableCellInfo::getTableBox() const
+{
+ const SwTableBox * pRet = NULL;
+
+ if (getCellFrm() != NULL)
+ pRet = getCellFrm()->GetTabBox();
+
+ return pRet;
+}
diff --git a/sw/source/core/text/EnhancedPDFExportHelper.cxx b/sw/source/core/text/EnhancedPDFExportHelper.cxx
index 697e99c96299..09c13b8fb250 100644
--- a/sw/source/core/text/EnhancedPDFExportHelper.cxx
+++ b/sw/source/core/text/EnhancedPDFExportHelper.cxx
@@ -1392,14 +1392,17 @@ void SwTaggedPDFHelper::BeginInlineStructureElements()
case POR_PARA :
{
SwTxtNode* pNd = (SwTxtNode*)pFrm->GetTxtNode();
- SwIndex aIndex( pNd, rInf.GetIdx() );
- const SwTxtAttr* pInetFmtAttr = pNd->GetTxtAttr( aIndex, RES_TXTATR_INETFMT );
+ SwTxtAttr const*const pInetFmtAttr =
+ pNd->GetTxtAttrAt(rInf.GetIdx(), RES_TXTATR_INETFMT);
String sStyleName;
if ( !pInetFmtAttr )
{
- const SwTxtAttr* pCharFmtAttr = pNd->GetTxtAttr( aIndex, RES_TXTATR_CHARFMT );
- const SwCharFmt* pCharFmt = pCharFmtAttr ? pCharFmtAttr->GetCharFmt().GetCharFmt() : 0;
+ ::std::vector<SwTxtAttr *> const charAttrs(
+ pNd->GetTxtAttrsAt(rInf.GetIdx(), RES_TXTATR_CHARFMT));
+ // TODO: handle more than 1 char style?
+ const SwCharFmt* pCharFmt = (charAttrs.size())
+ ? (*charAttrs.begin())->GetCharFmt().GetCharFmt() : 0;
if ( pCharFmt )
SwStyleNameMapper::FillProgName( pCharFmt->GetName(), sStyleName, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, sal_True );
}
diff --git a/sw/source/core/text/SwGrammarMarkUp.cxx b/sw/source/core/text/SwGrammarMarkUp.cxx
index 535e619e2708..cddf4519fd50 100644
--- a/sw/source/core/text/SwGrammarMarkUp.cxx
+++ b/sw/source/core/text/SwGrammarMarkUp.cxx
@@ -136,21 +136,6 @@ void SwGrammarMarkUp::setSentence( xub_StrLen nStart )
maSentence.insert( pIter, nStart );
}
-void SwGrammarMarkUp::removeSentence(xub_StrLen nStart, xub_StrLen nLength )
-{
- std::vector< xub_StrLen >::iterator pIter = maSentence.begin();
- while( pIter != maSentence.end() && *pIter < nStart )
- ++pIter;
- if( nLength == STRING_LEN )
- nStart = STRING_LEN;
- else
- nStart += nLength;
- std::vector< xub_StrLen >::iterator pLast = pIter;
- while( pLast != maSentence.end() && *pLast < nStart )
- ++pLast;
- maSentence.erase( pIter, pLast );
-}
-
xub_StrLen SwGrammarMarkUp::getSentenceStart( xub_StrLen nPos )
{
if( !maSentence.size() )
diff --git a/sw/source/core/text/inftxt.cxx b/sw/source/core/text/inftxt.cxx
index f7c96d9dc745..1fe2c363d70e 100644
--- a/sw/source/core/text/inftxt.cxx
+++ b/sw/source/core/text/inftxt.cxx
@@ -77,7 +77,7 @@
#include <doc.hxx>
#include <pam.hxx>
#include <SwGrammarMarkUp.hxx>
-
+#include <cstdio>
// --> FME 2004-06-08 #i12836# enhanced pdf export
#include <EnhancedPDFExportHelper.hxx>
// <--
@@ -276,6 +276,7 @@ SwTxtSizeInfo::SwTxtSizeInfo( const SwTxtSizeInfo &rNew )
bURLNotify( rNew.URLNotify() ),
bStopUnderFlow( rNew.StopUnderFlow() ),
bFtnInside( rNew.IsFtnInside() ),
+ bOtherThanFtnInside( rNew.IsOtherThanFtnInside() ),
bMulti( rNew.IsMulti() ),
bFirstMulti( rNew.IsFirstMulti() ),
bRuby( rNew.IsRuby() ),
@@ -373,7 +374,7 @@ void SwTxtSizeInfo::CtorInitTxtSizeInfo( SwTxtFrm *pFrame, SwFont *pNewFnt,
nIdx = nNewIdx;
nLen = nNewLen;
bNotEOL = sal_False;
- bStopUnderFlow = bFtnInside = sal_False;
+ bStopUnderFlow = bFtnInside = bOtherThanFtnInside = sal_False;
bMulti = bFirstMulti = bRuby = bHanging = bScriptSpace =
bForbiddenChars = sal_False;
@@ -400,6 +401,7 @@ SwTxtSizeInfo::SwTxtSizeInfo( const SwTxtSizeInfo &rNew, const XubString &rTxt,
bURLNotify( rNew.URLNotify() ),
bStopUnderFlow( rNew.StopUnderFlow() ),
bFtnInside( rNew.IsFtnInside() ),
+ bOtherThanFtnInside( rNew.IsOtherThanFtnInside() ),
bMulti( rNew.IsMulti() ),
bFirstMulti( rNew.IsFirstMulti() ),
bRuby( rNew.IsRuby() ),
@@ -1137,7 +1139,6 @@ void SwTxtPaintInfo::DrawPostIts( const SwLinePortion&, sal_Bool bScript ) const
}
}
-
void SwTxtPaintInfo::DrawCheckBox( const SwFieldFormPortion &rPor, bool checked) const
{
SwRect aIntersect;
@@ -1167,7 +1168,6 @@ void SwTxtPaintInfo::DrawCheckBox( const SwFieldFormPortion &rPor, bool checked)
pOut->Pop();
}
}
-
/*************************************************************************
* SwTxtPaintInfo::DrawBackGround()
*************************************************************************/
@@ -1323,8 +1323,8 @@ void SwTxtPaintInfo::_NotifyURL( const SwLinePortion &rPor ) const
if( aIntersect.HasArea() )
{
SwTxtNode *pNd = (SwTxtNode*)GetTxtFrm()->GetTxtNode();
- SwIndex aIndex( pNd, GetIdx() );
- SwTxtAttr *pAttr = pNd->GetTxtAttr( aIndex, RES_TXTATR_INETFMT );
+ SwTxtAttr *const pAttr =
+ pNd->GetTxtAttrAt(GetIdx(), RES_TXTATR_INETFMT);
if( pAttr )
{
const SwFmtINetFmt& rFmt = pAttr->GetINetFmt();
diff --git a/sw/source/core/text/inftxt.hxx b/sw/source/core/text/inftxt.hxx
index 69a4ed1f3fe6..382c58a6f5c6 100644
--- a/sw/source/core/text/inftxt.hxx
+++ b/sw/source/core/text/inftxt.hxx
@@ -208,6 +208,8 @@ protected:
sal_Bool bURLNotify : 1;
sal_Bool bStopUnderFlow : 1;// Underflow gestoppt z.B. von einer FlyPortion
sal_Bool bFtnInside : 1; // the current line contains a footnote
+ sal_Bool bOtherThanFtnInside : 1; // the current line contains another portion than a footnote portion.
+ // needed for checking keep together of footnote portion with previous portion
sal_Bool bMulti : 1; // inside a multiportion
sal_Bool bFirstMulti : 1; // this flag is used for two purposes:
// - the multiportion is the first lineportion
@@ -251,6 +253,8 @@ public:
inline void SetStopUnderFlow( const sal_Bool bNew ) { bStopUnderFlow = bNew; }
inline sal_Bool IsFtnInside() const { return bFtnInside; }
inline void SetFtnInside( const sal_Bool bNew ) { bFtnInside = bNew; }
+ inline sal_Bool IsOtherThanFtnInside() const { return bOtherThanFtnInside; }
+ inline void SetOtherThanFtnInside( const sal_Bool bNew ) { bOtherThanFtnInside = bNew; }
inline sal_Bool IsMulti() const { return bMulti; }
inline void SetMulti( const sal_Bool bNew ) { bMulti = bNew; }
inline sal_Bool IsFirstMulti() const { return bFirstMulti; }
@@ -470,7 +474,7 @@ public:
inline void DrawBackBrush( const SwLinePortion &rPor ) const
{ /* if( pFnt->GetBackColor() ) */ _DrawBackBrush( rPor ); }
- void DrawCheckBox( const SwFieldFormPortion &rPor, bool checked) const;
+ void DrawCheckBox( const SwFieldFormPortion &rPor, bool checked) const;
inline void NotifyURL( const SwLinePortion &rPor ) const
{ if( URLNotify() ) _NotifyURL( rPor ); }
diff --git a/sw/source/core/text/itrcrsr.cxx b/sw/source/core/text/itrcrsr.cxx
index 438f7c246287..34c0a9843986 100644
--- a/sw/source/core/text/itrcrsr.cxx
+++ b/sw/source/core/text/itrcrsr.cxx
@@ -57,6 +57,9 @@
#include "pordrop.hxx"
#include "crstate.hxx" // SwCrsrMoveState
#include <pormulti.hxx> // SwMultiPortion
+// --> OD 2010-05-05 #i111284#
+#include <numrule.hxx>
+// <--
// Nicht reentrant !!!
// wird in GetCharRect gesetzt und im UnitUp/Down ausgewertet.
@@ -143,6 +146,27 @@ void lcl_GetCharRectInsideField( SwTxtSizeInfo& rInf, SwRect& rOrig,
}
}
+// --> OD 2010-05-05 #i111284#
+namespace {
+ bool AreListLevelIndentsApplicableAndLabelAlignmentActive( const SwTxtNode& rTxtNode )
+ {
+ bool bRet( false );
+
+ if ( rTxtNode.AreListLevelIndentsApplicable() )
+ {
+ const SwNumFmt& rNumFmt =
+ rTxtNode.GetNumRule()->Get( static_cast<USHORT>(rTxtNode.GetActualListLevel()) );
+ if ( rNumFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_ALIGNMENT )
+ {
+ bRet = true;
+ }
+ }
+
+ return bRet;
+ }
+} // end of anonymous namespace
+// <--
+
/*************************************************************************
* SwTxtMargin::CtorInitTxtMargin()
*************************************************************************/
@@ -156,7 +180,9 @@ void SwTxtMargin::CtorInitTxtMargin( SwTxtFrm *pNewFrm, SwTxtSizeInfo *pNewInf )
const SvxLRSpaceItem &rSpace = pFrm->GetTxtNode()->GetSwAttrSet().GetLRSpace();
// --> OD 2009-09-08 #i95907#, #b6879723#
- const bool bListLevelIndentsApplicable = pFrm->GetTxtNode()->AreListLevelIndentsApplicable();
+ // --> OD 2010-05-05 #i111284#
+ const bool bListLevelIndentsApplicableAndLabelAlignmentActive(
+ AreListLevelIndentsApplicableAndLabelAlignmentActive( *(pFrm->GetTxtNode()) ) );
// <--
//
@@ -181,9 +207,10 @@ void SwTxtMargin::CtorInitTxtMargin( SwTxtFrm *pNewFrm, SwTxtSizeInfo *pNewInf )
nLMWithNum -
pNode->GetLeftMarginWithNum( sal_False ) -
// --> OD 2009-09-08 #i95907#, #b6879723#
+ // --> OD 2010-05-05 #i111284#
// rSpace.GetLeft() +
// rSpace.GetTxtLeft();
- ( bListLevelIndentsApplicable
+ ( bListLevelIndentsApplicableAndLabelAlignmentActive
? 0
: ( rSpace.GetLeft() - rSpace.GetTxtLeft() ) );
// <--
@@ -191,8 +218,9 @@ void SwTxtMargin::CtorInitTxtMargin( SwTxtFrm *pNewFrm, SwTxtSizeInfo *pNewInf )
else
{
// --> OD 2009-09-08 #i95907#, #b6879723#
+ // --> OD 2010-05-05 #i111284#
// if ( !pNode->getIDocumentSettingAccess()->get(IDocumentSettingAccess::IGNORE_FIRST_LINE_INDENT_IN_NUMBERING) )
- if ( bListLevelIndentsApplicable ||
+ if ( bListLevelIndentsApplicableAndLabelAlignmentActive ||
!pNode->getIDocumentSettingAccess()->get(IDocumentSettingAccess::IGNORE_FIRST_LINE_INDENT_IN_NUMBERING) )
// <--
{
@@ -202,9 +230,10 @@ void SwTxtMargin::CtorInitTxtMargin( SwTxtFrm *pNewFrm, SwTxtSizeInfo *pNewInf )
nLMWithNum -
pNode->GetLeftMarginWithNum( sal_False ) -
// --> OD 2009-09-08 #i95907#, #b6879723#
+ // --> OD 2010-05-05 #i111284#
// rSpace.GetLeft() +
// rSpace.GetTxtLeft();
- ( bListLevelIndentsApplicable
+ ( bListLevelIndentsApplicableAndLabelAlignmentActive
? 0
: ( rSpace.GetLeft() - rSpace.GetTxtLeft() ) );
// <--
@@ -292,10 +321,11 @@ void SwTxtMargin::CtorInitTxtMargin( SwTxtFrm *pNewFrm, SwTxtSizeInfo *pNewInf )
nFirstLineOfs = nFLOfst;
// --> OD 2009-09-08 #i95907#, #b6879723#
+ // --> OD 2010-05-05 #i111284#
// if ( pFrm->IsRightToLeft() ||
// !pNode->getIDocumentSettingAccess()->get(IDocumentSettingAccess::IGNORE_FIRST_LINE_INDENT_IN_NUMBERING) )
if ( pFrm->IsRightToLeft() ||
- bListLevelIndentsApplicable ||
+ bListLevelIndentsApplicableAndLabelAlignmentActive ||
!pNode->getIDocumentSettingAccess()->get(IDocumentSettingAccess::IGNORE_FIRST_LINE_INDENT_IN_NUMBERING) )
// <--
{
diff --git a/sw/source/core/text/itrform2.cxx b/sw/source/core/text/itrform2.cxx
index 84f877ed3328..c7527b372554 100644
--- a/sw/source/core/text/itrform2.cxx
+++ b/sw/source/core/text/itrform2.cxx
@@ -349,6 +349,8 @@ void SwTxtFormatter::InsertPortion( SwTxtFormatInfo &rInf,
}
pLast->Insert( pPor );
+ rInf.SetOtherThanFtnInside( rInf.IsOtherThanFtnInside() || !pPor->IsFtnPortion() );
+
// Maxima anpassen:
if( pCurr->Height() < pPor->Height() )
pCurr->Height( pPor->Height() );
@@ -1533,6 +1535,7 @@ xub_StrLen SwTxtFormatter::FormatLine( const xub_StrLen nStartPos )
while( bBuild )
{
GetInfo().SetFtnInside( sal_False );
+ GetInfo().SetOtherThanFtnInside( sal_False );
// These values must not be reset by FormatReset();
sal_Bool bOldNumDone = GetInfo().IsNumDone();
diff --git a/sw/source/core/text/porfld.cxx b/sw/source/core/text/porfld.cxx
index 1a05aa38098a..59edb6fa59c9 100644
--- a/sw/source/core/text/porfld.cxx
+++ b/sw/source/core/text/porfld.cxx
@@ -416,6 +416,12 @@ sal_Bool SwFldPortion::Format( SwTxtFormatInfo &rInf )
// case CHAR_RLM :
// case CHAR_LRM :
// <--
+ // --> OD 2010-06-03 #i111750#
+ // - Erasing further control characters from field string in
+ // to avoid loop.
+ case CH_TXTATR_BREAKWORD:
+ case CH_TXTATR_INWORD:
+ // <--
{
aNew.Erase( 0, 1 );
++nNextOfst;
diff --git a/sw/source/core/text/porlay.cxx b/sw/source/core/text/porlay.cxx
index 0d34140d4058..dd2c1c3a1d38 100644
--- a/sw/source/core/text/porlay.cxx
+++ b/sw/source/core/text/porlay.cxx
@@ -125,11 +125,6 @@ sal_Bool isHahChar ( xub_Unicode cCh )
|| cCh == 0x6BF );
}
-sal_Bool isTahChar ( xub_Unicode cCh )
-{
- return ( cCh == 0x637 || cCh == 0x638 || cCh == 0x69F );
-}
-
sal_Bool isAinChar ( xub_Unicode cCh )
{
return ( cCh == 0x639 || cCh == 0x63A || cCh == 0x6A0 || cCh == 0x6FC );
diff --git a/sw/source/core/text/portxt.cxx b/sw/source/core/text/portxt.cxx
index b1d236cb0471..a849cbe42f40 100644
--- a/sw/source/core/text/portxt.cxx
+++ b/sw/source/core/text/portxt.cxx
@@ -394,12 +394,16 @@ sal_Bool SwTxtPortion::_Format( SwTxtFormatInfo &rInf )
}
// case C1
// - Footnote portions with fake line start (i.e., not at beginning of line)
- // should keep together with the text portion.
+ // should keep together with the text portion. (Note: no keep together
+ // with only footnote portions.
// - TabPortions not at beginning of line should keep together with the
// text portion, if they are not followed by a blank
// (work around different definition of tab stop character - breaking or
// non breaking character - in compatibility mode)
- else if ( ( IsFtnPortion() && rInf.IsFakeLineStart() ) ||
+ else if ( ( IsFtnPortion() && rInf.IsFakeLineStart() &&
+ // --> OD 2010-01-29 #b6921213#
+ rInf.IsOtherThanFtnInside() ) ||
+ // <--
( rInf.GetLast() &&
rInf.GetTxtFrm()->GetTxtNode()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::TAB_COMPAT) &&
rInf.GetLast()->InTabGrp() &&
diff --git a/sw/source/core/text/txtfly.cxx b/sw/source/core/text/txtfly.cxx
index 6c48aeeb181d..db245de1e28b 100644
--- a/sw/source/core/text/txtfly.cxx
+++ b/sw/source/core/text/txtfly.cxx
@@ -2341,84 +2341,6 @@ SwRect SwTxtFly::AnchoredObjToRect( const SwAnchoredObject* pAnchoredObj,
// Beidseitiger Umfluss bis zu einer Rahmenbreite von maximal 1,5 cm
#define FRAME_MAX 850
-//_FlyCntnt SwTxtFly::CalcSmart( const SdrObject *pObj ) const
-//{
-// _FlyCntnt eOrder;
-
-// // 11839: Nur die X-Positionen sind interessant, die Y-Positionen des
-// // CurrentFrames koennen sich noch aendern (wachsen).
-
-// SWRECTFN( pCurrFrm )
-// const long nCurrLeft = (pCurrFrm->*fnRect->fnGetPrtLeft)();
-// const long nCurrRight = (pCurrFrm->*fnRect->fnGetPrtRight)();
-// const SwRect aRect( GetBoundRect( pObj ) );
-// long nFlyLeft = (aRect.*fnRect->fnGetLeft)();
-// long nFlyRight = (aRect.*fnRect->fnGetRight)();
-
-// if ( nFlyRight < nCurrLeft || nFlyLeft > nCurrRight )
-// eOrder = SURROUND_PARALLEL;
-// else
-// {
-// long nLeft = nFlyLeft - nCurrLeft;
-// long nRight = nCurrRight - nFlyRight;
-// if( nFlyRight - nFlyLeft > FRAME_MAX )
-// {
-// if( nLeft < nRight )
-// nLeft = 0;
-// else
-// nRight = 0;
-// }
-// if( nLeft < TEXT_MIN )
-// nLeft = 0;
-// if( nRight < TEXT_MIN )
-// nRight = 0;
-// if( nLeft )
-// eOrder = nRight ? SURROUND_PARALLEL : SURROUND_LEFT;
-// else
-// eOrder = nRight ? SURROUND_RIGHT: SURROUND_NONE;
-// }
-
-// return eOrder;
-//}
-
-/*************************************************************************
- * SwTxtFly::GetOrder()
- *************************************************************************/
-
-//_FlyCntnt SwTxtFly::GetOrder( const SdrObject *pObj ) const
-//{
-// const SwFrmFmt *pFmt = ((SwContact*)GetUserCall(pObj))->GetFmt();
-// const SwFmtSurround &rFlyFmt = pFmt->GetSurround();
-// _FlyCntnt eOrder = rFlyFmt.GetSurround();
-
-// if( rFlyFmt.IsAnchorOnly() && &lcl_TheAnchor( pObj ) != GetMaster() )
-// {
-// const SwFmtAnchor& rAnchor = pFmt->GetAnchor();
-// if( FLY_AT_CNTNT == rAnchor.GetAnchorId() ||
-// FLY_AUTO_CNTNT == rAnchor.GetAnchorId() )
-// return SURROUND_NONE;
-// }
-
-// Beim Durchlauf und Nowrap wird smart ignoriert.
-// if( SURROUND_THROUGHT == eOrder || SURROUND_NONE == eOrder )
-// return eOrder;
-
-// left is left and right is right
-// if ( pCurrFrm->IsRightToLeft() )
-// {
-// if ( SURROUND_LEFT == eOrder )
-// eOrder = SURROUND_RIGHT;
-// else if ( SURROUND_RIGHT == eOrder )
-// eOrder = SURROUND_LEFT;
-// }
-
-// "idealer Seitenumlauf":
-// if( SURROUND_IDEAL == eOrder )
-// eOrder = CalcSmart( pObj ); //Bei SMART wird die Order automatisch berechnet:
-
-// return eOrder;
-//}
-
SwSurround SwTxtFly::_GetSurroundForTextWrap( const SwAnchoredObject* pAnchoredObj ) const
{
const SwFrmFmt* pFmt = &(pAnchoredObj->GetFrmFmt());
diff --git a/sw/source/core/text/txtfrm.cxx b/sw/source/core/text/txtfrm.cxx
index 16fbc589c16d..0861f98b2ddf 100644
--- a/sw/source/core/text/txtfrm.cxx
+++ b/sw/source/core/text/txtfrm.cxx
@@ -1026,6 +1026,13 @@ void SwTxtFrm::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew )
SET_SCRIPT_INVAL( nPos )
}
}
+
+ // --> OD 2010-02-16 #i104008#
+ if ( GetShell() )
+ {
+ GetShell()->InvalidateAccessibleParaAttrs( *this );
+ }
+ // <--
}
break;
case RES_OBJECTDYING:
diff --git a/sw/source/core/text/txttab.cxx b/sw/source/core/text/txttab.cxx
index 5c1598c4db0b..0fd88876532b 100644
--- a/sw/source/core/text/txttab.cxx
+++ b/sw/source/core/text/txttab.cxx
@@ -172,6 +172,11 @@ SwTabPortion *SwTxtFormatter::NewTabPortion( SwTxtFormatInfo &rInf, bool bAuto )
cDec = pTabStop->GetDecimal();
eAdj = pTabStop->GetAdjustment();
nNextPos = pTabStop->GetTabPos();
+ if(!bTabsRelativeToIndent && eAdj == SVX_TAB_ADJUST_DEFAULT && nSearchPos < 0)
+ {
+ //calculate default tab position of default tabs in negative indent
+ nNextPos = ( nSearchPos / nNextPos ) * nNextPos;
+ }
}
else
{
@@ -189,13 +194,8 @@ SwTabPortion *SwTxtFormatter::NewTabPortion( SwTxtFormatInfo &rInf, bool bAuto )
}
SwTwips nCount = nSearchPos;
- // Bei negativen Werten rundet "/" auf, "%" liefert negative Reste,
- // bei positiven Werten rundet "/" ab, "%" liefert positvie Reste!
- if ( nCount < 0 )
- nCount = 0;
-
nCount /= nDefTabDist;
- nNextPos = ( nCount + 1 ) * nDefTabDist ;
+ nNextPos = nCount < 0 || (!nCount && nSearchPos <= 0)? nCount * nDefTabDist :( nCount + 1 ) * nDefTabDist ;
// --> FME 2004-09-21 #117919 Minimum tab stop width is 1 or 51 twips:
const SwTwips nMinimumTabWidth = pFrm->GetTxtNode()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::TAB_COMPAT) ? 0 : 50;
// <--
diff --git a/sw/source/core/tox/txmsrt.cxx b/sw/source/core/tox/txmsrt.cxx
index 5cfffeaf5229..61f873b010b7 100644
--- a/sw/source/core/tox/txmsrt.cxx
+++ b/sw/source/core/tox/txmsrt.cxx
@@ -870,8 +870,9 @@ USHORT SwTOXAuthority::GetLevel() const
-----------------------------------------------------------------------*/
void SwTOXAuthority::_GetText( String& rTxt, String& )
{
- //
- rTxt = m_rField.GetFld()->Expand();
+ bool const isClipBoard(
+ m_rField.GetTxtFld()->GetTxtNode().GetDoc()->IsClipBoard());
+ rTxt = m_rField.GetFld()->ExpandField(isClipBoard);
}
/* -----------------21.09.99 12:50-------------------
diff --git a/sw/source/core/txtnode/atrfld.cxx b/sw/source/core/txtnode/atrfld.cxx
index 3ddd3189bf6c..6b1adc76fbec 100644
--- a/sw/source/core/txtnode/atrfld.cxx
+++ b/sw/source/core/txtnode/atrfld.cxx
@@ -32,6 +32,7 @@
#include <fmtfld.hxx>
#include <txtfld.hxx>
#include <docufld.hxx>
+#include <doc.hxx>
#include "reffld.hxx"
#include "ddefld.hxx"
@@ -68,7 +69,7 @@ SwFmtFld::SwFmtFld( const SwField &rFld )
SwClient( rFld.GetTyp() ),
pTxtAttr( 0 )
{
- pField = rFld.Copy();
+ pField = rFld.CopyField();
}
// #i24434#
@@ -83,7 +84,7 @@ SwFmtFld::SwFmtFld( const SwFmtFld& rAttr )
if(rAttr.GetFld())
{
rAttr.GetFld()->GetTyp()->Add(this);
- pField = rAttr.GetFld()->Copy();
+ pField = rAttr.GetFld()->CopyField();
}
}
@@ -157,14 +158,16 @@ void SwFmtFld::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew )
if( !pTxtAttr )
return;
+ // don't do anything, especially not expand!
+ if( pNew && pNew->Which() == RES_OBJECTDYING )
+ return;
+
SwTxtNode* pTxtNd = (SwTxtNode*)&pTxtAttr->GetTxtNode();
ASSERT( pTxtNd, "wo ist denn mein Node?" );
if( pNew )
{
switch( pNew->Which() )
{
- case RES_OBJECTDYING:
- return; // don't do anything, especially not expand!
case RES_TXTATR_FLDCHG:
// "Farbe hat sich geaendert !"
// this, this fuer "nur Painten"
@@ -189,6 +192,8 @@ void SwFmtFld::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew )
case RES_FMT_CHG:
pTxtNd->Modify( pOld, pNew );
return;
+ default:
+ break;
}
}
@@ -254,9 +259,10 @@ BOOL SwFmtFld::IsProtect() const
|*
*************************************************************************/
-SwTxtFld::SwTxtFld( SwFmtFld& rAttr, xub_StrLen nStartPos )
+SwTxtFld::SwTxtFld(SwFmtFld & rAttr, xub_StrLen const nStartPos,
+ bool const bInClipboard)
: SwTxtAttr( rAttr, nStartPos )
- , m_aExpand( rAttr.GetFld()->Expand() )
+ , m_aExpand( rAttr.GetFld()->ExpandField(bInClipboard) )
, m_pTxtNode( 0 )
{
rAttr.pTxtAttr = this;
@@ -265,6 +271,11 @@ SwTxtFld::SwTxtFld( SwFmtFld& rAttr, xub_StrLen nStartPos )
SwTxtFld::~SwTxtFld( )
{
+ SwFmtFld & rFmtFld( static_cast<SwFmtFld &>(GetAttr()) );
+ if (this == rFmtFld.pTxtAttr)
+ {
+ rFmtFld.pTxtAttr = 0; // #i110140# invalidate!
+ }
}
/*************************************************************************
@@ -283,7 +294,8 @@ void SwTxtFld::Expand() const
ASSERT( m_pTxtNode, "SwTxtFld: where is my TxtNode?" );
const SwField* pFld = GetFld().GetFld();
- XubString aNewExpand( pFld->Expand() );
+ XubString aNewExpand(
+ pFld->ExpandField(m_pTxtNode->GetDoc()->IsClipBoard()) );
if( aNewExpand == m_aExpand )
{
diff --git a/sw/source/core/txtnode/atrftn.cxx b/sw/source/core/txtnode/atrftn.cxx
index 7d6b8959787b..45f6c5da2baf 100644
--- a/sw/source/core/txtnode/atrftn.cxx
+++ b/sw/source/core/txtnode/atrftn.cxx
@@ -289,39 +289,45 @@ void SwTxtFtn::SetNumber( const USHORT nNewNum, const XubString* pStr )
}
// Die Fussnoten duplizieren
-void SwTxtFtn::CopyFtn( SwTxtFtn *pDest ) const
+void SwTxtFtn::CopyFtn(SwTxtFtn & rDest, SwTxtNode & rDestNode) const
{
- if ( m_pStartNode && pDest->GetStartNode() )
+ if (m_pStartNode && !rDest.GetStartNode())
{
- // die Fussnoten koennen in unterschiedlichen Dokumenten stehen !!
- SwDoc* pDstDoc = pDest->m_pTxtNode->GetDoc();
+ // dest missing node section? create it here!
+ // (happens in SwTxtNode::CopyText if pDest == this)
+ rDest.MakeNewTextSection( rDestNode.GetNodes() );
+ }
+ if (m_pStartNode && rDest.GetStartNode())
+ {
+ // footnotes not necessarily in same document!
+ SwDoc *const pDstDoc = rDestNode.GetDoc();
SwNodes &rDstNodes = pDstDoc->GetNodes();
- // Wir kopieren nur den Inhalt der Sektion
+ // copy only the content of the section
SwNodeRange aRg( *m_pStartNode, 1,
*m_pStartNode->GetNode().EndOfSectionNode() );
- // Wir fuegen auf dem Ende von pDest ein, d.h. die Nodes
- // werden angehaengt. nDestLen haelt die Anzahl der CntNodes
- // in pDest _vor_ dem Kopieren.
- SwNodeIndex aStart( *(pDest->GetStartNode()) );
+ // insert at the end of rDest, i.e., the nodes are appended.
+ // nDestLen contains number of CntntNodes in rDest _before_ copy.
+ SwNodeIndex aStart( *(rDest.GetStartNode()) );
SwNodeIndex aEnd( *aStart.GetNode().EndOfSectionNode() );
ULONG nDestLen = aEnd.GetIndex() - aStart.GetIndex() - 1;
m_pTxtNode->GetDoc()->CopyWithFlyInFly( aRg, 0, aEnd, TRUE );
- // Wenn die Dest-Sektion nicht leer war, so muessen die alten
- // Nodes geloescht werden:
- // Vorher: Src: SxxxE, Dst: SnE
- // Nachher: Src: SxxxE, Dst: SnxxxE
- // und Src: SxxxE, Dst: SxxxE
+ // in case the destination section was not empty, delete the old nodes
+ // before: Src: SxxxE, Dst: SnE
+ // now: Src: SxxxE, Dst: SnxxxE
+ // after: Src: SxxxE, Dst: SxxxE
aStart++;
rDstNodes.Delete( aStart, nDestLen );
}
- // Der benutzerdefinierte String muss auch uebertragen werden.
+ // also copy user defined number string
if( GetFtn().aNumber.Len() )
- ((SwFmtFtn&)pDest->GetFtn()).aNumber = GetFtn().aNumber;
+ {
+ const_cast<SwFmtFtn &>(rDest.GetFtn()).aNumber = GetFtn().aNumber;
+ }
}
diff --git a/sw/source/core/txtnode/fntcache.cxx b/sw/source/core/txtnode/fntcache.cxx
index 7b08a0cb87e4..ff79d2266ba7 100644
--- a/sw/source/core/txtnode/fntcache.cxx
+++ b/sw/source/core/txtnode/fntcache.cxx
@@ -444,8 +444,6 @@ USHORT SwFntObj::GetFontLeading( const ViewShell *pSh, const OutputDevice& rOut
void SwFntObj::CreateScrFont( const ViewShell& rSh, const OutputDevice& rOut )
{
-static sal_Char __READONLY_DATA sStandardString[] = "Dies ist der Teststring";
-
if ( pScrFont )
return;
@@ -481,6 +479,10 @@ static sal_Char __READONLY_DATA sStandardString[] = "Dies ist der Teststring";
pScrFont = pPrtFont;
FontMetric aMet = pPrt->GetFontMetric( );
+ //Don't loose "faked" properties of the logical font that don't truly
+ //exist in the physical font metrics which vcl which fake up for us
+ aMet.SetWeight(pScrFont->GetWeight());
+ aMet.SetItalic(pScrFont->GetItalic());
bSymbol = RTL_TEXTENCODING_SYMBOL == aMet.GetCharSet();
@@ -490,178 +492,6 @@ static sal_Char __READONLY_DATA sStandardString[] = "Dies ist der Teststring";
if ( USHRT_MAX == nExtLeading )
nExtLeading = static_cast<USHORT>(aMet.GetExtLeading());
-#if OSL_DEBUG_LEVEL > 1
- const XubString aDbgTxt1( pPrtFont->GetName() );
- const XubString aDbgTxt2( aMet.GetName() );
-#endif
-
- if ( aMet.IsDeviceFont( ) )
- {
- if ( (RTL_TEXTENCODING_DONTKNOW == pPrtFont->GetCharSet() ||
- FAMILY_DONTKNOW == pPrtFont->GetFamily() ||
- PITCH_DONTKNOW == pPrtFont->GetPitch() ) &&
- (RTL_TEXTENCODING_DONTKNOW == aMet.GetCharSet() ||
- FAMILY_DONTKNOW == aMet.GetFamily() ||
- PITCH_DONTKNOW == aMet.GetPitch() ) )
- {
- // Das folgende ist teuer, aber selten: ein unbekannter Font
- // kann vom Drucker nicht vernuenftig zugeordnet werden. Dann
- // nehmen wir eben das Mapping des Bildschirms in Anspruch und
- // setzen den Familyname, Charset und Pitch wie dort. Dieser
- // Font wird nun nochmals auf dem Drucker eingestellt.
- Font aFnt1 = pOut->GetFontMetric();
- Font aFnt2( *pPrtFont );
-
- if (RTL_TEXTENCODING_DONTKNOW == pPrtFont->GetCharSet())
- aFnt2.SetCharSet( aFnt1.GetCharSet() );
- if (FAMILY_DONTKNOW == pPrtFont->GetFamily())
- aFnt2.SetFamily( aFnt1.GetFamily() );
- if (PITCH_DONTKNOW == pPrtFont->GetPitch())
- aFnt2.SetPitch( aFnt1.GetPitch() );
-
- pPrt->SetFont( aFnt2 );
- aMet = pPrt->GetFontMetric( );
- }
-
- const XubString aStandardStr( sStandardString,
- RTL_TEXTENCODING_MS_1252 );
-
- // This is the reference width
- const long nOWidth = pPrt->GetTextWidth( aStandardStr );
-
- // Let's have a look what's the difference to the width
- // calculated for the output device using the font set at the
- // reference device
- long nSWidth = nOWidth - pOut->GetTextWidth( aStandardStr );
- nScrHeight = (USHORT) pOut->GetTextHeight();
-
- // Um Aerger mit dem Generic Printer aus dem Wege zu gehen.
- if( aMet.GetSize().Height() )
- {
- BOOL bScrSymbol = FALSE;
- CharSet ePrtChSet = aMet.GetCharSet();
- // NoSymbol bedeutet, dass der Drucker sich fuer einen
- // Nicht-Symbol-Font entschieden hat.
- BOOL bNoSymbol = ( RTL_TEXTENCODING_DONTKNOW != ePrtChSet &&
- RTL_TEXTENCODING_SYMBOL != ePrtChSet );
- if ( bNoSymbol )
- bScrSymbol = RTL_TEXTENCODING_SYMBOL ==
- pOut->GetFontMetric().GetCharSet();
- Size aTmp( aMet.GetSize() );
-
- if( aTmp.Width() && !pPrtFont->GetSize().Width() )
- {
- aTmp.Width() = 0;
- aMet.SetSize( aTmp );
- }
-
- // Now we set the metrics used at the reference device at the
- // output device
- pOut->SetFont( aMet );
-
- if( bNoSymbol && ( bScrSymbol != ( RTL_TEXTENCODING_SYMBOL ==
- pOut->GetFontMetric().GetCharSet() ) ) )
- {
- // Hier landen wir, wenn der Drucker keinen Symbolfont waehlt,
- // aber genau einer der beiden Screenfonts ein Symbolfont ist.
- // Wir nehmen dann eben den anderen.
- if ( bScrSymbol )
- pScrFont = new Font( aMet ); // mit Abgleich
- else
- pOut->SetFont( *pPrtFont ); // ohne Abgleich
- }
- else
- {
- // Let's have a look what's the difference to the width
- // calculated for the output device using the metrics set at
- // the reference device
- long nPWidth = nOWidth - pOut->GetTextWidth( aStandardStr );
-
- // We prefer smaller fonts
- BYTE nNeg = 0;
- if ( nSWidth<0 ) { nSWidth *= -2; nNeg = 1; }
- if ( nPWidth<0 ) { nPWidth *= -2; nNeg |= 2; }
-
- // nSWidth = Difference between string width on reference device
- // and string width on output device with user font set.
- // nPWidth = Difference between string width on reference device
- // and string width on output device with metric obtained
- // from reference device.
- // We prefer to take the font with the smaller deviation,
- // exception: keep the original font unless the deviation
- // is really bad (at least 3%)
- // Since the test string is neither localized nor has a high resemblance
- // of the "real text for this font" a higher deviation is reasonable
-
- if ( (nSWidth <= nPWidth)
- || (nSWidth * 32 <= nOWidth ) )
- {
- // No adjustment, we take the same font for the output
- // device like for the reference device
- pOut->SetFont( *pPrtFont );
- pScrFont = pPrtFont;
- nPWidth = nSWidth;
- nNeg &= 1;
- }
- else
- {
- // The metrics give a better result. So we build
- // a new font for the output device based on the
- // metrics used at the reference device
- pScrFont = new Font( aMet ); // mit Abgleich
- nSWidth = nPWidth;
- nNeg &= 2;
- }
-
- //
- // now pScrFont is set to the better font and this should
- // be set at the output device
- //
-
- // we still have to check if the choosed font is not to wide
- if( nNeg && nOWidth )
- {
- nPWidth *= 100;
- nPWidth /= nOWidth;
-
- // if the screen font is too wide, we try to reduce
- // the font height and get a smaller one
- if( nPWidth > 25 )
- {
- if( nPWidth > 80 )
- nPWidth = 80;
- nPWidth = 100 - nPWidth/4;
- Size aTmpSize = pScrFont->GetSize();
- aTmpSize.Height() *= nPWidth;
- aTmpSize.Height() /= 100;
- if( aTmpSize.Width() )
- {
- aTmpSize.Width() *= nPWidth;
- aTmpSize.Width() /= 100;
- }
- Font *pNew = new Font( *pScrFont );
- pNew->SetSize( aTmpSize );
- pOut->SetFont( *pNew );
- nPWidth = nOWidth -
- pOut->GetTextWidth( aStandardStr );
- if( nPWidth < 0 ) { nPWidth *= -2; }
- if( nPWidth < nSWidth )
- {
- if( pScrFont != pPrtFont )
- delete pScrFont;
- pScrFont = pNew;
- }
- else
- {
- delete pNew;
- pOut->SetFont( *pScrFont );
- }
- }
- }
- }
- }
- }
-
// reset the original reference device font
pPrt->SetFont( aOldPrtFnt );
}
diff --git a/sw/source/core/txtnode/ndhints.cxx b/sw/source/core/txtnode/ndhints.cxx
index 0cdf431ca2e6..c4c78fd6d59d 100644
--- a/sw/source/core/txtnode/ndhints.cxx
+++ b/sw/source/core/txtnode/ndhints.cxx
@@ -367,7 +367,7 @@ bool SwpHintsArray::Check() const
CHECK_ERR( !isCHRATR(nWhich),
"HintsCheck: Character attribute in end array" );
- // 8) portion check
+ // 8) style portion check
#if OSL_DEBUG_LEVEL > 1
const SwTxtAttr* pHtThis = m_HintStarts[i];
const SwTxtAttr* pHtLast = i > 0 ? m_HintStarts[i-1] : 0;
@@ -375,11 +375,19 @@ bool SwpHintsArray::Check() const
( RES_TXTATR_CHARFMT != pHtLast->Which() && RES_TXTATR_AUTOFMT != pHtLast->Which() ) ||
( RES_TXTATR_CHARFMT != pHtThis->Which() && RES_TXTATR_AUTOFMT != pHtThis->Which() ) ||
( *pHtThis->GetStart() >= *pHtLast->GetEnd() ) ||
- ( *pHtThis->GetStart() == *pHtLast->GetStart() && *pHtThis->GetEnd() == *pHtLast->GetEnd() ) ||
- ( *pHtThis->GetStart() == *pHtThis->GetEnd() ),
+ ( ( ( (*pHtThis->GetStart() == *pHtLast->GetStart())
+ && (*pHtThis->GetEnd() == *pHtLast->GetEnd())
+ ) // same range
+ || (*pHtThis->GetStart() == *pHtThis->GetEnd())
+ )
+ && ( (pHtThis->Which() != RES_TXTATR_AUTOFMT)
+ || (pHtLast->Which() != RES_TXTATR_AUTOFMT)
+ ) // never two AUTOFMT on same range
+ ),
"HintsCheck: Portion inconsistency. "
"This can be temporarily ok during undo operations" );
+ // 9) nesting portion check
if (pHtThis->IsNesting())
{
for ( USHORT j = 0; j < Count(); ++j )
@@ -397,7 +405,7 @@ bool SwpHintsArray::Check() const
}
}
- // 9) dummy char check (unfortunately cannot check SwTxtNode::m_Text)
+ // 10) dummy char check (unfortunately cannot check SwTxtNode::m_Text)
if (pHtThis->HasDummyChar())
{
for ( USHORT j = 0; j < i; ++j )
diff --git a/sw/source/core/txtnode/ndtxt.cxx b/sw/source/core/txtnode/ndtxt.cxx
index d6770321768f..76560bae91d7 100644
--- a/sw/source/core/txtnode/ndtxt.cxx
+++ b/sw/source/core/txtnode/ndtxt.cxx
@@ -1196,60 +1196,109 @@ BOOL SwTxtNode::DontExpandFmt( const SwIndex& rIdx, bool bFlag,
return bRet;
}
+static bool lcl_GetTxtAttrDefault(xub_StrLen const nIndex,
+ xub_StrLen const nHintStart, xub_StrLen const nHintEnd)
+{
+ return ((nHintStart <= nIndex) && (nIndex < nHintEnd));
+}
+static bool lcl_GetTxtAttrExpand(xub_StrLen const nIndex,
+ xub_StrLen const nHintStart, xub_StrLen const nHintEnd)
+{
+ return ((nHintStart < nIndex) && (nIndex <= nHintEnd));
+}
+static bool lcl_GetTxtAttrParent(xub_StrLen const nIndex,
+ xub_StrLen const nHintStart, xub_StrLen const nHintEnd)
+{
+ return ((nHintStart < nIndex) && (nIndex < nHintEnd));
+}
-// gebe das vorgegebene Attribut, welches an der TextPosition (rIdx)
-// gesetzt ist, zurueck. Gibt es keines, returne 0-Pointer.
-// (gesetzt heisst, je nach bExpand ?
-// Start < rIdx <= End
-// : Start <= rIdx < End )
-
-SwTxtAttr* SwTxtNode::GetTxtAttr( const SwIndex& rIdx, USHORT nWhichHt,
- BOOL bExpand ) const
+static void
+lcl_GetTxtAttrs(
+ ::std::vector<SwTxtAttr *> *const pVector, SwTxtAttr **const ppTxtAttr,
+ SwpHints *const pSwpHints,
+ xub_StrLen const nIndex, RES_TXTATR const nWhich,
+ enum SwTxtNode::GetTxtAttrMode const eMode)
{
- const SwTxtAttr* pRet = 0;
- const SwTxtAttr* pHt = 0;
- const xub_StrLen *pEndIdx = 0;
- const xub_StrLen nIdx = rIdx.GetIndex();
- const USHORT nSize = m_pSwpHints ? m_pSwpHints->Count() : 0;
+ USHORT const nSize = (pSwpHints) ? pSwpHints->Count() : 0;
+ xub_StrLen nPreviousIndex(0); // index of last hint with nWhich
+ bool (*pMatchFunc)(xub_StrLen const, xub_StrLen const, xub_StrLen const)=0;
+ switch (eMode)
+ {
+ case SwTxtNode::DEFAULT: pMatchFunc = &lcl_GetTxtAttrDefault; break;
+ case SwTxtNode::EXPAND: pMatchFunc = &lcl_GetTxtAttrExpand; break;
+ case SwTxtNode::PARENT: pMatchFunc = &lcl_GetTxtAttrParent; break;
+ default: OSL_ASSERT(false);
+ }
for( USHORT i = 0; i < nSize; ++i )
{
- // ist der Attribut-Anfang schon groesser als der Idx ?
- pHt = (*m_pSwpHints)[i];
- if ( nIdx < *(pHt->GetStart()) )
- break; // beenden, kein gueltiges Attribut
-
- // ist es das gewuenschte Attribut ?
- if( pHt->Which() != nWhichHt )
- continue; // nein, weiter
-
- pEndIdx = pHt->GetEnd();
- // liegt innerhalb des Bereiches ??
- if( !pEndIdx )
+ SwTxtAttr *const pHint = pSwpHints->GetTextHint(i);
+ xub_StrLen const nHintStart( *(pHint->GetStart()) );
+ if (nIndex < nHintStart)
{
- if( *pHt->GetStart() == nIdx )
- {
- pRet = pHt;
- break;
- }
+ return; // hints are sorted by start, so we are done...
}
- else if( *pHt->GetStart() <= nIdx && nIdx <= *pEndIdx )
+
+ if (pHint->Which() != nWhich)
{
+ continue;
+ }
+
+ xub_StrLen const*const pEndIdx = pHint->GetEnd();
+ ASSERT(pEndIdx || pHint->HasDummyChar(),
+ "hint with no end and no dummy char?");
// Wenn bExpand gesetzt ist, wird das Verhalten bei Eingabe
// simuliert, d.h. der Start wuede verschoben, das Ende expandiert,
- if( bExpand )
+ bool const bContained( (pEndIdx)
+ ? (*pMatchFunc)(nIndex, nHintStart, *pEndIdx)
+ : (nHintStart == nIndex) );
+ if (bContained)
+ {
+ if (pVector)
{
- if( *pHt->GetStart() < nIdx )
- pRet = pHt;
+ if (nPreviousIndex < nHintStart)
+ {
+ pVector->clear(); // clear hints that are outside pHint
+ nPreviousIndex = nHintStart;
+ }
+ pVector->push_back(pHint);
}
else
{
- if( nIdx < *pEndIdx )
- pRet = pHt; // den am dichtesten liegenden
+ *ppTxtAttr = pHint; // and possibly overwrite outer hint
+ }
+ if (!pEndIdx)
+ {
+ break;
}
}
}
- return (SwTxtAttr*)pRet; // kein gueltiges Attribut gefunden !!
+}
+
+::std::vector<SwTxtAttr *>
+SwTxtNode::GetTxtAttrsAt(xub_StrLen const nIndex, RES_TXTATR const nWhich,
+ enum GetTxtAttrMode const eMode) const
+{
+ ::std::vector<SwTxtAttr *> ret;
+ lcl_GetTxtAttrs(& ret, 0, m_pSwpHints, nIndex, nWhich, eMode);
+ return ret;
+}
+
+SwTxtAttr *
+SwTxtNode::GetTxtAttrAt(xub_StrLen const nIndex, RES_TXTATR const nWhich,
+ enum GetTxtAttrMode const eMode) const
+{
+ ASSERT( (nWhich == RES_TXTATR_META)
+ || (nWhich == RES_TXTATR_METAFIELD)
+ || (nWhich == RES_TXTATR_AUTOFMT)
+ || (nWhich == RES_TXTATR_INETFMT)
+ || (nWhich == RES_TXTATR_CJK_RUBY)
+ || (nWhich == RES_TXTATR_UNKNOWN_CONTAINER),
+ "GetTxtAttrAt() will give wrong result for this hint!");
+
+ SwTxtAttr * pRet(0);
+ lcl_GetTxtAttrs(0, & pRet, m_pSwpHints, nIndex, nWhich, eMode);
+ return pRet;
}
/*************************************************************************
@@ -1278,11 +1327,11 @@ void lcl_CopyHint( const USHORT nWhich, const SwTxtAttr * const pHt,
ASSERT( nWhich == pHt->Which(), "Falsche Hint-Id" );
switch( nWhich )
{
- // Wenn wir es mit einem Fussnoten-Attribut zu tun haben,
- // muessen wir natuerlich auch den Fussnotenbereich kopieren.
+ // copy nodesarray section with footnote content
case RES_TXTATR_FTN :
+ ASSERT(pDest, "lcl_CopyHint: no destination text node?");
static_cast<const SwTxtFtn*>(pHt)->CopyFtn(
- static_cast<SwTxtFtn*>(pNewHt));
+ *static_cast<SwTxtFtn*>(pNewHt), *pDest);
break;
// Beim Kopieren von Feldern in andere Dokumente
@@ -1486,6 +1535,13 @@ void SwTxtNode::CopyText( SwTxtNode *const pDest,
xub_StrLen nTxtStartIdx = rStart.GetIndex();
xub_StrLen nDestStart = rDestStart.GetIndex(); // alte Pos merken
+ if (pDest->GetDoc()->IsClipBoard() && this->GetNum())
+ {
+ // #i111677# cache expansion of source (for clipboard)
+ pDest->m_pNumStringCache.reset(
+ new ::rtl::OUString(this->GetNumString()));
+ }
+
if( !nLen )
{
// wurde keine Laenge angegeben, dann Kopiere die Attribute
@@ -1588,6 +1644,7 @@ void SwTxtNode::CopyText( SwTxtNode *const pDest,
// Del-Array fuer alle RefMarks ohne Ausdehnung
SwpHts aRefMrkArr;
+ USHORT nDeletedDummyChars(0);
//Achtung: kann ungueltig sein!!
for (USHORT n = 0; ( n < nSize ); ++n)
{
@@ -1659,31 +1716,24 @@ void SwTxtNode::CopyText( SwTxtNode *const pDest,
pNewHt = MakeTxtAttr( *GetDoc(), pHt->GetAttr(),
nAttrStt, nAttrEnd );
-//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-//JP 23.04.95: erstmal so gesondert hier behandeln. Am Besten ist es
-// aber im CopyFtn wenn die pDestFtn keinen StartNode hat,
-// sich diesen dann anlegt.
-// Aber so kurz vor der BETA besser nicht anfassen.
- if( RES_TXTATR_FTN == nWhich )
- {
- SwTxtFtn* pFtn = (SwTxtFtn*)pNewHt;
- pFtn->ChgTxtNode( this );
- pFtn->MakeNewTextSection( GetNodes() );
- lcl_CopyHint( nWhich, pHt, pFtn, 0, 0 );
- pFtn->ChgTxtNode( 0 );
- }
- else
-//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- {
- lcl_CopyHint( nWhich, pHt, pNewHt, 0, pDest );
- }
+ lcl_CopyHint(nWhich, pHt, pNewHt, 0, pDest);
aArr.C40_INSERT( SwTxtAttr, pNewHt, aArr.Count() );
}
else
{
- pNewHt = pDest->InsertItem( pHt->GetAttr(), nAttrStt,
- nAttrEnd, nsSetAttrMode::SETATTR_NOTXTATRCHR );
- lcl_CopyHint( nWhich, pHt, pNewHt, pOtherDoc, pDest );
+ pNewHt = pDest->InsertItem( pHt->GetAttr(), nAttrStt - nDeletedDummyChars,
+ nAttrEnd - nDeletedDummyChars, nsSetAttrMode::SETATTR_NOTXTATRCHR );
+ if (pNewHt)
+ {
+ lcl_CopyHint( nWhich, pHt, pNewHt, pOtherDoc, pDest );
+ }
+ else if (pHt->HasDummyChar())
+ {
+ // The attribute that has failed to be copied would insert
+ // dummy char, so positions of the following attributes have
+ // to be shifted by one to compensate for that missing char.
+ ++nDeletedDummyChars;
+ }
}
if( RES_TXTATR_REFMARK == nWhich && !pEndIdx && !bCopyRefMark )
@@ -2777,6 +2827,11 @@ BOOL SwTxtNode::HasBullet() const
//i53420 added max outline parameter
XubString SwTxtNode::GetNumString( const bool _bInclPrefixAndSuffixStrings, const unsigned int _nRestrictToThisLevel ) const
{
+ if (GetDoc()->IsClipBoard() && m_pNumStringCache.get())
+ {
+ // #i111677# do not expand number strings in clipboard documents
+ return *m_pNumStringCache;
+ }
const SwNumRule* pRule = GetNum() ? GetNum()->GetNumRule() : 0L;
if ( pRule &&
IsCountedInList() &&
@@ -3000,8 +3055,10 @@ void SwTxtNode::Replace0xFF( XubString& rTxt, xub_StrLen& rTxtStt,
rTxt.Erase( nPos, 1 );
if( bExpandFlds )
{
- const XubString aExpand( ((SwTxtFld*)pAttr)->GetFld().
- GetFld()->Expand() );
+ const XubString aExpand(
+ static_cast<SwTxtFld const*>(pAttr)->GetFld()
+ .GetFld()->ExpandField(
+ GetDoc()->IsClipBoard()));
rTxt.Insert( aExpand, nPos );
nPos = nPos + aExpand.Len();
nEndPos = nEndPos + aExpand.Len();
@@ -3148,7 +3205,9 @@ BOOL SwTxtNode::GetExpandTxt( SwTxtNode& rDestNd, const SwIndex* pDestIdx,
{
case RES_TXTATR_FIELD:
{
- const XubString aExpand( ((SwTxtFld*)pHt)->GetFld().GetFld()->Expand() );
+ XubString const aExpand(
+ static_cast<SwTxtFld const*>(pHt)->GetFld().GetFld()
+ ->ExpandField(GetDoc()->IsClipBoard()));
if( aExpand.Len() )
{
aDestIdx++; // dahinter einfuegen;
@@ -3244,7 +3303,9 @@ const ModelToViewHelper::ConversionMap*
const SwTxtAttr* pAttr = (*pSwpHints2)[i];
if ( RES_TXTATR_FIELD == pAttr->Which() )
{
- const XubString aExpand( ((SwTxtFld*)pAttr)->GetFld().GetFld()->Expand() );
+ const XubString aExpand(
+ static_cast<SwTxtFld const*>(pAttr)->GetFld().GetFld()
+ ->ExpandField(GetDoc()->IsClipBoard()));
if ( aExpand.Len() > 0 )
{
const xub_StrLen nFieldPos = *pAttr->GetStart();
@@ -4386,6 +4447,10 @@ namespace {
if ( pNumRuleItem.GetValue().Len() > 0 )
{
mbAddTxtNodeToList = true;
+ // --> OD 2010-05-12 #i105562#
+ //
+ mrTxtNode.ResetEmptyListStyleDueToResetOutlineLevelAttr();
+ // <--
}
}
break;
@@ -4397,10 +4462,6 @@ namespace {
dynamic_cast<const SfxStringItem&>(pItem);
ASSERT( pListIdItem.GetValue().Len() > 0,
"<HandleSetAttrAtTxtNode(..)> - empty list id attribute not excepted. Serious defect -> please inform OD." );
-// const SfxStringItem& rListIdItemOfTxtNode =
-// dynamic_cast<const SfxStringItem&>(
-// rTxtNode.GetAttr( RES_PARATR_LIST_ID ));
-// if ( pListIdItem.GetValue() != rListIdItemOfTxtNode.GetValue() )
const String sListIdOfTxtNode = rTxtNode.GetListId();
if ( pListIdItem.GetValue() != sListIdOfTxtNode )
{
@@ -4514,11 +4575,6 @@ namespace {
{
const SfxStringItem* pListIdItem =
dynamic_cast<const SfxStringItem*>(pItem);
-// const SfxStringItem& rListIdItemOfTxtNode =
-// dynamic_cast<const SfxStringItem&>(
-// mrTxtNode.GetAttr( RES_PARATR_LIST_ID ));
-// if ( pListIdItem &&
-// pListIdItem->GetValue() != rListIdItemOfTxtNode.GetValue() )
const String sListIdOfTxtNode = mrTxtNode.GetListId();
if ( pListIdItem &&
pListIdItem->GetValue() != sListIdOfTxtNode )
@@ -4923,7 +4979,9 @@ namespace {
mrTxtNode.AddToList();
}
// --> OD 2008-11-19 #i70748#
- else if ( dynamic_cast<const SfxUInt16Item &>(mrTxtNode.GetAttr( RES_PARATR_OUTLINELEVEL, FALSE )).GetValue() > 0 )
+ // --> OD 2010-05-12 #i105562#
+ else if ( mrTxtNode.GetpSwAttrSet() &&
+ dynamic_cast<const SfxUInt16Item &>(mrTxtNode.GetAttr( RES_PARATR_OUTLINELEVEL, FALSE )).GetValue() > 0 )
{
mrTxtNode.SetEmptyListStyleDueToSetOutlineLevelAttr();
}
diff --git a/sw/source/core/txtnode/thints.cxx b/sw/source/core/txtnode/thints.cxx
index a2e326777383..ac2f281b0d90 100644
--- a/sw/source/core/txtnode/thints.cxx
+++ b/sw/source/core/txtnode/thints.cxx
@@ -773,7 +773,8 @@ void SwpHints::BuildPortions( SwTxtNode& rNode, SwTxtAttr& rNewHint,
// For each attribute in the automatic style check if it
// is also set the the new character style:
- SfxItemSet aNewSet( *pOldStyle->GetPool(), RES_CHRATR_BEGIN, RES_CHRATR_END );
+ SfxItemSet aNewSet( *pOldStyle->GetPool(),
+ aCharAutoFmtSetRange);
SfxItemIter aItemIter( *pOldStyle );
const SfxPoolItem* pItem = aItemIter.GetCurItem();
while( TRUE )
@@ -1042,7 +1043,8 @@ SwTxtAttr* MakeTxtAttr( SwDoc & rDoc, SfxPoolItem& rAttr,
pNew = new SwTxtINetFmt( (SwFmtINetFmt&)rNew, nStt, nEnd );
break;
case RES_TXTATR_FIELD:
- pNew = new SwTxtFld( (SwFmtFld&)rNew, nStt );
+ pNew = new SwTxtFld( static_cast<SwFmtFld &>(rNew), nStt,
+ rDoc.IsClipBoard() );
break;
case RES_TXTATR_FLYCNT:
{
@@ -2059,25 +2061,202 @@ BOOL SwTxtNode::GetAttr( SfxItemSet& rSet, xub_StrLen nStt, xub_StrLen nEnd,
return rSet.Count() ? TRUE : FALSE;
}
-int lcl_IsNewAttrInSet( const SwpHints& rHints, const SfxPoolItem& rItem,
- const xub_StrLen nEnd )
+
+namespace
+{
+
+typedef std::pair<USHORT, USHORT> AttrSpan_t;
+typedef std::multimap<AttrSpan_t, const SwTxtAttr*> AttrSpanMap_t;
+
+
+struct IsAutoStyle
{
- int bIns = TRUE;
- for( USHORT i = 0; i < rHints.Count(); ++i )
+ bool
+ operator()(const AttrSpanMap_t::value_type& i_rAttrSpan)
+ const
{
- const SwTxtAttr *pOther = rHints[ i ];
- if( *pOther->GetStart() )
- break;
+ return i_rAttrSpan.second && i_rAttrSpan.second->Which() == RES_TXTATR_AUTOFMT;
+ }
+};
+
+
+/** Removes from io_rAttrSet all items that are set by style on the
+ given span.
+ */
+struct RemovePresentAttrs
+{
+ RemovePresentAttrs(SfxItemSet& io_rAttrSet)
+ : m_rAttrSet(io_rAttrSet)
+ {
+ }
+
+ void
+ operator()(const AttrSpanMap_t::value_type& i_rAttrSpan)
+ const
+ {
+ if (!i_rAttrSpan.second)
+ {
+ return;
+ }
- if( pOther->GetEnd() &&
- *pOther->GetEnd() == nEnd &&
- ( pOther->IsCharFmtAttr() || pOther->Which() == rItem.Which() ) )
+ const SwTxtAttr* const pAutoStyle(i_rAttrSpan.second);
+ SfxItemIter aIter(m_rAttrSet);
+ const SfxPoolItem* pItem(aIter.GetCurItem());
+ while (true)
+ {
+ const USHORT nWhich(pItem->Which());
+ if (CharFmt::IsItemIncluded(nWhich, pAutoStyle))
+ {
+ m_rAttrSet.ClearItem(nWhich);
+ }
+
+ if (aIter.IsAtEnd())
+ {
+ break;
+ }
+ pItem = aIter.NextItem();
+ }
+ }
+
+private:
+ SfxItemSet& m_rAttrSet;
+};
+
+
+/** Collects all style-covered spans from i_rHints to o_rSpanMap. In
+ addition inserts dummy spans with pointer to format equal to 0 for
+ all gaps (i.e. spans not covered by any style). This simplifies
+ creation of autostyles for all needed spans, but it means all code
+ that tries to access the pointer has to check if it's non-null!
+ */
+void
+lcl_CollectHintSpans(const SwpHints& i_rHints, const USHORT nLength,
+ AttrSpanMap_t& o_rSpanMap)
+{
+ USHORT nLastEnd(0);
+
+ for (USHORT i(0); i != i_rHints.Count(); ++i)
+ {
+ const SwTxtAttr* const pHint(i_rHints[i]);
+ const USHORT nWhich(pHint->Which());
+ if (nWhich == RES_TXTATR_CHARFMT || nWhich == RES_TXTATR_AUTOFMT)
+ {
+ const AttrSpan_t aSpan(*pHint->GetStart(), *pHint->GetEnd());
+ o_rSpanMap.insert(AttrSpanMap_t::value_type(aSpan, pHint));
+
+ if (aSpan.first != nLastEnd)
+ {
+ // insert dummy span covering the gap
+ o_rSpanMap.insert(AttrSpanMap_t::value_type(
+ AttrSpan_t(nLastEnd, aSpan.first), 0));
+ }
+
+ nLastEnd = aSpan.second;
+ }
+ }
+
+ // no hints at the end (special case: no hints at all in i_rHints)
+ if (nLastEnd != nLength && nLength != 0)
+ {
+ o_rSpanMap.insert(
+ AttrSpanMap_t::value_type(AttrSpan_t(nLastEnd, nLength), 0));
+ }
+}
+
+
+void
+lcl_FillWhichIds(const SfxItemSet& i_rAttrSet, std::vector<USHORT>& o_rClearIds)
+{
+ o_rClearIds.reserve(i_rAttrSet.Count());
+ SfxItemIter aIter(i_rAttrSet);
+ const SfxPoolItem* pItem(aIter.GetCurItem());
+ while (true)
+ {
+ o_rClearIds.push_back(pItem->Which());
+
+ if (aIter.IsAtEnd())
{
- bIns = FALSE;
break;
}
+ pItem = aIter.NextItem();
+ }
+}
+
+struct SfxItemSetClearer
+{
+ SfxItemSet & m_rItemSet;
+ SfxItemSetClearer(SfxItemSet & rItemSet) : m_rItemSet(rItemSet) { }
+ void operator()(USHORT const nWhich) { m_rItemSet.ClearItem(nWhich); }
+};
+
+}
+
+
+/** Does the hard work of SwTxtNode::FmtToTxtAttr: the real conversion
+ of items to automatic styles.
+ */
+void
+SwTxtNode::impl_FmtToTxtAttr(const SfxItemSet& i_rAttrSet)
+{
+ typedef AttrSpanMap_t::iterator AttrSpanMap_iterator_t;
+ AttrSpanMap_t aAttrSpanMap;
+
+ if (i_rAttrSet.Count() == 0)
+ {
+ return;
+ }
+
+ // 1. Identify all spans in hints' array
+
+ lcl_CollectHintSpans(*m_pSwpHints, m_Text.Len(), aAttrSpanMap);
+
+ // 2. Go through all spans and insert new attrs
+
+ AttrSpanMap_iterator_t aCurRange(aAttrSpanMap.begin());
+ const AttrSpanMap_iterator_t aEnd(aAttrSpanMap.end());
+ while (aCurRange != aEnd)
+ {
+ typedef std::pair<AttrSpanMap_iterator_t, AttrSpanMap_iterator_t>
+ AttrSpanMapRange_t;
+ AttrSpanMapRange_t aRange(aAttrSpanMap.equal_range(aCurRange->first));
+
+ // 2a. Collect attributes to insert
+
+ SfxItemSet aCurSet(i_rAttrSet);
+ std::for_each(aRange.first, aRange.second, RemovePresentAttrs(aCurSet));
+
+ // 2b. Insert automatic style containing the collected attributes
+
+ if (aCurSet.Count() != 0)
+ {
+ AttrSpanMap_iterator_t aAutoStyleIt(
+ std::find_if(aRange.first, aRange.second, IsAutoStyle()));
+ if (aAutoStyleIt != aRange.second)
+ {
+ // there already is an automatic style on that span:
+ // create new one and remove the original one
+ SwTxtAttr* const pAutoStyle(const_cast<SwTxtAttr*>(aAutoStyleIt->second));
+ const boost::shared_ptr<SfxItemSet> pOldStyle(
+ static_cast<const SwFmtAutoFmt&>(
+ pAutoStyle->GetAttr()).GetStyleHandle());
+ aCurSet.Put(*pOldStyle);
+
+ // remove the old hint
+ m_pSwpHints->Delete(pAutoStyle);
+ DestroyAttr(pAutoStyle);
+ }
+ m_pSwpHints->Insert(
+ MakeTxtAttr(*GetDoc(), aCurSet,
+ aCurRange->first.first, aCurRange->first.second));
+ }
+
+ aCurRange = aRange.second;
}
- return bIns;
+
+ // 3. Clear items from the node
+ std::vector<USHORT> aClearedIds;
+ lcl_FillWhichIds(i_rAttrSet, aClearedIds);
+ ClearItemsFromAttrSet(aClearedIds);
}
void SwTxtNode::FmtToTxtAttr( SwTxtNode* pNd )
@@ -2090,91 +2269,79 @@ void SwTxtNode::FmtToTxtAttr( SwTxtNode* pNd )
if( pNd == this )
{
- if( aThisSet.Count() )
- {
- SfxItemIter aIter( aThisSet );
- const SfxPoolItem* pItem = aIter.GetCurItem();
- std::vector<USHORT> aClearWhichIds;
-
- while ( true )
- {
- if (lcl_IsNewAttrInSet( *m_pSwpHints, *pItem, GetTxt().Len() ))
- {
- m_pSwpHints->SwpHintsArray::Insert(
- MakeTxtAttr( *GetDoc(),
- const_cast<SfxPoolItem&>(*pItem),
- 0, GetTxt().Len() ) );
- aClearWhichIds.push_back( pItem->Which() );
- }
-
- if( aIter.IsAtEnd() )
- break;
- pItem = aIter.NextItem();
- }
-
- ClearItemsFromAttrSet( aClearWhichIds );
- }
+ impl_FmtToTxtAttr(aThisSet);
}
else
{
+ // There are five possible combinations of items from this and
+ // pNd (pNd is the 'main' node):
+ //
+ // case pNd this action
+ // ----------------------------------------------------
+ // 1 - - do nothing
+ // 2 - a convert item to attr of this
+ // 3 a - convert item to attr of pNd
+ // 4 a a clear item in this
+ // 5 a b convert item to attr of this
+
SfxItemSet aNdSet( pNd->GetDoc()->GetAttrPool(), aCharFmtSetRange );
if( pNd->HasSwAttrSet() && pNd->GetpSwAttrSet()->Count() )
aNdSet.Put( *pNd->GetpSwAttrSet() );
pNd->GetOrCreateSwpHints();
+ std::vector<USHORT> aProcessedIds;
+
if( aThisSet.Count() )
{
SfxItemIter aIter( aThisSet );
- const SfxPoolItem* pItem = aIter.GetCurItem(), *pNdItem;
+ const SfxPoolItem* pItem = aIter.GetCurItem(), *pNdItem = 0;
+ SfxItemSet aConvertSet( GetDoc()->GetAttrPool(), aCharFmtSetRange );
std::vector<USHORT> aClearWhichIds;
- while( TRUE )
+ while( true )
{
- if( ( SFX_ITEM_SET != aNdSet.GetItemState( pItem->Which(), FALSE,
- &pNdItem ) || *pItem != *pNdItem ) &&
- lcl_IsNewAttrInSet( *m_pSwpHints, *pItem, GetTxt().Len() ) )
+ if( SFX_ITEM_SET == aNdSet.GetItemState( pItem->Which(), FALSE, &pNdItem ) )
{
- m_pSwpHints->SwpHintsArray::Insert( MakeTxtAttr( *GetDoc(),
- const_cast<SfxPoolItem&>(*pItem),
- 0, GetTxt().Len() ) );
- aClearWhichIds.push_back( pItem->Which() );
+ if (*pItem == *pNdItem) // 4
+ {
+ aClearWhichIds.push_back( pItem->Which() );
+ }
+ else // 5
+ {
+ aConvertSet.Put(*pItem);
+ }
+ aProcessedIds.push_back(pItem->Which());
+ }
+ else // 2
+ {
+ aConvertSet.Put(*pItem);
}
- aNdSet.ClearItem( pItem->Which() );
if( aIter.IsAtEnd() )
break;
pItem = aIter.NextItem();
}
+
+ // 4/ clear items of this that are set with the same value on pNd
ClearItemsFromAttrSet( aClearWhichIds );
+
+ // 2, 5/ convert all other items to attrs
+ impl_FmtToTxtAttr(aConvertSet);
}
- if( aNdSet.Count() )
{
- SfxItemIter aIter( aNdSet );
- const SfxPoolItem* pItem = aIter.GetCurItem();
- std::vector<USHORT> aClearWhichIds;
+ std::for_each(aProcessedIds.begin(), aProcessedIds.end(),
+ SfxItemSetClearer(aNdSet));
- while ( true )
- {
- if ( lcl_IsNewAttrInSet( *pNd->m_pSwpHints, *pItem,
- pNd->GetTxt().Len() ) )
- {
- pNd->m_pSwpHints->SwpHintsArray::Insert(
- MakeTxtAttr( *pNd->GetDoc(),
- const_cast<SfxPoolItem&>(*pItem),
- 0, pNd->GetTxt().Len() ) );
- }
- aClearWhichIds.push_back( pItem->Which() );
+ // 3/ convert items to attrs
+ pNd->impl_FmtToTxtAttr(aNdSet);
- if( aIter.IsAtEnd() )
- break;
- pItem = aIter.NextItem();
+ if( aNdSet.Count() )
+ {
+ SwFmtChg aTmp1( pNd->GetFmtColl() );
+ pNd->SwModify::Modify( &aTmp1, &aTmp1 );
}
-
- pNd->ClearItemsFromAttrSet( aClearWhichIds );
- SwFmtChg aTmp1( pNd->GetFmtColl() );
- pNd->SwModify::Modify( &aTmp1, &aTmp1 );
}
}
diff --git a/sw/source/core/undo/SwUndoField.cxx b/sw/source/core/undo/SwUndoField.cxx
index fe189d5adf50..8a3c6c507c93 100644
--- a/sw/source/core/undo/SwUndoField.cxx
+++ b/sw/source/core/undo/SwUndoField.cxx
@@ -63,12 +63,14 @@ SwPosition SwUndoField::GetPosition()
}
SwUndoFieldFromDoc::SwUndoFieldFromDoc(const SwPosition & rPos,
- const SwField & _aOldField,
- const SwField & _aNewField,
+ const SwField & rOldField,
+ const SwField & rNewField,
SwMsgPoolItem * _pHnt, BOOL _bUpdate, SwUndoId _nId)
- : SwUndoField(rPos,_nId), pOldField(_aOldField.Copy()),
- pNewField(_aNewField.Copy()), pHnt(_pHnt),
- bUpdate(_bUpdate)
+ : SwUndoField(rPos,_nId)
+ , pOldField(rOldField.CopyField())
+ , pNewField(rNewField.CopyField())
+ , pHnt(_pHnt)
+ , bUpdate(_bUpdate)
{
ASSERT(pOldField, "No old field!");
ASSERT(pNewField, "No new field!");
diff --git a/sw/source/core/undo/rolbck.cxx b/sw/source/core/undo/rolbck.cxx
index aae0b8de10ac..6df9f9aa24b8 100644
--- a/sw/source/core/undo/rolbck.cxx
+++ b/sw/source/core/undo/rolbck.cxx
@@ -614,9 +614,8 @@ SwHistoryBookmark::SwHistoryBookmark(
m_aKeycode = pBookmark->GetKeyCode();
m_aShortName = pBookmark->GetShortName();
- ::sfx2::Metadatable * const pMetadatable(
- const_cast< ::sfx2::Metadatable * >( // CreateUndo should be const?
- dynamic_cast< ::sfx2::Metadatable const* >(pBookmark)));
+ ::sfx2::Metadatable const*const pMetadatable(
+ dynamic_cast< ::sfx2::Metadatable const* >(pBookmark));
if (pMetadatable)
{
m_pMetadataUndo = pMetadatable->CreateUndo();
diff --git a/sw/source/core/undo/unattr.cxx b/sw/source/core/undo/unattr.cxx
index dd44a981d1d4..e3b54c59b142 100644
--- a/sw/source/core/undo/unattr.cxx
+++ b/sw/source/core/undo/unattr.cxx
@@ -1055,8 +1055,8 @@ void SwUndoAttr::RemoveIdx( SwDoc& rDoc )
SwTxtNode* pTxtNd = rNds[ nNode ]->GetTxtNode();
if( pTxtNd )
{
- SwIndex aIdx( pTxtNd, nCntnt );
- SwTxtAttr * pTxtHt = pTxtNd->GetTxtAttr( aIdx, RES_TXTATR_FTN );
+ SwTxtAttr *const pTxtHt =
+ pTxtNd->GetTxtAttrForCharAt(nCntnt, RES_TXTATR_FTN);
if( pTxtHt )
{
// ok, dann hole mal die Werte
diff --git a/sw/source/core/undo/unbkmk.cxx b/sw/source/core/undo/unbkmk.cxx
index 04f7ce596346..b86bdad692ac 100644
--- a/sw/source/core/undo/unbkmk.cxx
+++ b/sw/source/core/undo/unbkmk.cxx
@@ -88,23 +88,6 @@ SwRewriter SwUndoBookmark::GetRewriter() const
//----------------------------------------------------------------------
-SwUndoDelBookmark::SwUndoDelBookmark( const ::sw::mark::IMark& rBkmk )
- : SwUndoBookmark( UNDO_DELBOOKMARK, rBkmk )
-{
-}
-
-
-void SwUndoDelBookmark::Undo( SwUndoIter& rUndoIter )
-{
- SetInDoc( &rUndoIter.GetDoc() );
-}
-
-
-void SwUndoDelBookmark::Redo( SwUndoIter& rUndoIter )
-{
- ResetInDoc( &rUndoIter.GetDoc() );
-}
-
SwUndoInsBookmark::SwUndoInsBookmark( const ::sw::mark::IMark& rBkmk )
: SwUndoBookmark( UNDO_INSBOOKMARK, rBkmk )
diff --git a/sw/source/core/undo/undel.cxx b/sw/source/core/undo/undel.cxx
index 593382fd999e..ef39a4e18950 100644
--- a/sw/source/core/undo/undel.cxx
+++ b/sw/source/core/undo/undel.cxx
@@ -391,7 +391,9 @@ BOOL SwUndoDelete::SaveCntnt( const SwPosition* pStt, const SwPosition* pEnd,
bool emptied( pSttStr->Len() && !pSttTxtNd->Len() );
if (!bOneNode || emptied) // merging may overwrite xmlids...
{
- m_pMetadataUndoStart = pSttTxtNd->CreateUndo( emptied );
+ m_pMetadataUndoStart = (emptied)
+ ? pSttTxtNd->CreateUndoForDelete()
+ : pSttTxtNd->CreateUndo();
}
if( bOneNode )
@@ -425,7 +427,10 @@ BOOL SwUndoDelete::SaveCntnt( const SwPosition* pStt, const SwPosition* pEnd,
// METADATA: store
bool emptied( pEndStr->Len() && !pEndTxtNd->Len() );
- m_pMetadataUndoEnd = pEndTxtNd->CreateUndo( emptied );
+
+ m_pMetadataUndoEnd = (emptied)
+ ? pEndTxtNd->CreateUndoForDelete()
+ : pEndTxtNd->CreateUndo();
}
// sind es nur zwei Nodes, dann ist schon alles erledigt.
@@ -863,7 +868,15 @@ void SwUndoDelete::Redo( SwUndoIter& rUndoIter )
SetPaM( rPam );
if( pRedlSaveData )
- rDoc.DeleteRedline( rPam, false, USHRT_MAX );
+ {
+ bool bSuccess = FillSaveData(rPam, *pRedlSaveData, TRUE);
+ OSL_ENSURE(bSuccess,
+ "SwUndoDelete::Redo: used to have redline data, but now none?");
+ if (!bSuccess)
+ {
+ delete pRedlSaveData, pRedlSaveData = 0;
+ }
+ }
if( !bDelFullPara )
{
diff --git a/sw/source/core/undo/undobj.cxx b/sw/source/core/undo/undobj.cxx
index 2c341cb53bf5..1a71a705b2fb 100644
--- a/sw/source/core/undo/undobj.cxx
+++ b/sw/source/core/undo/undobj.cxx
@@ -1120,7 +1120,12 @@ void SwRedlineSaveData::RedlineToDoc( SwPaM& rPam )
if (rDoc.GetDocShell() && (pRedl->GetComment() != String(::rtl::OUString::createFromAscii(""))) )
rDoc.GetDocShell()->Broadcast(SwRedlineHint(pRedl,SWREDLINE_INSERTED));
//
- rDoc.AppendRedline( pRedl, true );
+#if OSL_DEBUG_LEVEL > 0
+ bool const bSuccess =
+#endif
+ rDoc.AppendRedline( pRedl, true );
+ OSL_ENSURE(bSuccess,
+ "SwRedlineSaveData::RedlineToDoc: insert redline failed");
rDoc.SetRedlineMode_intern( eOld );
}
diff --git a/sw/source/core/undo/unins.cxx b/sw/source/core/undo/unins.cxx
index 646ffbd4c8f2..dd95d06a34b1 100644
--- a/sw/source/core/undo/unins.cxx
+++ b/sw/source/core/undo/unins.cxx
@@ -164,21 +164,6 @@ SwUndoInsert::SwUndoInsert( const SwNodeIndex& rNd )
// werden kann. Wenn ja, dann aender die Laenge und die InsPos.
// Dann wird von SwDoc::Insert kein neues Object in die Undoliste gestellt.
-BOOL SwUndoInsert::CanGrouping( const SwPosition& rInsPos, sal_Unicode cIns )
-{
- BOOL bRet = FALSE;
- if( !bIsAppend )
- {
- ++nCntnt;
- bRet = CanGrouping( rInsPos );
- --nCntnt;
- if( bRet )
- bRet = CanGrouping( cIns );
- }
- return bRet;
-}
-
-
BOOL SwUndoInsert::CanGrouping( sal_Unicode cIns )
{
if( !bIsAppend && bIsWordDelim ==
diff --git a/sw/source/core/undo/unmove.cxx b/sw/source/core/undo/unmove.cxx
index 06bee956f95a..4c5fbca4085c 100644
--- a/sw/source/core/undo/unmove.cxx
+++ b/sw/source/core/undo/unmove.cxx
@@ -354,13 +354,3 @@ void SwUndoMove::DelFtn( const SwPaM& rRange )
}
}
-void SwUndoMove::AddTblMrgFlyHstry( SwHistory& rHstr )
-{
- if( !pHistory )
- pHistory = new SwHistory;
-
- USHORT nInsPos = nFtnStt;
- nFtnStt = nFtnStt + rHstr.Count();
- pHistory->Move( nInsPos, &rHstr );
-}
-
diff --git a/sw/source/core/undo/unsect.cxx b/sw/source/core/undo/unsect.cxx
index 9f5687a8edce..98d0e41d4616 100644
--- a/sw/source/core/undo/unsect.cxx
+++ b/sw/source/core/undo/unsect.cxx
@@ -74,34 +74,31 @@ SfxItemSet* lcl_GetAttrSet( const SwSection& rSect )
return pAttr;
}
-SwUndoInsSection::SwUndoInsSection( const SwPaM& rPam, const SwSection& rNew,
- const SfxItemSet* pSet )
- : SwUndo( UNDO_INSSECTION ), SwUndRng( rPam ),
- pHistory( 0 ), pRedlData( 0 ), pAttr( 0 ), nSectNodePos( 0 )
-{
- if( rNew.ISA( SwTOXBaseSection ))
- {
- const SwTOXBase& rBase = (SwTOXBaseSection&)rNew;
- pSection = new SwTOXBaseSection( rBase );
- }
- else
- pSection = new SwSection( rNew.GetType(), rNew.GetName() );
- *pSection = rNew;
+////////////////////////////////////////////////////////////////////////////
+
+SwUndoInsSection::SwUndoInsSection(
+ SwPaM const& rPam, SwSectionData const& rNewData,
+ SfxItemSet const*const pSet, SwTOXBase const*const pTOXBase)
+ : SwUndo( UNDO_INSSECTION ), SwUndRng( rPam )
+ , m_pSectionData(new SwSectionData(rNewData))
+ , m_pTOXBase( (pTOXBase) ? new SwTOXBase(*pTOXBase) : 0 )
+ , m_pAttrSet( (pSet && pSet->Count()) ? new SfxItemSet( *pSet ) : 0 )
+ , m_pHistory(0)
+ , m_pRedlData(0)
+ , m_nSectionNodePos(0)
+ , m_bSplitAtStart(false)
+ , m_bSplitAtEnd(false)
+ , m_bUpdateFtn(false)
+{
SwDoc& rDoc = *(SwDoc*)rPam.GetDoc();
if( rDoc.IsRedlineOn() )
{
- pRedlData = new SwRedlineData( nsRedlineType_t::REDLINE_INSERT,
- rDoc.GetRedlineAuthor() );
+ m_pRedlData.reset(new SwRedlineData( nsRedlineType_t::REDLINE_INSERT,
+ rDoc.GetRedlineAuthor() ));
SetRedlineMode( rDoc.GetRedlineMode() );
}
- bSplitAtStt = FALSE;
- bSplitAtEnd = FALSE;
- bUpdateFtn = FALSE;
-
- if( pSet && pSet->Count() )
- pAttr = new SfxItemSet( *pSet );
if( !rPam.HasMark() )
{
@@ -114,33 +111,25 @@ SwUndoInsSection::SwUndoInsSection( const SwPaM& rPam, const SwSection& rNew,
aBrkSet.Put( *pCNd->GetpSwAttrSet() );
if( aBrkSet.Count() )
{
- pHistory = new SwHistory;
- pHistory->CopyFmtAttr( aBrkSet, pCNd->GetIndex() );
+ m_pHistory.reset( new SwHistory );
+ m_pHistory->CopyFmtAttr( aBrkSet, pCNd->GetIndex() );
}
}
}
}
-
SwUndoInsSection::~SwUndoInsSection()
{
- delete pSection;
- delete pRedlData;
- delete pAttr;
-
- if( pHistory )
- delete pHistory;
}
-
-
void SwUndoInsSection::Undo( SwUndoIter& rUndoIter )
{
SwDoc& rDoc = rUndoIter.GetDoc();
- RemoveIdxFromSection( rDoc, nSectNodePos );
+ RemoveIdxFromSection( rDoc, m_nSectionNodePos );
- SwSectionNode* pNd = rDoc.GetNodes()[ nSectNodePos ]->GetSectionNode();
+ SwSectionNode *const pNd =
+ rDoc.GetNodes()[ m_nSectionNodePos ]->GetSectionNode();
ASSERT( pNd, "wo ist mein SectionNode?" );
if( IDocumentRedlineAccess::IsRedlineOn( GetRedlineMode() ))
@@ -158,19 +147,25 @@ void SwUndoInsSection::Undo( SwUndoIter& rUndoIter )
rDoc.DelSectionFmt( pNd->GetSection().GetFmt() );
// muessen wir noch zusammenfassen ?
- if( bSplitAtStt )
+ if (m_bSplitAtStart)
+ {
Join( rDoc, nSttNode );
+ }
- if( bSplitAtEnd )
+ if (m_bSplitAtEnd)
+ {
Join( rDoc, nEndNode );
+ }
- if ( pHistory )
+ if (m_pHistory.get())
{
- pHistory->TmpRollback( &rDoc, 0, false );
+ m_pHistory->TmpRollback( &rDoc, 0, false );
}
- if( bUpdateFtn )
+ if (m_bUpdateFtn)
+ {
rDoc.GetFtnIdxs().UpdateFtn( aIdx );
+ }
SetPaM( rUndoIter );
}
@@ -182,28 +177,32 @@ void SwUndoInsSection::Redo( SwUndoIter& rUndoIter )
SetPaM( rUndoIter );
const SwTOXBaseSection* pUpdateTOX = 0;
- if( pSection->ISA( SwTOXBaseSection ))
+ if (m_pTOXBase.get())
{
- const SwTOXBase& rBase = *(SwTOXBaseSection*)pSection;
pUpdateTOX = rDoc.InsertTableOf( *rUndoIter.pAktPam->GetPoint(),
- rBase, pAttr, TRUE );
+ *m_pTOXBase, m_pAttrSet.get(), true);
}
else
{
- rDoc.InsertSwSection( *rUndoIter.pAktPam, *pSection, pAttr, true );
+ rDoc.InsertSwSection(*rUndoIter.pAktPam,
+ *m_pSectionData, 0, m_pAttrSet.get(), true);
}
- if( pHistory )
- pHistory->SetTmpEnd( pHistory->Count() );
+ if (m_pHistory.get())
+ {
+ m_pHistory->SetTmpEnd( m_pHistory->Count() );
+ }
- SwSectionNode* pSectNd = rDoc.GetNodes()[ nSectNodePos ]->GetSectionNode();
- if( pRedlData && IDocumentRedlineAccess::IsRedlineOn( GetRedlineMode() ))
+ SwSectionNode *const pSectNd =
+ rDoc.GetNodes()[ m_nSectionNodePos ]->GetSectionNode();
+ if (m_pRedlData.get() &&
+ IDocumentRedlineAccess::IsRedlineOn( GetRedlineMode()))
{
RedlineMode_t eOld = rDoc.GetRedlineMode();
rDoc.SetRedlineMode_intern((RedlineMode_t)(eOld & ~nsRedlineMode_t::REDLINE_IGNORE));
SwPaM aPam( *pSectNd->EndOfSectionNode(), *pSectNd, 1 );
- rDoc.AppendRedline( new SwRedline( *pRedlData, aPam ), true);
+ rDoc.AppendRedline( new SwRedline( *m_pRedlData, aPam ), true);
rDoc.SetRedlineMode_intern( eOld );
}
else if( !( nsRedlineMode_t::REDLINE_IGNORE & GetRedlineMode() ) &&
@@ -228,16 +227,15 @@ void SwUndoInsSection::Redo( SwUndoIter& rUndoIter )
void SwUndoInsSection::Repeat( SwUndoIter& rUndoIter )
{
- if( pSection->ISA( SwTOXBaseSection ))
+ if (m_pTOXBase.get())
{
- const SwTOXBase& rBase = *(SwTOXBaseSection*)pSection;
rUndoIter.GetDoc().InsertTableOf( *rUndoIter.pAktPam->GetPoint(),
- rBase, pAttr, TRUE );
+ *m_pTOXBase, m_pAttrSet.get(), true);
}
else
{
rUndoIter.GetDoc().InsertSwSection( *rUndoIter.pAktPam,
- *pSection, pAttr );
+ *m_pSectionData, 0, m_pAttrSet.get());
}
}
@@ -254,7 +252,7 @@ void SwUndoInsSection::Join( SwDoc& rDoc, ULONG nNode )
}
pTxtNd->JoinNext();
- if( pHistory )
+ if (m_pHistory.get())
{
SwIndex aCntIdx( pTxtNd, 0 );
pTxtNd->RstAttr( aCntIdx, pTxtNd->Len(), 0, 0, true );
@@ -262,74 +260,99 @@ void SwUndoInsSection::Join( SwDoc& rDoc, ULONG nNode )
}
-void SwUndoInsSection::SaveSplitNode( SwTxtNode* pTxtNd, BOOL bAtStt )
+void
+SwUndoInsSection::SaveSplitNode(SwTxtNode *const pTxtNd, bool const bAtStart)
{
if( pTxtNd->GetpSwpHints() )
{
- if( !pHistory )
- pHistory = new SwHistory;
- pHistory->CopyAttr( pTxtNd->GetpSwpHints(), pTxtNd->GetIndex(), 0,
+ if (!m_pHistory.get())
+ {
+ m_pHistory.reset( new SwHistory );
+ }
+ m_pHistory->CopyAttr( pTxtNd->GetpSwpHints(), pTxtNd->GetIndex(), 0,
pTxtNd->GetTxt().Len(), false );
}
- if( bAtStt )
- bSplitAtStt = TRUE;
+ if (bAtStart)
+ {
+ m_bSplitAtStart = true;
+ }
else
- bSplitAtEnd = TRUE;
+ {
+ m_bSplitAtEnd = true;
+ }
}
-// -----------------------------
+////////////////////////////////////////////////////////////////////////////
-SwUndoDelSection::SwUndoDelSection( const SwSectionFmt& rFmt )
- : SwUndo( UNDO_DELSECTION )
+class SwUndoDelSection
+ : public SwUndo
{
- const SwSection& rSect = *rFmt.GetSection();
- if( rSect.ISA( SwTOXBaseSection ))
- {
- const SwTOXBase& rBase = (SwTOXBaseSection&)rSect;
- pSection = new SwTOXBaseSection( rBase );
- }
- else
- pSection = new SwSection( rSect.GetType(), rSect.GetName() );
- *pSection = rSect;
-
- pAttr = ::lcl_GetAttrSet( rSect );
-
- const SwNodeIndex* pIdx = rFmt.GetCntnt().GetCntntIdx();
- nSttNd = pIdx->GetIndex();
- nEndNd = pIdx->GetNode().EndOfSectionIndex();
+private:
+ ::std::auto_ptr<SwSectionData> const m_pSectionData; /// section not TOX
+ ::std::auto_ptr<SwTOXBase> const m_pTOXBase; /// set iff section is TOX
+ ::std::auto_ptr<SfxItemSet> const m_pAttrSet;
+ ::boost::shared_ptr< ::sfx2::MetadatableUndo > const m_pMetadataUndo;
+ ULONG const m_nStartNode;
+ ULONG const m_nEndNode;
+
+public:
+ SwUndoDelSection(
+ SwSectionFmt const&, SwSection const&, SwNodeIndex const*const);
+ virtual ~SwUndoDelSection();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+};
+
+SW_DLLPRIVATE SwUndo * MakeUndoDelSection(SwSectionFmt const& rFormat)
+{
+ return new SwUndoDelSection(rFormat, *rFormat.GetSection(),
+ rFormat.GetCntnt().GetCntntIdx());
}
+SwUndoDelSection::SwUndoDelSection(
+ SwSectionFmt const& rSectionFmt, SwSection const& rSection,
+ SwNodeIndex const*const pIndex)
+ : SwUndo( UNDO_DELSECTION )
+ , m_pSectionData( new SwSectionData(rSection) )
+ , m_pTOXBase( rSection.ISA( SwTOXBaseSection )
+ ? new SwTOXBase(static_cast<SwTOXBaseSection const&>(rSection))
+ : 0 )
+ , m_pAttrSet( ::lcl_GetAttrSet(rSection) )
+ , m_pMetadataUndo( rSectionFmt.CreateUndo() )
+ , m_nStartNode( pIndex->GetIndex() )
+ , m_nEndNode( pIndex->GetNode().EndOfSectionIndex() )
+{
+}
SwUndoDelSection::~SwUndoDelSection()
{
- delete pSection;
- delete pAttr;
}
-
void SwUndoDelSection::Undo( SwUndoIter& rUndoIter )
{
SwDoc& rDoc = rUndoIter.GetDoc();
- if( pSection->ISA( SwTOXBaseSection ))
+ if (m_pTOXBase.get())
{
- const SwTOXBase& rBase = *(SwTOXBaseSection*)pSection;
- rDoc.InsertTableOf( nSttNd, nEndNd-2, rBase, pAttr );
+ rDoc.InsertTableOf(m_nStartNode, m_nEndNode-2, *m_pTOXBase,
+ m_pAttrSet.get());
}
else
{
- SwNodeIndex aStt( rDoc.GetNodes(), nSttNd );
- SwNodeIndex aEnd( rDoc.GetNodes(), nEndNd-2 );
+ SwNodeIndex aStt( rDoc.GetNodes(), m_nStartNode );
+ SwNodeIndex aEnd( rDoc.GetNodes(), m_nEndNode-2 );
SwSectionFmt* pFmt = rDoc.MakeSectionFmt( 0 );
- if( pAttr )
- pFmt->SetFmtAttr( *pAttr );
+ if (m_pAttrSet.get())
+ {
+ pFmt->SetFmtAttr( *m_pAttrSet );
+ }
/// OD 04.10.2002 #102894#
/// remember inserted section node for further calculations
- SwSectionNode* pInsertedSectNd =
- rDoc.GetNodes().InsertSection( aStt, *pFmt, *pSection, &aEnd );
+ SwSectionNode* pInsertedSectNd = rDoc.GetNodes().InsertTextSection(
+ aStt, *pFmt, *m_pSectionData, 0, & aEnd);
if( SFX_ITEM_SET == pFmt->GetItemState( RES_FTN_AT_TXTEND ) ||
SFX_ITEM_SET == pFmt->GetItemState( RES_END_AT_TXTEND ))
@@ -356,63 +379,86 @@ void SwUndoDelSection::Undo( SwUndoIter& rUndoIter )
aInsertedSect.SetCondHidden( bRecalcCondHidden );
}
+ pFmt->RestoreMetadata(m_pMetadataUndo);
}
}
-
void SwUndoDelSection::Redo( SwUndoIter& rUndoIter )
{
SwDoc& rDoc = rUndoIter.GetDoc();
- SwSectionNode* pNd = rDoc.GetNodes()[ nSttNd ]->GetSectionNode();
+ SwSectionNode *const pNd =
+ rDoc.GetNodes()[ m_nStartNode ]->GetSectionNode();
ASSERT( pNd, "wo ist mein SectionNode?" );
// einfach das Format loeschen, der Rest erfolgt automatisch
rDoc.DelSectionFmt( pNd->GetSection().GetFmt() );
}
+////////////////////////////////////////////////////////////////////////////
-SwUndoChgSection::SwUndoChgSection( const SwSectionFmt& rFmt, BOOL bOnlyAttr )
- : SwUndo( UNDO_CHGSECTION ), bOnlyAttrChgd( bOnlyAttr )
+class SwUndoUpdateSection
+ : public SwUndo
{
- const SwSection& rSect = *rFmt.GetSection();
- pSection = new SwSection( rSect.GetType(), rSect.GetName() );
- *pSection = rSect;
-
- pAttr = ::lcl_GetAttrSet( rSect );
-
- nSttNd = rFmt.GetCntnt().GetCntntIdx()->GetIndex();
+private:
+ ::std::auto_ptr<SwSectionData> m_pSectionData;
+ ::std::auto_ptr<SfxItemSet> m_pAttrSet;
+ ULONG const m_nStartNode;
+ bool const m_bOnlyAttrChanged;
+
+public:
+ SwUndoUpdateSection(
+ SwSection const&, SwNodeIndex const*const, bool const bOnlyAttr);
+ virtual ~SwUndoUpdateSection();
+ virtual void Undo( SwUndoIter& );
+ virtual void Redo( SwUndoIter& );
+};
+
+SW_DLLPRIVATE SwUndo *
+MakeUndoUpdateSection(SwSectionFmt const& rFormat, bool const bOnlyAttr)
+{
+ return new SwUndoUpdateSection(*rFormat.GetSection(),
+ rFormat.GetCntnt().GetCntntIdx(), bOnlyAttr);
}
-
-SwUndoChgSection::~SwUndoChgSection()
+SwUndoUpdateSection::SwUndoUpdateSection(
+ SwSection const& rSection, SwNodeIndex const*const pIndex,
+ bool const bOnlyAttr)
+ : SwUndo( UNDO_CHGSECTION )
+ , m_pSectionData( new SwSectionData(rSection) )
+ , m_pAttrSet( ::lcl_GetAttrSet(rSection) )
+ , m_nStartNode( pIndex->GetIndex() )
+ , m_bOnlyAttrChanged( bOnlyAttr )
{
- delete pSection;
- delete pAttr;
}
+SwUndoUpdateSection::~SwUndoUpdateSection()
+{
+}
-void SwUndoChgSection::Undo( SwUndoIter& rUndoIter )
+void SwUndoUpdateSection::Undo( SwUndoIter& rUndoIter )
{
SwDoc& rDoc = rUndoIter.GetDoc();
- SwSectionNode* pSectNd = rDoc.GetNodes()[ nSttNd ]->GetSectionNode();
+ SwSectionNode *const pSectNd =
+ rDoc.GetNodes()[ m_nStartNode ]->GetSectionNode();
ASSERT( pSectNd, "wo ist mein SectionNode?" );
SwSection& rNdSect = pSectNd->GetSection();
SwFmt* pFmt = rNdSect.GetFmt();
SfxItemSet* pCur = ::lcl_GetAttrSet( rNdSect );
- if( pAttr )
+ if (m_pAttrSet.get())
{
// das Content- und Protect-Item muss bestehen bleiben
const SfxPoolItem* pItem;
- pAttr->Put( pFmt->GetFmtAttr( RES_CNTNT ));
+ m_pAttrSet->Put( pFmt->GetFmtAttr( RES_CNTNT ));
if( SFX_ITEM_SET == pFmt->GetItemState( RES_PROTECT, TRUE, &pItem ))
- pAttr->Put( *pItem );
- pFmt->DelDiffs( *pAttr );
- pAttr->ClearItem( RES_CNTNT );
- pFmt->SetFmtAttr( *pAttr );
- delete pAttr;
+ {
+ m_pAttrSet->Put( *pItem );
+ }
+ pFmt->DelDiffs( *m_pAttrSet );
+ m_pAttrSet->ClearItem( RES_CNTNT );
+ pFmt->SetFmtAttr( *m_pAttrSet );
}
else
{
@@ -421,22 +467,20 @@ void SwUndoChgSection::Undo( SwUndoIter& rUndoIter )
pFmt->ResetFmtAttr( RES_HEADER, RES_OPAQUE );
pFmt->ResetFmtAttr( RES_SURROUND, RES_FRMATR_END-1 );
}
- pAttr = pCur;
+ m_pAttrSet.reset(pCur);
- if( !bOnlyAttrChgd )
+ if (!m_bOnlyAttrChanged)
{
- BOOL bUpdate = (!rNdSect.IsLinkType() && pSection->IsLinkType() ) ||
- ( pSection->GetLinkFileName().Len() &&
- pSection->GetLinkFileName() !=
- rNdSect.GetLinkFileName());
-
- SwSection* pTmp = new SwSection( CONTENT_SECTION, aEmptyStr );
- *pTmp = rNdSect; // das aktuelle sichern
+ const bool bUpdate =
+ (!rNdSect.IsLinkType() && m_pSectionData->IsLinkType())
+ || ( m_pSectionData->GetLinkFileName().Len()
+ && (m_pSectionData->GetLinkFileName() !=
+ rNdSect.GetLinkFileName()));
- rNdSect = *pSection; // das alte setzen
-
- delete pSection;
- pSection = pTmp; // das aktuelle ist jetzt das alte
+ // swap stored section data with live section data
+ SwSectionData *const pOld( new SwSectionData(rNdSect) );
+ rNdSect.SetSectionData(*m_pSectionData);
+ m_pSectionData.reset(pOld);
if( bUpdate )
rNdSect.CreateLink( CREATE_UPDATE );
@@ -448,8 +492,8 @@ void SwUndoChgSection::Undo( SwUndoIter& rUndoIter )
}
}
-
-void SwUndoChgSection::Redo( SwUndoIter& rUndoIter )
+void SwUndoUpdateSection::Redo( SwUndoIter& rUndoIter )
{
Undo( rUndoIter );
}
+
diff --git a/sw/source/core/unocore/unocoll.cxx b/sw/source/core/unocore/unocoll.cxx
index efe1aae42569..0b8f938d307d 100644
--- a/sw/source/core/unocore/unocoll.cxx
+++ b/sw/source/core/unocore/unocoll.cxx
@@ -1363,7 +1363,8 @@ uno::Any SwXTextSections::getByName(const OUString& Name)
for(sal_uInt16 i = 0; i < rFmts.Count(); i++)
{
SwSectionFmt* pFmt = rFmts[i];
- if(pFmt->IsInNodesArr() && aName == pFmt->GetSection()->GetName())
+ if (pFmt->IsInNodesArr()
+ && (aName == pFmt->GetSection()->GetSectionName()))
{
xSect = GetObject(*pFmt);
aRet.setValue(&xSect, ::getCppuType((uno::Reference<XTextSection>*)0));
@@ -1407,7 +1408,7 @@ uno::Sequence< OUString > SwXTextSections::getElementNames(void)
{
pFmt = rFmts[++nIndex];
}
- pArray[i] = pFmt->GetSection()->GetName();
+ pArray[i] = pFmt->GetSection()->GetSectionName();
}
}
return aSeq;
@@ -1427,7 +1428,7 @@ sal_Bool SwXTextSections::hasByName(const OUString& Name)
for(sal_uInt16 i = 0; i < rFmts.Count(); i++)
{
const SwSectionFmt* pFmt = rFmts[i];
- if(aName == pFmt->GetSection()->GetName())
+ if (aName == pFmt->GetSection()->GetSectionName())
{
bRet = sal_True;
break;
diff --git a/sw/source/core/unocore/unocrsrhelper.cxx b/sw/source/core/unocore/unocrsrhelper.cxx
index b9fe5556744c..92a33da130fe 100644
--- a/sw/source/core/unocore/unocrsrhelper.cxx
+++ b/sw/source/core/unocore/unocrsrhelper.cxx
@@ -88,6 +88,8 @@
// --> OD 2008-11-26 #158694#
#include <SwNodeNum.hxx>
// <--
+#include <fmtmeta.hxx>
+
using namespace ::com::sun::star;
using namespace ::com::sun::star::uno;
@@ -102,6 +104,37 @@ using ::rtl::OUString;
namespace SwUnoCursorHelper
{
+uno::Reference<text::XTextContent>
+GetNestedTextContent(SwTxtNode & rTextNode, xub_StrLen const nIndex,
+ bool const bParent)
+{
+ // these should be unambiguous because of the dummy character
+ SwTxtNode::GetTxtAttrMode const eMode( (bParent)
+ ? SwTxtNode::PARENT : SwTxtNode::EXPAND );
+ SwTxtAttr *const pMetaTxtAttr =
+ rTextNode.GetTxtAttrAt(nIndex, RES_TXTATR_META, eMode);
+ SwTxtAttr *const pMetaFieldTxtAttr =
+ rTextNode.GetTxtAttrAt(nIndex, RES_TXTATR_METAFIELD, eMode);
+ // which is innermost?
+ SwTxtAttr *const pTxtAttr = (pMetaTxtAttr)
+ ? ((pMetaFieldTxtAttr)
+ ? ((*pMetaFieldTxtAttr->GetStart() >
+ *pMetaTxtAttr->GetStart())
+ ? pMetaFieldTxtAttr : pMetaTxtAttr)
+ : pMetaTxtAttr)
+ : pMetaFieldTxtAttr;
+ uno::Reference<XTextContent> xRet;
+ if (pTxtAttr)
+ {
+ ::sw::Meta *const pMeta(
+ static_cast<SwFmtMeta &>(pTxtAttr->GetAttr()).GetMeta());
+ OSL_ASSERT(pMeta);
+ xRet.set(pMeta->MakeUnoObject(), uno::UNO_QUERY);
+ }
+ return xRet;
+}
+
+
/* -----------------16.09.98 12:27-------------------
* Lesen spezieller Properties am Cursor
* --------------------------------------------------*/
@@ -300,14 +333,15 @@ sal_Bool getCrsrPropertyValue(const SfxItemPropertySimpleEntry& rEntry
break;
case FN_UNO_DOCUMENT_INDEX_MARK:
{
- SwTxtAttr* pTxtAttr = rPam.GetNode()->GetTxtNode()->GetTxtAttr(
- rPam.GetPoint()->nContent, RES_TXTATR_TOXMARK);
- if(pTxtAttr)
+ ::std::vector<SwTxtAttr *> const marks(
+ rPam.GetNode()->GetTxtNode()->GetTxtAttrsAt(
+ rPam.GetPoint()->nContent.GetIndex(), RES_TXTATR_TOXMARK));
+ if (marks.size())
{
if( pAny )
- {
+ { // hmm... can only return 1 here
SwTOXMark & rMark =
- static_cast<SwTOXMark&>(pTxtAttr->GetAttr());
+ static_cast<SwTOXMark &>((*marks.begin())->GetAttr());
const uno::Reference< text::XDocumentIndexMark > xRef =
SwXDocumentIndexMark::CreateXDocumentIndexMark(
*rPam.GetDoc(),
@@ -343,9 +377,10 @@ sal_Bool getCrsrPropertyValue(const SfxItemPropertySimpleEntry& rEntry
const SwPosition *pPos = rPam.Start();
const SwTxtNode *pTxtNd =
rPam.GetDoc()->GetNodes()[pPos->nNode.GetIndex()]->GetTxtNode();
- SwTxtAttr* pTxtAttr =
- pTxtNd ? pTxtNd->GetTxtAttr(pPos->nContent, RES_TXTATR_FIELD)
- : 0;
+ SwTxtAttr *const pTxtAttr = (pTxtNd)
+ ? pTxtNd->GetTxtAttrForCharAt(
+ pPos->nContent.GetIndex(), RES_TXTATR_FIELD)
+ : 0;
if(pTxtAttr)
{
if( pAny )
@@ -434,8 +469,9 @@ sal_Bool getCrsrPropertyValue(const SfxItemPropertySimpleEntry& rEntry
case FN_UNO_ENDNOTE:
case FN_UNO_FOOTNOTE:
{
- SwTxtAttr* pTxtAttr = rPam.GetNode()->GetTxtNode()->
- GetTxtAttr(rPam.GetPoint()->nContent, RES_TXTATR_FTN);
+ SwTxtAttr *const pTxtAttr =
+ rPam.GetNode()->GetTxtNode()->GetTxtAttrForCharAt(
+ rPam.GetPoint()->nContent.GetIndex(), RES_TXTATR_FTN);
if(pTxtAttr)
{
const SwFmtFtn& rFtn = pTxtAttr->GetFtn();
@@ -457,13 +493,14 @@ sal_Bool getCrsrPropertyValue(const SfxItemPropertySimpleEntry& rEntry
break;
case FN_UNO_REFERENCE_MARK:
{
- SwTxtAttr* pTxtAttr = rPam.GetNode()->GetTxtNode()->
- GetTxtAttr(rPam.GetPoint()->nContent, RES_TXTATR_REFMARK);
- if(pTxtAttr)
+ ::std::vector<SwTxtAttr *> const marks(
+ rPam.GetNode()->GetTxtNode()->GetTxtAttrsAt(
+ rPam.GetPoint()->nContent.GetIndex(), RES_TXTATR_REFMARK));
+ if (marks.size())
{
if( pAny )
- {
- const SwFmtRefMark& rRef = pTxtAttr->GetRefMark();
+ { // hmm... can only return 1 here
+ const SwFmtRefMark& rRef = (*marks.begin())->GetRefMark();
uno::Reference< XTextContent > xRef = SwXReferenceMarks::GetObject( rPam.GetDoc(), &rRef );
pAny->setValue(&xRef, ::getCppuType((uno::Reference<XTextContent>*)0));
}
@@ -472,6 +509,24 @@ sal_Bool getCrsrPropertyValue(const SfxItemPropertySimpleEntry& rEntry
eNewState = PropertyState_DEFAULT_VALUE;
}
break;
+ case FN_UNO_NESTED_TEXT_CONTENT:
+ {
+ uno::Reference<XTextContent> const xRet(
+ GetNestedTextContent(*rPam.GetNode()->GetTxtNode(),
+ rPam.GetPoint()->nContent.GetIndex(), false));
+ if (xRet.is())
+ {
+ if (pAny)
+ {
+ (*pAny) <<= xRet;
+ }
+ }
+ else
+ {
+ eNewState = PropertyState_DEFAULT_VALUE;
+ }
+ }
+ break;
case FN_UNO_CHARFMT_SEQUENCE:
{
diff --git a/sw/source/core/unocore/unodraw.cxx b/sw/source/core/unocore/unodraw.cxx
index 8ae8f948900f..ab5d68910769 100644
--- a/sw/source/core/unocore/unodraw.cxx
+++ b/sw/source/core/unocore/unodraw.cxx
@@ -39,6 +39,7 @@
#include <unotextrange.hxx>
#include <unoprnms.hxx>
#include <editeng/unoprnms.hxx>
+#include <svx/svditer.hxx>
#include <swunohelper.hxx>
#include <doc.hxx>
#include <fmtcntnt.hxx>
@@ -1052,25 +1053,34 @@ SwXShape::SwXShape(uno::Reference< uno::XInterface > & xShape) :
-----------------------------------------------------------------------*/
void SwXShape::AddExistingShapeToFmt( SdrObject& _rObj )
{
- SwXShape* pSwShape = NULL;
- uno::Reference< lang::XUnoTunnel > xShapeTunnel( _rObj.getWeakUnoShape(), uno::UNO_QUERY );
- if ( xShapeTunnel.is() )
- pSwShape = reinterpret_cast< SwXShape * >(
- sal::static_int_cast< sal_IntPtr >( xShapeTunnel->getSomething( SwXShape::getUnoTunnelId() ) ) );
- if ( pSwShape )
+ SdrObjListIter aIter( _rObj, IM_DEEPNOGROUPS );
+ while ( aIter.IsMore() )
{
- if ( pSwShape->m_bDescriptor )
- {
- SwFrmFmt* pFmt = ::FindFrmFmt( &const_cast< SdrObject& >( _rObj ) );
- if ( pFmt )
- pFmt->Add( pSwShape );
- pSwShape->m_bDescriptor = sal_False;
- }
+ SdrObject* pCurrent = aIter.Next();
+ OSL_ENSURE( pCurrent, "SwXShape::AddExistingShapeToFmt: invalid object list element!" );
+ if ( !pCurrent )
+ continue;
- if ( !pSwShape->pImpl->bInitializedPropertyNotifier )
+ SwXShape* pSwShape = NULL;
+ uno::Reference< lang::XUnoTunnel > xShapeTunnel( pCurrent->getWeakUnoShape(), uno::UNO_QUERY );
+ if ( xShapeTunnel.is() )
+ pSwShape = reinterpret_cast< SwXShape * >(
+ sal::static_int_cast< sal_IntPtr >( xShapeTunnel->getSomething( SwXShape::getUnoTunnelId() ) ) );
+ if ( pSwShape )
{
- lcl_addShapePropertyEventFactories( _rObj, *pSwShape );
- pSwShape->pImpl->bInitializedPropertyNotifier = true;
+ if ( pSwShape->m_bDescriptor )
+ {
+ SwFrmFmt* pFmt = ::FindFrmFmt( const_cast< SdrObject* >( pCurrent ) );
+ if ( pFmt )
+ pFmt->Add( pSwShape );
+ pSwShape->m_bDescriptor = sal_False;
+ }
+
+ if ( !pSwShape->pImpl->bInitializedPropertyNotifier )
+ {
+ lcl_addShapePropertyEventFactories( *pCurrent, *pSwShape );
+ pSwShape->pImpl->bInitializedPropertyNotifier = true;
+ }
}
}
}
diff --git a/sw/source/core/unocore/unoflatpara.cxx b/sw/source/core/unocore/unoflatpara.cxx
index ec04b3d3db8c..2923b4e46317 100644
--- a/sw/source/core/unocore/unoflatpara.cxx
+++ b/sw/source/core/unocore/unoflatpara.cxx
@@ -30,6 +30,7 @@
#include <editeng/unolingu.hxx>
+#include <unobaseclass.hxx>
#include <unoflatpara.hxx>
#include <vos/mutex.hxx>
@@ -265,6 +266,24 @@ css::uno::Sequence< ::sal_Int32 > SAL_CALL SwXFlatParagraph::getLanguagePortions
return css::uno::Sequence< ::sal_Int32>();
}
+
+const uno::Sequence< sal_Int8 >&
+SwXFlatParagraph::getUnoTunnelId()
+{
+ static uno::Sequence<sal_Int8> aSeq(CreateUnoTunnelId());
+ return aSeq;
+}
+
+
+sal_Int64 SAL_CALL
+SwXFlatParagraph::getSomething(
+ const uno::Sequence< sal_Int8 >& rId)
+ throw (uno::RuntimeException)
+{
+ return sw::UnoTunnelImpl(rId, this);
+}
+
+
/******************************************************************************
* SwXFlatParagraphIterator
******************************************************************************/
@@ -426,8 +445,9 @@ uno::Reference< text::XFlatParagraph > SwXFlatParagraphIterator::getParaAfter(co
if (!mpDoc)
return xRet;
- text::XFlatParagraph* pFP = xPara.get();
- SwXFlatParagraph* pFlatParagraph = static_cast<SwXFlatParagraph*>(pFP);
+ const uno::Reference<lang::XUnoTunnel> xFPTunnel(xPara, uno::UNO_QUERY);
+ OSL_ASSERT(xFPTunnel.is());
+ SwXFlatParagraph* const pFlatParagraph(sw::UnoTunnelGetImplementation<SwXFlatParagraph>(xFPTunnel));
if ( !pFlatParagraph )
return xRet;
@@ -472,8 +492,9 @@ uno::Reference< text::XFlatParagraph > SwXFlatParagraphIterator::getParaBefore(c
if (!mpDoc)
return xRet;
- text::XFlatParagraph* pFP = xPara.get();
- SwXFlatParagraph* pFlatParagraph = static_cast<SwXFlatParagraph*>(pFP);
+ const uno::Reference<lang::XUnoTunnel> xFPTunnel(xPara, uno::UNO_QUERY);
+ OSL_ASSERT(xFPTunnel.is());
+ SwXFlatParagraph* const pFlatParagraph(sw::UnoTunnelGetImplementation<SwXFlatParagraph>(xFPTunnel));
if ( !pFlatParagraph )
return xRet;
@@ -508,4 +529,3 @@ uno::Reference< text::XFlatParagraph > SwXFlatParagraphIterator::getParaBefore(c
return xRet;
}
-
diff --git a/sw/source/core/unocore/unoftn.cxx b/sw/source/core/unocore/unoftn.cxx
index 44991960ac25..d0d74fa023c7 100644
--- a/sw/source/core/unocore/unoftn.cxx
+++ b/sw/source/core/unocore/unoftn.cxx
@@ -78,7 +78,9 @@ public:
, m_rThis(rThis)
, m_bIsEndnote(bIsEndnote)
, m_ListenerContainer(static_cast< ::cppu::OWeakObject* >(&rThis))
- , m_bIsDescriptor(0 == pFootnote)
+// #i111177#: unxsols4 (Sun C++ 5.9 SunOS_sparc) generates wrong code for this
+// , m_bIsDescriptor(0 == pFootnote)
+ , m_bIsDescriptor((0 == pFootnote) ? true : false)
, m_pFmtFtn(pFootnote)
{
}
diff --git a/sw/source/core/unocore/unoidx.cxx b/sw/source/core/unocore/unoidx.cxx
index 8749e9efb80a..d51225f84f96 100644
--- a/sw/source/core/unocore/unoidx.cxx
+++ b/sw/source/core/unocore/unoidx.cxx
@@ -915,9 +915,9 @@ throw (beans::UnknownPropertyException, beans::PropertyVetoException,
const SwSectionFmt* pTmpFmt = rSects[ i ];
if (pTmpFmt == pSectionFmt)
{
- m_pImpl->m_pDoc->ChgSection( i,
- static_cast<SwTOXBaseSection&>(rTOXBase),
- & aAttrSet);
+ SwSectionData tmpData(
+ static_cast<SwTOXBaseSection&>(rTOXBase));
+ m_pImpl->m_pDoc->UpdateSection(i, tmpData, & aAttrSet);
break;
}
}
@@ -1510,7 +1510,7 @@ OUString SAL_CALL SwXDocumentIndex::getName() throw (uno::RuntimeException)
}
else if(pSectionFmt)
{
- uRet = OUString(pSectionFmt->GetSection()->GetName());
+ uRet = OUString(pSectionFmt->GetSection()->GetSectionName());
}
else
{
@@ -1551,6 +1551,25 @@ SwXDocumentIndex::setName(const OUString& rName) throw (uno::RuntimeException)
}
}
+// MetadatableMixin
+::sfx2::Metadatable* SwXDocumentIndex::GetCoreObject()
+{
+ SwSectionFmt *const pSectionFmt( m_pImpl->GetSectionFmt() );
+ return pSectionFmt;
+}
+
+uno::Reference<frame::XModel> SwXDocumentIndex::GetModel()
+{
+ SwSectionFmt *const pSectionFmt( m_pImpl->GetSectionFmt() );
+ if (pSectionFmt)
+ {
+ SwDocShell const*const pShell( pSectionFmt->GetDoc()->GetDocShell() );
+ return (pShell) ? pShell->GetModel() : 0;
+ }
+ return 0;
+}
+
+
/******************************************************************
* SwXDocumentIndexMark
******************************************************************/
@@ -1573,6 +1592,8 @@ lcl_TypeToPropertyMap_Mark(const TOXTypes eType)
class SwXDocumentIndexMark::Impl
: public SwClient
{
+private:
+ bool m_bInReplaceMark;
public:
@@ -1599,6 +1620,7 @@ public:
const enum TOXTypes eType,
SwTOXType *const pType, SwTOXMark const*const pMark)
: SwClient(const_cast<SwTOXMark*>(pMark))
+ , m_bInReplaceMark(false)
, m_rPropSet(
*aSwMapProvider.GetPropertySet(lcl_TypeToPropertyMap_Mark(eType)))
, m_eTOXType(eType)
@@ -1617,11 +1639,33 @@ public:
const_cast<SwModify *>(m_TypeDepend.GetRegisteredIn()));
}
+ void DeleteTOXMark()
+ {
+ m_pDoc->DeleteTOXMark(m_pTOXMark); // calls Invalidate() via Modify!
+ m_pTOXMark = 0;
+ }
+
+ void InsertTOXMark(SwTOXType & rTOXType, SwTOXMark & rMark, SwPaM & rPam,
+ SwXTextCursor const*const pTextCursor);
+
+ void ReplaceTOXMark(SwTOXType & rTOXType, SwTOXMark & rMark, SwPaM & rPam)
+ {
+ m_bInReplaceMark = true;
+ DeleteTOXMark();
+ m_bInReplaceMark = false;
+ try {
+ InsertTOXMark(rTOXType, rMark, rPam, 0);
+ } catch (...) {
+ OSL_ENSURE(false, "ReplaceTOXMark() failed!");
+ m_ListenerContainer.Disposing();
+ throw;
+ }
+ }
+
void Invalidate();
// SwClient
virtual void Modify(SfxPoolItem *pOld, SfxPoolItem *pNew);
-
};
/* -----------------------------16.10.00 11:24--------------------------------
@@ -1638,7 +1682,10 @@ void SwXDocumentIndexMark::Impl::Invalidate()
&m_TypeDepend);
}
}
- m_ListenerContainer.Disposing();
+ if (!m_bInReplaceMark) // #i109983# only dispose on delete, not on replace!
+ {
+ m_ListenerContainer.Disposing();
+ }
m_pDoc = 0;
m_pTOXMark = 0;
}
@@ -1831,32 +1878,7 @@ throw (uno::RuntimeException)
else
aPam.GetPoint()->nContent++;
- // delete old mark
- m_pImpl->m_pDoc->DeleteTOXMark(m_pImpl->m_pTOXMark);
- m_pImpl->m_pTOXMark = 0;
-
- SwTxtAttr* pTxtAttr = 0;
- sal_Bool bInsAtPos = aMark.IsAlternativeText();
- const SwPosition *pStt = aPam.Start(),
- *pEnd = aPam.End();
- if( bInsAtPos )
- {
- SwPaM aTmp( *pStt );
- m_pImpl->m_pDoc->InsertPoolItem( aTmp, aMark, 0 );
- pTxtAttr = pStt->nNode.GetNode().GetTxtNode()->GetTxtAttrForCharAt(
- pStt->nContent.GetIndex()-1, RES_TXTATR_TOXMARK);
- }
- else if( *pEnd != *pStt )
- {
- m_pImpl->m_pDoc->InsertPoolItem( aPam, aMark,
- nsSetAttrMode::SETATTR_DONTEXPAND );
- pTxtAttr = pStt->nNode.GetNode().GetTxtNode()->GetTxtAttr(
- pStt->nContent, RES_TXTATR_TOXMARK);
- }
- if(pTxtAttr)
- {
- m_pImpl->m_pTOXMark = &pTxtAttr->GetTOXMark();
- }
+ m_pImpl->ReplaceTOXMark(*pType, aMark, aPam);
}
else if (m_pImpl->m_bIsDescriptor)
{
@@ -1984,17 +2006,45 @@ throw (lang::IllegalArgumentException, uno::RuntimeException)
default:
break;
}
+
+ m_pImpl->InsertTOXMark(*const_cast<SwTOXType *>(pTOXType), aMark, aPam,
+ dynamic_cast<SwXTextCursor const*>(pCursor));
+
+ m_pImpl->m_bIsDescriptor = sal_False;
+}
+
+template<typename T> struct NotContainedIn
+{
+ ::std::vector<T> const& m_rVector;
+ explicit NotContainedIn(::std::vector<T> const& rVector)
+ : m_rVector(rVector) { }
+ bool operator() (T const& rT) {
+ return ::std::find(m_rVector.begin(), m_rVector.end(), rT)
+ == m_rVector.end();
+ }
+};
+
+void SwXDocumentIndexMark::Impl::InsertTOXMark(
+ SwTOXType & rTOXType, SwTOXMark & rMark, SwPaM & rPam,
+ SwXTextCursor const*const pTextCursor)
+{
+ SwDoc *const pDoc( rPam.GetDoc() );
UnoActionContext aAction(pDoc);
- const sal_Bool bMark = *aPam.GetPoint() != *aPam.GetMark();
+ bool bMark = *rPam.GetPoint() != *rPam.GetMark();
+ // n.b.: toxmarks must have either alternative text or an extent
+ if (bMark && rMark.GetAlternativeText().Len())
+ {
+ rPam.Normalize(TRUE);
+ rPam.DeleteMark();
+ bMark = false;
+ }
// Marks ohne Alternativtext ohne selektierten Text koennen nicht eingefuegt werden,
// deshalb hier ein Leerzeichen - ob das die ideale Loesung ist?
- if (!bMark && !aMark.GetAlternativeText().Len())
+ if (!bMark && !rMark.GetAlternativeText().Len())
{
- aMark.SetAlternativeText( String(' ') );
+ rMark.SetAlternativeText( String(' ') );
}
- SwXTextCursor const*const pTextCursor(
- dynamic_cast<SwXTextCursor*>(pCursor));
const bool bForceExpandHints( (!bMark && pTextCursor)
? pTextCursor->IsAtEndOfMeta() : false );
const SetAttrMode nInsertFlags = (bForceExpandHints)
@@ -2002,35 +2052,54 @@ throw (lang::IllegalArgumentException, uno::RuntimeException)
| nsSetAttrMode::SETATTR_DONTEXPAND)
: nsSetAttrMode::SETATTR_DONTEXPAND;
- pDoc->InsertPoolItem(aPam, aMark, nInsertFlags);
- if (bMark && *aPam.GetPoint() > *aPam.GetMark())
+ ::std::vector<SwTxtAttr *> oldMarks;
+ if (bMark)
+ {
+ oldMarks = rPam.GetNode()->GetTxtNode()->GetTxtAttrsAt(
+ rPam.GetPoint()->nContent.GetIndex(), RES_TXTATR_TOXMARK);
+ }
+
+ pDoc->InsertPoolItem(rPam, rMark, nInsertFlags);
+ if (bMark && *rPam.GetPoint() > *rPam.GetMark())
{
- aPam.Exchange();
+ rPam.Exchange();
}
- SwTxtAttr* pTxtAttr = 0;
+ // rMark was copied into the document pool; now retrieve real format...
+ SwTxtAttr * pTxtAttr(0);
if (bMark)
{
- pTxtAttr = aPam.GetNode()->GetTxtNode()->GetTxtAttr(
- aPam.GetPoint()->nContent, RES_TXTATR_TOXMARK );
+ // #i107672#
+ // ensure that we do not retrieve a different mark at the same position
+ ::std::vector<SwTxtAttr *> const newMarks(
+ rPam.GetNode()->GetTxtNode()->GetTxtAttrsAt(
+ rPam.GetPoint()->nContent.GetIndex(), RES_TXTATR_TOXMARK));
+ ::std::vector<SwTxtAttr *>::const_iterator const iter(
+ ::std::find_if(newMarks.begin(), newMarks.end(),
+ NotContainedIn<SwTxtAttr *>(oldMarks)));
+ OSL_ASSERT(newMarks.end() != iter);
+ if (newMarks.end() != iter)
+ {
+ pTxtAttr = *iter;
+ }
}
else
{
- pTxtAttr = aPam.GetNode()->GetTxtNode()->GetTxtAttrForCharAt(
- aPam.GetPoint()->nContent.GetIndex()-1, RES_TXTATR_TOXMARK );
+ pTxtAttr = rPam.GetNode()->GetTxtNode()->GetTxtAttrForCharAt(
+ rPam.GetPoint()->nContent.GetIndex()-1, RES_TXTATR_TOXMARK );
}
if (!pTxtAttr)
{
- throw uno::RuntimeException();
+ throw uno::RuntimeException(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "SwXDocumentIndexMark::InsertTOXMark(): cannot insert attribute")),
+ 0);
}
- m_pImpl->m_pTOXMark = &pTxtAttr->GetTOXMark();
- m_pImpl->m_pDoc = pDoc;
- m_pImpl->m_bIsDescriptor = sal_False;
-
- const_cast<SwTOXMark*>(m_pImpl->m_pTOXMark)->Add(m_pImpl.get());
- const_cast<SwTOXType*>(pTOXType)->Add(&m_pImpl->m_TypeDepend);
+ m_pDoc = pDoc;
+ m_pTOXMark = & pTxtAttr->GetTOXMark();
+ const_cast<SwTOXMark*>(m_pTOXMark)->Add(this);
+ const_cast<SwTOXType &>(rTOXType).Add(& m_TypeDepend);
}
/*-- 14.12.98 10:25:45---------------------------------------------------
@@ -2081,7 +2150,7 @@ SwXDocumentIndexMark::dispose() throw (uno::RuntimeException)
SwTOXType *const pType = m_pImpl->GetTOXType();
if (pType && m_pImpl->m_pTOXMark)
{
- m_pImpl->m_pDoc->DeleteTOXMark(m_pImpl->m_pTOXMark);
+ m_pImpl->DeleteTOXMark(); // call Invalidate() via modify!
}
}
/*-- 14.12.98 10:25:45---------------------------------------------------
@@ -2181,8 +2250,6 @@ throw (beans::UnknownPropertyException, beans::PropertyVetoException,
SwTOXType *const pType = m_pImpl->GetTOXType();
if (pType && m_pImpl->m_pTOXMark)
{
- SwDoc* pLocalDoc = m_pImpl->m_pDoc;
-
SwTOXMark aMark(*m_pImpl->m_pTOXMark);
switch(pEntry->nWID)
{
@@ -2225,37 +2292,7 @@ throw (beans::UnknownPropertyException, beans::PropertyVetoException,
aPam.GetPoint()->nContent++;
}
- //delete the old mark
- pLocalDoc->DeleteTOXMark(m_pImpl->m_pTOXMark);
- m_pImpl->m_pTOXMark = 0;
-
- sal_Bool bInsAtPos = aMark.IsAlternativeText();
- const SwPosition *pStt = aPam.Start();
- const SwPosition *pEnd = aPam.End();
-
- SwTxtAttr* pTxtAttr = 0;
- if( bInsAtPos )
- {
- SwPaM aTmp( *pStt );
- pLocalDoc->InsertPoolItem( aTmp, aMark, 0 );
- pTxtAttr = pStt->nNode.GetNode().GetTxtNode()->GetTxtAttrForCharAt(
- pStt->nContent.GetIndex()-1, RES_TXTATR_TOXMARK );
- }
- else if( *pEnd != *pStt )
- {
- pLocalDoc->InsertPoolItem( aPam, aMark,
- nsSetAttrMode::SETATTR_DONTEXPAND );
- pTxtAttr = pStt->nNode.GetNode().GetTxtNode()->GetTxtAttr(
- pStt->nContent, RES_TXTATR_TOXMARK );
- }
- m_pImpl->m_pDoc = pLocalDoc;
-
- if(pTxtAttr)
- {
- m_pImpl->m_pTOXMark = &pTxtAttr->GetTOXMark();
- const_cast<SwTOXMark*>(m_pImpl->m_pTOXMark)->Add(m_pImpl.get());
- pType->Add(&m_pImpl->m_TypeDepend);
- }
+ m_pImpl->ReplaceTOXMark(*pType, aMark, aPam);
}
else if (m_pImpl->m_bIsDescriptor)
{
diff --git a/sw/source/core/unocore/unomap.cxx b/sw/source/core/unocore/unomap.cxx
index 94d1f47fff12..765b1ae37485 100644
--- a/sw/source/core/unocore/unomap.cxx
+++ b/sw/source/core/unocore/unomap.cxx
@@ -279,10 +279,11 @@ SwUnoPropertyMapProvider::~SwUnoPropertyMapProvider()
COMMON_CRSR_PARA_PROPERTIES\
{ SW_PROP_NMID(UNO_NAME_DOCUMENT_INDEX_MARK), FN_UNO_DOCUMENT_INDEX_MARK, CPPU_E2T(CPPUTYPE_REFDOCIDXMRK), PropertyAttribute::MAYBEVOID|PropertyAttribute::READONLY ,0 },\
{ SW_PROP_NMID(UNO_NAME_TEXT_FIELD), FN_UNO_TEXT_FIELD, CPPU_E2T(CPPUTYPE_REFTXTFIELD), PropertyAttribute::MAYBEVOID|PropertyAttribute::READONLY ,0 },\
- { SW_PROP_NMID(UNO_NAME_REFERENCE_MARK), FN_UNO_REFERENCE_MARK, CPPU_E2T(CPPUTYPE_REFTEXTCNTNT), PropertyAttribute::MAYBEVOID ,0 },\
+ { SW_PROP_NMID(UNO_NAME_REFERENCE_MARK), FN_UNO_REFERENCE_MARK, CPPU_E2T(CPPUTYPE_REFTEXTCNTNT), PropertyAttribute::MAYBEVOID|PropertyAttribute::READONLY, 0 },\
{ SW_PROP_NMID(UNO_NAME_FOOTNOTE), FN_UNO_FOOTNOTE, CPPU_E2T(CPPUTYPE_REFFOOTNOTE), PropertyAttribute::MAYBEVOID|PropertyAttribute::READONLY ,0 },\
{ SW_PROP_NMID(UNO_NAME_ENDNOTE), FN_UNO_ENDNOTE, CPPU_E2T(CPPUTYPE_REFFOOTNOTE), PropertyAttribute::MAYBEVOID|PropertyAttribute::READONLY ,0 },\
{ SW_PROP_NMID(UNO_NAME_HYPER_LINK_EVENTS), RES_TXTATR_INETFMT, CPPU_E2T(CPPUTYPE_REFNMREPLACE), PropertyAttribute::MAYBEVOID, MID_URL_HYPERLINKEVENTS},\
+ { SW_PROP_NMID(UNO_NAME_NESTED_TEXT_CONTENT), FN_UNO_NESTED_TEXT_CONTENT, CPPU_E2T(CPPUTYPE_REFTEXTCNTNT), PropertyAttribute::MAYBEVOID|PropertyAttribute::READONLY, 0 },\
TABSTOPS_MAP_ENTRY
diff --git a/sw/source/core/unocore/unoobj2.cxx b/sw/source/core/unocore/unoobj2.cxx
index 161afb2373bd..d9334e97c841 100644
--- a/sw/source/core/unocore/unoobj2.cxx
+++ b/sw/source/core/unocore/unoobj2.cxx
@@ -1934,8 +1934,8 @@ lcl_FillFrame(SwClient & rEnum, SwUnoCrsr& rUnoCrsr,
{
// search for objects at the cursor - anchored at/as char
SwTxtAttr const*const pTxtAttr =
- rUnoCrsr.GetNode()->GetTxtNode()->GetTxtAttr(
- rUnoCrsr.GetPoint()->nContent, RES_TXTATR_FLYCNT);
+ rUnoCrsr.GetNode()->GetTxtNode()->GetTxtAttrForCharAt(
+ rUnoCrsr.GetPoint()->nContent.GetIndex(), RES_TXTATR_FLYCNT);
if (pTxtAttr)
{
const SwFmtFlyCnt& rFlyCnt = pTxtAttr->GetFlyCnt();
diff --git a/sw/source/core/unocore/unoprnms.cxx b/sw/source/core/unocore/unoprnms.cxx
index f049764a2b23..049ccfe42ed7 100644
--- a/sw/source/core/unocore/unoprnms.cxx
+++ b/sw/source/core/unocore/unoprnms.cxx
@@ -778,6 +778,7 @@ const SwPropNameTab aPropNameTab = {
/* 0736 UNO_NAME_OUTLINE_LEVEL */ {MAP_CHAR_LEN("OutlineLevel")},//#outline level,add<-zhaojianwei Outlinelevel
/* 0737 UNO_NAME_DESCRIPTION */ {MAP_CHAR_LEN("Description")},
/* 0738 UNO_NAME_META */ {MAP_CHAR_LEN("InContentMetadata")},
+/* 0739 UNO_NAME_NESTED_TEXT_CONTENT */ {MAP_CHAR_LEN("NestedTextContent")},
};
const SwPropNameLen& SwGetPropName( USHORT nId )
diff --git a/sw/source/core/unocore/unorefmk.cxx b/sw/source/core/unocore/unorefmk.cxx
index 1450e1bd806a..622a995df0ac 100644
--- a/sw/source/core/unocore/unorefmk.cxx
+++ b/sw/source/core/unocore/unorefmk.cxx
@@ -38,6 +38,7 @@
#include <unomap.hxx>
#include <unocrsr.hxx>
#include <unoevtlstnr.hxx>
+#include <unocrsrhelper.hxx>
#include <doc.hxx>
#include <ndtxt.hxx>
#include <fmtrfmrk.hxx>
@@ -235,6 +236,17 @@ throw (uno::RuntimeException)
/* -----------------03.11.99 14:14-------------------
--------------------------------------------------*/
+template<typename T> struct NotContainedIn
+{
+ ::std::vector<T> const& m_rVector;
+ explicit NotContainedIn(::std::vector<T> const& rVector)
+ : m_rVector(rVector) { }
+ bool operator() (T const& rT) {
+ return ::std::find(m_rVector.begin(), m_rVector.end(), rT)
+ == m_rVector.end();
+ }
+};
+
void SwXReferenceMark::Impl::InsertRefMark(SwPaM& rPam,
SwXTextCursor const*const pCursor)
{
@@ -254,6 +266,13 @@ void SwXReferenceMark::Impl::InsertRefMark(SwPaM& rPam,
| nsSetAttrMode::SETATTR_DONTEXPAND)
: nsSetAttrMode::SETATTR_DONTEXPAND;
+ ::std::vector<SwTxtAttr *> oldMarks;
+ if (bMark)
+ {
+ oldMarks = rPam.GetNode()->GetTxtNode()->GetTxtAttrsAt(
+ rPam.GetPoint()->nContent.GetIndex(), RES_TXTATR_REFMARK);
+ }
+
pDoc2->InsertPoolItem( rPam, aRefMark, nInsertFlags );
if( bMark && *rPam.GetPoint() > *rPam.GetMark())
@@ -261,17 +280,38 @@ void SwXReferenceMark::Impl::InsertRefMark(SwPaM& rPam,
rPam.Exchange();
}
- SwTxtAttr *const pTxtAttr = (bMark)
- ? rPam.GetNode()->GetTxtNode()->GetTxtAttr(
- rPam.GetPoint()->nContent, RES_TXTATR_REFMARK)
- : rPam.GetNode()->GetTxtNode()->GetTxtAttrForCharAt(
+ // aRefMark was copied into the document pool; now retrieve real format...
+ SwTxtAttr * pTxtAttr(0);
+ if (bMark)
+ {
+ // #i107672#
+ // ensure that we do not retrieve a different mark at the same position
+ ::std::vector<SwTxtAttr *> const newMarks(
+ rPam.GetNode()->GetTxtNode()->GetTxtAttrsAt(
+ rPam.GetPoint()->nContent.GetIndex(), RES_TXTATR_REFMARK));
+ ::std::vector<SwTxtAttr *>::const_iterator const iter(
+ ::std::find_if(newMarks.begin(), newMarks.end(),
+ NotContainedIn<SwTxtAttr *>(oldMarks)));
+ OSL_ASSERT(newMarks.end() != iter);
+ if (newMarks.end() != iter)
+ {
+ pTxtAttr = *iter;
+ }
+ }
+ else
+ {
+ pTxtAttr = rPam.GetNode()->GetTxtNode()->GetTxtAttrForCharAt(
rPam.GetPoint()->nContent.GetIndex() - 1, RES_TXTATR_REFMARK);
+ }
- if(pTxtAttr)
+ if (!pTxtAttr)
{
- m_pMarkFmt = &pTxtAttr->GetRefMark();
+ throw uno::RuntimeException(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "SwXReferenceMark::InsertRefMark(): cannot insert attribute")), 0);
}
+ m_pMarkFmt = &pTxtAttr->GetRefMark();
+
pDoc2->GetUnoCallBack()->Add(this);
}
@@ -310,7 +350,6 @@ throw (lang::IllegalArgumentException, uno::RuntimeException)
m_pImpl->InsertRefMark(aPam, dynamic_cast<SwXTextCursor*>(pCursor));
m_pImpl->m_bIsDescriptor = sal_False;
m_pImpl->m_pDoc = pDocument;
- m_pImpl->m_pDoc->GetUnoCallBack()->Add(m_pImpl.get());
}
/*-- 11.12.98 10:28:34---------------------------------------------------
@@ -1159,11 +1198,7 @@ uno::Reference< text::XText > SAL_CALL
SwXMeta::getText() throw (uno::RuntimeException)
{
vos::OGuard g(Application::GetSolarMutex());
- //TODO probably this should return outer meta in case there is nesting,
- // but currently that is not done; would need to change at least
- // SwXTextPortionEnumeration and SwXMeta::attach and other places where
- // SwXMeta is constructed
- return GetParentText();
+ return this;
}
uno::Reference< text::XTextRange > SAL_CALL
@@ -1249,6 +1284,33 @@ SwXMeta::removeTextContent(
return m_pImpl->m_Text.removeTextContent(xContent);
}
+// XChild
+uno::Reference< uno::XInterface > SAL_CALL
+SwXMeta::getParent() throw (uno::RuntimeException)
+{
+ vos::OGuard g(Application::GetSolarMutex());
+ SwTxtNode * pTxtNode;
+ xub_StrLen nMetaStart;
+ xub_StrLen nMetaEnd;
+ bool const bSuccess( SetContentRange(pTxtNode, nMetaStart, nMetaEnd) );
+ OSL_ENSURE(bSuccess, "no pam?");
+ if (!bSuccess) { throw lang::DisposedException(); }
+ // in order to prevent getting this meta, subtract 1 from nMetaStart;
+ // so we get the index of the dummy character, and we exclude it
+ // by calling GetTxtAttrAt(_, _, PARENT) in GetNestedTextContent
+ uno::Reference<text::XTextContent> const xRet(
+ SwUnoCursorHelper::GetNestedTextContent(*pTxtNode, nMetaStart - 1,
+ true) );
+ return xRet;
+}
+
+void SAL_CALL
+SwXMeta::setParent(uno::Reference< uno::XInterface > const& /*xParent*/)
+ throw (uno::RuntimeException, lang::NoSupportException)
+{
+ throw lang::NoSupportException(C2S("setting parent not supported"), *this);
+}
+
// XElementAccess
uno::Type SAL_CALL
SwXMeta::getElementType() throw (uno::RuntimeException)
diff --git a/sw/source/core/unocore/unosect.cxx b/sw/source/core/unocore/unosect.cxx
index 3dda0cebec28..1e18cc5becc5 100644
--- a/sw/source/core/unocore/unosect.cxx
+++ b/sw/source/core/unocore/unosect.cxx
@@ -369,7 +369,7 @@ throw (lang::IllegalArgumentException, uno::RuntimeException)
}
String tmp(m_pImpl->m_sName);
- SwSection aSect(eType, pDoc->GetUniqueSectionName(&tmp));
+ SwSectionData aSect(eType, pDoc->GetUniqueSectionName(&tmp));
aSect.SetCondition(m_pImpl->m_pProps->m_sCondition);
::rtl::OUStringBuffer sLinkNameBuf(m_pImpl->m_pProps->m_sLinkFileName);
sLinkNameBuf.append(sfx2::cTokenSeperator);
@@ -379,9 +379,9 @@ throw (lang::IllegalArgumentException, uno::RuntimeException)
aSect.SetLinkFileName(sLinkNameBuf.makeStringAndClear());
aSect.SetHidden(m_pImpl->m_pProps->m_bHidden);
- aSect.SetProtect(m_pImpl->m_pProps->m_bProtect);
+ aSect.SetProtectFlag(m_pImpl->m_pProps->m_bProtect);
// --> FME 2004-06-22 #114856# edit in readonly sections
- aSect.SetEditInReadonly(m_pImpl->m_pProps->m_bEditInReadonly);
+ aSect.SetEditInReadonlyFlag(m_pImpl->m_pProps->m_bEditInReadonly);
// <--
SfxItemSet aSet(pDoc->GetAttrPool(),
@@ -427,11 +427,11 @@ throw (lang::IllegalArgumentException, uno::RuntimeException)
// section password
if (m_pImpl->m_pProps->m_Password.getLength() > 0)
{
- aSect.SetPasswd(m_pImpl->m_pProps->m_Password);
+ aSect.SetPassword(m_pImpl->m_pProps->m_Password);
}
SwSection *const pRet =
- pDoc->InsertSwSection( aPam, aSect, aSet.Count() ? &aSet : 0 );
+ pDoc->InsertSwSection( aPam, aSect, 0, aSet.Count() ? &aSet : 0 );
pRet->GetFmt()->Add(m_pImpl.get());
pRet->GetFmt()->SetXObject(static_cast< ::cppu::OWeakObject*>(this));
@@ -549,6 +549,56 @@ SwXTextSection::getPropertySetInfo() throw (uno::RuntimeException)
/* -----------------------------12.02.01 10:45--------------------------------
---------------------------------------------------------------------------*/
+static void
+lcl_UpdateLinkType(SwSection & rSection, bool const bLinkUpdateAlways = true)
+{
+ if (rSection.GetType() == DDE_LINK_SECTION)
+ {
+ // set update type; needs an established link
+ if (!rSection.IsConnected())
+ {
+ rSection.CreateLink(CREATE_CONNECT);
+ }
+ rSection.SetUpdateType( static_cast< USHORT >((bLinkUpdateAlways)
+ ? sfx2::LINKUPDATE_ALWAYS : sfx2::LINKUPDATE_ONCALL) );
+ }
+}
+
+static void
+lcl_UpdateSection(SwSectionFmt *const pFmt,
+ ::std::auto_ptr<SwSectionData> const& pSectionData,
+ ::std::auto_ptr<SfxItemSet> const& pItemSet,
+ bool const bLinkModeChanged, bool const bLinkUpdateAlways = true)
+{
+ if (pFmt)
+ {
+ SwSection & rSection = *pFmt->GetSection();
+ SwDoc *const pDoc = pFmt->GetDoc();
+ SwSectionFmts const& rFmts = pDoc->GetSections();
+ UnoActionContext aContext(pDoc);
+ for (sal_uInt16 i = 0; i < rFmts.Count(); i++)
+ {
+ if (rFmts[i]->GetSection()->GetSectionName()
+ == rSection.GetSectionName())
+ {
+ pDoc->UpdateSection(i, *pSectionData, pItemSet.get(),
+ pDoc->IsInReading());
+ {
+ // temporarily remove actions to allow cursor update
+ UnoActionRemoveContext aRemoveContext( pDoc );
+ }
+
+ if (bLinkModeChanged)
+ {
+ lcl_UpdateLinkType(rSection, bLinkUpdateAlways);
+ }
+ // section found and processed: break from loop
+ break;
+ }
+ }
+ }
+}
+
void SwXTextSection::Impl::SetPropertyValues_Impl(
const uno::Sequence< OUString >& rPropertyNames,
const uno::Sequence< uno::Any >& rValues)
@@ -566,12 +616,9 @@ throw (beans::UnknownPropertyException, beans::PropertyVetoException,
throw uno::RuntimeException();
}
- SwSection aSection(CONTENT_SECTION, aEmptyStr);
- SwSection *const pSect = (pFmt) ? pFmt->GetSection() : 0;
- if (pFmt)
- {
- aSection = *pSect;
- }
+ ::std::auto_ptr<SwSectionData> const pSectionData(
+ (pFmt) ? new SwSectionData(*pFmt->GetSection()) : 0);
+
OUString const*const pPropertyNames = rPropertyNames.getConstArray();
uno::Any const*const pValues = rValues.getConstArray();
::std::auto_ptr<SfxItemSet> pItemSet;
@@ -609,7 +656,7 @@ throw (beans::UnknownPropertyException, beans::PropertyVetoException,
}
else
{
- aSection.SetCondition(uTmp);
+ pSectionData->SetCondition(uTmp);
}
}
break;
@@ -637,16 +684,16 @@ throw (beans::UnknownPropertyException, beans::PropertyVetoException,
}
else
{
- String sLinkFileName(aSection.GetLinkFileName());
- if (aSection.GetType() != DDE_LINK_SECTION)
+ String sLinkFileName(pSectionData->GetLinkFileName());
+ if (pSectionData->GetType() != DDE_LINK_SECTION)
{
sLinkFileName = sfx2::cTokenSeperator;
sLinkFileName += sfx2::cTokenSeperator;
- aSection.SetType(DDE_LINK_SECTION);
+ pSectionData->SetType(DDE_LINK_SECTION);
}
sLinkFileName.SetToken(pEntry->nWID - WID_SECT_DDE_TYPE,
sfx2::cTokenSeperator, sTmp);
- aSection.SetLinkFileName(sLinkFileName);
+ pSectionData->SetLinkFileName(sLinkFileName);
}
}
break;
@@ -683,10 +730,10 @@ throw (beans::UnknownPropertyException, beans::PropertyVetoException,
}
else
{
- if (aSection.GetType() != FILE_LINK_SECTION &&
+ if (pSectionData->GetType() != FILE_LINK_SECTION &&
aLink.FileURL.getLength())
{
- aSection.SetType(FILE_LINK_SECTION);
+ pSectionData->SetType(FILE_LINK_SECTION);
}
::rtl::OUStringBuffer sFileNameBuf;
if (aLink.FileURL.getLength())
@@ -700,14 +747,14 @@ throw (beans::UnknownPropertyException, beans::PropertyVetoException,
sFileNameBuf.append(aLink.FilterName);
sFileNameBuf.append(sfx2::cTokenSeperator);
sFileNameBuf.append(
- aSection.GetLinkFileName().GetToken(2,
+ pSectionData->GetLinkFileName().GetToken(2,
sfx2::cTokenSeperator));
const ::rtl::OUString sFileName(
sFileNameBuf.makeStringAndClear());
- aSection.SetLinkFileName(sFileName);
+ pSectionData->SetLinkFileName(sFileName);
if (sFileName.getLength() < 3)
{
- aSection.SetType(CONTENT_SECTION);
+ pSectionData->SetType(CONTENT_SECTION);
}
}
}
@@ -723,21 +770,21 @@ throw (beans::UnknownPropertyException, beans::PropertyVetoException,
}
else
{
- if (aSection.GetType() != FILE_LINK_SECTION &&
+ if (pSectionData->GetType() != FILE_LINK_SECTION &&
sLink.getLength())
{
- aSection.SetType(FILE_LINK_SECTION);
+ pSectionData->SetType(FILE_LINK_SECTION);
}
- String sSectLink(aSection.GetLinkFileName());
+ String sSectLink(pSectionData->GetLinkFileName());
while (3 < sSectLink.GetTokenCount(sfx2::cTokenSeperator))
{
sSectLink += sfx2::cTokenSeperator;
}
sSectLink.SetToken(2, sfx2::cTokenSeperator, sLink);
- aSection.SetLinkFileName(sSectLink);
+ pSectionData->SetLinkFileName(sSectLink);
if (sSectLink.Len() < 3)
{
- aSection.SetType(CONTENT_SECTION);
+ pSectionData->SetType(CONTENT_SECTION);
}
}
}
@@ -755,7 +802,7 @@ throw (beans::UnknownPropertyException, beans::PropertyVetoException,
}
else
{
- aSection.SetHidden(!bVal);
+ pSectionData->SetHidden(!bVal);
}
}
break;
@@ -772,9 +819,9 @@ throw (beans::UnknownPropertyException, beans::PropertyVetoException,
}
else
{
- if (aSection.GetCondition().Len() != 0)
+ if (pSectionData->GetCondition().Len() != 0)
{
- aSection.SetCondHidden(!bVal);
+ pSectionData->SetCondHidden(!bVal);
}
}
}
@@ -792,7 +839,7 @@ throw (beans::UnknownPropertyException, beans::PropertyVetoException,
}
else
{
- aSection.SetProtect(bVal);
+ pSectionData->SetProtectFlag(bVal);
}
}
break;
@@ -810,7 +857,7 @@ throw (beans::UnknownPropertyException, beans::PropertyVetoException,
}
else
{
- aSection.SetEditInReadonly(bVal);
+ pSectionData->SetEditInReadonlyFlag(bVal);
}
}
// <--
@@ -825,7 +872,7 @@ throw (beans::UnknownPropertyException, beans::PropertyVetoException,
}
else
{
- aSection.SetPasswd(aSeq);
+ pSectionData->SetPassword(aSeq);
}
}
break;
@@ -925,38 +972,8 @@ throw (beans::UnknownPropertyException, beans::PropertyVetoException,
}
}
- if (pFmt)
- {
- SwDoc* pDoc = pFmt->GetDoc();
- const SwSectionFmts& rFmts = pDoc->GetSections();
- UnoActionContext aContext(pDoc);
- for (sal_uInt16 i = 0; i < rFmts.Count(); i++)
- {
- if (rFmts[i]->GetSection()->GetName() == pSect->GetName())
- {
- pDoc->ChgSection(i, aSection, pItemSet.get(),
- pDoc->IsInReading());
- {
- // temporarily remove actions to allow cursor update
- UnoActionRemoveContext aRemoveContext( pDoc );
- }
-
- //SwSection* pSect = pFmt->GetSection();
- if (bLinkModeChanged && pSect->GetType() == DDE_LINK_SECTION)
- {
- // set update type; needs an established link
- if (!pSect->IsConnected())
- {
- pSect->CreateLink(CREATE_CONNECT);
- }
- pSect->SetUpdateType( static_cast< USHORT >((bLinkMode) ?
- sfx2::LINKUPDATE_ALWAYS : sfx2::LINKUPDATE_ONCALL) );
- }
- // section found and processed: break from loop
- break;
- }
- }
- }
+ lcl_UpdateSection(pFmt, pSectionData, pItemSet, bLinkModeChanged,
+ bLinkMode);
}
void SAL_CALL
@@ -1147,7 +1164,8 @@ throw (beans::UnknownPropertyException, lang::WrappedTargetException,
{
if (pFmt)
{
- pRet[nProperty] <<= OUString(pFmt->GetSection()->GetName());
+ pRet[nProperty] <<=
+ OUString(pFmt->GetSection()->GetSectionName());
}
}
break;
@@ -1222,7 +1240,7 @@ throw (beans::UnknownPropertyException, lang::WrappedTargetException,
case WID_SECT_PASSWORD:
{
pRet[nProperty] <<= (m_bIsDescriptor)
- ? m_pProps->m_Password : pSect->GetPasswd();
+ ? m_pProps->m_Password : pSect->GetPassword();
}
break;
default:
@@ -1562,12 +1580,6 @@ throw (beans::UnknownPropertyException, uno::RuntimeException)
throw uno::RuntimeException();
}
- SwSection aSection(CONTENT_SECTION, aEmptyStr);
- SwSection *const pSect = (pFmt) ? pFmt->GetSection() : 0;
- if (pFmt)
- {
- aSection = *pSect;
- }
SfxItemPropertySimpleEntry const*const pEntry =
m_pImpl->m_rPropSet.getPropertyMap()->getByName(rPropertyName);
if (!pEntry)
@@ -1584,7 +1596,12 @@ throw (beans::UnknownPropertyException, uno::RuntimeException)
static_cast<cppu::OWeakObject *>(this));
}
+ ::std::auto_ptr<SwSectionData> const pSectionData(
+ (pFmt) ? new SwSectionData(*pFmt->GetSection()) : 0);
+
::std::auto_ptr<SfxItemSet> pNewAttrSet;
+ bool bLinkModeChanged = false;
+
switch (pEntry->nWID)
{
case WID_SECT_CONDITION:
@@ -1595,7 +1612,7 @@ throw (beans::UnknownPropertyException, uno::RuntimeException)
}
else
{
- aSection.SetCondition(aEmptyStr);
+ pSectionData->SetCondition(aEmptyStr);
}
}
break;
@@ -1604,10 +1621,27 @@ throw (beans::UnknownPropertyException, uno::RuntimeException)
case WID_SECT_DDE_ELEMENT :
case WID_SECT_LINK :
case WID_SECT_REGION :
- aSection.SetType(CONTENT_SECTION);
+ if (m_pImpl->m_bIsDescriptor)
+ {
+ m_pImpl->m_pProps->m_bDDE = false;
+ m_pImpl->m_pProps->m_sLinkFileName = ::rtl::OUString();
+ m_pImpl->m_pProps->m_sSectionRegion = ::rtl::OUString();
+ m_pImpl->m_pProps->m_sSectionFilter = ::rtl::OUString();
+ }
+ else
+ {
+ pSectionData->SetType(CONTENT_SECTION);
+ }
break;
case WID_SECT_DDE_AUTOUPDATE:
- aSection.SetUpdateType(sfx2::LINKUPDATE_ALWAYS);
+ if (m_pImpl->m_bIsDescriptor)
+ {
+ m_pImpl->m_pProps->m_bUpdateType = true;
+ }
+ else
+ {
+ bLinkModeChanged = true;
+ }
break;
case WID_SECT_VISIBLE :
{
@@ -1617,7 +1651,7 @@ throw (beans::UnknownPropertyException, uno::RuntimeException)
}
else
{
- aSection.SetHidden(FALSE);
+ pSectionData->SetHidden(false);
}
}
break;
@@ -1629,7 +1663,7 @@ throw (beans::UnknownPropertyException, uno::RuntimeException)
}
else
{
- aSection.SetProtect(FALSE);
+ pSectionData->SetProtectFlag(false);
}
}
break;
@@ -1642,7 +1676,7 @@ throw (beans::UnknownPropertyException, uno::RuntimeException)
}
else
{
- aSection.SetEditInReadonly(FALSE);
+ pSectionData->SetEditInReadonlyFlag(false);
}
}
break;
@@ -1678,25 +1712,7 @@ throw (beans::UnknownPropertyException, uno::RuntimeException)
}
}
- if (pFmt)
- {
- SwDoc *const pDoc = pFmt->GetDoc();
- const SwSectionFmts& rFmts = pDoc->GetSections();
- UnoActionContext aContext(pDoc);
- for (sal_uInt16 i = 0; i < rFmts.Count(); i++)
- {
- if (rFmts[i]->GetSection()->GetName() == pSect->GetName())
- {
- pDoc->ChgSection(i, aSection, pNewAttrSet.get(),
- pDoc->IsInReading());
- {
- // temporarily remove actions to allow cursor update
- UnoActionRemoveContext aRemoveContext( pDoc );
- }
- break;
- }
- }
- }
+ lcl_UpdateSection(pFmt, pSectionData, pNewAttrSet, bLinkModeChanged);
}
/*-- 08.11.00 10:47:56---------------------------------------------------
@@ -1737,7 +1753,7 @@ throw (beans::UnknownPropertyException, lang::WrappedTargetException,
case WID_SECT_DDE_AUTOUPDATE:
case WID_SECT_VISIBLE :
{
- sal_Bool bTemp = TRUE;
+ sal_Bool bTemp = sal_True;
aRet.setValue( &bTemp, ::getCppuBooleanType());
}
break;
@@ -1746,7 +1762,7 @@ throw (beans::UnknownPropertyException, lang::WrappedTargetException,
case WID_SECT_EDIT_IN_READONLY:
// <--
{
- sal_Bool bTemp = FALSE;
+ sal_Bool bTemp = sal_False;
aRet.setValue( &bTemp, ::getCppuBooleanType());
}
break;
@@ -1778,7 +1794,7 @@ OUString SAL_CALL SwXTextSection::getName() throw (uno::RuntimeException)
SwSectionFmt const*const pFmt = m_pImpl->GetSectionFmt();
if(pFmt)
{
- sRet = pFmt->GetSection()->GetName();
+ sRet = pFmt->GetSection()->GetSectionName();
}
else if (m_pImpl->m_bIsDescriptor)
{
@@ -1801,11 +1817,10 @@ throw (uno::RuntimeException)
SwSectionFmt *const pFmt = m_pImpl->GetSectionFmt();
if(pFmt)
{
- SwSection aSection(CONTENT_SECTION, aEmptyStr);
SwSection *const pSect = pFmt->GetSection();
- aSection = *pSect;
+ SwSectionData aSection(*pSect);
String sNewName(rName);
- aSection.SetName(sNewName);
+ aSection.SetSectionName(sNewName);
const SwSectionFmts& rFmts = pFmt->GetDoc()->GetSections();
sal_uInt16 nApplyPos = USHRT_MAX;
@@ -1815,7 +1830,7 @@ throw (uno::RuntimeException)
{
nApplyPos = i;
}
- else if(sNewName == rFmts[i]->GetSection()->GetName())
+ else if (sNewName == rFmts[i]->GetSection()->GetSectionName())
{
throw uno::RuntimeException();
}
@@ -1824,7 +1839,7 @@ throw (uno::RuntimeException)
{
{
UnoActionContext aContext(pFmt->GetDoc());
- pFmt->GetDoc()->ChgSection( nApplyPos, aSection);
+ pFmt->GetDoc()->UpdateSection(nApplyPos, aSection);
}
{
// temporarily remove actions to allow cursor update
@@ -1879,3 +1894,22 @@ SwXTextSection::getSupportedServiceNames() throw (uno::RuntimeException)
g_nServicesTextSection, g_ServicesTextSection);
}
+
+// MetadatableMixin
+::sfx2::Metadatable* SwXTextSection::GetCoreObject()
+{
+ SwSectionFmt *const pSectionFmt( m_pImpl->GetSectionFmt() );
+ return pSectionFmt;
+}
+
+uno::Reference<frame::XModel> SwXTextSection::GetModel()
+{
+ SwSectionFmt *const pSectionFmt( m_pImpl->GetSectionFmt() );
+ if (pSectionFmt)
+ {
+ SwDocShell const*const pShell( pSectionFmt->GetDoc()->GetDocShell() );
+ return (pShell) ? pShell->GetModel() : 0;
+ }
+ return 0;
+}
+
diff --git a/sw/source/core/unocore/unosett.cxx b/sw/source/core/unocore/unosett.cxx
index 980306be3aec..ab486b71ed04 100644
--- a/sw/source/core/unocore/unosett.cxx
+++ b/sw/source/core/unocore/unosett.cxx
@@ -1659,9 +1659,14 @@ uno::Sequence<beans::PropertyValue> SwXNumberingRules::GetNumberingRuleByIndex(
aPropertyValues.Insert(pData, aPropertyValues.Count());
}
Size aSize = rFmt.GetGraphicSize();
- aSize.Width() = TWIP_TO_MM100( aSize.Width() );
- aSize.Height() = TWIP_TO_MM100( aSize.Height() );
- pData = new PropValData((void*)&aSize, SW_PROP_NAME_STR(UNO_NAME_GRAPHIC_SIZE), ::getCppuType((const awt::Size*)0));
+ // --> OD 2010-05-04 #i101131# - applying patch from CMC
+ // adjust conversion due to type mismatch between <Size> and <awt::Size>
+// aSize.Width() = TWIP_TO_MM100( aSize.Width() );
+// aSize.Height() = TWIP_TO_MM100( aSize.Height() );
+// pData = new PropValData((void*)&aSize, SW_PROP_NAME_STR(UNO_NAME_GRAPHIC_SIZE), ::getCppuType((const awt::Size*)0));
+ awt::Size aAwtSize(TWIP_TO_MM100(aSize.Width()), TWIP_TO_MM100(aSize.Height()));
+ pData = new PropValData((void*)&aAwtSize, SW_PROP_NAME_STR(UNO_NAME_GRAPHIC_SIZE), ::getCppuType((const awt::Size*)0));
+ // <--
aPropertyValues.Insert(pData, aPropertyValues.Count());
const SwFmtVertOrient* pOrient = rFmt.GetGraphicOrientation();
diff --git a/sw/source/core/unocore/unotbl.cxx b/sw/source/core/unocore/unotbl.cxx
index bf1df93d5d16..b7098710802b 100644
--- a/sw/source/core/unocore/unotbl.cxx
+++ b/sw/source/core/unocore/unotbl.cxx
@@ -494,6 +494,40 @@ String lcl_GetCellName( sal_Int32 nColumn, sal_Int32 nRow )
return sCellName;
}
+/** Find the top left or bottom right corner box in given table.
+ Consider nested lines when finding the box.
+
+ @param i_pTable the table
+
+ @param i_bTopLeft if true, find top left box, otherwise find bottom
+ right box
+ */
+
+const SwTableBox* lcl_FindCornerTableBox(const SwTableLines& rTableLines, const bool i_bTopLeft)
+{
+ bool bFirst = true;
+ const SwTableBox* pBox = 0;
+ do
+ {
+ const SwTableLines& rLines(bFirst ? rTableLines : pBox->GetTabLines());
+ bFirst = false;
+ OSL_ASSERT(rLines.Count() != 0);
+ if (rLines.Count() != 0)
+ {
+ const SwTableLine* pLine(rLines[i_bTopLeft ? 0 : rLines.Count() - 1]);
+ OSL_ASSERT(pLine);
+ const SwTableBoxes& rBoxes(pLine->GetTabBoxes());
+ OSL_ASSERT(rBoxes.Count() != 0);
+ pBox = rBoxes[i_bTopLeft ? 0 : rBoxes.Count() - 1];
+ OSL_ASSERT(pBox);
+ }
+ else
+ {
+ pBox = 0;
+ }
+ } while (pBox && !pBox->GetSttNd());
+ return pBox;
+}
/* -----------------21.11.05 14:46-------------------
@@ -3318,7 +3352,7 @@ void SwXTextTable::setPropertyValue(const OUString& rPropertyName,
// hier muessen die Actions aufgehoben werden
UnoActionRemoveContext aRemoveContext(pDoc);
- SwTableBox* pTLBox = rLines[0]->GetTabBoxes()[0];
+ const SwTableBox* pTLBox = lcl_FindCornerTableBox(rLines, true);
const SwStartNode* pSttNd = pTLBox->GetSttNd();
SwPosition aPos(*pSttNd);
// Cursor in die obere linke Zelle des Ranges setzen
@@ -3326,9 +3360,9 @@ void SwXTextTable::setPropertyValue(const OUString& rPropertyName,
pUnoCrsr->Move( fnMoveForward, fnGoNode );
pUnoCrsr->SetRemainInSection( sal_False );
- SwTableLine* pLastLine = rLines[rLines.Count() - 1];
- SwTableBoxes &rBoxes = pLastLine->GetTabBoxes();
- const SwTableBox* pBRBox = rBoxes[rBoxes.Count() -1];
+
+
+ const SwTableBox* pBRBox = lcl_FindCornerTableBox(rLines, false);
pUnoCrsr->SetMark();
pUnoCrsr->GetPoint()->nNode = *pBRBox->GetSttNd();
pUnoCrsr->Move( fnMoveForward, fnGoNode );
@@ -3514,7 +3548,7 @@ uno::Any SwXTextTable::getPropertyValue(const OUString& rPropertyName) throw( be
// hier muessen die Actions aufgehoben werden
UnoActionRemoveContext aRemoveContext(pDoc);
- SwTableBox* pTLBox = rLines[0]->GetTabBoxes()[0];
+ const SwTableBox* pTLBox = lcl_FindCornerTableBox(rLines, true);
const SwStartNode* pSttNd = pTLBox->GetSttNd();
SwPosition aPos(*pSttNd);
// Cursor in die obere linke Zelle des Ranges setzen
@@ -3522,11 +3556,11 @@ uno::Any SwXTextTable::getPropertyValue(const OUString& rPropertyName) throw( be
pUnoCrsr->Move( fnMoveForward, fnGoNode );
pUnoCrsr->SetRemainInSection( sal_False );
- SwTableLine* pLastLine = rLines[rLines.Count() - 1];
- SwTableBoxes &rBoxes = pLastLine->GetTabBoxes();
- const SwTableBox* pBRBox = rBoxes[rBoxes.Count() -1];
+ const SwTableBox* pBRBox = lcl_FindCornerTableBox(rLines, false);
pUnoCrsr->SetMark();
- pUnoCrsr->GetPoint()->nNode = *pBRBox->GetSttNd();
+ const SwStartNode* pLastNd = pBRBox->GetSttNd();
+ pUnoCrsr->GetPoint()->nNode = *pLastNd;
+
pUnoCrsr->Move( fnMoveForward, fnGoNode );
SwUnoTableCrsr* pCrsr = dynamic_cast<SwUnoTableCrsr*>(pUnoCrsr);
pCrsr->MakeBoxSels();
@@ -4448,41 +4482,6 @@ void SwXCellRange::GetDataSequence(
pDblSeq->realloc( nDtaCnt );
}
-/*-- 04.06.04 11:42:47---------------------------------------------------
-
- -----------------------------------------------------------------------*/
-
-SwUnoCrsr * lcl_CreateCursor( SwFrmFmt &rTblFmt,
- SwTableBox *pStartBox, // should be top-left cell of cell range
- SwTableBox *pEndBox ) // should be bottom right-cell cell range
-{
- // create a *new* UNO cursor spanning the cell range defined by
- // the start and end box. Both boxes must be belong to the same table!
-
- SwUnoCrsr *pUnoCrsr = 0;
- if (pStartBox && pEndBox)
- {
- // hier muessen die Actions aufgehoben werden um
- // (zB dem Layout zu ermglichen die Tabelle zu formatieren, da
- // sonst kein Tabellen Cursor aufgespannt werden kann.)
- UnoActionRemoveContext aRemoveContext(rTblFmt.GetDoc());
-
- // set point of cursor to top left box of range
- const SwStartNode* pSttNd = pStartBox->GetSttNd();
- SwPosition aPos(*pSttNd);
- pUnoCrsr = rTblFmt.GetDoc()->CreateUnoCrsr(aPos, sal_True);
- pUnoCrsr->Move( fnMoveForward, fnGoNode );
- pUnoCrsr->SetRemainInSection( sal_False );
- pUnoCrsr->SetMark();
- pUnoCrsr->GetPoint()->nNode = *pEndBox->GetSttNd();
- pUnoCrsr->Move( fnMoveForward, fnGoNode );
- SwUnoTableCrsr *pCrsr = dynamic_cast<SwUnoTableCrsr*>(pUnoCrsr);
- pCrsr->MakeBoxSels();
- }
- return pUnoCrsr;
-}
-
-
/*-- 29.04.02 11:42:47---------------------------------------------------
-----------------------------------------------------------------------*/
diff --git a/sw/source/core/unocore/unotext.cxx b/sw/source/core/unocore/unotext.cxx
index e872c3112471..3ddcfc1d2ed7 100644
--- a/sw/source/core/unocore/unotext.cxx
+++ b/sw/source/core/unocore/unotext.cxx
@@ -76,8 +76,6 @@
#include <stdlib.h>
#include <iostream>
-
-
using namespace ::com::sun::star;
using ::rtl::OUString;
@@ -277,6 +275,10 @@ SwXText::queryInterface(const uno::Type& rType) throw (uno::RuntimeException)
{
aRet <<= uno::Reference< text::XTextContentAppend >(this);
}
+ else if(rType == text::XTextCopy::static_type())
+ {
+ aRet <<= uno::Reference< text::XTextCopy >( this );
+ }
return aRet;
}
/* -----------------------------15.03.00 17:42--------------------------------
@@ -1860,6 +1862,32 @@ static bool lcl_SimilarPosition( const sal_Int32 nPos1, const sal_Int32 nPos2 )
return abs( nPos1 - nPos2 ) < COL_POS_FUZZY;
}
+void SwXText::copyText(
+ const uno::Reference< text::XTextCopy >& xSource )
+ throw ( uno::RuntimeException )
+{
+ uno::Reference< lang::XUnoTunnel > xTTunnel( xSource, uno::UNO_QUERY_THROW );
+ SwXText* pText = 0;
+ pText = reinterpret_cast< SwXText* >(
+ sal::static_int_cast< sal_IntPtr >( xTTunnel->getSomething( SwXText::getUnoTunnelId()) ));
+
+ uno::Reference< text::XText > xText( xSource, uno::UNO_QUERY_THROW );
+ uno::Reference< text::XTextCursor > xCursor = xText->createTextCursor( );
+ xCursor->gotoEnd( sal_True );
+
+ uno::Reference< lang::XUnoTunnel > xTunnel( xCursor, uno::UNO_QUERY_THROW );
+
+ OTextCursorHelper* pCursor = 0;
+ pCursor = reinterpret_cast< OTextCursorHelper* >(
+ sal::static_int_cast< sal_IntPtr >( xTunnel->getSomething( OTextCursorHelper::getUnoTunnelId()) ));
+ if ( pCursor )
+ {
+ SwNodeIndex rNdIndex( *GetStartNode( ), 1 );
+ SwPosition rPos( rNdIndex );
+ m_pImpl->m_pDoc->CopyRange( *pCursor->GetPaM( ), rPos, false );
+ }
+}
+
void SwXText::Impl::ConvertCell(
const bool bFirstCell,
const uno::Sequence< uno::Reference< text::XTextRange > > & rCell,
@@ -1885,6 +1913,26 @@ void SwXText::Impl::ConvertCell(
{
throw lang::IllegalArgumentException();
}
+
+ SwNodeRange aTmpRange(aStartCellPam.Start()->nNode,
+ aEndCellPam.End()->nNode);
+ SwNodeRange * pCorrectedRange =
+ m_pDoc->GetNodes().ExpandRangeForTableBox(aTmpRange);
+
+ if (pCorrectedRange != NULL)
+ {
+ SwPaM aNewStartPaM(pCorrectedRange->aStart, 0);
+ aStartCellPam = aNewStartPaM;
+
+ xub_StrLen nEndLen = 0;
+ SwTxtNode * pTxtNode = pCorrectedRange->aEnd.GetNode().GetTxtNode();
+ if (pTxtNode != NULL)
+ nEndLen = pTxtNode->Len();
+
+ SwPaM aNewEndPaM(pCorrectedRange->aEnd, nEndLen);
+ aEndCellPam = aNewEndPaM;
+ }
+
/** check the nodes between start and end
it is allowed to have pairs of StartNode/EndNodes
*/
diff --git a/sw/source/core/view/makefile.mk b/sw/source/core/view/makefile.mk
index 7a0f19c956ed..0ac0e0d106cb 100644..100755
--- a/sw/source/core/view/makefile.mk
+++ b/sw/source/core/view/makefile.mk
@@ -43,10 +43,13 @@ SLOFILES = \
$(SLO)$/vdraw.obj \
$(SLO)$/viewimp.obj \
$(SLO)$/viewsh.obj \
- $(SLO)$/viewpg.obj \
- $(SLO)$/vnew.obj \
- $(SLO)$/vprint.obj \
- $(SLO)$/pagepreviewlayout.obj
+ $(SLO)$/pagepreviewlayout.obj \
+ $(SLO)$/printdata.obj \
+ $(SLO)$/viewpg.obj \
+ $(SLO)$/vnew.obj \
+ $(SLO)$/vprint.obj
+
+
EXCEPTIONSFILES = \
$(SLO)$/pagepreviewlayout.obj
diff --git a/sw/source/core/view/printdata.cxx b/sw/source/core/view/printdata.cxx
new file mode 100755
index 000000000000..39bd4d91290c
--- /dev/null
+++ b/sw/source/core/view/printdata.cxx
@@ -0,0 +1,546 @@
+/**************************************************************************
+ *
+ *
+ * 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: vprint.cxx,v $
+ * $Revision: 1.46 $
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sw.hxx"
+
+#include <printdata.hxx>
+
+#include <globals.hrc>
+#include <doc.hxx>
+#include <unotxdoc.hxx>
+#include <wdocsh.hxx>
+#include <viewsh.hxx>
+#include <docfld.hxx>
+#include <swprtopt.hxx>
+
+#include <svl/languageoptions.hxx>
+#include <toolkit/awt/vclxdevice.hxx>
+#include <tools/string.hxx>
+#include <tools/debug.hxx>
+#include <tools/resary.hxx>
+#include <unotools/moduleoptions.hxx>
+#include <vcl/outdev.hxx>
+
+
+extern bool lcl_GetPostIts( IDocumentFieldsAccess* pIDFA, _SetGetExpFlds * pSrtLst );
+
+
+using namespace ::com::sun::star;
+using ::rtl::OUString;
+
+
+//////////////////////////////////////////////////////////////////////
+
+SwRenderData::SwRenderData()
+{
+ m_pPostItFields = 0;
+ m_pPostItDoc = 0;
+ m_pPostItShell = 0;
+
+ m_pViewOptionAdjust = 0;
+ m_pPrtOptions = 0;
+}
+
+
+SwRenderData::~SwRenderData()
+{
+ delete m_pViewOptionAdjust; m_pViewOptionAdjust = 0;
+ delete m_pPrtOptions; m_pPrtOptions = 0;
+ DBG_ASSERT( !m_pPostItShell, "m_pPostItShell should already have been deleted" );
+ DBG_ASSERT( !m_pPostItDoc, "m_pPostItDoc should already have been deleted" );
+ DBG_ASSERT( !m_pPostItFields, " should already have been deleted" );
+}
+
+
+void SwRenderData::CreatePostItData( SwDoc *pDoc, const SwViewOption *pViewOpt, OutputDevice *pOutDev )
+{
+ DBG_ASSERT( !m_pPostItFields && !m_pPostItDoc && !m_pPostItShell, "some post-it data already exists" );
+ m_pPostItFields = new _SetGetExpFlds;
+ lcl_GetPostIts( pDoc, m_pPostItFields );
+ m_pPostItDoc = new SwDoc;
+
+ //!! Disable spell and grammar checking in the temporary document.
+ //!! Otherwise the grammar checker might process it and crash if we later on
+ //!! simply delete this document while he is still at it.
+ SwViewOption aViewOpt( *pViewOpt );
+ aViewOpt.SetOnlineSpell( FALSE );
+
+ m_pPostItShell = new ViewShell( *m_pPostItDoc, 0, &aViewOpt, pOutDev );
+}
+
+
+void SwRenderData::DeletePostItData()
+{
+ if (HasPostItData())
+ {
+ m_pPostItDoc->setPrinter( 0, false, false ); //damit am echten DOC der Drucker bleibt
+ delete m_pPostItShell; //Nimmt das PostItDoc mit ins Grab.
+ delete m_pPostItFields;
+ m_pPostItDoc = 0;
+ m_pPostItShell = 0;
+ m_pPostItFields = 0;
+ }
+}
+
+bool SwRenderData::NeedNewViewOptionAdjust( const SwWrtShell& rCompare ) const
+{
+ return m_pViewOptionAdjust ? ! m_pViewOptionAdjust->checkShell( rCompare ) : true;
+}
+
+
+void SwRenderData::ViewOptionAdjustStart( SwWrtShell &rSh, const SwViewOption &rViewOptions )
+{
+ if (m_pViewOptionAdjust)
+ {
+ DBG_ASSERT( 0, "error: there should be no ViewOptionAdjust active when calling this function" );
+ }
+ m_pViewOptionAdjust = new SwViewOptionAdjust_Impl( rSh, rViewOptions );
+}
+
+
+void SwRenderData::ViewOptionAdjust( const SwPrtOptions *pPrtOptions )
+{
+ m_pViewOptionAdjust->AdjustViewOptions( pPrtOptions );
+}
+
+
+void SwRenderData::ViewOptionAdjustStop()
+{
+ if (m_pViewOptionAdjust)
+ {
+ delete m_pViewOptionAdjust;
+ m_pViewOptionAdjust = 0;
+ }
+}
+
+
+void SwRenderData::MakeSwPrtOptions(
+ SwPrtOptions &rOptions,
+ const SwDocShell *pDocShell,
+ const SwPrintUIOptions *pOpt,
+ const SwRenderData *pData,
+ bool bIsPDFExport )
+{
+ if (!pDocShell || !pOpt || !pData)
+ return;
+
+ // get default print options
+ const TypeId aSwWebDocShellTypeId = TYPE(SwWebDocShell);
+ BOOL bWeb = pDocShell->IsA( aSwWebDocShellTypeId );
+ rOptions.MakeOptions( bWeb );
+
+ // get print options to use from provided properties
+ rOptions.bPrintGraphic = pOpt->IsPrintGraphics();
+ rOptions.bPrintTable = pOpt->IsPrintTables();
+ rOptions.bPrintDraw = pOpt->IsPrintDrawings();
+ rOptions.bPrintControl = pOpt->IsPrintFormControls();
+ rOptions.bPrintLeftPages = pOpt->IsPrintLeftPages();
+ rOptions.bPrintRightPages = pOpt->IsPrintRightPages();
+ rOptions.bPrintPageBackground = pOpt->IsPrintPageBackground();
+ rOptions.bPrintEmptyPages = pOpt->IsPrintEmptyPages( bIsPDFExport );
+ // bUpdateFieldsInPrinting <-- not set here; mail merge only
+ rOptions.bPaperFromSetup = pOpt->IsPaperFromSetup();
+ rOptions.bPrintReverse = pOpt->IsPrintReverse();
+ rOptions.bPrintProspect = pOpt->IsPrintProspect();
+ rOptions.bPrintProspectRTL = pOpt->IsPrintProspectRTL();
+ // bPrintSingleJobs <-- not set here; mail merge and or configuration
+ // bModified <-- not set here; mail merge only
+ rOptions.bPrintBlackFont = pOpt->IsPrintWithBlackTextColor();
+ rOptions.bPrintHiddenText = pOpt->IsPrintHiddenText();
+ rOptions.bPrintTextPlaceholder = pOpt->IsPrintTextPlaceholders();
+ rOptions.nPrintPostIts = pOpt->GetPrintPostItsType();
+
+ //! needs to be set after MakeOptions since the assignment operation in that
+ //! function will destroy the pointers
+ rOptions.SetPrintUIOptions( pOpt );
+ rOptions.SetRenderData( pData );
+
+ // rOptions.aMulti is not used anymore in the XRenderable API
+ // Thus we set it to a dummy value here.
+ rOptions.aMulti = MultiSelection( Range( 1, 1 ) );
+
+ //! Note: Since for PDF export of (multi-)selection a temporary
+ //! document is created that contains only the selects parts,
+ //! and thus that document is to printed in whole the,
+ //! rOptions.bPrintSelection parameter will be false.
+ if (bIsPDFExport)
+ rOptions.bPrintSelection = FALSE;
+}
+
+
+//////////////////////////////////////////////////////////////////////
+
+SwPrintUIOptions::SwPrintUIOptions(
+ bool bWeb,
+ bool bSwSrcView,
+ bool bHasSelection,
+ bool bHasPostIts,
+ const SwPrintData &rDefaultPrintData ) :
+ m_pLast( NULL ),
+ m_rDefaultPrintData( rDefaultPrintData )
+{
+ ResStringArray aLocalizedStrings( SW_RES( STR_PRINTOPTUI ) );
+
+ DBG_ASSERT( aLocalizedStrings.Count() >= 44, "resource incomplete" );
+ if( aLocalizedStrings.Count() < 44 ) // bad resource ?
+ return;
+
+ // printing HTML sources does not have any valid UI options.
+ // Its just the source code that gets printed ...
+ if (bSwSrcView)
+ {
+ m_aUIProperties.realloc( 0 );
+ return;
+ }
+
+ // check if CTL is enabled
+ SvtLanguageOptions aLangOpt;
+ bool bCTL = aLangOpt.IsCTLFontEnabled();
+
+ // create sequence of print UI options
+ // (5 options are not available for Writer-Web)
+ const int nCTLOpts = bCTL ? 1 : 0;
+ const int nNumProps = nCTLOpts + (bWeb ? 14 : 20);
+ m_aUIProperties.realloc( nNumProps );
+ int nIdx = 0;
+
+ // create "writer" section (new tab page in dialog)
+ SvtModuleOptions aModOpt;
+ String aAppGroupname( aLocalizedStrings.GetString( 0 ) );
+ aAppGroupname.SearchAndReplace( String( RTL_CONSTASCII_USTRINGPARAM( "%s" ) ),
+ aModOpt.GetModuleName( SvtModuleOptions::E_SWRITER ) );
+ m_aUIProperties[ nIdx++ ].Value = getGroupControlOpt( aAppGroupname, rtl::OUString() );
+
+ // create sub section for Contents
+ m_aUIProperties[ nIdx++ ].Value = getSubgroupControlOpt( aLocalizedStrings.GetString( 1 ), rtl::OUString() );
+
+ // create a bool option for background
+ bool bDefaultVal = rDefaultPrintData.IsPrintPageBackground();
+ m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 2 ),
+ aLocalizedStrings.GetString( 3 ),
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintPageBackground" ) ),
+ bDefaultVal );
+
+ // create a bool option for pictures/graphics AND OLE and drawing objects as well
+ bDefaultVal = rDefaultPrintData.IsPrintGraphic() || rDefaultPrintData.IsPrintDraw();
+ m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 4 ),
+ aLocalizedStrings.GetString( 5 ),
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintPicturesAndObjects" ) ),
+ bDefaultVal );
+ if (!bWeb)
+ {
+ // create a bool option for hidden text
+ bDefaultVal = rDefaultPrintData.IsPrintHiddenText();
+ m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 6 ),
+ aLocalizedStrings.GetString( 7 ),
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintHiddenText" ) ),
+ bDefaultVal );
+
+ // create a bool option for place holder
+ bDefaultVal = rDefaultPrintData.IsPrintTextPlaceholder();
+ m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 8 ),
+ aLocalizedStrings.GetString( 9 ),
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintTextPlaceholder" ) ),
+ bDefaultVal );
+ }
+
+ // create a bool option for controls
+ bDefaultVal = rDefaultPrintData.IsPrintControl();
+ m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 10 ),
+ aLocalizedStrings.GetString( 11 ),
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintControls" ) ),
+ bDefaultVal );
+
+ // create sub section for Color
+ m_aUIProperties[ nIdx++ ].Value = getSubgroupControlOpt( aLocalizedStrings.GetString( 12 ), rtl::OUString() );
+
+ // create a bool option for printing text with black font color
+ bDefaultVal = rDefaultPrintData.IsPrintBlackFont();
+ m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 13 ),
+ aLocalizedStrings.GetString( 14 ),
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintBlackFonts" ) ),
+ bDefaultVal );
+
+ if (!bWeb)
+ {
+ // create subgroup for misc options
+ m_aUIProperties[ nIdx++ ].Value = getSubgroupControlOpt( rtl::OUString( aLocalizedStrings.GetString( 15 ) ), rtl::OUString() );
+
+ // create a bool option for printing automatically inserted blank pages
+ bDefaultVal = rDefaultPrintData.IsPrintEmptyPages();
+ m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 16 ),
+ aLocalizedStrings.GetString( 17 ),
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintEmptyPages" ) ),
+ bDefaultVal );
+ }
+
+ // create a bool option for paper tray
+ bDefaultVal = rDefaultPrintData.IsPaperFromSetup();
+ vcl::PrinterOptionsHelper::UIControlOptions aPaperTrayOpt;
+ aPaperTrayOpt.maGroupHint = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "OptionsPageOptGroup" ) );
+ m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 18 ),
+ aLocalizedStrings.GetString( 19 ),
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintPaperFromSetup" ) ),
+ bDefaultVal,
+ aPaperTrayOpt
+ );
+
+ // print range selection
+ vcl::PrinterOptionsHelper::UIControlOptions aPrintRangeOpt;
+ aPrintRangeOpt.maGroupHint = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintRange" ) );
+ aPrintRangeOpt.mbInternalOnly = sal_True;
+ m_aUIProperties[nIdx++].Value = getSubgroupControlOpt( rtl::OUString( aLocalizedStrings.GetString( 37 ) ),
+ rtl::OUString(),
+ aPrintRangeOpt
+ );
+
+ // create a choice for the content to create
+ rtl::OUString aPrintRangeName( RTL_CONSTASCII_USTRINGPARAM( "PrintContent" ) );
+ uno::Sequence< rtl::OUString > aChoices( bHasSelection ? 3 : 2 );
+ uno::Sequence< rtl::OUString > aHelpText( bHasSelection ? 3 : 2 );
+ aChoices[0] = aLocalizedStrings.GetString( 38 );
+ aHelpText[0] = aLocalizedStrings.GetString( 39 );
+ aChoices[1] = aLocalizedStrings.GetString( 40 );
+ aHelpText[1] = aLocalizedStrings.GetString( 41 );
+ if (bHasSelection)
+ {
+ aChoices[2] = aLocalizedStrings.GetString( 42 );
+ aHelpText[2] = aLocalizedStrings.GetString( 43 );
+ }
+ m_aUIProperties[nIdx++].Value = getChoiceControlOpt( rtl::OUString(),
+ aHelpText,
+ aPrintRangeName,
+ aChoices,
+ bHasSelection ? 2 /*enable 'Selection' radio button*/ : 0 /* enable 'All pages' */);
+ // create a an Edit dependent on "Pages" selected
+ vcl::PrinterOptionsHelper::UIControlOptions aPageRangeOpt( aPrintRangeName, 1, sal_True );
+ m_aUIProperties[nIdx++].Value = getEditControlOpt( rtl::OUString(),
+ rtl::OUString(),
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PageRange" ) ),
+ rtl::OUString(),
+ aPageRangeOpt
+ );
+ // print content selection
+ vcl::PrinterOptionsHelper::UIControlOptions aContentsOpt;
+ aContentsOpt.maGroupHint = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "JobPage" ) );
+ m_aUIProperties[nIdx++].Value = getSubgroupControlOpt( rtl::OUString( aLocalizedStrings.GetString( 20 ) ),
+ rtl::OUString(),
+ aContentsOpt
+ );
+ // create a list box for notes content
+ const sal_Int16 nPrintPostIts = rDefaultPrintData.GetPrintPostIts();
+ aChoices.realloc( 4 );
+ aChoices[0] = aLocalizedStrings.GetString( 21 );
+ aChoices[1] = aLocalizedStrings.GetString( 22 );
+ aChoices[2] = aLocalizedStrings.GetString( 23 );
+ aChoices[3] = aLocalizedStrings.GetString( 24 );
+ aHelpText.realloc( 2 );
+ aHelpText[0] = aLocalizedStrings.GetString( 25 );
+ aHelpText[1] = aLocalizedStrings.GetString( 25 );
+ vcl::PrinterOptionsHelper::UIControlOptions aAnnotOpt( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintProspect" ) ), 0, sal_False );
+ aAnnotOpt.mbEnabled = bHasPostIts;
+ m_aUIProperties[ nIdx++ ].Value = getChoiceControlOpt( aLocalizedStrings.GetString( 26 ),
+ aHelpText,
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintAnnotationMode" ) ),
+ aChoices,
+ nPrintPostIts,
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "List" ) ),
+ aAnnotOpt
+ );
+
+ // create subsection for Page settings
+ vcl::PrinterOptionsHelper::UIControlOptions aPageSetOpt;
+ aPageSetOpt.maGroupHint = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "LayoutPage" ) );
+
+ if (!bWeb)
+ {
+ m_aUIProperties[nIdx++].Value = getSubgroupControlOpt( rtl::OUString( aLocalizedStrings.GetString( 27 ) ),
+ rtl::OUString(),
+ aPageSetOpt
+ );
+ uno::Sequence< rtl::OUString > aRLChoices( 3 );
+ aRLChoices[0] = aLocalizedStrings.GetString( 28 );
+ aRLChoices[1] = aLocalizedStrings.GetString( 29 );
+ aRLChoices[2] = aLocalizedStrings.GetString( 30 );
+ uno::Sequence< rtl::OUString > aRLHelp( 1 );
+ aRLHelp[0] = aLocalizedStrings.GetString( 31 );
+ // create a choice option for all/left/right pages
+ // 0 : all pages (left & right)
+ // 1 : left pages
+ // 2 : right pages
+ DBG_ASSERT( rDefaultPrintData.IsPrintLeftPage() || rDefaultPrintData.IsPrintRightPage(),
+ "unexpected value combination" );
+ sal_Int16 nPagesChoice = 0;
+ if (rDefaultPrintData.IsPrintLeftPage() && !rDefaultPrintData.IsPrintRightPage())
+ nPagesChoice = 1;
+ else if (!rDefaultPrintData.IsPrintLeftPage() && rDefaultPrintData.IsPrintRightPage())
+ nPagesChoice = 2;
+ m_aUIProperties[ nIdx++ ].Value = getChoiceControlOpt( aLocalizedStrings.GetString( 32 ),
+ aRLHelp,
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintLeftRightPages" ) ),
+ aRLChoices,
+ nPagesChoice,
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "List" ) )
+ );
+ }
+
+ // create a bool option for brochure
+ bDefaultVal = rDefaultPrintData.IsPrintProspect();
+ rtl::OUString aBrochurePropertyName( RTL_CONSTASCII_USTRINGPARAM( "PrintProspect" ) );
+ m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 33 ),
+ aLocalizedStrings.GetString( 34 ),
+ aBrochurePropertyName,
+ bDefaultVal,
+ aPageSetOpt
+ );
+
+ if (bCTL)
+ {
+ // create a bool option for brochure RTL dependent on brochure
+ uno::Sequence< rtl::OUString > aBRTLChoices( 2 );
+ aBRTLChoices[0] = aLocalizedStrings.GetString( 35 );
+ aBRTLChoices[1] = aLocalizedStrings.GetString( 36 );
+ vcl::PrinterOptionsHelper::UIControlOptions aBrochureRTLOpt( aBrochurePropertyName, -1, sal_True );
+ aBrochureRTLOpt.maGroupHint = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "LayoutPage" ) );
+ // RTL brochure choices
+ // 0 : left-to-right
+ // 1 : right-to-left
+ const sal_Int16 nBRTLChoice = rDefaultPrintData.IsPrintProspectRTL() ? 1 : 0;
+ m_aUIProperties[ nIdx++ ].Value = getChoiceControlOpt( rtl::OUString(),
+ uno::Sequence< rtl::OUString >(),
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintProspectRTL" ) ),
+ aBRTLChoices,
+ nBRTLChoice,
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "List" ) ),
+ aBrochureRTLOpt
+ );
+ }
+
+
+ DBG_ASSERT( nIdx == nNumProps, "number of added properties is not as expected" );
+}
+
+
+SwPrintUIOptions::~SwPrintUIOptions()
+{
+}
+
+bool SwPrintUIOptions::IsPrintLeftPages() const
+{
+ // take care of different property names for the option.
+ // for compatibility the old name should win (may still be used for PDF export or via Uno API)
+
+ // 0: left and right pages
+ // 1: left pages only
+ // 2: right pages only
+ sal_Int64 nLRPages = getIntValue( "PrintLeftRightPages", 0 /* default: all */ );
+ bool bRes = nLRPages == 0 || nLRPages == 1;
+ bRes = getBoolValue( "PrintLeftPages", bRes /* <- default value if property is not found */ );
+ return bRes;
+}
+
+bool SwPrintUIOptions::IsPrintRightPages() const
+{
+ // take care of different property names for the option.
+ // for compatibility the old name should win (may still be used for PDF export or via Uno API)
+
+ sal_Int64 nLRPages = getIntValue( "PrintLeftRightPages", 0 /* default: all */ );
+ bool bRes = nLRPages == 0 || nLRPages == 2;
+ bRes = getBoolValue( "PrintRightPages", bRes /* <- default value if property is not found */ );
+ return bRes;
+}
+
+bool SwPrintUIOptions::IsPrintEmptyPages( bool bIsPDFExport ) const
+{
+ // take care of different property names for the option.
+
+ bool bRes = bIsPDFExport ?
+ !getBoolValue( "IsSkipEmptyPages", sal_True ) :
+ getBoolValue( "PrintEmptyPages", sal_True );
+ return bRes;
+}
+
+bool SwPrintUIOptions::IsPrintTables() const
+{
+ // take care of different property names currently in use for this option.
+ // for compatibility the old name should win (may still be used for PDF export or via Uno API)
+
+// bool bRes = getBoolValue( "PrintTablesGraphicsAndDiagrams", sal_True );
+// bRes = getBoolValue( "PrintTables", bRes );
+// return bRes;
+ // for now it was decided that tables should always be printed
+ return true;
+}
+
+bool SwPrintUIOptions::IsPrintGraphics() const
+{
+ // take care of different property names for the option.
+ // for compatibility the old name should win (may still be used for PDF export or via Uno API)
+
+ bool bRes = getBoolValue( "PrintPicturesAndObjects", sal_True );
+ bRes = getBoolValue( "PrintGraphics", bRes );
+ return bRes;
+}
+
+bool SwPrintUIOptions::IsPrintDrawings() const
+{
+ // take care of different property names for the option.
+ // for compatibility the old name should win (may still be used for PDF export or via Uno API)
+
+ bool bRes = getBoolValue( "PrintPicturesAndObjects", sal_True );
+ bRes = getBoolValue( "PrintDrawings", bRes );
+ return bRes;
+}
+
+bool SwPrintUIOptions::processPropertiesAndCheckFormat( const uno::Sequence< beans::PropertyValue >& i_rNewProp )
+{
+ bool bChanged = processProperties( i_rNewProp );
+
+ uno::Reference< awt::XDevice > xRenderDevice;
+ uno::Any aVal( getValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "RenderDevice" ) ) ) );
+ aVal >>= xRenderDevice;
+
+ OutputDevice* pOut = 0;
+ if (xRenderDevice.is())
+ {
+ VCLXDevice* pDevice = VCLXDevice::GetImplementation( xRenderDevice );
+ pOut = pDevice ? pDevice->GetOutputDevice() : 0;
+ }
+ bChanged = bChanged || (pOut != m_pLast);
+ if( pOut )
+ m_pLast = pOut;
+
+ return bChanged;
+}
+
+//////////////////////////////////////////////////////////////////////
+
diff --git a/sw/source/core/view/viewimp.cxx b/sw/source/core/view/viewimp.cxx
index 04bc229627a9..b2d91c48f598 100644
--- a/sw/source/core/view/viewimp.cxx
+++ b/sw/source/core/view/viewimp.cxx
@@ -430,7 +430,7 @@ void SwViewImp::DisposeAccessible( const SwFrm *pFrm,
do
{
if( pTmp->Imp()->IsAccessible() )
- pTmp->Imp()->GetAccessibleMap().Dispose( pFrm, pObj, bRecursive );
+ pTmp->Imp()->GetAccessibleMap().Dispose( pFrm, pObj, 0, bRecursive );
pTmp = (ViewShell *)pTmp->GetNext();
} while ( pTmp != pVSh );
}
@@ -444,7 +444,7 @@ void SwViewImp::MoveAccessible( const SwFrm *pFrm, const SdrObject *pObj,
do
{
if( pTmp->Imp()->IsAccessible() )
- pTmp->Imp()->GetAccessibleMap().InvalidatePosOrSize( pFrm, pObj,
+ pTmp->Imp()->GetAccessibleMap().InvalidatePosOrSize( pFrm, pObj, 0,
rOldFrm );
pTmp = (ViewShell *)pTmp->GetNext();
} while ( pTmp != pVSh );
diff --git a/sw/source/core/view/viewsh.cxx b/sw/source/core/view/viewsh.cxx
index 1b04f206b164..0bbfc70d5a22 100644..100755
--- a/sw/source/core/view/viewsh.cxx
+++ b/sw/source/core/view/viewsh.cxx
@@ -860,21 +860,6 @@ void ViewShell::SetTabCompat( bool bNew )
}
}
-/*-- 29.11.2007 09:03:18---------------------------------------------------
- //#i24363# tab stops relative to indent
- -----------------------------------------------------------------------*/
-void ViewShell::SetTabsRelativeToIndent(bool bNew)
-{
- IDocumentSettingAccess* pIDSA = getIDocumentSettingAccess();
- if( pIDSA->get(IDocumentSettingAccess::TABS_RELATIVE_TO_INDENT) != bNew )
- {
- SwWait aWait( *GetDoc()->GetDocShell(), TRUE );
- pIDSA->set(IDocumentSettingAccess::TABS_RELATIVE_TO_INDENT, bNew );
- const BYTE nInv = INV_PRTAREA | INV_SIZE | INV_TABLE | INV_SECTION;
- lcl_InvalidateAllCntnt( *this, nInv );
- }
-}
-
void ViewShell::SetAddExtLeading( bool bNew )
{
IDocumentSettingAccess* pIDSA = getIDocumentSettingAccess();
@@ -1231,16 +1216,23 @@ void ViewShell::VisPortChgd( const SwRect &rRect)
SwTwips nPageLeft = 0;
SwTwips nPageRight = 0;
- if (pPage->MarginSide())
+ switch ( pPage->SidebarPosition() )
{
- nPageLeft = aPageRect.Left() - nBorderWidth - nSidebarWidth;
- nPageRight = aPageRect.Right() + nBorderWidth + nShadowWidth;
- }
- else
- {
- // OD 03.03.2003 #107927# - use correct datatype
- nPageLeft = aPageRect.Left() - nBorderWidth;
- nPageRight = aPageRect.Right() + nBorderWidth + nShadowWidth + nSidebarWidth;
+ case sw::sidebarwindows::SIDEBAR_LEFT:
+ {
+ nPageLeft = aPageRect.Left() - nBorderWidth - nSidebarWidth;
+ nPageRight = aPageRect.Right() + nBorderWidth + nShadowWidth;
+ }
+ break;
+ case sw::sidebarwindows::SIDEBAR_RIGHT:
+ {
+ nPageLeft = aPageRect.Left() - nBorderWidth;
+ nPageRight = aPageRect.Right() + nBorderWidth + nShadowWidth + nSidebarWidth;
+ }
+ break;
+ case sw::sidebarwindows::SIDEBAR_NONE:
+ // nothing to do
+ break;
}
if( nPageLeft < nMinLeft )
nMinLeft = nPageLeft;
@@ -1310,6 +1302,15 @@ void ViewShell::VisPortChgd( const SwRect &rRect)
}
GetWin()->Update();
+ // --> OD 2010-02-11 #i88070#
+ if ( pPostItMgr )
+ {
+ pPostItMgr->Rescale();
+ pPostItMgr->CalcRects();
+ pPostItMgr->LayoutPostIts();
+ }
+ // <--
+
if ( !bScrolled && pPostItMgr && pPostItMgr->HasNotes() && pPostItMgr->ShowNotes() )
pPostItMgr->CorrectPositions();
@@ -1708,7 +1709,8 @@ void ViewShell::PaintDesktop( const SwRect &rRect )
aPageRect.SSize() = rFormatPage.Frm().SSize();
}
- const bool bSidebarRight = !static_cast<const SwPageFrm*>(pPage)->MarginSide();
+ const bool bSidebarRight =
+ static_cast<const SwPageFrm*>(pPage)->SidebarPosition() == sw::sidebarwindows::SIDEBAR_RIGHT;
aPageRect.Pos().X() -= bSidebarRight ? 0 : nSidebarWidth;
aPageRect.SSize().Width() += nSidebarWidth;
@@ -2243,7 +2245,8 @@ void ViewShell::ApplyViewOptions( const SwViewOption &rOpt )
void ViewShell::ImplApplyViewOptions( const SwViewOption &rOpt )
{
- ASSERT( !(*pOpt == rOpt), "ViewShell::ApplyViewOptions: ");
+ if (*pOpt == rOpt)
+ return;
Window *pMyWin = GetWin();
if( !pMyWin )
@@ -2590,6 +2593,15 @@ void ViewShell::InvalidateAccessibleParaAttrs( const SwTxtFrm& rTxtFrm )
}
}
+SwAccessibleMap* ViewShell::GetAccessibleMap()
+{
+ if ( Imp()->IsAccessible() )
+ {
+ return &(Imp()->GetAccessibleMap());
+ }
+
+ return 0;
+}
/* -----------------------------06.05.2002 13:23------------------------------
---------------------------------------------------------------------------*/
diff --git a/sw/source/core/view/vprint.cxx b/sw/source/core/view/vprint.cxx
index d7400ad2a73b..e74fb21f720a 100755
--- a/sw/source/core/view/vprint.cxx
+++ b/sw/source/core/view/vprint.cxx
@@ -31,35 +31,27 @@
#include <com/sun/star/uno/Sequence.hxx>
#include <com/sun/star/uno/Any.hxx>
+#include <com/sun/star/uno/Any.hxx>
+#include <com/sun/star/view/XRenderable.hpp>
#include <hintids.hxx>
-#include <vcl/oldprintadaptor.hxx>
-#include <sfx2/printer.hxx>
-#include <sfx2/objsh.hxx>
-#include <tools/resary.hxx>
-#include <tools/debug.hxx>
#include <rtl/ustring.hxx>
-#include <toolkit/awt/vclxdevice.hxx>
-#include <toolkit/awt/vclxdevice.hxx>
-
-#include <sfx2/progress.hxx>
#include <sfx2/app.hxx>
+#include <sfx2/objsh.hxx>
#include <sfx2/prnmon.hxx>
+#include <svl/languageoptions.hxx>
#include <editeng/paperinf.hxx>
#include <editeng/pbinitem.hxx>
#include <svx/svdview.hxx>
+#include <toolkit/awt/vclxdevice.hxx>
+#include <tools/debug.hxx>
#include <unotools/localedatawrapper.hxx>
-
#include <unotools/moduleoptions.hxx>
-#include <svl/languageoptions.hxx>
-
-#include <com/sun/star/uno/Any.hxx>
-#include <com/sun/star/view/XRenderable.hpp>
+#include <unotools/syslocale.hxx>
+#include <vcl/oldprintadaptor.hxx>
#include <unotxdoc.hxx>
-
#include <docsh.hxx>
-#include <unotools/syslocale.hxx>
#include <txtfld.hxx>
#include <fmtfld.hxx>
#include <fmtfsize.hxx>
@@ -83,9 +75,7 @@
#include <pagedesc.hxx>
#include <poolfmt.hxx> // fuer RES_POOLPAGE_JAKET
#include <mdiexp.hxx> // Ansteuern der Statusleiste
-#ifndef _STATSTR_HRC
#include <statstr.hrc> // -- " --
-#endif
#include <ptqueue.hxx>
#include <tabfrm.hxx>
#include <txtfrm.hxx> // MinPrtLine
@@ -93,13 +83,6 @@
#include <fmtpdsc.hxx> // SwFmtPageDesc
#include <globals.hrc>
-#define JOBSET_ERR_DEFAULT 0
-#define JOBSET_ERR_ERROR 1
-#define JOBSET_ERR_ISSTARTET 2
-
-
-extern bool lcl_GetPostIts( IDocumentFieldsAccess* pIDFA, _SetGetExpFlds * pSrtLst );
-
using namespace ::com::sun::star;
@@ -210,500 +193,6 @@ void SwPaintQueue::Remove( ViewShell *pSh )
}
}
-/*****************************************************************************/
-
-const XubString& SwPrtOptions::MakeNextJobName()
-{
- static char __READONLY_DATA sDelim[] = " - ";
- USHORT nDelim = sJobName.SearchAscii( sDelim );
- if( STRING_NOTFOUND == nDelim )
- sJobName.AppendAscii(sDelim);
- else
- sJobName.Erase( nDelim + 3/*Zeichen!*/ );
-
- return sJobName += XubString::CreateFromInt32( ++nJobNo );
-}
-
-/*****************************************************************************/
-
-SwRenderData::SwRenderData()
-{
- m_pPostItFields = 0;
- m_pPostItDoc = 0;
- m_pPostItShell = 0;
-
- m_pViewOptionAdjust = 0;
- m_pPrtOptions = 0;
-}
-
-
-SwRenderData::~SwRenderData()
-{
- delete m_pViewOptionAdjust; m_pViewOptionAdjust = 0;
- delete m_pPrtOptions; m_pPrtOptions = 0;
- DBG_ASSERT( !m_pPostItShell, "m_pPostItShell should already have been deleted" );
- DBG_ASSERT( !m_pPostItDoc, "m_pPostItDoc should already have been deleted" );
- DBG_ASSERT( !m_pPostItFields, " should already have been deleted" );
-}
-
-
-void SwRenderData::CreatePostItData( SwDoc *pDoc, const SwViewOption *pViewOpt, OutputDevice *pOutDev )
-{
- DBG_ASSERT( !m_pPostItFields && !m_pPostItDoc && !m_pPostItShell, "some post-it data already exists" );
- m_pPostItFields = new _SetGetExpFlds;
- lcl_GetPostIts( pDoc, m_pPostItFields );
- m_pPostItDoc = new SwDoc;
-
- //!! Disable spell and grammar checking in the temporary document.
- //!! Otherwise the grammar checker might process it and crash if we later on
- //!! simply delete this document while he is still at it.
- SwViewOption aViewOpt( *pViewOpt );
- aViewOpt.SetOnlineSpell( FALSE );
-
- m_pPostItShell = new ViewShell( *m_pPostItDoc, 0, &aViewOpt, pOutDev );
-}
-
-
-void SwRenderData::DeletePostItData()
-{
- if (HasPostItData())
- {
- m_pPostItDoc->setPrinter( 0, false, false ); //damit am echten DOC der Drucker bleibt
- delete m_pPostItShell; //Nimmt das PostItDoc mit ins Grab.
- delete m_pPostItFields;
- m_pPostItDoc = 0;
- m_pPostItShell = 0;
- m_pPostItFields = 0;
- }
-}
-
-
-void SwRenderData::ViewOptionAdjustStart( SwWrtShell &rSh, const SwViewOption &rViewOptions )
-{
- if (m_pViewOptionAdjust)
- {
- DBG_ASSERT( 0, "error: there should be no ViewOptionAdjust active when calling this function" );
- }
- m_pViewOptionAdjust = new SwViewOptionAdjust_Impl( rSh, rViewOptions );
-}
-
-
-void SwRenderData::ViewOptionAdjust( const SwPrtOptions *pPrtOptions )
-{
- m_pViewOptionAdjust->AdjustViewOptions( pPrtOptions );
-}
-
-
-void SwRenderData::ViewOptionAdjustStop()
-{
- if (m_pViewOptionAdjust)
- {
- delete m_pViewOptionAdjust;
- m_pViewOptionAdjust = 0;
- }
-}
-
-
-void SwRenderData::MakeSwPrtOptions(
- SwPrtOptions &rOptions,
- const SwDocShell *pDocShell,
- const SwPrintUIOptions *pOpt,
- const SwRenderData *pData,
- bool bIsPDFExport )
-{
- if (!pDocShell || !pOpt || !pData)
- return;
-
- // get default print options
- const TypeId aSwWebDocShellTypeId = TYPE(SwWebDocShell);
- BOOL bWeb = pDocShell->IsA( aSwWebDocShellTypeId );
- rOptions.MakeOptions( bWeb );
-
- // get print options to use from provided properties
- rOptions.bPrintGraphic = pOpt->IsPrintGraphics();
- rOptions.bPrintTable = pOpt->IsPrintTables();
- rOptions.bPrintDraw = pOpt->IsPrintDrawings();
- rOptions.bPrintControl = pOpt->IsPrintFormControls();
- rOptions.bPrintLeftPages = pOpt->IsPrintLeftPages();
- rOptions.bPrintRightPages = pOpt->IsPrintRightPages();
- rOptions.bPrintPageBackground = pOpt->IsPrintPageBackground();
- rOptions.bPrintEmptyPages = pOpt->IsPrintEmptyPages( bIsPDFExport );
- // bUpdateFieldsInPrinting <-- not set here; mail merge only
- rOptions.bPaperFromSetup = pOpt->IsPaperFromSetup();
- rOptions.bPrintReverse = pOpt->IsPrintReverse();
- rOptions.bPrintProspect = pOpt->IsPrintProspect();
- rOptions.bPrintProspectRTL = pOpt->IsPrintProspectRTL();
- // bPrintSingleJobs <-- not set here; mail merge and or configuration
- // bModified <-- not set here; mail merge only
- rOptions.bPrintBlackFont = pOpt->IsPrintWithBlackTextColor();
- rOptions.bPrintHiddenText = pOpt->IsPrintHiddenText();
- rOptions.bPrintTextPlaceholder = pOpt->IsPrintTextPlaceholders();
- rOptions.nPrintPostIts = pOpt->GetPrintPostItsType();
-
- //! needs to be set after MakeOptions since the assignment operation in that
- //! function will destroy the pointers
- rOptions.SetPrintUIOptions( pOpt );
- rOptions.SetRenderData( pData );
-
- // rOptions.aMulti is not used anymore in the XRenderable API
- // Thus we set it to a dummy value here.
- rOptions.aMulti = MultiSelection( Range( 1, 1 ) );
-
- //! Note: Since for PDF export of (multi-)selection a temporary
- //! document is created that contains only the selects parts,
- //! and thus that document is to printed in whole the,
- //! rOptions.bPrintSelection parameter will be false.
- if (bIsPDFExport)
- rOptions.bPrintSelection = FALSE;
-}
-
-
-/*****************************************************************************/
-
-SwPrintUIOptions::SwPrintUIOptions(
- bool bWeb,
- bool bSwSrcView,
- bool bHasSelection,
- bool bHasPostIts,
- const SwPrintData &rDefaultPrintData ) :
- m_pLast( NULL ),
- m_rDefaultPrintData( rDefaultPrintData )
-{
- ResStringArray aLocalizedStrings( SW_RES( STR_PRINTOPTUI ) );
-
- DBG_ASSERT( aLocalizedStrings.Count() >= 44, "resource incomplete" );
- if( aLocalizedStrings.Count() < 44 ) // bad resource ?
- return;
-
- // printing HTML sources does not have any valid UI options.
- // Its just the source code that gets printed ...
- if (bSwSrcView)
- {
- m_aUIProperties.realloc( 0 );
- return;
- }
-
- // check if CTL is enabled
- SvtLanguageOptions aLangOpt;
- bool bCTL = aLangOpt.IsCTLFontEnabled();
-
- // create sequence of print UI options
- // (5 options are not available for Writer-Web)
- const int nCTLOpts = bCTL ? 1 : 0;
- const int nNumProps = nCTLOpts + (bWeb ? 14 : 20);
- m_aUIProperties.realloc( nNumProps );
- int nIdx = 0;
-
- // create "writer" section (new tab page in dialog)
- SvtModuleOptions aModOpt;
- String aAppGroupname( aLocalizedStrings.GetString( 0 ) );
- aAppGroupname.SearchAndReplace( String( RTL_CONSTASCII_USTRINGPARAM( "%s" ) ),
- aModOpt.GetModuleName( SvtModuleOptions::E_SWRITER ) );
- m_aUIProperties[ nIdx++ ].Value = getGroupControlOpt( aAppGroupname, rtl::OUString() );
-
- // create sub section for Contents
- m_aUIProperties[ nIdx++ ].Value = getSubgroupControlOpt( aLocalizedStrings.GetString( 1 ), rtl::OUString() );
-
- // create a bool option for background
- bool bDefaultVal = rDefaultPrintData.IsPrintPageBackground();
- m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 2 ),
- aLocalizedStrings.GetString( 3 ),
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintPageBackground" ) ),
- bDefaultVal );
-
- // create a bool option for pictures/graphics AND OLE and drawing objects as well
- bDefaultVal = rDefaultPrintData.IsPrintGraphic() || rDefaultPrintData.IsPrintDraw();
- m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 4 ),
- aLocalizedStrings.GetString( 5 ),
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintPicturesAndObjects" ) ),
- bDefaultVal );
- if (!bWeb)
- {
- // create a bool option for hidden text
- bDefaultVal = rDefaultPrintData.IsPrintHiddenText();
- m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 6 ),
- aLocalizedStrings.GetString( 7 ),
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintHiddenText" ) ),
- bDefaultVal );
-
- // create a bool option for place holder
- bDefaultVal = rDefaultPrintData.IsPrintTextPlaceholder();
- m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 8 ),
- aLocalizedStrings.GetString( 9 ),
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintTextPlaceholder" ) ),
- bDefaultVal );
- }
-
- // create a bool option for controls
- bDefaultVal = rDefaultPrintData.IsPrintControl();
- m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 10 ),
- aLocalizedStrings.GetString( 11 ),
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintControls" ) ),
- bDefaultVal );
-
- // create sub section for Color
- m_aUIProperties[ nIdx++ ].Value = getSubgroupControlOpt( aLocalizedStrings.GetString( 12 ), rtl::OUString() );
-
- // create a bool option for printing text with black font color
- bDefaultVal = rDefaultPrintData.IsPrintBlackFont();
- m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 13 ),
- aLocalizedStrings.GetString( 14 ),
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintBlackFonts" ) ),
- bDefaultVal );
-
- if (!bWeb)
- {
- // create subgroup for misc options
- m_aUIProperties[ nIdx++ ].Value = getSubgroupControlOpt( rtl::OUString( aLocalizedStrings.GetString( 15 ) ), rtl::OUString() );
-
- // create a bool option for printing automatically inserted blank pages
- bDefaultVal = rDefaultPrintData.IsPrintEmptyPages();
- m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 16 ),
- aLocalizedStrings.GetString( 17 ),
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintEmptyPages" ) ),
- bDefaultVal );
- }
-
- // create a bool option for paper tray
- bDefaultVal = rDefaultPrintData.IsPaperFromSetup();
- vcl::PrinterOptionsHelper::UIControlOptions aPaperTrayOpt;
- aPaperTrayOpt.maGroupHint = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "OptionsPageOptGroup" ) );
- m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 18 ),
- aLocalizedStrings.GetString( 19 ),
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintPaperFromSetup" ) ),
- bDefaultVal,
- aPaperTrayOpt
- );
-
- // print range selection
- vcl::PrinterOptionsHelper::UIControlOptions aPrintRangeOpt;
- aPrintRangeOpt.maGroupHint = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintRange" ) );
- aPrintRangeOpt.mbInternalOnly = sal_True;
- m_aUIProperties[nIdx++].Value = getSubgroupControlOpt( rtl::OUString( aLocalizedStrings.GetString( 37 ) ),
- rtl::OUString(),
- aPrintRangeOpt
- );
-
- // create a choice for the content to create
- rtl::OUString aPrintRangeName( RTL_CONSTASCII_USTRINGPARAM( "PrintContent" ) );
- uno::Sequence< rtl::OUString > aChoices( bHasSelection ? 3 : 2 );
- uno::Sequence< rtl::OUString > aHelpText( bHasSelection ? 3 : 2 );
- aChoices[0] = aLocalizedStrings.GetString( 38 );
- aHelpText[0] = aLocalizedStrings.GetString( 39 );
- aChoices[1] = aLocalizedStrings.GetString( 40 );
- aHelpText[1] = aLocalizedStrings.GetString( 41 );
- if (bHasSelection)
- {
- aChoices[2] = aLocalizedStrings.GetString( 42 );
- aHelpText[2] = aLocalizedStrings.GetString( 43 );
- }
- m_aUIProperties[nIdx++].Value = getChoiceControlOpt( rtl::OUString(),
- aHelpText,
- aPrintRangeName,
- aChoices,
- bHasSelection ? 2 /*enable 'Selection' radio button*/ : 0 /* enable 'All pages' */);
- // create a an Edit dependent on "Pages" selected
- vcl::PrinterOptionsHelper::UIControlOptions aPageRangeOpt( aPrintRangeName, 1, sal_True );
- m_aUIProperties[nIdx++].Value = getEditControlOpt( rtl::OUString(),
- rtl::OUString(),
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PageRange" ) ),
- rtl::OUString(),
- aPageRangeOpt
- );
- // print content selection
- vcl::PrinterOptionsHelper::UIControlOptions aContentsOpt;
- aContentsOpt.maGroupHint = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "JobPage" ) );
- m_aUIProperties[nIdx++].Value = getSubgroupControlOpt( rtl::OUString( aLocalizedStrings.GetString( 20 ) ),
- rtl::OUString(),
- aContentsOpt
- );
- // create a list box for notes content
- const sal_Int16 nPrintPostIts = rDefaultPrintData.GetPrintPostIts();
- aChoices.realloc( 4 );
- aChoices[0] = aLocalizedStrings.GetString( 21 );
- aChoices[1] = aLocalizedStrings.GetString( 22 );
- aChoices[2] = aLocalizedStrings.GetString( 23 );
- aChoices[3] = aLocalizedStrings.GetString( 24 );
- aHelpText.realloc( 2 );
- aHelpText[0] = aLocalizedStrings.GetString( 25 );
- aHelpText[1] = aLocalizedStrings.GetString( 25 );
- vcl::PrinterOptionsHelper::UIControlOptions aAnnotOpt( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintProspect" ) ), 0, sal_False );
- aAnnotOpt.mbEnabled = bHasPostIts;
- m_aUIProperties[ nIdx++ ].Value = getChoiceControlOpt( aLocalizedStrings.GetString( 26 ),
- aHelpText,
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintAnnotationMode" ) ),
- aChoices,
- nPrintPostIts,
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "List" ) ),
- aAnnotOpt
- );
-
- // create subsection for Page settings
- vcl::PrinterOptionsHelper::UIControlOptions aPageSetOpt;
- aPageSetOpt.maGroupHint = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "LayoutPage" ) );
-
- if (!bWeb)
- {
- m_aUIProperties[nIdx++].Value = getSubgroupControlOpt( rtl::OUString( aLocalizedStrings.GetString( 27 ) ),
- rtl::OUString(),
- aPageSetOpt
- );
- uno::Sequence< rtl::OUString > aRLChoices( 3 );
- aRLChoices[0] = aLocalizedStrings.GetString( 28 );
- aRLChoices[1] = aLocalizedStrings.GetString( 29 );
- aRLChoices[2] = aLocalizedStrings.GetString( 30 );
- uno::Sequence< rtl::OUString > aRLHelp( 1 );
- aRLHelp[0] = aLocalizedStrings.GetString( 31 );
- // create a choice option for all/left/right pages
- // 0 : all pages (left & right)
- // 1 : left pages
- // 2 : right pages
- DBG_ASSERT( rDefaultPrintData.IsPrintLeftPage() || rDefaultPrintData.IsPrintRightPage(),
- "unexpected value combination" );
- sal_Int16 nPagesChoice = 0;
- if (rDefaultPrintData.IsPrintLeftPage() && !rDefaultPrintData.IsPrintRightPage())
- nPagesChoice = 1;
- else if (!rDefaultPrintData.IsPrintLeftPage() && rDefaultPrintData.IsPrintRightPage())
- nPagesChoice = 2;
- m_aUIProperties[ nIdx++ ].Value = getChoiceControlOpt( aLocalizedStrings.GetString( 32 ),
- aRLHelp,
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintLeftRightPages" ) ),
- aRLChoices,
- nPagesChoice,
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "List" ) )
- );
- }
-
- // create a bool option for brochure
- bDefaultVal = rDefaultPrintData.IsPrintProspect();
- rtl::OUString aBrochurePropertyName( RTL_CONSTASCII_USTRINGPARAM( "PrintProspect" ) );
- m_aUIProperties[ nIdx++ ].Value = getBoolControlOpt( aLocalizedStrings.GetString( 33 ),
- aLocalizedStrings.GetString( 34 ),
- aBrochurePropertyName,
- bDefaultVal,
- aPageSetOpt
- );
-
- if (bCTL)
- {
- // create a bool option for brochure RTL dependent on brochure
- uno::Sequence< rtl::OUString > aBRTLChoices( 2 );
- aBRTLChoices[0] = aLocalizedStrings.GetString( 35 );
- aBRTLChoices[1] = aLocalizedStrings.GetString( 36 );
- vcl::PrinterOptionsHelper::UIControlOptions aBrochureRTLOpt( aBrochurePropertyName, -1, sal_True );
- aBrochureRTLOpt.maGroupHint = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "LayoutPage" ) );
- // RTL brochure choices
- // 0 : left-to-right
- // 1 : right-to-left
- const sal_Int16 nBRTLChoice = rDefaultPrintData.IsPrintProspectRTL() ? 1 : 0;
- m_aUIProperties[ nIdx++ ].Value = getChoiceControlOpt( rtl::OUString(),
- uno::Sequence< rtl::OUString >(),
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PrintProspectRTL" ) ),
- aBRTLChoices,
- nBRTLChoice,
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "List" ) ),
- aBrochureRTLOpt
- );
- }
-
-
- DBG_ASSERT( nIdx == nNumProps, "number of added properties is not as expected" );
-}
-
-
-SwPrintUIOptions::~SwPrintUIOptions()
-{
-}
-
-bool SwPrintUIOptions::IsPrintLeftPages() const
-{
- // take care of different property names for the option.
- // for compatibility the old name should win (may still be used for PDF export or via Uno API)
-
- // 0: left and right pages
- // 1: left pages only
- // 2: right pages only
- sal_Int64 nLRPages = getIntValue( "PrintLeftRightPages", 0 /* default: all */ );
- bool bRes = nLRPages == 0 || nLRPages == 1;
- bRes = getBoolValue( "PrintLeftPages", bRes /* <- default value if property is not found */ );
- return bRes;
-}
-
-bool SwPrintUIOptions::IsPrintRightPages() const
-{
- // take care of different property names for the option.
- // for compatibility the old name should win (may still be used for PDF export or via Uno API)
-
- sal_Int64 nLRPages = getIntValue( "PrintLeftRightPages", 0 /* default: all */ );
- bool bRes = nLRPages == 0 || nLRPages == 2;
- bRes = getBoolValue( "PrintRightPages", bRes /* <- default value if property is not found */ );
- return bRes;
-}
-
-bool SwPrintUIOptions::IsPrintEmptyPages( bool bIsPDFExport ) const
-{
- // take care of different property names for the option.
-
- bool bRes = bIsPDFExport ?
- !getBoolValue( "IsSkipEmptyPages", sal_True ) :
- getBoolValue( "PrintEmptyPages", sal_True );
- return bRes;
-}
-
-bool SwPrintUIOptions::IsPrintTables() const
-{
- // take care of different property names currently in use for this option.
- // for compatibility the old name should win (may still be used for PDF export or via Uno API)
-
-// bool bRes = getBoolValue( "PrintTablesGraphicsAndDiagrams", sal_True );
-// bRes = getBoolValue( "PrintTables", bRes );
-// return bRes;
- // for now it was decided that tables should always be printed
- return true;
-}
-
-bool SwPrintUIOptions::IsPrintGraphics() const
-{
- // take care of different property names for the option.
- // for compatibility the old name should win (may still be used for PDF export or via Uno API)
-
- bool bRes = getBoolValue( "PrintPicturesAndObjects", sal_True );
- bRes = getBoolValue( "PrintGraphics", bRes );
- return bRes;
-}
-
-bool SwPrintUIOptions::IsPrintDrawings() const
-{
- // take care of different property names for the option.
- // for compatibility the old name should win (may still be used for PDF export or via Uno API)
-
- bool bRes = getBoolValue( "PrintPicturesAndObjects", sal_True );
- bRes = getBoolValue( "PrintDrawings", bRes );
- return bRes;
-}
-
-bool SwPrintUIOptions::processPropertiesAndCheckFormat( const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& i_rNewProp )
-{
- bool bChanged = processProperties( i_rNewProp );
-
- uno::Reference< awt::XDevice > xRenderDevice;
- uno::Any aVal( getValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "RenderDevice" ) ) ) );
- aVal >>= xRenderDevice;
-
- OutputDevice* pOut = 0;
- if (xRenderDevice.is())
- {
- VCLXDevice* pDevice = VCLXDevice::GetImplementation( xRenderDevice );
- pOut = pDevice ? pDevice->GetOutputDevice() : 0;
- }
- bChanged = bChanged || (pOut != m_pLast);
- if( pOut )
- m_pLast = pOut;
-
- return bChanged;
-}
-
-
/******************************************************************************
* Methode : void SetSwVisArea( ViewShell *pSh, Point aPrtOffset, ...
* Beschreibung:
@@ -847,33 +336,6 @@ void ViewShell::ChgAllPageSize( Size &rSz )
}
-void lcl_SetState( SfxProgress& rProgress, ULONG nPage, ULONG nMax,
- const XubString *pStr, ULONG nAct, ULONG nCnt, ULONG nOffs, ULONG nPageNo )
-{
- XubString aTmp = XubString::CreateFromInt64( nPageNo );
- if( pStr )
- {
- aTmp += ' ';
- aTmp += *pStr;
- if( nCnt )
- {
- nMax *= 2;
- rProgress.SetStateText( (nAct-1)*nMax+nPage+nOffs,
- aTmp, nCnt*nMax );
- }
- else
- rProgress.SetStateText( nPage, aTmp, nMax );
- }
- else
- {
- aTmp += ' '; aTmp += '('; aTmp += XubString::CreateFromInt64( nPage );
- aTmp += '/'; aTmp += XubString::CreateFromInt64( nMax ); aTmp += ')';
- rProgress.SetStateText( nPage, aTmp, nMax );
- }
-}
-
-
-
void ViewShell::CalcPagesForPrint( USHORT nMax )
{
SET_CURR_SHELL( this );
@@ -1394,3 +856,4 @@ void ViewShell::PrepareForPrint( const SwPrintData &rOptions )
}
}
}
+
diff --git a/sw/source/filter/ascii/ascatr.cxx b/sw/source/filter/ascii/ascatr.cxx
index eadaea834d80..c1ba4908a339 100644
--- a/sw/source/filter/ascii/ascatr.cxx
+++ b/sw/source/filter/ascii/ascatr.cxx
@@ -124,7 +124,8 @@ BOOL SwASC_AttrIter::OutAttr( xub_StrLen nSwPos )
switch( pHt->Which() )
{
case RES_TXTATR_FIELD:
- sOut = ((SwTxtFld*)pHt)->GetFld().GetFld()->Expand();
+ sOut = static_cast<SwTxtFld const*>(pHt)->GetFld().GetFld()
+ ->ExpandField(rWrt.pDoc->IsClipBoard());
break;
case RES_TXTATR_FTN:
@@ -169,7 +170,14 @@ static Writer& OutASC_SwTxtNode( Writer& rWrt, SwCntntNode& rNode )
SwASC_AttrIter aAttrIter( (SwASCWriter&)rWrt, rNd, nStrPos );
if( !nStrPos && rWrt.bExportPargraphNumbering )
- rWrt.Strm().WriteUnicodeOrByteText( rNd.GetNumString() );
+ {
+ String numString( rNd.GetNumString() );
+ if (numString.Len())
+ {
+ numString.Append(' ');
+ rWrt.Strm().WriteUnicodeOrByteText(numString);
+ }
+ }
String aStr( rNd.GetTxt() );
if( rWrt.bASCII_ParaAsBlanc )
diff --git a/sw/source/filter/basflt/fltini.cxx b/sw/source/filter/basflt/fltini.cxx
index 553554df8f52..6f4cca8993d2 100644
--- a/sw/source/filter/basflt/fltini.cxx
+++ b/sw/source/filter/basflt/fltini.cxx
@@ -1,1031 +1,1037 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * 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.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_sw.hxx"
-#define _SVSTDARR_STRINGS
-
-#include <string.h>
-#include <stdio.h> // sscanf
-#include <hintids.hxx>
-#include <i18npool/lang.h>
-#include <i18npool/mslangid.hxx>
-#include <vcl/msgbox.hxx>
-#include <svtools/parhtml.hxx>
-#include <svl/svstdarr.hxx>
-#include <sot/storage.hxx>
-#include <sot/clsids.hxx>
-#include <sfx2/app.hxx>
-#include <sfx2/docfilt.hxx>
-#include <sfx2/fcontnr.hxx>
-#include <sfx2/docfile.hxx>
-#include <editeng/lrspitem.hxx>
-#include <editeng/tstpitem.hxx>
-#include <doc.hxx>
-#include <docary.hxx>
-#include <pam.hxx>
-#include <shellio.hxx>
-#include <errhdl.hxx>
-#include <docsh.hxx>
-#include <wdocsh.hxx>
-#include <fltini.hxx>
-#include <hints.hxx>
-#include <frmatr.hxx>
-#include <fmtfsize.hxx>
-#include <swtable.hxx>
-#include <fmtcntnt.hxx>
-#include <editeng/boxitem.hxx>
-#include <frmatr.hxx>
-#include <frmfmt.hxx>
-#include <numrule.hxx>
-#include <ndtxt.hxx>
-#include <swfltopt.hxx>
-#include <swerror.h>
-#include <osl/module.hxx>
-
-using namespace utl;
-using rtl::OUString;
-using namespace com::sun::star::uno;
-
-SwRead ReadAscii = 0, /*ReadSwg = 0, ReadSw3 = 0,*/
- ReadHTML = 0, ReadXML = 0;
-
-Reader* GetRTFReader();
-Reader* GetWW8Reader();
-
-// Note: if editing, please don't forget to modify also the enum
-// ReaderWriterEnum and aFilterDetect in shellio.hxx
-SwReaderWriterEntry aReaderWriter[] =
-{
- SwReaderWriterEntry( &::GetRTFReader, &::GetRTFWriter, TRUE ),
- SwReaderWriterEntry( 0, &::GetASCWriter, FALSE ),
- SwReaderWriterEntry( &::GetWW8Reader, &::GetWW8Writer, TRUE ),
- SwReaderWriterEntry( &::GetWW8Reader, &::GetWW8Writer, TRUE ),
- SwReaderWriterEntry( &::GetRTFReader, &::GetRTFWriter, TRUE ),
- SwReaderWriterEntry( 0, &::GetHTMLWriter, TRUE ),
- SwReaderWriterEntry( 0, 0, TRUE ),
- SwReaderWriterEntry( &::GetWW8Reader, 0, TRUE ),
- SwReaderWriterEntry( 0, &::GetXMLWriter, TRUE ),
- SwReaderWriterEntry( 0, &::GetASCWriter, TRUE ),
- SwReaderWriterEntry( 0, &::GetASCWriter, TRUE )
-};
-
-Reader* SwReaderWriterEntry::GetReader()
-{
- if ( pReader )
- return pReader;
- else if ( fnGetReader )
- {
- pReader = (*fnGetReader)();
- return pReader;
- }
- return NULL;
-}
-
-void SwReaderWriterEntry::GetWriter( const String& rNm, const String& rBaseURL, WriterRef& xWrt ) const
-{
- if ( fnGetWriter )
- (*fnGetWriter)( rNm, rBaseURL, xWrt );
- else
- xWrt = WriterRef(0);
-}
-
-/*SwRead SwGetReaderSw3() // SW_DLLPUBLIC
-{
- return ReadSw3;
-}
-*/
-SwRead SwGetReaderXML() // SW_DLLPUBLIC
-{
- return ReadXML;
-}
-
-bool IsDocShellRegistered()
-{
- return 0 != SwDocShell::_GetInterface();
-}
-
-inline void _SetFltPtr( USHORT rPos, SwRead pReader )
-{
- aReaderWriter[ rPos ].pReader = pReader;
-}
-
-void _InitFilter()
-{
- _SetFltPtr( READER_WRITER_BAS, (ReadAscii = new AsciiReader) );
- _SetFltPtr( READER_WRITER_HTML, (ReadHTML = new HTMLReader) );
- _SetFltPtr( READER_WRITER_WW1, new WW1Reader );
- _SetFltPtr( READER_WRITER_XML, (ReadXML = new XMLReader) );
-
-#ifdef NEW_WW97_EXPORT
- aReaderWriter[ READER_WRITER_WW1 ].fnGetWriter = &::GetWW8Writer;
- aReaderWriter[ READER_WRITER_WW5 ].fnGetWriter = &::GetWW8Writer;
-#endif
-
- _SetFltPtr( READER_WRITER_TEXT_DLG, ReadAscii );
- _SetFltPtr( READER_WRITER_TEXT, ReadAscii );
-}
-
-void _FinitFilter()
-{
- // die Reader vernichten
- for( USHORT n = 0; n < MAXFILTER; ++n )
- {
- SwReaderWriterEntry& rEntry = aReaderWriter[n];
- if( rEntry.bDelReader && rEntry.pReader )
- delete rEntry.pReader, rEntry.pReader = NULL;
- }
-}
-
-
-/* */
-
-namespace SwReaderWriter {
-
-Reader* GetReader( ReaderWriterEnum eReader )
-{
- return aReaderWriter[eReader].GetReader();
-}
-
-void GetWriter( const String& rFltName, const String& rBaseURL, WriterRef& xRet )
-{
- for( USHORT n = 0; n < MAXFILTER; ++n )
- if( aFilterDetect[n].IsFilter( rFltName ) )
- {
- aReaderWriter[n].GetWriter( rFltName, rBaseURL, xRet );
- break;
- }
-}
-
-SwRead GetReader( const String& rFltName )
-{
- SwRead pRead = 0;
- for( USHORT n = 0; n < MAXFILTER; ++n )
- if( aFilterDetect[n].IsFilter( rFltName ) )
- {
- pRead = aReaderWriter[n].GetReader();
- // fuer einige Reader noch eine Sonderbehandlung:
- if ( pRead )
- pRead->SetFltName( rFltName );
- break;
- }
- return pRead;
-}
-
-} // namespace SwReaderWriter
-
-/* */
-
-/////////////// die Storage Reader/Writer ////////////////////////////////
-
-/*void GetSw3Writer( const String&, const String& rBaseURL, WriterRef& xRet )
-{
- DBG_ERROR( "Shouldn't happen!");
- xRet = new Sw3Writer;
-}
-*/
-
-ULONG StgReader::OpenMainStream( SvStorageStreamRef& rRef, USHORT& rBuffSize )
-{
- ULONG nRet = ERR_SWG_READ_ERROR;
- ASSERT( pStg, "wo ist mein Storage?" );
- const SfxFilter* pFltr = SwIoSystem::GetFilterOfFormat( aFltName );
- if( pFltr )
- {
- rRef = pStg->OpenSotStream( SwIoSystem::GetSubStorageName( *pFltr ),
- STREAM_READ | STREAM_SHARE_DENYALL );
-
- if( rRef.Is() )
- {
- if( SVSTREAM_OK == rRef->GetError() )
- {
- USHORT nOld = rRef->GetBufferSize();
- rRef->SetBufferSize( rBuffSize );
- rBuffSize = nOld;
- nRet = 0;
- }
- else
- nRet = rRef->GetError();
- }
- }
- return nRet;
-}
-
-/* */
-/*
-ULONG Sw3Reader::Read( SwDoc &rDoc, SwPaM &rPam, const String & )
-{
- ULONG nRet;
- if( pStg && pIO )
- {
- // TRUE: Vorlagen ueberschreiben
- pIO->SetReadOptions( aOpt,TRUE );
- if( !bInsertMode )
- {
- // Im Laden-Modus darf der PaM-Content-Teil nicht
- // in den Textbereich zeigen (Nodes koennen geloescht werden)
- rPam.GetBound( TRUE ).nContent.Assign( 0, 0 );
- rPam.GetBound( FALSE ).nContent.Assign( 0, 0 );
- }
- nRet = pIO->Load( pStg, bInsertMode ? &rPam : 0 );
- aOpt.ResetAllFmtsOnly();
- pIO->SetReadOptions( aOpt, TRUE );
- }
- else
- {
- ASSERT( !this, "Sw3-Read ohne Storage und/oder IO-System" );
- nRet = ERR_SWG_READ_ERROR;
- }
- return nRet;
-}
-
- // read the sections of the document, which is equal to the medium.
- // returns the count of it
-USHORT Sw3Reader::GetSectionList( SfxMedium& rMedium,
- SvStrings& rStrings ) const
-{
- SvStorageRef aStg( rMedium.GetStorage() );
- const SfxFilter* pFlt = rMedium.GetFilter();
- ASSERT( pFlt && pFlt->GetVersion(),
- "Kein Filter oder Filter ohne FF-Version" );
- if( pFlt && pFlt->GetVersion() )
- aStg->SetVersion( (long)pFlt->GetVersion() );
-
- if( pIO )
- pIO->GetSectionList( &aStg, rStrings );
- return rStrings.Count();
- return 0;
-}
-*/
-
-/*ULONG Sw3Writer::WriteStorage()
-{
- ULONG nRet;
- if( pIO )
- {
- // der gleiche Storage -> Save, sonst SaveAs aufrufen
- if( !bSaveAs )
- nRet = pIO->Save( pOrigPam, bWriteAll );
- else
- nRet = pIO->SaveAs( pStg, pOrigPam, bWriteAll );
-
- pIO = 0; // nach dem Schreiben ist der Pointer ungueltig !!
- }
- else
- {
- ASSERT( !this, "Sw3-Writer ohne IO-System" )
- nRet = ERR_SWG_WRITE_ERROR;
- }
- return nRet;
-}
-
-ULONG Sw3Writer::WriteMedium( SfxMedium& )
-{
- DBG_ERROR( "Shouldn't be used currently!");
- return WriteStorage();
-}
-
-BOOL Sw3Writer::IsSw3Writer() const { return TRUE; }
-*/
-
-void Writer::SetPasswd( const String& ) {}
-
-
-void Writer::SetVersion( const String&, long ) {}
-
-
-BOOL Writer::IsStgWriter() const { return FALSE; }
-//BOOL Writer::IsSw3Writer() const { return FALSE; }
-
-BOOL StgWriter::IsStgWriter() const { return TRUE; }
-
-/* */
-
-
-
-BOOL SwReader::NeedsPasswd( const Reader& /*rOptions*/ )
-{
- BOOL bRes = FALSE;
- return bRes;
-}
-
-
-BOOL SwReader::CheckPasswd( const String& /*rPasswd*/, const Reader& /*rOptions*/ )
-{
- return TRUE;
-}
-
-
-/* */
-
-//-----------------------------------------------------------------------
-// Filter Flags lesen, wird von WW8 / W4W / EXCEL / LOTUS benutzt.
-//-----------------------------------------------------------------------
-
-/*
-<FilterFlags>
- <Excel_Lotus>
- <MinRow cfg:type="long">0</MinRow>
- <MaxRow cfg:type="long">0</MaxRow>
- <MinCol cfg:type="long">0</MinCol>
- <MaxCol cfg:type="long">0</MaxCol>
- </Excel_Lotus>
- <W4W>
- <W4WHD cfg:type="long">0</W4WHD>
- <W4WFT cfg:type="long">0</W4WFT>
- <W4W000 cfg:type="long">0</W4W000>
- </W4W>
- <WinWord>
- <WW1F cfg:type="long">0</WW1F>
- <WW cfg:type="long">0</WW>
- <WW8 cfg:type="long">0</WW8>
- <WWF cfg:type="long">0</WWF>
- <WWFA0 cfg:type="long">0</WWFA0>
- <WWFA1 cfg:type="long">0</WWFA1>
- <WWFA2 cfg:type="long">0</WWFA2>
- <WWFB0 cfg:type="long">0</WWFB0>
- <WWFB1 cfg:type="long">0</WWFB1>
- <WWFB2 cfg:type="long">0</WWFB2>
- <WWFLX cfg:type="long">0</WWFLX>
- <WWFLY cfg:type="long">0</WWFLY>
- <WWFT cfg:type="long">0</WWFT>
- <WWWR cfg:type="long">0</WWWR>
- </WinWord>
- <Writer>
- <SW3Imp cfg:type="long">0</SW3Imp>
- </Writer>
-</FilterFlags>
-*/
-
-#define FILTER_OPTION_ROOT String::CreateFromAscii( \
- RTL_CONSTASCII_STRINGPARAM( "Office.Writer/FilterFlags" ) )
-
-SwFilterOptions::SwFilterOptions( sal_uInt16 nCnt, const sal_Char** ppNames,
- sal_uInt32* pValues )
- : ConfigItem( FILTER_OPTION_ROOT )
-{
- GetValues( nCnt, ppNames, pValues );
-}
-
-void SwFilterOptions::GetValues( sal_uInt16 nCnt, const sal_Char** ppNames,
- sal_uInt32* pValues )
-{
- Sequence<OUString> aNames( nCnt );
- OUString* pNames = aNames.getArray();
- USHORT n;
-
- for( n = 0; n < nCnt; ++n )
- pNames[ n ] = OUString::createFromAscii( ppNames[ n ] );
- Sequence<Any> aValues = GetProperties( aNames );
-
- if( nCnt == aValues.getLength() )
- {
- const Any* pAnyValues = aValues.getConstArray();
- for( n = 0; n < nCnt; ++n )
- pValues[ n ] = pAnyValues[ n ].hasValue()
- ? *(sal_uInt32*)pAnyValues[ n ].getValue()
- : 0;
- }
- else
- for( n = 0; n < nCnt; ++n )
- pValues[ n ] = 0;
-}
-
-void SwFilterOptions::Commit() {}
-void SwFilterOptions::Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& ) {}
-
-/* */
-
-
-void StgReader::SetFltName( const String& rFltNm )
-{
- if( SW_STORAGE_READER & GetReaderType() )
- aFltName = rFltNm;
-}
-
-
-/* */
-
-SwRelNumRuleSpaces::SwRelNumRuleSpaces( SwDoc& rDoc, BOOL bNDoc )
- : bNewDoc( bNDoc )
-{
- pNumRuleTbl = new SwNumRuleTbl( 8, 8 );
- if( !bNDoc )
- pNumRuleTbl->Insert( &rDoc.GetNumRuleTbl(), 0 );
-}
-
-SwRelNumRuleSpaces::~SwRelNumRuleSpaces()
-{
- if( pNumRuleTbl )
- {
- pNumRuleTbl->Remove( 0, pNumRuleTbl->Count() );
- delete pNumRuleTbl;
- }
-}
-
-void SwRelNumRuleSpaces::SetNumRelSpaces( SwDoc& rDoc )
-{
- const SwNumRuleTbl* pRuleTbl = NULL;
-
- if( !bNewDoc )
- {
- // jetzt alle schon vorhanden NumRules aus dem Array entfernen,
- // damit nur die neuen angepasst werden
- SwNumRuleTbl aNumRuleTbl;
- aNumRuleTbl.Insert( pNumRuleTbl, 0 );
- pNumRuleTbl->Remove( 0, pNumRuleTbl->Count() );
- const SwNumRuleTbl& rRuleTbl = rDoc.GetNumRuleTbl();
- SwNumRule* pRule;
-
- for( USHORT n = 0; n < rRuleTbl.Count(); ++n )
- if( USHRT_MAX == aNumRuleTbl.GetPos( ( pRule = rRuleTbl[ n ] )))
- // war noch nicht vorhanden, also neu
- pNumRuleTbl->Insert( pRule, pNumRuleTbl->Count() );
-
- aNumRuleTbl.Remove( 0, aNumRuleTbl.Count() );
-
- pRuleTbl = pNumRuleTbl;
- }
- else
- {
- pRuleTbl = &rDoc.GetNumRuleTbl();
- }
-
- if( pRuleTbl )
- {
- for( USHORT n = pRuleTbl->Count(); n; )
- {
- SwNumRule* pRule = (*pRuleTbl)[ --n ];
- // Rule noch gueltig und am Doc vorhanden?
- if( USHRT_MAX != rDoc.GetNumRuleTbl().GetPos( pRule ))
- {
- // --> OD 2008-02-19 #refactorlists#
-// SwNumRuleInfo aUpd( pRule->GetName() );
-// aUpd.MakeList( rDoc );
-
-// // bei allen nmumerierten Absaetzen vom linken Rand
-// // den absoluten Wert des NumFormates abziehen
-// for( ULONG nUpdPos = 0; nUpdPos < aUpd.GetList().Count();
-// ++nUpdPos )
-// {
-// SwTxtNode* pNd = aUpd.GetList().GetObject( nUpdPos );
-// SetNumLSpace( *pNd, *pRule );
-// }
- SwNumRule::tTxtNodeList aTxtNodeList;
- pRule->GetTxtNodeList( aTxtNodeList );
- for ( SwNumRule::tTxtNodeList::iterator aIter = aTxtNodeList.begin();
- aIter != aTxtNodeList.end(); ++aIter )
- {
- SwTxtNode* pNd = *aIter;
- SetNumLSpace( *pNd, *pRule );
- }
- // <--
- }
- }
- }
-
- if( pNumRuleTbl )
- {
- pNumRuleTbl->Remove( 0, pNumRuleTbl->Count() );
- delete pNumRuleTbl, pNumRuleTbl = 0;
- }
-
- if( bNewDoc )
- {
- SetOultineRelSpaces( SwNodeIndex( rDoc.GetNodes() ),
- SwNodeIndex( rDoc.GetNodes().GetEndOfContent()));
- }
-}
-
-void SwRelNumRuleSpaces::SetOultineRelSpaces( const SwNodeIndex& rStt,
- const SwNodeIndex& rEnd )
-{
- SwDoc* pDoc = rStt.GetNode().GetDoc();
- const SwOutlineNodes& rOutlNds = pDoc->GetNodes().GetOutLineNds();
- if( rOutlNds.Count() )
- {
- USHORT nPos;
- rOutlNds.Seek_Entry( &rStt.GetNode(), &nPos );
- for( ; nPos < rOutlNds.Count() &&
- rOutlNds[ nPos ]->GetIndex() < rEnd.GetIndex(); ++nPos )
- {
- SwTxtNode* pNd = rOutlNds[ nPos ]->GetTxtNode();
- if( pNd->IsOutline() && !pNd->GetNumRule() )
- SetNumLSpace( *pNd, *pDoc->GetOutlineNumRule() );
- }
- }
-}
-
-void SwRelNumRuleSpaces::SetNumLSpace( SwTxtNode& rNd, const SwNumRule& rRule )
-{
- BOOL bOutlineRule = OUTLINE_RULE == rRule.GetRuleType();
- // --> OD 2005-11-18 #128056#
- // correction of refactoring done by cws swnumtree:
- // - assure a correct level for retrieving numbering format.
-// BYTE nLvl = rNd.GetLevel();
- BYTE nLvl = 0;
- if ( rNd.GetActualListLevel() >= 0 && rNd.GetActualListLevel() < MAXLEVEL )
- {
- nLvl = static_cast< BYTE >(rNd.GetActualListLevel());
- }
- // <--
- const SwNumFmt& rFmt = rRule.Get( nLvl );
- const SvxLRSpaceItem& rLR = rNd.GetSwAttrSet().GetLRSpace();
-
- SvxLRSpaceItem aLR( rLR );
- aLR.SetTxtFirstLineOfst( 0 );
-
- // sagt der Node, das die Numerierung den Wert vorgibt?
- if( !bOutlineRule && rNd.IsSetNumLSpace() )
- aLR.SetTxtLeft( 0 );
- else
- {
- long nLeft = rFmt.GetAbsLSpace(), nParaLeft = rLR.GetTxtLeft();
- if( 0 < rLR.GetTxtFirstLineOfst() )
- nParaLeft += rLR.GetTxtFirstLineOfst();
- else if( nParaLeft >= nLeft )
- // #82963#/#82962#: set correct paragraph indent
- nParaLeft -= nLeft;
- else
- //#83154#, Don't think any of the older #80856# bugfix code is
- //relevent anymore.
- nParaLeft = rLR.GetTxtLeft()+rLR.GetTxtFirstLineOfst();
- aLR.SetTxtLeft( nParaLeft );
- }
-
- if( aLR.GetTxtLeft() != rLR.GetTxtLeft() )
- {
- //bevor rLR geloescht wird!
- long nOffset = rLR.GetTxtLeft() - aLR.GetTxtLeft();
- rNd.SetAttr( aLR );
-
- // Tabs anpassen !!
- const SfxPoolItem* pItem;
- if( SFX_ITEM_SET == rNd.GetSwAttrSet().GetItemState(
- RES_PARATR_TABSTOP, TRUE, &pItem ))
- {
- SvxTabStopItem aTStop( *(SvxTabStopItem*)pItem );
- for( USHORT n = 0; n < aTStop.Count(); ++n )
- {
- SvxTabStop& rTab = (SvxTabStop&)aTStop[ n ];
- if( SVX_TAB_ADJUST_DEFAULT != rTab.GetAdjustment() )
- {
- if( !rTab.GetTabPos() )
- {
- aTStop.Remove( n );
- --n;
- }
- else
- rTab.GetTabPos() += nOffset;
- }
- }
- rNd.SetAttr( aTStop );
- }
- }
-}
-
-/* */
-
-
-void CalculateFlySize(SfxItemSet& rFlySet, const SwNodeIndex& rAnchor,
- SwTwips nPageWidth)
-{
- const SfxPoolItem* pItem = 0;
- if( SFX_ITEM_SET != rFlySet.GetItemState( RES_FRM_SIZE, TRUE, &pItem ) ||
- MINFLY > ((SwFmtFrmSize*)pItem)->GetWidth() )
- {
- SwFmtFrmSize aSz((SwFmtFrmSize&)rFlySet.Get(RES_FRM_SIZE, TRUE));
- if (pItem)
- aSz = (SwFmtFrmSize&)(*pItem);
-
- SwTwips nWidth;
- // dann die Breite des Flys selbst bestimmen. Ist eine Tabelle
- // defininiert, dann benutze deren Breite, sonst die Breite der
- // Seite
- const SwTableNode* pTblNd = rAnchor.GetNode().FindTableNode();
- if( pTblNd )
- nWidth = pTblNd->GetTable().GetFrmFmt()->GetFrmSize().GetWidth();
- else
- nWidth = nPageWidth;
-
- const SwNodeIndex* pSttNd = ((SwFmtCntnt&)rFlySet.Get( RES_CNTNT )).
- GetCntntIdx();
- if( pSttNd )
- {
- BOOL bOnlyOneNode = TRUE;
- ULONG nMinFrm = 0;
- ULONG nMaxFrm = 0;
- SwTxtNode* pFirstTxtNd = 0;
- SwNodeIndex aIdx( *pSttNd, 1 );
- SwNodeIndex aEnd( *pSttNd->GetNode().EndOfSectionNode() );
- while( aIdx < aEnd )
- {
- SwTxtNode *pTxtNd = aIdx.GetNode().GetTxtNode();
- if( pTxtNd )
- {
- if( !pFirstTxtNd )
- pFirstTxtNd = pTxtNd;
- else if( pFirstTxtNd != pTxtNd )
- {
- // forget it
- bOnlyOneNode = FALSE;
- break;
- }
-
- ULONG nAbsMinCnts;
- pTxtNd->GetMinMaxSize( aIdx.GetIndex(), nMinFrm,
- nMaxFrm, nAbsMinCnts );
- }
- aIdx++;
- }
-
- if( bOnlyOneNode )
- {
- if( nMinFrm < MINLAY && pFirstTxtNd )
- {
- // if the first node dont contained any content, then
- // insert one char in it calc again and delete once again
- SwIndex aNdIdx( pFirstTxtNd );
- pFirstTxtNd->InsertText( String::CreateFromAscii(
- RTL_CONSTASCII_STRINGPARAM( "MM" )), aNdIdx );
- ULONG nAbsMinCnts;
- pFirstTxtNd->GetMinMaxSize( pFirstTxtNd->GetIndex(),
- nMinFrm, nMaxFrm, nAbsMinCnts );
- aNdIdx -= 2;
- pFirstTxtNd->EraseText( aNdIdx, 2 );
- }
-
- // Umrandung und Abstand zum Inhalt beachten
- const SvxBoxItem& rBoxItem = (SvxBoxItem&)rFlySet.Get( RES_BOX );
- USHORT nLine = BOX_LINE_LEFT;
- for( int i = 0; i < 2; ++i )
- {
- const SvxBorderLine* pLn = rBoxItem.GetLine( nLine );
- if( pLn )
- {
- USHORT nWidthTmp = pLn->GetOutWidth() + pLn->GetInWidth();
- nWidthTmp = nWidthTmp + rBoxItem.GetDistance( nLine );
- nMinFrm += nWidthTmp;
- nMaxFrm += nWidthTmp;
- }
- nLine = BOX_LINE_RIGHT;
- }
-
- // Mindestbreite fuer Inhalt einhalten
- if( nMinFrm < MINLAY )
- nMinFrm = MINLAY;
- if( nMaxFrm < MINLAY )
- nMaxFrm = MINLAY;
-
- if( nWidth > (USHORT)nMaxFrm )
- nWidth = nMaxFrm;
- else if( nWidth > (USHORT)nMinFrm )
- nWidth = nMinFrm;
- }
- }
-
- if( MINFLY > nWidth )
- nWidth = MINFLY;
-
- aSz.SetWidth( nWidth );
- if( MINFLY > aSz.GetHeight() )
- aSz.SetHeight( MINFLY );
- rFlySet.Put( aSz );
- }
- else if( MINFLY > ((SwFmtFrmSize*)pItem)->GetHeight() )
- {
- SwFmtFrmSize aSz( *(SwFmtFrmSize*)pItem );
- aSz.SetHeight( MINFLY );
- rFlySet.Put( aSz );
- }
-}
-
-/* */
-struct CharSetNameMap
-{
- rtl_TextEncoding eCode;
- const sal_Char* pName;
-};
-
-const CharSetNameMap *GetCharSetNameMap()
-{
- static const CharSetNameMap aMapArr[] =
- {
-# define IMPLENTRY(X) { RTL_TEXTENCODING_##X, "" #X "" }
- IMPLENTRY(DONTKNOW),
- IMPLENTRY(MS_1252),
- IMPLENTRY(APPLE_ROMAN),
- IMPLENTRY(IBM_437),
- IMPLENTRY(IBM_850),
- IMPLENTRY(IBM_860),
- IMPLENTRY(IBM_861),
- IMPLENTRY(IBM_863),
- IMPLENTRY(IBM_865),
- IMPLENTRY(SYMBOL),
- IMPLENTRY(ASCII_US),
- IMPLENTRY(ISO_8859_1),
- IMPLENTRY(ISO_8859_2),
- IMPLENTRY(ISO_8859_3),
- IMPLENTRY(ISO_8859_4),
- IMPLENTRY(ISO_8859_5),
- IMPLENTRY(ISO_8859_6),
- IMPLENTRY(ISO_8859_7),
- IMPLENTRY(ISO_8859_8),
- IMPLENTRY(ISO_8859_9),
- IMPLENTRY(ISO_8859_14),
- IMPLENTRY(ISO_8859_15),
- IMPLENTRY(IBM_737),
- IMPLENTRY(IBM_775),
- IMPLENTRY(IBM_852),
- IMPLENTRY(IBM_855),
- IMPLENTRY(IBM_857),
- IMPLENTRY(IBM_862),
- IMPLENTRY(IBM_864),
- IMPLENTRY(IBM_866),
- IMPLENTRY(IBM_869),
- IMPLENTRY(MS_874),
- IMPLENTRY(MS_1250),
- IMPLENTRY(MS_1251),
- IMPLENTRY(MS_1253),
- IMPLENTRY(MS_1254),
- IMPLENTRY(MS_1255),
- IMPLENTRY(MS_1256),
- IMPLENTRY(MS_1257),
- IMPLENTRY(MS_1258),
- IMPLENTRY(APPLE_ARABIC),
- IMPLENTRY(APPLE_CENTEURO),
- IMPLENTRY(APPLE_CROATIAN),
- IMPLENTRY(APPLE_CYRILLIC),
- IMPLENTRY(APPLE_DEVANAGARI),
- IMPLENTRY(APPLE_FARSI),
- IMPLENTRY(APPLE_GREEK),
- IMPLENTRY(APPLE_GUJARATI),
- IMPLENTRY(APPLE_GURMUKHI),
- IMPLENTRY(APPLE_HEBREW),
- IMPLENTRY(APPLE_ICELAND),
- IMPLENTRY(APPLE_ROMANIAN),
- IMPLENTRY(APPLE_THAI),
- IMPLENTRY(APPLE_TURKISH),
- IMPLENTRY(APPLE_UKRAINIAN),
- IMPLENTRY(APPLE_CHINSIMP),
- IMPLENTRY(APPLE_CHINTRAD),
- IMPLENTRY(APPLE_JAPANESE),
- IMPLENTRY(APPLE_KOREAN),
- IMPLENTRY(MS_932),
- IMPLENTRY(MS_936),
- IMPLENTRY(MS_949),
- IMPLENTRY(MS_950),
- IMPLENTRY(SHIFT_JIS),
- IMPLENTRY(GB_2312),
- IMPLENTRY(GBT_12345),
- IMPLENTRY(GBK),
- IMPLENTRY(BIG5),
- IMPLENTRY(EUC_JP),
- IMPLENTRY(EUC_CN),
- IMPLENTRY(EUC_TW),
- IMPLENTRY(ISO_2022_JP),
- IMPLENTRY(ISO_2022_CN),
- IMPLENTRY(KOI8_R),
- IMPLENTRY(KOI8_U),
- IMPLENTRY(UTF7),
- IMPLENTRY(UTF8),
- IMPLENTRY(ISO_8859_10),
- IMPLENTRY(ISO_8859_13),
- IMPLENTRY(EUC_KR),
- IMPLENTRY(ISO_2022_KR),
- IMPLENTRY(JIS_X_0201),
- IMPLENTRY(JIS_X_0208),
- IMPLENTRY(JIS_X_0212),
- IMPLENTRY(MS_1361),
- IMPLENTRY(GB_18030),
- IMPLENTRY(BIG5_HKSCS),
- IMPLENTRY(TIS_620),
- IMPLENTRY(PT154),
- IMPLENTRY(UCS4),
- IMPLENTRY(UCS2),
- IMPLENTRY(UNICODE),
- {0,0} //Last
- };
- return &aMapArr[0];
-}
-/*
- Get a rtl_TextEncoding from its name
- */
-rtl_TextEncoding CharSetFromName(const String& rChrSetStr)
-{
- const CharSetNameMap *pStart = GetCharSetNameMap();
- rtl_TextEncoding nRet = pStart->eCode;
-
- for(const CharSetNameMap *pMap = pStart; pMap->pName; ++pMap)
- {
- if(rChrSetStr.EqualsIgnoreCaseAscii(pMap->pName))
- {
- nRet = pMap->eCode;
- break;
- }
- }
-
- ASSERT(nRet != pStart->eCode, "TXT: That was an unknown language!");
-
- return nRet;
-}
-
-
-/*
- Get the String name of an rtl_TextEncoding
- */
-String NameFromCharSet(rtl_TextEncoding nChrSet)
-{
- const CharSetNameMap *pStart = GetCharSetNameMap();
- const char *pRet = pStart->pName;
-
- for(const CharSetNameMap *pMap = pStart; pMap->pName; ++pMap)
- {
- if (nChrSet == pMap->eCode)
- {
- pRet = pMap->pName;
- break;
- }
- }
-
- ASSERT(pRet != pStart->pName, "TXT: That was an unknown language!");
-
- return String::CreateFromAscii(pRet);
-}
-
-// for the automatic conversion (mail/news/...)
-// The user data contains the options for the ascii import/export filter.
-// The format is:
-// 1. CharSet - as ascii chars
-// 2. LineEnd - as CR/LR/CRLF
-// 3. Fontname
-// 4. Language
-// the delimetercharacter is ","
-//
-
-void SwAsciiOptions::ReadUserData( const String& rStr )
-{
- xub_StrLen nToken = 0;
- USHORT nCnt = 0;
- String sToken;
- do {
- if( 0 != (sToken = rStr.GetToken( 0, ',', nToken )).Len() )
- {
- switch( nCnt )
- {
- case 0: // CharSet
- eCharSet = CharSetFromName(sToken);
- break;
- case 1: // LineEnd
- if( sToken.EqualsIgnoreCaseAscii( "CRLF" ))
- eCRLF_Flag = LINEEND_CRLF;
- else if( sToken.EqualsIgnoreCaseAscii( "LF" ))
- eCRLF_Flag = LINEEND_LF;
- else
- eCRLF_Flag = LINEEND_CR;
- break;
- case 2: // fontname
- sFont = sToken;
- break;
- case 3: // Language
- nLanguage = MsLangId::convertIsoStringToLanguage( sToken );
- break;
- }
- }
- ++nCnt;
- } while( STRING_NOTFOUND != nToken );
-}
-
-void SwAsciiOptions::WriteUserData( String& rStr )
-{
- // 1. charset
- rStr = NameFromCharSet(eCharSet);
- rStr += ',';
-
- // 2. LineEnd
- switch(eCRLF_Flag)
- {
- case LINEEND_CRLF:
- rStr.AppendAscii( "CRLF" );
- break;
- case LINEEND_CR:
- rStr.AppendAscii( "CR" );
- break;
- case LINEEND_LF:
- rStr.AppendAscii( "LF" );
- break;
- }
- rStr += ',';
-
- // 3. Fontname
- rStr += sFont;
- rStr += ',';
-
- // 4. Language
- if (nLanguage)
- {
- rtl::OUString sTmp = MsLangId::convertLanguageToIsoString( nLanguage );
- rStr += (String)sTmp;
- }
- rStr += ',';
-}
-
-extern "C" { static void SAL_CALL thisModule() {} }
-
-static oslGenericFunction GetMswordLibSymbol( const char *pSymbol )
-{
- static ::osl::Module aModule;
- if ( aModule.is() ||
- aModule.loadRelative( &thisModule,
- ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SVLIBRARY( "msword" ) ) ) ) )
- {
- return aModule.getFunctionSymbol( ::rtl::OUString::createFromAscii( pSymbol ) );
- }
-
- return NULL;
-}
-
-Reader* GetRTFReader()
-{
- FnGetReader pFunction = reinterpret_cast<FnGetReader>( GetMswordLibSymbol( "ImportRTF" ) );
-
- if ( pFunction )
- return (*pFunction)();
-
- return NULL;
-}
-
-void GetRTFWriter( const String& rFltName, const String& rBaseURL, WriterRef& xRet )
-{
- FnGetWriter pFunction = reinterpret_cast<FnGetWriter>( GetMswordLibSymbol( "ExportRTF" ) );
-
- if ( pFunction )
- (*pFunction)( rFltName, rBaseURL, xRet );
- else
- xRet = WriterRef(0);
-}
-
-Reader* GetWW8Reader()
-{
- FnGetReader pFunction = reinterpret_cast<FnGetReader>( GetMswordLibSymbol( "ImportDOC" ) );
-
- if ( pFunction )
- return (*pFunction)();
-
- return NULL;
-}
-
-void GetWW8Writer( const String& rFltName, const String& rBaseURL, WriterRef& xRet )
-{
- FnGetWriter pFunction = reinterpret_cast<FnGetWriter>( GetMswordLibSymbol( "ExportDOC" ) );
-
- if ( pFunction )
- (*pFunction)( rFltName, rBaseURL, xRet );
- else
- xRet = WriterRef(0);
-}
-
-typedef ULONG ( __LOADONCALLAPI *SaveOrDel )( SfxObjectShell&, SotStorage&, BOOL, const String& );
-typedef ULONG ( __LOADONCALLAPI *GetSaveWarning )( SfxObjectShell& );
-
-ULONG SaveOrDelMSVBAStorage( SfxObjectShell& rDoc, SotStorage& rStor, BOOL bSaveInto, const String& rStorageName )
-{
- SaveOrDel pFunction = reinterpret_cast<SaveOrDel>( GetMswordLibSymbol( "SaveOrDelMSVBAStorage_ww8" ) );
- if( pFunction )
- return pFunction( rDoc, rStor, bSaveInto, rStorageName );
- return ERRCODE_NONE;
-}
-
-ULONG GetSaveWarningOfMSVBAStorage( SfxObjectShell &rDocS )
-{
- GetSaveWarning pFunction = reinterpret_cast<GetSaveWarning>( GetMswordLibSymbol( "GetSaveWarningOfMSVBAStorage_ww8" ) );
- if( pFunction )
- return pFunction( rDocS );
- return ERRCODE_NONE;
-}
-
-
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sw.hxx"
+#define _SVSTDARR_STRINGS
+
+#include <string.h>
+#include <stdio.h> // sscanf
+#include <hintids.hxx>
+#include <i18npool/lang.h>
+#include <i18npool/mslangid.hxx>
+#include <vcl/msgbox.hxx>
+#include <svtools/parhtml.hxx>
+#include <svl/svstdarr.hxx>
+#include <sot/storage.hxx>
+#include <sot/clsids.hxx>
+#include <sfx2/app.hxx>
+#include <sfx2/docfilt.hxx>
+#include <sfx2/fcontnr.hxx>
+#include <sfx2/docfile.hxx>
+#include <editeng/lrspitem.hxx>
+#include <editeng/tstpitem.hxx>
+#include <doc.hxx>
+#include <docary.hxx>
+#include <pam.hxx>
+#include <shellio.hxx>
+#include <errhdl.hxx>
+#include <docsh.hxx>
+#include <wdocsh.hxx>
+#include <fltini.hxx>
+#include <hints.hxx>
+#include <frmatr.hxx>
+#include <fmtfsize.hxx>
+#include <swtable.hxx>
+#include <fmtcntnt.hxx>
+#include <editeng/boxitem.hxx>
+#include <frmatr.hxx>
+#include <frmfmt.hxx>
+#include <numrule.hxx>
+#include <ndtxt.hxx>
+#include <swfltopt.hxx>
+#include <swerror.h>
+#include <osl/module.hxx>
+#include <comphelper/processfactory.hxx>
+#include <comphelper/componentcontext.hxx>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/util/XMacroExpander.hpp>
+#include <rtl/uri.hxx>
+#include <tools/svlibrary.hxx>
+
+using namespace utl;
+using rtl::OUString;
+using namespace com::sun::star::uno;
+using namespace com::sun::star;
+
+SwRead ReadAscii = 0, /*ReadSwg = 0, ReadSw3 = 0,*/
+ ReadHTML = 0, ReadXML = 0;
+
+Reader* GetRTFReader();
+Reader* GetWW8Reader();
+
+// Note: if editing, please don't forget to modify also the enum
+// ReaderWriterEnum and aFilterDetect in shellio.hxx
+SwReaderWriterEntry aReaderWriter[] =
+{
+ SwReaderWriterEntry( &::GetRTFReader, &::GetRTFWriter, TRUE ),
+ SwReaderWriterEntry( 0, &::GetASCWriter, FALSE ),
+ SwReaderWriterEntry( &::GetWW8Reader, &::GetWW8Writer, TRUE ),
+ SwReaderWriterEntry( &::GetWW8Reader, &::GetWW8Writer, TRUE ),
+ SwReaderWriterEntry( &::GetRTFReader, &::GetRTFWriter, TRUE ),
+ SwReaderWriterEntry( 0, &::GetHTMLWriter, TRUE ),
+ SwReaderWriterEntry( 0, 0, TRUE ),
+ SwReaderWriterEntry( &::GetWW8Reader, 0, TRUE ),
+ SwReaderWriterEntry( 0, &::GetXMLWriter, TRUE ),
+ SwReaderWriterEntry( 0, &::GetASCWriter, TRUE ),
+ SwReaderWriterEntry( 0, &::GetASCWriter, TRUE )
+};
+
+Reader* SwReaderWriterEntry::GetReader()
+{
+ if ( pReader )
+ return pReader;
+ else if ( fnGetReader )
+ {
+ pReader = (*fnGetReader)();
+ return pReader;
+ }
+ return NULL;
+}
+
+void SwReaderWriterEntry::GetWriter( const String& rNm, const String& rBaseURL, WriterRef& xWrt ) const
+{
+ if ( fnGetWriter )
+ (*fnGetWriter)( rNm, rBaseURL, xWrt );
+ else
+ xWrt = WriterRef(0);
+}
+
+/*SwRead SwGetReaderSw3() // SW_DLLPUBLIC
+{
+ return ReadSw3;
+}
+*/
+SwRead SwGetReaderXML() // SW_DLLPUBLIC
+{
+ return ReadXML;
+}
+
+bool IsDocShellRegistered()
+{
+ return 0 != SwDocShell::_GetInterface();
+}
+
+inline void _SetFltPtr( USHORT rPos, SwRead pReader )
+{
+ aReaderWriter[ rPos ].pReader = pReader;
+}
+
+void _InitFilter()
+{
+ _SetFltPtr( READER_WRITER_BAS, (ReadAscii = new AsciiReader) );
+ _SetFltPtr( READER_WRITER_HTML, (ReadHTML = new HTMLReader) );
+ _SetFltPtr( READER_WRITER_WW1, new WW1Reader );
+ _SetFltPtr( READER_WRITER_XML, (ReadXML = new XMLReader) );
+
+#ifdef NEW_WW97_EXPORT
+ aReaderWriter[ READER_WRITER_WW1 ].fnGetWriter = &::GetWW8Writer;
+ aReaderWriter[ READER_WRITER_WW5 ].fnGetWriter = &::GetWW8Writer;
+#endif
+
+ _SetFltPtr( READER_WRITER_TEXT_DLG, ReadAscii );
+ _SetFltPtr( READER_WRITER_TEXT, ReadAscii );
+}
+
+void _FinitFilter()
+{
+ // die Reader vernichten
+ for( USHORT n = 0; n < MAXFILTER; ++n )
+ {
+ SwReaderWriterEntry& rEntry = aReaderWriter[n];
+ if( rEntry.bDelReader && rEntry.pReader )
+ delete rEntry.pReader, rEntry.pReader = NULL;
+ }
+}
+
+
+/* */
+
+namespace SwReaderWriter {
+
+Reader* GetReader( ReaderWriterEnum eReader )
+{
+ return aReaderWriter[eReader].GetReader();
+}
+
+void GetWriter( const String& rFltName, const String& rBaseURL, WriterRef& xRet )
+{
+ for( USHORT n = 0; n < MAXFILTER; ++n )
+ if( aFilterDetect[n].IsFilter( rFltName ) )
+ {
+ aReaderWriter[n].GetWriter( rFltName, rBaseURL, xRet );
+ break;
+ }
+}
+
+SwRead GetReader( const String& rFltName )
+{
+ SwRead pRead = 0;
+ for( USHORT n = 0; n < MAXFILTER; ++n )
+ if( aFilterDetect[n].IsFilter( rFltName ) )
+ {
+ pRead = aReaderWriter[n].GetReader();
+ // fuer einige Reader noch eine Sonderbehandlung:
+ if ( pRead )
+ pRead->SetFltName( rFltName );
+ break;
+ }
+ return pRead;
+}
+
+} // namespace SwReaderWriter
+
+/* */
+
+/////////////// die Storage Reader/Writer ////////////////////////////////
+
+/*void GetSw3Writer( const String&, const String& rBaseURL, WriterRef& xRet )
+{
+ DBG_ERROR( "Shouldn't happen!");
+ xRet = new Sw3Writer;
+}
+*/
+
+ULONG StgReader::OpenMainStream( SvStorageStreamRef& rRef, USHORT& rBuffSize )
+{
+ ULONG nRet = ERR_SWG_READ_ERROR;
+ ASSERT( pStg, "wo ist mein Storage?" );
+ const SfxFilter* pFltr = SwIoSystem::GetFilterOfFormat( aFltName );
+ if( pFltr )
+ {
+ rRef = pStg->OpenSotStream( SwIoSystem::GetSubStorageName( *pFltr ),
+ STREAM_READ | STREAM_SHARE_DENYALL );
+
+ if( rRef.Is() )
+ {
+ if( SVSTREAM_OK == rRef->GetError() )
+ {
+ USHORT nOld = rRef->GetBufferSize();
+ rRef->SetBufferSize( rBuffSize );
+ rBuffSize = nOld;
+ nRet = 0;
+ }
+ else
+ nRet = rRef->GetError();
+ }
+ }
+ return nRet;
+}
+
+/* */
+/*
+ULONG Sw3Reader::Read( SwDoc &rDoc, SwPaM &rPam, const String & )
+{
+ ULONG nRet;
+ if( pStg && pIO )
+ {
+ // TRUE: Vorlagen ueberschreiben
+ pIO->SetReadOptions( aOpt,TRUE );
+ if( !bInsertMode )
+ {
+ // Im Laden-Modus darf der PaM-Content-Teil nicht
+ // in den Textbereich zeigen (Nodes koennen geloescht werden)
+ rPam.GetBound( TRUE ).nContent.Assign( 0, 0 );
+ rPam.GetBound( FALSE ).nContent.Assign( 0, 0 );
+ }
+ nRet = pIO->Load( pStg, bInsertMode ? &rPam : 0 );
+ aOpt.ResetAllFmtsOnly();
+ pIO->SetReadOptions( aOpt, TRUE );
+ }
+ else
+ {
+ ASSERT( !this, "Sw3-Read ohne Storage und/oder IO-System" );
+ nRet = ERR_SWG_READ_ERROR;
+ }
+ return nRet;
+}
+
+ // read the sections of the document, which is equal to the medium.
+ // returns the count of it
+USHORT Sw3Reader::GetSectionList( SfxMedium& rMedium,
+ SvStrings& rStrings ) const
+{
+ SvStorageRef aStg( rMedium.GetStorage() );
+ const SfxFilter* pFlt = rMedium.GetFilter();
+ ASSERT( pFlt && pFlt->GetVersion(),
+ "Kein Filter oder Filter ohne FF-Version" );
+ if( pFlt && pFlt->GetVersion() )
+ aStg->SetVersion( (long)pFlt->GetVersion() );
+
+ if( pIO )
+ pIO->GetSectionList( &aStg, rStrings );
+ return rStrings.Count();
+ return 0;
+}
+*/
+
+/*ULONG Sw3Writer::WriteStorage()
+{
+ ULONG nRet;
+ if( pIO )
+ {
+ // der gleiche Storage -> Save, sonst SaveAs aufrufen
+ if( !bSaveAs )
+ nRet = pIO->Save( pOrigPam, bWriteAll );
+ else
+ nRet = pIO->SaveAs( pStg, pOrigPam, bWriteAll );
+
+ pIO = 0; // nach dem Schreiben ist der Pointer ungueltig !!
+ }
+ else
+ {
+ ASSERT( !this, "Sw3-Writer ohne IO-System" )
+ nRet = ERR_SWG_WRITE_ERROR;
+ }
+ return nRet;
+}
+
+ULONG Sw3Writer::WriteMedium( SfxMedium& )
+{
+ DBG_ERROR( "Shouldn't be used currently!");
+ return WriteStorage();
+}
+
+BOOL Sw3Writer::IsSw3Writer() const { return TRUE; }
+*/
+
+void Writer::SetPasswd( const String& ) {}
+
+
+void Writer::SetVersion( const String&, long ) {}
+
+
+BOOL Writer::IsStgWriter() const { return FALSE; }
+//BOOL Writer::IsSw3Writer() const { return FALSE; }
+
+BOOL StgWriter::IsStgWriter() const { return TRUE; }
+
+/* */
+
+
+
+BOOL SwReader::NeedsPasswd( const Reader& /*rOptions*/ )
+{
+ BOOL bRes = FALSE;
+ return bRes;
+}
+
+
+BOOL SwReader::CheckPasswd( const String& /*rPasswd*/, const Reader& /*rOptions*/ )
+{
+ return TRUE;
+}
+
+
+/* */
+
+//-----------------------------------------------------------------------
+// Filter Flags lesen, wird von WW8 / W4W / EXCEL / LOTUS benutzt.
+//-----------------------------------------------------------------------
+
+/*
+<FilterFlags>
+ <Excel_Lotus>
+ <MinRow cfg:type="long">0</MinRow>
+ <MaxRow cfg:type="long">0</MaxRow>
+ <MinCol cfg:type="long">0</MinCol>
+ <MaxCol cfg:type="long">0</MaxCol>
+ </Excel_Lotus>
+ <W4W>
+ <W4WHD cfg:type="long">0</W4WHD>
+ <W4WFT cfg:type="long">0</W4WFT>
+ <W4W000 cfg:type="long">0</W4W000>
+ </W4W>
+ <WinWord>
+ <WW1F cfg:type="long">0</WW1F>
+ <WW cfg:type="long">0</WW>
+ <WW8 cfg:type="long">0</WW8>
+ <WWF cfg:type="long">0</WWF>
+ <WWFA0 cfg:type="long">0</WWFA0>
+ <WWFA1 cfg:type="long">0</WWFA1>
+ <WWFA2 cfg:type="long">0</WWFA2>
+ <WWFB0 cfg:type="long">0</WWFB0>
+ <WWFB1 cfg:type="long">0</WWFB1>
+ <WWFB2 cfg:type="long">0</WWFB2>
+ <WWFLX cfg:type="long">0</WWFLX>
+ <WWFLY cfg:type="long">0</WWFLY>
+ <WWFT cfg:type="long">0</WWFT>
+ <WWWR cfg:type="long">0</WWWR>
+ </WinWord>
+ <Writer>
+ <SW3Imp cfg:type="long">0</SW3Imp>
+ </Writer>
+</FilterFlags>
+*/
+
+#define FILTER_OPTION_ROOT String::CreateFromAscii( \
+ RTL_CONSTASCII_STRINGPARAM( "Office.Writer/FilterFlags" ) )
+
+SwFilterOptions::SwFilterOptions( sal_uInt16 nCnt, const sal_Char** ppNames,
+ sal_uInt32* pValues )
+ : ConfigItem( FILTER_OPTION_ROOT )
+{
+ GetValues( nCnt, ppNames, pValues );
+}
+
+void SwFilterOptions::GetValues( sal_uInt16 nCnt, const sal_Char** ppNames,
+ sal_uInt32* pValues )
+{
+ Sequence<OUString> aNames( nCnt );
+ OUString* pNames = aNames.getArray();
+ USHORT n;
+
+ for( n = 0; n < nCnt; ++n )
+ pNames[ n ] = OUString::createFromAscii( ppNames[ n ] );
+ Sequence<Any> aValues = GetProperties( aNames );
+
+ if( nCnt == aValues.getLength() )
+ {
+ const Any* pAnyValues = aValues.getConstArray();
+ for( n = 0; n < nCnt; ++n )
+ pValues[ n ] = pAnyValues[ n ].hasValue()
+ ? *(sal_uInt32*)pAnyValues[ n ].getValue()
+ : 0;
+ }
+ else
+ for( n = 0; n < nCnt; ++n )
+ pValues[ n ] = 0;
+}
+
+void SwFilterOptions::Commit() {}
+void SwFilterOptions::Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& ) {}
+
+/* */
+
+
+void StgReader::SetFltName( const String& rFltNm )
+{
+ if( SW_STORAGE_READER & GetReaderType() )
+ aFltName = rFltNm;
+}
+
+
+/* */
+
+SwRelNumRuleSpaces::SwRelNumRuleSpaces( SwDoc& rDoc, BOOL bNDoc )
+ : bNewDoc( bNDoc )
+{
+ pNumRuleTbl = new SwNumRuleTbl( 8, 8 );
+ if( !bNDoc )
+ pNumRuleTbl->Insert( &rDoc.GetNumRuleTbl(), 0 );
+}
+
+SwRelNumRuleSpaces::~SwRelNumRuleSpaces()
+{
+ if( pNumRuleTbl )
+ {
+ pNumRuleTbl->Remove( 0, pNumRuleTbl->Count() );
+ delete pNumRuleTbl;
+ }
+}
+
+void SwRelNumRuleSpaces::SetNumRelSpaces( SwDoc& rDoc )
+{
+ const SwNumRuleTbl* pRuleTbl = NULL;
+
+ if( !bNewDoc )
+ {
+ // jetzt alle schon vorhanden NumRules aus dem Array entfernen,
+ // damit nur die neuen angepasst werden
+ SwNumRuleTbl aNumRuleTbl;
+ aNumRuleTbl.Insert( pNumRuleTbl, 0 );
+ pNumRuleTbl->Remove( 0, pNumRuleTbl->Count() );
+ const SwNumRuleTbl& rRuleTbl = rDoc.GetNumRuleTbl();
+ SwNumRule* pRule;
+
+ for( USHORT n = 0; n < rRuleTbl.Count(); ++n )
+ if( USHRT_MAX == aNumRuleTbl.GetPos( ( pRule = rRuleTbl[ n ] )))
+ // war noch nicht vorhanden, also neu
+ pNumRuleTbl->Insert( pRule, pNumRuleTbl->Count() );
+
+ aNumRuleTbl.Remove( 0, aNumRuleTbl.Count() );
+
+ pRuleTbl = pNumRuleTbl;
+ }
+ else
+ {
+ pRuleTbl = &rDoc.GetNumRuleTbl();
+ }
+
+ if( pRuleTbl )
+ {
+ for( USHORT n = pRuleTbl->Count(); n; )
+ {
+ SwNumRule* pRule = (*pRuleTbl)[ --n ];
+ // Rule noch gueltig und am Doc vorhanden?
+ if( USHRT_MAX != rDoc.GetNumRuleTbl().GetPos( pRule ))
+ {
+ // --> OD 2008-02-19 #refactorlists#
+// SwNumRuleInfo aUpd( pRule->GetName() );
+// aUpd.MakeList( rDoc );
+
+// // bei allen nmumerierten Absaetzen vom linken Rand
+// // den absoluten Wert des NumFormates abziehen
+// for( ULONG nUpdPos = 0; nUpdPos < aUpd.GetList().Count();
+// ++nUpdPos )
+// {
+// SwTxtNode* pNd = aUpd.GetList().GetObject( nUpdPos );
+// SetNumLSpace( *pNd, *pRule );
+// }
+ SwNumRule::tTxtNodeList aTxtNodeList;
+ pRule->GetTxtNodeList( aTxtNodeList );
+ for ( SwNumRule::tTxtNodeList::iterator aIter = aTxtNodeList.begin();
+ aIter != aTxtNodeList.end(); ++aIter )
+ {
+ SwTxtNode* pNd = *aIter;
+ SetNumLSpace( *pNd, *pRule );
+ }
+ // <--
+ }
+ }
+ }
+
+ if( pNumRuleTbl )
+ {
+ pNumRuleTbl->Remove( 0, pNumRuleTbl->Count() );
+ delete pNumRuleTbl, pNumRuleTbl = 0;
+ }
+
+ if( bNewDoc )
+ {
+ SetOultineRelSpaces( SwNodeIndex( rDoc.GetNodes() ),
+ SwNodeIndex( rDoc.GetNodes().GetEndOfContent()));
+ }
+}
+
+void SwRelNumRuleSpaces::SetOultineRelSpaces( const SwNodeIndex& rStt,
+ const SwNodeIndex& rEnd )
+{
+ SwDoc* pDoc = rStt.GetNode().GetDoc();
+ const SwOutlineNodes& rOutlNds = pDoc->GetNodes().GetOutLineNds();
+ if( rOutlNds.Count() )
+ {
+ USHORT nPos;
+ rOutlNds.Seek_Entry( &rStt.GetNode(), &nPos );
+ for( ; nPos < rOutlNds.Count() &&
+ rOutlNds[ nPos ]->GetIndex() < rEnd.GetIndex(); ++nPos )
+ {
+ SwTxtNode* pNd = rOutlNds[ nPos ]->GetTxtNode();
+ if( pNd->IsOutline() && !pNd->GetNumRule() )
+ SetNumLSpace( *pNd, *pDoc->GetOutlineNumRule() );
+ }
+ }
+}
+
+void SwRelNumRuleSpaces::SetNumLSpace( SwTxtNode& rNd, const SwNumRule& rRule )
+{
+ BOOL bOutlineRule = OUTLINE_RULE == rRule.GetRuleType();
+ // --> OD 2005-11-18 #128056#
+ // correction of refactoring done by cws swnumtree:
+ // - assure a correct level for retrieving numbering format.
+// BYTE nLvl = rNd.GetLevel();
+ BYTE nLvl = 0;
+ if ( rNd.GetActualListLevel() >= 0 && rNd.GetActualListLevel() < MAXLEVEL )
+ {
+ nLvl = static_cast< BYTE >(rNd.GetActualListLevel());
+ }
+ // <--
+ const SwNumFmt& rFmt = rRule.Get( nLvl );
+ const SvxLRSpaceItem& rLR = rNd.GetSwAttrSet().GetLRSpace();
+
+ SvxLRSpaceItem aLR( rLR );
+ aLR.SetTxtFirstLineOfst( 0 );
+
+ // sagt der Node, das die Numerierung den Wert vorgibt?
+ if( !bOutlineRule && rNd.IsSetNumLSpace() )
+ aLR.SetTxtLeft( 0 );
+ else
+ {
+ long nLeft = rFmt.GetAbsLSpace(), nParaLeft = rLR.GetTxtLeft();
+ if( 0 < rLR.GetTxtFirstLineOfst() )
+ nParaLeft += rLR.GetTxtFirstLineOfst();
+ else if( nParaLeft >= nLeft )
+ // #82963#/#82962#: set correct paragraph indent
+ nParaLeft -= nLeft;
+ else
+ //#83154#, Don't think any of the older #80856# bugfix code is
+ //relevent anymore.
+ nParaLeft = rLR.GetTxtLeft()+rLR.GetTxtFirstLineOfst();
+ aLR.SetTxtLeft( nParaLeft );
+ }
+
+ if( aLR.GetTxtLeft() != rLR.GetTxtLeft() )
+ {
+ //bevor rLR geloescht wird!
+ long nOffset = rLR.GetTxtLeft() - aLR.GetTxtLeft();
+ rNd.SetAttr( aLR );
+
+ // Tabs anpassen !!
+ const SfxPoolItem* pItem;
+ if( SFX_ITEM_SET == rNd.GetSwAttrSet().GetItemState(
+ RES_PARATR_TABSTOP, TRUE, &pItem ))
+ {
+ SvxTabStopItem aTStop( *(SvxTabStopItem*)pItem );
+ for( USHORT n = 0; n < aTStop.Count(); ++n )
+ {
+ SvxTabStop& rTab = (SvxTabStop&)aTStop[ n ];
+ if( SVX_TAB_ADJUST_DEFAULT != rTab.GetAdjustment() )
+ {
+ if( !rTab.GetTabPos() )
+ {
+ aTStop.Remove( n );
+ --n;
+ }
+ else
+ rTab.GetTabPos() += nOffset;
+ }
+ }
+ rNd.SetAttr( aTStop );
+ }
+ }
+}
+
+/* */
+
+
+void CalculateFlySize(SfxItemSet& rFlySet, const SwNodeIndex& rAnchor,
+ SwTwips nPageWidth)
+{
+ const SfxPoolItem* pItem = 0;
+ if( SFX_ITEM_SET != rFlySet.GetItemState( RES_FRM_SIZE, TRUE, &pItem ) ||
+ MINFLY > ((SwFmtFrmSize*)pItem)->GetWidth() )
+ {
+ SwFmtFrmSize aSz((SwFmtFrmSize&)rFlySet.Get(RES_FRM_SIZE, TRUE));
+ if (pItem)
+ aSz = (SwFmtFrmSize&)(*pItem);
+
+ SwTwips nWidth;
+ // dann die Breite des Flys selbst bestimmen. Ist eine Tabelle
+ // defininiert, dann benutze deren Breite, sonst die Breite der
+ // Seite
+ const SwTableNode* pTblNd = rAnchor.GetNode().FindTableNode();
+ if( pTblNd )
+ nWidth = pTblNd->GetTable().GetFrmFmt()->GetFrmSize().GetWidth();
+ else
+ nWidth = nPageWidth;
+
+ const SwNodeIndex* pSttNd = ((SwFmtCntnt&)rFlySet.Get( RES_CNTNT )).
+ GetCntntIdx();
+ if( pSttNd )
+ {
+ BOOL bOnlyOneNode = TRUE;
+ ULONG nMinFrm = 0;
+ ULONG nMaxFrm = 0;
+ SwTxtNode* pFirstTxtNd = 0;
+ SwNodeIndex aIdx( *pSttNd, 1 );
+ SwNodeIndex aEnd( *pSttNd->GetNode().EndOfSectionNode() );
+ while( aIdx < aEnd )
+ {
+ SwTxtNode *pTxtNd = aIdx.GetNode().GetTxtNode();
+ if( pTxtNd )
+ {
+ if( !pFirstTxtNd )
+ pFirstTxtNd = pTxtNd;
+ else if( pFirstTxtNd != pTxtNd )
+ {
+ // forget it
+ bOnlyOneNode = FALSE;
+ break;
+ }
+
+ ULONG nAbsMinCnts;
+ pTxtNd->GetMinMaxSize( aIdx.GetIndex(), nMinFrm,
+ nMaxFrm, nAbsMinCnts );
+ }
+ aIdx++;
+ }
+
+ if( bOnlyOneNode )
+ {
+ if( nMinFrm < MINLAY && pFirstTxtNd )
+ {
+ // if the first node dont contained any content, then
+ // insert one char in it calc again and delete once again
+ SwIndex aNdIdx( pFirstTxtNd );
+ pFirstTxtNd->InsertText( String::CreateFromAscii(
+ RTL_CONSTASCII_STRINGPARAM( "MM" )), aNdIdx );
+ ULONG nAbsMinCnts;
+ pFirstTxtNd->GetMinMaxSize( pFirstTxtNd->GetIndex(),
+ nMinFrm, nMaxFrm, nAbsMinCnts );
+ aNdIdx -= 2;
+ pFirstTxtNd->EraseText( aNdIdx, 2 );
+ }
+
+ // Umrandung und Abstand zum Inhalt beachten
+ const SvxBoxItem& rBoxItem = (SvxBoxItem&)rFlySet.Get( RES_BOX );
+ USHORT nLine = BOX_LINE_LEFT;
+ for( int i = 0; i < 2; ++i )
+ {
+ const SvxBorderLine* pLn = rBoxItem.GetLine( nLine );
+ if( pLn )
+ {
+ USHORT nWidthTmp = pLn->GetOutWidth() + pLn->GetInWidth();
+ nWidthTmp = nWidthTmp + rBoxItem.GetDistance( nLine );
+ nMinFrm += nWidthTmp;
+ nMaxFrm += nWidthTmp;
+ }
+ nLine = BOX_LINE_RIGHT;
+ }
+
+ // Mindestbreite fuer Inhalt einhalten
+ if( nMinFrm < MINLAY )
+ nMinFrm = MINLAY;
+ if( nMaxFrm < MINLAY )
+ nMaxFrm = MINLAY;
+
+ if( nWidth > (USHORT)nMaxFrm )
+ nWidth = nMaxFrm;
+ else if( nWidth > (USHORT)nMinFrm )
+ nWidth = nMinFrm;
+ }
+ }
+
+ if( MINFLY > nWidth )
+ nWidth = MINFLY;
+
+ aSz.SetWidth( nWidth );
+ if( MINFLY > aSz.GetHeight() )
+ aSz.SetHeight( MINFLY );
+ rFlySet.Put( aSz );
+ }
+ else if( MINFLY > ((SwFmtFrmSize*)pItem)->GetHeight() )
+ {
+ SwFmtFrmSize aSz( *(SwFmtFrmSize*)pItem );
+ aSz.SetHeight( MINFLY );
+ rFlySet.Put( aSz );
+ }
+}
+
+/* */
+struct CharSetNameMap
+{
+ rtl_TextEncoding eCode;
+ const sal_Char* pName;
+};
+
+const CharSetNameMap *GetCharSetNameMap()
+{
+ static const CharSetNameMap aMapArr[] =
+ {
+# define IMPLENTRY(X) { RTL_TEXTENCODING_##X, "" #X "" }
+ IMPLENTRY(DONTKNOW),
+ IMPLENTRY(MS_1252),
+ IMPLENTRY(APPLE_ROMAN),
+ IMPLENTRY(IBM_437),
+ IMPLENTRY(IBM_850),
+ IMPLENTRY(IBM_860),
+ IMPLENTRY(IBM_861),
+ IMPLENTRY(IBM_863),
+ IMPLENTRY(IBM_865),
+ IMPLENTRY(SYMBOL),
+ IMPLENTRY(ASCII_US),
+ IMPLENTRY(ISO_8859_1),
+ IMPLENTRY(ISO_8859_2),
+ IMPLENTRY(ISO_8859_3),
+ IMPLENTRY(ISO_8859_4),
+ IMPLENTRY(ISO_8859_5),
+ IMPLENTRY(ISO_8859_6),
+ IMPLENTRY(ISO_8859_7),
+ IMPLENTRY(ISO_8859_8),
+ IMPLENTRY(ISO_8859_9),
+ IMPLENTRY(ISO_8859_14),
+ IMPLENTRY(ISO_8859_15),
+ IMPLENTRY(IBM_737),
+ IMPLENTRY(IBM_775),
+ IMPLENTRY(IBM_852),
+ IMPLENTRY(IBM_855),
+ IMPLENTRY(IBM_857),
+ IMPLENTRY(IBM_862),
+ IMPLENTRY(IBM_864),
+ IMPLENTRY(IBM_866),
+ IMPLENTRY(IBM_869),
+ IMPLENTRY(MS_874),
+ IMPLENTRY(MS_1250),
+ IMPLENTRY(MS_1251),
+ IMPLENTRY(MS_1253),
+ IMPLENTRY(MS_1254),
+ IMPLENTRY(MS_1255),
+ IMPLENTRY(MS_1256),
+ IMPLENTRY(MS_1257),
+ IMPLENTRY(MS_1258),
+ IMPLENTRY(APPLE_ARABIC),
+ IMPLENTRY(APPLE_CENTEURO),
+ IMPLENTRY(APPLE_CROATIAN),
+ IMPLENTRY(APPLE_CYRILLIC),
+ IMPLENTRY(APPLE_DEVANAGARI),
+ IMPLENTRY(APPLE_FARSI),
+ IMPLENTRY(APPLE_GREEK),
+ IMPLENTRY(APPLE_GUJARATI),
+ IMPLENTRY(APPLE_GURMUKHI),
+ IMPLENTRY(APPLE_HEBREW),
+ IMPLENTRY(APPLE_ICELAND),
+ IMPLENTRY(APPLE_ROMANIAN),
+ IMPLENTRY(APPLE_THAI),
+ IMPLENTRY(APPLE_TURKISH),
+ IMPLENTRY(APPLE_UKRAINIAN),
+ IMPLENTRY(APPLE_CHINSIMP),
+ IMPLENTRY(APPLE_CHINTRAD),
+ IMPLENTRY(APPLE_JAPANESE),
+ IMPLENTRY(APPLE_KOREAN),
+ IMPLENTRY(MS_932),
+ IMPLENTRY(MS_936),
+ IMPLENTRY(MS_949),
+ IMPLENTRY(MS_950),
+ IMPLENTRY(SHIFT_JIS),
+ IMPLENTRY(GB_2312),
+ IMPLENTRY(GBT_12345),
+ IMPLENTRY(GBK),
+ IMPLENTRY(BIG5),
+ IMPLENTRY(EUC_JP),
+ IMPLENTRY(EUC_CN),
+ IMPLENTRY(EUC_TW),
+ IMPLENTRY(ISO_2022_JP),
+ IMPLENTRY(ISO_2022_CN),
+ IMPLENTRY(KOI8_R),
+ IMPLENTRY(KOI8_U),
+ IMPLENTRY(UTF7),
+ IMPLENTRY(UTF8),
+ IMPLENTRY(ISO_8859_10),
+ IMPLENTRY(ISO_8859_13),
+ IMPLENTRY(EUC_KR),
+ IMPLENTRY(ISO_2022_KR),
+ IMPLENTRY(JIS_X_0201),
+ IMPLENTRY(JIS_X_0208),
+ IMPLENTRY(JIS_X_0212),
+ IMPLENTRY(MS_1361),
+ IMPLENTRY(GB_18030),
+ IMPLENTRY(BIG5_HKSCS),
+ IMPLENTRY(TIS_620),
+ IMPLENTRY(PT154),
+ IMPLENTRY(UCS4),
+ IMPLENTRY(UCS2),
+ IMPLENTRY(UNICODE),
+ {0,0} //Last
+ };
+ return &aMapArr[0];
+}
+/*
+ Get a rtl_TextEncoding from its name
+ */
+rtl_TextEncoding CharSetFromName(const String& rChrSetStr)
+{
+ const CharSetNameMap *pStart = GetCharSetNameMap();
+ rtl_TextEncoding nRet = pStart->eCode;
+
+ for(const CharSetNameMap *pMap = pStart; pMap->pName; ++pMap)
+ {
+ if(rChrSetStr.EqualsIgnoreCaseAscii(pMap->pName))
+ {
+ nRet = pMap->eCode;
+ break;
+ }
+ }
+
+ ASSERT(nRet != pStart->eCode, "TXT: That was an unknown language!");
+
+ return nRet;
+}
+
+
+/*
+ Get the String name of an rtl_TextEncoding
+ */
+String NameFromCharSet(rtl_TextEncoding nChrSet)
+{
+ const CharSetNameMap *pStart = GetCharSetNameMap();
+ const char *pRet = pStart->pName;
+
+ for(const CharSetNameMap *pMap = pStart; pMap->pName; ++pMap)
+ {
+ if (nChrSet == pMap->eCode)
+ {
+ pRet = pMap->pName;
+ break;
+ }
+ }
+
+ ASSERT(pRet != pStart->pName, "TXT: That was an unknown language!");
+
+ return String::CreateFromAscii(pRet);
+}
+
+// for the automatic conversion (mail/news/...)
+// The user data contains the options for the ascii import/export filter.
+// The format is:
+// 1. CharSet - as ascii chars
+// 2. LineEnd - as CR/LR/CRLF
+// 3. Fontname
+// 4. Language
+// the delimetercharacter is ","
+//
+
+void SwAsciiOptions::ReadUserData( const String& rStr )
+{
+ xub_StrLen nToken = 0;
+ USHORT nCnt = 0;
+ String sToken;
+ do {
+ if( 0 != (sToken = rStr.GetToken( 0, ',', nToken )).Len() )
+ {
+ switch( nCnt )
+ {
+ case 0: // CharSet
+ eCharSet = CharSetFromName(sToken);
+ break;
+ case 1: // LineEnd
+ if( sToken.EqualsIgnoreCaseAscii( "CRLF" ))
+ eCRLF_Flag = LINEEND_CRLF;
+ else if( sToken.EqualsIgnoreCaseAscii( "LF" ))
+ eCRLF_Flag = LINEEND_LF;
+ else
+ eCRLF_Flag = LINEEND_CR;
+ break;
+ case 2: // fontname
+ sFont = sToken;
+ break;
+ case 3: // Language
+ nLanguage = MsLangId::convertIsoStringToLanguage( sToken );
+ break;
+ }
+ }
+ ++nCnt;
+ } while( STRING_NOTFOUND != nToken );
+}
+
+void SwAsciiOptions::WriteUserData( String& rStr )
+{
+ // 1. charset
+ rStr = NameFromCharSet(eCharSet);
+ rStr += ',';
+
+ // 2. LineEnd
+ switch(eCRLF_Flag)
+ {
+ case LINEEND_CRLF:
+ rStr.AppendAscii( "CRLF" );
+ break;
+ case LINEEND_CR:
+ rStr.AppendAscii( "CR" );
+ break;
+ case LINEEND_LF:
+ rStr.AppendAscii( "LF" );
+ break;
+ }
+ rStr += ',';
+
+ // 3. Fontname
+ rStr += sFont;
+ rStr += ',';
+
+ // 4. Language
+ if (nLanguage)
+ {
+ rtl::OUString sTmp = MsLangId::convertLanguageToIsoString( nLanguage );
+ rStr += (String)sTmp;
+ }
+ rStr += ',';
+}
+
+extern "C" { static void SAL_CALL thisModule() {} }
+
+static oslGenericFunction GetMswordLibSymbol( const char *pSymbol )
+{
+ static ::osl::Module aModule;
+ static sal_Bool bLoaded = sal_False;
+ static ::rtl::OUString aLibName( RTL_CONSTASCII_USTRINGPARAM( SVLIBRARY( "msword" ) ) );
+ if (!bLoaded)
+ bLoaded = SvLibrary::LoadModule( aModule, aLibName, &thisModule );
+ if (bLoaded)
+ return aModule.getFunctionSymbol( ::rtl::OUString::createFromAscii( pSymbol ) );
+ return NULL;
+}
+
+Reader* GetRTFReader()
+{
+ FnGetReader pFunction = reinterpret_cast<FnGetReader>( GetMswordLibSymbol( "ImportRTF" ) );
+
+ if ( pFunction )
+ return (*pFunction)();
+
+ return NULL;
+}
+
+void GetRTFWriter( const String& rFltName, const String& rBaseURL, WriterRef& xRet )
+{
+ FnGetWriter pFunction = reinterpret_cast<FnGetWriter>( GetMswordLibSymbol( "ExportRTF" ) );
+
+ if ( pFunction )
+ (*pFunction)( rFltName, rBaseURL, xRet );
+ else
+ xRet = WriterRef(0);
+}
+
+Reader* GetWW8Reader()
+{
+ FnGetReader pFunction = reinterpret_cast<FnGetReader>( GetMswordLibSymbol( "ImportDOC" ) );
+
+ if ( pFunction )
+ return (*pFunction)();
+
+ return NULL;
+}
+
+void GetWW8Writer( const String& rFltName, const String& rBaseURL, WriterRef& xRet )
+{
+ FnGetWriter pFunction = reinterpret_cast<FnGetWriter>( GetMswordLibSymbol( "ExportDOC" ) );
+
+ if ( pFunction )
+ (*pFunction)( rFltName, rBaseURL, xRet );
+ else
+ xRet = WriterRef(0);
+}
+
+typedef ULONG ( __LOADONCALLAPI *SaveOrDel )( SfxObjectShell&, SotStorage&, BOOL, const String& );
+typedef ULONG ( __LOADONCALLAPI *GetSaveWarning )( SfxObjectShell& );
+
+ULONG SaveOrDelMSVBAStorage( SfxObjectShell& rDoc, SotStorage& rStor, BOOL bSaveInto, const String& rStorageName )
+{
+ SaveOrDel pFunction = reinterpret_cast<SaveOrDel>( GetMswordLibSymbol( "SaveOrDelMSVBAStorage_ww8" ) );
+ if( pFunction )
+ return pFunction( rDoc, rStor, bSaveInto, rStorageName );
+ return ERRCODE_NONE;
+}
+
+ULONG GetSaveWarningOfMSVBAStorage( SfxObjectShell &rDocS )
+{
+ GetSaveWarning pFunction = reinterpret_cast<GetSaveWarning>( GetMswordLibSymbol( "GetSaveWarningOfMSVBAStorage_ww8" ) );
+ if( pFunction )
+ return pFunction( rDocS );
+ return ERRCODE_NONE;
+}
+
+
diff --git a/sw/source/filter/html/htmlfldw.cxx b/sw/source/filter/html/htmlfldw.cxx
index 2e67ffcde1f8..50b7bdc7ddc8 100644
--- a/sw/source/filter/html/htmlfldw.cxx
+++ b/sw/source/filter/html/htmlfldw.cxx
@@ -305,7 +305,7 @@ static Writer& OutHTML_SwField( Writer& rWrt, const SwField* pFld,
}
// Inhalt des Feldes ausgeben
- String sExpand( pFld->Expand() );
+ String const sExpand( pFld->ExpandField(rWrt.pDoc->IsClipBoard()) );
sal_Bool bNeedsCJKProcessing = sal_False;
if( sExpand.Len() )
{
diff --git a/sw/source/filter/html/htmlform.cxx b/sw/source/filter/html/htmlform.cxx
index 4fd450cbffd5..bb1567d978f6 100644
--- a/sw/source/filter/html/htmlform.cxx
+++ b/sw/source/filter/html/htmlform.cxx
@@ -547,18 +547,20 @@ void SwHTMLImageWatcher::init( sal_Int32 Width, sal_Int32 Height )
0 != (pANd = pDoc->GetNodes()[pAPos->nNode]) &&
0 != (pTblNd = pANd->FindTableNode()) )
{
- sal_Bool bLastGrf = !pTblNd->GetTable().DecGrfsThatResize();
+ const sal_Bool bLastGrf = !pTblNd->GetTable().DecGrfsThatResize();
SwHTMLTableLayout *pLayout =
pTblNd->GetTable().GetHTMLTableLayout();
if( pLayout )
{
- sal_uInt16 nBrowseWidth =
+ const sal_uInt16 nBrowseWidth =
pLayout->GetBrowseWidthByTable( *pDoc );
- if( nBrowseWidth )
+ if ( nBrowseWidth )
+ {
pLayout->Resize( nBrowseWidth, sal_True, sal_True,
bLastGrf ? HTMLTABLE_RESIZE_NOW
: 500 );
+ }
}
}
}
diff --git a/sw/source/filter/html/htmlsect.cxx b/sw/source/filter/html/htmlsect.cxx
index 3ed96c5a5954..ac2f348532e8 100644
--- a/sw/source/filter/html/htmlsect.cxx
+++ b/sw/source/filter/html/htmlsect.cxx
@@ -28,26 +28,19 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_sw.hxx"
+#include <rtl/uri.hxx>
-
-
-#include "hintids.hxx"
-
-#ifndef _APP_HXX //autogen
+#include <svl/urihelper.hxx>
#include <vcl/svapp.hxx>
-#endif
-#ifndef _WRKWIN_HXX //autogen
#include <vcl/wrkwin.hxx>
-#endif
#include <editeng/adjitem.hxx>
#include <editeng/ulspitem.hxx>
#include <editeng/brkitem.hxx>
#include <svtools/htmltokn.h>
-#ifndef _HTMLKYWD_H
#include <svtools/htmlkywd.hxx>
-#endif
#include <sfx2/linkmgr.hxx>
-#include <rtl/uri.hxx>
+
+#include "hintids.hxx"
#include <fmtornt.hxx>
#include <fmthdft.hxx>
#include <fmtcntnt.hxx>
@@ -69,7 +62,6 @@
#include "viewsh.hxx"
#include "swcss1.hxx"
#include "swhtml.hxx"
-#include <svl/urihelper.hxx>
#define CONTEXT_FLAGS_MULTICOL (HTML_CNTXT_STRIP_PARA | \
HTML_CNTXT_KEEP_NUMRULE | \
@@ -321,12 +313,12 @@ void SwHTMLParser::NewDivision( int nToken )
aHRef = aURL;
}
- SwSection aSection( aHRef.Len() ? FILE_LINK_SECTION
+ SwSectionData aSection( (aHRef.Len()) ? FILE_LINK_SECTION
: CONTENT_SECTION, aName );
if( aHRef.Len() )
{
aSection.SetLinkFileName( aHRef );
- aSection.SetProtect();
+ aSection.SetProtectFlag(true);
}
SfxItemSet aFrmItemSet( pDoc->GetAttrPool(),
@@ -348,7 +340,7 @@ void SwHTMLParser::NewDivision( int nToken )
aItemSet.ClearItem( RES_FRAMEDIR );
}
- pDoc->InsertSwSection( *pPam, aSection, &aFrmItemSet, false );
+ pDoc->InsertSwSection( *pPam, aSection, 0, &aFrmItemSet, false );
// ggfs. einen Bereich anspringen
if( JUMPTO_REGION == eJumpTo && aName == sJmpMark )
@@ -708,7 +700,7 @@ void SwHTMLParser::NewMultiCol()
// Make section name unique.
String aName( pDoc->GetUniqueSectionName( aId.Len() ? &aId : 0 ) );
- SwSection aSection( CONTENT_SECTION, aName );
+ SwSectionData aSection( CONTENT_SECTION, aName );
SfxItemSet aFrmItemSet( pDoc->GetAttrPool(),
RES_FRMATR_BEGIN, RES_FRMATR_END-1 );
@@ -743,7 +735,7 @@ void SwHTMLParser::NewMultiCol()
aFrmItemSet.Put( *pItem );
aItemSet.ClearItem( RES_FRAMEDIR );
}
- pDoc->InsertSwSection( *pPam, aSection, &aFrmItemSet, false );
+ pDoc->InsertSwSection( *pPam, aSection, 0, &aFrmItemSet, false );
// Jump to section, if this is requested.
if( JUMPTO_REGION == eJumpTo && aName == sJmpMark )
diff --git a/sw/source/filter/html/swhtml.cxx b/sw/source/filter/html/swhtml.cxx
index 1e4f975ba3ec..fba6a477757d 100644
--- a/sw/source/filter/html/swhtml.cxx
+++ b/sw/source/filter/html/swhtml.cxx
@@ -4957,7 +4957,7 @@ USHORT SwHTMLParser::ToTwips( USHORT nPixel ) const
SwTwips SwHTMLParser::GetCurrentBrowseWidth()
{
- SwTwips nWidth = SwHTMLTableLayout::GetBrowseWidth( *pDoc );
+ const SwTwips nWidth = SwHTMLTableLayout::GetBrowseWidth( *pDoc );
if( nWidth )
return nWidth;
diff --git a/sw/source/filter/html/wrthtml.cxx b/sw/source/filter/html/wrthtml.cxx
index d0b6a985b9f6..ab6dfd92554a 100644
--- a/sw/source/filter/html/wrthtml.cxx
+++ b/sw/source/filter/html/wrthtml.cxx
@@ -313,7 +313,8 @@ ULONG SwHTMLWriter::WriteStream()
// nur das Tag fuer die Section merken
ByteString aName;
- HTMLOutFuncs::ConvertStringToHTML( pSNd->GetSection().GetName(),
+ HTMLOutFuncs::ConvertStringToHTML(
+ pSNd->GetSection().GetSectionName(),
aName, eDestEnc, &aNonConvertableCharacters );
ByteString sOut( '<' );
@@ -541,7 +542,7 @@ void lcl_html_OutSectionStartTag( SwHTMLWriter& rHTMLWrt,
ByteString sOut( '<' );
sOut += pTag;
- const String& rName = rSection.GetName();
+ const String& rName = rSection.GetSectionName();
if( rName.Len() && !bContinued )
{
((sOut += ' ') += OOO_STRING_SVTOOLS_HTML_O_id) += "=\"";
diff --git a/sw/source/filter/inc/fltshell.hxx b/sw/source/filter/inc/fltshell.hxx
index 60f43492dd7f..c511d4aab02a 100644
--- a/sw/source/filter/inc/fltshell.hxx
+++ b/sw/source/filter/inc/fltshell.hxx
@@ -255,14 +255,15 @@ public:
class SwFltSection : public SfxPoolItem
{
- SwSection* pSection;
+ SwSectionData * m_pSection;
+
public:
- SwFltSection( SwSection* pSect );
+ SwFltSection( SwSectionData *const pSect );
SwFltSection( const SwFltSection& );
// "pure virtual Methoden" vom SfxPoolItem
virtual int operator==(const SfxPoolItem&) const;
virtual SfxPoolItem* Clone(SfxItemPool* = 0) const;
- SwSection* GetSection() { return pSection; }
+ SwSectionData * GetSectionData() { return m_pSection; }
};
// Der WWEndStack verhaelt sich wie der WWControlStck, nur dass die Attribute
// auf ihm bis ans Ende des Dokuments gehortet werden, falls auf sie noch
diff --git a/sw/source/filter/rtf/rtfatr.cxx b/sw/source/filter/rtf/rtfatr.cxx
index a569f91e5966..17050299c84b 100644
--- a/sw/source/filter/rtf/rtfatr.cxx
+++ b/sw/source/filter/rtf/rtfatr.cxx
@@ -510,12 +510,12 @@ void OutRTF_SwFlyFrmFmt( SwRTFWriter& rRTFWrt )
// ueberhaupt eigene Attribute gibt !
SvMemoryStream aTmpStrm;
SvStream* pSaveStrm = &rRTFWrt.Strm();
- rRTFWrt.SetStrm( aTmpStrm );
+ rRTFWrt.SetStream( &aTmpStrm );
rRTFWrt.bRTFFlySyntax = false;
OutRTF_SwFmt( rRTFWrt, *rRTFWrt.pFlyFmt );
- rRTFWrt.SetStrm( *pSaveStrm ); // Stream-Pointer wieder zurueck
+ rRTFWrt.SetStream( pSaveStrm ); // Stream-Pointer wieder zurueck
if ( aTmpStrm.GetEndOfData() ) // gibt es SWG spezifische Attribute?
{
@@ -2902,7 +2902,8 @@ static Writer& OutRTF_SwField( Writer& rWrt, const SfxPoolItem& rHt )
case RES_HIDDENTXTFLD:
if( TYP_CONDTXTFLD == ((SwHiddenTxtField*)pFld)->GetSubType() )
- RTFOutFuncs::Out_String( rWrt.Strm(), pFld->Expand(),
+ RTFOutFuncs::Out_String( rWrt.Strm(),
+ pFld->ExpandField(rWrt.pDoc->IsClipBoard()),
rRTFWrt.eDefaultEncoding, rRTFWrt.bWriteHelpFmt );
else
{
@@ -2958,7 +2959,8 @@ static Writer& OutRTF_SwField( Writer& rWrt, const SfxPoolItem& rHt )
rWrt.Strm() >> cCh;
if( ' ' != cCh ) // vorweg immer einen Trenner
rWrt.Strm() << ' ';
- RTFOutFuncs::Out_String( rWrt.Strm(), pFld->Expand(),
+ RTFOutFuncs::Out_String( rWrt.Strm(),
+ pFld->ExpandField(rWrt.pDoc->IsClipBoard()),
rRTFWrt.eDefaultEncoding, rRTFWrt.bWriteHelpFmt );
}
break;
@@ -2967,7 +2969,8 @@ static Writer& OutRTF_SwField( Writer& rWrt, const SfxPoolItem& rHt )
if( aFldStt.Len() )
{
rWrt.Strm() << "}{" << OOO_STRING_SVTOOLS_RTF_FLDRSLT << ' ';
- RTFOutFuncs::Out_String( rWrt.Strm(), pFld->Expand(),
+ RTFOutFuncs::Out_String( rWrt.Strm(),
+ pFld->ExpandField(rWrt.pDoc->IsClipBoard()),
rRTFWrt.eDefaultEncoding, rRTFWrt.bWriteHelpFmt );
rWrt.Strm() << "}}";
rRTFWrt.bOutFmtAttr = FALSE;
@@ -3773,11 +3776,7 @@ static Writer& OutRTF_SwFmtBox( Writer& rWrt, const SfxPoolItem& rHt )
static USHORT __READONLY_DATA aBorders[] = {
BOX_LINE_TOP, BOX_LINE_LEFT, BOX_LINE_BOTTOM, BOX_LINE_RIGHT };
-#ifdef __MINGW32__ // for runtime pseudo reloc
- static const sal_Char* aBorderNames[] = {
-#else
static const sal_Char* __READONLY_DATA aBorderNames[] = {
-#endif
OOO_STRING_SVTOOLS_RTF_BRDRT, OOO_STRING_SVTOOLS_RTF_BRDRL, OOO_STRING_SVTOOLS_RTF_BRDRB, OOO_STRING_SVTOOLS_RTF_BRDRR };
USHORT nDist = rBox.GetDistance();
diff --git a/sw/source/filter/rtf/rtffly.cxx b/sw/source/filter/rtf/rtffly.cxx
index 9d3e7bc1b47e..76adc1197305 100644
--- a/sw/source/filter/rtf/rtffly.cxx
+++ b/sw/source/filter/rtf/rtffly.cxx
@@ -1169,8 +1169,8 @@ void SwRTFParser::ReadFly( int nToken, SfxItemSet* pSet )
SwTxtNode* pTxtNd = pFlySave->nSttNd.GetNode().GetTxtNode();
SwTxtFlyCnt* pFlyCnt = 0;
if( 1 == pTxtNd->GetTxt().Len() &&
- 0 != ( pFlyCnt = (SwTxtFlyCnt*)pTxtNd->GetTxtAttr(
- 0, RES_TXTATR_FLYCNT )) &&
+ 0 != (pFlyCnt = static_cast<SwTxtFlyCnt*>(
+ pTxtNd->GetTxtAttrForCharAt(0, RES_TXTATR_FLYCNT))) &&
pFlyCnt->GetFlyCnt().GetFrmFmt() )
{
// then move the content into the surrounded fly
diff --git a/sw/source/filter/rtf/swparrtf.cxx b/sw/source/filter/rtf/swparrtf.cxx
index 125caa487f42..e83ab108bbc9 100644
--- a/sw/source/filter/rtf/swparrtf.cxx
+++ b/sw/source/filter/rtf/swparrtf.cxx
@@ -829,7 +829,8 @@ void rtfSections::SetHdFt(rtfSection &rSection)
SwSectionFmt *rtfSections::InsertSection(SwPaM& rMyPaM, rtfSection &rSection)
{
- SwSection aSection(CONTENT_SECTION, mrReader.pDoc->GetUniqueSectionName());
+ SwSectionData aSectionData(CONTENT_SECTION,
+ mrReader.pDoc->GetUniqueSectionName());
SfxItemSet aSet( mrReader.pDoc->GetAttrPool(), aFrmFmtSetRange );
@@ -838,7 +839,7 @@ SwSectionFmt *rtfSections::InsertSection(SwPaM& rMyPaM, rtfSection &rSection)
nRTLPgn ? FRMDIR_HORI_RIGHT_TOP : FRMDIR_HORI_LEFT_TOP, RES_FRAMEDIR));
rSection.mpSection =
- mrReader.pDoc->InsertSwSection( rMyPaM, aSection, &aSet );
+ mrReader.pDoc->InsertSwSection( rMyPaM, aSectionData, 0, &aSet );
ASSERT(rSection.mpSection, "section not inserted!");
if (!rSection.mpSection)
return 0;
@@ -1598,79 +1599,6 @@ USHORT SwRTFParser::ReadRevTbl()
return nAuthorTableIndex;
}
-// #117910# simulate words behaviour of \keepn in table rows
-void fixKeepAndSplitAttributes(SwTableNode *pTableNode)
-{
- ASSERT(pTableNode!=NULL, "no table node!");
- if (!pTableNode) return;
- SwDoc *pDoc=pTableNode->GetDoc();
- if (pTableNode==NULL) return;
- SwTable& rTable=pTableNode->GetTable();
- SwTableLines& rLns = rTable.GetTabLines();
- USHORT nLines=rLns.Count();
- if (nLines==0) return;
- // get first paragaph in left down-most box
- SwTableLine* pLastLine = rLns[ nLines-1 ];
- SwTableBox* pBox = pLastLine->GetTabBoxes()[ 0 ];
- ULONG iFirstParagraph=pBox->GetSttIdx()+1;
- SwTxtNode *pTxtNode=(SwTxtNode *)pDoc->GetNodes()[iFirstParagraph];
- SwFrmFmt* pFmt=rTable.GetFrmFmt();
-
- SwFmtLayoutSplit *pTableSplit=(SwFmtLayoutSplit *)pFmt->GetAttrSet().GetItem(RES_LAYOUT_SPLIT);
- BOOL isTableKeep = pTableSplit!=NULL && !pTableSplit->GetValue();
- SvxFmtKeepItem *pTableKeep=(SvxFmtKeepItem *)pFmt->GetAttrSet().GetItem(RES_KEEP);
- BOOL isTableKeepNext = pTableKeep!=NULL && pTableKeep->GetValue();
- SvxFmtKeepItem *pKeepNext = (SvxFmtKeepItem *)pTxtNode->GetSwAttrSet().GetItem(RES_KEEP);
-
- if (isTableKeepNext)
- {
- if (nLines>2 && !isTableKeep)
- { // split
- SwTableLine* pSplitLine = rLns[ nLines-2 ];
- SwTableBox* pSplitBox = pSplitLine->GetTabBoxes()[ 0 ];
- SwNodeIndex aSplitIdx( *pSplitBox->GetSttNd() );
- pDoc->SplitTable( SwPosition(aSplitIdx), HEADLINE_NONE,
- !isTableKeep );
- SwTable& rSplitTable=aSplitIdx.GetNode().FindTableNode()->GetTable();
- aSplitIdx-=2;
- pDoc->GetNodes().Delete(aSplitIdx);
- pFmt=rSplitTable.GetFrmFmt();
- pFmt->ResetFmtAttr(RES_PAGEDESC);
- }
- // set keep=1(i.e. split=0) attribut
- SwFmtLayoutSplit aSplit(0);
- SwAttrSet aNewSet(pFmt->GetAttrSet());
- aNewSet.Put(aSplit);
- pFmt->SetFmtAttr(aNewSet);
- }
- else // !isTableKeepNext
- {
- if (isTableKeep)
- {
- SwNodeIndex aTmpIdx( *pBox->GetSttNd() );
- pDoc->SplitTable( SwPosition(aTmpIdx), HEADLINE_NONE, FALSE );
- SwTable& rSplitTable=aTmpIdx.GetNode().FindTableNode()->GetTable();
- aTmpIdx-=2;
- pDoc->GetNodes().Delete(aTmpIdx);
- pFmt=rSplitTable.GetFrmFmt();
- pFmt->ResetFmtAttr(RES_PAGEDESC);
- }
- // set keep=0(i.e. split=1) attribut
- SwFmtLayoutSplit aSplit(1);
- SwAttrSet aNewSet(pFmt->GetAttrSet());
- aNewSet.Put(aSplit);
- pFmt->SetFmtAttr(aNewSet);
- }
- // move keepnext attribtue from last paragraph to table
- if (pKeepNext!=NULL)
- {
- SvxFmtKeepItem aNewKeepItem(pKeepNext->GetValue(), RES_KEEP);
- SwAttrSet aNewSet(pFmt->GetAttrSet());
- aNewSet.Put(aNewKeepItem);
- pFmt->SetFmtAttr(aNewSet);
- }
-}
-
void SwRTFParser::NextToken( int nToken )
{
USHORT eDateFmt;
diff --git a/sw/source/filter/rtf/wrtrtf.cxx b/sw/source/filter/rtf/wrtrtf.cxx
index 5d9a0deda7d1..8e17bee3874b 100644
--- a/sw/source/filter/rtf/wrtrtf.cxx
+++ b/sw/source/filter/rtf/wrtrtf.cxx
@@ -85,8 +85,6 @@ const sal_Char SwRTFWriter::sNewLine = '\012';
const sal_Char __FAR_DATA SwRTFWriter::sNewLine[] = "\015\012";
#endif
-
-
SV_DECL_VARARR( RTFColorTbl, Color, 5, 8 )
SV_IMPL_VARARR( RTFColorTbl, Color )
@@ -1299,8 +1297,17 @@ void SwRTFWriter::OutBookmarks( xub_StrLen nCntntPos)
Strm() << '}';
}
OutComment( *this, OOO_STRING_SVTOOLS_RTF_BKMKEND ) << ' ';
- RTFOutFuncs::Out_String( Strm(), pAsBookmark->GetName(),
+
+ {
+ ::rtl::OUString aEmpty;
+ ::rtl::OUString & rBookmarkName = aEmpty;
+
+ if (pAsBookmark)
+ rBookmarkName = pAsBookmark->GetName();
+
+ RTFOutFuncs::Out_String( Strm(), rBookmarkName,
eDefaultEncoding, bWriteHelpFmt ) << '}';
+ }
if(++nBkmkTabPos >= pMarkAccess->getMarksCount())
nBkmkTabPos = -1;
diff --git a/sw/source/filter/writer/writer.cxx b/sw/source/filter/writer/writer.cxx
index d37b8b6ff0a0..d70b6d6c754e 100644
--- a/sw/source/filter/writer/writer.cxx
+++ b/sw/source/filter/writer/writer.cxx
@@ -58,19 +58,22 @@ DECLARE_TABLE( SwBookmarkNodeTable, SvPtrarr* )
struct Writer_Impl
{
+ SvStream * m_pStream;
+
SvStringsSortDtor *pSrcArr, *pDestArr;
SvPtrarr* pFontRemoveLst, *pBkmkArr;
SwBookmarkNodeTable* pBkmkNodePos;
- Writer_Impl( const SwDoc& rDoc );
+ Writer_Impl();
~Writer_Impl();
void RemoveFontList( SwDoc& rDoc );
void InsertBkmk( const ::sw::mark::IMark& rBkmk );
};
-Writer_Impl::Writer_Impl( const SwDoc& /*rDoc*/ )
- : pSrcArr( 0 ), pDestArr( 0 ), pFontRemoveLst( 0 ), pBkmkNodePos( 0 )
+Writer_Impl::Writer_Impl()
+ : m_pStream(0)
+ , pSrcArr( 0 ), pDestArr( 0 ), pFontRemoveLst( 0 ), pBkmkNodePos( 0 )
{
}
@@ -141,7 +144,8 @@ void Writer_Impl::InsertBkmk(const ::sw::mark::IMark& rBkmk)
*/
Writer::Writer()
- : pImpl(0), pStrm(0), pOrigPam(0), pOrigFileName(0), pDoc(0), pCurPam(0)
+ : m_pImpl(new Writer_Impl)
+ , pOrigPam(0), pOrigFileName(0), pDoc(0), pCurPam(0)
{
bWriteAll = bShowProgress = bUCS2_WithStartChar = true;
bASCII_NoLastLineEnd = bASCII_ParaAsBlanc = bASCII_ParaAsCR =
@@ -164,9 +168,11 @@ const IDocumentStylePoolAccess* Writer::getIDocumentStylePoolAccess() const { re
void Writer::ResetWriter()
{
- if( pImpl && pImpl->pFontRemoveLst )
- pImpl->RemoveFontList( *pDoc );
- delete pImpl, pImpl = 0;
+ if (m_pImpl->pFontRemoveLst)
+ {
+ m_pImpl->RemoveFontList( *pDoc );
+ }
+ m_pImpl.reset(new Writer_Impl);
if( pCurPam )
{
@@ -177,7 +183,6 @@ void Writer::ResetWriter()
pCurPam = 0;
pOrigFileName = 0;
pDoc = 0;
- pStrm = 0;
bShowProgress = bUCS2_WithStartChar = TRUE;
bASCII_NoLastLineEnd = bASCII_ParaAsBlanc = bASCII_ParaAsCR =
@@ -246,13 +251,14 @@ SwPaM* Writer::NewSwPaM( SwDoc & rDoc, ULONG nStartIdx, ULONG nEndIdx,
/////////////////////////////////////////////////////////////////////////////
// Stream-spezifisches
-#ifdef DBG_UTIL
SvStream& Writer::Strm()
{
- ASSERT( pStrm, "Oh-oh. Dies ist ein Storage-Writer. Gleich knallts!" );
- return *pStrm;
+ ASSERT( m_pImpl->m_pStream, "Oh-oh. Writer with no Stream!" );
+ return *m_pImpl->m_pStream;
}
-#endif
+
+void Writer::SetStream(SvStream *const pStream)
+{ m_pImpl->m_pStream = pStream; }
SvStream& Writer::OutHex( SvStream& rStrm, ULONG nHex, BYTE nLen )
@@ -314,10 +320,9 @@ ULONG Writer::Write( SwPaM& rPaM, SvStream& rStrm, const String* pFName )
return nResult;
}
- pStrm = &rStrm;
pDoc = rPaM.GetDoc();
pOrigFileName = pFName;
- pImpl = new Writer_Impl( *pDoc );
+ m_pImpl->m_pStream = &rStrm;
// PaM kopieren, damit er veraendert werden kann
pCurPam = new SwPaM( *rPaM.End(), *rPaM.Start() );
@@ -368,20 +373,20 @@ BOOL Writer::CopyLocalFileToINet( String& rFileNm )
INET_PROT_NEWS >= aTargetUrl.GetProtocol() ) )
return bRet;
- if( pImpl->pSrcArr )
+ if (m_pImpl->pSrcArr)
{
// wurde die Datei schon verschoben
USHORT nPos;
- if( pImpl->pSrcArr->Seek_Entry( &rFileNm, &nPos ))
+ if (m_pImpl->pSrcArr->Seek_Entry( &rFileNm, &nPos ))
{
- rFileNm = *(*pImpl->pDestArr)[ nPos ];
+ rFileNm = *(*m_pImpl->pDestArr)[ nPos ];
return TRUE;
}
}
else
{
- pImpl->pSrcArr = new SvStringsSortDtor( 4, 4 );
- pImpl->pDestArr = new SvStringsSortDtor( 4, 4 );
+ m_pImpl->pSrcArr = new SvStringsSortDtor( 4, 4 );
+ m_pImpl->pDestArr = new SvStringsSortDtor( 4, 4 );
}
String *pSrc = new String( rFileNm );
@@ -400,8 +405,8 @@ BOOL Writer::CopyLocalFileToINet( String& rFileNm )
if( bRet )
{
- pImpl->pSrcArr->Insert( pSrc );
- pImpl->pDestArr->Insert( pDest );
+ m_pImpl->pSrcArr->Insert( pSrc );
+ m_pImpl->pDestArr->Insert( pDest );
rFileNm = *pDest;
}
else
@@ -415,9 +420,6 @@ BOOL Writer::CopyLocalFileToINet( String& rFileNm )
void Writer::PutNumFmtFontsInAttrPool()
{
- if( !pImpl )
- pImpl = new Writer_Impl( *pDoc );
-
// dann gibt es noch in den NumRules ein paar Fonts
// Diese in den Pool putten. Haben sie danach einen RefCount > 1
// kann es wieder entfernt werden - ist schon im Pool
@@ -457,9 +459,6 @@ void Writer::PutNumFmtFontsInAttrPool()
void Writer::PutEditEngFontsInAttrPool( BOOL bIncl_CJK_CTL )
{
- if( !pImpl )
- pImpl = new Writer_Impl( *pDoc );
-
SfxItemPool& rPool = pDoc->GetAttrPool();
if( rPool.GetSecondaryPool() )
{
@@ -474,9 +473,6 @@ void Writer::PutEditEngFontsInAttrPool( BOOL bIncl_CJK_CTL )
void Writer::PutCJKandCTLFontsInAttrPool()
{
- if( !pImpl )
- pImpl = new Writer_Impl( *pDoc );
-
SfxItemPool& rPool = pDoc->GetAttrPool();
_AddFontItems( rPool, RES_CHRATR_CJK_FONT );
_AddFontItems( rPool, RES_CHRATR_CTL_FONT );
@@ -513,11 +509,13 @@ void Writer::_AddFontItem( SfxItemPool& rPool, const SvxFontItem& rFont )
rPool.Remove( *pItem );
else
{
- if( !pImpl->pFontRemoveLst )
- pImpl->pFontRemoveLst = new SvPtrarr( 0, 10 );
+ if (!m_pImpl->pFontRemoveLst)
+ {
+ m_pImpl->pFontRemoveLst = new SvPtrarr( 0, 10 );
+ }
void* p = (void*)pItem;
- pImpl->pFontRemoveLst->Insert( p, pImpl->pFontRemoveLst->Count() );
+ m_pImpl->pFontRemoveLst->Insert( p, m_pImpl->pFontRemoveLst->Count() );
}
}
@@ -529,7 +527,9 @@ void Writer::CreateBookmarkTbl()
for(IDocumentMarkAccess::const_iterator_t ppBkmk = pMarkAccess->getBookmarksBegin();
ppBkmk != pMarkAccess->getBookmarksEnd();
++ppBkmk)
- pImpl->InsertBkmk(**ppBkmk);
+ {
+ m_pImpl->InsertBkmk(**ppBkmk);
+ }
}
@@ -540,7 +540,8 @@ USHORT Writer::GetBookmarks(const SwCntntNode& rNd, xub_StrLen nStt,
ASSERT( !rArr.Count(), "es sind noch Eintraege vorhanden" );
ULONG nNd = rNd.GetIndex();
- SvPtrarr* pArr = pImpl->pBkmkNodePos ? pImpl->pBkmkNodePos->Get( nNd ) : 0;
+ SvPtrarr* pArr = (m_pImpl->pBkmkNodePos) ?
+ m_pImpl->pBkmkNodePos->Get( nNd ) : 0;
if( pArr )
{
// there exist some bookmarks, search now all which is in the range
@@ -586,11 +587,10 @@ ULONG StgWriter::WriteStream()
ULONG StgWriter::Write( SwPaM& rPaM, SvStorage& rStg, const String* pFName )
{
- pStrm = 0;
+ SetStream(0);
pStg = &rStg;
pDoc = rPaM.GetDoc();
pOrigFileName = pFName;
- pImpl = new Writer_Impl( *pDoc );
// PaM kopieren, damit er veraendert werden kann
pCurPam = new SwPaM( *rPaM.End(), *rPaM.Start() );
@@ -607,12 +607,11 @@ ULONG StgWriter::Write( SwPaM& rPaM, SvStorage& rStg, const String* pFName )
ULONG StgWriter::Write( SwPaM& rPaM, const uno::Reference < embed::XStorage >& rStg, const String* pFName, SfxMedium* pMedium )
{
- pStrm = 0;
+ SetStream(0);
pStg = 0;
xStg = rStg;
pDoc = rPaM.GetDoc();
pOrigFileName = pFName;
- pImpl = new Writer_Impl( *pDoc );
// PaM kopieren, damit er veraendert werden kann
pCurPam = new SwPaM( *rPaM.End(), *rPaM.Start() );
diff --git a/sw/source/filter/ww1/fltshell.cxx b/sw/source/filter/ww1/fltshell.cxx
index abe41737438b..2cf1ca325a5b 100644
--- a/sw/source/filter/ww1/fltshell.cxx
+++ b/sw/source/filter/ww1/fltshell.cxx
@@ -559,9 +559,9 @@ void SwFltControlStack::SetAttrInDoc(const SwPosition& rTmpPos, SwFltStackEntry*
case RES_FLTR_SECTION:
MakePoint(pEntry, pDoc, aRegion); // bislang immer Point==Mark
pDoc->InsertSwSection(aRegion,
- *(static_cast<SwFltSection*>(pEntry->pAttr))->GetSection(),
- 0, false);
- delete(((SwFltSection*)pEntry->pAttr)->GetSection());
+ *(static_cast<SwFltSection*>(pEntry->pAttr))->GetSectionData(),
+ 0, 0, false);
+ delete (((SwFltSection*)pEntry->pAttr)->GetSectionData());
break;
case RES_FLTR_REDLINE:
{
@@ -865,19 +865,21 @@ SfxPoolItem* SwFltTOX::Clone(SfxItemPool*) const
//------ hier stehen die Methoden von SwFltSwSection -----------
-SwFltSection::SwFltSection(SwSection *pSect) :
- SfxPoolItem(RES_FLTR_SECTION), pSection(pSect)
+SwFltSection::SwFltSection(SwSectionData *const pSect)
+ : SfxPoolItem(RES_FLTR_SECTION)
+ , m_pSection(pSect)
{
}
-SwFltSection::SwFltSection(const SwFltSection& rCpy) :
- SfxPoolItem(RES_FLTR_SECTION), pSection(rCpy.pSection)
+SwFltSection::SwFltSection(const SwFltSection& rCpy)
+ : SfxPoolItem(RES_FLTR_SECTION)
+ , m_pSection(rCpy.m_pSection)
{
}
int SwFltSection::operator==(const SfxPoolItem& rItem) const
{
- return pSection == ((SwFltSection&)rItem).pSection;
+ return m_pSection == ((SwFltSection&)rItem).m_pSection;
}
SfxPoolItem* __EXPORT SwFltSection::Clone(SfxItemPool*) const
@@ -962,9 +964,9 @@ SwFltShell::~SwFltShell()
SwDoc& rDoc = GetDoc();
// 1. SectionFmt und Section anlegen
SwSectionFmt* pSFmt = rDoc.MakeSectionFmt( 0 );
- SwSection aS( CONTENT_SECTION, String::CreateFromAscii(
+ SwSectionData aSectionData( CONTENT_SECTION, String::CreateFromAscii(
RTL_CONSTASCII_STRINGPARAM("PMW-Protect") ));
- aS.SetProtect( TRUE );
+ aSectionData.SetProtectFlag( true );
// 2. Start- und EndIdx suchen
const SwNode* pEndNd = &rDoc.GetNodes().GetEndOfContent();
SwNodeIndex aEndIdx( *pEndNd, -1L );
@@ -972,7 +974,8 @@ SwFltShell::~SwFltShell()
SwNodeIndex aSttIdx( *pSttNd, 1L ); // +1 -> hinter StartNode
// Section einfuegen
// Section einfuegen
- rDoc.GetNodes().InsertSection( aSttIdx, *pSFmt, aS, &aEndIdx, FALSE );
+ rDoc.GetNodes().InsertTextSection(
+ aSttIdx, *pSFmt, aSectionData, 0, &aEndIdx, false );
if( !IsFlagSet(SwFltControlStack::DONT_HARD_PROTECT) ){
SwDocShell* pDocSh = rDoc.GetDocShell();
@@ -1676,7 +1679,7 @@ SfxItemSet* SwFltOutBase::NewFlyDefaults()
return p;
}
-BOOL SwFltOutBase::BeginFly( RndStdIds eAnchor /*= FLY_AT_CNTNT*/,
+BOOL SwFltOutBase::BeginFly( RndStdIds eAnchor /*= FLY_AT_PARA*/,
BOOL bAbsolutePos /*= FALSE*/,
const SfxItemSet*
#ifdef DBG_UTIL
@@ -1728,7 +1731,7 @@ SwFrmFmt* SwFltOutDoc::MakeFly( RndStdIds eAnchor, SfxItemSet* pSet )
return pFly;
}
-BOOL SwFltOutDoc::BeginFly( RndStdIds eAnchor /*= FLY_AT_CNTNT*/,
+BOOL SwFltOutDoc::BeginFly( RndStdIds eAnchor /*= FLY_AT_PARA*/,
BOOL bAbsolutePos /*= FALSE*/,
const SfxItemSet* pMoreAttrs /*= 0*/ )
@@ -1834,7 +1837,7 @@ void SwFltOutDoc::EndFly()
return GetDoc().GetAttrPool().GetDefaultItem(nWhich);
}
-BOOL SwFltFormatCollection::BeginFly( RndStdIds eAnchor /*= FLY_AT_CNTNT*/,
+BOOL SwFltFormatCollection::BeginFly( RndStdIds eAnchor /*= FLY_AT_PARA*/,
BOOL bAbsolutePos /*= FALSE*/,
const SfxItemSet* pMoreAttrs /*= 0*/ )
@@ -1862,7 +1865,7 @@ BOOL SwFltFormatCollection::BeginStyleFly( SwFltOutDoc* pOutDoc )
// Flys in SwFltShell
//-----------------------------------------------------------------------------
-BOOL SwFltShell::BeginFly( RndStdIds eAnchor /*= FLY_AT_CNTNT*/,
+BOOL SwFltShell::BeginFly( RndStdIds eAnchor /*= FLY_AT_PARA*/,
BOOL bAbsolutePos /*= FALSE*/ )
{
@@ -1934,8 +1937,8 @@ void SwFltShell::BeginFootnote()
pSavedPos = new SwPosition(*pPaM->GetPoint());
pPaM->Move(fnMoveBackward, fnGoCntnt);
SwTxtNode* pTxt = pPaM->GetNode()->GetTxtNode();
- SwTxtAttr* pFN = pTxt->GetTxtAttr(pPaM->GetPoint()->nContent,
- RES_TXTATR_FTN);
+ SwTxtAttr *const pFN = pTxt->GetTxtAttrForCharAt(
+ pPaM->GetPoint()->nContent.GetIndex(), RES_TXTATR_FTN);
if( !pFN ){ // Passiert z.B. bei Fussnote in Fly
ASSERT(pFN, "Probleme beim Anlegen des Fussnoten-Textes");
return;
diff --git a/sw/source/filter/ww1/w1filter.cxx b/sw/source/filter/ww1/w1filter.cxx
index 9ab5e84a6967..45e94726cddc 100644
--- a/sw/source/filter/ww1/w1filter.cxx
+++ b/sw/source/filter/ww1/w1filter.cxx
@@ -870,10 +870,10 @@ oncemore:
String aName( String::CreateFromAscii(
RTL_CONSTASCII_STRINGPARAM( "WW" )));
- SwSection* pSection = new SwSection( FILE_LINK_SECTION,
+ SwSectionData * pSection = new SwSectionData( FILE_LINK_SECTION,
rOut.GetDoc().GetUniqueSectionName( &aStr ) );
pSection->SetLinkFileName( aFName );
- pSection->SetProtect( TRUE );
+ pSection->SetProtectFlag( true );
rOut << SwFltSection( pSection );
rOut.EndItem( RES_FLTR_SECTION );
rOut.NextParagraph();
diff --git a/sw/source/filter/ww8/WW8Sttbf.cxx b/sw/source/filter/ww8/WW8Sttbf.cxx
index d3394937bf61..796670385bd4 100644
--- a/sw/source/filter/ww8/WW8Sttbf.cxx
+++ b/sw/source/filter/ww8/WW8Sttbf.cxx
@@ -29,6 +29,7 @@
#include <iostream>
#include <dbgoutsw.hxx>
#include "WW8Sttbf.hxx"
+#include <cstdio>
namespace ww8
{
diff --git a/sw/source/filter/ww8/WW8TableInfo.cxx b/sw/source/filter/ww8/WW8TableInfo.cxx
index 8f914f46813d..8ca7c8d71571 100644
--- a/sw/source/filter/ww8/WW8TableInfo.cxx
+++ b/sw/source/filter/ww8/WW8TableInfo.cxx
@@ -29,9 +29,13 @@
#include "precompiled_sw.hxx"
#include <iostream>
+#include <set>
#include <stdio.h>
#include "WW8TableInfo.hxx"
+#include "fmtfsize.hxx"
+#include "attributeoutputbase.hxx"
#include "swtable.hxx"
+#include "frmfmt.hxx"
#include "pam.hxx"
#include "ndtxt.hxx"
#include "dbgoutsw.hxx"
@@ -45,8 +49,12 @@ WW8TableNodeInfoInner::WW8TableNodeInfoInner(WW8TableNodeInfo * pParent)
: mpParent(pParent)
, mnCell(0)
, mnRow(0)
+, mnShadowsBefore(0)
+, mnShadowsAfter(0)
, mbEndOfLine(false)
, mbEndOfCell(false)
+, mbFirstInTable(false)
+, mbVertMerge(false)
, mpTableBox(NULL)
, mpTable(NULL)
{
@@ -71,6 +79,16 @@ void WW8TableNodeInfoInner::setRow(sal_uInt32 nRow)
mnRow = nRow;
}
+void WW8TableNodeInfoInner::setShadowsBefore(sal_uInt32 nShadowsBefore)
+{
+ mnShadowsBefore = nShadowsBefore;
+}
+
+void WW8TableNodeInfoInner::setShadowsAfter(sal_uInt32 nShadowsAfter)
+{
+ mnShadowsAfter = nShadowsAfter;
+}
+
void WW8TableNodeInfoInner::setEndOfLine(bool bEndOfLine)
{
mbEndOfLine = bEndOfLine;
@@ -81,6 +99,17 @@ void WW8TableNodeInfoInner::setEndOfCell(bool bEndOfCell)
mbEndOfCell = bEndOfCell;
}
+void WW8TableNodeInfoInner::setFirstInTable(bool bFirstInTable)
+{
+ mbFirstInTable = bFirstInTable;
+}
+
+void WW8TableNodeInfoInner::setVertMerge(bool bVertMerge)
+
+{
+ mbVertMerge = bVertMerge;
+}
+
void WW8TableNodeInfoInner::setTableBox(const SwTableBox * pTableBox)
{
mpTableBox = pTableBox;
@@ -91,6 +120,11 @@ void WW8TableNodeInfoInner::setTable(const SwTable * pTable)
mpTable = pTable;
}
+void WW8TableNodeInfoInner::setRect(const SwRect & rRect)
+{
+ maRect = rRect;
+}
+
sal_uInt32 WW8TableNodeInfoInner::getDepth() const
{
return mnDepth;
@@ -106,6 +140,16 @@ sal_uInt32 WW8TableNodeInfoInner::getRow() const
return mnRow;
}
+sal_uInt32 WW8TableNodeInfoInner::getShadowsBefore() const
+{
+ return mnShadowsBefore;
+}
+
+sal_uInt32 WW8TableNodeInfoInner::getShadowsAfter() const
+{
+ return mnShadowsAfter;
+}
+
bool WW8TableNodeInfoInner::isEndOfCell() const
{
return mbEndOfCell;
@@ -116,6 +160,11 @@ bool WW8TableNodeInfoInner::isEndOfLine() const
return mbEndOfLine;
}
+bool WW8TableNodeInfoInner::isFirstInTable() const
+{
+ return mbFirstInTable;
+}
+
const SwNode * WW8TableNodeInfoInner::getNode() const
{
const SwNode * pResult = NULL;
@@ -126,6 +175,127 @@ const SwNode * WW8TableNodeInfoInner::getNode() const
return pResult;
}
+TableBoxVectorPtr WW8TableNodeInfoInner::getTableBoxesOfRow()
+{
+ TableBoxVectorPtr pResult(new TableBoxVector);
+
+ WW8TableCellGrid::Pointer_t pCellGrid =
+ mpParent->getParent()->getCellGridForTable(getTable(), false);
+
+ if (pCellGrid.get() == NULL)
+ {
+ const SwTableLine * pTabLine = getTableBox()->GetUpper();
+ const SwTableBoxes & rTblBoxes = pTabLine->GetTabBoxes();
+
+ sal_uInt8 nBoxes = rTblBoxes.Count();
+ for ( sal_uInt8 n = 0; n < nBoxes; n++ )
+ {
+ pResult->push_back(rTblBoxes[n]);
+ }
+ }
+ else
+ pResult = pCellGrid->getTableBoxesOfRow(this);
+
+ return pResult;
+}
+
+GridColsPtr WW8TableNodeInfoInner::getGridColsOfRow(AttributeOutputBase & rBase)
+{
+ GridColsPtr pResult(new GridCols);
+ WidthsPtr pWidths(getWidthsOfRow());
+
+ const SwFrmFmt *pFmt = getTable()->GetFrmFmt();
+ ASSERT(pFmt,"Impossible");
+ if (!pFmt)
+ return pResult;
+
+ const SwFmtFrmSize &rSize = pFmt->GetFrmSize();
+ unsigned long nTblSz = static_cast<unsigned long>(rSize.GetWidth());
+
+ sal_uInt32 nPageSize = 0;
+ bool bRelBoxSize = false;
+
+ rBase.GetTablePageSize
+ ( this, nPageSize, bRelBoxSize );
+
+ SwTwips nSz = 0;
+ Widths::const_iterator aWidthsEnd = pWidths->end();
+ for ( Widths::const_iterator aIt = pWidths->begin();
+ aIt != aWidthsEnd;
+ aIt++)
+ {
+ nSz += *aIt;
+ SwTwips nCalc = nSz;
+ if ( bRelBoxSize )
+ nCalc = ( nCalc * nPageSize ) / nTblSz;
+
+ pResult->push_back( nCalc );
+ }
+
+ return pResult;
+}
+
+WidthsPtr WW8TableNodeInfoInner::getWidthsOfRow()
+{
+ WidthsPtr pWidths;
+
+ WW8TableCellGrid::Pointer_t pCellGrid =
+ mpParent->getParent()->getCellGridForTable(getTable(), false);
+
+ if (pCellGrid.get() == NULL)
+ {
+ const SwTableBox * pTabBox = getTableBox();
+ const SwTableLine * pTabLine = pTabBox->GetUpper();
+ const SwTableBoxes & rTabBoxes = pTabLine->GetTabBoxes();
+
+ pWidths = WidthsPtr(new Widths);
+ // number of cell written
+ sal_uInt32 nBoxes = rTabBoxes.Count();
+ if ( nBoxes > 32 )
+ nBoxes = 32;
+
+ for (sal_uInt32 n = 0; n < nBoxes; n++)
+ {
+ const SwFrmFmt* pBoxFmt = rTabBoxes[ n ]->GetFrmFmt();
+ const SwFmtFrmSize& rLSz = pBoxFmt->GetFrmSize();
+
+ pWidths->push_back(rLSz.GetWidth());
+ }
+ }
+ else
+ pWidths = pCellGrid->getWidthsOfRow(this);
+
+ return pWidths;
+}
+
+RowSpansPtr WW8TableNodeInfoInner::getRowSpansOfRow()
+{
+ RowSpansPtr pResult(new RowSpans);
+
+ WW8TableCellGrid::Pointer_t pCellGrid =
+ mpParent->getParent()->getCellGridForTable(getTable(), false);
+
+ if (pCellGrid.get() == NULL)
+ {
+ const SwTableBox * pTabBox = getTableBox();
+ const SwTableLine * pTabLine = pTabBox->GetUpper();
+ const SwTableBoxes & rTabBoxes = pTabLine->GetTabBoxes();
+
+ sal_uInt32 nBoxes = rTabBoxes.Count();
+ if (nBoxes > 32)
+ nBoxes = 32;
+
+ for (sal_uInt32 n = 0; n < nBoxes; ++n)
+ {
+ pResult->push_back(rTabBoxes[n]->getRowSpan());
+ }
+ }
+ else
+ pResult = pCellGrid->getRowSpansOfRow(this);
+
+ return pResult;
+ }
+
const SwTableBox * WW8TableNodeInfoInner::getTableBox() const
{
return mpTableBox;
@@ -136,30 +306,41 @@ const SwTable * WW8TableNodeInfoInner::getTable() const
return mpTable;
}
+const SwRect & WW8TableNodeInfoInner::getRect() const
+{
+ return maRect;
+}
+
string WW8TableNodeInfoInner::toString() const
{
static char buffer[256];
snprintf(buffer, sizeof(buffer),
- "<tableinner depth=\"%" SAL_PRIxUINT32 "\""
- " cell=\"%" SAL_PRIxUINT32 "\""
- " row=\"%" SAL_PRIxUINT32 "\""
+ "<tableinner depth=\"%" SAL_PRIuUINT32 "\""
+ " cell=\"%" SAL_PRIuUINT32 "\""
+ " row=\"%" SAL_PRIuUINT32 "\""
" endOfCell=\"%s\""
- " endOfLine=\"%s\"/>",
+ " endOfLine=\"%s\""
+ " shadowsBefore=\"%" SAL_PRIuUINT32 "\""
+ " shadowsAfter=\"%" SAL_PRIuUINT32 "\""
+ " vertMerge=\"%s\"/>",
mnDepth, mnCell, mnRow,
mbEndOfCell ? "yes" : "no",
- mbEndOfLine ? "yes" : "no");
+ mbEndOfLine ? "yes" : "no",
+ mnShadowsBefore,
+ mnShadowsAfter,
+ mbVertMerge ? "yes" : "no");
return string(buffer);
}
-
// WW8TableTextNodeInfo
-WW8TableNodeInfo::WW8TableNodeInfo(const SwNode * pNode)
-:
- mnDepth(0),
- mpNode(pNode),
- mpNext(NULL),
- mpNextNode(NULL)
+WW8TableNodeInfo::WW8TableNodeInfo(WW8TableInfo * pParent,
+ const SwNode * pNode)
+: mpParent(pParent),
+ mnDepth(0),
+ mpNode(pNode),
+ mpNext(NULL),
+ mpNextNode(NULL)
{
}
@@ -171,8 +352,8 @@ WW8TableNodeInfo::~WW8TableNodeInfo()
{
static char buffer[1024];
snprintf(buffer, sizeof(buffer),
- "<tableNodeInfo depth=\"%" SAL_PRIxUINT32 "\">"
- , getDepth());
+ "<tableNodeInfo p=\"%p\" depth=\"%" SAL_PRIuUINT32 "\">"
+ ,this, getDepth());
::std::string sResult(buffer);
@@ -186,16 +367,13 @@ WW8TableNodeInfo::~WW8TableNodeInfo()
aIt++;
}
-
#ifdef DEBUG
sResult += dbg_out(*mpNode);
#endif
-
- sResult +="</tableNodeInfo>";
+ sResult += "</tableNodeInfo>";
return sResult;
}
-
void WW8TableNodeInfo::setDepth(sal_uInt32 nDepth)
{
mnDepth = nDepth;
@@ -230,6 +408,31 @@ void WW8TableNodeInfo::setEndOfCell(bool bEndOfCell)
#endif
}
+void WW8TableNodeInfo::setFirstInTable(bool bFirstInTable)
+{
+ WW8TableNodeInfoInner::Pointer_t pInner = getInnerForDepth(mnDepth);
+
+ pInner->setFirstInTable(bFirstInTable);
+
+#ifdef DEBUG
+ ::std::clog << "<firstInTable depth=\"" << mnDepth << "\">"
+ << toString() << "</firstInTable>" << ::std::endl;
+#endif
+}
+
+void WW8TableNodeInfo::setVertMerge(bool bVertMerge)
+{
+ WW8TableNodeInfoInner::Pointer_t pInner = getInnerForDepth(mnDepth);
+
+ pInner->setVertMerge(bVertMerge);
+
+
+#ifdef DEBUG
+ ::std::clog << "<vertMerge depth=\"" << mnDepth << "\">"
+ << toString() << "</vertMerge>" << ::std::endl;
+#endif
+}
+
void WW8TableNodeInfo::setTableBox(const SwTableBox * pTableBox)
{
getInnerForDepth(mnDepth)->setTableBox(pTableBox);
@@ -251,9 +454,14 @@ void WW8TableNodeInfo::setNext(WW8TableNodeInfo * pNext)
#endif
}
-void WW8TableNodeInfo::setNextNode(SwNode * pNode)
+void WW8TableNodeInfo::setNextNode(const SwNode * pNode)
+{
+ mpNextNode = pNode;
+}
+
+void WW8TableNodeInfo::setRect(const SwRect & rRect)
{
- mpNode = pNode;
+ getInnerForDepth(mnDepth)->setRect(rRect);
}
void WW8TableNodeInfo::setCell(sal_uInt32 nCell)
@@ -266,6 +474,21 @@ void WW8TableNodeInfo::setRow(sal_uInt32 nRow)
getInnerForDepth(mnDepth)->setRow(nRow);
}
+void WW8TableNodeInfo::setShadowsBefore(sal_uInt32 nShadowsBefore)
+{
+ getInnerForDepth(mnDepth)->setShadowsBefore(nShadowsBefore);
+}
+
+void WW8TableNodeInfo::setShadowsAfter(sal_uInt32 nShadowsAfter)
+{
+ getInnerForDepth(mnDepth)->setShadowsAfter(nShadowsAfter);
+}
+
+WW8TableInfo * WW8TableNodeInfo::getParent() const
+{
+ return mpParent;
+}
+
sal_uInt32 WW8TableNodeInfo::getDepth() const
{
if (mInners.size() > 0)
@@ -294,11 +517,16 @@ WW8TableNodeInfo * WW8TableNodeInfo::getNext() const
return mpNext;
}
-SwNode * WW8TableNodeInfo::getNextNode() const
+const SwNode * WW8TableNodeInfo::getNextNode() const
{
return mpNextNode;
}
+const SwRect & WW8TableNodeInfo::getRect() const
+{
+ return getInnerForDepth(mnDepth)->getRect();
+}
+
bool WW8TableNodeInfo::isEndOfLine() const
{
return getInnerForDepth(mnDepth)->isEndOfLine();
@@ -357,21 +585,92 @@ WW8TableInfo::~WW8TableInfo()
{
}
+WW8TableNodeInfo *
+WW8TableInfo::processSwTableByLayout(const SwTable * pTable)
+{
+ SwTableCellInfo aTableCellInfo(pTable);
+ WW8TableNodeInfo * pPrev = NULL;
+
+ while (aTableCellInfo.getNext())
+ {
+ SwRect aRect = aTableCellInfo.getRect();
+
+#ifdef DEBUG
+ static char sBuffer[1024];
+ ::std::clog << "<CellFrm>" << ::std::endl;
+
+ snprintf(sBuffer, sizeof(sBuffer),
+ "<rect top=\"%ld\" bottom=\"%ld\" left=\"%ld\" right=\"%ld\"/>",
+ aRect.Top(), aRect.Bottom(), aRect.Left(), aRect.Right());
+ ::std::clog << sBuffer << ::std::endl;
+#endif
+ const SwTableBox * pTableBox = aTableCellInfo.getTableBox();
+ const SwStartNode * pSttNd = pTableBox->GetSttNd();
+
+ if (pSttNd != NULL)
+ {
+ SwPaM aPam(*pSttNd, 0);
+
+ bool bDone = false;
+ do
+ {
+ SwNode & rNode = aPam.GetPoint()->nNode.GetNode();
+
+ insertTableNodeInfo(&rNode, pTable, pTableBox, 0, 0, 1, & aRect);
+
+ if (rNode.IsEndNode())
+ {
+ SwEndNode * pEndNode = rNode.GetEndNode();
+ SwStartNode * pTmpSttNd = pEndNode->StartOfSectionNode();
+
+ if (pTmpSttNd == pSttNd)
+ bDone = true;
+ }
+
+ aPam.GetPoint()->nNode++;
+ }
+ while (!bDone);
+ }
+
+#ifdef DEBUG
+ ::std::clog << "</CellFrm>" << ::std::endl;
+#endif
+ }
+
+ pPrev = reorderByLayout(pTable);
+
+ return pPrev;
+}
+
void WW8TableInfo::processSwTable(const SwTable * pTable)
{
#ifdef DEBUG
::std::clog << "<processSwTable>" << ::std::endl;
#endif
- const SwTableLines & rLines = pTable->GetTabLines();
-
WW8TableNodeInfo * pPrev = NULL;
- for (USHORT n = 0; n < rLines.Count(); n++)
+ SwFrmFmt * pFrmFmt = pTable->GetFrmFmt();
+ if (pFrmFmt != NULL && pTable->IsTblComplex())
{
- const SwTableLine * pLine = rLines[n];
+ pPrev = processSwTableByLayout(pTable);
+
+#ifdef DEBUG
+ WW8TableCellGrid::Pointer_t pCellGrid(getCellGridForTable(pTable));
+ ::std::clog << pCellGrid->toString() << ::std::endl;
+#endif
+ }
+ else
+ {
+ const SwTableLines & rLines = pTable->GetTabLines();
+
+ for (USHORT n = 0; n < rLines.Count(); n++)
+ {
+ const SwTableLine * pLine = rLines[n];
+
+ pPrev = processTableLine(pTable, pLine, n, 1, pPrev);
+ }
- pPrev = processTableLine(pTable, pLine, n, 1, pPrev);
}
if (pPrev != NULL)
@@ -381,7 +680,6 @@ void WW8TableInfo::processSwTable(const SwTable * pTable)
pPrev->setNextNode(pEndNode);
}
-
#ifdef DEBUG
::std::clog << "</processSwTable>" << ::std::endl;
#endif
@@ -471,7 +769,6 @@ WW8TableInfo::processTableBoxLines(const SwTableBox * pBox,
return pNodeInfo;
}
-
WW8TableNodeInfo *
WW8TableInfo::processTableBox(const SwTable * pTable,
const SwTableBox * pBox,
@@ -573,13 +870,15 @@ WW8TableNodeInfo::Pointer_t WW8TableInfo::insertTableNodeInfo
const SwTableBox * pTableBox,
sal_uInt32 nRow,
sal_uInt32 nCell,
- sal_uInt32 nDepth)
+ sal_uInt32 nDepth,
+ SwRect * pRect)
{
WW8TableNodeInfo::Pointer_t pNodeInfo = getTableNodeInfo(pNode);
if (pNodeInfo.get() == NULL)
{
- pNodeInfo = WW8TableNodeInfo::Pointer_t(new WW8TableNodeInfo(pNode));
+ pNodeInfo =
+ WW8TableNodeInfo::Pointer_t(new WW8TableNodeInfo(this, pNode));
mMap.insert(Map_t::value_type(pNode, pNodeInfo));
}
@@ -591,6 +890,24 @@ WW8TableNodeInfo::Pointer_t WW8TableInfo::insertTableNodeInfo
pNodeInfo->setCell(nCell);
pNodeInfo->setRow(nRow);
+ if (pNode->IsTxtNode())
+ {
+ FirstInTableMap_t::const_iterator aIt = mFirstInTableMap.find(pTable);
+ if (aIt == mFirstInTableMap.end())
+ {
+ mFirstInTableMap[pTable] = pNode;
+ pNodeInfo->setFirstInTable(true);
+ }
+ }
+
+ if (pRect)
+ {
+ WW8TableCellGrid::Pointer_t pCellGrid = getCellGridForTable(pTable);
+
+ pCellGrid->insert(*pRect, pNodeInfo.get());
+ pNodeInfo->setRect(*pRect);
+ }
+
#ifdef DEBUG
::std::clog << pNodeInfo->toString() << ::std::endl;
#endif
@@ -598,6 +915,26 @@ WW8TableNodeInfo::Pointer_t WW8TableInfo::insertTableNodeInfo
return pNodeInfo;
}
+WW8TableCellGrid::Pointer_t WW8TableInfo::getCellGridForTable
+(const SwTable * pTable, bool bCreate)
+{
+ WW8TableCellGrid::Pointer_t pResult;
+ CellGridMap_t::iterator aIt = mCellGridMap.find(pTable);
+
+ if (aIt == mCellGridMap.end())
+ {
+ if (bCreate)
+ {
+ pResult = WW8TableCellGrid::Pointer_t(new WW8TableCellGrid);
+ mCellGridMap[pTable] = pResult;
+ }
+ }
+ else
+ pResult = mCellGridMap[pTable];
+
+ return pResult;
+}
+
WW8TableNodeInfo::Pointer_t WW8TableInfo::getTableNodeInfo
(const SwNode * pNode)
{
@@ -624,7 +961,7 @@ const SwNode * WW8TableInfo::getNextNode(const SwNode * pNode)
pResult = pNextInfo->getNode();
else
{
- SwNode * pNextNode = pNodeInfo->getNextNode();
+ const SwNode * pNextNode = pNodeInfo->getNextNode();
if (pNextNode != NULL)
pResult = pNextNode;
@@ -634,4 +971,547 @@ const SwNode * WW8TableInfo::getNextNode(const SwNode * pNode)
return pResult;
}
+bool WW8TableNodeInfo::operator < (const WW8TableNodeInfo & rInfo) const
+{
+ bool bRet = false;
+
+ if (rInfo.mpNode != NULL)
+ {
+ if (mpNode == NULL)
+ {
+ bRet = true;
+ }
+ else
+ {
+ if (mpNode->GetIndex() < rInfo.mpNode->GetIndex())
+ bRet = true;
+ }
+ }
+
+ return bRet;
+}
+
+bool CellInfo::operator < (const CellInfo & aCellInfo) const
+{
+ bool aRet = false;
+
+ if (top() < aCellInfo.top())
+ aRet = true;
+ else if (top() == aCellInfo.top())
+ {
+ if (left() < aCellInfo.left())
+ aRet = true;
+ else if (left() == aCellInfo.left())
+ {
+ if (width() < aCellInfo.width())
+ aRet = true;
+ else if (width() == aCellInfo.width())
+ {
+ if (height() < aCellInfo.height())
+ aRet = true;
+ else if (height() == aCellInfo.height())
+ {
+ if (aCellInfo.getTableNodeInfo() != NULL)
+ {
+ if (m_pNodeInfo == NULL)
+ aRet = true;
+ else
+ {
+ aRet = *m_pNodeInfo < *aCellInfo.getTableNodeInfo();
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return aRet;
+}
+
+::std::string CellInfo::toString() const
+{
+ static char sBuffer[256];
+
+ snprintf(sBuffer, sizeof(sBuffer),
+ "<cellinfo left=\"%ld\""
+ " right=\"%ld\""
+ " top=\"%ld\""
+ " bottom=\"%ld\""
+ " node=\"%p\"/>",
+ left(),
+ right(),
+ top(),
+ bottom(),
+ m_pNodeInfo);
+
+ return sBuffer;
+}
+
+WW8TableNodeInfo * WW8TableInfo::reorderByLayout(const SwTable * pTable)
+{
+ WW8TableNodeInfo * pPrev = NULL;
+ WW8TableCellGrid::Pointer_t pCellGrid = getCellGridForTable(pTable);
+
+#ifdef DEBUG
+ ::std::clog << pCellGrid->toString() << ::std::endl;
+#endif
+
+ pCellGrid->addShadowCells();
+ pPrev = pCellGrid->connectCells();
+
+ return pPrev;
+}
+
+WW8TableCellGrid::WW8TableCellGrid()
+{
+}
+
+WW8TableCellGrid::~WW8TableCellGrid()
+{
+}
+
+WW8TableCellGridRow::Pointer_t WW8TableCellGrid::getRow(long nTop, bool bCreate)
+{
+ WW8TableCellGridRow::Pointer_t pResult;
+
+ RowTops_t::iterator aIt = m_aRowTops.find(nTop);
+
+ if (aIt == m_aRowTops.end())
+ {
+ if (bCreate)
+ {
+ pResult = WW8TableCellGridRow::Pointer_t(new WW8TableCellGridRow);
+ m_aRows[nTop] = pResult;
+ m_aRowTops.insert(nTop);
+ }
+ }
+ else
+ pResult = m_aRows[nTop];
+
+ return pResult;
+}
+
+WW8TableCellGrid::RowTops_t::const_iterator WW8TableCellGrid::getRowTopsBegin() const
+{
+ return m_aRowTops.begin();
+}
+
+WW8TableCellGrid::RowTops_t::const_iterator WW8TableCellGrid::getRowTopsEnd() const
+{
+ return m_aRowTops.end();
+}
+
+CellInfoMultiSet::const_iterator WW8TableCellGrid::getCellsBegin(long nTop)
+{
+ return getRow(nTop)->begin();
+}
+
+CellInfoMultiSet::const_iterator WW8TableCellGrid::getCellsEnd(long nTop)
+{
+ return getRow(nTop)->end();
+}
+
+void WW8TableCellGrid::insert(const SwRect & rRect,
+ WW8TableNodeInfo * pNodeInfo,
+ unsigned long * pFmtFrmWidth)
+{
+ CellInfo aCellInfo(rRect, pNodeInfo);
+
+ if (pFmtFrmWidth != NULL)
+ aCellInfo.setFmtFrmWidth(*pFmtFrmWidth);
+
+ WW8TableCellGridRow::Pointer_t pRow = getRow(rRect.Top());
+ pRow->insert(aCellInfo);
+}
+
+void WW8TableCellGrid::addShadowCells()
+{
+#ifdef DEBUG
+ ::std::clog << "<addShadowCells>" << ::std::endl;
+#endif
+
+ RowTops_t::const_iterator aTopsIt = getRowTopsBegin();
+
+ while (aTopsIt != getRowTopsEnd())
+ {
+#ifdef DEBUG
+ long nTop = *aTopsIt;
+ (void) nTop;
+#endif
+ CellInfoMultiSet::const_iterator aCellIt = getCellsBegin(*aTopsIt);
+ CellInfoMultiSet::const_iterator aCellEndIt = getCellsEnd(*aTopsIt);
+
+ RowSpansPtr pRowSpans(new RowSpans);
+
+ bool bBeginningOfCell = true;
+ bool bVertMerge = false;
+ SwRect aRect = aCellIt->getRect();
+ long nRowSpan = 1;
+ while (aCellIt != aCellEndIt)
+ {
+ WW8TableNodeInfo * pNodeInfo = aCellIt->getTableNodeInfo();
+
+ if (bBeginningOfCell)
+ {
+ RowTops_t::const_iterator aRowSpanIt(aTopsIt);
+ aRowSpanIt++;
+
+ if (aRowSpanIt != getRowTopsEnd() &&
+ *aRowSpanIt < aCellIt->bottom())
+ {
+ aRect.Top(*aRowSpanIt);
+ unsigned long nFmtFrmWidth = aCellIt->getFmtFrmWidth();
+ insert(aRect, NULL, &nFmtFrmWidth);
+
+ bVertMerge = true;
+ }
+ else
+ bVertMerge = false;
+
+ nRowSpan = 1;
+ while (aRowSpanIt != getRowTopsEnd() &&
+ *aRowSpanIt < aCellIt->bottom())
+ {
+ aRowSpanIt++;
+ nRowSpan++;
+ }
+
+ if (pNodeInfo != NULL)
+ pRowSpans->push_back(nRowSpan);
+ else
+ pRowSpans->push_back(-nRowSpan);
+ }
+
+ if (pNodeInfo != NULL)
+ {
+ pNodeInfo->setVertMerge(bVertMerge);
+ }
+
+ aCellIt++;
+
+ bBeginningOfCell = (aRect.Left() != aCellIt->left());
+ aRect = aCellIt->getRect();
+ }
+
+ WW8TableCellGridRow::Pointer_t pRow = getRow(*aTopsIt);
+ if (pRow.get() != NULL)
+ pRow->setRowSpans(pRowSpans);
+
+ aTopsIt++;
+ }
+#ifdef DEBUG
+ ::std::clog << "</addShadowCells>" << ::std::endl;
+#endif
+}
+
+WW8TableNodeInfo * WW8TableCellGrid::connectCells()
+{
+ RowTops_t::const_iterator aTopsIt = getRowTopsBegin();
+ sal_uInt32 nRow = 0;
+ WW8TableNodeInfo * pLastNodeInfo = NULL;
+
+ while (aTopsIt != getRowTopsEnd())
+ {
+ CellInfoMultiSet::const_iterator aCellIt = getCellsBegin(*aTopsIt);
+ CellInfoMultiSet::const_iterator aCellEndIt = getCellsEnd(*aTopsIt);
+ GridColsPtr pWidths(new Widths);
+ TableBoxVectorPtr pTableBoxes(new TableBoxVector);
+
+ sal_uInt32 nShadows = 0;
+ sal_uInt32 nCell = 0;
+ bool bBeginningOfCell = true;
+ WW8TableNodeInfo * pEndOfCellInfo = NULL;
+ sal_uInt32 nDepthInCell = 0;
+ while (aCellIt != aCellEndIt)
+ {
+ long nCellX = aCellIt->left();
+ WW8TableNodeInfo * pNodeInfo = aCellIt->getTableNodeInfo();
+ if (pNodeInfo != NULL)
+ {
+ const SwNode * pNode = pNodeInfo->getNode();
+
+ if (pNode->IsStartNode())
+ {
+ nDepthInCell++;
+ pEndOfCellInfo = NULL;
+ }
+
+ if (nDepthInCell == 1 && pNode->IsTxtNode())
+ pEndOfCellInfo = pNodeInfo;
+
+ pNodeInfo->setShadowsBefore(nShadows);
+ pNodeInfo->setCell(nCell);
+ pNodeInfo->setRow(nRow);
+ if (pLastNodeInfo != NULL)
+ {
+ pLastNodeInfo->setNext(pNodeInfo);
+ pLastNodeInfo->setNextNode(pNode);
+ }
+ pLastNodeInfo = pNodeInfo;
+ nShadows = 0;
+
+ if (pNode->IsEndNode())
+ {
+ nDepthInCell--;
+
+ if (nDepthInCell == 0 && pEndOfCellInfo == NULL)
+ pEndOfCellInfo = pNodeInfo;
+ }
+ }
+ else
+ {
+ nShadows++;
+ }
+
+ if (bBeginningOfCell)
+ {
+ pWidths->push_back(aCellIt->getFmtFrmWidth());
+
+ if (pNodeInfo != NULL)
+ pTableBoxes->push_back(pNodeInfo->getTableBox());
+ else
+ pTableBoxes->push_back(NULL);
+ }
+
+ aCellIt++;
+ bBeginningOfCell = false;
+
+ if (aCellIt != aCellEndIt && aCellIt->left() != nCellX)
+ {
+ nCell++;
+ bBeginningOfCell = true;
+
+ if (pEndOfCellInfo != NULL)
+ {
+ pEndOfCellInfo->setEndOfCell(true);
+ }
+
+ pEndOfCellInfo = NULL;
+ }
+ }
+
+ pLastNodeInfo->setShadowsAfter(nShadows);
+
+ if (pEndOfCellInfo == NULL)
+ {
+ pEndOfCellInfo = pLastNodeInfo;
+ }
+
+ pEndOfCellInfo->setEndOfCell(true);
+ pLastNodeInfo->setEndOfLine(true);
+
+ WW8TableCellGridRow::Pointer_t pRow(getRow(*aTopsIt));
+ pRow->setTableBoxVector(pTableBoxes);
+ pRow->setWidths(pWidths);
+
+ nShadows = 0;
+
+ aTopsIt++;
+ nRow++;
+ }
+
+ return pLastNodeInfo;
+}
+
+string WW8TableCellGrid::toString()
+{
+ string sResult = "<WW8TableCellGrid>";
+
+ RowTops_t::const_iterator aTopsIt = getRowTopsBegin();
+ static char sBuffer[1024];
+ while (aTopsIt != getRowTopsEnd())
+ {
+ sprintf(sBuffer, "<row y=\"%ld\">", *aTopsIt);
+ sResult += sBuffer;
+
+ CellInfoMultiSet::const_iterator aCellIt = getCellsBegin(*aTopsIt);
+ CellInfoMultiSet::const_iterator aCellsEnd = getCellsEnd(*aTopsIt);
+
+ while (aCellIt != aCellsEnd)
+ {
+ snprintf(sBuffer, sizeof(sBuffer), "<cellInfo top=\"%ld\" bottom=\"%ld\" left=\"%ld\" right=\"%ld\">",
+ aCellIt->top(), aCellIt->bottom(), aCellIt->left(), aCellIt->right());
+ sResult += sBuffer;
+
+ WW8TableNodeInfo * pInfo = aCellIt->getTableNodeInfo();
+ if (pInfo != NULL)
+ sResult += pInfo->toString();
+ else
+ sResult += "<shadow/>\n";
+
+ sResult += "</cellInfo>\n";
+ aCellIt++;
+ }
+
+ WW8TableCellGridRow::Pointer_t pRow = getRow(*aTopsIt);
+ WidthsPtr pWidths = pRow->getWidths();
+ if (pWidths != NULL)
+ {
+ sResult += "<widths>";
+
+ Widths::const_iterator aItEnd = pWidths->end();
+ for (Widths::const_iterator aIt = pWidths->begin();
+ aIt != aItEnd;
+ aIt++)
+ {
+ if (aIt != pWidths->begin())
+ sResult += ", ";
+
+ snprintf(sBuffer, sizeof(sBuffer), "%" SAL_PRIxUINT32 "", *aIt);
+ sResult += sBuffer;
+ }
+
+ sResult += "</widths>";
+ }
+
+ RowSpansPtr pRowSpans = pRow->getRowSpans();
+ if (pRowSpans.get() != NULL)
+ {
+ sResult += "<rowspans>";
+
+ RowSpans::const_iterator aItEnd = pRowSpans->end();
+ for (RowSpans::const_iterator aIt = pRowSpans->begin();
+ aIt != aItEnd;
+ aIt++)
+ {
+ if (aIt != pRowSpans->begin())
+ sResult += ", ";
+
+ snprintf(sBuffer, sizeof(sBuffer), "%" SAL_PRIxUINT32 "", *aIt);
+ sResult += sBuffer;
+ }
+
+ sResult += "</rowspans>";
+ }
+
+ sResult += "</row>\n";
+ aTopsIt++;
+ }
+
+ sResult += "</WW8TableCellGrid>\n";
+
+ return sResult;
+}
+
+TableBoxVectorPtr WW8TableCellGrid::getTableBoxesOfRow
+(WW8TableNodeInfoInner * pNodeInfoInner)
+{
+ TableBoxVectorPtr pResult;
+ WW8TableCellGridRow::Pointer_t pRow =
+ getRow(pNodeInfoInner->getRect().Top(), false);
+
+ if (pRow.get() != NULL)
+ {
+ pResult = pRow->getTableBoxVector();
+ }
+
+ return pResult;
+}
+
+WidthsPtr WW8TableCellGrid::getWidthsOfRow
+(WW8TableNodeInfoInner * pNodeInfoInner)
+{
+ GridColsPtr pResult;
+
+ WW8TableCellGridRow::Pointer_t pRow =
+ getRow(pNodeInfoInner->getRect().Top(), false);
+
+ if (pRow.get() != NULL)
+ {
+ pResult = pRow->getWidths();
+ }
+
+ return pResult;
+}
+
+RowSpansPtr WW8TableCellGrid::getRowSpansOfRow
+(WW8TableNodeInfoInner * pNodeInfoInner)
+{
+ RowSpansPtr pResult;
+
+ WW8TableCellGridRow::Pointer_t pRow =
+ getRow(pNodeInfoInner->getRect().Top(), false);
+
+ if (pRow.get() != NULL)
+ {
+ pResult = pRow->getRowSpans();
+ }
+
+ return pResult;
+}
+
+WW8TableCellGridRow::WW8TableCellGridRow()
+: m_pCellInfos(new CellInfoMultiSet)
+{
+}
+
+WW8TableCellGridRow::~WW8TableCellGridRow()
+{
+}
+
+void WW8TableCellGridRow::insert(const CellInfo & rCellInfo)
+{
+ m_pCellInfos->insert(rCellInfo);
+
+#ifdef DEBUG
+ ::std::clog << "<gridRowInsert>"
+ << rCellInfo.toString()
+ << "</gridRowInsert>"
+ << ::std::endl;
+#endif
+}
+
+CellInfoMultiSet::const_iterator WW8TableCellGridRow::begin() const
+{
+ return m_pCellInfos->begin();
+}
+
+CellInfoMultiSet::const_iterator WW8TableCellGridRow::end() const
+{
+ return m_pCellInfos->end();
+}
+
+void WW8TableCellGridRow::setTableBoxVector(TableBoxVectorPtr pTableBoxVector)
+{
+ m_pTableBoxVector = pTableBoxVector;
+}
+
+void WW8TableCellGridRow::setWidths(WidthsPtr pWidths)
+{
+ m_pWidths = pWidths;
+}
+
+void WW8TableCellGridRow::setRowSpans(RowSpansPtr pRowSpans)
+{
+ m_pRowSpans = pRowSpans;
+}
+
+TableBoxVectorPtr WW8TableCellGridRow::getTableBoxVector() const
+{
+ return m_pTableBoxVector;
+}
+
+WidthsPtr WW8TableCellGridRow::getWidths() const
+{
+ return m_pWidths;
+}
+
+RowSpansPtr WW8TableCellGridRow::getRowSpans() const
+{
+ return m_pRowSpans;
+}
+
+CellInfo::CellInfo(const SwRect & aRect, WW8TableNodeInfo * pNodeInfo)
+: m_aRect(aRect), m_pNodeInfo(pNodeInfo), m_nFmtFrmWidth(0)
+{
+ if (pNodeInfo != NULL)
+ {
+ const SwTableBox * pBox = pNodeInfo->getTableBox();
+ const SwFrmFmt * pFrmFmt = pBox->GetFrmFmt();
+ const SwFmtFrmSize & rSize = pFrmFmt->GetFrmSize();
+
+ m_nFmtFrmWidth = rSize.GetWidth();
+ }
+}
+
}
diff --git a/sw/source/filter/ww8/WW8TableInfo.hxx b/sw/source/filter/ww8/WW8TableInfo.hxx
index 5dcf6ee1d0dc..b844615fecad 100644
--- a/sw/source/filter/ww8/WW8TableInfo.hxx
+++ b/sw/source/filter/ww8/WW8TableInfo.hxx
@@ -33,18 +33,29 @@
#include <functional>
#include <boost/shared_ptr.hpp>
#include <sal/types.h>
+#include <swrect.hxx>
class SwTable;
class SwTableLine;
class SwTableBox;
class SwNode;
class SwWW8Writer;
+class AttributeOutputBase;
namespace ww8
{
using namespace ::std;
class WW8TableNodeInfo;
+typedef boost::shared_ptr<SwRect> SwRectPtr;
+typedef ::std::vector<const SwTableBox *> TableBoxVector;
+typedef boost::shared_ptr<TableBoxVector> TableBoxVectorPtr;
+typedef ::std::vector<sal_uInt32> GridCols;
+typedef boost::shared_ptr<GridCols> GridColsPtr;
+typedef ::std::vector<sal_uInt32> RowSpans;
+typedef boost::shared_ptr<RowSpans> RowSpansPtr;
+typedef ::std::vector<sal_uInt32> Widths;
+typedef boost::shared_ptr<Widths> WidthsPtr;
class WW8TableNodeInfoInner
{
@@ -52,10 +63,15 @@ class WW8TableNodeInfoInner
sal_uInt32 mnDepth;
sal_uInt32 mnCell;
sal_uInt32 mnRow;
+ sal_uInt32 mnShadowsBefore;
+ sal_uInt32 mnShadowsAfter;
bool mbEndOfLine;
bool mbEndOfCell;
+ bool mbFirstInTable;
+ bool mbVertMerge;
const SwTableBox * mpTableBox;
const SwTable * mpTable;
+ SwRect maRect;
public:
typedef boost::shared_ptr<WW8TableNodeInfoInner> Pointer_t;
@@ -66,60 +82,90 @@ public:
void setDepth(sal_uInt32 nDepth);
void setCell(sal_uInt32 nCell);
void setRow(sal_uInt32 nRow);
+ void setShadowsBefore(sal_uInt32 nShadowsBefore);
+ void setShadowsAfter(sal_uInt32 nShadowsAfter);
void setEndOfLine(bool bEndOfLine);
void setEndOfCell(bool bEndOfCell);
+ void setFirstInTable(bool bFirstInTable);
+ void setVertMerge(bool bVertMErge);
void setTableBox(const SwTableBox * pTableBox);
void setTable(const SwTable * pTable);
+ void setRect(const SwRect & rRect);
sal_uInt32 getDepth() const;
sal_uInt32 getCell() const;
sal_uInt32 getRow() const;
+ sal_uInt32 getShadowsBefore() const;
+ sal_uInt32 getShadowsAfter() const;
bool isEndOfCell() const;
bool isEndOfLine() const;
+ bool isFirstInTable() const;
+ bool isVertMerge() const;
const SwTableBox * getTableBox() const;
const SwTable * getTable() const;
+ const SwRect & getRect() const;
const SwNode * getNode() const;
+ TableBoxVectorPtr getTableBoxesOfRow();
+ WidthsPtr getWidthsOfRow();
+ GridColsPtr getGridColsOfRow(AttributeOutputBase & rBase);
+ RowSpansPtr getRowSpansOfRow();
+
string toString() const;
};
+class CellInfo;
+typedef ::std::multiset<CellInfo, less<CellInfo> > CellInfoMultiSet;
+typedef boost::shared_ptr<CellInfoMultiSet> CellInfoMultiSetPtr;
+
+class WW8TableInfo;
class WW8TableNodeInfo
{
public:
- typedef map<sal_uInt32, WW8TableNodeInfoInner::Pointer_t, greater<sal_uInt32> > Inners_t;
+ typedef map<sal_uInt32, WW8TableNodeInfoInner::Pointer_t,
+ greater<sal_uInt32> > Inners_t;
private:
+ WW8TableInfo * mpParent;
sal_uInt32 mnDepth;
const SwNode * mpNode;
Inners_t mInners;
WW8TableNodeInfo * mpNext;
- SwNode * mpNextNode;
+ const SwNode * mpNextNode;
public:
typedef boost::shared_ptr<WW8TableNodeInfo> Pointer_t;
- WW8TableNodeInfo(const SwNode * pTxtNode);
+ WW8TableNodeInfo(WW8TableInfo * pParent, const SwNode * pTxtNode);
virtual ~WW8TableNodeInfo();
void setDepth(sal_uInt32 nDepth);
void setEndOfLine(bool bEndOfLine);
void setEndOfCell(bool bEndOfCell);
+ void setFirstInTable(bool bFirstInTable);
+ void setVertMerge(bool bVertMerge);
void setTableBox(const SwTableBox *pTableBox);
void setTable(const SwTable * pTable);
void setCell(sal_uInt32 nCell);
void setRow(sal_uInt32 nRow);
+ void setShadowsBefore(sal_uInt32 nShadowsBefore);
+ void setShadowsAfter(sal_uInt32 nShadowsAfter);
void setNext(WW8TableNodeInfo * pNext);
- void setNextNode(SwNode * pNode);
+ void setNextNode(const SwNode * pNode);
+ void setRect(const SwRect & rRect);
+ WW8TableInfo * getParent() const;
sal_uInt32 getDepth() const;
bool isEndOfLine() const;
bool isEndOfCell() const;
+ bool isFirstInTable() const;
const SwNode * getNode() const;
const SwTableBox * getTableBox() const;
const SwTable * getTable() const;
WW8TableNodeInfo * getNext() const;
- SwNode * getNextNode() const;
+ const SwNode * getNextNode() const;
+ const SwRect & getRect() const;
const Inners_t & getInners() const;
const WW8TableNodeInfoInner::Pointer_t getFirstInner() const;
@@ -129,6 +175,8 @@ public:
sal_uInt32 getRow() const;
::std::string toString() const;
+
+ bool operator < (const WW8TableNodeInfo & rInfo) const;
};
struct hashNode
@@ -137,11 +185,81 @@ struct hashNode
{ return reinterpret_cast<size_t>(pNode); }
};
+struct hashTable
+{
+ size_t operator()(const SwTable * pTable) const
+ { return reinterpret_cast<size_t>(pTable); }
+};
+
+class WW8TableCellGridRow
+{
+ CellInfoMultiSetPtr m_pCellInfos;
+ TableBoxVectorPtr m_pTableBoxVector;
+ WidthsPtr m_pWidths;
+ RowSpansPtr m_pRowSpans;
+
+public:
+ typedef boost::shared_ptr<WW8TableCellGridRow> Pointer_t;
+ WW8TableCellGridRow();
+ ~WW8TableCellGridRow();
+
+ void insert(const CellInfo & rCellInfo);
+ CellInfoMultiSet::const_iterator begin() const;
+ CellInfoMultiSet::const_iterator end() const;
+
+ void setTableBoxVector(TableBoxVectorPtr pTableBoxVector);
+ void setWidths(WidthsPtr pGridCols);
+ void setRowSpans(RowSpansPtr pRowSpans);
+
+ TableBoxVectorPtr getTableBoxVector() const;
+ WidthsPtr getWidths() const;
+ RowSpansPtr getRowSpans() const;
+};
+
+class WW8TableCellGrid
+{
+ typedef ::std::set<long> RowTops_t;
+ typedef ::std::map<long, WW8TableCellGridRow::Pointer_t> Rows_t;
+
+ RowTops_t m_aRowTops;
+ Rows_t m_aRows;
+
+ WW8TableCellGridRow::Pointer_t getRow(long nTop, bool bCreate = true);
+ RowTops_t::const_iterator getRowTopsBegin() const;
+ RowTops_t::const_iterator getRowTopsEnd() const;
+ CellInfoMultiSet::const_iterator getCellsBegin(long nTop);
+ CellInfoMultiSet::const_iterator getCellsEnd(long nTop);
+
+public:
+ typedef ::boost::shared_ptr<WW8TableCellGrid> Pointer_t;
+
+ WW8TableCellGrid();
+ ~WW8TableCellGrid();
+
+ void insert(const SwRect & rRect, WW8TableNodeInfo * pNodeInfo,
+ unsigned long * pFmtFrmWidth = NULL);
+ void addShadowCells();
+ WW8TableNodeInfo * connectCells();
+
+ string toString();
+
+ TableBoxVectorPtr getTableBoxesOfRow(WW8TableNodeInfoInner * pNodeInfo);
+ WidthsPtr getWidthsOfRow(WW8TableNodeInfoInner * pNodeInfo);
+ RowSpansPtr getRowSpansOfRow(WW8TableNodeInfoInner * pNodeInfo);
+};
+
class WW8TableInfo
{
+ friend class WW8TableNodeInfoInner;
typedef hash_map<const SwNode *, WW8TableNodeInfo::Pointer_t, hashNode > Map_t;
Map_t mMap;
+ typedef hash_map<const SwTable *, WW8TableCellGrid::Pointer_t, hashTable > CellGridMap_t;
+ CellGridMap_t mCellGridMap;
+
+ typedef hash_map<const SwTable *, const SwNode *, hashTable > FirstInTableMap_t;
+ FirstInTableMap_t mFirstInTableMap;
+
WW8TableNodeInfo *
processTableLine(const SwTable * pTable,
const SwTableLine * pTableLine,
@@ -169,7 +287,11 @@ class WW8TableInfo
const SwTableBox * pTableBox,
sal_uInt32 nRow,
sal_uInt32 nCell,
- sal_uInt32 nDepth);
+ sal_uInt32 nDepth,
+ SwRect * pRect = NULL);
+
+ WW8TableCellGrid::Pointer_t getCellGridForTable(const SwTable * pTable,
+ bool bCreate = true);
public:
typedef boost::shared_ptr<WW8TableInfo> Pointer_t;
@@ -178,8 +300,54 @@ public:
virtual ~WW8TableInfo();
void processSwTable(const SwTable * pTable);
+ WW8TableNodeInfo * processSwTableByLayout(const SwTable * pTable);
WW8TableNodeInfo::Pointer_t getTableNodeInfo(const SwNode * pNode);
const SwNode * getNextNode(const SwNode * pNode);
+ const WW8TableNodeInfo * getFirstTableNodeInfo() const;
+
+ WW8TableNodeInfo * reorderByLayout(const SwTable * pTable);
+};
+
+class CellInfo
+{
+ SwRect m_aRect;
+ WW8TableNodeInfo * m_pNodeInfo;
+ unsigned long m_nFmtFrmWidth;
+
+public:
+ CellInfo(const SwRect & aRect, WW8TableNodeInfo * pNodeInfo);
+
+ CellInfo(const CellInfo & aRectAndTableInfo)
+ : m_aRect(aRectAndTableInfo.m_aRect),
+ m_pNodeInfo(aRectAndTableInfo.m_pNodeInfo),
+ m_nFmtFrmWidth(aRectAndTableInfo.m_nFmtFrmWidth)
+ {
+ }
+
+ ~CellInfo() {}
+
+ bool operator < (const CellInfo & aCellInfo) const;
+
+ long top() const { return m_aRect.Top(); }
+ long bottom() const { return m_aRect.Bottom(); }
+ long left() const { return m_aRect.Left(); }
+ long right() const { return m_aRect.Right(); }
+ long width() const { return m_aRect.Width(); }
+ long height() const { return m_aRect.Height(); }
+ SwRect getRect() const { return m_aRect; }
+ WW8TableNodeInfo * getTableNodeInfo() const
+ { return m_pNodeInfo; }
+ unsigned long getFmtFrmWidth() const
+ {
+ return m_nFmtFrmWidth;
+ }
+
+ void setFmtFrmWidth(unsigned long nFmtFrmWidth)
+ {
+ m_nFmtFrmWidth = nFmtFrmWidth;
+ }
+
+ ::std::string toString() const;
};
}
diff --git a/sw/source/filter/ww8/attributeoutputbase.hxx b/sw/source/filter/ww8/attributeoutputbase.hxx
index 51a0d9de4374..6f69f8e591a5 100644
--- a/sw/source/filter/ww8/attributeoutputbase.hxx
+++ b/sw/source/filter/ww8/attributeoutputbase.hxx
@@ -232,6 +232,8 @@ public:
virtual void TableOrientation( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner ) = 0;
+ virtual void TableSpacing( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner ) = 0;
+
virtual void TableRowEnd( sal_uInt32 nDepth ) = 0;
/// Start of the styles table.
@@ -552,9 +554,7 @@ protected:
virtual bool AnalyzeURL( const String& rUrl, const String& rTarget, String* pLinkURL, String* pMark );
- std::vector<SwTwips> GetGridCols( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner );
-
- void GetTablePageSize( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner, sal_uInt32& rPageSize, bool& rRelBoxSize );
+ ww8::GridColsPtr GetGridCols( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner );
public:
AttributeOutputBase() {}
@@ -571,6 +571,11 @@ public:
/// Output frames.
void OutputFlyFrame( const sw::Frame& rFmt );
+
+ void GetTablePageSize
+ ( ww8::WW8TableNodeInfoInner * pTableTextNodeInfoInner,
+ sal_uInt32& rPageSize, bool& rRelBoxSize );
+
};
#endif // _ATTRIBUTEOUTPUTBASE_HXX_
diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx
index bb26e670928a..0a6151b98388 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -731,9 +731,7 @@ void DocxAttributeOutput::RunText( const String& rText, rtl_TextEncoding /*eChar
if ( *pIt < 0x0020 ) // filter out the control codes
{
impl_WriteRunText( m_pSerializer, nTextToken, pBegin, pIt );
-#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "Ignored control code %x in a text run.", *pIt );
-#endif
+ OSL_TRACE( "Ignored control code %x in a text run.", *pIt );
}
break;
}
@@ -744,23 +742,17 @@ void DocxAttributeOutput::RunText( const String& rText, rtl_TextEncoding /*eChar
void DocxAttributeOutput::RawText( const String& /*rText*/, bool /*bForceUnicode*/, rtl_TextEncoding /*eCharSet*/ )
{
-#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO DocxAttributeOutput::RawText( const String& rText, bool bForceUnicode, rtl_TextEncoding eCharSet )\n" );
-#endif
+ OSL_TRACE("TODO DocxAttributeOutput::RawText( const String& rText, bool bForceUnicode, rtl_TextEncoding eCharSet )\n" );
}
void DocxAttributeOutput::StartRuby( const SwTxtNode& /*rNode*/, const SwFmtRuby& /*rRuby*/ )
{
-#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO DocxAttributeOutput::StartRuby( const SwTxtNode& rNode, const SwFmtRuby& rRuby )\n" );
-#endif
+ OSL_TRACE("TODO DocxAttributeOutput::StartRuby( const SwTxtNode& rNode, const SwFmtRuby& rRuby )\n" );
}
void DocxAttributeOutput::EndRuby()
{
-#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO DocxAttributeOutput::EndRuby()\n" );
-#endif
+ OSL_TRACE( "TODO DocxAttributeOutput::EndRuby()\n" );
}
bool DocxAttributeOutput::AnalyzeURL( const String& rUrl, const String& rTarget, String* pLinkURL, String* pMark )
@@ -849,9 +841,7 @@ void DocxAttributeOutput::FieldVanish( const String& rTxt, ww::eField eType )
void DocxAttributeOutput::Redline( const SwRedlineData* /*pRedline*/ )
{
-#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO DocxAttributeOutput::Redline( const SwRedlineData* pRedline )\n" );
-#endif
+ OSL_TRACE( "TODO DocxAttributeOutput::Redline( const SwRedlineData* pRedline )\n" );
}
/// Append the number as 2-digit when less than 10.
@@ -936,9 +926,7 @@ void DocxAttributeOutput::StartRedline( const SwRedlineData* pRedlineData )
break;
case nsRedlineType_t::REDLINE_FORMAT:
-#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO DocxAttributeOutput::StartRedline()\n" );
-#endif
+ OSL_TRACE( "TODO DocxAttributeOutput::StartRedline()\n" );
default:
break;
}
@@ -960,9 +948,7 @@ void DocxAttributeOutput::EndRedline()
break;
case nsRedlineType_t::REDLINE_FORMAT:
-#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO DocxAttributeOutput::EndRedline()\n" );
-#endif
+ OSL_TRACE( "TODO DocxAttributeOutput::EndRedline()\n" );
break;
default:
break;
@@ -973,9 +959,7 @@ void DocxAttributeOutput::EndRedline()
void DocxAttributeOutput::FormatDrop( const SwTxtNode& /*rNode*/, const SwFmtDrop& /*rSwFmtDrop*/, USHORT /*nStyle*/, ww8::WW8TableNodeInfo::Pointer_t /*pTextNodeInfo*/, ww8::WW8TableNodeInfoInner::Pointer_t )
{
-#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO DocxAttributeOutput::FormatDrop( const SwTxtNode& rNode, const SwFmtDrop& rSwFmtDrop, USHORT nStyle )\n" );
-#endif
+ OSL_TRACE( "TODO DocxAttributeOutput::FormatDrop( const SwTxtNode& rNode, const SwFmtDrop& rSwFmtDrop, USHORT nStyle )\n" );
}
void DocxAttributeOutput::ParagraphStyle( USHORT nStyle )
@@ -990,7 +974,7 @@ void DocxAttributeOutput::ParagraphStyle( USHORT nStyle )
void DocxAttributeOutput::InTable()
{
#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO DocxAttributeOutput::InTable()\n" );
+ OSL_TRACE( "TODO DocxAttributeOutput::InTable()\n" );
#endif
}
@@ -998,7 +982,7 @@ void DocxAttributeOutput::InTable()
void DocxAttributeOutput::TableRowProperties( bool /*bHeader*/, long /*nCellHeight*/, bool /*bCannotSplit*/, bool /*bRightToLeft*/ )
{
#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO DocxAttributeOutput::TableRowProperties()\n" );
+ OSL_TRACE( "TODO DocxAttributeOutput::TableRowProperties()\n" );
#endif
}
#endif
@@ -1439,9 +1423,7 @@ void DocxAttributeOutput::TableVerticalCell( ww8::WW8TableNodeInfoInner::Pointer
void DocxAttributeOutput::TableNodeInfo( ww8::WW8TableNodeInfo::Pointer_t /*pNodeInfo*/ )
{
-#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO: DocxAttributeOutput::TableNodeInfo( ww8::WW8TableNodeInfo::Pointer_t pNodeInfo )\n" );
-#endif
+ OSL_TRACE( "TODO: DocxAttributeOutput::TableNodeInfo( ww8::WW8TableNodeInfo::Pointer_t pNodeInfo )\n" );
}
void DocxAttributeOutput::TableNodeInfoInner( ww8::WW8TableNodeInfoInner::Pointer_t pNodeInfoInner )
@@ -1455,16 +1437,19 @@ void DocxAttributeOutput::TableNodeInfoInner( ww8::WW8TableNodeInfoInner::Pointe
void DocxAttributeOutput::TableOrientation( ww8::WW8TableNodeInfoInner::Pointer_t /*pTableTextNodeInfoInner*/ )
{
+ OSL_TRACE( "TODO: DocxAttributeOutput::TableOrientation( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner )\n" );
+}
+
+void DocxAttributeOutput::TableSpacing( ww8::WW8TableNodeInfoInner::Pointer_t /*pTableTextNodeInfoInner*/ )
+{
#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO: DocxAttributeOutput::TableOrientation( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner )\n" );
+ fprintf( stderr, "TODO: DocxAttributeOutput::TableSpacing( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner )\n" );
#endif
}
void DocxAttributeOutput::TableRowEnd( sal_uInt32 /*nDepth*/ )
{
-#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO: DocxAttributeOutput::TableRowEnd( sal_uInt32 nDepth = 1 )\n" );
-#endif
+ OSL_TRACE( "TODO: DocxAttributeOutput::TableRowEnd( sal_uInt32 nDepth = 1 )\n" );
}
void DocxAttributeOutput::StartStyles()
@@ -1483,7 +1468,7 @@ void DocxAttributeOutput::DefaultStyle( USHORT nStyle )
{
// are these the values of enum ww::sti (see ../inc/wwstyles.hxx)?
#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO DocxAttributeOutput::DefaultStyle( USHORT nStyle )- %d\n", nStyle );
+ OSL_TRACE( "TODO DocxAttributeOutput::DefaultStyle( USHORT nStyle )- %d\n", nStyle );
#else
(void) nStyle; // to quiet the warning
#endif
@@ -1492,7 +1477,7 @@ void DocxAttributeOutput::DefaultStyle( USHORT nStyle )
void DocxAttributeOutput::FlyFrameGraphic( const SwGrfNode& rGrfNode, const Size& rSize )
{
#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO DocxAttributeOutput::FlyFrameGraphic( const SwGrfNode& rGrfNode, const Size& rSize ) - some stuff still missing\n" );
+ OSL_TRACE( "TODO DocxAttributeOutput::FlyFrameGraphic( const SwGrfNode& rGrfNode, const Size& rSize ) - some stuff still missing\n" );
#endif
// create the relation ID
OString aRelId;
@@ -1710,7 +1695,7 @@ void DocxAttributeOutput::OutputFlyFrame_Impl( const sw::Frame &rFrame, const Po
break;
default:
#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO DocxAttributeOutput::OutputFlyFrame_Impl( const sw::Frame& rFrame, const Point& rNdTopLeft ) - frame type '%s'\n",
+ OSL_TRACE( "TODO DocxAttributeOutput::OutputFlyFrame_Impl( const sw::Frame& rFrame, const Point& rNdTopLeft ) - frame type '%s'\n",
rFrame.GetWriterType() == sw::Frame::eTxtBox? "eTxtBox":
( rFrame.GetWriterType() == sw::Frame::eOle? "eOle":
( rFrame.GetWriterType() == sw::Frame::eFormControl? "eFormControl": "???" ) ) );
@@ -1839,7 +1824,7 @@ void DocxAttributeOutput::SectionBreak( BYTE nC, const WW8_SepInfo* pSectionInfo
break;
default:
#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "Unknown section break to write: %d\n", nC );
+ OSL_TRACE( "Unknown section break to write: %d\n", nC );
#endif
break;
}
@@ -1879,7 +1864,7 @@ void DocxAttributeOutput::SectionLineNumbering( ULONG /*nRestartNo*/, const SwLi
{
// see 2.6.8 lnNumType (Line Numbering Settings)
#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO DocxAttributeOutput::SectionLineNumbering()\n" );
+ OSL_TRACE( "TODO DocxAttributeOutput::SectionLineNumbering()\n" );
#endif
}
@@ -1965,7 +1950,7 @@ void DocxAttributeOutput::SectionPageNumbering( USHORT nNumType, USHORT nPageRes
// see 2.6.12 pgNumType (Page Numbering Settings)
#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO DocxAttributeOutput::SectionPageNumbering()\n" );
+ OSL_TRACE( "TODO DocxAttributeOutput::SectionPageNumbering()\n" );
#endif
}
@@ -2073,7 +2058,7 @@ void DocxAttributeOutput::NumberingDefinition( USHORT nId, const SwNumRule &rRul
#if OSL_DEBUG_LEVEL > 0
// TODO ww8 version writes this, anything to do about it here?
if ( rRule.IsContinusNum() )
- fprintf( stderr, "TODO DocxAttributeOutput::NumberingDefinition()\n" );
+ OSL_TRACE( "TODO DocxAttributeOutput::NumberingDefinition()\n" );
#else
(void) rRule; // to quiet the warning...
#endif
@@ -2265,7 +2250,7 @@ void DocxAttributeOutput::CharCrossedOut( const SvxCrossedOutItem& rCrossedOut )
void DocxAttributeOutput::CharEscapement( const SvxEscapementItem& /*rEscapement*/ )
{
#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO DocxAttributeOutput::CharEscapement()\n" );
+ OSL_TRACE( "TODO DocxAttributeOutput::CharEscapement()\n" );
#endif
}
@@ -2382,7 +2367,7 @@ void DocxAttributeOutput::CharWeight( const SvxWeightItem& rWeight )
void DocxAttributeOutput::CharAutoKern( const SvxAutoKernItem& )
{
#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO DocxAttributeOutput::CharAutoKern()\n" );
+ OSL_TRACE( "TODO DocxAttributeOutput::CharAutoKern()\n" );
#endif
}
@@ -2554,7 +2539,7 @@ void DocxAttributeOutput::TextINetFormat( const SwFmtINetFmt& rLink )
void DocxAttributeOutput::TextCharFormat( const SwFmtCharFmt& )
{
#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO DocxAttributeOutput::TextCharFormat()\n" );
+ OSL_TRACE( "TODO DocxAttributeOutput::TextCharFormat()\n" );
#endif
}
@@ -2577,14 +2562,14 @@ void DocxAttributeOutput::RefField( const SwField& rFld, const String& rRef )
void DocxAttributeOutput::HiddenField( const SwField& /*rFld*/ )
{
#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO DocxAttributeOutput::HiddenField()\n" );
+ OSL_TRACE( "TODO DocxAttributeOutput::HiddenField()\n" );
#endif
}
void DocxAttributeOutput::PostitField( const SwField* /* pFld*/ )
{
#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO DocxAttributeOutput::PostitField()\n" );
+ OSL_TRACE( "TODO DocxAttributeOutput::PostitField()\n" );
#endif
}
@@ -2970,7 +2955,7 @@ void DocxAttributeOutput::FormatFrameSize( const SwFmtFrmSize& rSize )
if ( m_rExport.bOutFlyFrmAttrs )
{
#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO DocxAttributeOutput::FormatFrameSize() - Fly frames\n" );
+ OSL_TRACE( "TODO DocxAttributeOutput::FormatFrameSize() - Fly frames\n" );
#endif
}
else if ( m_rExport.bOutPageDescs )
@@ -2993,7 +2978,7 @@ void DocxAttributeOutput::FormatFrameSize( const SwFmtFrmSize& rSize )
void DocxAttributeOutput::FormatPaperBin( const SvxPaperBinItem& )
{
#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO DocxAttributeOutput::FormatPaperBin()\n" );
+ OSL_TRACE( "TODO DocxAttributeOutput::FormatPaperBin()\n" );
#endif
}
@@ -3002,7 +2987,7 @@ void DocxAttributeOutput::FormatLRSpace( const SvxLRSpaceItem& rLRSpace )
if ( m_rExport.bOutFlyFrmAttrs )
{
#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "DocxAttributeOutput::FormatLRSpace() - Fly frames\n" );
+ OSL_TRACE( "DocxAttributeOutput::FormatLRSpace() - Fly frames\n" );
#endif
}
else if ( m_rExport.bOutPageDescs )
@@ -3093,28 +3078,28 @@ void DocxAttributeOutput::FormatULSpace( const SvxULSpaceItem& rULSpace )
void DocxAttributeOutput::FormatSurround( const SwFmtSurround& )
{
#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO DocxAttributeOutput::FormatSurround()\n" );
+ OSL_TRACE( "TODO DocxAttributeOutput::FormatSurround()\n" );
#endif
}
void DocxAttributeOutput::FormatVertOrientation( const SwFmtVertOrient& )
{
#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO DocxAttributeOutput::FormatVertOrientation()\n" );
+ OSL_TRACE( "TODO DocxAttributeOutput::FormatVertOrientation()\n" );
#endif
}
void DocxAttributeOutput::FormatHorizOrientation( const SwFmtHoriOrient& )
{
#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO DocxAttributeOutput::FormatHorizOrientation()\n" );
+ OSL_TRACE( "TODO DocxAttributeOutput::FormatHorizOrientation()\n" );
#endif
}
void DocxAttributeOutput::FormatAnchor( const SwFmtAnchor& )
{
#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO DocxAttributeOutput::FormatAnchor()\n" );
+ OSL_TRACE( "TODO DocxAttributeOutput::FormatAnchor()\n" );
#endif
}
@@ -3129,7 +3114,7 @@ void DocxAttributeOutput::FormatBackground( const SvxBrushItem& rBrush )
}
#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO DocxAttributeOutput::FormatBackground()\n" );
+ OSL_TRACE( "TODO DocxAttributeOutput::FormatBackground()\n" );
#endif
}
@@ -3215,9 +3200,7 @@ void DocxAttributeOutput::FormatKeep( const SvxFmtKeepItem& )
void DocxAttributeOutput::FormatTextGrid( const SwTextGridItem& )
{
-#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO DocxAttributeOutput::FormatTextGrid()\n" );
-#endif
+ OSL_TRACE( "TODO DocxAttributeOutput::FormatTextGrid()\n" );
}
void DocxAttributeOutput::FormatLineNumbering( const SwFmtLineNumber& rNumbering )
diff --git a/sw/source/filter/ww8/docxexport.cxx b/sw/source/filter/ww8/docxexport.cxx
index bbfec465973a..0962edd65085 100644
--- a/sw/source/filter/ww8/docxexport.cxx
+++ b/sw/source/filter/ww8/docxexport.cxx
@@ -342,9 +342,7 @@ void DocxExport::OutputField( const SwField* pFld, ww::eField eFldType, const St
void DocxExport::WriteFormData( const ::sw::mark::IFieldmark& /*rFieldmark*/ )
{
-#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO DocxExport::WriteFormData()\n" );
-#endif
+ OSL_TRACE( "TODO DocxExport::WriteFormData()\n" );
}
void DocxExport::DoComboBox(const rtl::OUString& rName,
@@ -404,9 +402,7 @@ void DocxExport::DoComboBox(const rtl::OUString& rName,
void DocxExport::DoFormText(const SwInputField* /*pFld*/)
{
-#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO DocxExport::ForFormText()\n" );
-#endif
+ OSL_TRACE( "TODO DocxExport::ForFormText()\n" );
}
void DocxExport::ExportDocument_Impl()
@@ -430,16 +426,14 @@ void DocxExport::ExportDocument_Impl()
void DocxExport::OutputPageSectionBreaks( const SwTxtNode& )
{
-#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO DocxExport::OutputPageSectionBreaks( const SwTxtNode& )\n" );
-#endif
+ OSL_TRACE( "TODO DocxExport::OutputPageSectionBreaks( const SwTxtNode& )\n" );
}
void DocxExport::AppendSection( const SwPageDesc *pPageDesc, const SwSectionFmt* pFmt, ULONG nLnNum )
{
AttrOutput().SectionBreak( msword::PageBreak, m_pSections->CurrentSectionInfo() );
- m_pSections->AppendSep( pPageDesc, pFmt, nLnNum );
+ m_pSections->AppendSection( pPageDesc, pFmt, nLnNum );
}
void DocxExport::OutputEndNode( const SwEndNode& rEndNode )
@@ -473,30 +467,24 @@ void DocxExport::OutputEndNode( const SwEndNode& rEndNode )
nRstLnNum = 0;
AttrOutput().SectionBreak( msword::PageBreak, m_pSections->CurrentSectionInfo( ) );
- m_pSections->AppendSep( pAktPageDesc, pParentFmt, nRstLnNum );
+ m_pSections->AppendSection( pAktPageDesc, pParentFmt, nRstLnNum );
}
}
}
void DocxExport::OutputTableNode( const SwTableNode& )
{
-#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO DocxExport::OutputTableNode( const SwTableNode& )\n" );
-#endif
+ OSL_TRACE( "TODO DocxExport::OutputTableNode( const SwTableNode& )\n" );
}
void DocxExport::OutputGrfNode( const SwGrfNode& )
{
-#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO DocxExport::OutputGrfNode( const SwGrfNode& )\n" );
-#endif
+ OSL_TRACE( "TODO DocxExport::OutputGrfNode( const SwGrfNode& )\n" );
}
void DocxExport::OutputOLENode( const SwOLENode& )
{
-#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "TODO DocxExport::OutputOLENode( const SwOLENode& )\n" );
-#endif
+ OSL_TRACE( "TODO DocxExport::OutputOLENode( const SwOLENode& )\n" );
}
ULONG DocxExport::ReplaceCr( BYTE )
@@ -521,11 +509,11 @@ void DocxExport::PrepareNewPageDesc( const SfxItemSet* pSet,
if ( pNewPgDescFmt )
{
- m_pSections->AppendSep( *pNewPgDescFmt, rNd, pFmt, nLnNm );
+ m_pSections->AppendSection( *pNewPgDescFmt, rNd, pFmt, nLnNm );
}
else if ( pNewPgDesc )
{
- m_pSections->AppendSep( pNewPgDesc, rNd, pFmt, nLnNm );
+ m_pSections->AppendSection( pNewPgDesc, rNd, pFmt, nLnNm );
}
}
diff --git a/sw/source/filter/ww8/docxexportfilter.cxx b/sw/source/filter/ww8/docxexportfilter.cxx
index 5f23f23a8dd5..13715fcd2bbe 100644
--- a/sw/source/filter/ww8/docxexportfilter.cxx
+++ b/sw/source/filter/ww8/docxexportfilter.cxx
@@ -47,7 +47,7 @@ DocxExportFilter::DocxExportFilter( const uno::Reference< lang::XMultiServiceFac
bool DocxExportFilter::exportDocument()
{
- fprintf( stderr, "DocxExportFilter::exportDocument()\n" ); // DEBUG remove me
+ OSL_TRACE(, "DocxExportFilter::exportDocument()\n" ); // DEBUG remove me
// get SwDoc*
uno::Reference< uno::XInterface > xIfc( getModel(), uno::UNO_QUERY );
diff --git a/sw/source/filter/ww8/dump/ww8scan.cxx b/sw/source/filter/ww8/dump/ww8scan.cxx
index f3e784643403..cd211520e083 100644
--- a/sw/source/filter/ww8/dump/ww8scan.cxx
+++ b/sw/source/filter/ww8/dump/ww8scan.cxx
@@ -31,12 +31,8 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil -*- */
-#ifndef __SGI_STL_ALGORITHM
#include <algorithm>
-#endif
-#ifndef __SGI_STL_FUNCTIONAL
#include <functional>
-#endif
#include <string.h> // memset()
#include <osl/endian.h>
diff --git a/sw/source/filter/ww8/dump/ww8scan.hxx b/sw/source/filter/ww8/dump/ww8scan.hxx
index 6ac516b541ee..7db1224704e3 100644
--- a/sw/source/filter/ww8/dump/ww8scan.hxx
+++ b/sw/source/filter/ww8/dump/ww8scan.hxx
@@ -297,8 +297,7 @@ class WW8PLCFx // virtueller Iterator fuer Piece Table Exceptions
public:
WW8PLCFx( BYTE nFibVersion, BOOL bSprm )
{ bIsSprm = bSprm; nVersion = nFibVersion; }
-
-// virtual ~WW8PLCFx() {}
+ virtual ~WW8PLCFx() {}
BOOL IsSprm() { return bIsSprm; }
virtual ULONG GetIdx() const = 0;
virtual void SetIdx( ULONG nIdx ) = 0;
diff --git a/sw/source/filter/ww8/writerhelper.cxx b/sw/source/filter/ww8/writerhelper.cxx
index 62a3726e5543..850e9b118fae 100644
--- a/sw/source/filter/ww8/writerhelper.cxx
+++ b/sw/source/filter/ww8/writerhelper.cxx
@@ -567,6 +567,7 @@ namespace sw
return aRet;
}
+#if 0
Frames GetFramesBetweenNodes(const Frames &rFrames,
const SwNode &rStart, const SwNode &rEnd)
{
@@ -580,7 +581,7 @@ namespace sw
return aRet;
}
-
+#endif
Frames GetFramesInNode(const Frames &rFrames, const SwNode &rNode)
{
Frames aRet;
diff --git a/sw/source/filter/ww8/writerhelper.hxx b/sw/source/filter/ww8/writerhelper.hxx
index a10330d5f3ec..ec149ee08326 100644
--- a/sw/source/filter/ww8/writerhelper.hxx
+++ b/sw/source/filter/ww8/writerhelper.hxx
@@ -663,6 +663,7 @@ namespace sw
*/
Frames GetFramesInNode(const Frames &rFrames, const SwNode &rNode);
+#if 0
/** Get the Frames anchored for all nodes between two points
Given a container of frames, find the ones anchored to the nodes
@@ -685,7 +686,7 @@ namespace sw
*/
Frames GetFramesBetweenNodes(const Frames &rFrames,
const SwNode &rStart, const SwNode &rEnd);
-
+#endif
/** Get the Numbering Format used on a paragraph
There are two differing types of numbering formats that may be on a
diff --git a/sw/source/filter/ww8/wrtw8esh.cxx b/sw/source/filter/ww8/wrtw8esh.cxx
index 6686ae5b13d7..7f1b6658800e 100644
--- a/sw/source/filter/ww8/wrtw8esh.cxx
+++ b/sw/source/filter/ww8/wrtw8esh.cxx
@@ -170,10 +170,20 @@ void WW8Export::DoComboBox(uno::Reference<beans::XPropertySet> xPropSet)
rtl::OUString sHelp;
{
- uno::Any aTmp = xPropSet->getPropertyValue(C2U("Help"));
- const rtl::OUString *pStr = (const rtl::OUString *)aTmp.getValue();
- if (pStr)
- sHelp = *pStr;
+ // --> OD 2010-05-14 #160026#
+ // property "Help" does not exist and due to the no-existence an exception is thrown.
+// uno::Any aTmp = xPropSet->getPropertyValue(C2U("Help"));
+ try
+ {
+ uno::Any aTmp = xPropSet->getPropertyValue(C2U("HelpText"));
+ // <--
+ const rtl::OUString *pStr = (const rtl::OUString *)aTmp.getValue();
+ if (pStr)
+ sHelp = *pStr;
+ }
+ catch( uno::Exception& )
+ {}
+ // <--
}
rtl::OUString sToolTip;
@@ -270,25 +280,10 @@ void WW8Export::DoCheckBox(uno::Reference<beans::XPropertySet> xPropSet)
sal_Int16 nTemp = 0;
xPropSet->getPropertyValue(C2U("DefaultState")) >>= nTemp;
- sal_uInt32 nIsDefaultChecked(nTemp);
+ aFFData.setDefaultResult(nTemp);
xPropSet->getPropertyValue(C2U("State")) >>= nTemp;
- sal_uInt32 nIsChecked(nTemp);
-
- if (nIsDefaultChecked != nIsChecked)
- {
- switch (nIsChecked)
- {
- case false:
- aFFData.setResult(0);
- break;
- case true:
- aFFData.setResult(1);
- break;
- default:
- ASSERT(!this, "how did that happen");
- }
- }
+ aFFData.setResult(nTemp);
::rtl::OUString aStr;
static ::rtl::OUString sName(C2U("Name"));
diff --git a/sw/source/filter/ww8/wrtw8nds.cxx b/sw/source/filter/ww8/wrtw8nds.cxx
index 23fa8ecb2c34..6e6dcf813767 100644
--- a/sw/source/filter/ww8/wrtw8nds.cxx
+++ b/sw/source/filter/ww8/wrtw8nds.cxx
@@ -35,6 +35,10 @@
#include <algorithm>
#include <functional>
#include <iostream>
+#if OSL_DEBUG_LEVEL > 0
+# include <cstdio>
+#endif
+
#include <hintids.hxx>
#include <tools/urlobj.hxx>
#include <editeng/boxitem.hxx>
@@ -73,6 +77,7 @@
#include <doc.hxx>
#include <docary.hxx>
#include <swtable.hxx>
+#include <swtblfmt.hxx>
#include <section.hxx>
#include <pagedesc.hxx>
#include <swrect.hxx>
@@ -102,7 +107,7 @@
#include <ndgrf.hxx>
#include <ndole.hxx>
-
+#include <cstdio>
using namespace ::com::sun::star;
using namespace ::com::sun::star::i18n;
@@ -1895,6 +1900,17 @@ void MSWordExportBase::OutputTextNode( const SwTxtNode& rNode )
#endif
AttrOutput().TableInfoCell( pTextNodeInfoInner );
+ if (pTextNodeInfoInner->isFirstInTable())
+ {
+ const SwTable * pTable = pTextNodeInfoInner->getTable();
+ const SwTableFmt * pTabFmt =
+ dynamic_cast<const SwTableFmt *>(pTable->GetRegisteredIn());
+ if (pTabFmt != NULL)
+ {
+ if (pTabFmt->GetBreak().GetBreak() == SVX_BREAK_PAGE_BEFORE)
+ AttrOutput().PageBreakBefore(true);
+ }
+ }
}
if ( !bFlyInTable )
@@ -2709,7 +2725,7 @@ void MSWordExportBase::OutputContentNode( const SwCntntNode& rNode )
break;
default:
#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "Unhandled node, type == %d\n", rNode.GetNodeType() );
+ OSL_TRACE("Unhandled node, type == %d\n", rNode.GetNodeType() );
#endif
break;
}
diff --git a/sw/source/filter/ww8/wrtw8sty.cxx b/sw/source/filter/ww8/wrtw8sty.cxx
index 85fa45120ec4..70d0d043710c 100644
--- a/sw/source/filter/ww8/wrtw8sty.cxx
+++ b/sw/source/filter/ww8/wrtw8sty.cxx
@@ -435,7 +435,8 @@ void MSWordStyles::WriteProperties( const SwFmt* pFmt, bool bParProp, USHORT nPo
m_rExport.OutputFormat( *pFmt, bParProp, !bParProp );
- ASSERT( m_rExport.pCurrentStyle != pFmt, "current style was changed" ); // reset current style...
+ ASSERT( m_rExport.pCurrentStyle == pFmt, "current style was changed" );
+ // reset current style...
m_rExport.pCurrentStyle = NULL;
if ( bInsDefCharSiz ) // nicht abgeleitet v. anderem Style
@@ -912,10 +913,10 @@ MSWordSections::MSWordSections( MSWordExportBase& rExport )
SFX_ITEM_ON == pSet->GetItemState( RES_PAGEDESC, true, &pI ) &&
( (SwFmtPageDesc*)pI )->GetPageDesc() )
{
- AppendSep( *(SwFmtPageDesc*)pI, *pNd, pFmt, nRstLnNum );
+ AppendSection( *(SwFmtPageDesc*)pI, *pNd, pFmt, nRstLnNum );
}
else
- AppendSep( rExport.pAktPageDesc, pFmt, nRstLnNum );
+ AppendSection( rExport.pAktPageDesc, pFmt, nRstLnNum );
}
WW8_WrPlcSepx::WW8_WrPlcSepx( MSWordExportBase& rExport )
@@ -924,7 +925,7 @@ WW8_WrPlcSepx::WW8_WrPlcSepx( MSWordExportBase& rExport )
pAttrs( 0 ),
pTxtPos( 0 )
{
- // to be in sync with the AppendSep() call in the MSWordSections
+ // to be in sync with the AppendSection() call in the MSWordSections
// constructor
aCps.Insert( ULONG( 0 ), aCps.Count() );
}
@@ -987,7 +988,7 @@ const WW8_SepInfo* MSWordSections::CurrentSectionInfo()
return NULL;
}
-void MSWordSections::AppendSep( const SwPageDesc* pPd,
+void MSWordSections::AppendSection( const SwPageDesc* pPd,
const SwSectionFmt* pSectionFmt, ULONG nLnNumRestartNo )
{
aSects.Insert( WW8_SepInfo( pPd, pSectionFmt, nLnNumRestartNo ),
@@ -1000,10 +1001,10 @@ void WW8_WrPlcSepx::AppendSep( WW8_CP nStartCp, const SwPageDesc* pPd,
{
aCps.Insert( nStartCp, aCps.Count() );
- MSWordSections::AppendSep( pPd, pSectionFmt, nLnNumRestartNo );
+ AppendSection( pPd, pSectionFmt, nLnNumRestartNo );
}
-void MSWordSections::AppendSep( const SwFmtPageDesc& rPD,
+void MSWordSections::AppendSection( const SwFmtPageDesc& rPD,
const SwNode& rNd, const SwSectionFmt* pSectionFmt, ULONG nLnNumRestartNo )
{
WW8_SepInfo aI( rPD.GetPageDesc(), pSectionFmt, nLnNumRestartNo,
@@ -1017,7 +1018,7 @@ void WW8_WrPlcSepx::AppendSep( WW8_CP nStartCp, const SwFmtPageDesc& rPD,
{
aCps.Insert(nStartCp, aCps.Count());
- MSWordSections::AppendSep( rPD, rNd, pSectionFmt, nLnNumRestartNo );
+ AppendSection( rPD, rNd, pSectionFmt, nLnNumRestartNo );
}
// MSWordSections::SetNum() setzt in jeder Section beim 1. Aufruf den
diff --git a/sw/source/filter/ww8/wrtww8.cxx b/sw/source/filter/ww8/wrtww8.cxx
index 6bf7ecbb8cdf..952ab3f2767f 100644
--- a/sw/source/filter/ww8/wrtww8.cxx
+++ b/sw/source/filter/ww8/wrtww8.cxx
@@ -58,10 +58,12 @@
#include <filter/msfilter/msoleexp.hxx>
#include <filter/msfilter/msocximex.hxx>
#include <editeng/lrspitem.hxx>
+#include <editeng/ulspitem.hxx>
#include <editeng/boxitem.hxx>
#include <editeng/brshitem.hxx>
#include <swtypes.hxx>
#include <swrect.hxx>
+#include <swtblfmt.hxx>
#include <txatbase.hxx>
#include <fmtcntnt.hxx>
#include <fmtpdsc.hxx>
@@ -255,11 +257,28 @@ static void WriteDop( WW8Export& rWrt )
SwDocShell *pDocShell(rWrt.pDoc->GetDocShell());
DBG_ASSERT(pDocShell, "no SwDocShell");
uno::Reference<document::XDocumentProperties> xDocProps;
+ uno::Reference<beans::XPropertySet> xProps;
if (pDocShell) {
+ uno::Reference<lang::XComponent> xModelComp(pDocShell->GetModel(),
+ uno::UNO_QUERY);
+ xProps = uno::Reference<beans::XPropertySet>(xModelComp,
+ uno::UNO_QUERY);
uno::Reference<document::XDocumentPropertiesSupplier> xDPS(
- pDocShell->GetModel(), uno::UNO_QUERY_THROW);
+ xModelComp, uno::UNO_QUERY_THROW);
xDocProps = xDPS->getDocumentProperties();
DBG_ASSERT(xDocProps.is(), "DocumentProperties is null");
+
+ rDop.lKeyProtDoc = pDocShell->GetModifyPasswordHash();
+ }
+
+ if ((rWrt.pSepx && rWrt.pSepx->DocumentIsProtected()) ||
+ rDop.lKeyProtDoc != 0)
+ {
+ rDop.fProtEnabled = 1;
+ }
+ else
+ {
+ rDop.fProtEnabled = 0;
}
if (!xDocProps.is()) {
@@ -277,9 +296,8 @@ static void WriteDop( WW8Export& rWrt )
Date aD3(uDT.Day, uDT.Month, uDT.Year);
Time aT3(uDT.Hours, uDT.Minutes, uDT.Seconds, uDT.HundredthSeconds);
rDop.dttmLastPrint = sw::ms::DateTime2DTTM(DateTime(aD3,aT3));
- }
- rDop.fProtEnabled = rWrt.pSepx ? rWrt.pSepx->DocumentIsProtected() : 0;
+ }
// auch damit werden die DocStat-Felder in Kopf-/Fusszeilen nicht korrekt
// berechnet.
@@ -1023,7 +1041,8 @@ bool WW8_WrFkp::Combine()
return false;
if( nIMax )
memcpy( pFkp + ( nIMax + 1 ) * 4, pOfs, nIMax * nItemSize );
- DELETEZ( pOfs );
+ delete[] pOfs;
+ pOfs = 0;
((BYTE*)pFkp)[511] = nIMax;
bCombined = true;
@@ -1910,32 +1929,34 @@ void WW8AttributeOutput::TableInfoRow( ww8::WW8TableNodeInfoInner::Pointer_t pTa
TableBidi( pTableTextNodeInfoInner );
TableVerticalCell( pTableTextNodeInfoInner );
TableOrientation( pTableTextNodeInfoInner );
+ TableSpacing( pTableTextNodeInfoInner );
}
}
}
-static sal_uInt16 lcl_TCFlags(const SwTableBox * pBox)
+static sal_uInt16 lcl_TCFlags(const SwTableBox * pBox, long nRowSpan)
{
sal_uInt16 nFlags = 0;
- long nRowSpan = pBox->getRowSpan();
-
if (nRowSpan > 1)
nFlags |= (3 << 5);
else if (nRowSpan < 0)
nFlags |= (1 << 5);
- const SwFrmFmt * pFmt = pBox->GetFrmFmt();
- switch (pFmt->GetVertOrient().GetVertOrient())
+ if (pBox != NULL)
{
- case text::VertOrientation::CENTER:
- nFlags |= (1 << 7);
- break;
- case text::VertOrientation::BOTTOM:
- nFlags |= (2 << 7);
- break;
- default:
- break;
+ const SwFrmFmt * pFmt = pBox->GetFrmFmt();
+ switch (pFmt->GetVertOrient().GetVertOrient())
+ {
+ case text::VertOrientation::CENTER:
+ nFlags |= (1 << 7);
+ break;
+ case text::VertOrientation::BOTTOM:
+ nFlags |= (2 << 7);
+ break;
+ default:
+ break;
+ }
}
return nFlags;
@@ -2091,11 +2112,43 @@ void WW8AttributeOutput::TableOrientation( ww8::WW8TableNodeInfoInner::Pointer_t
}
}
+void WW8AttributeOutput::TableSpacing(ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner)
+{
+ const SwTable * pTable = pTableTextNodeInfoInner->getTable();
+ const SwTableFmt * pTableFmt = dynamic_cast<const SwTableFmt *>(pTable->GetRegisteredIn());
+
+ if (pTableFmt != NULL)
+ {
+ const SvxULSpaceItem & rUL = pTableFmt->GetULSpace();
+
+ if (rUL.GetUpper() > 0)
+ {
+ sal_uInt8 nPadding = 2;
+ sal_uInt8 nPcVert = 0;
+ sal_uInt8 nPcHorz = 0;
+
+ sal_uInt8 nTPc = (nPadding << 4) | (nPcVert << 2) | nPcHorz;
+
+ m_rWW8Export.InsUInt16(NS_sprm::LN_TPc);
+ m_rWW8Export.pO->Insert( nTPc, m_rWW8Export.pO->Count() );
+
+ m_rWW8Export.InsUInt16(NS_sprm::LN_TDyaAbs);
+ m_rWW8Export.InsUInt16(rUL.GetUpper());
+
+ m_rWW8Export.InsUInt16(NS_sprm::LN_TDyaFromText);
+ m_rWW8Export.InsUInt16(rUL.GetUpper());
+ }
+
+ if (rUL.GetLower() > 0)
+ {
+ m_rWW8Export.InsUInt16(NS_sprm::LN_TDyaFromTextBottom);
+ m_rWW8Export.InsUInt16(rUL.GetLower());
+ }
+ }
+}
+
void WW8AttributeOutput::TableDefinition( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner )
{
- const SwTableBox * pTabBox = pTableTextNodeInfoInner->getTableBox();
- const SwTableLine * pTabLine = pTabBox->GetUpper();
- const SwTableBoxes & rTabBoxes = pTabLine->GetTabBoxes();
const SwTable * pTable = pTableTextNodeInfoInner->getTable();
if ( pTable->GetRowsToRepeat() > pTableTextNodeInfoInner->getRow() )
@@ -2107,10 +2160,10 @@ void WW8AttributeOutput::TableDefinition( ww8::WW8TableNodeInfoInner::Pointer_t
m_rWW8Export.pO->Insert( 1, m_rWW8Export.pO->Count() );
}
+ ww8::TableBoxVectorPtr pTableBoxes =
+ pTableTextNodeInfoInner->getTableBoxesOfRow();
// number of cell written
- sal_uInt32 nBoxes = rTabBoxes.Count();
- if ( nBoxes > 32 )
- nBoxes = 32;
+ sal_uInt32 nBoxes = pTableBoxes->size();
// sprm header
m_rWW8Export.InsUInt16( NS_sprm::LN_TDefTable );
@@ -2161,86 +2214,71 @@ void WW8AttributeOutput::TableDefinition( ww8::WW8TableNodeInfoInner::Pointer_t
}
}
- sal_uInt32 n = 0;
- m_rWW8Export.InsUInt16( nTblOffset );
+ m_rWW8Export.InsUInt16( nTblOffset );
- std::vector<SwTwips> gridCols = GetGridCols( pTableTextNodeInfoInner );
- for ( std::vector<SwTwips>::const_iterator it = gridCols.begin(), end = gridCols.end(); it != end; ++it )
- {
- m_rWW8Export.InsUInt16( static_cast<USHORT>( *it ) + nTblOffset );
- }
+ ww8::GridColsPtr pGridCols = GetGridCols( pTableTextNodeInfoInner );
+ for ( ww8::GridCols::const_iterator it = pGridCols->begin(),
+ end = pGridCols->end(); it != end; ++it )
+ {
+ m_rWW8Export.InsUInt16( static_cast<USHORT>( *it ) + nTblOffset );
+ }
+
+ /* TCs */
+ ww8::RowSpansPtr pRowSpans = pTableTextNodeInfoInner->getRowSpansOfRow();
+ ww8::RowSpans::const_iterator aItRowSpans = pRowSpans->begin();
+ ww8::TableBoxVector::const_iterator aIt;
+ ww8::TableBoxVector::const_iterator aItEnd = pTableBoxes->end();
- /* TCs */
- for ( n = 0; n < nBoxes; n++ )
+#ifdef DEBUG
+ size_t nRowSpans = pRowSpans->size();
+ size_t nTableBoxes = pTableBoxes->size();
+ (void) nRowSpans;
+ (void) nTableBoxes;
+#endif
+
+ for( aIt = pTableBoxes->begin(); aIt != aItEnd; ++aIt, ++aItRowSpans)
{
#ifdef DEBUG
sal_uInt16 npOCount = m_rWW8Export.pO->Count();
#endif
- SwTableBox * pTabBox1 = rTabBoxes[n];
- const SwFrmFmt & rBoxFmt = *(pTabBox1->GetFrmFmt());
+ const SwTableBox * pTabBox1 = *aIt;
+ const SwFrmFmt * pBoxFmt = NULL;
+ if (pTabBox1 != NULL)
+ pBoxFmt = pTabBox1->GetFrmFmt();
+
if ( m_rWW8Export.bWrtWW8 )
{
- sal_uInt16 nFlags = lcl_TCFlags(pTabBox1);
- m_rWW8Export.InsUInt16( nFlags );
+ sal_uInt16 nFlags =
+ lcl_TCFlags(pTabBox1, *aItRowSpans);
+ m_rWW8Export.InsUInt16( nFlags );
}
static BYTE aNullBytes[] = { 0x0, 0x0 };
m_rWW8Export.pO->Insert( aNullBytes, 2, m_rWW8Export.pO->Count() ); // dummy
- m_rWW8Export.Out_SwFmtTableBox( *m_rWW8Export.pO, rBoxFmt.GetBox() ); // 8/16 Byte
+ if (pBoxFmt != NULL)
+ {
+ const SvxBoxItem & rBoxItem = pBoxFmt->GetBox();
+
+ m_rWW8Export.Out_SwFmtTableBox( *m_rWW8Export.pO, &rBoxItem ); // 8/16 Byte
+ }
+ else
+ m_rWW8Export.Out_SwFmtTableBox( *m_rWW8Export.pO, NULL); // 8/16 Byte
#ifdef DEBUG
::std::clog << "<tclength>" << m_rWW8Export.pO->Count() - npOCount << "</tclength>"
- << ::std::endl;
+ << ::std::endl;
#endif
}
}
-std::vector<SwTwips> AttributeOutputBase::GetGridCols( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner )
+ww8::GridColsPtr AttributeOutputBase::GetGridCols( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner )
{
- std::vector<SwTwips> gridCols;
-
- const SwTableBox * pTabBox = pTableTextNodeInfoInner->getTableBox();
- const SwTableLine * pTabLine = pTabBox->GetUpper();
- const SwTableBoxes & rTabBoxes = pTabLine->GetTabBoxes();
- const SwTable *pTable = pTableTextNodeInfoInner->getTable( );
-
- // number of cell written
- sal_uInt32 nBoxes = rTabBoxes.Count();
- if ( nBoxes > 32 )
- nBoxes = 32;
-
- const SwFrmFmt *pFmt = pTable->GetFrmFmt();
- ASSERT(pFmt,"Impossible");
- if (!pFmt)
- return gridCols;
-
- const SwFmtFrmSize &rSize = pFmt->GetFrmSize();
- unsigned long nTblSz = static_cast<unsigned long>(rSize.GetWidth());
-
- sal_uInt32 nPageSize = 0;
- bool bRelBoxSize = false;
-
- GetTablePageSize( pTableTextNodeInfoInner, nPageSize, bRelBoxSize );
-
- SwTwips nSz = 0;
- for ( sal_uInt32 n = 0; n < nBoxes; n++ )
- {
- const SwFrmFmt* pBoxFmt = rTabBoxes[ n ]->GetFrmFmt();
- const SwFmtFrmSize& rLSz = pBoxFmt->GetFrmSize();
- nSz += rLSz.GetWidth();
- SwTwips nCalc = nSz;
- if ( bRelBoxSize )
- nCalc = ( nCalc * nPageSize ) / nTblSz;
-
- gridCols.push_back( nCalc );
- }
-
- return gridCols;
+ return pTableTextNodeInfoInner->getGridColsOfRow(*this);
}
-void AttributeOutputBase::GetTablePageSize( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner, sal_uInt32& rPageSize, bool& rRelBoxSize )
+void AttributeOutputBase::GetTablePageSize( ww8::WW8TableNodeInfoInner * pTableTextNodeInfoInner, sal_uInt32& rPageSize, bool& rRelBoxSize )
{
sal_uInt32 nPageSize = 0;
@@ -2433,13 +2471,15 @@ typedef ::std::deque<SwNode *> SwNodeDeque;
void MSWordExportBase::WriteText()
{
-#ifdef DEBUG
- ::std::clog << "<WriteText>" << ::std::endl;
- ::std::clog << dbg_out(pCurPam->GetDoc()->GetNodes()) << ::std::endl;
-
- SwNodeHashSet aNodeSet;
- SwNodeDeque aNodeDeque;
-#endif
+// whoever has need of the missing function should go and implement it!
+// This piece of code always breaks builds...
+//#ifdef DEBUG
+// ::std::clog << "<WriteText>" << ::std::endl;
+// ::std::clog << dbg_out(pCurPam->GetDoc()->GetNodes()) << ::std::endl;
+//
+// SwNodeHashSet aNodeSet;
+// SwNodeDeque aNodeDeque;
+//#endif
while( pCurPam->GetPoint()->nNode < pCurPam->GetMark()->nNode ||
( pCurPam->GetPoint()->nNode == pCurPam->GetMark()->nNode &&
@@ -2447,6 +2487,9 @@ void MSWordExportBase::WriteText()
{
SwNode * pNd = pCurPam->GetNode();
+// whoever has need of the missing function should go and implement it!
+// This piece of code always breaks builds...
+#if 0
#ifdef DEBUG
if (aNodeSet.find(pNd) == aNodeSet.end())
{
@@ -2455,20 +2498,10 @@ void MSWordExportBase::WriteText()
}
else
{
- ::std::clog << "<already-done><which>" << dbg_out(*pNd)
- << "</which><nodes>" << ::std::endl;
-
- SwNodeDeque::const_iterator aEnd = aNodeDeque.end();
-
- for (SwNodeDeque::const_iterator aIt = aNodeDeque.begin();
- aIt != aEnd; aIt++)
- {
- ::std::clog << dbg_out(**aIt) << ::std::endl;
- }
-
- ::std::clog << "</nodes></already-done>" << ::std::endl;
+ ::std::clog << "<already-done>" << dbg_out(*pNd) << "</already-done>" << ::std::endl;
}
#endif
+#endif
if ( pNd->IsTxtNode() )
SectionBreaksAndFrames( *pNd->GetTxtNode() );
@@ -2522,6 +2555,10 @@ void MSWordExportBase::WriteText()
AppendSection( pAktPageDesc, pParentFmt, nRstLnNum );
}
}
+ else if ( pNd->IsStartNode() )
+ {
+ OutputStartNode( *pNd->GetStartNode() );
+ }
else if ( pNd->IsEndNode() )
{
OutputEndNode( *pNd->GetEndNode() );
@@ -2980,7 +3017,6 @@ void WW8Export::ExportDocument_Impl()
pFib = new WW8Fib( bWrtWW8 ? 8 : 6 );
- SvStream* pOldStrm = &(Strm()); // JP 19.05.99: wozu das ???
SvStorageStreamRef xWwStrm( GetWriter().GetStorage().OpenSotStream( aMainStg ) );
SvStorageStreamRef xTableStrm( xWwStrm ), xDataStrm( xWwStrm );
xWwStrm->SetBufferSize( 32768 );
@@ -3000,7 +3036,7 @@ void WW8Export::ExportDocument_Impl()
xDataStrm->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
}
- GetWriter().SetStrm( *xWwStrm );
+ GetWriter().SetStream( & *xWwStrm );
pTableStrm = &xTableStrm;
pDataStrm = &xDataStrm;
@@ -3022,7 +3058,8 @@ void WW8Export::ExportDocument_Impl()
{
bEncrypt =true;
- GetWriter().SetStrm( *aTempMain.GetStream( STREAM_READWRITE | STREAM_SHARE_DENYWRITE ) );
+ GetWriter().SetStream(
+ aTempMain.GetStream( STREAM_READWRITE | STREAM_SHARE_DENYWRITE ) );
pTableStrm = aTempTable.GetStream( STREAM_READWRITE | STREAM_SHARE_DENYWRITE );
@@ -3174,7 +3211,7 @@ void WW8Export::ExportDocument_Impl()
delete pPiece;
delete pDop;
delete pFib;
- GetWriter().SetStrm( *pOldStrm );
+ GetWriter().SetStream( 0 );
xWwStrm->SetBufferSize( 0 );
@@ -3684,6 +3721,30 @@ void WW8AttributeOutput::TableNodeInfoInner( ww8::WW8TableNodeInfoInner::Pointer
m_rWW8Export.pO->Remove( 0, m_rWW8Export.pO->Count() ); // leeren
+ sal_uInt32 nShadowsBefore = pNodeInfoInner->getShadowsBefore();
+ if (nShadowsBefore > 0)
+ {
+ ww8::WW8TableNodeInfoInner::Pointer_t
+ pTmpNodeInfoInner(new ww8::WW8TableNodeInfoInner(NULL));
+
+ pTmpNodeInfoInner->setDepth(pNodeInfoInner->getDepth());
+ pTmpNodeInfoInner->setEndOfCell(true);
+
+ for (sal_uInt32 n = 0; n < nShadowsBefore; ++n)
+ {
+ m_rWW8Export.WriteCR(pTmpNodeInfoInner);
+
+ m_rWW8Export.pO->Insert( (BYTE*)&nStyle, 2,
+ m_rWW8Export.pO->Count() ); // Style #
+ TableInfoCell(pTmpNodeInfoInner);
+ m_rWW8Export.pPapPlc->AppendFkpEntry
+ ( m_rWW8Export.Strm().Tell(), m_rWW8Export.pO->Count(),
+ m_rWW8Export.pO->GetData() );
+
+ m_rWW8Export.pO->Remove( 0, m_rWW8Export.pO->Count() ); // leeren
+ }
+ }
+
if (pNodeInfoInner->isEndOfCell())
{
#ifdef DEBUG
@@ -3699,6 +3760,28 @@ void WW8AttributeOutput::TableNodeInfoInner( ww8::WW8TableNodeInfoInner::Pointer
m_rWW8Export.pO->Remove( 0, m_rWW8Export.pO->Count() ); // leeren
}
+ sal_uInt32 nShadowsAfter = pNodeInfoInner->getShadowsAfter();
+ if (nShadowsAfter > 0)
+ {
+ ww8::WW8TableNodeInfoInner::Pointer_t
+ pTmpNodeInfoInner(new ww8::WW8TableNodeInfoInner(NULL));
+
+ pTmpNodeInfoInner->setDepth(pNodeInfoInner->getDepth());
+ pTmpNodeInfoInner->setEndOfCell(true);
+
+ for (sal_uInt32 n = 0; n < nShadowsAfter; ++n)
+ {
+ m_rWW8Export.WriteCR(pTmpNodeInfoInner);
+
+ m_rWW8Export.pO->Insert( (BYTE*)&nStyle, 2, m_rWW8Export.pO->Count() ); // Style #
+ TableInfoCell(pTmpNodeInfoInner);
+ m_rWW8Export.pPapPlc->AppendFkpEntry( m_rWW8Export.Strm().Tell(), m_rWW8Export.pO->Count(),
+ m_rWW8Export.pO->GetData() );
+
+ m_rWW8Export.pO->Remove( 0, m_rWW8Export.pO->Count() ); // leeren
+ }
+ }
+
if (pNodeInfoInner->isEndOfLine())
{
#ifdef DEBUG
@@ -3719,34 +3802,64 @@ void WW8AttributeOutput::TableNodeInfoInner( ww8::WW8TableNodeInfoInner::Pointer
#endif
}
-void MSWordExportBase::OutputEndNode( const SwEndNode &rNode )
+void MSWordExportBase::OutputStartNode( const SwStartNode & rNode)
{
#ifdef DEBUG
- ::std::clog << "<OutWW8_SwEndNode>" << dbg_out(&rNode) << ::std::endl;
+ ::std::clog << "<OutWW8_SwStartNode>" << dbg_out(&rNode) << ::std::endl;
#endif
- ww8::WW8TableNodeInfo::Pointer_t pNodeInfo = mpTableInfo->getTableNodeInfo( &rNode );
+ ww8::WW8TableNodeInfo::Pointer_t pNodeInfo =
+ mpTableInfo->getTableNodeInfo( &rNode );
- if (pNodeInfo)
+ if (pNodeInfo.get() != NULL)
{
- if (pNodeInfo.get() != NULL)
- {
#ifdef DEBUG
- ::std::clog << pNodeInfo->toString() << ::std::endl;
+ ::std::clog << pNodeInfo->toString() << ::std::endl;
#endif
- const ww8::WW8TableNodeInfo::Inners_t aInners = pNodeInfo->getInners();
- ww8::WW8TableNodeInfo::Inners_t::const_iterator aIt(aInners.begin());
- ww8::WW8TableNodeInfo::Inners_t::const_iterator aEnd(aInners.end());
- while (aIt != aEnd)
- {
- ww8::WW8TableNodeInfoInner::Pointer_t pInner = aIt->second;
- AttrOutput().TableNodeInfoInner(pInner);
- aIt++;
- }
+ const ww8::WW8TableNodeInfo::Inners_t aInners = pNodeInfo->getInners();
+ ww8::WW8TableNodeInfo::Inners_t::const_reverse_iterator aIt(aInners.rbegin());
+ ww8::WW8TableNodeInfo::Inners_t::const_reverse_iterator aEnd(aInners.rend());
+ while (aIt != aEnd)
+ {
+ ww8::WW8TableNodeInfoInner::Pointer_t pInner = aIt->second;
+
+ AttrOutput().TableNodeInfoInner(pInner);
+ aIt++;
}
}
#ifdef DEBUG
+ ::std::clog << "</OutWW8_SwStartNode>" << ::std::endl;
+#endif
+}
+
+void MSWordExportBase::OutputEndNode( const SwEndNode &rNode )
+{
+#ifdef DEBUG
+// whoever has need of the missing function should go and implement it!
+// This piece of code always breaks builds...
+// ::std::clog << "<OutWW8_SwEndNode>" << dbg_out(&rNode) << ::std::endl;
+#endif
+
+ ww8::WW8TableNodeInfo::Pointer_t pNodeInfo = mpTableInfo->getTableNodeInfo( &rNode );
+
+ if (pNodeInfo.get() != NULL)
+ {
+#ifdef DEBUG
+ ::std::clog << pNodeInfo->toString() << ::std::endl;
+#endif
+
+ const ww8::WW8TableNodeInfo::Inners_t aInners = pNodeInfo->getInners();
+ ww8::WW8TableNodeInfo::Inners_t::const_iterator aIt(aInners.begin());
+ ww8::WW8TableNodeInfo::Inners_t::const_iterator aEnd(aInners.end());
+ while (aIt != aEnd)
+ {
+ ww8::WW8TableNodeInfoInner::Pointer_t pInner = aIt->second;
+ AttrOutput().TableNodeInfoInner(pInner);
+ aIt++;
+ }
+ }
+#ifdef DEBUG
::std::clog << "</OutWW8_SwEndNode>" << ::std::endl;
#endif
}
diff --git a/sw/source/filter/ww8/wrtww8.hxx b/sw/source/filter/ww8/wrtww8.hxx
index 21295ba11ca4..3c2f0d4d6d13 100644
--- a/sw/source/filter/ww8/wrtww8.hxx
+++ b/sw/source/filter/ww8/wrtww8.hxx
@@ -190,12 +190,12 @@ protected:
MSWordSections& operator=( const MSWordSections& );
public:
MSWordSections( MSWordExportBase& rExport );
- ~MSWordSections();
+ virtual ~MSWordSections();
- void AppendSep( const SwPageDesc* pPd,
+ void AppendSection( const SwPageDesc* pPd,
const SwSectionFmt* pSectionFmt = 0,
ULONG nLnNumRestartNo = 0 );
- void AppendSep( const SwFmtPageDesc& rPd,
+ void AppendSection( const SwFmtPageDesc& rPd,
const SwNode& rNd,
const SwSectionFmt* pSectionFmt,
ULONG nLnNumRestartNo );
@@ -763,6 +763,9 @@ protected:
virtual bool DisallowInheritingOutlineNumbering(const SwFmt &rFmt) = 0;
protected:
+ /// Output SwStartNode
+ virtual void OutputStartNode( const SwStartNode& );
+
/// Output SwEndNode
virtual void OutputEndNode( const SwEndNode& );
@@ -1017,7 +1020,7 @@ public:
const SwPageDesc* pNewPgDesc = 0 );
void Out_SwFmtBox(const SvxBoxItem& rBox, bool bShadow);
- void Out_SwFmtTableBox( WW8Bytes& rO, const SvxBoxItem& rBox );
+ void Out_SwFmtTableBox( WW8Bytes& rO, const SvxBoxItem * rBox );
BYTE TransCol( const Color& rCol );
bool TransBrush(const Color& rCol, WW8_SHD& rShd);
WW8_BRC TranslateBorderLine(const SvxBorderLine& pLine,
diff --git a/sw/source/filter/ww8/wrtww8gr.cxx b/sw/source/filter/ww8/wrtww8gr.cxx
index 64e70d40dfdc..5d96a74b009d 100644
--- a/sw/source/filter/ww8/wrtww8gr.cxx
+++ b/sw/source/filter/ww8/wrtww8gr.cxx
@@ -30,6 +30,10 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil -*- */
+#if OSL_DEBUG_LEVEL > 0
+# include <cstdio>
+#endif
+
#include <com/sun/star/embed/XEmbedPersist.hpp>
#include <com/sun/star/embed/Aspects.hpp>
#include <rtl/math.hxx>
@@ -73,6 +77,7 @@
#include "escher.hxx"
#include "docsh.hxx"
+#include <cstdio>
using namespace ::com::sun::star;
using namespace nsFieldFlags;
@@ -94,9 +99,7 @@ using namespace nsFieldFlags;
void WW8Export::OutputGrfNode( const SwGrfNode& /*rNode*/ )
{
-#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "WW8Export::OutputGrfNode( const SwGrfNode& )\n" );
-#endif
+ OSL_TRACE("WW8Export::OutputGrfNode( const SwGrfNode& )\n" );
ASSERT( mpParentFrame, "frame not set!" );
if ( mpParentFrame )
{
@@ -216,9 +219,7 @@ bool WW8Export::TestOleNeedsGraphic(const SwAttrSet& rSet,
void WW8Export::OutputOLENode( const SwOLENode& rOLENode )
{
-#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "WW8Export::OutputOLENode( const SwOLENode& rOLENode )\n" );
-#endif
+ OSL_TRACE("WW8Export::OutputOLENode( const SwOLENode& rOLENode )\n" );
BYTE *pSpecOLE;
BYTE *pDataAdr;
short nSize;
@@ -602,7 +603,7 @@ void SwWW8WrGrf::WritePICFHeader(SvStream& rStrm, const sw::Frame &rFly,
substitute the final size and loose on retaining the scaling factor but
still keep the correct display size anyway.
*/
- if ( (aGrTwipSz.Width() > USHRT_MAX) || (aGrTwipSz.Height() > USHRT_MAX)
+ if ( (aGrTwipSz.Width() > SHRT_MAX) || (aGrTwipSz.Height() > SHRT_MAX)
|| (aGrTwipSz.Width() < 0 ) || (aGrTwipSz.Height() < 0) )
{
aGrTwipSz.Width() = nWidth;
diff --git a/sw/source/filter/ww8/ww8atr.cxx b/sw/source/filter/ww8/ww8atr.cxx
index c1c254a47f8d..89aef162ec01 100644
--- a/sw/source/filter/ww8/ww8atr.cxx
+++ b/sw/source/filter/ww8/ww8atr.cxx
@@ -1743,9 +1743,9 @@ static void InsertSpecialChar( WW8Export& rWrt, BYTE c,
aItems.GetData());
}
-String lcl_GetExpandedField(const SwField &rFld)
+String lcl_GetExpandedField(const SwField &rFld, SwDoc const& rDoc)
{
- String sRet(rFld.Expand());
+ String sRet(rFld.ExpandField(rDoc.IsClipBoard()));
//replace LF 0x0A with VT 0x0B
sRet.SearchAndReplaceAll(0x0A, 0x0B);
@@ -1871,7 +1871,7 @@ void WW8Export::OutputField( const SwField* pFld, ww::eField eFldType,
{
String sOut;
if( pFld )
- sOut = lcl_GetExpandedField(*pFld);
+ sOut = lcl_GetExpandedField(*pFld, *pDoc);
else
sOut = rFldCmd;
if( sOut.Len() )
@@ -2598,7 +2598,7 @@ void WW8AttributeOutput::RefField( const SwField &rFld, const String &rRef)
sStr.APPEND_CONST_ASC( "\" " );
m_rWW8Export.OutputField( &rFld, ww::eREF, sStr, WRITEFIELD_START |
WRITEFIELD_CMD_START | WRITEFIELD_CMD_END );
- String sVar = lcl_GetExpandedField( rFld );
+ String sVar = lcl_GetExpandedField( rFld, *GetExport().pDoc );
if ( sVar.Len() )
{
if ( m_rWW8Export.IsUnicode() )
@@ -2614,7 +2614,7 @@ void WW8AttributeOutput::RefField( const SwField &rFld, const String &rRef)
void WW8AttributeOutput::WriteExpand( const SwField* pFld )
{
- String sExpand( lcl_GetExpandedField( *pFld ) );
+ String sExpand( lcl_GetExpandedField( *pFld, *GetExport().pDoc ) );
if ( m_rWW8Export.IsUnicode() )
SwWW8Writer::WriteString16( m_rWW8Export.Strm(), sExpand, false );
else
@@ -4297,17 +4297,24 @@ void WW8Export::Out_SwFmtBox(const SvxBoxItem& rBox, bool bShadow)
// ( Tabellenumrandungen fransen sonst aus )
// Ein WW8Bytes-Ptr wird als Ausgabe-Parameter uebergeben
-void WW8Export::Out_SwFmtTableBox( WW8Bytes& rO, const SvxBoxItem& rBox )
+void WW8Export::Out_SwFmtTableBox( WW8Bytes& rO, const SvxBoxItem * pBox )
{
// moeglich und vielleicht besser waere 0xffff
static const USHORT aBorders[] =
{
BOX_LINE_TOP, BOX_LINE_LEFT, BOX_LINE_BOTTOM, BOX_LINE_RIGHT
};
+ static const SvxBorderLine aBorderLine;
+
const USHORT* pBrd = aBorders;
for( int i = 0; i < 4; ++i, ++pBrd )
{
- const SvxBorderLine* pLn = rBox.GetLine( *pBrd );
+ const SvxBorderLine* pLn;
+ if (pBox != NULL)
+ pLn = pBox->GetLine( *pBrd );
+ else
+ pLn = & aBorderLine;
+
Out_BorderLine(rO, pLn, 0, 0, false);
}
}
@@ -5254,9 +5261,7 @@ void AttributeOutputBase::OutputItem( const SfxPoolItem& rHt )
break;
default:
-#if OSL_DEBUG_LEVEL > 0
- fprintf( stderr, "Unhandled SfxPoolItem with id %d.\n", rHt.Which() );
-#endif
+ OSL_TRACE("Unhandled SfxPoolItem with id %d.\n", rHt.Which() );
break;
}
}
diff --git a/sw/source/filter/ww8/ww8attributeoutput.hxx b/sw/source/filter/ww8/ww8attributeoutput.hxx
index b9d9038b484b..b9d9ba38c246 100644
--- a/sw/source/filter/ww8/ww8attributeoutput.hxx
+++ b/sw/source/filter/ww8/ww8attributeoutput.hxx
@@ -124,6 +124,8 @@ public:
virtual void TableOrientation( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner );
+ virtual void TableSpacing( ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner );
+
virtual void TableRowEnd( sal_uInt32 nDepth = 1 );
/// Start of the styles table.
diff --git a/sw/source/filter/ww8/ww8graf.hxx b/sw/source/filter/ww8/ww8graf.hxx
index 502b1e8f95c7..12d168724cbd 100644
--- a/sw/source/filter/ww8/ww8graf.hxx
+++ b/sw/source/filter/ww8/ww8graf.hxx
@@ -30,12 +30,8 @@
#ifndef _WW8GRAF_HXX
#define _WW8GRAF_HXX
-#ifndef __SGI_STL_VECTOR
#include <vector>
-#endif
-#ifndef __SGI_STL_STACK
#include <stack>
-#endif
#include "writerhelper.hxx"
struct EscherShape
diff --git a/sw/source/filter/ww8/ww8par.cxx b/sw/source/filter/ww8/ww8par.cxx
index a290e8f30790..ba932c33c479 100644
--- a/sw/source/filter/ww8/ww8par.cxx
+++ b/sw/source/filter/ww8/ww8par.cxx
@@ -573,60 +573,63 @@ SdrObject* SwMSDffManager::ProcessObj(SvStream& rSt,
aSet.Put( SdrTextVertAdjustItem( eTVA ) );
aSet.Put( SdrTextHorzAdjustItem( eTHA ) );
- pObj->SetMergedItemSet(aSet);
- pObj->SetModel(pSdrModel);
+ if (pObj != NULL)
+ {
+ pObj->SetMergedItemSet(aSet);
+ pObj->SetModel(pSdrModel);
- if (bVerticalText && dynamic_cast< SdrTextObj* >( pObj ) )
- dynamic_cast< SdrTextObj* >( pObj )->SetVerticalWriting(sal_True);
+ if (bVerticalText && dynamic_cast< SdrTextObj* >( pObj ) )
+ dynamic_cast< SdrTextObj* >( pObj )->SetVerticalWriting(sal_True);
- if ( bIsSimpleDrawingTextBox )
- {
- if ( nTextRotationAngle )
+ if ( bIsSimpleDrawingTextBox )
{
- long nMinWH = rTextRect.GetWidth() < rTextRect.GetHeight() ?
- rTextRect.GetWidth() : rTextRect.GetHeight();
- nMinWH /= 2;
- Point aPivot(rTextRect.TopLeft());
- aPivot.X() += nMinWH;
- aPivot.Y() += nMinWH;
- double a = nTextRotationAngle * nPi180;
- pObj->NbcRotate(aPivot, nTextRotationAngle, sin(a), cos(a));
+ if ( nTextRotationAngle )
+ {
+ long nMinWH = rTextRect.GetWidth() < rTextRect.GetHeight() ?
+ rTextRect.GetWidth() : rTextRect.GetHeight();
+ nMinWH /= 2;
+ Point aPivot(rTextRect.TopLeft());
+ aPivot.X() += nMinWH;
+ aPivot.Y() += nMinWH;
+ double a = nTextRotationAngle * nPi180;
+ pObj->NbcRotate(aPivot, nTextRotationAngle, sin(a), cos(a));
+ }
}
- }
- if ( ( ( rObjData.nSpFlags & SP_FFLIPV ) || mnFix16Angle || nTextRotationAngle ) && dynamic_cast< SdrObjCustomShape* >( pObj ) )
- {
- SdrObjCustomShape* pCustomShape = dynamic_cast< SdrObjCustomShape* >( pObj );
+ if ( ( ( rObjData.nSpFlags & SP_FFLIPV ) || mnFix16Angle || nTextRotationAngle ) && dynamic_cast< SdrObjCustomShape* >( pObj ) )
+ {
+ SdrObjCustomShape* pCustomShape = dynamic_cast< SdrObjCustomShape* >( pObj );
- double fExtraTextRotation = 0.0;
- if ( mnFix16Angle && !( GetPropertyValue( DFF_Prop_FitTextToShape ) & 4 ) )
- { // text is already rotated, we have to take back the object rotation if DFF_Prop_RotateText is false
- fExtraTextRotation = -mnFix16Angle;
- }
- if ( rObjData.nSpFlags & SP_FFLIPV ) // sj: in ppt the text is flipped, whereas in word the text
- { // remains unchanged, so we have to take back the flipping here
- fExtraTextRotation += 18000.0; // because our core will flip text if the shape is flipped.
+ double fExtraTextRotation = 0.0;
+ if ( mnFix16Angle && !( GetPropertyValue( DFF_Prop_FitTextToShape ) & 4 ) )
+ { // text is already rotated, we have to take back the object rotation if DFF_Prop_RotateText is false
+ fExtraTextRotation = -mnFix16Angle;
+ }
+ if ( rObjData.nSpFlags & SP_FFLIPV ) // sj: in ppt the text is flipped, whereas in word the text
+ { // remains unchanged, so we have to take back the flipping here
+ fExtraTextRotation += 18000.0; // because our core will flip text if the shape is flipped.
+ }
+ fExtraTextRotation += nTextRotationAngle;
+ if ( !::basegfx::fTools::equalZero( fExtraTextRotation ) )
+ {
+ fExtraTextRotation /= 100.0;
+ SdrCustomShapeGeometryItem aGeometryItem( (SdrCustomShapeGeometryItem&)pCustomShape->GetMergedItem( SDRATTR_CUSTOMSHAPE_GEOMETRY ) );
+ const rtl::OUString sTextRotateAngle( RTL_CONSTASCII_USTRINGPARAM ( "TextRotateAngle" ) );
+ com::sun::star::beans::PropertyValue aPropVal;
+ aPropVal.Name = sTextRotateAngle;
+ aPropVal.Value <<= fExtraTextRotation;
+ aGeometryItem.SetPropertyValue( aPropVal );
+ pCustomShape->SetMergedItem( aGeometryItem );
+ }
}
- fExtraTextRotation += nTextRotationAngle;
- if ( !::basegfx::fTools::equalZero( fExtraTextRotation ) )
+ else if ( mnFix16Angle )
{
- fExtraTextRotation /= 100.0;
- SdrCustomShapeGeometryItem aGeometryItem( (SdrCustomShapeGeometryItem&)pCustomShape->GetMergedItem( SDRATTR_CUSTOMSHAPE_GEOMETRY ) );
- const rtl::OUString sTextRotateAngle( RTL_CONSTASCII_USTRINGPARAM ( "TextRotateAngle" ) );
- com::sun::star::beans::PropertyValue aPropVal;
- aPropVal.Name = sTextRotateAngle;
- aPropVal.Value <<= fExtraTextRotation;
- aGeometryItem.SetPropertyValue( aPropVal );
- pCustomShape->SetMergedItem( aGeometryItem );
+ // rotate text with shape ?
+ double a = mnFix16Angle * nPi180;
+ pObj->NbcRotate( rObjData.aBoundRect.Center(), mnFix16Angle,
+ sin( a ), cos( a ) );
}
}
- else if ( mnFix16Angle )
- {
- // rotate text with shape ?
- double a = mnFix16Angle * nPi180;
- pObj->NbcRotate( rObjData.aBoundRect.Center(), mnFix16Angle,
- sin( a ), cos( a ) );
- }
}
else if( !pObj )
{
@@ -844,13 +847,35 @@ long lcl_GetTrueMargin(const SvxLRSpaceItem &rLR, const SwNumFmt &rFmt,
return nExtraListIndent > 0 ? nExtraListIndent : 0;
}
-void SyncIndentWithList(SvxLRSpaceItem &rLR, const SwNumFmt &rFmt)
+// --> OD 2010-05-06 #i103711#
+// --> OD 2010-05-11 #i105414#
+void SyncIndentWithList( SvxLRSpaceItem &rLR,
+ const SwNumFmt &rFmt,
+ const bool bFirstLineOfstSet,
+ const bool bLeftIndentSet )
{
- long nWantedFirstLinePos;
- long nExtraListIndent = lcl_GetTrueMargin(rLR, rFmt, nWantedFirstLinePos);
- rLR.SetTxtLeft(nWantedFirstLinePos - nExtraListIndent);
- rLR.SetTxtFirstLineOfst(0);
+ if ( rFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
+ {
+ long nWantedFirstLinePos;
+ long nExtraListIndent = lcl_GetTrueMargin(rLR, rFmt, nWantedFirstLinePos);
+ rLR.SetTxtLeft(nWantedFirstLinePos - nExtraListIndent);
+ rLR.SetTxtFirstLineOfst(0);
+ }
+ else if ( rFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_ALIGNMENT )
+ {
+ if ( !bFirstLineOfstSet && bLeftIndentSet &&
+ rFmt.GetFirstLineIndent() != 0 )
+ {
+ rLR.SetTxtFirstLineOfst( rFmt.GetFirstLineIndent() );
+ }
+ else if ( bFirstLineOfstSet && !bLeftIndentSet &&
+ rFmt.GetIndentAt() != 0 )
+ {
+ rLR.SetTxtLeft( rFmt.GetIndentAt() );
+ }
+ }
}
+// <--
const SwNumFmt* SwWW8FltControlStack::GetNumFmtFromStack(const SwPosition &rPos,
const SwTxtNode &rTxtNode)
@@ -907,16 +932,24 @@ void SwWW8FltControlStack::SetAttrInDoc(const SwPosition& rTmpPos,
pNum = GetNumFmtFromStack(*aRegion.GetPoint(),
*pTxtNode);
if (!pNum)
+ {
pNum = GetNumFmtFromTxtNode(*pTxtNode);
+ }
- // --> OD 2008-06-03 #i86652#
-// if (pNum)
- if ( pNum &&
- pNum->GetPositionAndSpaceMode() ==
- SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
- // <--
+ if ( pNum )
{
- SyncIndentWithList(aNewLR, *pNum);
+ // --> OD 2010-05-06 #i103711#
+ const bool bFirstLineIndentSet =
+ ( rReader.maTxtNodesHavingFirstLineOfstSet.end() !=
+ rReader.maTxtNodesHavingFirstLineOfstSet.find( pNode ) );
+ // --> OD 2010-05-11 #i105414#
+ const bool bLeftIndentSet =
+ ( rReader.maTxtNodesHavingLeftIndentSet.end() !=
+ rReader.maTxtNodesHavingLeftIndentSet.find( pNode ) );
+ SyncIndentWithList( aNewLR, *pNum,
+ bFirstLineIndentSet,
+ bLeftIndentSet );
+ // <--
}
if (aNewLR == aOldLR)
@@ -1387,14 +1420,19 @@ void SwWW8ImplReader::ImportDop()
uno::Reference<beans::XPropertySetInfo> xInfo =
xDocProps->getPropertySetInfo();
sal_Bool bValue = false;
- if (xInfo.is() &&
- xInfo->hasPropertyByName(C2U("ApplyFormDesignMode")))
+ if (xInfo.is())
{
- xDocProps->setPropertyValue(C2U("ApplyFormDesignMode"),
- cppu::bool2any(bValue));
+ if (xInfo->hasPropertyByName(C2U("ApplyFormDesignMode")))
+ {
+ xDocProps->setPropertyValue(C2U("ApplyFormDesignMode"),
+ cppu::bool2any(bValue));
+ }
}
}
}
+
+ mpDocShell->SetModifyPasswordHash(pWDop->lKeyProtDoc);
+
const SvtFilterOptions* pOpt = SvtFilterOptions::Get();
sal_Bool bUseEnhFields=(pOpt && pOpt->IsUseEnhancedFields());
if (bUseEnhFields) {
@@ -1681,6 +1719,13 @@ void SwWW8ImplReader::Read_HdFtText(long nStart, long nLen, SwFrmFmt* pHdFtFmt)
*pPaM->GetPoint() = aTmpPos;
}
+
+bool SwWW8ImplReader::isValid_HdFt_CP(WW8_CP nHeaderCP) const
+{
+ //each CP of Plcfhdd MUST be less than FibRgLw97.ccpHdd
+ return (nHeaderCP < pWwFib->ccpHdr) ? true : false;
+}
+
bool SwWW8ImplReader::HasOwnHeaderFooter(BYTE nWhichItems, BYTE grpfIhdt,
int nSect)
{
@@ -1700,7 +1745,7 @@ bool SwWW8ImplReader::HasOwnHeaderFooter(BYTE nWhichItems, BYTE grpfIhdt,
else
{
pHdFt->GetTextPosExact( static_cast< short >(nNumber + (nSect+1)*6), start, nLen);
- bOk = ( 2 <= nLen );
+ bOk = ( 2 <= nLen ) && isValid_HdFt_CP(start);
}
if (bOk)
@@ -1752,7 +1797,7 @@ void SwWW8ImplReader::Read_HdFt(bool bIsTitle, int nSect,
else
{
pHdFt->GetTextPosExact( static_cast< short >(nNumber + (nSect+1)*6), start, nLen);
- bOk = ( 2 <= nLen );
+ bOk = ( 2 <= nLen ) && isValid_HdFt_CP(start);
}
bool bUseLeft
@@ -1812,7 +1857,7 @@ void SwWW8ImplReader::Read_HdFt(bool bIsTitle, int nSect,
bool wwSectionManager::SectionIsProtected(const wwSection &rSection) const
{
- return (mrReader.pWDop->fProtEnabled && !rSection.IsNotProtected());
+ return (!rSection.IsNotProtected());
}
void wwSectionManager::SetHdFt(wwSection &rSection, int nSect,
@@ -2443,6 +2488,7 @@ bool SwWW8ImplReader::ReadPlainChars(WW8_CP& rPos, long nEnd, long nCpOfs)
{
rPos = WW8_CP_MAX-10; // -> eof or other error
sPlainCharsBuf.ReleaseBufferAccess( 0 );
+ delete [] p8Bits;
return true;
}
@@ -2588,6 +2634,16 @@ bool SwWW8ImplReader::HandlePageBreakChar()
//itself ignores them in this case.
if (!nInTable)
{
+ //xushanchuan add for issue106569
+ BOOL IsTemp=TRUE;
+ SwTxtNode* pTemp = pPaM->GetNode()->GetTxtNode();
+ if ( pTemp && !( pTemp->GetTxt().Len() ) && ( bFirstPara || bFirstParaOfPage ) )
+ {
+ IsTemp = FALSE;
+ AppendTxtNode(*pPaM->GetPoint());
+ pTemp->SetAttr(*GetDfltAttr(RES_PARATR_NUMRULE));
+ }
+ //xushanchuan end
bPgSecBreak = true;
pCtrlStck->KillUnlockedAttrs(*pPaM->GetPoint());
/*
@@ -2596,7 +2652,9 @@ bool SwWW8ImplReader::HandlePageBreakChar()
paragraph end, but nevertheless, numbering (and perhaps other
similiar constructs) do not exist on the para.
*/
- if (!bWasParaEnd)
+ //xushanchuan add for issue106569
+ if (!bWasParaEnd && IsTemp)
+ //xushanchuan end
{
bParaEndAdded = true;
if (0 >= pPaM->GetPoint()->nContent.GetIndex())
@@ -2632,6 +2690,10 @@ bool SwWW8ImplReader::ReadChar(long nPosCp, long nCpOfs)
sal_Char cInsert = '\x0';
bool bRet = false;
+ //xushanchuan add for issue106569
+ if ( 0xc != nWCharVal )
+ bFirstParaOfPage = false;
+ //xushanchuan end
switch (nWCharVal)
{
case 0:
@@ -3148,6 +3210,7 @@ bool SwWW8ImplReader::ReadText(long nStartCp, long nTextLen, ManTypes nType)
// <--
rDoc.InsertPoolItem(*pPaM,
SvxFmtBreakItem(SVX_BREAK_PAGE_BEFORE, RES_BREAK), 0);
+ bFirstParaOfPage = true;//xushanchuan add for issue106569
bPgSecBreak = false;
}
}
@@ -3185,6 +3248,12 @@ SwWW8ImplReader::SwWW8ImplReader(BYTE nVersionPara, SvStorage* pStorage,
maGrfNameGenerator(bNewDoc,String('G')),
maParaStyleMapper(rD),
maCharStyleMapper(rD),
+ // --> OD 2010-05-06 #i103711#
+ maTxtNodesHavingFirstLineOfstSet(),
+ // <--
+ // --> OD 2010-05-11 #i105414#
+ maTxtNodesHavingLeftIndentSet(),
+ // <--
pMSDffManager(0),
mpAtnNames(0),
pAuthorInfos(0),
@@ -3239,13 +3308,14 @@ SwWW8ImplReader::SwWW8ImplReader(BYTE nVersionPara, SvStorage* pStorage,
bWasParaEnd = false;
bDropCap = false;
bFirstPara = true;
+ bFirstParaOfPage = false;//xushanchuan add for issue106569
bParaAutoBefore = false;
bParaAutoAfter = false;
nProgress = 0;
nSwNumLevel = nWwNumType = 0xff;
pTableDesc = 0;
pNumOlst = 0;
- pNode_FLY_AT_CNTNT = 0;
+ pNode_FLY_AT_PARA = 0;
pDrawModel = 0;
pDrawPg = 0;
mpDrawEditEngine = 0;
diff --git a/sw/source/filter/ww8/ww8par.hxx b/sw/source/filter/ww8/ww8par.hxx
index 099ecca83d6a..025cf0f588f4 100644
--- a/sw/source/filter/ww8/ww8par.hxx
+++ b/sw/source/filter/ww8/ww8par.hxx
@@ -35,21 +35,11 @@
#include <editeng/frmdir.hxx>
#include <fltshell.hxx> // fuer den Attribut Stack
-#ifndef __SGI_STL_VECTOR
#include <vector>
-#endif
-#ifndef __SGI_STL_STACK
#include <stack>
-#endif
-#ifndef __SGI_STL_DEQUE
#include <deque>
-#endif
-#ifndef __SGI_STL_MAP
#include <map>
-#endif
-#ifndef __SGI_STL_UTILITY
#include <utility>
-#endif
#include "tracer.hxx"
#include "ww8struc.hxx" // WW8_BRC
@@ -956,6 +946,13 @@ private:
WW8PLCFMan* pPlcxMan;
std::map<short, String> aLinkStringMap;
+ // --> OD 2010-05-06 #i103711#
+ std::set<const SwNode*> maTxtNodesHavingFirstLineOfstSet;
+ // <--
+ // --> OD 2010-05-11 #i105414#
+ std::set<const SwNode*> maTxtNodesHavingLeftIndentSet;
+ // <--
+
WW8RStyle* pStyles; // Pointer auf die Style-Einleseklasse
SwFmt* pAktColl; // gerade zu erzeugende Collection
// ( ist ausserhalb einer Style-Def immer 0 )
@@ -977,7 +974,7 @@ private:
ANLDRuleMap maANLDRules;
WW8_OLST* pNumOlst; // Gliederung im Text
- SwNode* pNode_FLY_AT_CNTNT; // set: WW8SwFlyPara() read: CreateSwTable()
+ SwNode* pNode_FLY_AT_PARA; // set: WW8SwFlyPara() read: CreateSwTable()
SdrModel* pDrawModel;
SdrPage* pDrawPg;
@@ -1086,7 +1083,7 @@ private:
// the very 1st Line Numbering and ignore the rest)
bool bFirstPara; // first paragraph?
-
+ bool bFirstParaOfPage;//cs2c--xushanchuan add for bug11210
bool bParaAutoBefore;
bool bParaAutoAfter;
@@ -1112,6 +1109,8 @@ private:
void Read_HdFtTextAsHackedFrame(long nStart, long nLen,
SwFrmFmt &rHdFtFmt, sal_uInt16 nPageWidth);
+ bool isValid_HdFt_CP(WW8_CP nHeaderCP) const;
+
bool HasOwnHeaderFooter(BYTE nWhichItems, BYTE grpfIhdt, int nSect);
void HandleLineNumbering(const wwSection &rSection);
@@ -1155,7 +1154,12 @@ private:
void ImportTox( int nFldId, String aStr );
void EndSprm( USHORT nId );
- void NewAttr( const SfxPoolItem& rAttr );
+ // --> OD 2010-05-06 #i103711#
+ // --> OD 2010-05-11 #i105414#
+ void NewAttr( const SfxPoolItem& rAttr,
+ const bool bFirstLineOfStSet = false,
+ const bool bLeftIndentSet = false );
+ // <--
bool GetFontParams(USHORT, FontFamily&, String&, FontPitch&,
rtl_TextEncoding&);
@@ -1612,7 +1616,13 @@ public: // eigentlich private, geht aber leider nur public
bool CanUseRemoteLink(const String &rGrfName);
void UseListIndent(SwWW8StyInf &rStyle, const SwNumFmt &rFmt);
void SetStyleIndent(SwWW8StyInf &rStyleInfo, const SwNumFmt &rFmt);
-void SyncIndentWithList(SvxLRSpaceItem &rLR, const SwNumFmt &rFmt);
+// --> OD 2010-05-06 #i103711#
+// --> OD 2010-05-11 #i105414#
+void SyncIndentWithList( SvxLRSpaceItem &rLR,
+ const SwNumFmt &rFmt,
+ const bool bFirstLineOfStSet,
+ const bool bLeftIndentSet );
+// <--
long GetListFirstLineIndent(const SwNumFmt &rFmt);
String BookmarkToWriter(const String &rBookmark);
bool RTLGraphicsHack(SwTwips &rLeft, SwTwips nWidth,
diff --git a/sw/source/filter/ww8/ww8par2.hxx b/sw/source/filter/ww8/ww8par2.hxx
index b32fbf7f0037..71aa7022ed31 100644
--- a/sw/source/filter/ww8/ww8par2.hxx
+++ b/sw/source/filter/ww8/ww8par2.hxx
@@ -285,7 +285,6 @@ public:
const WW8SwFlyPara* pFS, bool bGraf);
WW8FlySet(SwWW8ImplReader& rReader, const SwPaM* pPaM, const WW8_PIC& rPic,
long nWidth, long nHeight);
- WW8FlySet(const SwWW8ImplReader& rReader, const SwPaM* pPaM);
};
enum WW8LvlType {WW8_None, WW8_Outline, WW8_Numbering, WW8_Sequence, WW8_Pause};
diff --git a/sw/source/filter/ww8/ww8par3.cxx b/sw/source/filter/ww8/ww8par3.cxx
index 465d07c0d2b5..75454dddbc58 100644
--- a/sw/source/filter/ww8/ww8par3.cxx
+++ b/sw/source/filter/ww8/ww8par3.cxx
@@ -1697,7 +1697,12 @@ void SetStyleIndent(SwWW8StyInf &rStyle, const SwNumFmt &rFmt)
{
SvxLRSpaceItem aLR(ItemGet<SvxLRSpaceItem>(*rStyle.pFmt, RES_LR_SPACE));
if (rStyle.bListReleventIndentSet)
- SyncIndentWithList(aLR, rFmt);
+ {
+ // --> OD 2010-05-06 #i103711#
+ // --> OD 2010-05-11 #i105414#
+ SyncIndentWithList( aLR, rFmt, false, false );
+ // <--
+ }
else
{
aLR.SetTxtLeft(0);
@@ -2207,20 +2212,17 @@ void WW8FormulaControl::FormulaRead(SwWw8ControlType nWhich,
{
*pDataStream >> nDefaultChecked;
nChecked = nDefaultChecked;
- //Don't know the details yet
- switch (nHeaderByte)
+
+ sal_uInt8 iRes = (nHeaderByte >> 2) & 0x1F;
+ switch (iRes)
{
- case 0x65: //01100101
- //use defaults ?
+ case 1: //checked
+ nChecked = true;
break;
- case 0x1: //00000001
- //swap to unchecked from checked (#114841)?
+ case 25: //undefined, Undefined checkboxes are treated as unchecked
+ case 0: //unchecked
nChecked = false;
break;
- case 0x5: //00000101
- //change to checked
- nChecked = true;
- break;
default:
ASSERT(!this, "unknown option, please report to cmc");
break;
diff --git a/sw/source/filter/ww8/ww8par5.cxx b/sw/source/filter/ww8/ww8par5.cxx
index 255b17e04638..93a39b1c390c 100644
--- a/sw/source/filter/ww8/ww8par5.cxx
+++ b/sw/source/filter/ww8/ww8par5.cxx
@@ -2354,11 +2354,13 @@ eF_ResT SwWW8ImplReader::Read_F_IncludeText( WW8FieldDesc* /*pF*/, String& rStr
*/
SwPosition aTmpPos(*pPaM->GetPoint());
- SwSection aSection(FILE_LINK_SECTION, maSectionNameGenerator.UniqueName());
+ SwSectionData aSection(FILE_LINK_SECTION,
+ maSectionNameGenerator.UniqueName());
aSection.SetLinkFileName( aPara );
- aSection.SetProtect(true);
+ aSection.SetProtectFlag(true);
- SwSection*const pSection = rDoc.InsertSwSection(*pPaM, aSection, 0, false);
+ SwSection *const pSection =
+ rDoc.InsertSwSection(*pPaM, aSection, 0, 0, false);
ASSERT(pSection, "no section inserted");
if (!pSection)
return FLD_TEXT;
diff --git a/sw/source/filter/ww8/ww8par6.cxx b/sw/source/filter/ww8/ww8par6.cxx
index 5c10a7b005bd..1588944e179b 100644
--- a/sw/source/filter/ww8/ww8par6.cxx
+++ b/sw/source/filter/ww8/ww8par6.cxx
@@ -672,7 +672,8 @@ void wwSectionManager::SetPageULSpaceItems(SwFrmFmt &rFmt,
SwSectionFmt *wwSectionManager::InsertSection(
SwPaM& rMyPaM, wwSection &rSection)
{
- SwSection aSection( CONTENT_SECTION, mrReader.rDoc.GetUniqueSectionName() );
+ SwSectionData aSection( CONTENT_SECTION,
+ mrReader.rDoc.GetUniqueSectionName() );
SfxItemSet aSet( mrReader.rDoc.GetAttrPool(), aFrmFmtSetRange );
@@ -685,10 +686,10 @@ SwSectionFmt *wwSectionManager::InsertSection(
if (0 == mrReader.pWDop->epc)
aSet.Put( SwFmtEndAtTxtEnd(FTNEND_ATTXTEND));
- aSection.SetProtect(SectionIsProtected(rSection));
+ aSection.SetProtectFlag(SectionIsProtected(rSection));
rSection.mpSection =
- mrReader.rDoc.InsertSwSection( rMyPaM, aSection, &aSet );
+ mrReader.rDoc.InsertSwSection( rMyPaM, aSection, 0, & aSet );
ASSERT(rSection.mpSection, "section not inserted!");
if (!rSection.mpSection)
return 0;
@@ -836,12 +837,12 @@ void wwSectionManager::CreateSep(const long nTxtPos, bool /*bMustHaveBreak*/)
pWkb->Get(nTest, pData);
String sSectionName = mrReader.aLinkStringMap[SVBT16ToShort( ((WW8_WKB*)pData)->nLinkId) ];
mrReader.ConvertFFileName(sSectionName, sSectionName);
- SwSection aSection(FILE_LINK_SECTION, sSectionName);
+ SwSectionData aSection(FILE_LINK_SECTION, sSectionName);
aSection.SetLinkFileName( sSectionName );
- aSection.SetProtect(true);
+ aSection.SetProtectFlag(true);
// --> CMC, OD 2004-06-18 #i19922# improvement:
// return value of method <Insert> not used.
- mrReader.rDoc.InsertSwSection(*mrReader.pPaM, aSection, 0, false);
+ mrReader.rDoc.InsertSwSection(*mrReader.pPaM, aSection, 0, 0, false);
}
wwSection aLastSection(*mrReader.pPaM->GetPoint());
@@ -2264,12 +2265,6 @@ WW8FlySet::WW8FlySet( SwWW8ImplReader& rReader, const SwPaM* pPaM,
+ aSizeArray[WW8_BOT]) );
}
-WW8FlySet::WW8FlySet(const SwWW8ImplReader& rReader, const SwPaM* pPaM)
- : SfxItemSet(rReader.rDoc.GetAttrPool(),RES_FRMATR_BEGIN,RES_FRMATR_END-1)
-{
- Init(rReader, pPaM);
-}
-
void WW8FlySet::Init(const SwWW8ImplReader& rReader, const SwPaM* pPaM)
{
if (!rReader.mbNewDoc)
@@ -2715,7 +2710,9 @@ bool SwWW8ImplReader::TestSameApo(const ApoTestResults &rApo,
# Attribut - Verwaltung
#**************************************************************************/
-void SwWW8ImplReader::NewAttr( const SfxPoolItem& rAttr )
+void SwWW8ImplReader::NewAttr( const SfxPoolItem& rAttr,
+ const bool bFirstLineOfStSet,
+ const bool bLeftIndentSet )
{
if( !bNoAttrImport ) // zum Ignorieren von Styles beim Doc-Einfuegen
{
@@ -2725,11 +2722,31 @@ void SwWW8ImplReader::NewAttr( const SfxPoolItem& rAttr )
pAktColl->SetFmtAttr(rAttr);
}
else if (pAktItemSet)
+ {
pAktItemSet->Put(rAttr);
+ }
else if (rAttr.Which() == RES_FLTR_REDLINE)
+ {
mpRedlineStack->open(*pPaM->GetPoint(), rAttr);
+ }
else
+ {
pCtrlStck->NewAttr(*pPaM->GetPoint(), rAttr);
+ // --> OD 2010-05-06 #i103711#
+ if ( bFirstLineOfStSet )
+ {
+ const SwNode* pNd = &(pPaM->GetPoint()->nNode.GetNode());
+ maTxtNodesHavingFirstLineOfstSet.insert( pNd );
+ }
+ // <--
+ // --> OD 2010-05-11 #i105414#
+ if ( bLeftIndentSet )
+ {
+ const SwNode* pNd = &(pPaM->GetPoint()->nNode.GetNode());
+ maTxtNodesHavingLeftIndentSet.insert( pNd );
+ }
+ // <--
+ }
if (mpPostProcessAttrsInfo && mpPostProcessAttrsInfo->mbCopy)
mpPostProcessAttrsInfo->mItemSet.Put(rAttr);
@@ -3958,6 +3975,13 @@ void SwWW8ImplReader::Read_LR( USHORT nId, const BYTE* pData, short nLen )
}
}
+ // --> OD 2010-05-06 #i103711#
+ bool bFirstLinOfstSet( false );
+ // <--
+ // --> OD 2010-05-11 #i105414#
+ bool bLeftIndentSet( false );
+ // <--
+
switch (nId)
{
//sprmPDxaLeft
@@ -3966,7 +3990,12 @@ void SwWW8ImplReader::Read_LR( USHORT nId, const BYTE* pData, short nLen )
case 0x845E:
aLR.SetTxtLeft( nPara );
if (pAktColl)
+ {
pCollA[nAktColl].bListReleventIndentSet = true;
+ }
+ // --> OD 2010-05-11 #i105414#
+ bLeftIndentSet = true;
+ // <--
break;
//sprmPDxaLeft1
case 19:
@@ -3998,7 +4027,12 @@ void SwWW8ImplReader::Read_LR( USHORT nId, const BYTE* pData, short nLen )
aLR.SetTxtFirstLineOfst(nPara);
if (pAktColl)
+ {
pCollA[nAktColl].bListReleventIndentSet = true;
+ }
+ // --> OD 2010-05-06 #i103711#
+ bFirstLinOfstSet = true;
+ // <--
break;
//sprmPDxaRight
case 16:
@@ -4010,7 +4044,10 @@ void SwWW8ImplReader::Read_LR( USHORT nId, const BYTE* pData, short nLen )
return;
}
- NewAttr(aLR);
+ // --> OD 2010-05-06 #i103711#
+ // --> OD 2010-05-11 #i105414#
+ NewAttr( aLR, bFirstLinOfstSet, bLeftIndentSet );
+ // <--
}
// Sprm 20
diff --git a/sw/source/filter/ww8/ww8scan.cxx b/sw/source/filter/ww8/ww8scan.cxx
index 8dd77f5bea7b..d318522100cf 100644
--- a/sw/source/filter/ww8/ww8scan.cxx
+++ b/sw/source/filter/ww8/ww8scan.cxx
@@ -32,6 +32,7 @@
#include <functional>
+#include <algorithm>
#include <string.h> // memset()
#include <rtl/tencinfo.h>
@@ -2121,7 +2122,7 @@ xub_StrLen WW8ScannerBase::WW8ReadString( SvStream& rStrm, String& rStr,
// Bei nStartPos < 0 wird das erste Element des PLCFs genommen
WW8PLCFspecial::WW8PLCFspecial(SvStream* pSt, long nFilePos, long nPLCF,
- long nStruct, long nStartPos, bool bNoEnd)
+ long nStruct, long nStartPos)
: nIdx(0), nStru(nStruct)
{
nIMax = ( nPLCF - 4 ) / ( 4 + nStruct );
@@ -2137,8 +2138,6 @@ WW8PLCFspecial::WW8PLCFspecial(SvStream* pSt, long nFilePos, long nPLCF,
pPLCF_PosArray[nIdx] = SWAPLONG( pPLCF_PosArray[nIdx] );
nIdx = 0;
#endif // OSL_BIGENDIAN
- if( bNoEnd )
- nIMax++;
if( nStruct ) // Pointer auf Inhalts-Array
pPLCF_Contents = (BYTE*)&pPLCF_PosArray[nIMax + 1];
else
@@ -4004,8 +4003,7 @@ WW8PLCFx_Book::WW8PLCFx_Book(SvStream* pTblSt, const WW8Fib& rFib)
{
pBook[0] = new WW8PLCFspecial(pTblSt,rFib.fcPlcfbkf,rFib.lcbPlcfbkf,4);
- pBook[1] = new WW8PLCFspecial( pTblSt, rFib.fcPlcfbkl, rFib.lcbPlcfbkl,
- 0, -1, true);
+ pBook[1] = new WW8PLCFspecial(pTblSt,rFib.fcPlcfbkl,rFib.lcbPlcfbkl,0);
rtl_TextEncoding eStructChrSet = WW8Fib::GetFIBCharset(rFib.chseTables);
@@ -6400,8 +6398,10 @@ WW8Fonts::WW8Fonts( SvStream& rSt, WW8Fib& rFib )
#ifdef __WW8_NEEDS_COPY
{
BYTE nLen = 0x28;
+ BYTE nLength = sizeof( pVer8->szFfn ) / sizeof( SVBT16 );
+ nLength = std::min( nLength, BYTE( pVer8->cbFfnM1+1 ) );
for( UINT16* pTmp = pVer8->szFfn;
- nLen < pVer8->cbFfnM1 + 1 ; ++pTmp, nLen+=2 )
+ nLen < nLength; ++pTmp, nLen+=2 )
{
*pTmp = SVBT16ToShort( *(SVBT16*)pTmp );
}
diff --git a/sw/source/filter/ww8/ww8scan.hxx b/sw/source/filter/ww8/ww8scan.hxx
index 922edf7b0179..33d40bcf4c0d 100644
--- a/sw/source/filter/ww8/ww8scan.hxx
+++ b/sw/source/filter/ww8/ww8scan.hxx
@@ -220,7 +220,7 @@ private:
long nStru;
public:
WW8PLCFspecial( SvStream* pSt, long nFilePos, long nPLCF,
- long nStruct, long nStartPos = -1, bool bNoEnd = false);
+ long nStruct, long nStartPos = -1 );
~WW8PLCFspecial() { delete[] pPLCF_PosArray; }
long GetIdx() const { return nIdx; }
void SetIdx( long nI ) { nIdx = nI; }
@@ -382,6 +382,7 @@ private:
public:
WW8PLCFx(ww::WordVersion eVersion, bool bSprm)
: meVer(eVersion), bIsSprm(bSprm), bDirty(false) {}
+ virtual ~WW8PLCFx() {}
bool IsSprm() const { return bIsSprm; }
virtual ULONG GetIdx() const = 0;
virtual void SetIdx( ULONG nIdx ) = 0;
diff --git a/sw/source/filter/xml/xmltbli.cxx b/sw/source/filter/xml/xmltbli.cxx
index 774297c7540d..4b6af56066fc 100644
--- a/sw/source/filter/xml/xmltbli.cxx
+++ b/sw/source/filter/xml/xmltbli.cxx
@@ -457,7 +457,7 @@ SwXMLTableCellContext_Impl::SwXMLTableCellContext_Impl(
bHasTextContent( sal_False ),
bHasTableContent( sal_False )
{
- sSaveParaDefault = GetImport().GetTextImport()->sCellParaStyleDefault;
+ sSaveParaDefault = GetImport().GetTextImport()->GetCellParaStyleDefault();
sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
for( sal_Int16 i=0; i < nAttrCount; i++ )
{
@@ -477,7 +477,7 @@ SwXMLTableCellContext_Impl::SwXMLTableCellContext_Impl(
break;
case XML_TOK_TABLE_STYLE_NAME:
aStyleName = rValue;
- GetImport().GetTextImport()->sCellParaStyleDefault = rValue;
+ GetImport().GetTextImport()->SetCellParaStyleDefault(rValue);
break;
case XML_TOK_TABLE_NUM_COLS_SPANNED:
nColSpan = (sal_uInt32)rValue.toInt32();
@@ -715,7 +715,7 @@ void SwXMLTableCellContext_Impl::EndElement()
}
}
}
- GetImport().GetTextImport()->sCellParaStyleDefault = sSaveParaDefault;
+ GetImport().GetTextImport()->SetCellParaStyleDefault(sSaveParaDefault);
}
// ---------------------------------------------------------------------
diff --git a/sw/source/ui/app/apphdl.cxx b/sw/source/ui/app/apphdl.cxx
index 8d8fc095b5be..653208aaf250 100644
--- a/sw/source/ui/app/apphdl.cxx
+++ b/sw/source/ui/app/apphdl.cxx
@@ -765,16 +765,31 @@ void SwModule::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint )
DELETEZ(pWebToolbarConfig) ;
DELETEZ(pAuthorNames) ;
DELETEZ(pDBConfig);
- pColorConfig->RemoveListener(this);
- DELETEZ(pColorConfig);
- pAccessibilityOptions->RemoveListener(this);
- DELETEZ(pAccessibilityOptions);
- pCTLOptions->RemoveListener(this);
- DELETEZ(pCTLOptions);
- pUserOptions->RemoveListener(this);
- DELETEZ(pUserOptions);
- pUndoOptions->RemoveListener(this);
- DELETEZ(pUndoOptions);
+ if( pColorConfig )
+ {
+ pColorConfig->RemoveListener(this);
+ DELETEZ(pColorConfig);
+ }
+ if( pAccessibilityOptions )
+ {
+ pAccessibilityOptions->RemoveListener(this);
+ DELETEZ(pAccessibilityOptions);
+ }
+ if( pCTLOptions )
+ {
+ pCTLOptions->RemoveListener(this);
+ DELETEZ(pCTLOptions);
+ }
+ if( pUserOptions )
+ {
+ pUserOptions->RemoveListener(this);
+ DELETEZ(pUserOptions);
+ }
+ if( pUndoOptions )
+ {
+ pUndoOptions->RemoveListener(this);
+ DELETEZ(pUndoOptions);
+ }
}
}
}
diff --git a/sw/source/ui/app/applab.cxx b/sw/source/ui/app/applab.cxx
index 04fbebc865c8..41f055f86050 100644
--- a/sw/source/ui/app/applab.cxx
+++ b/sw/source/ui/app/applab.cxx
@@ -378,19 +378,20 @@ static sal_uInt16 nBCTitleNo = 0;
else
pSh->SetMark(); // set only the mark
- SwSection aSect( CONTENT_SECTION,
- String::CreateFromAscii(MASTER_LABEL));
+ SwSectionData aSect(CONTENT_SECTION,
+ String::CreateFromAscii(MASTER_LABEL));
pSh->InsertSection(aSect);
}
}
else if (rItem.bSynchron)
{
- SwSection aSect(FILE_LINK_SECTION, pSh->GetUniqueSectionName());
+ SwSectionData aSect(FILE_LINK_SECTION,
+ pSh->GetUniqueSectionName());
String sLinkName(sfx2::cTokenSeperator);
sLinkName += sfx2::cTokenSeperator;
sLinkName += String::CreateFromAscii(MASTER_LABEL);
aSect.SetLinkFileName(sLinkName);
- aSect.SetProtect();
+ aSect.SetProtectFlag(true);
pSh->Insert(aDotStr); // Dummytext zum Zuweisen der Section
pSh->SttDoc();
pSh->EndDoc(sal_True); // Alles im Rahmen selektieren
diff --git a/sw/source/ui/app/docsh.cxx b/sw/source/ui/app/docsh.cxx
index 1f932e6a93bd..3c14ed6c46f0 100644..100755
--- a/sw/source/ui/app/docsh.cxx
+++ b/sw/source/ui/app/docsh.cxx
@@ -39,6 +39,7 @@
#include <svl/zforlist.hxx>
#include <svl/eitem.hxx>
#include <svl/stritem.hxx>
+#include <svl/PasswordHelper.hxx>
#include <editeng/adjitem.hxx>
#include <basic/sbx.hxx>
#include <unotools/moduleoptions.hxx>
@@ -69,7 +70,6 @@
#include <view.hxx> // fuer die aktuelle Sicht
#include <edtwin.hxx>
#include <PostItMgr.hxx>
-#include <postit.hxx>
#include <wrtsh.hxx> // Verbindung zur Core
#include <docsh.hxx> // Dokumenterzeugung
#include <basesh.hxx>
@@ -102,7 +102,6 @@
#include <cmdid.h>
#include <globals.hrc>
#include <app.hrc>
-#include "warnpassword.hxx"
#include <cfgid.h>
#include <unotools/moduleoptions.hxx>
@@ -429,8 +428,12 @@ sal_Bool SwDocShell::SaveAs( SfxMedium& rMedium )
pView->GetEditWin().StopQuickHelp();
//#i91811# mod if we have an active margin window, write back the text
- if (pView && pView->GetPostItMgr() && pView->GetPostItMgr()->GetActivePostIt())
- pView->GetPostItMgr()->GetActivePostIt()->UpdateData();
+ if ( pView &&
+ pView->GetPostItMgr() &&
+ pView->GetPostItMgr()->HasActiveSidebarWin() )
+ {
+ pView->GetPostItMgr()->UpdateDataOnActiveSidebarWin();
+ }
if( pDoc->get(IDocumentSettingAccess::GLOBAL_DOCUMENT) &&
!pDoc->get(IDocumentSettingAccess::GLOBAL_DOCUMENT_SAVE_LINKS) )
@@ -575,8 +578,12 @@ BOOL SwDocShell::ConvertTo( SfxMedium& rMedium )
pView->GetEditWin().StopQuickHelp();
//#i91811# mod if we have an active margin window, write back the text
- if (pView && pView->GetPostItMgr() && pView->GetPostItMgr()->GetActivePostIt())
- pView->GetPostItMgr()->GetActivePostIt()->UpdateData();
+ if ( pView &&
+ pView->GetPostItMgr() &&
+ pView->GetPostItMgr()->HasActiveSidebarWin() )
+ {
+ pView->GetPostItMgr()->UpdateDataOnActiveSidebarWin();
+ }
ULONG nVBWarning = 0;
@@ -1361,3 +1368,79 @@ const ::sfx2::IXmlIdRegistry* SwDocShell::GetXmlIdRegistry() const
{
return pDoc ? &pDoc->GetXmlIdRegistry() : 0;
}
+
+
+bool SwDocShell::IsChangeRecording() const
+{
+ return (pWrtShell->GetRedlineMode() & nsRedlineMode_t::REDLINE_ON) != 0;
+}
+
+
+bool SwDocShell::HasChangeRecordProtection() const
+{
+ return pWrtShell->getIDocumentRedlineAccess()->GetRedlinePassword().getLength() > 0;
+}
+
+
+void SwDocShell::SetChangeRecording( bool bActivate )
+{
+ USHORT nOn = bActivate ? nsRedlineMode_t::REDLINE_ON : 0;
+ USHORT nMode = pWrtShell->GetRedlineMode();
+ pWrtShell->SetRedlineModeAndCheckInsMode( (nMode & ~nsRedlineMode_t::REDLINE_ON) | nOn);
+}
+
+
+bool SwDocShell::SetProtectionPassword( const String &rNewPassword )
+{
+ const SfxAllItemSet aSet( GetPool() );
+ const SfxItemSet* pArgs = &aSet;
+ const SfxPoolItem* pItem = NULL;
+
+ IDocumentRedlineAccess* pIDRA = pWrtShell->getIDocumentRedlineAccess();
+ Sequence< sal_Int8 > aPasswd = pIDRA->GetRedlinePassword();
+ if (pArgs && SFX_ITEM_SET == pArgs->GetItemState( FN_REDLINE_PROTECT, FALSE, &pItem )
+ && ((SfxBoolItem*)pItem)->GetValue() == aPasswd.getLength() > 0)
+ return false;
+
+ bool bRes = false;
+
+ if (rNewPassword.Len())
+ {
+ // when password protection is applied change tracking must always be active
+ SetChangeRecording( true );
+
+ Sequence< sal_Int8 > aNewPasswd;
+ SvPasswordHelper::GetHashPassword( aNewPasswd, rNewPassword );
+ pIDRA->SetRedlinePassword( aNewPasswd );
+ bRes = true;
+ }
+ else
+ {
+ pIDRA->SetRedlinePassword( Sequence< sal_Int8 >() );
+ bRes = true;
+ }
+
+ return bRes;
+}
+
+
+bool SwDocShell::GetProtectionHash( /*out*/ ::com::sun::star::uno::Sequence< sal_Int8 > &rPasswordHash )
+{
+ bool bRes = false;
+
+ const SfxAllItemSet aSet( GetPool() );
+ const SfxItemSet* pArgs = &aSet;
+ const SfxPoolItem* pItem = NULL;
+
+ IDocumentRedlineAccess* pIDRA = pWrtShell->getIDocumentRedlineAccess();
+ Sequence< sal_Int8 > aPasswdHash( pIDRA->GetRedlinePassword() );
+ if (pArgs && SFX_ITEM_SET == pArgs->GetItemState( FN_REDLINE_PROTECT, FALSE, &pItem )
+ && ((SfxBoolItem*)pItem)->GetValue() == (aPasswdHash.getLength() != 0))
+ return false;
+ rPasswordHash = aPasswdHash;
+ bRes = true;
+
+ return bRes;
+}
+
+
diff --git a/sw/source/ui/app/mn.src b/sw/source/ui/app/mn.src
index e1dcd688297c..eb8b74558dea 100644
--- a/sw/source/ui/app/mn.src
+++ b/sw/source/ui/app/mn.src
@@ -943,6 +943,7 @@ Menu MN_TAB_POPUPMENU
MN_EDIT_CONTOUR\
MenuItem\
{\
+ Checkable = TRUE ; \
Identifier = FN_WRAP_ANCHOR_ONLY ; \
HelpID = FN_WRAP_ANCHOR_ONLY ; \
Text [ en-US ] = "~First Paragraph" ; \
@@ -1007,6 +1008,7 @@ String MN_DRAW_POPUPMENU
MN_WRAP_CONTOUR_1\
MenuItem\
{\
+ Checkable = TRUE ; \
Identifier = FN_WRAP_ANCHOR_ONLY ; \
HelpID = FN_WRAP_ANCHOR_ONLY ; \
Text [ en-US ] = "~First Paragraph" ; \
@@ -1032,6 +1034,7 @@ String MN_DRAW_POPUPMENU
#define MN_AT_FRAME \
MenuItem\
{\
+ RadioCheck = TRUE ; \
Identifier = FN_TOOL_ANKER_FRAME ; \
HelpID = FN_TOOL_ANKER_FRAME ; \
Text [ en-US ] = "To ~Frame" ; \
@@ -1050,24 +1053,28 @@ String MN_DRAW_POPUPMENU
{\
MenuItem\
{\
+ RadioCheck = TRUE ; \
Identifier = FN_TOOL_ANKER_PAGE ; \
HelpID = FN_TOOL_ANKER_PAGE ; \
Text [ en-US ] = "To P~age" ; \
};\
MenuItem\
{\
+ RadioCheck = TRUE ; \
Identifier = FN_TOOL_ANKER_PARAGRAPH ; \
HelpID = FN_TOOL_ANKER_PARAGRAPH ; \
Text [ en-US ] = "To ~Paragraph" ; \
};\
MenuItem\
{\
+ RadioCheck = TRUE ; \
Identifier = FN_TOOL_ANKER_AT_CHAR ; \
HelpID = FN_TOOL_ANKER_AT_CHAR ; \
Text [ en-US ] = "To ~Character" ; \
};\
MenuItem\
{\
+ RadioCheck = TRUE ; \
Identifier = FN_TOOL_ANKER_CHAR ; \
HelpID = FN_TOOL_ANKER_CHAR ; \
Text [ en-US ] = "As C~haracter" ; \
diff --git a/sw/source/ui/app/swmodule.cxx b/sw/source/ui/app/swmodule.cxx
index a72d935f3796..3f1c4665c6e3 100644
--- a/sw/source/ui/app/swmodule.cxx
+++ b/sw/source/ui/app/swmodule.cxx
@@ -59,13 +59,13 @@
#include <svx/tbxcolor.hxx>
#include <svx/clipboardctl.hxx>
#include <svx/lboxctrl.hxx>
-#include <svx/extrusioncontrols.hxx>
#include <svx/hyprlink.hxx>
#include <svx/tbxcustomshapes.hxx>
-#include <svx/fontworkgallery.hxx>
#include <svx/imapdlg.hxx>
#include <svx/srchdlg.hxx>
#include <svx/hyperdlg.hxx>
+#include <svx/extrusioncolorcontrol.hxx>
+#include <svx/fontworkgallery.hxx>
#include <com/sun/star/scanner/XScannerManager.hpp>
#include <com/sun/star/container/XSet.hpp>
#include <comphelper/processfactory.hxx>
@@ -138,6 +138,7 @@
#include <mailmergechildwindow.hxx>
#include <modcfg.hxx>
#include <fontcfg.hxx>
+#include <sfx2/taskpane.hxx>
#include <sfx2/evntconf.hxx>
#include <sfx2/appuno.hxx>
#include <swatrset.hxx>
@@ -206,7 +207,6 @@ SwModule::SwModule( SfxObjectFactory* pWebFact,
pView(0),
bAuthorInitialised(sal_False),
bEmbeddedLoadSave( sal_False ),
- pClipboard( 0 ),
pDragDrop( 0 ),
pXSelection( 0 )
{
@@ -378,15 +378,8 @@ void SwDLL::RegisterControls()
SvxTbxCtlCustomShapes::RegisterControl( SID_DRAWTBX_CS_CALLOUT, pMod );
SvxTbxCtlCustomShapes::RegisterControl( SID_DRAWTBX_CS_STAR, pMod );
- svx::ExtrusionDepthControl::RegisterControl( SID_EXTRUSION_DEPTH_FLOATER, pMod );
- svx::ExtrusionDirectionControl::RegisterControl( SID_EXTRUSION_DIRECTION_FLOATER, pMod );
- svx::ExtrusionLightingControl::RegisterControl( SID_EXTRUSION_LIGHTING_FLOATER, pMod );
- svx::ExtrusionSurfaceControl::RegisterControl( SID_EXTRUSION_SURFACE_FLOATER, pMod );
svx::ExtrusionColorControl::RegisterControl( SID_EXTRUSION_3D_COLOR, pMod );
-
svx::FontWorkShapeTypeControl::RegisterControl( SID_FONTWORK_SHAPE_TYPE, pMod );
- svx::FontWorkAlignmentControl::RegisterControl( SID_FONTWORK_ALIGNMENT_FLOATER, pMod );
- svx::FontWorkCharacterSpacingControl::RegisterControl( SID_FONTWORK_CHARACTER_SPACING_FLOATER, pMod );
SvxClipBoardControl::RegisterControl(SID_PASTE, pMod );
SvxUndoRedoControl::RegisterControl(SID_UNDO, pMod );
@@ -469,18 +462,13 @@ void SwDLL::RegisterControls()
SvxCTLTextTbxCtrl::RegisterControl(SID_ATTR_PARA_LEFT_TO_RIGHT, pMod);
SvxCTLTextTbxCtrl::RegisterControl(SID_ATTR_PARA_RIGHT_TO_LEFT, pMod);
- svx::ExtrusionDepthControl::RegisterControl( SID_EXTRUSION_DEPTH_FLOATER, pMod );
- svx::ExtrusionDirectionControl::RegisterControl( SID_EXTRUSION_DIRECTION_FLOATER, pMod );
- svx::ExtrusionLightingControl::RegisterControl( SID_EXTRUSION_LIGHTING_FLOATER, pMod );
- svx::ExtrusionSurfaceControl::RegisterControl( SID_EXTRUSION_SURFACE_FLOATER, pMod );
- svx::ExtrusionColorControl::RegisterControl( SID_EXTRUSION_3D_COLOR, pMod );
-
GalleryChildWindow::RegisterChildWindow(0, pMod);
::avmedia::MediaToolBoxControl::RegisterControl(SID_AVMEDIA_TOOLBOX, pMod);
::avmedia::MediaPlayer::RegisterChildWindow(0, pMod);
SvxSmartTagsControl::RegisterControl(SID_OPEN_SMARTTAGMENU, pMod);
+ ::sfx2::TaskPaneWrapper::RegisterChildWindow( FALSE, pMod );
}
diff --git a/sw/source/ui/cctrl/makefile.mk b/sw/source/ui/cctrl/makefile.mk
index c724f287fc3a..33ba83f34d7c 100644
--- a/sw/source/ui/cctrl/makefile.mk
+++ b/sw/source/ui/cctrl/makefile.mk
@@ -50,6 +50,9 @@ SLOFILES = \
$(SLO)$/popbox.obj \
$(SLO)$/swlbox.obj
+EXCEPTIONSFILES = \
+ $(SLO)$/popbox.obj
+
# --- Tagets -------------------------------------------------------
.INCLUDE : target.mk
diff --git a/sw/source/ui/config/optdlg.src b/sw/source/ui/config/optdlg.src
index a2b9b4af8a9e..97f903557bda 100755
--- a/sw/source/ui/config/optdlg.src
+++ b/sw/source/ui/config/optdlg.src
@@ -952,11 +952,11 @@ StringArray STR_PRINTOPTUI
< "Contents"; >;
< "Page ba~ckground"; >;
< "Specifies whether to include colors and objects that are inserted to the background of the page (Format - Page - Background) in the printed document."; >;
- < "~Pictures and objects"; >;
+ < "P~ictures and other graphic objects"; >;
< "Specifies whether the graphics and drawing or OLE objects of your text document are printed"; >;
< "Hidden te~xt"; >;
< "Enable this option to print text that is marked as hidden."; >;
- < "~Text placeholder"; >;
+ < "~Text placeholders"; >;
< "Enable this option to print text placeholders. Disable this option to leave the text placeholders blank in the printout."; >;
< "Form control~s"; >;
< "Specifies whether the form control fields of the text document are printed"; >;
@@ -985,7 +985,7 @@ StringArray STR_PRINTOPTUI
< "Select the Brochure option to print the document in brochure format."; >;
< "Left-to-right script"; >;
< "Right-to-left script"; >;
- < "Ranges and copies"; >;
+ < "Range and copies"; >;
< "~All pages"; >;
< "Print the whole document."; >;
< "Pa~ges"; >;
diff --git a/sw/source/ui/config/optpage.cxx b/sw/source/ui/config/optpage.cxx
index 97930582ce5a..921d2a652002 100755
--- a/sw/source/ui/config/optpage.cxx
+++ b/sw/source/ui/config/optpage.cxx
@@ -542,10 +542,15 @@ void SwAddPrinterTabPage::Reset( const SfxItemSet& )
aFaxLB.SelectEntry( pAddPrinterAttr->sFaxName );
}
if (aProspectCB.IsChecked())
+ {
aProspectCB_RTL.Enable(TRUE);
+ aNoRB.Enable( FALSE );
+ aOnlyRB.Enable( FALSE );
+ aEndRB.Enable( FALSE );
+ aEndPageRB.Enable( FALSE );
+ }
else
- aProspectCB_RTL.Disable();
-
+ aProspectCB_RTL.Enable( FALSE );
}
//-----------------------------------------------------------------------
@@ -560,13 +565,14 @@ void SwAddPrinterTabPage::Init()
IMPL_LINK_INLINE_START( SwAddPrinterTabPage, AutoClickHdl, CheckBox *, EMPTYARG )
{
bAttrModified = TRUE;
- if (aProspectCB.IsChecked())
- aProspectCB_RTL.Enable(TRUE);
- else
- {
+ bool bIsProspect = aProspectCB.IsChecked();
+ if (!bIsProspect)
aProspectCB_RTL.Check( FALSE );
- aProspectCB_RTL.Disable();
- }
+ aProspectCB_RTL.Enable( bIsProspect );
+ aNoRB.Enable( !bIsProspect );
+ aOnlyRB.Enable( !bIsProspect );
+ aEndRB.Enable( !bIsProspect );
+ aEndPageRB.Enable( !bIsProspect );
return 0;
}
IMPL_LINK_INLINE_END( SwAddPrinterTabPage, AutoClickHdl, CheckBox *, EMPTYARG )
diff --git a/sw/source/ui/config/viewopt.cxx b/sw/source/ui/config/viewopt.cxx
index 73e5d69d7764..13cec2b93bb5 100644
--- a/sw/source/ui/config/viewopt.cxx
+++ b/sw/source/ui/config/viewopt.cxx
@@ -112,6 +112,7 @@ BOOL SwViewOption::IsEqualFlags( const SwViewOption &rOpt ) const
&& bFormView == rOpt.IsFormView()
&& mbViewLayoutBookMode == rOpt.mbViewLayoutBookMode
&& bShowPlaceHolderFields == rOpt.bShowPlaceHolderFields
+ && bIdle == rOpt.bIdle
#ifdef DBG_UTIL
// korrespondieren zu den Angaben in ui/config/cfgvw.src
&& bTest1 == rOpt.IsTest1()
@@ -226,7 +227,7 @@ SwViewOption::SwViewOption() :
{
// Initialisierung ist jetzt etwas einfacher
// alle Bits auf 0
- nCoreOptions = VIEWOPT_1_IDLE | VIEWOPT_1_HARDBLANK | VIEWOPT_1_SOFTHYPH |
+ nCoreOptions = VIEWOPT_1_HARDBLANK | VIEWOPT_1_SOFTHYPH |
VIEWOPT_1_REF |
VIEWOPT_1_GRAPHIC |
VIEWOPT_1_TABLE | VIEWOPT_1_DRAW | VIEWOPT_1_CONTROL |
@@ -243,6 +244,8 @@ SwViewOption::SwViewOption() :
bSelectionInReadonly = SW_MOD()->GetAccessibilityOptions().IsSelectionInReadonly();
+ bIdle = true;
+
#ifdef DBG_UTIL
// korrespondieren zu den Angaben in ui/config/cfgvw.src
bTest1 = bTest2 = bTest3 = bTest4 =
@@ -277,6 +280,7 @@ SwViewOption::SwViewOption(const SwViewOption& rVOpt)
bBookview = rVOpt.bBookview;
mbViewLayoutBookMode = rVOpt.mbViewLayoutBookMode;
bShowPlaceHolderFields = rVOpt.bShowPlaceHolderFields;
+ bIdle = rVOpt.bIdle;
#ifdef DBG_UTIL
bTest1 = rVOpt.bTest1 ;
@@ -317,6 +321,7 @@ SwViewOption& SwViewOption::operator=( const SwViewOption &rVOpt )
bBookview = rVOpt.bBookview;
mbViewLayoutBookMode = rVOpt.mbViewLayoutBookMode;
bShowPlaceHolderFields = rVOpt.bShowPlaceHolderFields;
+ bIdle = rVOpt.bIdle;
#ifdef DBG_UTIL
bTest1 = rVOpt.bTest1 ;
diff --git a/sw/source/ui/dbui/dbinsdlg.cxx b/sw/source/ui/dbui/dbinsdlg.cxx
index 97455d9e2514..9e62f7a4de36 100644
--- a/sw/source/ui/dbui/dbinsdlg.cxx
+++ b/sw/source/ui/dbui/dbinsdlg.cxx
@@ -33,15 +33,10 @@
#include "dbinsdlg.hxx"
-#ifndef INCLUDED_MEMORY
#include <memory>
-#define INCLUDED_MEMORY
-#endif
-#ifndef INCLUDED_FLOAT_H
#include <float.h>
-#define INCLUDED_FLOAT_H
-#endif
+
#include <hintids.hxx>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/container/XNameAccess.hpp>
@@ -65,9 +60,7 @@
#include <svl/stritem.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/svapp.hxx>
-#ifndef __SV_MNEMONIC_HXX
#include <vcl/mnemonic.hxx>
-#endif
#include <svl/style.hxx>
#include <svl/zformat.hxx>
#include <svx/htmlmode.hxx>
@@ -78,24 +71,16 @@
#include <editeng/boxitem.hxx>
#include <svx/rulritem.hxx>
#include <swdbtoolsclient.hxx>
-#ifndef _SWTABLEREP_HXX //autogen
#include <tabledlg.hxx>
-#endif
#include <fmtclds.hxx>
#include <tabcol.hxx>
#include <uiitems.hxx>
#include <viewopt.hxx>
#include <uitool.hxx>
#include <wrtsh.hxx>
-#ifndef _WVIEW_HXX
#include <wview.hxx>
-#endif
-#ifndef _DOCSH_HXX
#include <docsh.hxx>
-#endif
-#ifndef _DBMGR_HXX
#include <dbmgr.hxx>
-#endif
#include <tblafmt.hxx>
#include <cellatr.hxx>
#include <swtable.hxx>
@@ -108,19 +93,11 @@
#include <poolfmt.hxx>
#include <crsskip.hxx>
-#ifndef _DBINSDLG_HRC
#include <dbinsdlg.hrc>
-#endif
-#ifndef _DBUI_HRC
#include <dbui.hrc>
-#endif
-#ifndef _CMDID_H
#include <cmdid.h>
-#endif
-#ifndef _HELPID_H
#include <helpid.h>
-#endif
#include <cfgid.h>
#include <SwStyleNameMapper.hxx>
#include <comphelper/uno3.hxx>
@@ -1380,8 +1357,8 @@ void SwInsertDBColAutoPilot::DataToDoc( const Sequence<Any>& rSelection,
case _DB_Column::DB_COL_FIELD:
{
- SwDBField* pFld = (SwDBField*)pDBCol->DB_ColumnData.
- pField->Copy();
+ SwDBField *const pFld = static_cast<SwDBField *>(
+ pDBCol->DB_ColumnData.pField->CopyField());
double nValue = DBL_MAX;
Reference< XPropertySet > xColumnProps;
@@ -1934,7 +1911,7 @@ void SwInsertDBColAutoPilot::Load()
SwInsDBColumn& rSet = *aDBColumns[ n ];
for( USHORT m = 0; m < pNewData->aDBColumns.Count() ; ++m )
{
- const SwInsDBColumn& rGet = *pNewData->aDBColumns[ m ];
+ SwInsDBColumn& rGet = *pNewData->aDBColumns[ m ];
if(rGet.sColumn == rSet.sColumn)
{
if( rGet.bHasFmt && !rGet.bIsDBFmt )
@@ -1946,8 +1923,10 @@ void SwInsertDBColAutoPilot::Load()
{
xub_StrLen nCheckPos;
short nType;
- rNFmtr.PutEntry( (String&)rGet.sUsrNumFmt, nCheckPos, nType,
+ String sTmpFmt = rGet.sUsrNumFmt;
+ rNFmtr.PutEntry( sTmpFmt, nCheckPos, nType,
rSet.nUsrNumFmt, rGet.eUsrNumFmtLng );
+ rGet.sUsrNumFmt = sTmpFmt;
}
}
break;
diff --git a/sw/source/ui/dbui/dbmgr.cxx b/sw/source/ui/dbui/dbmgr.cxx
index a54217e1312b..cf894f8728c4 100644
--- a/sw/source/ui/dbui/dbmgr.cxx
+++ b/sw/source/ui/dbui/dbmgr.cxx
@@ -1255,6 +1255,9 @@ BOOL SwNewDBMgr::MergeMailFiles(SwWrtShell* pSourceShell,
nEndRow = pImpl->pMergeData ? pImpl->pMergeData->xResultSet->getRow() : 0;
} while( !bCancel &&
(bSynchronizedDoc && (nStartRow != nEndRow)? ExistsNextRecord() : ToNextMergeRecord()));
+
+ aPrtMonDlg.Show( FALSE );
+
// save the single output document
if(rMergeDescriptor.bCreateSingleFile || bAsSingleFile)
{
@@ -2904,9 +2907,7 @@ sal_Int32 SwNewDBMgr::MergeDocuments( SwMailMergeConfigItem& rMMConfig,
}
else
{
- SwDoc* pNewDoc = rSourceView.GetDocShell()->GetDoc()->CreateCopy();
- xWorkDocSh = new SwDocShell( pNewDoc, SFX_CREATE_MODE_STANDARD );
- xWorkDocSh->DoInitNew();
+ xWorkDocSh = rSourceView.GetDocShell()->GetDoc()->CreateCopy(true);
}
//create a ViewFrame
SwView* pWorkView = static_cast< SwView* >( SfxViewFrame::LoadHiddenDocument( *xWorkDocSh, 0 )->GetViewShell() );
@@ -3029,8 +3030,9 @@ sal_Int32 SwNewDBMgr::MergeDocuments( SwMailMergeConfigItem& rMMConfig,
pTargetShell->SttDoc();
//
}
- catch( Exception& )
+ catch( Exception& rEx)
{
+ (void)rEx;
DBG_ERROR("exception caught in SwNewDBMgr::MergeDocuments");
}
DELETEZ(pImpl->pMergeData);
diff --git a/sw/source/ui/dbui/dbui.src b/sw/source/ui/dbui/dbui.src
index aa84a1b1f997..f0dba28f75cc 100644
--- a/sw/source/ui/dbui/dbui.src
+++ b/sw/source/ui/dbui/dbui.src
@@ -83,7 +83,7 @@ ModelessDialog DLG_PRINTMONITOR
Pos = MAP_APPFONT ( 6, 17 ) ;
Size = MAP_APPFONT ( 100, 8 ) ;
CENTER = TRUE ;
- Text [ en-US ] = "is being printed on" ;
+ Text [ en-US ] = "is being prepared for printing on" ;
};
FixedText FT_SENDING
{
diff --git a/sw/source/ui/dbui/mailmergewizard.cxx b/sw/source/ui/dbui/mailmergewizard.cxx
index 54cf6edac512..365c56b4c0ea 100644
--- a/sw/source/ui/dbui/mailmergewizard.cxx
+++ b/sw/source/ui/dbui/mailmergewizard.cxx
@@ -260,7 +260,7 @@ void SwMailMergeWizard::UpdateRoadmap()
//#i97436# if a document has to be loaded then enable output type page only
m_bDocumentLoad = false;
bool bEnableOutputTypePage = (nCurPage != MM_DOCUMENTSELECTPAGE) ||
- static_cast<svt::OWizardPage*>(pCurPage)->commitPage( eValidate );
+ static_cast<svt::OWizardPage*>(pCurPage)->commitPage( ::svt::WizardTypes::eValidate );
for(sal_uInt16 nPage = MM_DOCUMENTSELECTPAGE; nPage <= MM_OUTPUTPAGE; ++nPage)
{
diff --git a/sw/source/ui/dbui/mmaddressblockpage.cxx b/sw/source/ui/dbui/mmaddressblockpage.cxx
index b2d8c790c25d..a35b0727c1ed 100644
--- a/sw/source/ui/dbui/mmaddressblockpage.cxx
+++ b/sw/source/ui/dbui/mmaddressblockpage.cxx
@@ -175,9 +175,9 @@ void SwMailMergeAddressBlockPage::ActivatePage()
/*-- 27.05.2004 13:59:15---------------------------------------------------
-----------------------------------------------------------------------*/
-sal_Bool SwMailMergeAddressBlockPage::commitPage( CommitPageReason _eReason )
+sal_Bool SwMailMergeAddressBlockPage::commitPage( ::svt::WizardTypes::CommitPageReason _eReason )
{
- if ( eTravelForward == _eReason && !m_pWizard->GetConfigItem().GetResultSet().is() )
+ if ( ::svt::WizardTypes::eTravelForward == _eReason && !m_pWizard->GetConfigItem().GetResultSet().is() )
return sal_False;
return sal_True;
}
diff --git a/sw/source/ui/dbui/mmaddressblockpage.hxx b/sw/source/ui/dbui/mmaddressblockpage.hxx
index b47b71f1a561..eddaca225e9b 100644
--- a/sw/source/ui/dbui/mmaddressblockpage.hxx
+++ b/sw/source/ui/dbui/mmaddressblockpage.hxx
@@ -98,7 +98,7 @@ class SwMailMergeAddressBlockPage : public svt::OWizardPage
void EnableAddressBlock(sal_Bool bAll, sal_Bool bSelective);
virtual void ActivatePage();
- virtual sal_Bool commitPage( CommitPageReason _eReason );
+ virtual sal_Bool commitPage( ::svt::WizardTypes::CommitPageReason _eReason );
virtual bool canAdvance() const;
public:
diff --git a/sw/source/ui/dbui/mmdocselectpage.cxx b/sw/source/ui/dbui/mmdocselectpage.cxx
index 698e12f44882..e125b4f8ed2e 100644
--- a/sw/source/ui/dbui/mmdocselectpage.cxx
+++ b/sw/source/ui/dbui/mmdocselectpage.cxx
@@ -197,11 +197,11 @@ IMPL_LINK(SwMailMergeDocSelectPage, FileSelectHdl, PushButton*, pButton)
/*-- 06.04.2004 12:52:24---------------------------------------------------
-----------------------------------------------------------------------*/
-sal_Bool SwMailMergeDocSelectPage::commitPage( CommitPageReason _eReason )
+sal_Bool SwMailMergeDocSelectPage::commitPage( ::svt::WizardTypes::CommitPageReason _eReason )
{
sal_Bool bReturn = sal_False;
- bool bNext = _eReason == eTravelForward;
- if(bNext || _eReason == eValidate )
+ bool bNext = _eReason == ::svt::WizardTypes::eTravelForward;
+ if(bNext || _eReason == ::svt::WizardTypes::eValidate )
{
::rtl::OUString sReloadDocument;
bReturn = m_aCurrentDocRB.IsChecked() ||
@@ -209,7 +209,7 @@ sal_Bool SwMailMergeDocSelectPage::commitPage( CommitPageReason _eReason )
((sReloadDocument = m_sLoadFileName).getLength() && m_aLoadDocRB.IsChecked() )||
((sReloadDocument = m_sLoadTemplateName).getLength() && m_aLoadTemplateRB.IsChecked())||
(m_aRecentDocRB.IsChecked() && (sReloadDocument = m_aRecentDocLB.GetSelectEntry()).getLength());
- if( _eReason == eValidate )
+ if( _eReason == ::svt::WizardTypes::eValidate )
m_pWizard->SetDocumentLoad(!m_aCurrentDocRB.IsChecked());
if(bNext && !m_aCurrentDocRB.IsChecked())
diff --git a/sw/source/ui/dbui/mmdocselectpage.hxx b/sw/source/ui/dbui/mmdocselectpage.hxx
index 2785846b39e8..6483025f88ed 100644
--- a/sw/source/ui/dbui/mmdocselectpage.hxx
+++ b/sw/source/ui/dbui/mmdocselectpage.hxx
@@ -61,7 +61,7 @@ class SwMailMergeDocSelectPage : public svt::OWizardPage
DECL_LINK(DocSelectHdl, RadioButton*);
DECL_LINK(FileSelectHdl, PushButton*);
- virtual sal_Bool commitPage( CommitPageReason _eReason );
+ virtual sal_Bool commitPage( ::svt::WizardTypes::CommitPageReason _eReason );
public:
SwMailMergeDocSelectPage( SwMailMergeWizard* _pParent);
diff --git a/sw/source/ui/dbui/mmgreetingspage.cxx b/sw/source/ui/dbui/mmgreetingspage.cxx
index c7613055d6ab..7281880c593d 100644
--- a/sw/source/ui/dbui/mmgreetingspage.cxx
+++ b/sw/source/ui/dbui/mmgreetingspage.cxx
@@ -390,7 +390,7 @@ void SwMailMergeGreetingsPage::ActivatePage()
/*-- 11.05.2004 14:47:10---------------------------------------------------
-----------------------------------------------------------------------*/
-sal_Bool SwMailMergeGreetingsPage::commitPage( CommitPageReason )
+sal_Bool SwMailMergeGreetingsPage::commitPage( ::svt::WizardTypes::CommitPageReason )
{
SwMailMergeConfigItem& rConfig = m_pWizard->GetConfigItem();
diff --git a/sw/source/ui/dbui/mmgreetingspage.hxx b/sw/source/ui/dbui/mmgreetingspage.hxx
index 1756f78a29d8..3e237d797e2f 100644
--- a/sw/source/ui/dbui/mmgreetingspage.hxx
+++ b/sw/source/ui/dbui/mmgreetingspage.hxx
@@ -122,7 +122,7 @@ class SwMailMergeGreetingsPage : public svt::OWizardPage,
virtual void UpdatePreview();
virtual void ActivatePage();
- virtual sal_Bool commitPage( CommitPageReason _eReason );
+ virtual sal_Bool commitPage( ::svt::WizardTypes::CommitPageReason _eReason );
public:
SwMailMergeGreetingsPage( SwMailMergeWizard* _pParent);
~SwMailMergeGreetingsPage();
diff --git a/sw/source/ui/dbui/mmlayoutpage.cxx b/sw/source/ui/dbui/mmlayoutpage.cxx
index 366eb23e9352..d9ae7b9c518f 100644
--- a/sw/source/ui/dbui/mmlayoutpage.cxx
+++ b/sw/source/ui/dbui/mmlayoutpage.cxx
@@ -254,11 +254,11 @@ void SwMailMergeLayoutPage::ActivatePage()
/*-- 11.05.2004 10:41:26---------------------------------------------------
-----------------------------------------------------------------------*/
-sal_Bool SwMailMergeLayoutPage::commitPage( CommitPageReason _eReason )
+sal_Bool SwMailMergeLayoutPage::commitPage( ::svt::WizardTypes::CommitPageReason _eReason )
{
//now insert the frame and the greeting
SwMailMergeConfigItem& rConfigItem = m_pWizard->GetConfigItem();
- if(eTravelForward == _eReason)
+ if(::svt::WizardTypes::eTravelForward == _eReason)
{
long nLeft = static_cast< long >(m_aLeftMF.Denormalize(m_aLeftMF.GetValue(FUNIT_TWIP)));
long nTop = static_cast< long >(m_aTopMF.Denormalize(m_aTopMF.GetValue(FUNIT_TWIP)));
diff --git a/sw/source/ui/dbui/mmlayoutpage.hxx b/sw/source/ui/dbui/mmlayoutpage.hxx
index 0a4569c71437..b7dd9dfab2e6 100644
--- a/sw/source/ui/dbui/mmlayoutpage.hxx
+++ b/sw/source/ui/dbui/mmlayoutpage.hxx
@@ -98,7 +98,7 @@ class SwMailMergeLayoutPage : public svt::OWizardPage
static void InsertGreeting(SwWrtShell& rShell, SwMailMergeConfigItem& rConfigItem, bool bExample);
virtual void ActivatePage();
- virtual sal_Bool commitPage(CommitPageReason _eReason);
+ virtual sal_Bool commitPage(::svt::WizardTypes::CommitPageReason _eReason);
public:
SwMailMergeLayoutPage( SwMailMergeWizard* _pParent);
~SwMailMergeLayoutPage();
diff --git a/sw/source/ui/dbui/mmpreparemergepage.cxx b/sw/source/ui/dbui/mmpreparemergepage.cxx
index a8650c4b37c9..8539f037ecdc 100644
--- a/sw/source/ui/dbui/mmpreparemergepage.cxx
+++ b/sw/source/ui/dbui/mmpreparemergepage.cxx
@@ -191,10 +191,10 @@ void SwMailMergePrepareMergePage::ActivatePage()
/*-- 13.05.2004 15:38:32---------------------------------------------------
merge the data into a new file
-----------------------------------------------------------------------*/
-sal_Bool SwMailMergePrepareMergePage::commitPage( CommitPageReason _eReason )
+sal_Bool SwMailMergePrepareMergePage::commitPage( ::svt::WizardTypes::CommitPageReason _eReason )
{
SwMailMergeConfigItem& rConfigItem = m_pWizard->GetConfigItem();
- if(eTravelForward == _eReason && !rConfigItem.IsMergeDone())
+ if(::svt::WizardTypes::eTravelForward == _eReason && !rConfigItem.IsMergeDone())
{
m_pWizard->CreateTargetDocument();
m_pWizard->SetRestartPage(MM_MERGEPAGE);
diff --git a/sw/source/ui/dbui/mmpreparemergepage.hxx b/sw/source/ui/dbui/mmpreparemergepage.hxx
index 90298711dd88..8fb7ad938996 100644
--- a/sw/source/ui/dbui/mmpreparemergepage.hxx
+++ b/sw/source/ui/dbui/mmpreparemergepage.hxx
@@ -64,7 +64,7 @@ class SwMailMergePrepareMergePage : public svt::OWizardPage
DECL_LINK(MoveHdl_Impl, void*);
virtual void ActivatePage();
- virtual sal_Bool commitPage( CommitPageReason _eReason );
+ virtual sal_Bool commitPage( ::svt::WizardTypes::CommitPageReason _eReason );
public:
SwMailMergePrepareMergePage( SwMailMergeWizard* _pParent);
diff --git a/sw/source/ui/dialog/SwSpellDialogChildWindow.cxx b/sw/source/ui/dialog/SwSpellDialogChildWindow.cxx
index 8bf658d504b0..c9e99979e66b 100644
--- a/sw/source/ui/dialog/SwSpellDialogChildWindow.cxx
+++ b/sw/source/ui/dialog/SwSpellDialogChildWindow.cxx
@@ -32,13 +32,13 @@
#include <vcl/msgbox.hxx>
#include <editeng/svxacorr.hxx>
#include <editeng/acorrcfg.hxx>
-#ifndef _SVX_SVXIDS_HRC
#include <svx/svxids.hrc>
-#endif
#include <sfx2/app.hxx>
#include <sfx2/bindings.hxx>
#include <sfx2/dispatch.hxx>
#include <editeng/unolingu.hxx>
+#include <editeng/editeng.hxx>
+#include <editeng/editview.hxx>
#include <wrtsh.hxx>
#include <sfx2/printer.hxx>
#include <svx/svdoutl.hxx>
@@ -56,9 +56,7 @@
#include <pam.hxx>
#include <drawbase.hxx>
#include <unotextrange.hxx>
-#ifndef _DIALOG_HXX
#include <dialog.hrc>
-#endif
#include <cmdid.h>
@@ -202,12 +200,19 @@ SfxChildWinInfo SwSpellDialogChildWindow::GetInfo (void) const
-----------------------------------------------------------------------*/
-svx::SpellPortions SwSpellDialogChildWindow::GetNextWrongSentence (void)
+svx::SpellPortions SwSpellDialogChildWindow::GetNextWrongSentence(bool bRecheck)
{
svx::SpellPortions aRet;
SwWrtShell* pWrtShell = GetWrtShell_Impl();
if(pWrtShell)
{
+ if (!bRecheck)
+ {
+ // first set continuation point for spell/grammar check to the
+ // end of the current sentence
+ pWrtShell->MoveContinuationPosToEndOfCheckedSentence();
+ }
+
ShellModes eSelMode = pWrtShell->GetView().GetShellMode();
bool bDrawText = SHELL_MODE_DRAWTEXT == eSelMode;
bool bNormalText =
@@ -239,7 +244,10 @@ svx::SpellPortions SwSpellDialogChildWindow::GetNextWrongSentence (void)
if(!pWrtShell->HasSelection())
pWrtShell->GoStartSentence();
else
+ {
+ pWrtShell->ExpandToSentenceBorders();
m_pSpellState->m_bStartedInSelection = true;
+ }
//determine if the selection is outside of the body text
bOtherText = !(pWrtShell->GetFrmType(0,sal_True) & FRMTYPE_BODY);
m_pSpellState->m_SpellStartPosition = bOtherText ? SPELL_START_OTHER : SPELL_START_BODY;
@@ -269,7 +277,24 @@ svx::SpellPortions SwSpellDialogChildWindow::GetNextWrongSentence (void)
m_pSpellState->m_SpellStartPosition = SPELL_START_DRAWTEXT;
m_pSpellState->m_pStartDrawing = pSdrView->GetMarkedObjectList().GetMark(0)->GetMarkedSdrObj();
OutlinerView* pOLV = pSdrView->GetTextEditOutlinerView();
- m_pSpellState->m_aStartDrawingSelection = pOLV->GetSelection();
+ // start checking at the top of the drawing object
+ pOLV->SetSelection( ESelection() );
+ m_pSpellState->m_aStartDrawingSelection = ESelection();
+/*
+Note: spelling in a selection only, or starting in a mid of a drawing object requires
+further changes elsewhere. (Especially if it should work in sc and sd as well.)
+The code below would only be part of the solution.
+(Keeping it a as a comment for the time being)
+ ESelection aCurSel( pOLV->GetSelection() );
+ ESelection aSentenceSel( pOLV->GetEditView().GetEditEngine()->SelectSentence( aCurSel ) );
+ if (!aCurSel.HasRange())
+ {
+ aSentenceSel.nEndPara = aSentenceSel.nStartPara;
+ aSentenceSel.nEndPos = aSentenceSel.nStartPos;
+ }
+ pOLV->SetSelection( aSentenceSel );
+ m_pSpellState->m_aStartDrawingSelection = aSentenceSel;
+*/
}
m_pSpellState->m_bInitialCall = false;
@@ -316,61 +341,66 @@ svx::SpellPortions SwSpellDialogChildWindow::GetNextWrongSentence (void)
//spell inside of the Writer text
if(!pWrtShell->SpellSentence(aRet, m_bIsGrammarCheckingOn))
{
- //find out which text has been spelled body or other
- bOtherText = !(pWrtShell->GetFrmType(0,sal_True) & FRMTYPE_BODY);
- if(bOtherText && m_pSpellState->m_bStartedInOther && m_pSpellState->pOtherCursor)
+ // if there is a selection (within body or header/footer text)
+ // then spell/grammar checking should not move outside of it.
+ if (!m_pSpellState->m_bStartedInSelection)
{
- m_pSpellState->m_bStartedInOther = false;
- pWrtShell->SetSelection(*m_pSpellState->pOtherCursor);
- pWrtShell->SpellEnd();
- delete m_pSpellState->pOtherCursor;
- m_pSpellState->pOtherCursor = 0;
- pWrtShell->SpellStart(DOCPOS_OTHERSTART, DOCPOS_CURR, DOCPOS_OTHERSTART, FALSE );
- pWrtShell->SpellSentence(aRet, m_bIsGrammarCheckingOn);
- }
- if(!aRet.size())
- {
- //end spelling
- pWrtShell->SpellEnd();
- if(bOtherText)
+ //find out which text has been spelled body or other
+ bOtherText = !(pWrtShell->GetFrmType(0,sal_True) & FRMTYPE_BODY);
+ if(bOtherText && m_pSpellState->m_bStartedInOther && m_pSpellState->pOtherCursor)
{
- m_pSpellState->m_bOtherSpelled = true;
- //has the body been spelled?
- if(!m_pSpellState->m_bBodySpelled)
+ m_pSpellState->m_bStartedInOther = false;
+ pWrtShell->SetSelection(*m_pSpellState->pOtherCursor);
+ pWrtShell->SpellEnd();
+ delete m_pSpellState->pOtherCursor;
+ m_pSpellState->pOtherCursor = 0;
+ pWrtShell->SpellStart(DOCPOS_OTHERSTART, DOCPOS_CURR, DOCPOS_OTHERSTART, FALSE );
+ pWrtShell->SpellSentence(aRet, m_bIsGrammarCheckingOn);
+ }
+ if(!aRet.size())
+ {
+ //end spelling
+ pWrtShell->SpellEnd();
+ if(bOtherText)
{
- pWrtShell->SpellStart(DOCPOS_START, DOCPOS_END, DOCPOS_START, FALSE );
- if(!pWrtShell->SpellSentence(aRet, m_bIsGrammarCheckingOn))
+ m_pSpellState->m_bOtherSpelled = true;
+ //has the body been spelled?
+ if(!m_pSpellState->m_bBodySpelled)
{
- m_pSpellState->m_bBodySpelled = true;
- pWrtShell->SpellEnd();
+ pWrtShell->SpellStart(DOCPOS_START, DOCPOS_END, DOCPOS_START, FALSE );
+ if(!pWrtShell->SpellSentence(aRet, m_bIsGrammarCheckingOn))
+ {
+ m_pSpellState->m_bBodySpelled = true;
+ pWrtShell->SpellEnd();
+ }
}
}
+ else
+ {
+ m_pSpellState->m_bBodySpelled = true;
+ if(!m_pSpellState->m_bOtherSpelled && pWrtShell->HasOtherCnt())
+ {
+ pWrtShell->SpellStart(DOCPOS_OTHERSTART, DOCPOS_OTHEREND, DOCPOS_OTHERSTART, FALSE );
+ if(!pWrtShell->SpellSentence(aRet, m_bIsGrammarCheckingOn))
+ {
+ pWrtShell->SpellEnd();
+ m_pSpellState->m_bOtherSpelled = true;
+ }
+ }
+ else
+ m_pSpellState->m_bOtherSpelled = true;
+ }
}
- else
+
+ //search for a draw text object that contains error and spell it
+ if(!aRet.size() &&
+ (m_pSpellState->m_bDrawingsSpelled ||
+ !FindNextDrawTextError_Impl(*pWrtShell) || !SpellDrawText_Impl(*pWrtShell, aRet)))
{
- m_pSpellState->m_bBodySpelled = true;
- if(!m_pSpellState->m_bOtherSpelled && pWrtShell->HasOtherCnt())
- {
- pWrtShell->SpellStart(DOCPOS_OTHERSTART, DOCPOS_OTHEREND, DOCPOS_OTHERSTART, FALSE );
- if(!pWrtShell->SpellSentence(aRet, m_bIsGrammarCheckingOn))
- {
- pWrtShell->SpellEnd();
- m_pSpellState->m_bOtherSpelled = true;
- }
- }
- else
- m_pSpellState->m_bOtherSpelled = true;
+ lcl_LeaveDrawText(*pWrtShell);
+ m_pSpellState->m_bDrawingsSpelled = true;
}
}
-
- //search for a draw text object that contains error and spell it
- if(!aRet.size() &&
- (m_pSpellState->m_bDrawingsSpelled ||
- !FindNextDrawTextError_Impl(*pWrtShell) || !SpellDrawText_Impl(*pWrtShell, aRet)))
- {
- lcl_LeaveDrawText(*pWrtShell);
- m_pSpellState->m_bDrawingsSpelled = true;
- }
}
}
// now only the rest of the body text can be spelled -
@@ -430,7 +460,7 @@ svx::SpellPortions SwSpellDialogChildWindow::GetNextWrongSentence (void)
/*-- 09.09.2003 10:39:40---------------------------------------------------
-----------------------------------------------------------------------*/
-void SwSpellDialogChildWindow::ApplyChangedSentence(const svx::SpellPortions& rChanged)
+void SwSpellDialogChildWindow::ApplyChangedSentence(const svx::SpellPortions& rChanged, bool bRecheck)
{
SwWrtShell* pWrtShell = GetWrtShell_Impl();
DBG_ASSERT(!m_pSpellState->m_bInitialCall, "ApplyChangedSentence in initial call or after resume");
@@ -443,13 +473,19 @@ void SwSpellDialogChildWindow::ApplyChangedSentence(const svx::SpellPortions& rC
SHELL_MODE_LIST_TEXT == eSelMode ||
SHELL_MODE_TABLE_LIST_TEXT == eSelMode ||
SHELL_MODE_TEXT == eSelMode;
+
+ // evaluate if the same sentence should be rechecked or not.
+ // Sentences that got grammar checked should always be rechecked in order
+ // to detect possible errors that get introduced with the changes
+ bRecheck |= pWrtShell->HasLastSentenceGotGrammarChecked();
+
if(bNormalText)
- pWrtShell->ApplyChangedSentence(rChanged, m_bIsGrammarCheckingOn);
+ pWrtShell->ApplyChangedSentence(rChanged, bRecheck);
else if(bDrawText )
{
SdrView* pDrView = pWrtShell->GetDrawView();
SdrOutliner *pOutliner = pDrView->GetTextEditOutliner();
- pOutliner->ApplyChangedSentence(pDrView->GetTextEditOutlinerView()->GetEditView(), rChanged, m_bIsGrammarCheckingOn);
+ pOutliner->ApplyChangedSentence(pDrView->GetTextEditOutlinerView()->GetEditView(), rChanged, bRecheck);
}
}
}
@@ -847,7 +883,7 @@ bool SwSpellDialogChildWindow::FindNextDrawTextError_Impl(SwWrtShell& rSh)
Point aTmp( 0,0 );
rSh.SelectObj( aTmp, 0, pTextObj );
SdrPageView* pPV = pDrView->GetSdrPageView();
- rView.BeginTextEdit( pTextObj, pPV, &rView.GetEditWin(), FALSE );
+ rView.BeginTextEdit( pTextObj, pPV, &rView.GetEditWin(), FALSE, TRUE );
rView.AttrChangedNotify(&rSh);
bNextDoc = true;
}
diff --git a/sw/source/ui/dialog/makefile.mk b/sw/source/ui/dialog/makefile.mk
index 35bc3022909e..26047ad63655 100644
--- a/sw/source/ui/dialog/makefile.mk
+++ b/sw/source/ui/dialog/makefile.mk
@@ -79,5 +79,7 @@ LIB1OBJFILES = \
# $(SLO)$/macassgn.obj \
# --- Tagets -------------------------------------------------------
-
.INCLUDE : target.mk
+
+
+
diff --git a/sw/source/ui/dialog/regionsw.cxx b/sw/source/ui/dialog/regionsw.cxx
index ef9e8f4f85de..8a4304bcd5a9 100644
--- a/sw/source/ui/dialog/regionsw.cxx
+++ b/sw/source/ui/dialog/regionsw.cxx
@@ -117,7 +117,7 @@ void SwBaseShell::InsertRegionDialog(SfxRequest& rReq)
else
aTmpStr = rSh.GetUniqueSectionName();
- SwSection aSection(CONTENT_SECTION,aTmpStr);
+ SwSectionData aSection(CONTENT_SECTION, aTmpStr);
rReq.SetReturnValue(SfxStringItem(FN_INSERT_REGION, aTmpStr));
aSet.Put( *pSet );
@@ -153,10 +153,10 @@ void SwBaseShell::InsertRegionDialog(SfxRequest& rReq)
(BOOL)((const SfxBoolItem *)pItem)->GetValue():FALSE;
// <--
- aSection.SetProtect(bProtect);
+ aSection.SetProtectFlag(bProtect);
aSection.SetHidden(bHidden);
// --> FME 2004-06-22 #114856# edit in readonly sections
- aSection.SetEditInReadonly(bEditInReadonly);
+ aSection.SetEditInReadonlyFlag(bEditInReadonly);
// <--
if(SFX_ITEM_SET ==
@@ -193,9 +193,10 @@ void SwBaseShell::InsertRegionDialog(SfxRequest& rReq)
}
}
-IMPL_STATIC_LINK( SwWrtShell, InsertRegionDialog, SwSection*, pSect )
+IMPL_STATIC_LINK( SwWrtShell, InsertRegionDialog, SwSectionData*, pSect )
{
- if( pSect )
+ ::std::auto_ptr<SwSectionData> pSectionData(pSect);
+ if (pSectionData.get())
{
SfxItemSet aSet(pThis->GetView().GetPool(),
RES_COL, RES_COL,
@@ -214,10 +215,9 @@ IMPL_STATIC_LINK( SwWrtShell, InsertRegionDialog, SwSection*, pSect )
AbstractInsertSectionTabDialog* aTabDlg = pFact->CreateInsertSectionTabDialog( DLG_INSERT_SECTION,
&pThis->GetView().GetViewFrame()->GetWindow(),aSet , *pThis);
DBG_ASSERT(aTabDlg, "Dialogdiet fail!");
- aTabDlg->SetSection(*pSect);
+ aTabDlg->SetSectionData(*pSectionData);
aTabDlg->Execute();
- delete pSect;
delete aTabDlg;
}
return 0;
diff --git a/sw/source/ui/dialog/swdlgfact.cxx b/sw/source/ui/dialog/swdlgfact.cxx
index bdc3a320dcd6..8447489e5b03 100644
--- a/sw/source/ui/dialog/swdlgfact.cxx
+++ b/sw/source/ui/dialog/swdlgfact.cxx
@@ -566,9 +566,10 @@ void AbstractEditRegionDlg_Impl::SelectSection(const String& rSectionName)
}
// AbstractEditRegionDlg_Impl end
//AbstractInsertSectionTabDialog_Impl begin
-void AbstractInsertSectionTabDialog_Impl::SetSection(const SwSection& rSect)
+void
+AbstractInsertSectionTabDialog_Impl::SetSectionData(SwSectionData const& rSect)
{
- pDlg->SetSection( rSect);
+ pDlg->SetSectionData(rSect);
}
// AbstractInsertSectionTabDialog_Impl end
diff --git a/sw/source/ui/dialog/swdlgfact.hxx b/sw/source/ui/dialog/swdlgfact.hxx
index 462c571a06fa..5d8611d51f54 100644
--- a/sw/source/ui/dialog/swdlgfact.hxx
+++ b/sw/source/ui/dialog/swdlgfact.hxx
@@ -377,7 +377,7 @@ class SwInsertSectionTabDialog;
class AbstractInsertSectionTabDialog_Impl : public AbstractInsertSectionTabDialog
{
DECL_ABSTDLG_BASE(AbstractInsertSectionTabDialog_Impl,SwInsertSectionTabDialog)
- virtual void SetSection(const SwSection& rSect);
+ virtual void SetSectionData(SwSectionData const& rSect);
};
//for SwInsertSectionTabDialog end
diff --git a/sw/source/ui/dialog/uiregionsw.cxx b/sw/source/ui/dialog/uiregionsw.cxx
index c1e6df5edbf5..b4151f6d1462 100644
--- a/sw/source/ui/dialog/uiregionsw.cxx
+++ b/sw/source/ui/dialog/uiregionsw.cxx
@@ -80,13 +80,12 @@
using namespace ::com::sun::star;
+
// sw/inc/docary.hxx
SV_IMPL_PTRARR( SwSectionFmts, SwSectionFmtPtr )
#define FILE_NAME_LENGTH 17
-SV_IMPL_OP_PTRARR_SORT( SectReprArr, SectReprPtr )
-
static void lcl_ReadSections( SfxMedium& rMedium, ComboBox& rBox );
void lcl_FillList( SwWrtShell& rSh, ComboBox& rSubRegions, ComboBox* pAvailNames, const SwSectionFmt* pNewFmt )
@@ -103,7 +102,8 @@ void lcl_FillList( SwWrtShell& rSh, ComboBox& rSubRegions, ComboBox* pAvailNames
(eTmpType = pFmt->GetSection()->GetType()) != TOX_CONTENT_SECTION
&& TOX_HEADER_SECTION != eTmpType )
{
- String* pString = new String(pFmt->GetSection()->GetName());
+ String* pString =
+ new String(pFmt->GetSection()->GetSectionName());
if(pAvailNames)
pAvailNames->InsertEntry(*pString);
rSubRegions.InsertEntry(*pString);
@@ -123,7 +123,8 @@ void lcl_FillList( SwWrtShell& rSh, ComboBox& rSubRegions, ComboBox* pAvailNames
(eTmpType = pFmt->GetSection()->GetType()) != TOX_CONTENT_SECTION
&& TOX_HEADER_SECTION != eTmpType )
{
- String* pString = new String(pFmt->GetSection()->GetName());
+ String* pString =
+ new String(pFmt->GetSection()->GetSectionName());
if(pAvailNames)
pAvailNames->InsertEntry(*pString);
rSubRegions.InsertEntry(*pString);
@@ -164,26 +165,82 @@ public:
Beschreibung: User Data Klasse fuer Bereichsinformationen
----------------------------------------------------------------------------*/
-SectRepr::SectRepr( USHORT nPos, SwSection& rSect ) :
- aSection( CONTENT_SECTION, aEmptyStr ),
- aBrush( RES_BACKGROUND ),
- aFrmDirItem( FRMDIR_ENVIRONMENT, RES_FRAMEDIR ),
- aLRSpaceItem( RES_LR_SPACE ),
- bSelected(FALSE)
+class SectRepr
+{
+private:
+ SwSectionData m_SectionData;
+ SwFmtCol m_Col;
+ SvxBrushItem m_Brush;
+ SwFmtFtnAtTxtEnd m_FtnNtAtEnd;
+ SwFmtEndAtTxtEnd m_EndNtAtEnd;
+ SwFmtNoBalancedColumns m_Balance;
+ SvxFrameDirectionItem m_FrmDirItem;
+ SvxLRSpaceItem m_LRSpaceItem;
+ USHORT m_nArrPos;
+ // zeigt an, ob evtl. Textinhalt im Bereich ist
+ bool m_bContent : 1;
+ // fuer Multiselektion erst markieren, dann mit der TreeListBox arbeiten!
+ bool m_bSelected : 1;
+ uno::Sequence<sal_Int8> m_TempPasswd;
+
+public:
+ SectRepr(USHORT nPos, SwSection& rSect);
+ bool operator==(SectRepr& rSectRef) const
+ { return m_nArrPos == rSectRef.GetArrPos(); }
+
+ bool operator< (SectRepr& rSectRef) const
+ { return m_nArrPos < rSectRef.GetArrPos(); }
+
+ SwSectionData & GetSectionData() { return m_SectionData; }
+ SwSectionData const&GetSectionData() const { return m_SectionData; }
+ SwFmtCol& GetCol() { return m_Col; }
+ SvxBrushItem& GetBackground() { return m_Brush; }
+ SwFmtFtnAtTxtEnd& GetFtnNtAtEnd() { return m_FtnNtAtEnd; }
+ SwFmtEndAtTxtEnd& GetEndNtAtEnd() { return m_EndNtAtEnd; }
+ SwFmtNoBalancedColumns& GetBalance() { return m_Balance; }
+ SvxFrameDirectionItem& GetFrmDir() { return m_FrmDirItem; }
+ SvxLRSpaceItem& GetLRSpace() { return m_LRSpaceItem; }
+
+ USHORT GetArrPos() const { return m_nArrPos; }
+ String GetFile() const;
+ String GetSubRegion() const;
+ void SetFile(String const& rFile);
+ void SetFilter(String const& rFilter);
+ void SetSubRegion(String const& rSubRegion);
+
+ bool IsContent() { return m_bContent; }
+ void SetContent(bool const bValue) { m_bContent = bValue; }
+
+ void SetSelected() { m_bSelected = true; }
+ bool IsSelected() const { return m_bSelected; }
+
+ uno::Sequence<sal_Int8> & GetTempPasswd() { return m_TempPasswd; }
+ void SetTempPasswd(const uno::Sequence<sal_Int8> & rPasswd)
+ { m_TempPasswd = rPasswd; }
+};
+
+
+SV_IMPL_OP_PTRARR_SORT( SectReprArr, SectReprPtr )
+
+SectRepr::SectRepr( USHORT nPos, SwSection& rSect )
+ : m_SectionData( rSect )
+ , m_Brush( RES_BACKGROUND )
+ , m_FrmDirItem( FRMDIR_ENVIRONMENT, RES_FRAMEDIR )
+ , m_LRSpaceItem( RES_LR_SPACE )
+ , m_nArrPos(nPos)
+ , m_bContent(m_SectionData.GetLinkFileName().Len() == 0)
+ , m_bSelected(false)
{
- aSection = rSect;
- bContent = aSection.GetLinkFileName().Len() == 0;
- nArrPos=nPos;
SwSectionFmt *pFmt = rSect.GetFmt();
if( pFmt )
{
- aCol = pFmt->GetCol();
- aBrush = pFmt->GetBackground();
- aFtnNtAtEnd = pFmt->GetFtnAtTxtEnd();
- aEndNtAtEnd = pFmt->GetEndAtTxtEnd();
- aBalance.SetValue(pFmt->GetBalancedColumns().GetValue());
- aFrmDirItem = pFmt->GetFrmDir();
- aLRSpaceItem = pFmt->GetLRSpace();
+ m_Col = pFmt->GetCol();
+ m_Brush = pFmt->GetBackground();
+ m_FtnNtAtEnd = pFmt->GetFtnAtTxtEnd();
+ m_EndNtAtEnd = pFmt->GetEndAtTxtEnd();
+ m_Balance.SetValue(pFmt->GetBalancedColumns().GetValue());
+ m_FrmDirItem = pFmt->GetFrmDir();
+ m_LRSpaceItem = pFmt->GetLRSpace();
}
}
@@ -192,7 +249,7 @@ void SectRepr::SetFile( const String& rFile )
String sNewFile( INetURLObject::decode( rFile, INET_HEX_ESCAPE,
INetURLObject::DECODE_UNAMBIGUOUS,
RTL_TEXTENCODING_UTF8 ));
- String sOldFileName( aSection.GetLinkFileName() );
+ String sOldFileName( m_SectionData.GetLinkFileName() );
String sSub( sOldFileName.GetToken( 2, sfx2::cTokenSeperator ) );
if( rFile.Len() || sSub.Len() )
@@ -205,19 +262,23 @@ void SectRepr::SetFile( const String& rFile )
sNewFile += sSub;
}
- aSection.SetLinkFileName( sNewFile );
+ m_SectionData.SetLinkFileName( sNewFile );
if( rFile.Len() || sSub.Len() )
- aSection.SetType( FILE_LINK_SECTION );
+ {
+ m_SectionData.SetType( FILE_LINK_SECTION );
+ }
else
- aSection.SetType( CONTENT_SECTION );
+ {
+ m_SectionData.SetType( CONTENT_SECTION );
+ }
}
void SectRepr::SetFilter( const String& rFilter )
{
String sNewFile;
- String sOldFileName( aSection.GetLinkFileName() );
+ String sOldFileName( m_SectionData.GetLinkFileName() );
String sFile( sOldFileName.GetToken( 0, sfx2::cTokenSeperator ) );
String sSub( sOldFileName.GetToken( 2, sfx2::cTokenSeperator ) );
@@ -227,16 +288,18 @@ void SectRepr::SetFilter( const String& rFilter )
else if( sSub.Len() )
(( sNewFile = sfx2::cTokenSeperator ) += sfx2::cTokenSeperator ) += sSub;
- aSection.SetLinkFileName( sNewFile );
+ m_SectionData.SetLinkFileName( sNewFile );
if( sNewFile.Len() )
- aSection.SetType( FILE_LINK_SECTION );
+ {
+ m_SectionData.SetType( FILE_LINK_SECTION );
+ }
}
void SectRepr::SetSubRegion(const String& rSubRegion)
{
String sNewFile;
- String sOldFileName( aSection.GetLinkFileName() );
+ String sOldFileName( m_SectionData.GetLinkFileName() );
String sFilter( sOldFileName.GetToken( 1, sfx2::cTokenSeperator ) );
sOldFileName = sOldFileName.GetToken( 0, sfx2::cTokenSeperator );
@@ -244,21 +307,25 @@ void SectRepr::SetSubRegion(const String& rSubRegion)
(((( sNewFile = sOldFileName ) += sfx2::cTokenSeperator ) += sFilter )
+= sfx2::cTokenSeperator ) += rSubRegion;
- aSection.SetLinkFileName( sNewFile );
+ m_SectionData.SetLinkFileName( sNewFile );
if( rSubRegion.Len() || sOldFileName.Len() )
- aSection.SetType( FILE_LINK_SECTION );
+ {
+ m_SectionData.SetType( FILE_LINK_SECTION );
+ }
else
- aSection.SetType( CONTENT_SECTION );
+ {
+ m_SectionData.SetType( CONTENT_SECTION );
+ }
}
String SectRepr::GetFile() const
{
- String sLinkFile( aSection.GetLinkFileName() );
+ String sLinkFile( m_SectionData.GetLinkFileName() );
if( sLinkFile.Len() )
{
- if( DDE_LINK_SECTION == aSection.GetType() )
+ if (DDE_LINK_SECTION == m_SectionData.GetType())
{
USHORT n = sLinkFile.SearchAndReplace( sfx2::cTokenSeperator, ' ' );
sLinkFile.SearchAndReplace( sfx2::cTokenSeperator, ' ', n );
@@ -276,7 +343,7 @@ String SectRepr::GetFile() const
String SectRepr::GetSubRegion() const
{
- String sLinkFile( aSection.GetLinkFileName() );
+ String sLinkFile( m_SectionData.GetLinkFileName() );
if( sLinkFile.Len() )
sLinkFile = sLinkFile.GetToken( 2, sfx2::cTokenSeperator );
return sLinkFile;
@@ -284,7 +351,6 @@ String SectRepr::GetSubRegion() const
-
/*----------------------------------------------------------------------------
Beschreibung: Dialog Bearbeiten Bereiche
----------------------------------------------------------------------------*/
@@ -404,7 +470,8 @@ BOOL SwEditRegionDlg::CheckPasswd(CheckBox* pBox)
while( pEntry )
{
SectReprPtr pRepr = (SectReprPtr)pEntry->GetUserData();
- if(!pRepr->GetTempPasswd().getLength() && pRepr->GetPasswd().getLength())
+ if (!pRepr->GetTempPasswd().getLength()
+ && pRepr->GetSectionData().GetPassword().getLength())
{
SwTestPasswdDlg aPasswdDlg(this);
bRet = FALSE;
@@ -413,7 +480,8 @@ BOOL SwEditRegionDlg::CheckPasswd(CheckBox* pBox)
String sNewPasswd( aPasswdDlg.GetPassword() );
UNO_NMSPC::Sequence <sal_Int8 > aNewPasswd;
SvPasswordHelper::GetHashPassword( aNewPasswd, sNewPasswd );
- if(SvPasswordHelper::CompareHashPassword(pRepr->GetPasswd(), sNewPasswd))
+ if (SvPasswordHelper::CompareHashPassword(
+ pRepr->GetSectionData().GetPassword(), sNewPasswd))
{
pRepr->SetTempPasswd(aNewPasswd);
bRet = TRUE;
@@ -460,7 +528,7 @@ void SwEditRegionDlg::RecurseList( const SwSectionFmt* pFmt, SvLBoxEntry* pEntry
SectRepr* pSectRepr = new SectRepr( n,
*(pSect=pFmt->GetSection()) );
Image aImg = BuildBitmap( pSect->IsProtect(),pSect->IsHidden(), FALSE);
- pEntry = aTree.InsertEntry( pSect->GetName(), aImg, aImg );
+ pEntry = aTree.InsertEntry(pSect->GetSectionName(), aImg, aImg);
Image aHCImg = BuildBitmap( pSect->IsProtect(),pSect->IsHidden(), TRUE);
aTree.SetExpandedEntryBmp(pEntry, aHCImg, BMP_COLOR_HIGHCONTRAST);
aTree.SetCollapsedEntryBmp(pEntry, aHCImg, BMP_COLOR_HIGHCONTRAST);
@@ -493,7 +561,8 @@ void SwEditRegionDlg::RecurseList( const SwSectionFmt* pFmt, SvLBoxEntry* pEntry
FindArrPos( pSect->GetFmt() ), *pSect );
Image aImage = BuildBitmap( pSect->IsProtect(),
pSect->IsHidden(), FALSE);
- pNEntry=aTree.InsertEntry( pSect->GetName(), aImage, aImage, pEntry);
+ pNEntry = aTree.InsertEntry(
+ pSect->GetSectionName(), aImage, aImage, pEntry);
Image aHCImg = BuildBitmap( pSect->IsProtect(),pSect->IsHidden(), TRUE);
aTree.SetExpandedEntryBmp(pEntry, aHCImg, BMP_COLOR_HIGHCONTRAST);
aTree.SetCollapsedEntryBmp(pEntry, aHCImg, BMP_COLOR_HIGHCONTRAST);
@@ -552,7 +621,7 @@ void SwEditRegionDlg::SelectSection(const String& rSectionName)
while(pEntry)
{
SectReprPtr pRepr = (SectReprPtr)pEntry->GetUserData();
- if(pRepr->GetSection().GetName() == rSectionName)
+ if (pRepr->GetSectionData().GetSectionName() == rSectionName)
break;
pEntry = aTree.Next(pEntry);
}
@@ -589,15 +658,15 @@ IMPL_LINK( SwEditRegionDlg, GetFirstEntryHdl, SvTreeListBox *, pBox )
// <--
aFileCB.EnableTriState( TRUE );
- BOOL bHiddenValid = TRUE;
- BOOL bProtectValid = TRUE;
- BOOL bConditionValid = TRUE;
+ bool bHiddenValid = true;
+ bool bProtectValid = true;
+ bool bConditionValid = true;
// --> FME 2004-06-22 #114856# edit in readonly sections
- BOOL bEditInReadonlyValid = TRUE;
- BOOL bEditInReadonly = TRUE;
+ bool bEditInReadonlyValid = true;
+ bool bEditInReadonly = true;
// <--
- BOOL bHidden = TRUE;
- BOOL bProtect = TRUE;
+ bool bHidden = true;
+ bool bProtect = true;
String sCondition;
BOOL bFirst = TRUE;
BOOL bFileValid = TRUE;
@@ -607,29 +676,32 @@ IMPL_LINK( SwEditRegionDlg, GetFirstEntryHdl, SvTreeListBox *, pBox )
while( pEntry )
{
SectRepr* pRepr=(SectRepr*) pEntry->GetUserData();
+ SwSectionData const& rData( pRepr->GetSectionData() );
if(bFirst)
{
- sCondition = pRepr->GetCondition();
- bHidden = pRepr->IsHidden();
- bProtect = pRepr->IsProtect();
+ sCondition = rData.GetCondition();
+ bHidden = rData.IsHidden();
+ bProtect = rData.IsProtectFlag();
// --> FME 2004-06-22 #114856# edit in readonly sections
- bEditInReadonly = pRepr->IsEditInReadonly();
+ bEditInReadonly = rData.IsEditInReadonlyFlag();
// <--
- bFile = pRepr->GetSectionType() != CONTENT_SECTION;
- aCurPasswd = pRepr->GetPasswd();
+ bFile = (rData.GetType() != CONTENT_SECTION);
+ aCurPasswd = rData.GetPassword();
}
else
{
- String sTemp(pRepr->GetCondition());
+ String sTemp(rData.GetCondition());
if(sCondition != sTemp)
bConditionValid = FALSE;
- bHiddenValid = bHidden == pRepr->IsHidden();
- bProtectValid = bProtect == pRepr->IsProtect();
+ bHiddenValid = (bHidden == rData.IsHidden());
+ bProtectValid = (bProtect == rData.IsProtectFlag());
// --> FME 2004-06-22 #114856# edit in readonly sections
- bEditInReadonlyValid = bEditInReadonly == pRepr->IsEditInReadonly();
+ bEditInReadonlyValid =
+ (bEditInReadonly == rData.IsEditInReadonlyFlag());
// <--
- bFileValid = (pRepr->GetSectionType() != CONTENT_SECTION) == bFile;
- bPasswdValid = aCurPasswd == pRepr->GetPasswd();
+ bFileValid = (bFile ==
+ (rData.GetType() != CONTENT_SECTION));
+ bPasswdValid = (aCurPasswd == rData.GetPassword());
}
pEntry = pBox->NextSelected(pEntry);
bFirst = FALSE;
@@ -685,13 +757,14 @@ IMPL_LINK( SwEditRegionDlg, GetFirstEntryHdl, SvTreeListBox *, pBox )
aCurName .Enable(TRUE);
aOptionsPB .Enable(TRUE);
SectRepr* pRepr=(SectRepr*) pEntry->GetUserData();
- aConditionED.SetText(pRepr->GetCondition());
+ SwSectionData const& rData( pRepr->GetSectionData() );
+ aConditionED.SetText(rData.GetCondition());
aHideCB.Enable();
- aHideCB.SetState(pRepr->IsHidden() ? STATE_CHECK : STATE_NOCHECK);
+ aHideCB.SetState((rData.IsHidden()) ? STATE_CHECK : STATE_NOCHECK);
BOOL bHide = STATE_CHECK == aHideCB.GetState();
aConditionED.Enable(bHide);
aConditionFT.Enable(bHide);
- aPasswdCB.Check(pRepr->GetPasswd().getLength() > 0);
+ aPasswdCB.Check(rData.GetPassword().getLength() > 0);
aOK.Enable();
aPasswdCB.Enable();
@@ -707,7 +780,7 @@ IMPL_LINK( SwEditRegionDlg, GetFirstEntryHdl, SvTreeListBox *, pBox )
aFileCB.Check(TRUE);
aFileNameED.SetText(aFile);
aSubRegionED.SetText(sSub);
- aDDECB.Check(pRepr->GetSectionType() == DDE_LINK_SECTION );
+ aDDECB.Check(rData.GetType() == DDE_LINK_SECTION);
}
else
{
@@ -718,11 +791,13 @@ IMPL_LINK( SwEditRegionDlg, GetFirstEntryHdl, SvTreeListBox *, pBox )
}
UseFileHdl(&aFileCB);
DDEHdl( &aDDECB );
- aProtectCB.SetState(pRepr->IsProtect() ? STATE_CHECK : STATE_NOCHECK);
+ aProtectCB.SetState((rData.IsProtectFlag())
+ ? STATE_CHECK : STATE_NOCHECK);
aProtectCB.Enable();
// --> FME 2004-06-22 #114856# edit in readonly sections
- aEditInReadonlyCB.SetState( pRepr->IsEditInReadonly() ? STATE_CHECK : STATE_NOCHECK);
+ aEditInReadonlyCB.SetState((rData.IsEditInReadonlyFlag())
+ ? STATE_CHECK : STATE_NOCHECK);
aEditInReadonlyCB.Enable();
// <--
@@ -794,8 +869,10 @@ IMPL_LINK( SwEditRegionDlg, OkHdl, CheckBox *, EMPTYARG )
{
SectReprPtr pRepr = (SectReprPtr) pEntry->GetUserData();
SwSectionFmt* pFmt = aOrigArray[ pRepr->GetArrPos() ];
- if( !pRepr->GetSection().IsProtectFlag())
- pRepr->GetSection().SetPasswd(UNO_NMSPC::Sequence <sal_Int8 >());
+ if (!pRepr->GetSectionData().IsProtectFlag())
+ {
+ pRepr->GetSectionData().SetPassword(uno::Sequence<sal_Int8 >());
+ }
USHORT nNewPos = rDocFmts.GetPos( pFmt );
if( USHRT_MAX != nNewPos )
{
@@ -821,7 +898,7 @@ IMPL_LINK( SwEditRegionDlg, OkHdl, CheckBox *, EMPTYARG )
if( pFmt->GetLRSpace() != pRepr->GetLRSpace())
pSet->Put( pRepr->GetLRSpace());
- rSh.ChgSection( nNewPos, pRepr->GetSection(),
+ rSh.UpdateSection( nNewPos, pRepr->GetSectionData(),
pSet->Count() ? pSet : 0 );
delete pSet;
}
@@ -863,7 +940,7 @@ IMPL_LINK( SwEditRegionDlg, ChangeProtectHdl, TriStateBox *, pBox )
while( pEntry )
{
SectReprPtr pRepr = (SectReprPtr) pEntry->GetUserData();
- pRepr->SetProtect(bCheck);
+ pRepr->GetSectionData().SetProtectFlag(bCheck);
Image aImage = BuildBitmap( bCheck,
STATE_CHECK == aHideCB.GetState(), FALSE);
aTree.SetExpandedEntryBmp(pEntry, aImage, BMP_COLOR_NORMAL);
@@ -891,7 +968,7 @@ IMPL_LINK( SwEditRegionDlg, ChangeHideHdl, TriStateBox *, pBox )
while( pEntry )
{
SectReprPtr pRepr = (SectReprPtr) pEntry->GetUserData();
- pRepr->SetHidden(STATE_CHECK == pBox->GetState());
+ pRepr->GetSectionData().SetHidden(STATE_CHECK == pBox->GetState());
Image aImage = BuildBitmap(STATE_CHECK == aProtectCB.GetState(),
STATE_CHECK == pBox->GetState(), FALSE);
aTree.SetExpandedEntryBmp(pEntry, aImage, BMP_COLOR_NORMAL);
@@ -924,7 +1001,8 @@ IMPL_LINK( SwEditRegionDlg, ChangeEditInReadonlyHdl, TriStateBox *, pBox )
while( pEntry )
{
SectReprPtr pRepr = (SectReprPtr) pEntry->GetUserData();
- pRepr->SetEditInReadonly(STATE_CHECK == pBox->GetState());
+ pRepr->GetSectionData().SetEditInReadonlyFlag(
+ STATE_CHECK == pBox->GetState());
pEntry = aTree.NextSelected(pEntry);
}
@@ -1028,7 +1106,7 @@ IMPL_LINK( SwEditRegionDlg, UseFileHdl, CheckBox *, pBox )
{
pSectRepr->SetFile(aEmptyStr);
pSectRepr->SetSubRegion(aEmptyStr);
- pSectRepr->SetFilePasswd(aEmptyStr);
+ pSectRepr->GetSectionData().SetLinkFilePassword(aEmptyStr);
}
pEntry = aTree.NextSelected(pEntry);
@@ -1221,8 +1299,8 @@ IMPL_LINK( SwEditRegionDlg, FileNameHdl, Edit *, pEdit )
nPos = sLink.SearchAndReplace( ' ', sfx2::cTokenSeperator );
sLink.SearchAndReplace( ' ', sfx2::cTokenSeperator, nPos );
- pSectRepr->GetSection().SetLinkFileName( sLink );
- pSectRepr->GetSection().SetType( DDE_LINK_SECTION );
+ pSectRepr->GetSectionData().SetLinkFileName( sLink );
+ pSectRepr->GetSectionData().SetType( DDE_LINK_SECTION );
}
else
{
@@ -1237,7 +1315,7 @@ IMPL_LINK( SwEditRegionDlg, FileNameHdl, Edit *, pEdit )
aAbs, sTmp, URIHelper::GetMaybeFileHdl() );
}
pSectRepr->SetFile( sTmp );
- pSectRepr->SetFilePasswd( aEmptyStr );
+ pSectRepr->GetSectionData().SetLinkFilePassword( aEmptyStr );
}
}
else
@@ -1259,6 +1337,7 @@ IMPL_LINK( SwEditRegionDlg, DDEHdl, CheckBox*, pBox )
{
BOOL bFile = aFileCB.IsChecked();
SectReprPtr pSectRepr = (SectRepr*)pEntry->GetUserData();
+ SwSectionData & rData( pSectRepr->GetSectionData() );
BOOL bDDE = pBox->IsChecked();
if(bDDE)
{
@@ -1267,13 +1346,13 @@ IMPL_LINK( SwEditRegionDlg, DDEHdl, CheckBox*, pBox )
aDDECommandFT.Show();
aSubRegionFT.Hide();
aSubRegionED.Hide();
- if(FILE_LINK_SECTION == pSectRepr->GetSectionType() )
+ if (FILE_LINK_SECTION == rData.GetType())
{
pSectRepr->SetFile(aEmptyStr);
aFileNameED.SetText(aEmptyStr);
- pSectRepr->SetFilePasswd( aEmptyStr );
+ rData.SetLinkFilePassword( aEmptyStr );
}
- pSectRepr->SetSectionType( DDE_LINK_SECTION );
+ rData.SetType(DDE_LINK_SECTION);
}
else
{
@@ -1285,11 +1364,11 @@ IMPL_LINK( SwEditRegionDlg, DDEHdl, CheckBox*, pBox )
aSubRegionED.Enable(bFile);
aSubRegionFT.Enable(bFile);
aSubRegionED.Enable(bFile);
- if(DDE_LINK_SECTION == pSectRepr->GetSectionType() )
+ if (DDE_LINK_SECTION == rData.GetType())
{
- pSectRepr->SetSectionType( FILE_LINK_SECTION );
+ rData.SetType(FILE_LINK_SECTION);
pSectRepr->SetFile(aEmptyStr);
- pSectRepr->SetFilePasswd( aEmptyStr );
+ rData.SetLinkFilePassword( aEmptyStr );
aFileNameED.SetText(aEmptyStr);
}
}
@@ -1343,10 +1422,12 @@ IMPL_LINK( SwEditRegionDlg, ChangePasswdHdl, Button *, pBox )
break;
}
}
- pRepr->GetSection().SetPasswd(pRepr->GetTempPasswd());
+ pRepr->GetSectionData().SetPassword(pRepr->GetTempPasswd());
}
else
- pRepr->GetSection().SetPasswd(UNO_NMSPC::Sequence <sal_Int8 >());
+ {
+ pRepr->GetSectionData().SetPassword(uno::Sequence<sal_Int8 >());
+ }
pEntry = aTree.NextSelected(pEntry);
}
return 0;
@@ -1368,7 +1449,7 @@ IMPL_LINK( SwEditRegionDlg, NameEditHdl, Edit *, EMPTYARG )
String aName = aCurName.GetText();
aTree.SetEntryText(pEntry,aName);
SectReprPtr pRepr = (SectReprPtr) pEntry->GetUserData();
- pRepr->GetSection().SetName(aName);
+ pRepr->GetSectionData().SetSectionName(aName);
aOK.Enable(aName.Len() != 0);
}
@@ -1389,7 +1470,7 @@ IMPL_LINK( SwEditRegionDlg, ConditionEditHdl, Edit *, pEdit )
while( pEntry )
{
SectReprPtr pRepr = (SectReprPtr)pEntry->GetUserData();
- pRepr->SetCondition (pEdit->GetText());
+ pRepr->GetSectionData().SetCondition(pEdit->GetText());
pEntry = aTree.NextSelected(pEntry);
}
return 0;
@@ -1420,7 +1501,7 @@ IMPL_LINK( SwEditRegionDlg, DlgClosedHdl, sfx2::FileDialogHelper *, _pFileDlg )
SectReprPtr pSectRepr = (SectRepr*)pEntry->GetUserData();
pSectRepr->SetFile( sFileName );
pSectRepr->SetFilter( sFilterName );
- pSectRepr->SetFilePasswd( sPassword );
+ pSectRepr->GetSectionData().SetLinkFilePassword(sPassword);
aFileNameED.SetText( pSectRepr->GetFile() );
}
@@ -1495,8 +1576,8 @@ static void lcl_ReadSections( SfxMedium& rMedium, ComboBox& rBox )
SwInsertSectionTabDialog::SwInsertSectionTabDialog(
Window* pParent, const SfxItemSet& rSet, SwWrtShell& rSh) :
SfxTabDialog( pParent, SW_RES(DLG_INSERT_SECTION), &rSet ),
- rWrtSh(rSh),
- pToInsertSection(0)
+ rWrtSh(rSh)
+ , m_pSectionData(0)
{
String sInsert(SW_RES(ST_INSERT));
GetOKButton().SetText(sInsert);
@@ -1527,7 +1608,6 @@ SwInsertSectionTabDialog::SwInsertSectionTabDialog(
* --------------------------------------------------*/
SwInsertSectionTabDialog::~SwInsertSectionTabDialog()
{
- delete pToInsertSection;
}
/* -----------------21.05.99 10:23-------------------
*
@@ -1556,10 +1636,9 @@ void SwInsertSectionTabDialog::PageCreated( USHORT nId, SfxTabPage &rPage )
*
* --------------------------------------------------*/
-void SwInsertSectionTabDialog::SetSection(const SwSection& rSect)
+void SwInsertSectionTabDialog::SetSectionData(SwSectionData const& rSect)
{
- pToInsertSection = new SwSection(CONTENT_SECTION, aEmptyStr);
- *pToInsertSection = rSect;
+ m_pSectionData.reset( new SwSectionData(rSect) );
}
/* -----------------21.05.99 13:10-------------------
*
@@ -1567,9 +1646,10 @@ void SwInsertSectionTabDialog::SetSection(const SwSection& rSect)
short SwInsertSectionTabDialog::Ok()
{
short nRet = SfxTabDialog::Ok();
- DBG_ASSERT(pToInsertSection, "keiner Section?");
+ DBG_ASSERT(m_pSectionData.get(),
+ "SwInsertSectionTabDialog: no SectionData?");
const SfxItemSet* pOutputItemSet = GetOutputItemSet();
- rWrtSh.InsertSection(*pToInsertSection, pOutputItemSet);
+ rWrtSh.InsertSection(*m_pSectionData, pOutputItemSet);
SfxViewFrame* pViewFrm = rWrtSh.GetView().GetViewFrame();
uno::Reference< frame::XDispatchRecorder > xRecorder =
pViewFrm->GetBindings().GetRecorder();
@@ -1582,15 +1662,20 @@ short SwInsertSectionTabDialog::Ok()
aRequest.AppendItem(SfxUInt16Item(SID_ATTR_COLUMNS,
((const SwFmtCol*)pCol)->GetColumns().Count()));
}
- aRequest.AppendItem(SfxStringItem( FN_PARAM_REGION_NAME, pToInsertSection->GetName()));
- aRequest.AppendItem(SfxStringItem( FN_PARAM_REGION_CONDITION, pToInsertSection->GetCondition()));
- aRequest.AppendItem(SfxBoolItem( FN_PARAM_REGION_HIDDEN, pToInsertSection->IsHidden()));
- aRequest.AppendItem(SfxBoolItem(FN_PARAM_REGION_PROTECT, pToInsertSection->IsProtect()));
+ aRequest.AppendItem(SfxStringItem( FN_PARAM_REGION_NAME,
+ m_pSectionData->GetSectionName()));
+ aRequest.AppendItem(SfxStringItem( FN_PARAM_REGION_CONDITION,
+ m_pSectionData->GetCondition()));
+ aRequest.AppendItem(SfxBoolItem( FN_PARAM_REGION_HIDDEN,
+ m_pSectionData->IsHidden()));
+ aRequest.AppendItem(SfxBoolItem( FN_PARAM_REGION_PROTECT,
+ m_pSectionData->IsProtectFlag()));
// --> FME 2004-06-22 #114856# edit in readonly sections
- aRequest.AppendItem(SfxBoolItem(FN_PARAM_REGION_EDIT_IN_READONLY, pToInsertSection->IsEditInReadonly()));
+ aRequest.AppendItem(SfxBoolItem( FN_PARAM_REGION_EDIT_IN_READONLY,
+ m_pSectionData->IsEditInReadonlyFlag()));
// <--
- String sLinkFileName( pToInsertSection->GetLinkFileName() );
+ String sLinkFileName( m_pSectionData->GetLinkFileName() );
aRequest.AppendItem(SfxStringItem( FN_PARAM_1, sLinkFileName.GetToken( 0, sfx2::cTokenSeperator )));
aRequest.AppendItem(SfxStringItem( FN_PARAM_2, sLinkFileName.GetToken( 1, sfx2::cTokenSeperator )));
aRequest.AppendItem(SfxStringItem( FN_PARAM_3, sLinkFileName.GetToken( 2, sfx2::cTokenSeperator )));
@@ -1675,13 +1760,16 @@ void SwInsertSectionTabPage::SetWrtShell(SwWrtShell& rSh)
lcl_FillSubRegionList( *m_pWrtSh, aSubRegionED, &aCurName );
- SwSection* pSect = ((SwInsertSectionTabDialog*)GetTabDialog())->GetSection();
- if( pSect ) // etwas vorgegeben ?
+ SwSectionData *const pSectionData =
+ static_cast<SwInsertSectionTabDialog*>(GetTabDialog())
+ ->GetSectionData();
+ if (pSectionData) // something set?
{
- aCurName.SetText( rSh.GetUniqueSectionName( &pSect->GetName() ));
- aProtectCB.Check( 0 != pSect->IsProtect() );
- m_sFileName = pSect->GetLinkFileName();
- m_sFilePasswd = pSect->GetLinkFilePassWd();
+ aCurName.SetText(
+ rSh.GetUniqueSectionName(& pSectionData->GetSectionName()));
+ aProtectCB.Check( 0 != pSectionData->IsProtectFlag() );
+ m_sFileName = pSectionData->GetLinkFileName();
+ m_sFilePasswd = pSectionData->GetLinkFilePassword();
aFileCB.Check( 0 != m_sFileName.Len() );
aFileNameED.SetText( m_sFileName );
UseFileHdl( &aFileCB );
@@ -1696,16 +1784,18 @@ void SwInsertSectionTabPage::SetWrtShell(SwWrtShell& rSh)
* --------------------------------------------------*/
BOOL SwInsertSectionTabPage::FillItemSet( SfxItemSet& )
{
- SwSection aSection(CONTENT_SECTION, aCurName.GetText());
+ SwSectionData aSection(CONTENT_SECTION, aCurName.GetText());
aSection.SetCondition(aConditionED.GetText());
BOOL bProtected = aProtectCB.IsChecked();
- aSection.SetProtect(bProtected);
+ aSection.SetProtectFlag(bProtected);
aSection.SetHidden(aHideCB.IsChecked());
// --> FME 2004-06-22 #114856# edit in readonly sections
- aSection.SetEditInReadonly(aEditInReadonlyCB.IsChecked());
+ aSection.SetEditInReadonlyFlag(aEditInReadonlyCB.IsChecked());
// <--
if(bProtected)
- aSection.SetPasswd(m_aNewPasswd);
+ {
+ aSection.SetPassword(m_aNewPasswd);
+ }
String sFileName = aFileNameED.GetText();
String sSubRegion = aSubRegionED.GetText();
BOOL bDDe = aDDECB.IsChecked();
@@ -1733,7 +1823,7 @@ BOOL SwInsertSectionTabPage::FillItemSet( SfxItemSet& )
aAbs = pMedium->GetURLObject();
aLinkFile = URIHelper::SmartRel2Abs(
aAbs, sFileName, URIHelper::GetMaybeFileHdl() );
- aSection.SetLinkFilePassWd( m_sFilePasswd );
+ aSection.SetLinkFilePassword( m_sFilePasswd );
}
aLinkFile += sfx2::cTokenSeperator;
@@ -1750,7 +1840,7 @@ BOOL SwInsertSectionTabPage::FillItemSet( SfxItemSet& )
FILE_LINK_SECTION);
}
}
- ((SwInsertSectionTabDialog*)GetTabDialog())->SetSection(aSection);
+ ((SwInsertSectionTabDialog*)GetTabDialog())->SetSectionData(aSection);
return TRUE;
}
/* -----------------21.05.99 10:32-------------------
diff --git a/sw/source/ui/dochdl/dochdl.src b/sw/source/ui/dochdl/dochdl.src
index 8ecccb5395cb..f92ea43681d8 100644
--- a/sw/source/ui/dochdl/dochdl.src
+++ b/sw/source/ui/dochdl/dochdl.src
@@ -73,13 +73,4 @@ String STR_DDEFORMAT
{
Text [ en-US ] = "DDE link" ;
};
-Bitmap BMP_SW_TEAM_MUGSHOT
-{
- File ="writerteam.bmp";
-};
-
-String STR_SW_TEAM_NAMES
-{
- Text = "Back row: Aidan Butler, Hans-Peter Burow, Caolan McNamara, Michael Brauer, Martin Maher, Gunnar Timm\nFront row: Thomas Lange, Oliver-Rainer Duesterhoeft, Henning Brinkmann, Andreas Martens, Oliver Specht, Frank Meies, Daniel Vogelheim";
-};
diff --git a/sw/source/ui/dochdl/gloshdl.cxx b/sw/source/ui/dochdl/gloshdl.cxx
index 5cb1df8a9ebb..cc789d6e4498 100644
--- a/sw/source/ui/dochdl/gloshdl.cxx
+++ b/sw/source/ui/dochdl/gloshdl.cxx
@@ -607,48 +607,9 @@ BOOL SwGlossaryHdl::Expand( const String& rShortName,
aShortName.Erase(nMaxLen);
aShortName.AppendAscii(" ...");
}
- if ( aShortName.EqualsAscii ( "StarWriterTeam", 0, 14 ) )
- {
- String sGraphicName ( RTL_CONSTASCII_USTRINGPARAM ( "StarWriter team photo" ) );
- String sTeamCredits ( RTL_CONSTASCII_USTRINGPARAM ( "StarWriter team credits" ) );
- pWrtShell->StartUndo ( UNDO_INSGLOSSARY );
- pWrtShell->StartAllAction();
- if(pWrtShell->HasSelection())
- pWrtShell->DelLeft();
- Bitmap aBitmap ( SW_RES ( BMP_SW_TEAM_MUGSHOT ) );
- pWrtShell->Insert ( aEmptyStr, aEmptyStr, aBitmap);
- pWrtShell->SetFlyName ( sGraphicName );
- SwTxtFmtColl* pColl = pWrtShell->GetTxtCollFromPool ( RES_POOLCOLL_LABEL_ABB );
- const IDocumentFieldsAccess* pIDFA = pWrtShell->getIDocumentFieldsAccess();
- SwFieldType* pType = pIDFA->GetFldType( RES_SETEXPFLD, pColl->GetName(), false );
- sal_uInt16 nId = pIDFA->GetFldTypes()->GetPos( pType );
- pWrtShell->InsertLabel( LTYPE_OBJECT, aEmptyStr, aEmptyStr, aEmptyStr, FALSE, nId, aEmptyStr );
- pWrtShell->SwFEShell::SetFlyName( sTeamCredits );
- pWrtShell->SwFEShell::SelectObj ( Point ( ULONG_MAX, ULONG_MAX ) );
- pWrtShell->EnterStdMode();
- pWrtShell->EndPara ( TRUE );
- String aTmp ( SW_RES ( STR_SW_TEAM_NAMES ) );
- pWrtShell->Insert ( aTmp );
- SvxAdjustItem aAdjustItem( SVX_ADJUST_CENTER, RES_PARATR_ADJUST );
- pWrtShell->SetAttr( aAdjustItem );
- pWrtShell->SttPara ();
- pWrtShell->SplitNode();
- pWrtShell->Left(CRSR_SKIP_CHARS, FALSE, 1, FALSE );
- SvxWeightItem aWeightItem ( WEIGHT_BOLD, RES_CHRATR_WEIGHT );
- pWrtShell->Insert ( String ( RTL_CONSTASCII_USTRINGPARAM ( "The StarWriter team!" ) ) );
- pWrtShell->SttPara ( TRUE );
- pWrtShell->SetAttr( aWeightItem);
- pWrtShell->GotoFly ( sTeamCredits);
- pWrtShell->EndAllAction();
- pWrtShell->EndUndo( UNDO_INSGLOSSARY );
- }
- else
- {
- String aTmp( SW_RES(STR_NOGLOS));
- aTmp.SearchAndReplaceAscii("%1", aShortName);
- InfoBox( pWrtShell->GetView().GetWindow(), aTmp ).Execute();
-
- }
+ String aTmp( SW_RES(STR_NOGLOS));
+ aTmp.SearchAndReplaceAscii("%1", aShortName);
+ InfoBox( pWrtShell->GetView().GetWindow(), aTmp ).Execute();
}
return FALSE;
diff --git a/sw/source/ui/dochdl/swdtflvr.cxx b/sw/source/ui/dochdl/swdtflvr.cxx
index 7778b3848f45..8220c7ee2c8d 100644
--- a/sw/source/ui/dochdl/swdtflvr.cxx
+++ b/sw/source/ui/dochdl/swdtflvr.cxx
@@ -300,9 +300,7 @@ SwTransferable::~SwTransferable()
SwModule* pMod = SW_MOD();
if(pMod)
{
- if ( pMod->pClipboard == this )
- pMod->pClipboard = 0;
- else if ( pMod->pDragDrop == this )
+ if ( pMod->pDragDrop == this )
pMod->pDragDrop = 0;
else if ( pMod->pXSelection == this )
pMod->pXSelection = 0;
@@ -322,12 +320,23 @@ SwTransferable::~SwTransferable()
// -----------------------------------------------------------------------
+static SwDoc * lcl_GetDoc(SwDocFac & rDocFac)
+{
+ SwDoc *const pDoc = rDocFac.GetDoc();
+ ASSERT( pDoc, "Document not found" );
+ if (pDoc)
+ {
+ pDoc->SetClipBoard( true );
+ }
+ return pDoc;
+}
+
+// -----------------------------------------------------------------------
+
void SwTransferable::ObjectReleased()
{
SwModule *pMod = SW_MOD();
- if( this == pMod->pClipboard )
- pMod->pClipboard = 0;
- else if( this == pMod->pDragDrop )
+ if( this == pMod->pDragDrop )
pMod->pDragDrop = 0;
else if( this == pMod->pXSelection )
pMod->pXSelection = 0;
@@ -443,7 +452,7 @@ sal_Bool SwTransferable::GetData( const DATA_FLAVOR& rFlavor )
}
pClpDocFac = new SwDocFac;
- SwDoc* pTmpDoc = pClpDocFac->GetDoc();
+ SwDoc *const pTmpDoc = lcl_GetDoc(*pClpDocFac);
pTmpDoc->SetRefForDocShell( boost::addressof(aDocShellRef) );
pTmpDoc->LockExpFlds(); // nie die Felder updaten - Text so belassen
@@ -530,8 +539,7 @@ sal_Bool SwTransferable::GetData( const DATA_FLAVOR& rFlavor )
case SOT_FORMATSTR_ID_DRAWING:
{
- SwDoc *pDoc = pClpDocFac->GetDoc();
- ASSERT( pDoc, "Document not found" );
+ SwDoc *const pDoc = lcl_GetDoc(*pClpDocFac);
bOK = SetObject( pDoc->GetDrawModel(),
SWTRANSFER_OBJECTTYPE_DRAWMODEL, rFlavor );
}
@@ -539,21 +547,22 @@ sal_Bool SwTransferable::GetData( const DATA_FLAVOR& rFlavor )
case SOT_FORMAT_STRING:
{
- SwDoc* pDoc = pClpDocFac->GetDoc();
- ASSERT( pDoc, "Document not found" );
- pDoc->SetClipBoard( true );
- bOK = SetObject( pDoc,
- SWTRANSFER_OBJECTTYPE_STRING, rFlavor );
+ SwDoc *const pDoc = lcl_GetDoc(*pClpDocFac);
+ bOK = SetObject( pDoc, SWTRANSFER_OBJECTTYPE_STRING, rFlavor );
}
break;
case SOT_FORMAT_RTF:
- bOK = SetObject( pClpDocFac->GetDoc(),
- SWTRANSFER_OBJECTTYPE_RTF, rFlavor );
+ {
+ SwDoc *const pDoc = lcl_GetDoc(*pClpDocFac);
+ bOK = SetObject( pDoc, SWTRANSFER_OBJECTTYPE_RTF, rFlavor );
+ }
break;
case SOT_FORMATSTR_ID_HTML:
- bOK = SetObject( pClpDocFac->GetDoc(),
- SWTRANSFER_OBJECTTYPE_HTML, rFlavor );
+ {
+ SwDoc *const pDoc = lcl_GetDoc(*pClpDocFac);
+ bOK = SetObject( pDoc, SWTRANSFER_OBJECTTYPE_HTML, rFlavor );
+ }
break;
case SOT_FORMATSTR_ID_SVXB:
@@ -597,7 +606,7 @@ sal_Bool SwTransferable::GetData( const DATA_FLAVOR& rFlavor )
// default:
if( !aDocShellRef.Is() )
{
- SwDoc *pDoc = pClpDocFac->GetDoc();
+ SwDoc *const pDoc = lcl_GetDoc(*pClpDocFac);
SwDocShell* pNewDocSh = new SwDocShell( pDoc,
SFX_CREATE_MODE_EMBEDDED );
aDocShellRef = pNewDocSh;
@@ -805,7 +814,8 @@ int SwTransferable::PrepareForCopy( BOOL bIsCut )
pOrigGrf = pClpBitmap;
pClpDocFac = new SwDocFac;
- pWrtShell->Copy( pClpDocFac->GetDoc() );
+ SwDoc *const pDoc = lcl_GetDoc(*pClpDocFac);
+ pWrtShell->Copy( pDoc );
if (pOrigGrf && !pOrigGrf->GetBitmap().IsEmpty())
AddFormat( SOT_FORMATSTR_ID_SVXB );
@@ -827,7 +837,7 @@ int SwTransferable::PrepareForCopy( BOOL bIsCut )
else if ( nSelection == nsSelectionType::SEL_OLE )
{
pClpDocFac = new SwDocFac;
- SwDoc *pDoc = pClpDocFac->GetDoc();
+ SwDoc *const pDoc = lcl_GetDoc(*pClpDocFac);
aDocShellRef = new SwDocShell( pDoc, SFX_CREATE_MODE_EMBEDDED);
aDocShellRef->DoInitNew( NULL );
pWrtShell->Copy( pDoc );
@@ -857,8 +867,7 @@ int SwTransferable::PrepareForCopy( BOOL bIsCut )
if( pWrtShell->IsAddMode() && pWrtShell->SwCrsrShell::HasSelection() )
pWrtShell->CreateCrsr();
- SwDoc* pTmpDoc = pClpDocFac->GetDoc();
- pTmpDoc->SetClipBoard( true );
+ SwDoc *const pTmpDoc = lcl_GetDoc(*pClpDocFac);
pTmpDoc->SetRefForDocShell( boost::addressof(aDocShellRef) );
pTmpDoc->LockExpFlds(); // nie die Felder updaten - Text so belassen
@@ -1000,7 +1009,6 @@ int SwTransferable::Copy( BOOL bIsCut )
int nRet = PrepareForCopy( bIsCut );
if ( nRet )
{
- SW_MOD()->pClipboard = this;
CopyToClipboard( &pWrtShell->GetView().GetEditWin() );
}
return nRet;
@@ -1017,11 +1025,11 @@ int SwTransferable::CalculateAndCopy()
String aStr( pWrtShell->Calculate() );
pClpDocFac = new SwDocFac;
- pWrtShell->Copy( pClpDocFac->GetDoc(), &aStr);
+ SwDoc *const pDoc = lcl_GetDoc(*pClpDocFac);
+ pWrtShell->Copy(pDoc, & aStr);
eBufferType = TRNSFR_DOCUMENT;
AddFormat( FORMAT_STRING );
- SW_MOD()->pClipboard = this;
CopyToClipboard( &pWrtShell->GetView().GetEditWin() );
return 1;
@@ -1037,7 +1045,7 @@ int SwTransferable::CopyGlossary( SwTextBlocks& rGlossary,
SwWait aWait( *pWrtShell->GetView().GetDocShell(), TRUE );
pClpDocFac = new SwDocFac;
- SwDoc* pCDoc = pClpDocFac->GetDoc();
+ SwDoc *const pCDoc = lcl_GetDoc(*pClpDocFac);
SwNodes& rNds = pCDoc->GetNodes();
SwNodeIndex aNodeIdx( *rNds.GetEndOfContent().StartOfSectionNode() );
@@ -1072,7 +1080,6 @@ int SwTransferable::CopyGlossary( SwTextBlocks& rGlossary,
PrepareOLE( aObjDesc );
AddFormat( SOT_FORMATSTR_ID_OBJECTDESCRIPTOR );
- SW_MOD()->pClipboard = this;
CopyToClipboard( &pWrtShell->GetView().GetEditWin() );
return 1;
@@ -1090,20 +1097,14 @@ BOOL SwTransferable::IsPaste( const SwWrtShell& rSh,
// Check the common case first: We can always paste our own data!
// #106503#: If _only_ the internal format can be pasted, this check will
// yield 'true', while the one below would give a (wrong) result 'false'.
- bool bIsPaste = ( SW_MOD()->pClipboard != NULL );
+
+ bool bIsPaste = ( GetSwTransferable( rData ) != NULL );
// if it's not our own data, we need to have a closer look:
if( ! bIsPaste )
{
// determine the proper paste action, and return true if we find one
uno::Reference<XTransferable> xTransferable( rData.GetXTransferable() );
- uno::Reference<XUnoTunnel> xTunnel( xTransferable, UNO_QUERY );
- if ( xTunnel.is() )
- {
- sal_Int64 nHandle = xTunnel->getSomething( getUnoTunnelId() );
- if ( nHandle )
- return TRUE;
- }
USHORT nDestination = SwTransferable::GetSotDestination( rSh );
USHORT nSourceOptions =
@@ -1139,36 +1140,27 @@ int SwTransferable::Paste( SwWrtShell& rSh, TransferableDataHelper& rData )
nDestination = SwTransferable::GetSotDestination( rSh );
ULONG nFormat = 0;
- if( SW_MOD()->pClipboard )
+ if( GetSwTransferable( rData ) )
+ {
nAction = EXCHG_OUT_ACTION_INSERT_PRIVATE;
+ }
else
{
- uno::Reference<XUnoTunnel> xTunnel( rData.GetTransferable(), UNO_QUERY );
- if ( xTunnel.is() )
- {
- sal_Int64 nHandle = xTunnel->getSomething( getUnoTunnelId() );
- if ( nHandle )
- nAction = EXCHG_OUT_ACTION_INSERT_PRIVATE;
- }
-
- if ( !nAction )
- {
- USHORT nSourceOptions =
- (( EXCHG_DEST_DOC_TEXTFRAME == nDestination ||
- EXCHG_DEST_SWDOC_FREE_AREA == nDestination ||
- EXCHG_DEST_DOC_TEXTFRAME_WEB == nDestination ||
- EXCHG_DEST_SWDOC_FREE_AREA_WEB == nDestination )
- ? EXCHG_IN_ACTION_COPY
- : EXCHG_IN_ACTION_MOVE);
- uno::Reference<XTransferable> xTransferable( rData.GetXTransferable() );
- nAction = SotExchange::GetExchangeAction(
- rData.GetDataFlavorExVector(),
- nDestination,
- nSourceOptions, /* ?? */
- EXCHG_IN_ACTION_DEFAULT, /* ?? */
- nFormat, nEventAction, 0,
- lcl_getTransferPointer ( xTransferable ) );
- }
+ USHORT nSourceOptions =
+ (( EXCHG_DEST_DOC_TEXTFRAME == nDestination ||
+ EXCHG_DEST_SWDOC_FREE_AREA == nDestination ||
+ EXCHG_DEST_DOC_TEXTFRAME_WEB == nDestination ||
+ EXCHG_DEST_SWDOC_FREE_AREA_WEB == nDestination )
+ ? EXCHG_IN_ACTION_COPY
+ : EXCHG_IN_ACTION_MOVE);
+ uno::Reference<XTransferable> xTransferable( rData.GetXTransferable() );
+ nAction = SotExchange::GetExchangeAction(
+ rData.GetDataFlavorExVector(),
+ nDestination,
+ nSourceOptions, /* ?? */
+ EXCHG_IN_ACTION_DEFAULT, /* ?? */
+ nFormat, nEventAction, 0,
+ lcl_getTransferPointer ( xTransferable ) );
}
// special case for tables from draw application
@@ -1231,7 +1223,7 @@ int SwTransferable::PasteData( TransferableDataHelper& rData,
}
}
}
- else if( ( !pMod->pClipboard || bIsPasteFmt ) &&
+ else if( ( !GetSwTransferable( rData ) || bIsPasteFmt ) &&
!rSh.IsTableMode() && rSh.HasSelection() )
{
// dann die Selektionen loeschen
@@ -1259,14 +1251,14 @@ int SwTransferable::PasteData( TransferableDataHelper& rData,
// <--
}
- SwTransferable *pTrans=0, *pTunneledTrans=0;
- uno::Reference<XUnoTunnel> xTunnel( rData.GetTransferable(), UNO_QUERY );
- if ( xTunnel.is() )
- {
- sal_Int64 nHandle = xTunnel->getSomething( getUnoTunnelId() );
- if ( nHandle )
- pTunneledTrans = (SwTransferable*) (sal_IntPtr) nHandle;
- }
+ SwTransferable *pTrans=0, *pTunneledTrans=GetSwTransferable( rData );
+// uno::Reference<XUnoTunnel> xTunnel( rData.GetTransferable(), UNO_QUERY );
+// if ( xTunnel.is() )
+// {
+// sal_Int64 nHandle = xTunnel->getSomething( getUnoTunnelId() );
+// if ( nHandle )
+// pTunneledTrans = (SwTransferable*) (sal_IntPtr) nHandle;
+// }
if( pPt && ( bPasteSelection ? 0 != ( pTrans = pMod->pXSelection )
: 0 != ( pTrans = pMod->pDragDrop) ))
@@ -1275,7 +1267,7 @@ int SwTransferable::PasteData( TransferableDataHelper& rData,
nRet = pTrans->PrivateDrop( rSh, *pPt, DND_ACTION_MOVE == nDropAction,
bPasteSelection );
}
- else if( !pPt && ( pTunneledTrans || 0 != ( pTunneledTrans = pMod->pClipboard ) ) &&
+ else if( !pPt && pTunneledTrans &&
EXCHG_OUT_ACTION_INSERT_PRIVATE == nAction )
{
// then internal paste
@@ -2211,9 +2203,9 @@ int SwTransferable::_PasteDDE( TransferableDataHelper& rData,
if( rWrtShell.HasSelection() )
rWrtShell.DelRight();
- SwSection aSect( DDE_LINK_SECTION, aName );
+ SwSectionData aSect( DDE_LINK_SECTION, aName );
aSect.SetLinkFileName( aCmd );
- aSect.SetProtect();
+ aSect.SetProtectFlag(true);
rWrtShell.InsertSection( aSect );
pDDETyp = 0; // FeldTypen wieder entfernen
@@ -2554,10 +2546,11 @@ int SwTransferable::_PasteFileName( TransferableDataHelper& rData,
)
{
// und dann per PostUser Event den Bereich-Einfuegen-Dialog hochreissen
- SwSection* pSect = new SwSection( FILE_LINK_SECTION,
+ SwSectionData * pSect = new SwSectionData(
+ FILE_LINK_SECTION,
rSh.GetDoc()->GetUniqueSectionName() );
pSect->SetLinkFileName( sFileURL );
- pSect->SetProtect( TRUE );
+ pSect->SetProtectFlag( true );
Application::PostUserEvent( STATIC_LINK( &rSh, SwWrtShell,
InsertRegionDialog ), pSect );
@@ -2801,7 +2794,7 @@ int SwTransferable::PasteFormat( SwWrtShell& rSh,
int nRet = 0;
ULONG nPrivateFmt = FORMAT_PRIVATE;
- SwTransferable *pClipboard = SW_MOD()->pClipboard;
+ SwTransferable *pClipboard = GetSwTransferable( rData );
if( pClipboard &&
((TRNSFR_DOCUMENT|TRNSFR_GRAPHIC|TRNSFR_OLE) & pClipboard->eBufferType ))
nPrivateFmt = SOT_FORMATSTR_ID_EMBED_SOURCE;
@@ -2897,7 +2890,7 @@ int SwTransferable::PasteSpecial( SwWrtShell& rSh, TransferableDataHelper& rData
USHORT nDest = SwTransferable::GetSotDestination( rSh );
- SwTransferable *pClipboard = SW_MOD()->pClipboard;
+ SwTransferable *pClipboard = GetSwTransferable( rData );
if( pClipboard )
{
aDesc = pClipboard->aObjDesc;
@@ -2963,7 +2956,8 @@ void SwTransferable::FillClipFmtItem( const SwWrtShell& rSh,
SvxClipboardFmtItem & rToFill )
{
USHORT nDest = SwTransferable::GetSotDestination( rSh );
- SwTransferable *pClipboard = SW_MOD()->pClipboard;
+
+ SwTransferable *pClipboard = GetSwTransferable( rData );
if( pClipboard )
{
USHORT nResId;
@@ -3619,6 +3613,22 @@ sal_Int64 SwTransferable::getSomething( const Sequence< sal_Int8 >& rId ) throw(
return nRet;
}
+SwTransferable* SwTransferable::GetSwTransferable( const TransferableDataHelper& rData )
+{
+ SwTransferable* pSwTransferable = NULL;
+
+ uno::Reference<XUnoTunnel> xTunnel( rData.GetTransferable(), UNO_QUERY );
+ if ( xTunnel.is() )
+ {
+ sal_Int64 nHandle = xTunnel->getSomething( getUnoTunnelId() );
+ if ( nHandle )
+ pSwTransferable = (SwTransferable*) (sal_IntPtr) nHandle;
+ }
+
+ return pSwTransferable;
+
+}
+
/* */
// -----------------------------------------------------------------------
diff --git a/sw/source/ui/docvw/AnchorOverlayObject.cxx b/sw/source/ui/docvw/AnchorOverlayObject.cxx
new file mode 100644
index 000000000000..5ed5b076a967
--- /dev/null
+++ b/sw/source/ui/docvw/AnchorOverlayObject.cxx
@@ -0,0 +1,467 @@
+/************************************************************************* *
+ *
+ * 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: postit.cxx,v $
+ * $Revision: 1.8.42.11 $
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+
+#include "precompiled_sw.hxx"
+
+#include <AnchorOverlayObject.hxx>
+#include <SidebarWindowsConsts.hxx>
+
+#include <swrect.hxx>
+#include <view.hxx>
+#include <svx/sdrpaintwindow.hxx>
+#include <svx/svdview.hxx>
+#include <svx/sdr/overlay/overlaymanager.hxx>
+
+#include <sw_primitivetypes2d.hxx>
+#include <drawinglayer/primitive2d/primitivetools2d.hxx>
+#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
+#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
+#include <drawinglayer/primitive2d/shadowprimitive2d.hxx>
+
+namespace sw { namespace sidebarwindows {
+
+//////////////////////////////////////////////////////////////////////////////
+// helper class: Primitive for discrete visualisation
+
+class AnchorPrimitive : public drawinglayer::primitive2d::DiscreteMetricDependentPrimitive2D
+{
+private:
+ basegfx::B2DPolygon maTriangle;
+ basegfx::B2DPolygon maLine;
+ basegfx::B2DPolygon maLineTop;
+ const AnchorState maAnchorState;
+ basegfx::BColor maColor;
+
+ // discrete line width
+ double mfLogicLineWidth;
+
+ // bitfield
+ bool mbShadow : 1;
+ bool mbLineSolid : 1;
+
+protected:
+ virtual drawinglayer::primitive2d::Primitive2DSequence create2DDecomposition(
+ const drawinglayer::geometry::ViewInformation2D& rViewInformation) const;
+
+public:
+ AnchorPrimitive( const basegfx::B2DPolygon& rTriangle,
+ const basegfx::B2DPolygon& rLine,
+ const basegfx::B2DPolygon& rLineTop,
+ AnchorState aAnchorState,
+ const basegfx::BColor& rColor,
+ double fLogicLineWidth,
+ bool bShadow,
+ bool bLineSolid )
+ : drawinglayer::primitive2d::DiscreteMetricDependentPrimitive2D(),
+ maTriangle(rTriangle),
+ maLine(rLine),
+ maLineTop(rLineTop),
+ maAnchorState(aAnchorState),
+ maColor(rColor),
+ mfLogicLineWidth(fLogicLineWidth),
+ mbShadow(bShadow),
+ mbLineSolid(bLineSolid)
+ {}
+
+ // data access
+ const basegfx::B2DPolygon& getTriangle() const { return maTriangle; }
+ const basegfx::B2DPolygon& getLine() const { return maLine; }
+ const basegfx::B2DPolygon& getLineTop() const { return maLineTop; }
+ AnchorState getAnchorState() const { return maAnchorState; }
+ const basegfx::BColor& getColor() const { return maColor; }
+ double getLogicLineWidth() const { return mfLogicLineWidth; }
+ bool getShadow() const { return mbShadow; }
+ bool getLineSolid() const { return mbLineSolid; }
+
+ virtual bool operator==( const drawinglayer::primitive2d::BasePrimitive2D& rPrimitive ) const;
+
+ DeclPrimitrive2DIDBlock()
+};
+
+drawinglayer::primitive2d::Primitive2DSequence AnchorPrimitive::create2DDecomposition(
+ const drawinglayer::geometry::ViewInformation2D& /*rViewInformation*/) const
+{
+ drawinglayer::primitive2d::Primitive2DSequence aRetval;
+
+ if ( AS_TRI == maAnchorState ||
+ AS_ALL == maAnchorState ||
+ AS_START == maAnchorState )
+ {
+ // create triangle
+ const drawinglayer::primitive2d::Primitive2DReference aTriangle(
+ new drawinglayer::primitive2d::PolyPolygonColorPrimitive2D(
+ basegfx::B2DPolyPolygon(getTriangle()),
+ getColor()));
+
+ drawinglayer::primitive2d::appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, aTriangle);
+ }
+
+ if ( AS_ALL == maAnchorState ||
+ AS_START == maAnchorState )
+ {
+ // create line start
+ const drawinglayer::attribute::LineAttribute aLineAttribute(
+ getColor(),
+ getLogicLineWidth() / (basegfx::fTools::equalZero(getDiscreteUnit()) ? 1.0 : getDiscreteUnit()));
+
+ if(getLineSolid())
+ {
+ const drawinglayer::primitive2d::Primitive2DReference aSolidLine(
+ new drawinglayer::primitive2d::PolygonStrokePrimitive2D(
+ getLine(),
+ aLineAttribute));
+
+ drawinglayer::primitive2d::appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, aSolidLine);
+ }
+ else
+ {
+ ::std::vector< double > aDotDashArray;
+ const double fDistance(3.0 * 15.0);
+ const double fDashLen(5.0 * 15.0);
+
+ aDotDashArray.push_back(fDashLen);
+ aDotDashArray.push_back(fDistance);
+
+ const drawinglayer::attribute::StrokeAttribute aStrokeAttribute(
+ aDotDashArray,
+ fDistance + fDashLen);
+
+ const drawinglayer::primitive2d::Primitive2DReference aStrokedLine(
+ new drawinglayer::primitive2d::PolygonStrokePrimitive2D(
+ getLine(),
+ aLineAttribute,
+ aStrokeAttribute));
+
+ drawinglayer::primitive2d::appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, aStrokedLine);
+ }
+ }
+
+ if(aRetval.hasElements() && getShadow())
+ {
+ // shadow is only for triangle and line start, and in upper left
+ // and lower right direction, in different colors
+ const double fColorChange(20.0 / 255.0);
+ const basegfx::B3DTuple aColorChange(fColorChange, fColorChange, fColorChange);
+ basegfx::BColor aLighterColor(getColor() + aColorChange);
+ basegfx::BColor aDarkerColor(getColor() - aColorChange);
+
+ aLighterColor.clamp();
+ aDarkerColor.clamp();
+
+ // create shadow sequence
+ drawinglayer::primitive2d::Primitive2DSequence aShadows(2);
+ basegfx::B2DHomMatrix aTransform;
+
+ aTransform.set(0, 2, -getDiscreteUnit());
+ aTransform.set(1, 2, -getDiscreteUnit());
+
+ aShadows[0] = drawinglayer::primitive2d::Primitive2DReference(
+ new drawinglayer::primitive2d::ShadowPrimitive2D(
+ aTransform,
+ aLighterColor,
+ aRetval));
+
+ aTransform.set(0, 2, getDiscreteUnit());
+ aTransform.set(1, 2, getDiscreteUnit());
+
+ aShadows[1] = drawinglayer::primitive2d::Primitive2DReference(
+ new drawinglayer::primitive2d::ShadowPrimitive2D(
+ aTransform,
+ aDarkerColor,
+ aRetval));
+
+ // add shadow before geometry to make it be proccessed first
+ const drawinglayer::primitive2d::Primitive2DSequence aTemporary(aRetval);
+
+ aRetval = aShadows;
+ drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence(aRetval, aTemporary);
+ }
+
+ if ( AS_ALL == maAnchorState ||
+ AS_END == maAnchorState )
+ {
+ // LineTop has to be created, too, but uses no shadow, so add after
+ // the other parts are created
+ const drawinglayer::attribute::LineAttribute aLineAttribute(
+ getColor(),
+ getLogicLineWidth() / (basegfx::fTools::equalZero(getDiscreteUnit()) ? 1.0 : getDiscreteUnit()));
+
+ const drawinglayer::primitive2d::Primitive2DReference aLineTop(
+ new drawinglayer::primitive2d::PolygonStrokePrimitive2D(
+ getLineTop(),
+ aLineAttribute));
+
+ drawinglayer::primitive2d::appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, aLineTop);
+ }
+
+ return aRetval;
+}
+
+bool AnchorPrimitive::operator==( const drawinglayer::primitive2d::BasePrimitive2D& rPrimitive ) const
+{
+ if(drawinglayer::primitive2d::DiscreteMetricDependentPrimitive2D::operator==(rPrimitive))
+ {
+ const AnchorPrimitive& rCompare = static_cast< const AnchorPrimitive& >(rPrimitive);
+
+ return (getTriangle() == rCompare.getTriangle()
+ && getLine() == rCompare.getLine()
+ && getLineTop() == rCompare.getLineTop()
+ && getAnchorState() == rCompare.getAnchorState()
+ && getColor() == rCompare.getColor()
+ && getLogicLineWidth() == rCompare.getLogicLineWidth()
+ && getShadow() == rCompare.getShadow()
+ && getLineSolid() == rCompare.getLineSolid());
+ }
+
+ return false;
+}
+
+ImplPrimitrive2DIDBlock(AnchorPrimitive, PRIMITIVE2D_ID_SWSIDEBARANCHORPRIMITIVE)
+
+/****** AnchorOverlayObject ***********************************************************/
+/*static*/ AnchorOverlayObject* AnchorOverlayObject::CreateAnchorOverlayObject(
+ SwView& rDocView,
+ const SwRect& aAnchorRect,
+ const long& aPageBorder,
+ const Point& aLineStart,
+ const Point& aLineEnd,
+ const Color& aColorAnchor )
+{
+ AnchorOverlayObject* pAnchorOverlayObject( 0 );
+ if ( rDocView.GetDrawView() )
+ {
+ SdrPaintWindow* pPaintWindow = rDocView.GetDrawView()->GetPaintWindow(0);
+ if( pPaintWindow )
+ {
+ sdr::overlay::OverlayManager* pOverlayManager = pPaintWindow->GetOverlayManager();
+
+ if ( pOverlayManager )
+ {
+ pAnchorOverlayObject = new AnchorOverlayObject(
+ basegfx::B2DPoint( aAnchorRect.Left() , aAnchorRect.Bottom()-5*15),
+ basegfx::B2DPoint( aAnchorRect.Left()-5*15 , aAnchorRect.Bottom()+5*15),
+ basegfx::B2DPoint( aAnchorRect.Left()+5*15 , aAnchorRect.Bottom()+5*15),
+ basegfx::B2DPoint( aAnchorRect.Left(), aAnchorRect.Bottom()+2*15),
+ basegfx::B2DPoint( aPageBorder ,aAnchorRect.Bottom()+2*15),
+ basegfx::B2DPoint( aLineStart.X(),aLineStart.Y()),
+ basegfx::B2DPoint( aLineEnd.X(),aLineEnd.Y()) ,
+ aColorAnchor,
+ false,
+ false);
+ pOverlayManager->add(*pAnchorOverlayObject);
+ }
+ }
+ }
+
+ return pAnchorOverlayObject;
+}
+
+/*static*/ void AnchorOverlayObject::DestroyAnchorOverlayObject( AnchorOverlayObject* pAnchor )
+{
+ if ( pAnchor )
+ {
+ if ( pAnchor->getOverlayManager() )
+ {
+ // remove this object from the chain
+ pAnchor->getOverlayManager()->remove(*pAnchor);
+ }
+ delete pAnchor;
+ }
+}
+
+AnchorOverlayObject::AnchorOverlayObject( const basegfx::B2DPoint& rBasePos,
+ const basegfx::B2DPoint& rSecondPos,
+ const basegfx::B2DPoint& rThirdPos,
+ const basegfx::B2DPoint& rFourthPos,
+ const basegfx::B2DPoint& rFifthPos,
+ const basegfx::B2DPoint& rSixthPos,
+ const basegfx::B2DPoint& rSeventhPos,
+ const Color aBaseColor,
+ const bool bShadowedEffect,
+ const bool bLineSolid)
+ : OverlayObjectWithBasePosition( rBasePos, aBaseColor )
+ , maSecondPosition(rSecondPos)
+ , maThirdPosition(rThirdPos)
+ , maFourthPosition(rFourthPos)
+ , maFifthPosition(rFifthPos)
+ , maSixthPosition(rSixthPos)
+ , maSeventhPosition(rSeventhPos)
+ , maTriangle()
+ , maLine()
+ , maLineTop()
+ , mHeight(0)
+ , mAnchorState(AS_ALL)
+ , mbShadowedEffect(bShadowedEffect)
+ , mbLineSolid(bLineSolid)
+{
+}
+
+AnchorOverlayObject::~AnchorOverlayObject()
+{
+}
+
+void AnchorOverlayObject::implEnsureGeometry()
+{
+ if(!maTriangle.count())
+ {
+ maTriangle.append(getBasePosition());
+ maTriangle.append(GetSecondPosition());
+ maTriangle.append(GetThirdPosition());
+ maTriangle.setClosed(true);
+ }
+
+ if(!maLine.count())
+ {
+ maLine.append(GetFourthPosition());
+ maLine.append(GetFifthPosition());
+ maLine.append(GetSixthPosition());
+ }
+
+ if(!maLineTop.count())
+ {
+ maLineTop.append(GetSixthPosition());
+ maLineTop.append(GetSeventhPosition());
+ }
+}
+
+void AnchorOverlayObject::implResetGeometry()
+{
+ maTriangle.clear();
+ maLine.clear();
+ maLineTop.clear();
+}
+
+drawinglayer::primitive2d::Primitive2DSequence AnchorOverlayObject::createOverlayObjectPrimitive2DSequence()
+{
+ implEnsureGeometry();
+
+ const drawinglayer::primitive2d::Primitive2DReference aReference(
+ new AnchorPrimitive( maTriangle,
+ maLine,
+ maLineTop,
+ GetAnchorState(),
+ getBaseColor().getBColor(),
+ ANCHORLINE_WIDTH * 15.0,
+ getShadowedEffect(),
+ getLineSolid()) );
+
+ return drawinglayer::primitive2d::Primitive2DSequence(&aReference, 1);
+}
+
+void AnchorOverlayObject::SetAllPosition( const basegfx::B2DPoint& rPoint1,
+ const basegfx::B2DPoint& rPoint2,
+ const basegfx::B2DPoint& rPoint3,
+ const basegfx::B2DPoint& rPoint4,
+ const basegfx::B2DPoint& rPoint5,
+ const basegfx::B2DPoint& rPoint6,
+ const basegfx::B2DPoint& rPoint7)
+{
+ if ( rPoint1 != getBasePosition() ||
+ rPoint2 != GetSecondPosition() ||
+ rPoint3 != GetThirdPosition() ||
+ rPoint4 != GetFourthPosition() ||
+ rPoint5 != GetFifthPosition() ||
+ rPoint6 != GetSixthPosition() ||
+ rPoint7 != GetSeventhPosition() )
+ {
+ maBasePosition = rPoint1;
+ maSecondPosition = rPoint2;
+ maThirdPosition = rPoint3;
+ maFourthPosition = rPoint4;
+ maFifthPosition = rPoint5;
+ maSixthPosition = rPoint6;
+ maSeventhPosition = rPoint7;
+
+ implResetGeometry();
+ objectChange();
+ }
+}
+
+void AnchorOverlayObject::SetSixthPosition(const basegfx::B2DPoint& rNew)
+{
+ if(rNew != maSixthPosition)
+ {
+ maSixthPosition = rNew;
+ implResetGeometry();
+ objectChange();
+ }
+}
+
+void AnchorOverlayObject::SetSeventhPosition(const basegfx::B2DPoint& rNew)
+{
+ if(rNew != maSeventhPosition)
+ {
+ maSeventhPosition = rNew;
+ implResetGeometry();
+ objectChange();
+ }
+}
+
+void AnchorOverlayObject::SetTriPosition(const basegfx::B2DPoint& rPoint1,const basegfx::B2DPoint& rPoint2,const basegfx::B2DPoint& rPoint3,
+ const basegfx::B2DPoint& rPoint4,const basegfx::B2DPoint& rPoint5)
+{
+ if(rPoint1 != getBasePosition()
+ || rPoint2 != GetSecondPosition()
+ || rPoint3 != GetThirdPosition()
+ || rPoint4 != GetFourthPosition()
+ || rPoint5 != GetFifthPosition())
+ {
+ maBasePosition = rPoint1;
+ maSecondPosition = rPoint2;
+ maThirdPosition = rPoint3;
+ maFourthPosition = rPoint4;
+ maFifthPosition = rPoint5;
+
+ implResetGeometry();
+ objectChange();
+ }
+}
+
+void AnchorOverlayObject::setLineSolid( const bool bNew )
+{
+ if ( bNew != getLineSolid() )
+ {
+ mbLineSolid = bNew;
+ objectChange();
+ }
+}
+
+void AnchorOverlayObject::SetAnchorState( const AnchorState aState)
+{
+ if ( mAnchorState != aState)
+ {
+ mAnchorState = aState;
+ objectChange();
+ }
+}
+
+} } // end of namespace sw::annotation
+
diff --git a/sw/source/ui/docvw/AnchorOverlayObject.hxx b/sw/source/ui/docvw/AnchorOverlayObject.hxx
new file mode 100644
index 000000000000..cea567f22921
--- /dev/null
+++ b/sw/source/ui/docvw/AnchorOverlayObject.hxx
@@ -0,0 +1,143 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#ifndef _ANCHOROVERLAYOBJECT_HXX
+#define _ANCHOROVERLAYOBJECT_HXX
+
+#include <svx/sdr/overlay/overlayobject.hxx>
+
+#include <basegfx/polygon/b2dpolygon.hxx>
+
+class SwView;
+class SwRect;
+class Point;
+
+namespace sw { namespace sidebarwindows {
+
+enum AnchorState
+{
+ AS_ALL,
+ AS_START,
+ AS_END,
+ AS_TRI
+};
+
+class AnchorOverlayObject: public sdr::overlay::OverlayObjectWithBasePosition
+{
+ public:
+ static AnchorOverlayObject* CreateAnchorOverlayObject( SwView& rDocView,
+ const SwRect& aAnchorRect,
+ const long& aPageBorder,
+ const Point& aLineStart,
+ const Point& aLineEnd,
+ const Color& aColorAnchor );
+ static void DestroyAnchorOverlayObject( AnchorOverlayObject* pAnchor );
+
+ inline const basegfx::B2DPoint& GetSecondPosition() const { return maSecondPosition; }
+ const basegfx::B2DPoint& GetThirdPosition() const { return maThirdPosition; }
+ const basegfx::B2DPoint& GetFourthPosition() const { return maFourthPosition; }
+ const basegfx::B2DPoint& GetFifthPosition() const { return maFifthPosition; }
+ const basegfx::B2DPoint& GetSixthPosition() const { return maSixthPosition; }
+ const basegfx::B2DPoint& GetSeventhPosition() const { return maSeventhPosition; }
+
+ void SetAllPosition( const basegfx::B2DPoint& rPoint1,
+ const basegfx::B2DPoint& rPoint2,
+ const basegfx::B2DPoint& rPoint3,
+ const basegfx::B2DPoint& rPoint4,
+ const basegfx::B2DPoint& rPoint5,
+ const basegfx::B2DPoint& rPoint6,
+ const basegfx::B2DPoint& rPoint7 );
+ void SetTriPosition( const basegfx::B2DPoint& rPoint1,
+ const basegfx::B2DPoint& rPoint2,
+ const basegfx::B2DPoint& rPoint3,
+ const basegfx::B2DPoint& rPoint4,
+ const basegfx::B2DPoint& rPoint5 );
+ void SetSixthPosition( const basegfx::B2DPoint& rNew );
+ void SetSeventhPosition( const basegfx::B2DPoint& rNew );
+
+ void setLineSolid( const bool bNew );
+ inline bool getLineSolid() const { return mbLineSolid; }
+
+ inline void SetHeight( const unsigned long aHeight ) { mHeight = aHeight; };
+
+ bool getShadowedEffect() const { return mbShadowedEffect; }
+
+ void SetAnchorState( const AnchorState aState );
+ inline AnchorState GetAnchorState() const { return mAnchorState; }
+
+ protected:
+ /* 6------------7
+ 1 /
+ /4\ ---------------5
+ 2 - 3
+ */
+
+ basegfx::B2DPoint maSecondPosition;
+ basegfx::B2DPoint maThirdPosition;
+ basegfx::B2DPoint maFourthPosition;
+ basegfx::B2DPoint maFifthPosition;
+ basegfx::B2DPoint maSixthPosition;
+ basegfx::B2DPoint maSeventhPosition;
+
+ // helpers to fill and reset geometry
+ void implEnsureGeometry();
+ void implResetGeometry();
+
+ // geometry creation for OverlayObject
+ virtual drawinglayer::primitive2d::Primitive2DSequence createOverlayObjectPrimitive2DSequence();
+
+ private:
+ // object's geometry
+ basegfx::B2DPolygon maTriangle;
+ basegfx::B2DPolygon maLine;
+ basegfx::B2DPolygon maLineTop;
+ unsigned long mHeight;
+ AnchorState mAnchorState;
+
+ bool mbShadowedEffect : 1;
+ bool mbLineSolid : 1;
+
+ AnchorOverlayObject( const basegfx::B2DPoint& rBasePos,
+ const basegfx::B2DPoint& rSecondPos,
+ const basegfx::B2DPoint& rThirdPos,
+ const basegfx::B2DPoint& rFourthPos,
+ const basegfx::B2DPoint& rFifthPos,
+ const basegfx::B2DPoint& rSixthPos,
+ const basegfx::B2DPoint& rSeventhPos,
+ const Color aBaseColor,
+ const bool bShadowedEffect,
+ const bool bLineSolid );
+ virtual ~AnchorOverlayObject();
+};
+
+} } // end of namespace sw::annotation
+
+#endif
diff --git a/sw/source/ui/docvw/AnnotationMenuButton.cxx b/sw/source/ui/docvw/AnnotationMenuButton.cxx
new file mode 100644
index 000000000000..6022a4646ae6
--- /dev/null
+++ b/sw/source/ui/docvw/AnnotationMenuButton.cxx
@@ -0,0 +1,222 @@
+/************************************************************************* *
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+
+#include "precompiled_sw.hxx"
+
+#include <AnnotationMenuButton.hxx>
+
+#include <annotation.hrc>
+#include <app.hrc>
+#include <access.hrc>
+
+#include <unotools/useroptions.hxx>
+
+#include <vcl/svapp.hxx>
+#include <vcl/menu.hxx>
+#include <vcl/decoview.hxx>
+#include <vcl/gradient.hxx>
+
+#include <cmdid.h>
+#include <SidebarWin.hxx>
+
+namespace sw { namespace annotation {
+
+Color ColorFromAlphaColor( const UINT8 aTransparency,
+ const Color &aFront,
+ const Color &aBack )
+{
+ return Color((UINT8)(aFront.GetRed() * aTransparency/(double)255 + aBack.GetRed() * (1-aTransparency/(double)255)),
+ (UINT8)(aFront.GetGreen() * aTransparency/(double)255 + aBack.GetGreen() * (1-aTransparency/(double)255)),
+ (UINT8)(aFront.GetBlue() * aTransparency/(double)255 + aBack.GetBlue() * (1-aTransparency/(double)255)));
+}
+
+AnnotationMenuButton::AnnotationMenuButton( sw::sidebarwindows::SwSidebarWin& rSidebarWin )
+ : MenuButton( &rSidebarWin )
+ , mrSidebarWin( rSidebarWin )
+{
+ AddEventListener( LINK( &mrSidebarWin, sw::sidebarwindows::SwSidebarWin, WindowEventListener ) );
+
+ SetAccessibleName( SW_RES( STR_ACCESS_ANNOTATION_BUTTON_NAME ) );
+ SetAccessibleDescription( SW_RES( STR_ACCESS_ANNOTATION_BUTTON_DESC ) );
+ SetQuickHelpText( GetAccessibleDescription() );
+}
+
+AnnotationMenuButton::~AnnotationMenuButton()
+{
+ RemoveEventListener( LINK( &mrSidebarWin, sw::sidebarwindows::SwSidebarWin, WindowEventListener ) );
+}
+
+void AnnotationMenuButton::Select()
+{
+ mrSidebarWin.ExecuteCommand( GetCurItemId() );
+}
+
+void AnnotationMenuButton::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ PopupMenu* pButtonPopup( GetPopupMenu() );
+ if ( mrSidebarWin.IsReadOnly() )
+ {
+ pButtonPopup->EnableItem( FN_REPLY, false );
+ pButtonPopup->EnableItem( FN_DELETE_NOTE, false );
+ pButtonPopup->EnableItem( FN_DELETE_NOTE_AUTHOR, false );
+ pButtonPopup->EnableItem( FN_DELETE_ALL_NOTES, false );
+ }
+ else
+ {
+ if ( mrSidebarWin.IsProtected() )
+ {
+ pButtonPopup->EnableItem( FN_DELETE_NOTE, false );
+ }
+ else
+ {
+ pButtonPopup->EnableItem( FN_DELETE_NOTE, true );
+ }
+ pButtonPopup->EnableItem( FN_DELETE_NOTE_AUTHOR, true );
+ pButtonPopup->EnableItem( FN_DELETE_ALL_NOTES, true );
+ }
+
+ if ( mrSidebarWin.IsProtected() )
+ {
+ pButtonPopup->EnableItem( FN_REPLY, false );
+ }
+ else
+ {
+ SvtUserOptions aUserOpt;
+ String sAuthor;
+ if ( !(sAuthor = aUserOpt.GetFullName()).Len() )
+ {
+ if ( !(sAuthor = aUserOpt.GetID()).Len() )
+ {
+ sAuthor = String( SW_RES( STR_REDLINE_UNKNOWN_AUTHOR ));
+ }
+ }
+ // do not allow to reply to ourself and no answer possible if this note is in a protected section
+ if ( sAuthor == mrSidebarWin.GetAuthor() )
+ {
+ pButtonPopup->EnableItem( FN_REPLY, false );
+ }
+ else
+ {
+ pButtonPopup->EnableItem( FN_REPLY, true );
+ }
+ }
+
+ MenuButton::MouseButtonDown( rMEvt );
+}
+
+void AnnotationMenuButton::Paint( const Rectangle& /*rRect*/ )
+{
+ if ( Application::GetSettings().GetStyleSettings().GetHighContrastMode() )
+ SetFillColor(COL_BLACK);
+ else
+ SetFillColor( mrSidebarWin.ColorDark() );
+ SetLineColor();
+ const Rectangle aRect( Rectangle( Point( 0, 0 ), PixelToLogic( GetSizePixel() ) ) );
+ DrawRect( aRect );
+
+ if ( Application::GetSettings().GetStyleSettings().GetHighContrastMode())
+ {
+ //draw rect around button
+ SetFillColor(COL_BLACK);
+ SetLineColor(COL_WHITE);
+ }
+ else
+ {
+ //draw button
+ Gradient aGradient;
+ if ( IsMouseOver() )
+ aGradient = Gradient( GRADIENT_LINEAR,
+ ColorFromAlphaColor( 80, mrSidebarWin.ColorAnchor(), mrSidebarWin.ColorDark() ),
+ ColorFromAlphaColor( 15, mrSidebarWin.ColorAnchor(), mrSidebarWin.ColorDark() ));
+ else
+ aGradient = Gradient( GRADIENT_LINEAR,
+ ColorFromAlphaColor( 15, mrSidebarWin.ColorAnchor(), mrSidebarWin.ColorDark() ),
+ ColorFromAlphaColor( 80, mrSidebarWin.ColorAnchor(), mrSidebarWin.ColorDark() ));
+ DrawGradient( aRect, aGradient );
+
+ //draw rect around button
+ SetFillColor();
+ SetLineColor( ColorFromAlphaColor( 90, mrSidebarWin.ColorAnchor(), mrSidebarWin.ColorDark() ));
+ }
+ DrawRect( aRect );
+
+ if ( mrSidebarWin.IsPreview() )
+ {
+ Font aOldFont( mrSidebarWin.GetFont() );
+ Font aFont(aOldFont);
+ Color aCol( COL_BLACK);
+ aFont.SetColor( aCol );
+ aFont.SetHeight(200);
+ aFont.SetWeight(WEIGHT_MEDIUM);
+ SetFont( aFont );
+ DrawText( aRect ,
+ rtl::OUString::createFromAscii("Edit Note"),
+ TEXT_DRAW_CENTER );
+ SetFont( aOldFont );
+ }
+ else
+ {
+ Rectangle aSymbolRect( aRect );
+ // 25% distance to the left and right button border
+ const long nBorderDistanceLeftAndRight = ((aSymbolRect.GetWidth()*250)+500)/1000;
+ aSymbolRect.Left()+=nBorderDistanceLeftAndRight;
+ aSymbolRect.Right()-=nBorderDistanceLeftAndRight;
+ // 40% distance to the top button border
+ const long nBorderDistanceTop = ((aSymbolRect.GetHeight()*400)+500)/1000;
+ aSymbolRect.Top()+=nBorderDistanceTop;
+ // 15% distance to the bottom button border
+ const long nBorderDistanceBottom = ((aSymbolRect.GetHeight()*150)+500)/1000;
+ aSymbolRect.Bottom()-=nBorderDistanceBottom;
+ DecorationView aDecoView( this );
+ aDecoView.DrawSymbol( aSymbolRect, SYMBOL_SPIN_DOWN,
+ ( Application::GetSettings().GetStyleSettings().GetHighContrastMode()
+ ? Color( COL_WHITE )
+ : Color( COL_BLACK ) ) );
+ }
+}
+
+void AnnotationMenuButton::KeyInput( const KeyEvent& rKeyEvt )
+{
+ const KeyCode& rKeyCode = rKeyEvt.GetKeyCode();
+ const USHORT nKey = rKeyCode.GetCode();
+ if ( nKey == KEY_TAB )
+ {
+ mrSidebarWin.ActivatePostIt();
+ mrSidebarWin.GrabFocus();
+ }
+ else
+ {
+ MenuButton::KeyInput( rKeyEvt );
+ }
+}
+
+} } // end of namespace sw::annotation
+
diff --git a/sw/source/ui/docvw/AnnotationMenuButton.hxx b/sw/source/ui/docvw/AnnotationMenuButton.hxx
new file mode 100644
index 000000000000..c74719f1cad4
--- /dev/null
+++ b/sw/source/ui/docvw/AnnotationMenuButton.hxx
@@ -0,0 +1,63 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#ifndef _ANNOTATIONMENUBUTTON_HXX
+#define _ANNOTATIONMENUBUTTON_HXX
+
+#include <vcl/menubtn.hxx>
+
+namespace sw { namespace sidebarwindows {
+ class SwSidebarWin;
+} }
+
+namespace sw { namespace annotation {
+
+class AnnotationMenuButton : public MenuButton
+{
+ public:
+ AnnotationMenuButton( sw::sidebarwindows::SwSidebarWin& rSidebarWin );
+ ~AnnotationMenuButton();
+
+ // overloaded <MenuButton> methods
+ virtual void Select();
+
+ // overloaded <Window> methods
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void Paint( const Rectangle& rRect );
+ virtual void KeyInput( const KeyEvent& rKeyEvt );
+
+ private:
+ sw::sidebarwindows::SwSidebarWin& mrSidebarWin;
+};
+
+} } // end of namespace sw::annotation
+
+#endif
diff --git a/sw/source/ui/docvw/AnnotationWin.cxx b/sw/source/ui/docvw/AnnotationWin.cxx
new file mode 100644
index 000000000000..91ea1e13b077
--- /dev/null
+++ b/sw/source/ui/docvw/AnnotationWin.cxx
@@ -0,0 +1,292 @@
+/************************************************************************* *
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+
+#include "precompiled_sw.hxx"
+
+#include <AnnotationWin.hxx>
+
+#include <AnnotationMenuButton.hxx>
+#include <PostItMgr.hxx>
+
+#include <annotation.hrc>
+#include <popup.hrc>
+#include <cmdid.h>
+
+#include <vcl/menu.hxx>
+
+#include <svl/undo.hxx>
+#include <unotools/syslocale.hxx>
+#include <svl/languageoptions.hxx>
+
+#include <editeng/postitem.hxx>
+#include <editeng/fhgtitem.hxx>
+#include <editeng/langitem.hxx>
+
+#include <editeng/editview.hxx>
+#include <editeng/outliner.hxx>
+#include <editeng/editeng.hxx>
+#include <editeng/editobj.hxx>
+
+#include <docufld.hxx> // SwPostItField
+#include <txtfld.hxx>
+#include <ndtxt.hxx>
+#include <view.hxx>
+#include <wrtsh.hxx>
+#include <docsh.hxx>
+#include <doc.hxx>
+#include <SwUndoField.hxx>
+
+namespace sw { namespace annotation {
+
+SwAnnotationWin::SwAnnotationWin( SwEditWin& rEditWin,
+ WinBits nBits,
+ SwPostItMgr& aMgr,
+ SwPostItBits aBits,
+ SwSidebarItem& rSidebarItem,
+ SwFmtFld* aField )
+ : SwSidebarWin( rEditWin, nBits, aMgr, aBits, rSidebarItem )
+ , mpFmtFld(aField)
+ , mpFld( static_cast<SwPostItField*>(aField->GetFld()))
+ , mpButtonPopup(0)
+{
+}
+
+SwAnnotationWin::~SwAnnotationWin()
+{
+ delete mpButtonPopup;
+}
+
+void SwAnnotationWin::SetPostItText()
+{
+ // get text from SwPostItField and insert into our textview
+ Engine()->SetModifyHdl( Link() );
+ Engine()->EnableUndo( FALSE );
+ mpFld = static_cast<SwPostItField*>(mpFmtFld->GetFld());
+ if( mpFld->GetTextObject() )
+ Engine()->SetText( *mpFld->GetTextObject() );
+ else
+ {
+ Engine()->Clear();
+ GetOutlinerView()->SetAttribs(DefaultItem());
+ GetOutlinerView()->InsertText(mpFld->GetPar2(),false);
+ }
+
+ Engine()->ClearModifyFlag();
+ Engine()->GetUndoManager().Clear();
+ Engine()->EnableUndo( TRUE );
+ Engine()->SetModifyHdl( LINK( this, SwAnnotationWin, ModifyHdl ) );
+ Invalidate();
+}
+
+void SwAnnotationWin::UpdateData()
+{
+ if ( Engine()->IsModified() )
+ {
+ SwTxtFld* pTxtFld = mpFmtFld->GetTxtFld();
+ SwPosition aPosition( pTxtFld->GetTxtNode() );
+ aPosition.nContent = *pTxtFld->GetStart();
+ SwField* pOldField = mpFld->Copy();
+ mpFld->SetPar2(Engine()->GetEditEngine().GetText());
+ mpFld->SetTextObject(Engine()->CreateParaObject());
+ DocView().GetDocShell()->GetDoc()->AppendUndo(new SwUndoFieldFromDoc(aPosition, *pOldField, *mpFld, 0, true));
+ delete pOldField;
+ // so we get a new layout of notes (anchor position is still the same and we would otherwise not get one)
+ Mgr().SetLayout();
+ // #i98686# if we have several views, all notes should update their text
+ mpFmtFld->Broadcast(SwFmtFldHint( 0, SWFMTFLD_CHANGED));
+ DocView().GetDocShell()->SetModified();
+ }
+ Engine()->ClearModifyFlag();
+ Engine()->GetUndoManager().Clear();
+}
+
+void SwAnnotationWin::Delete()
+{
+ SwSidebarWin::Delete();
+ // we delete the field directly, the Mgr cleans up the PostIt by listening
+ DocView().GetWrtShellPtr()->GotoField(*mpFmtFld);
+ GrabFocusToDocument();
+ DocView().GetWrtShellPtr()->DelRight();
+}
+
+void SwAnnotationWin::GotoPos()
+{
+ DocView().GetDocShell()->GetWrtShell()->GotoField(*mpFmtFld);
+}
+
+sal_uInt32 SwAnnotationWin::MoveCaret()
+{
+ // if this is an answer, do not skip over all following ones, but insert directly behind the current one
+ // but when just leaving a note, skip all following ones as well to continue typing
+ return Mgr().IsAnswer()
+ ? 1
+ : 1 + CountFollowing();
+}
+
+//returns true, if there is another note right before this note
+bool SwAnnotationWin::CalcFollow()
+{
+ SwTxtFld* pTxtFld = mpFmtFld->GetTxtFld();
+ SwPosition aPosition( pTxtFld->GetTxtNode() );
+ aPosition.nContent = *pTxtFld->GetStart();
+ SwTxtAttr * const pTxtAttr = pTxtFld->GetTxtNode().GetTxtAttrForCharAt(
+ aPosition.nContent.GetIndex() - 1, RES_TXTATR_FIELD );
+ const SwField* pFld = pTxtAttr ? pTxtAttr->GetFld().GetFld() : 0;
+ return pFld && (pFld->Which()== RES_POSTITFLD);
+}
+
+// counts how many SwPostItField we have right after the current one
+sal_uInt32 SwAnnotationWin::CountFollowing()
+{
+ sal_uInt32 aCount = 1; // we start with 1, so we have to subtract one at the end again
+ SwTxtFld* pTxtFld = mpFmtFld->GetTxtFld();
+ SwPosition aPosition( pTxtFld->GetTxtNode() );
+ aPosition.nContent = *pTxtFld->GetStart();
+
+ SwTxtAttr * pTxtAttr = pTxtFld->GetTxtNode().GetTxtAttrForCharAt(
+ aPosition.nContent.GetIndex() + 1,
+ RES_TXTATR_FIELD );
+ SwField* pFld = pTxtAttr
+ ? const_cast<SwField*>(pTxtAttr->GetFld().GetFld())
+ : 0;
+ while ( pFld && ( pFld->Which()== RES_POSTITFLD ) )
+ {
+ aCount++;
+ pTxtAttr = pTxtFld->GetTxtNode().GetTxtAttrForCharAt(
+ aPosition.nContent.GetIndex() + aCount,
+ RES_TXTATR_FIELD );
+ pFld = pTxtAttr
+ ? const_cast<SwField*>(pTxtAttr->GetFld().GetFld())
+ : 0;
+ }
+ return aCount - 1;
+}
+
+MenuButton* SwAnnotationWin::CreateMenuButton()
+{
+ mpButtonPopup = new PopupMenu(SW_RES(MN_ANNOTATION_BUTTON));
+ XubString aText = mpButtonPopup->GetItemText( FN_DELETE_NOTE_AUTHOR );
+ SwRewriter aRewriter;
+ aRewriter.AddRule(UNDO_ARG1,GetAuthor());
+ aText = aRewriter.Apply(aText);
+ mpButtonPopup->SetItemText(FN_DELETE_NOTE_AUTHOR,aText);
+ MenuButton* pMenuButton = new AnnotationMenuButton( *this );
+ pMenuButton->SetPopupMenu( mpButtonPopup );
+ pMenuButton->Show();
+ return pMenuButton;
+}
+
+void SwAnnotationWin::InitAnswer(OutlinerParaObject* pText)
+{
+ //collect our old meta data
+ SwSidebarWin* pWin = Mgr().GetNextPostIt(KEY_PAGEUP, this);
+ const LocaleDataWrapper& rLocalData = SvtSysLocale().GetLocaleData();
+ String aText = String(SW_RES(STR_REPLY));
+ SwRewriter aRewriter;
+ aRewriter.AddRule(UNDO_ARG1, pWin->GetAuthor());
+ aText = aRewriter.Apply(aText);
+ aText.Append(String(rtl::OUString::createFromAscii(" (") +
+ String(rLocalData.getDate( pWin->GetDate())) + rtl::OUString::createFromAscii(", ") +
+ String(rLocalData.getTime( pWin->GetTime(),false)) + rtl::OUString::createFromAscii("): \"")));
+ GetOutlinerView()->InsertText(aText,false);
+
+ // insert old, selected text or "..."
+ // TOOD: iterate over all paragraphs, not only first one to find out if it is empty
+ if (pText->GetTextObject().GetText(0) != String(rtl::OUString::createFromAscii("")))
+ GetOutlinerView()->GetEditView().InsertText(pText->GetTextObject());
+ else
+ GetOutlinerView()->InsertText(rtl::OUString::createFromAscii("..."),false);
+ GetOutlinerView()->InsertText(rtl::OUString::createFromAscii("\"\n"),false);
+
+ GetOutlinerView()->SetSelection(ESelection(0x0,0x0,0xFFFF,0xFFFF));
+ SfxItemSet aAnswerSet( DocView().GetDocShell()->GetPool() );
+ aAnswerSet.Put(SvxFontHeightItem(200,80,EE_CHAR_FONTHEIGHT));
+ aAnswerSet.Put(SvxPostureItem(ITALIC_NORMAL,EE_CHAR_ITALIC));
+ GetOutlinerView()->SetAttribs(aAnswerSet);
+ GetOutlinerView()->SetSelection(ESelection(0xFFFF,0xFFFF,0xFFFF,0xFFFF));
+
+ //remove all attributes and reset our standard ones
+ GetOutlinerView()->GetEditView().RemoveAttribsKeepLanguages(true);
+ GetOutlinerView()->SetAttribs(DefaultItem());
+ // lets insert an undo step so the initial text can be easily deleted
+ // but do not use UpdateData() directly, would set modified state again and reentrance into Mgr
+ Engine()->SetModifyHdl( Link() );
+ SwTxtFld* pTxtFld = mpFmtFld->GetTxtFld();
+ SwPosition aPosition( pTxtFld->GetTxtNode() );
+ aPosition.nContent = *pTxtFld->GetStart();
+ SwField* pOldField = mpFld->Copy();
+ mpFld->SetPar2(Engine()->GetEditEngine().GetText());
+ mpFld->SetTextObject(Engine()->CreateParaObject());
+ DocView().GetDocShell()->GetDoc()->AppendUndo(new SwUndoFieldFromDoc(aPosition, *pOldField, *mpFld, 0, true));
+ delete pOldField;
+ Engine()->SetModifyHdl( LINK( this, SwAnnotationWin, ModifyHdl ) );
+ Engine()->ClearModifyFlag();
+ Engine()->GetUndoManager().Clear();
+}
+
+SvxLanguageItem SwAnnotationWin::GetLanguage(void)
+{
+ // set initial language for outliner
+ USHORT nScriptType = SvtLanguageOptions::GetScriptTypeOfLanguage( mpFld->GetLanguage() );
+ USHORT nLangWhichId = 0;
+ switch (nScriptType)
+ {
+ case SCRIPTTYPE_LATIN : nLangWhichId = EE_CHAR_LANGUAGE ; break;
+ case SCRIPTTYPE_ASIAN : nLangWhichId = EE_CHAR_LANGUAGE_CJK; break;
+ case SCRIPTTYPE_COMPLEX : nLangWhichId = EE_CHAR_LANGUAGE_CTL; break;
+ default: DBG_ERROR("GetLanguage: wrong script tye");
+ }
+ return SvxLanguageItem(mpFld->GetLanguage(),nLangWhichId);
+}
+
+bool SwAnnotationWin::IsProtected()
+{
+ return SwSidebarWin::IsProtected() ||
+ GetLayoutStatus() == SwPostItHelper::DELETED ||
+ ( mpFmtFld ? mpFmtFld->IsProtect() : false );
+}
+
+String SwAnnotationWin::GetAuthor()
+{
+ return mpFld->GetPar1();
+}
+
+Date SwAnnotationWin::GetDate()
+{
+ return mpFld->GetDate();
+}
+
+Time SwAnnotationWin::GetTime()
+{
+ return mpFld->GetTime();
+}
+
+} } // end of namespace sw::annotation
diff --git a/sw/source/ui/docvw/PostItMgr.cxx b/sw/source/ui/docvw/PostItMgr.cxx
index 25adc5006c4d..645d4773626a 100644
--- a/sw/source/ui/docvw/PostItMgr.cxx
+++ b/sw/source/ui/docvw/PostItMgr.cxx
@@ -31,6 +31,15 @@
#include "PostItMgr.hxx"
#include <postithelper.hxx>
+#include <SidebarWin.hxx>
+#include <AnnotationWin.hxx>
+#include <frmsidebarwincontainer.hxx>
+#include <accmap.hxx>
+
+#include <SidebarWindowsConsts.hxx>
+#include <AnchorOverlayObject.hxx>
+#include <ShadowOverlayObject.hxx>
+
#include <vcl/svapp.hxx>
#include <vcl/scrbar.hxx>
#include <vcl/outdev.hxx>
@@ -45,7 +54,6 @@
#include <fmtfld.hxx>
#include <docufld.hxx>
#include <edtwin.hxx>
-#include <postit.hxx>
#include <txtfld.hxx>
#include <ndtxt.hxx>
#include <redline.hxx>
@@ -55,7 +63,7 @@
#include <tools/color.hxx>
#include <swmodule.hxx>
-#include <docvw.hrc>
+#include <annotation.hrc>
#include "cmdid.h"
#include <SwRewriter.hxx>
@@ -80,8 +88,8 @@
#include "swevent.hxx"
-// distance between ankor Y and initial note position
-#define POSTIT_INITIAL_ANKOR_DISTANCE 20
+// distance between Anchor Y and initial note position
+#define POSTIT_INITIAL_ANCHOR_DISTANCE 20
//distance between two postits
#define POSTIT_SPACE_BETWEEN 8
#define POSTIT_MINIMUMSIZE_WITH_META 60
@@ -90,6 +98,8 @@
// if we layout more often we stop, this should never happen
#define MAX_LOOP_COUNT 50
+using namespace sw::sidebarwindows;
+
/*
bool comp_author( const SwPostItItem* a, const SwPostItItem* b)
{
@@ -102,16 +112,22 @@ bool comp_date( const SwPostItItem* a, const SwPostItItem* b)
}
*/
-// if position is on the same line, sort by x (Left) position, otherwise by y(Bottom) position
-// if two notes are at the same position, sort by logical node position
-bool comp_pos(const SwMarginItem *a, const SwMarginItem *b)
+//
+bool comp_pos(const SwSidebarItem* a, const SwSidebarItem* b)
{
- return (a->mPos.Bottom() == b->mPos.Bottom()) ?
- ( ((a->mPos.Left() == b->mPos.Left()) && (a->GetBroadCaster()->ISA(SwFmtFld) && b->GetBroadCaster()->ISA(SwFmtFld)) ) ?
- *(static_cast<SwFmtFld*>(a->GetBroadCaster())->GetTxtFld()->GetStart()) <
- *(static_cast<SwFmtFld*>(b->GetBroadCaster())->GetTxtFld()->GetStart())
- : a->mPos.Left() < b->mPos.Left() )
- : a->mPos.Bottom() < b->mPos.Bottom();
+ // --> OD 2010-01-19 #i88070#
+ // sort by anchor position
+//// if position is on the same line, sort by x (Left) position, otherwise by y(Bottom) position
+//// if two notes are at the same position, sort by logical node position
+// return (a->maLayoutInfo.mPosition.Bottom() == b->maLayoutInfo.mPosition.Bottom())
+// ? ( ( (a->maLayoutInfo.mPosition.Left() == b->maLayoutInfo.mPosition.Left()) &&
+// (a->GetBroadCaster()->ISA(SwFmtFld) && b->GetBroadCaster()->ISA(SwFmtFld)) )
+// ? *(static_cast<SwFmtFld*>(a->GetBroadCaster())->GetTxtFld()->GetStart()) <
+// *(static_cast<SwFmtFld*>(b->GetBroadCaster())->GetTxtFld()->GetStart())
+// : a->maLayoutInfo.mPosition.Left() < b->maLayoutInfo.mPosition.Left() )
+// : a->maLayoutInfo.mPosition.Bottom() < b->maLayoutInfo.mPosition.Bottom();
+ return a->GetAnchorPosition() < b->GetAnchorPosition();
+ // <--
}
SwPostItMgr::SwPostItMgr(SwView* pView)
@@ -127,12 +143,14 @@ SwPostItMgr::SwPostItMgr(SwView* pView)
, mbReadOnly(mpView->GetDocShell()->IsReadOnly())
, mbDeleteNote(true)
, mpAnswer(0)
+ , mbIsShowAnchor( false )
+ , mpFrmSidebarWinContainer( 0 )
{
if(!mpView->GetDrawView() )
mpView->GetWrtShell().MakeDrawView();
SwNoteProps aProps;
- mpIsShowAnkor = aProps.IsShowAnkor();
+ mbIsShowAnchor = aProps.IsShowAnchor();
//make sure we get the colour yellow always, even if not the first one of comments or redlining
SW_MOD()->GetRedlineAuthor();
@@ -140,7 +158,7 @@ SwPostItMgr::SwPostItMgr(SwView* pView)
// collect all PostIts and redline comments that exist after loading the document
// don't check for existance for any of them, don't focus them
AddPostIts(false,false);
- /* this code can be used once we want redline comments in the margin
+ /* this code can be used once we want redline comments in the Sidebar
AddRedlineComments(false,false);
*/
// we want to receive stuff like SFX_HINT_DOCCHANGED
@@ -156,27 +174,30 @@ SwPostItMgr::~SwPostItMgr()
{
if ( mnEventId )
Application::RemoveUserEvent( mnEventId );
- // forget about all our margin windows
- RemoveMarginWin();
+ // forget about all our Sidebar windows
+ RemoveSidebarWin();
EndListening( *mpView->GetDocShell() );
for(std::vector<SwPostItPageItem*>::iterator i = mPages.begin(); i!= mPages.end() ; i++)
delete (*i);
mPages.clear();
+
+ delete mpFrmSidebarWinContainer;
+ mpFrmSidebarWinContainer = 0;
}
void SwPostItMgr::CheckForRemovedPostIts()
{
bool bRemoved = false;
- for(std::list<SwMarginItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end(); )
+ for(std::list<SwSidebarItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end(); )
{
- std::list<SwMarginItem*>::iterator it = i++;
+ std::list<SwSidebarItem*>::iterator it = i++;
if ( !(*it)->UseElement() )
{
- SwMarginItem* p = (*it);
+ SwSidebarItem* p = (*it);
mvPostItFlds.remove(*it);
- if (GetActivePostIt() == p->pPostIt)
- SetActivePostIt(0);
+ if (GetActiveSidebarWin() == p->pPostIt)
+ SetActiveSidebarWin(0);
if (p->pPostIt)
delete p->pPostIt;
delete p;
@@ -204,7 +225,7 @@ void SwPostItMgr::InsertItem(SfxBroadcaster* pItem, bool bCheckExistance, bool b
{
if (bCheckExistance)
{
- for(std::list<SwMarginItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(std::list<SwSidebarItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
if ( (*i)->GetBroadCaster() == pItem )
return;
@@ -212,7 +233,7 @@ void SwPostItMgr::InsertItem(SfxBroadcaster* pItem, bool bCheckExistance, bool b
}
mbLayout = bFocus;
if (pItem->ISA(SwFmtFld))
- mvPostItFlds.push_back(new SwPostItItem(static_cast<SwFmtFld*>(pItem), true, bFocus) );
+ mvPostItFlds.push_back(new SwAnnotationItem(static_cast<SwFmtFld*>(pItem), true, bFocus) );
/*
else
if (pItem->ISA(SwRedline))
@@ -225,13 +246,13 @@ void SwPostItMgr::InsertItem(SfxBroadcaster* pItem, bool bCheckExistance, bool b
void SwPostItMgr::RemoveItem( SfxBroadcaster* pBroadcast )
{
EndListening(*pBroadcast);
- for(std::list<SwMarginItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(std::list<SwSidebarItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
if ( (*i)->GetBroadCaster() == pBroadcast )
{
- SwMarginItem* p = (*i);
- if (GetActivePostIt() == p->pPostIt)
- SetActivePostIt(0);
+ SwSidebarItem* p = (*i);
+ if (GetActiveSidebarWin() == p->pPostIt)
+ SetActiveSidebarWin(0);
mvPostItFlds.remove(*i);
delete p->pPostIt;
delete p;
@@ -379,7 +400,7 @@ void SwPostItMgr::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
case SWFMTFLD_CHANGED:
{
SwFmtFld* pFmtFld = dynamic_cast<SwFmtFld*>(&rBC);
- for(std::list<SwMarginItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(std::list<SwSidebarItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
if ( pFmtFld == (*i)->GetBroadCaster() )
{
@@ -396,7 +417,7 @@ void SwPostItMgr::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
case SWFMTFLD_LANGUAGE:
{
SwFmtFld* pFmtFld = dynamic_cast<SwFmtFld*>(&rBC);
- for(std::list<SwMarginItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(std::list<SwSidebarItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
if ( pFmtFld == (*i)->GetBroadCaster() )
{
@@ -410,7 +431,8 @@ void SwPostItMgr::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
case SCRIPTTYPE_ASIAN : nLangWhichId = EE_CHAR_LANGUAGE_CJK; break;
case SCRIPTTYPE_COMPLEX : nLangWhichId = EE_CHAR_LANGUAGE_CTL; break;
}
- (*i)->pPostIt->SetLanguage(SvxLanguageItem((*i)->GetFmtFld()->GetFld()->GetLanguage(),nLangWhichId));
+ (*i)->pPostIt->SetLanguage( SvxLanguageItem((*i)->GetFmtFld()->GetFld()->GetLanguage(),
+ nLangWhichId) );
}
break;
}
@@ -429,7 +451,7 @@ void SwPostItMgr::Focus(SfxBroadcaster& rBC)
mpView->ExecViewOptions(aRequest);
}
- for(std::list<SwMarginItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(std::list<SwSidebarItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
// field to get the focus is the broadcaster
if ( &rBC == (*i)->GetBroadCaster() )
@@ -463,9 +485,9 @@ bool SwPostItMgr::CalcRects()
PreparePageContainer();
if ( !mvPostItFlds.empty() )
{
- for(std::list<SwMarginItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(std::list<SwSidebarItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
- SwMarginItem* pItem = (*i);
+ SwSidebarItem* pItem = (*i);
if ( !pItem->UseElement() )
{
DBG_ERROR("PostIt is not in doc or other wrong use");
@@ -474,32 +496,30 @@ bool SwPostItMgr::CalcRects()
}
//save old rect and visible state
- SwRect aOldRect(pItem->mPos);
+ SwRect aOldRect(pItem->maLayoutInfo.mPosition);
SwPostItHelper::SwLayoutStatus eOldStatus = pItem->mLayoutStatus;
std::vector< SwLayoutInfo > aInfo;
- SwPosition aPosition = pItem->GetPosition();
- pItem->mLayoutStatus = SwPostItHelper::getLayoutInfos( aInfo, aPosition );
+ {
+ SwPosition aPosition = pItem->GetAnchorPosition();
+ pItem->mLayoutStatus = SwPostItHelper::getLayoutInfos( aInfo, aPosition );
+ }
if( aInfo.size() )
{
- SwLayoutInfo& rInfo = aInfo[0];
- pItem->mPos = rInfo.mPosition;
- pItem->mPagePos = rInfo.mPageFrame;
- pItem->mFramePos = rInfo.mPagePrtArea;
- pItem->bMarginSide = rInfo.mbMarginSide;
- pItem->mnPageNumber = rInfo.mnPageNumber;
- pItem->mRedlineAuthor = rInfo.mRedlineAuthor;
+ pItem->maLayoutInfo = aInfo[0];
}
- bChange = bChange || (pItem->mPos != aOldRect) || (eOldStatus != pItem->mLayoutStatus);
+ bChange = bChange ||
+ ( pItem->maLayoutInfo.mPosition != aOldRect ) ||
+ ( eOldStatus != pItem->mLayoutStatus );
}
// show notes in right order in navigator
- //prevent ankors during layout to overlap, e.g. when moving a frame
+ //prevent Anchors during layout to overlap, e.g. when moving a frame
Sort(SORT_POS);
// sort the items into the right page vector, so layout can be done by page
- for(std::list<SwMarginItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(std::list<SwSidebarItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
- SwMarginItem* pItem = (*i);
+ SwSidebarItem* pItem = (*i);
if( SwPostItHelper::INVISIBLE == pItem->mLayoutStatus )
{
if (pItem->pPostIt)
@@ -517,7 +537,7 @@ bool SwPostItMgr::CalcRects()
}
}
- const unsigned long aPageNum = pItem->mnPageNumber;
+ const unsigned long aPageNum = pItem->maLayoutInfo.mnPageNumber;
if (aPageNum > mPages.size())
{
const unsigned long nNumberOfPages = mPages.size();
@@ -525,8 +545,8 @@ bool SwPostItMgr::CalcRects()
mPages.push_back( new SwPostItPageItem());
}
mPages[aPageNum-1]->mList->push_back(pItem);
- mPages[aPageNum-1]->mPageRect = pItem->mPagePos;
- mPages[aPageNum-1]->bMarginSide = pItem->bMarginSide;
+ mPages[aPageNum-1]->mPageRect = pItem->maLayoutInfo.mPageFrame;
+ mPages[aPageNum-1]->eSidebarPosition = pItem->maLayoutInfo.meSidebarPosition;
}
if (!bChange && mpWrtShell->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE))
@@ -555,9 +575,9 @@ bool SwPostItMgr::CalcRects()
bool SwPostItMgr::HasScrollbars() const
{
- for(std::list<SwMarginItem*>::const_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(std::list<SwSidebarItem*>::const_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
- if ((*i)->bShow && (*i)->pPostIt && (*i)->pPostIt->Scrollbar())
+ if ((*i)->bShow && (*i)->pPostIt && (*i)->pPostIt->HasScrollbar())
return true;
}
return false;
@@ -609,63 +629,80 @@ void SwPostItMgr::LayoutPostIts()
// only layout if there are notes on this page
if (mPages[n]->mList->size()>0)
{
- std::list<SwMarginWin*> aVisiblePostItList;
+ std::list<SwSidebarWin*> aVisiblePostItList;
unsigned long lNeededHeight = 0;
long mlPageBorder = 0;
long mlPageEnd = 0;
- for(SwMarginItem_iterator i = mPages[n]->mList->begin(); i!= mPages[n]->mList->end(); i++)
+ for(SwSidebarItem_iterator i = mPages[n]->mList->begin(); i!= mPages[n]->mList->end(); i++)
{
- SwMarginItem* pItem = (*i);
- SwMarginWin* pPostIt = pItem->pPostIt;
+ SwSidebarItem* pItem = (*i);
+ SwSidebarWin* pPostIt = pItem->pPostIt;
- if (mPages[n]->bMarginSide)
+ if (mPages[n]->eSidebarPosition == sw::sidebarwindows::SIDEBAR_LEFT )
{
// x value for notes positioning
mlPageBorder = mpEditWin->LogicToPixel( Point( mPages[n]->mPageRect.Left(), 0)).X() - GetSidebarWidth(true);// - GetSidebarBorderWidth(true);
//bending point
- mlPageEnd = mpWrtShell->getIDocumentSettingAccess()->get( IDocumentSettingAccess::BROWSE_MODE) ? pItem->mFramePos.Left() : mPages[n]->mPageRect.Left() + 350;
+ mlPageEnd =
+ mpWrtShell->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE)
+ ? pItem->maLayoutInfo.mPagePrtArea.Left()
+ : mPages[n]->mPageRect.Left() + 350;
}
- else
+ else if (mPages[n]->eSidebarPosition == sw::sidebarwindows::SIDEBAR_RIGHT )
{
// x value for notes positioning
mlPageBorder = mpEditWin->LogicToPixel( Point(mPages[n]->mPageRect.Right(), 0)).X() + GetSidebarBorderWidth(true);
//bending point
- mlPageEnd = mpWrtShell->getIDocumentSettingAccess()->get( IDocumentSettingAccess::BROWSE_MODE) ? pItem->mFramePos.Right() : mPages[n]->mPageRect.Right() - 350;
+ mlPageEnd =
+ mpWrtShell->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE)
+ ? pItem->maLayoutInfo.mPagePrtArea.Right() :
+ mPages[n]->mPageRect.Right() - 350;
}
if (pItem->bShow)
{
- long Y = mpEditWin->LogicToPixel( Point(0,pItem->mPos.Bottom())).Y();
+ long Y = mpEditWin->LogicToPixel( Point(0,pItem->maLayoutInfo.mPosition.Bottom())).Y();
long aPostItHeight = 0;
if (!pPostIt)
{
- pPostIt = (*i)->GetMarginWindow(static_cast<Window*>(&mpView->GetEditWin()),WINDOW_CONTROL|WB_NODIALOGCONTROL,this,0);
+ pPostIt = (*i)->GetSidebarWindow( mpView->GetEditWin(),
+ WB_DIALOGCONTROL,
+ *this,
+ 0 );
pPostIt->InitControls();
pPostIt->SetReadonly(mbReadOnly);
pItem->pPostIt = pPostIt;
if (mpAnswer)
{
if (pPostIt->CalcFollow()) //do we really have another note in front of this one
- static_cast<SwPostIt*>(pPostIt)->InitAnswer(mpAnswer);
+ static_cast<sw::annotation::SwAnnotationWin*>(pPostIt)->InitAnswer(mpAnswer);
delete mpAnswer;
mpAnswer = 0;
}
}
- if (pItem->pPostIt->ISA(SwPostIt))
- {
- static_cast<SwPostIt*>(pPostIt)->SetChangeTracking(pItem->mLayoutStatus,GetColorAnkor(pItem->mRedlineAuthor));
- }
- pPostIt->SetMarginSide(mPages[n]->bMarginSide);
+ pPostIt->SetChangeTracking(
+ pItem->mLayoutStatus,
+ GetColorAnchor(pItem->maLayoutInfo.mRedlineAuthor));
+ pPostIt->SetSidebarPosition(mPages[n]->eSidebarPosition);
pPostIt->SetFollow(pPostIt->CalcFollow());
- aPostItHeight = ( pPostIt->GetPostItTextHeight() < pPostIt->GetMinimumSizeWithoutMeta() ? pPostIt->GetMinimumSizeWithoutMeta() : pPostIt->GetPostItTextHeight() ) + pPostIt->GetMetaHeight();
- pPostIt->SetPosSizePixelRect( mlPageBorder ,Y-GetInitialAnchorDistance(), GetNoteWidth() ,aPostItHeight,pItem->mPos, mlPageEnd);
+ aPostItHeight = ( pPostIt->GetPostItTextHeight() < pPostIt->GetMinimumSizeWithoutMeta()
+ ? pPostIt->GetMinimumSizeWithoutMeta()
+ : pPostIt->GetPostItTextHeight() )
+ + pPostIt->GetMetaHeight();
+ pPostIt->SetPosSizePixelRect( mlPageBorder ,
+ Y - GetInitialAnchorDistance(),
+ GetNoteWidth() ,
+ aPostItHeight,
+ pItem->maLayoutInfo.mPosition,
+ mlPageEnd );
+ pPostIt->ChangeSidebarItem( *pItem );
if (pItem->bFocus)
{
mbLayout = true;
- pPostIt->GrabFocus();
+ pPostIt->GrabFocus();
pItem->bFocus = false;
}
// only the visible postits are used for the final layout
@@ -705,7 +742,7 @@ void SwPostItMgr::LayoutPostIts()
- enlarge all notes till GetNextBorder(), as we resized to average value before
*/
//lets hide the ones which overlap the page
- for(SwMarginWin_iterator i = aVisiblePostItList.begin(); i!= aVisiblePostItList.end() ; i++)
+ for(SwSidebarWin_iterator i = aVisiblePostItList.begin(); i!= aVisiblePostItList.end() ; i++)
{
if (mPages[n]->lOffset != 0)
(*i)->TranslateTopPosition(mPages[n]->lOffset);
@@ -720,24 +757,28 @@ void SwPostItMgr::LayoutPostIts()
{
if (mpEditWin->PixelToLogic(Point(0,(*i)->VirtualPos().Y())).Y() < (mPages[n]->mPageRect.Top()+aSidebarheight))
{
- if (mPages[n]->bMarginSide)
- (*i)->ShowAnkorOnly(Point(mPages[n]->mPageRect.Left(),mPages[n]->mPageRect.Top()));
- else
- (*i)->ShowAnkorOnly(Point(mPages[n]->mPageRect.Right(),mPages[n]->mPageRect.Top()));
+ if ( mPages[n]->eSidebarPosition == sw::sidebarwindows::SIDEBAR_LEFT )
+ (*i)->ShowAnchorOnly(Point( mPages[n]->mPageRect.Left(),
+ mPages[n]->mPageRect.Top()));
+ else if ( mPages[n]->eSidebarPosition == sw::sidebarwindows::SIDEBAR_RIGHT )
+ (*i)->ShowAnchorOnly(Point( mPages[n]->mPageRect.Right(),
+ mPages[n]->mPageRect.Top()));
}
else
{
- if (mPages[n]->bMarginSide)
- (*i)->ShowAnkorOnly(Point(mPages[n]->mPageRect.Left(),mPages[n]->mPageRect.Bottom()));
- else
- (*i)->ShowAnkorOnly(Point(mPages[n]->mPageRect.Right(),mPages[n]->mPageRect.Bottom()));
+ if ( mPages[n]->eSidebarPosition == sw::sidebarwindows::SIDEBAR_LEFT )
+ (*i)->ShowAnchorOnly(Point(mPages[n]->mPageRect.Left(),
+ mPages[n]->mPageRect.Bottom()));
+ else if ( mPages[n]->eSidebarPosition == sw::sidebarwindows::SIDEBAR_RIGHT )
+ (*i)->ShowAnchorOnly(Point(mPages[n]->mPageRect.Right(),
+ mPages[n]->mPageRect.Bottom()));
}
DBG_ASSERT(mPages[n]->bScrollbar,"SwPostItMgr::LayoutByPage(): note overlaps, but bScrollbar is not true");
}
}
// do some magic so we really see the focused note
- for(SwMarginWin_iterator i = aVisiblePostItList.begin(); i!= aVisiblePostItList.end() ; i++)
+ for(SwSidebarWin_iterator i = aVisiblePostItList.begin(); i!= aVisiblePostItList.end() ; i++)
{
if ((*i)->HasChildPathFocus())
{
@@ -748,7 +789,7 @@ void SwPostItMgr::LayoutPostIts()
}
else
{
- for(SwMarginWin_iterator i = aVisiblePostItList.begin(); i!= aVisiblePostItList.end() ; i++)
+ for(SwSidebarWin_iterator i = aVisiblePostItList.begin(); i!= aVisiblePostItList.end() ; i++)
(*i)->SetPosAndSize();
bool bOldScrollbar = mPages[n]->bScrollbar;
@@ -767,9 +808,9 @@ void SwPostItMgr::LayoutPostIts()
if (!ShowNotes())
{ // we do not want to see the notes anymore -> Options-Writer-View-Notes
bool bRepair = false;
- for(SwMarginItem_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(SwSidebarItem_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
- SwMarginItem* pItem = (*i);
+ SwSidebarItem* pItem = (*i);
if ( !pItem->UseElement() )
{
DBG_ERROR("PostIt is not in doc!");
@@ -782,7 +823,7 @@ void SwPostItMgr::LayoutPostIts()
(*i)->pPostIt->HideNote();
if ((*i)->pPostIt->HasChildPathFocus())
{
- SetActivePostIt(0);
+ SetActiveSidebarWin(0);
(*i)->pPostIt->GrabFocusToDocument();
}
}
@@ -809,7 +850,7 @@ bool SwPostItMgr::BorderOverPageBorder(unsigned long aPage) const
return false;
}
- SwMarginItem_iterator aItem = mPages[aPage-1]->mList->end();
+ SwSidebarItem_iterator aItem = mPages[aPage-1]->mList->end();
--aItem;
DBG_ASSERT ((*aItem)->pPostIt,"BorderOverPageBorder: NULL postIt, should never happen");
if ((*aItem)->pPostIt)
@@ -832,9 +873,9 @@ void SwPostItMgr::Scroll(const long lScroll,const unsigned long aPage)
const bool bOldUp = ArrowEnabled(KEY_PAGEUP,aPage);
const bool bOldDown = ArrowEnabled(KEY_PAGEDOWN,aPage);
const long aSidebarheight = mpEditWin->PixelToLogic(Size(0,GetSidebarScrollerHeight())).Height();
- for(SwMarginItem_iterator i = mPages[aPage-1]->mList->begin(); i!= mPages[aPage-1]->mList->end(); i++)
+ for(SwSidebarItem_iterator i = mPages[aPage-1]->mList->begin(); i!= mPages[aPage-1]->mList->end(); i++)
{
- SwMarginWin* pPostIt = (*i)->pPostIt;
+ SwSidebarWin* pPostIt = (*i)->pPostIt;
// if this is an answer, we should take the normal position and not the real, slightly moved position
pPostIt->SetVirtualPosSize(pPostIt->GetPosPixel(),pPostIt->GetSizePixel());
pPostIt->TranslateTopPosition(lScroll);
@@ -851,17 +892,17 @@ void SwPostItMgr::Scroll(const long lScroll,const unsigned long aPage)
{
if ( mpEditWin->PixelToLogic(Point(0,pPostIt->VirtualPos().Y())).Y() < (mPages[aPage-1]->mPageRect.Top()+aSidebarheight))
{
- if (mPages[aPage-1]->bMarginSide)
- pPostIt->ShowAnkorOnly(Point(mPages[aPage-1]->mPageRect.Left(),mPages[aPage-1]->mPageRect.Top()));
- else
- pPostIt->ShowAnkorOnly(Point(mPages[aPage-1]->mPageRect.Right(),mPages[aPage-1]->mPageRect.Top()));
+ if (mPages[aPage-1]->eSidebarPosition == sw::sidebarwindows::SIDEBAR_LEFT)
+ pPostIt->ShowAnchorOnly(Point(mPages[aPage-1]->mPageRect.Left(),mPages[aPage-1]->mPageRect.Top()));
+ else if (mPages[aPage-1]->eSidebarPosition == sw::sidebarwindows::SIDEBAR_RIGHT)
+ pPostIt->ShowAnchorOnly(Point(mPages[aPage-1]->mPageRect.Right(),mPages[aPage-1]->mPageRect.Top()));
}
else
{
- if (mPages[aPage-1]->bMarginSide)
- pPostIt->ShowAnkorOnly(Point(mPages[aPage-1]->mPageRect.Left(),mPages[aPage-1]->mPageRect.Bottom()));
- else
- pPostIt->ShowAnkorOnly(Point(mPages[aPage-1]->mPageRect.Right(),mPages[aPage-1]->mPageRect.Bottom()));
+ if (mPages[aPage-1]->eSidebarPosition == sw::sidebarwindows::SIDEBAR_LEFT)
+ pPostIt->ShowAnchorOnly(Point(mPages[aPage-1]->mPageRect.Left(),mPages[aPage-1]->mPageRect.Bottom()));
+ else if (mPages[aPage-1]->eSidebarPosition == sw::sidebarwindows::SIDEBAR_RIGHT)
+ pPostIt->ShowAnchorOnly(Point(mPages[aPage-1]->mPageRect.Right(),mPages[aPage-1]->mPageRect.Bottom()));
}
}
}
@@ -874,7 +915,7 @@ void SwPostItMgr::Scroll(const long lScroll,const unsigned long aPage)
}
}
-void SwPostItMgr::AutoScroll(const SwMarginWin* pPostIt,const unsigned long aPage )
+void SwPostItMgr::AutoScroll(const SwSidebarWin* pPostIt,const unsigned long aPage )
{
// otherwise all notes are visible
if (mPages[aPage-1]->bScrollbar)
@@ -894,7 +935,7 @@ void SwPostItMgr::AutoScroll(const SwMarginWin* pPostIt,const unsigned long aPag
}
}
-void SwPostItMgr::MakeVisible(const SwMarginWin* pPostIt,long aPage )
+void SwPostItMgr::MakeVisible(const SwSidebarWin* pPostIt,long aPage )
{
if (aPage == -1)
{
@@ -903,7 +944,7 @@ void SwPostItMgr::MakeVisible(const SwMarginWin* pPostIt,long aPage )
{
if (mPages[n]->mList->size()>0)
{
- for(SwMarginItem_iterator i = mPages[n]->mList->begin(); i!= mPages[n]->mList->end(); i++)
+ for(SwSidebarItem_iterator i = mPages[n]->mList->begin(); i!= mPages[n]->mList->end(); i++)
{
if ((*i)->pPostIt==pPostIt)
{
@@ -952,7 +993,7 @@ Color SwPostItMgr::GetArrowColor(USHORT aDirection,unsigned long aPage) const
}
}
-bool SwPostItMgr::LayoutByPage(std::list<SwMarginWin*> &aVisiblePostItList,const Rectangle aBorder, long lNeededHeight)
+bool SwPostItMgr::LayoutByPage(std::list<SwSidebarWin*> &aVisiblePostItList,const Rectangle aBorder, long lNeededHeight)
{
/*** General layout idea:***/
// - if we have space left, we always move the current one up,
@@ -982,12 +1023,12 @@ bool SwPostItMgr::LayoutByPage(std::list<SwMarginWin*> &aVisiblePostItList,const
bScrollbars = true;
lTopBorder += GetSidebarScrollerHeight() + 10;
lBottomBorder -= (GetSidebarScrollerHeight() + 10);
- for(SwMarginWin_iterator i = aVisiblePostItList.begin(); i!= aVisiblePostItList.end() ; i++)
+ for(SwSidebarWin_iterator i = aVisiblePostItList.begin(); i!= aVisiblePostItList.end() ; i++)
(*i)->SetSize(Size((*i)->VirtualSize().getWidth(),(*i)->GetMinimumSizeWithMeta()));
}
else
{
- for(SwMarginWin_iterator i = aVisiblePostItList.begin(); i!= aVisiblePostItList.end() ; i++)
+ for(SwSidebarWin_iterator i = aVisiblePostItList.begin(); i!= aVisiblePostItList.end() ; i++)
{
if ( (*i)->VirtualSize().getHeight() > lAverageHeight)
(*i)->SetSize(Size((*i)->VirtualSize().getWidth(),lAverageHeight));
@@ -1004,9 +1045,9 @@ bool SwPostItMgr::LayoutByPage(std::list<SwMarginWin*> &aVisiblePostItList,const
loop++;
bDone = true;
lSpaceUsed = lTopBorder + GetSpaceBetween();
- for(SwMarginWin_iterator i = aVisiblePostItList.begin(); i!= aVisiblePostItList.end() ; i++)
+ for(SwSidebarWin_iterator i = aVisiblePostItList.begin(); i!= aVisiblePostItList.end() ; i++)
{
- SwMarginWin_iterator aNextPostIt = i;
+ SwSidebarWin_iterator aNextPostIt = i;
++aNextPostIt;
if (aNextPostIt !=aVisiblePostItList.end())
@@ -1025,7 +1066,7 @@ bool SwPostItMgr::LayoutByPage(std::list<SwMarginWin*> &aVisiblePostItList,const
if ( ((*i)->VirtualPos().Y()- lTranslatePos - GetSpaceBetween()) > lTopBorder)
{
if ((*aNextPostIt)->IsFollow())
- (*i)->TranslateTopPosition(-1*(lTranslatePos+ANKORLINE_WIDTH));
+ (*i)->TranslateTopPosition(-1*(lTranslatePos+ANCHORLINE_WIDTH));
else
(*i)->TranslateTopPosition(-1*(lTranslatePos+GetSpaceBetween()));
}
@@ -1034,7 +1075,7 @@ bool SwPostItMgr::LayoutByPage(std::list<SwMarginWin*> &aVisiblePostItList,const
long lMoveUp = (*i)->VirtualPos().Y() - lTopBorder;
(*i)->TranslateTopPosition(-1* lMoveUp);
if ((*aNextPostIt)->IsFollow())
- (*aNextPostIt)->TranslateTopPosition( (lTranslatePos+ANKORLINE_WIDTH) - lMoveUp);
+ (*aNextPostIt)->TranslateTopPosition( (lTranslatePos+ANCHORLINE_WIDTH) - lMoveUp);
else
(*aNextPostIt)->TranslateTopPosition( (lTranslatePos+GetSpaceBetween()) - lMoveUp);
}
@@ -1043,7 +1084,7 @@ bool SwPostItMgr::LayoutByPage(std::list<SwMarginWin*> &aVisiblePostItList,const
{
// no space left, left move the next one down
if ((*aNextPostIt)->IsFollow())
- (*aNextPostIt)->TranslateTopPosition(lTranslatePos+ANKORLINE_WIDTH);
+ (*aNextPostIt)->TranslateTopPosition(lTranslatePos+ANCHORLINE_WIDTH);
else
(*aNextPostIt)->TranslateTopPosition(lTranslatePos+GetSpaceBetween());
}
@@ -1062,14 +1103,14 @@ bool SwPostItMgr::LayoutByPage(std::list<SwMarginWin*> &aVisiblePostItList,const
}
}
if (aNextPostIt !=aVisiblePostItList.end() && (*aNextPostIt)->IsFollow())
- lSpaceUsed += (*i)->VirtualSize().Height() + ANKORLINE_WIDTH;
+ lSpaceUsed += (*i)->VirtualSize().Height() + ANCHORLINE_WIDTH;
else
lSpaceUsed += (*i)->VirtualSize().Height() + GetSpaceBetween();
}
else
{
//(*i) is the last visible item
- SwMarginWin_iterator aPrevPostIt = i;
+ SwSidebarWin_iterator aPrevPostIt = i;
--aPrevPostIt;
//lTranslatePos = ( (*aPrevPostIt)->VirtualPos().Y() + (*aPrevPostIt)->VirtualSize().Height() + GetSpaceBetween() ) - (*i)->VirtualPos().Y();
lTranslatePos = ( (*aPrevPostIt)->VirtualPos().Y() + (*aPrevPostIt)->VirtualSize().Height() ) - (*i)->VirtualPos().Y();
@@ -1079,7 +1120,7 @@ bool SwPostItMgr::LayoutByPage(std::list<SwMarginWin*> &aVisiblePostItList,const
if ( ((*i)->VirtualPos().Y()+ (*i)->VirtualSize().Height()+lTranslatePos) < lBottomBorder)
{
if ( (*i)->IsFollow() )
- (*i)->TranslateTopPosition(lTranslatePos+ANKORLINE_WIDTH);
+ (*i)->TranslateTopPosition(lTranslatePos+ANCHORLINE_WIDTH);
else
(*i)->TranslateTopPosition(lTranslatePos+GetSpaceBetween());
}
@@ -1111,7 +1152,7 @@ bool SwPostItMgr::LayoutByPage(std::list<SwMarginWin*> &aVisiblePostItList,const
else
{
// only one left, make sure it is not hidden at the top or bottom
- SwMarginWin_iterator i = aVisiblePostItList.begin();
+ SwSidebarWin_iterator i = aVisiblePostItList.begin();
lTranslatePos = lTopBorder - (*i)->VirtualPos().Y();
if (lTranslatePos>0)
{
@@ -1164,11 +1205,11 @@ void SwPostItMgr::AddPostIts(bool bCheckExistance, bool bFocus)
PrepareView(true);
}
-void SwPostItMgr::RemoveMarginWin()
+void SwPostItMgr::RemoveSidebarWin()
{
if (!mvPostItFlds.empty())
{
- for(std::list<SwMarginItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(std::list<SwSidebarItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
EndListening( *((*i)->GetBroadCaster()) );
if ((*i)->pPostIt)
@@ -1188,8 +1229,10 @@ void SwPostItMgr::RemoveMarginWin()
void SwPostItMgr::Delete(String aAuthor)
{
mpWrtShell->StartAllAction();
- if ( GetActivePostIt() && (GetActivePostIt()->GetAuthor()==aAuthor) )
- SetActivePostIt(0);
+ if ( HasActiveSidebarWin() && (GetActiveSidebarWin()->GetAuthor()==aAuthor) )
+ {
+ SetActiveSidebarWin(0);
+ }
SwRewriter aRewriter;
String aUndoString = SW_RES(STR_DELETE_AUTHOR_NOTES);
aUndoString += aAuthor;
@@ -1198,7 +1241,7 @@ void SwPostItMgr::Delete(String aAuthor)
std::vector<SwFmtFld*> aTmp;
aTmp.reserve( mvPostItFlds.size() );
- for(std::list<SwMarginItem*>::iterator pPostIt = mvPostItFlds.begin(); pPostIt!= mvPostItFlds.end() ; pPostIt++)
+ for(std::list<SwSidebarItem*>::iterator pPostIt = mvPostItFlds.begin(); pPostIt!= mvPostItFlds.end() ; pPostIt++)
{
if ((*pPostIt)->GetFmtFld() && ((*pPostIt)->pPostIt->GetAuthor() == aAuthor) )
aTmp.push_back( (*pPostIt)->GetFmtFld() );
@@ -1208,36 +1251,6 @@ void SwPostItMgr::Delete(String aAuthor)
mpWrtShell->GotoField( *(*i) );
mpWrtShell->DelRight();
}
- /*
- for(std::list<SwPostItItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end(); )
- {
- SwPostItItem* pItem = (*i);
- SwPostItField* pPostItField = static_cast<SwPostItField*>(pItem->pFmtFld->GetFld());
- if (pPostItField->GetPar1() == aAuthor)
- {
- // stop listening, we delete ourselves
- EndListening( *(pItem->pFmtFld) );
-
- // remove reference to yet-to-die postit
- if (pItem->pPostIt == GetActivePostIt())
- SetActivePostIt(0);
-
- // delete the actual SwPostItField
- mpWrtShell->GotoField(*pItem->pFmtFld);
- mpWrtShell->DelRight();
- i = mvPostItFlds.erase(i);
-
- // delete visual representation
- // lazy delete doesn't work because references to document (mpFmtFld, mpView etc. may be dead before deletion)
- delete pItem->pPostIt;
-
- // delete struct saving the pointers
- delete pItem;
- }
- else
- ++i;
- }
- */
mpWrtShell->EndUndo( UNDO_DELETE );
PrepareView();
mpWrtShell->EndAllAction();
@@ -1249,14 +1262,14 @@ void SwPostItMgr::Delete(String aAuthor)
void SwPostItMgr::Delete()
{
mpWrtShell->StartAllAction();
- SetActivePostIt(0);
+ SetActiveSidebarWin(0);
SwRewriter aRewriter;
aRewriter.AddRule(UNDO_ARG1, SW_RES(STR_DELETE_ALL_NOTES) );
mpWrtShell->StartUndo( UNDO_DELETE, &aRewriter );
std::vector<SwFmtFld*> aTmp;
aTmp.reserve( mvPostItFlds.size() );
- for(std::list<SwMarginItem*>::iterator pPostIt = mvPostItFlds.begin(); pPostIt!= mvPostItFlds.end() ; pPostIt++)
+ for(std::list<SwSidebarItem*>::iterator pPostIt = mvPostItFlds.begin(); pPostIt!= mvPostItFlds.end() ; pPostIt++)
{
if ((*pPostIt)->GetFmtFld())
aTmp.push_back( (*pPostIt)->GetFmtFld() );
@@ -1291,10 +1304,10 @@ void SwPostItMgr::Delete()
CalcRects();
LayoutPostIts();
}
-
+#if 0
void SwPostItMgr::Hide(SwPostItField* pPostItField )
{
- for(std::list<SwMarginItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(std::list<SwSidebarItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
if ((*i)->GetFmtFld())
{
@@ -1310,10 +1323,10 @@ void SwPostItMgr::Hide(SwPostItField* pPostItField )
LayoutPostIts();
}
-
+#endif
void SwPostItMgr::Hide( const String& rAuthor )
{
- for(SwMarginItem_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(SwSidebarItem_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
if ( (*i)->pPostIt && ((*i)->pPostIt->GetAuthor() == rAuthor) )
{
@@ -1327,7 +1340,7 @@ void SwPostItMgr::Hide( const String& rAuthor )
void SwPostItMgr::Hide()
{
- for(SwMarginItem_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(SwSidebarItem_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
(*i)->bShow = false;
(*i)->pPostIt->HideNote();
@@ -1337,7 +1350,7 @@ void SwPostItMgr::Hide()
void SwPostItMgr::Show()
{
- for(SwMarginItem_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(SwSidebarItem_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
(*i)->bShow = true;
}
@@ -1365,27 +1378,7 @@ void SwPostItMgr::Sort(const short aType)
}
}
-SwMarginWin* SwPostItMgr::GetPostIt(SfxBroadcaster* pBroadcaster) const
-{
- for(const_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
- {
- if ( (*i)->GetBroadCaster() == pBroadcaster)
- return (*i)->pPostIt;
- }
- return NULL;
-}
-
-SwPostIt* SwPostItMgr::GetPostIt(SwPostItField* pFld) const
-{
- for(const_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
- {
- if ( (*i)->GetFmtFld() && ((*i)->GetFmtFld()->GetFld() == pFld) )
- return static_cast<SwPostIt*>((*i)->pPostIt);
- }
- return NULL;
-}
-
-SwMarginWin* SwPostItMgr::GetPostIt( const SfxBroadcaster* pBroadcaster) const
+SwSidebarWin* SwPostItMgr::GetSidebarWin( const SfxBroadcaster* pBroadcaster) const
{
for(const_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
@@ -1395,49 +1388,26 @@ SwMarginWin* SwPostItMgr::GetPostIt( const SfxBroadcaster* pBroadcaster) const
return NULL;
}
-SwPostIt* SwPostItMgr::GetPostIt(const SwPostItField* pFld) const
+sw::annotation::SwAnnotationWin* SwPostItMgr::GetAnnotationWin(const SwPostItField* pFld) const
{
for(const_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
if ( (*i)->GetFmtFld() && ((*i)->GetFmtFld()->GetFld() == pFld))
- return static_cast<SwPostIt*>((*i)->pPostIt);
+ return dynamic_cast<sw::annotation::SwAnnotationWin*>((*i)->pPostIt);
}
return NULL;
}
-bool SwPostItMgr::ShowPreview(const SwField* pFld, SwFmtFld*& pFmtFld) const
-{
- for (unsigned long n=0;n<mPages.size();n++)
- {
- if (mPages[n]->mList->size()>0)
- {
- for(const_iterator i = mPages[n]->mList->begin(); i!= mPages[n]->mList->end(); i++)
- {
- if ( (*i)->GetFmtFld() && ((*i)->GetFmtFld()->GetFld()==pFld) )
- {
- pFmtFld = (*i)->GetFmtFld();
- const long aSidebarheight = mPages[n]->bScrollbar ? mpEditWin->PixelToLogic(Size(0,GetSidebarScrollerHeight())).Height() : 0;
- bool bTopPage = mpEditWin->PixelToLogic(Point(0,(*i)->pPostIt->GetPosPixel().Y())).Y() >= (mPages[n]->mPageRect.Top()+aSidebarheight);
- bool bBottomPage = mpEditWin->PixelToLogic(Point(0,(*i)->pPostIt->GetPosPixel().Y()+(*i)->pPostIt->GetSizePixel().Height())).Y() <= (mPages[n]->mPageRect.Bottom()-aSidebarheight);
- const bool bTopVis = mpEditWin->PixelToLogic(Point(0,(*i)->pPostIt->GetPosPixel().Y())).Y() > mpView->GetVisArea().Top();
- const bool bBottomVis = mpEditWin->PixelToLogic(Point(0,(*i)->pPostIt->GetPosPixel().Y()/*+(*i)->pPostIt->GetSizePixel().Height()*/)).Y() <= mpView->GetVisArea().Bottom();
- return !(bBottomPage && bTopPage && bBottomVis && bTopVis);
- }
- }
- }
- }
- return false;
-}
-
-SwMarginWin* SwPostItMgr::GetNextPostIt(USHORT aDirection, SwMarginWin* aPostIt)
+SwSidebarWin* SwPostItMgr::GetNextPostIt( USHORT aDirection,
+ SwSidebarWin* aPostIt )
{
if (mvPostItFlds.size()>1)
{
- for(SwMarginItem_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(SwSidebarItem_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
if ( (*i)->pPostIt ==aPostIt)
{
- SwMarginItem_iterator iNextPostIt = i;
+ SwSidebarItem_iterator iNextPostIt = i;
if (aDirection==KEY_PAGEUP)
{
if ( iNextPostIt==mvPostItFlds.begin() )
@@ -1470,11 +1440,11 @@ long SwPostItMgr::GetNextBorder()
{
for (unsigned long n=0;n<mPages.size();n++)
{
- for(SwMarginItem_iterator b = mPages[n]->mList->begin(); b!= mPages[n]->mList->end(); b++)
+ for(SwSidebarItem_iterator b = mPages[n]->mList->begin(); b!= mPages[n]->mList->end(); b++)
{
if ((*b)->pPostIt == mpActivePostIt)
{
- SwMarginItem_iterator aNext = b;
+ SwSidebarItem_iterator aNext = b;
aNext++;
bool bFollow = (aNext == mPages[n]->mList->end()) ? false : (*aNext)->pPostIt->IsFollow();
if ( mPages[n]->bScrollbar || bFollow )
@@ -1507,15 +1477,16 @@ void SwPostItMgr::SetShadowState(const SwPostItField* pFld,bool bCursor)
{
// reset old one if still alive
// TODO: does not work properly if mouse and cursor was set
- SwPostIt* pOldPostIt = GetPostIt(mShadowState.mpShadowFld);
+ sw::annotation::SwAnnotationWin* pOldPostIt =
+ GetAnnotationWin(mShadowState.mpShadowFld);
if (pOldPostIt && pOldPostIt->Shadow() && (pOldPostIt->Shadow()->GetShadowState() != SS_EDIT))
- pOldPostIt->SetViewState(SS_NORMAL);
+ pOldPostIt->SetViewState(VS_NORMAL);
}
//set new one, if it is not currently edited
- SwPostIt* pNewPostIt = GetPostIt(pFld);
+ sw::annotation::SwAnnotationWin* pNewPostIt = GetAnnotationWin(pFld);
if (pNewPostIt && pNewPostIt->Shadow() && (pNewPostIt->Shadow()->GetShadowState() != SS_EDIT))
{
- pNewPostIt->SetViewState(SS_VIEW);
+ pNewPostIt->SetViewState(VS_VIEW);
//remember our new field
mShadowState.mpShadowFld = pFld;
mShadowState.bCursor = false;
@@ -1538,10 +1509,10 @@ void SwPostItMgr::SetShadowState(const SwPostItField* pFld,bool bCursor)
if (!mShadowState.bCursor && !mShadowState.bMouse)
{
// reset old one if still alive
- SwPostIt* pOldPostIt = GetPostIt(mShadowState.mpShadowFld);
+ sw::annotation::SwAnnotationWin* pOldPostIt = GetAnnotationWin(mShadowState.mpShadowFld);
if (pOldPostIt && pOldPostIt->Shadow() && (pOldPostIt->Shadow()->GetShadowState() != SS_EDIT))
{
- pOldPostIt->SetViewState(SS_NORMAL);
+ pOldPostIt->SetViewState(VS_NORMAL);
mShadowState.mpShadowFld = 0;
}
}
@@ -1583,8 +1554,9 @@ bool SwPostItMgr::IsHit(const Point &aPointPixel)
{
Rectangle aRect;
DBG_ASSERT(mPages.size()>nPageNum-1,"SwPostitMgr:: page container size wrong");
- aRect = mPages[nPageNum-1]->bMarginSide ? Rectangle(Point(aPageFrm.Left()-GetSidebarWidth()-GetSidebarBorderWidth(),aPageFrm.Top()),Size(GetSidebarWidth(),aPageFrm.Height())) :
- Rectangle( Point(aPageFrm.Right()+GetSidebarBorderWidth(),aPageFrm.Top()) , Size(GetSidebarWidth(),aPageFrm.Height()));
+ aRect = mPages[nPageNum-1]->eSidebarPosition == sw::sidebarwindows::SIDEBAR_LEFT
+ ? Rectangle(Point(aPageFrm.Left()-GetSidebarWidth()-GetSidebarBorderWidth(),aPageFrm.Top()),Size(GetSidebarWidth(),aPageFrm.Height()))
+ : Rectangle( Point(aPageFrm.Right()+GetSidebarBorderWidth(),aPageFrm.Top()) , Size(GetSidebarWidth(),aPageFrm.Height()));
if (aRect.IsInside(aPoint))
{
// we hit the note's sidebar
@@ -1601,8 +1573,9 @@ bool SwPostItMgr::IsHit(const Point &aPointPixel)
Rectangle SwPostItMgr::GetBottomScrollRect(const unsigned long aPage) const
{
SwRect aPageRect = mPages[aPage-1]->mPageRect;
- Point aPointBottom = mPages[aPage-1]->bMarginSide ? Point(aPageRect.Left() - GetSidebarWidth() - GetSidebarBorderWidth() + mpEditWin->PixelToLogic(Size(2,0)).Width(),aPageRect.Bottom()- mpEditWin->PixelToLogic(Size(0,2+GetSidebarScrollerHeight())).Height()) :
- Point(aPageRect.Right() + GetSidebarBorderWidth() + mpEditWin->PixelToLogic(Size(2,0)).Width(),aPageRect.Bottom()- mpEditWin->PixelToLogic(Size(0,2+GetSidebarScrollerHeight())).Height());
+ Point aPointBottom = mPages[aPage-1]->eSidebarPosition == sw::sidebarwindows::SIDEBAR_LEFT
+ ? Point(aPageRect.Left() - GetSidebarWidth() - GetSidebarBorderWidth() + mpEditWin->PixelToLogic(Size(2,0)).Width(),aPageRect.Bottom()- mpEditWin->PixelToLogic(Size(0,2+GetSidebarScrollerHeight())).Height())
+ : Point(aPageRect.Right() + GetSidebarBorderWidth() + mpEditWin->PixelToLogic(Size(2,0)).Width(),aPageRect.Bottom()- mpEditWin->PixelToLogic(Size(0,2+GetSidebarScrollerHeight())).Height());
Size aSize(GetSidebarWidth() - mpEditWin->PixelToLogic(Size(4,0)).Width(), mpEditWin->PixelToLogic(Size(0,GetSidebarScrollerHeight())).Height()) ;
return Rectangle(aPointBottom,aSize);
@@ -1611,8 +1584,9 @@ Rectangle SwPostItMgr::GetBottomScrollRect(const unsigned long aPage) const
Rectangle SwPostItMgr::GetTopScrollRect(const unsigned long aPage) const
{
SwRect aPageRect = mPages[aPage-1]->mPageRect;
- Point aPointTop = mPages[aPage-1]->bMarginSide ? Point(aPageRect.Left() - GetSidebarWidth() -GetSidebarBorderWidth()+ mpEditWin->PixelToLogic(Size(2,0)).Width(),aPageRect.Top() + mpEditWin->PixelToLogic(Size(0,2)).Height()) :
- Point(aPageRect.Right() + GetSidebarBorderWidth() + mpEditWin->PixelToLogic(Size(2,0)).Width(),aPageRect.Top() + mpEditWin->PixelToLogic(Size(0,2)).Height());
+ Point aPointTop = mPages[aPage-1]->eSidebarPosition == sw::sidebarwindows::SIDEBAR_LEFT
+ ? Point(aPageRect.Left() - GetSidebarWidth() -GetSidebarBorderWidth()+ mpEditWin->PixelToLogic(Size(2,0)).Width(),aPageRect.Top() + mpEditWin->PixelToLogic(Size(0,2)).Height())
+ : Point(aPageRect.Right() + GetSidebarBorderWidth() + mpEditWin->PixelToLogic(Size(2,0)).Width(),aPageRect.Top() + mpEditWin->PixelToLogic(Size(0,2)).Height());
Size aSize(GetSidebarWidth() - mpEditWin->PixelToLogic(Size(4,0)).Width(), mpEditWin->PixelToLogic(Size(0,GetSidebarScrollerHeight())).Height()) ;
return Rectangle(aPointTop,aSize);
}
@@ -1622,11 +1596,13 @@ Rectangle SwPostItMgr::GetTopScrollRect(const unsigned long aPage) const
bool SwPostItMgr::ScrollbarHit(const unsigned long aPage,const Point &aPoint)
{
SwRect aPageRect = mPages[aPage-1]->mPageRect;
- Point aPointBottom = mPages[aPage-1]->bMarginSide ? Point(aPageRect.Left() - GetSidebarWidth()-GetSidebarBorderWidth() + mpEditWin->PixelToLogic(Size(2,0)).Width(),aPageRect.Bottom()- mpEditWin->PixelToLogic(Size(0,2+GetSidebarScrollerHeight())).Height()) :
- Point(aPageRect.Right() + GetSidebarBorderWidth()+ mpEditWin->PixelToLogic(Size(2,0)).Width(),aPageRect.Bottom()- mpEditWin->PixelToLogic(Size(0,2+GetSidebarScrollerHeight())).Height());
+ Point aPointBottom = mPages[aPage-1]->eSidebarPosition == sw::sidebarwindows::SIDEBAR_LEFT
+ ? Point(aPageRect.Left() - GetSidebarWidth()-GetSidebarBorderWidth() + mpEditWin->PixelToLogic(Size(2,0)).Width(),aPageRect.Bottom()- mpEditWin->PixelToLogic(Size(0,2+GetSidebarScrollerHeight())).Height())
+ : Point(aPageRect.Right() + GetSidebarBorderWidth()+ mpEditWin->PixelToLogic(Size(2,0)).Width(),aPageRect.Bottom()- mpEditWin->PixelToLogic(Size(0,2+GetSidebarScrollerHeight())).Height());
- Point aPointTop = mPages[aPage-1]->bMarginSide ? Point(aPageRect.Left() - GetSidebarWidth()-GetSidebarBorderWidth()+ mpEditWin->PixelToLogic(Size(2,0)).Width(),aPageRect.Top() + mpEditWin->PixelToLogic(Size(0,2)).Height()) :
- Point(aPageRect.Right()+GetSidebarBorderWidth()+ mpEditWin->PixelToLogic(Size(2,0)).Width(),aPageRect.Top() + mpEditWin->PixelToLogic(Size(0,2)).Height());
+ Point aPointTop = mPages[aPage-1]->eSidebarPosition == sw::sidebarwindows::SIDEBAR_LEFT
+ ? Point(aPageRect.Left() - GetSidebarWidth()-GetSidebarBorderWidth()+ mpEditWin->PixelToLogic(Size(2,0)).Width(),aPageRect.Top() + mpEditWin->PixelToLogic(Size(0,2)).Height())
+ : Point(aPageRect.Right()+GetSidebarBorderWidth()+ mpEditWin->PixelToLogic(Size(2,0)).Width(),aPageRect.Top() + mpEditWin->PixelToLogic(Size(0,2)).Height());
Rectangle aRectBottom(GetBottomScrollRect(aPage));
Rectangle aRectTop(GetTopScrollRect(aPage));
@@ -1657,8 +1633,8 @@ void SwPostItMgr::CorrectPositions()
return;
// find first valid note
- SwMarginWin *pFirstPostIt = 0;
- for(SwMarginItem_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ SwSidebarWin *pFirstPostIt = 0;
+ for(SwSidebarItem_iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
{
pFirstPostIt = (*i)->pPostIt;
if (pFirstPostIt)
@@ -1669,28 +1645,36 @@ void SwPostItMgr::CorrectPositions()
if (!pFirstPostIt)
return;
- // yeah, I know, if this is a left page it could be wrong, but finding the page and the note is probably not even faster than just doing it
- const long aAnkorX = mpEditWin->LogicToPixel( Point((long)(pFirstPostIt->Ankor()->GetSixthPosition().getX()),0)).X();
- const long aAnkorY = mpEditWin->LogicToPixel( Point(0,(long)(pFirstPostIt->Ankor()->GetSixthPosition().getY()))).Y() + 1;
- if (Point(aAnkorX,aAnkorY) != pFirstPostIt->GetPosPixel())
- {
- long aAnkorPosX = 0;
- long aAnkorPosY = 0;
- for (unsigned long n=0;n<mPages.size();n++)
- {
- for(SwMarginItem_iterator i = mPages[n]->mList->begin(); i!= mPages[n]->mList->end(); i++)
- {
- if ((*i)->bShow && (*i)->pPostIt)
- {
- aAnkorPosX = mPages[n]->bMarginSide ?
- mpEditWin->LogicToPixel( Point((long)((*i)->pPostIt->Ankor()->GetSeventhPosition().getX()),0)).X() :
- mpEditWin->LogicToPixel( Point((long)((*i)->pPostIt->Ankor()->GetSixthPosition().getX()),0)).X();
- aAnkorPosY = mpEditWin->LogicToPixel( Point(0,(long)((*i)->pPostIt->Ankor()->GetSixthPosition().getY()))).Y() + 1;
- (*i)->pPostIt->SetPosPixel(Point(aAnkorPosX,aAnkorPosY));
+ // yeah, I know, if this is a left page it could be wrong, but finding the page and the note is probably not even faster than just doing it
+ // --> OD 2010-06-03 #i111964# - check, if anchor overlay object exists.
+ const long aAnchorX = pFirstPostIt->Anchor()
+ ? mpEditWin->LogicToPixel( Point((long)(pFirstPostIt->Anchor()->GetSixthPosition().getX()),0)).X()
+ : 0;
+ const long aAnchorY = pFirstPostIt->Anchor()
+ ? mpEditWin->LogicToPixel( Point(0,(long)(pFirstPostIt->Anchor()->GetSixthPosition().getY()))).Y() + 1
+ : 0;
+ // <--
+ if (Point(aAnchorX,aAnchorY) != pFirstPostIt->GetPosPixel())
+ {
+ long aAnchorPosX = 0;
+ long aAnchorPosY = 0;
+ for (unsigned long n=0;n<mPages.size();n++)
+ {
+ for(SwSidebarItem_iterator i = mPages[n]->mList->begin(); i!= mPages[n]->mList->end(); i++)
+ {
+ // --> OD 2010-06-03 #i111964# - check, if anchor overlay object exists.
+ if ( (*i)->bShow && (*i)->pPostIt && (*i)->pPostIt->Anchor() )
+ // <--
+ {
+ aAnchorPosX = mPages[n]->eSidebarPosition == sw::sidebarwindows::SIDEBAR_LEFT
+ ? mpEditWin->LogicToPixel( Point((long)((*i)->pPostIt->Anchor()->GetSeventhPosition().getX()),0)).X()
+ : mpEditWin->LogicToPixel( Point((long)((*i)->pPostIt->Anchor()->GetSixthPosition().getX()),0)).X();
+ aAnchorPosY = mpEditWin->LogicToPixel( Point(0,(long)((*i)->pPostIt->Anchor()->GetSixthPosition().getY()))).Y() + 1;
+ (*i)->pPostIt->SetPosPixel(Point(aAnchorPosX,aAnchorPosY));
}
- }
- }
- }
+ }
+ }
+ }
}
@@ -1757,29 +1741,29 @@ Color SwPostItMgr::GetColorLight(sal_uInt16 aAuthorIndex)
return Color(COL_WHITE);
}
-Color SwPostItMgr::GetColorAnkor(sal_uInt16 aAuthorIndex)
+Color SwPostItMgr::GetColorAnchor(sal_uInt16 aAuthorIndex)
{
if (!Application::GetSettings().GetStyleSettings().GetHighContrastMode())
{
- static const Color aArrayAnkor[] = {
+ static const Color aArrayAnchor[] = {
COL_AUTHOR1_DARK, COL_AUTHOR2_DARK, COL_AUTHOR3_DARK,
COL_AUTHOR4_DARK, COL_AUTHOR5_DARK, COL_AUTHOR6_DARK,
COL_AUTHOR7_DARK, COL_AUTHOR8_DARK, COL_AUTHOR9_DARK };
- return Color( aArrayAnkor[ aAuthorIndex % (sizeof( aArrayAnkor ) / sizeof( aArrayAnkor[0] ))]);
+ return Color( aArrayAnchor[ aAuthorIndex % (sizeof( aArrayAnchor ) / sizeof( aArrayAnchor[0] ))]);
}
else
return Color(COL_WHITE);
}
-void SwPostItMgr::SetActivePostIt( SwMarginWin* p)
+void SwPostItMgr::SetActiveSidebarWin( SwSidebarWin* p)
{
if ( p != mpActivePostIt )
{
// we need the temp variable so we can set mpActivePostIt before we call DeactivatePostIt
// therefore we get a new layout in DOCCHANGED when switching from postit to document,
// otherwise, GetActivePostIt() would still hold our old postit
- SwMarginWin* pActive = mpActivePostIt;
+ SwSidebarWin* pActive = mpActivePostIt;
mpActivePostIt = p;
if (pActive)
{
@@ -1816,7 +1800,7 @@ IMPL_LINK( SwPostItMgr, CalcHdl, void*, /* pVoid*/ )
void SwPostItMgr::Rescale()
{
- for(std::list<SwMarginItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(std::list<SwSidebarItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
if ( (*i)->pPostIt )
(*i)->pPostIt->Rescale();
}
@@ -1824,7 +1808,7 @@ void SwPostItMgr::Rescale()
sal_Int32 SwPostItMgr::GetInitialAnchorDistance() const
{
const Fraction& f( mpEditWin->GetMapMode().GetScaleY() );
- return POSTIT_INITIAL_ANKOR_DISTANCE * f.GetNumerator() / f.GetDenominator();
+ return POSTIT_INITIAL_ANCHOR_DISTANCE * f.GetNumerator() / f.GetDenominator();
}
sal_Int32 SwPostItMgr::GetSpaceBetween() const
@@ -1853,21 +1837,21 @@ sal_Int32 SwPostItMgr::GetSidebarScrollerHeight() const
void SwPostItMgr::SetSpellChecking()
{
- for(std::list<SwMarginItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(std::list<SwSidebarItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
if ( (*i)->pPostIt )
(*i)->pPostIt->SetSpellChecking();
}
void SwPostItMgr::SetReadOnlyState()
{
- for(std::list<SwMarginItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(std::list<SwSidebarItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
if ( (*i)->pPostIt )
(*i)->pPostIt->SetReadonly( mbReadOnly );
}
void SwPostItMgr::CheckMetaText()
{
- for(std::list<SwMarginItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
+ for(std::list<SwSidebarItem*>::iterator i = mvPostItFlds.begin(); i!= mvPostItFlds.end() ; i++)
if ( (*i)->pPostIt )
(*i)->pPostIt->CheckMetaText();
@@ -1875,45 +1859,45 @@ void SwPostItMgr::CheckMetaText()
sal_uInt16 SwPostItMgr::Replace(SvxSearchItem* pItem)
{
- SwMarginWin* pWin = GetActivePostIt();
- sal_uInt16 aResult = pWin->View()->StartSearchAndReplace( *pItem );
+ SwSidebarWin* pWin = GetActiveSidebarWin();
+ sal_uInt16 aResult = pWin->GetOutlinerView()->StartSearchAndReplace( *pItem );
if (!aResult)
- SetActivePostIt(0);
+ SetActiveSidebarWin(0);
return aResult;
}
sal_uInt16 SwPostItMgr::FinishSearchReplace(const ::com::sun::star::util::SearchOptions& rSearchOptions, bool bSrchForward)
{
- SwMarginWin* pWin = GetActivePostIt();
+ SwSidebarWin* pWin = GetActiveSidebarWin();
SvxSearchItem aItem(SID_SEARCH_ITEM );
aItem.SetSearchOptions(rSearchOptions);
aItem.SetBackward(!bSrchForward);
- sal_uInt16 aResult = pWin->View()->StartSearchAndReplace( aItem );
+ sal_uInt16 aResult = pWin->GetOutlinerView()->StartSearchAndReplace( aItem );
if (!aResult)
- SetActivePostIt(0);
+ SetActiveSidebarWin(0);
return aResult;
}
sal_uInt16 SwPostItMgr::SearchReplace(const SwFmtFld &pFld, const ::com::sun::star::util::SearchOptions& rSearchOptions, bool bSrchForward)
{
sal_uInt16 aResult = 0;
- SwMarginWin* pWin = GetPostIt(&pFld);
+ SwSidebarWin* pWin = GetSidebarWin(&pFld);
if (pWin)
{
- ESelection aOldSelection = pWin->View()->GetSelection();
+ ESelection aOldSelection = pWin->GetOutlinerView()->GetSelection();
if (bSrchForward)
- pWin->View()->SetSelection(ESelection(0,0,0,0));
+ pWin->GetOutlinerView()->SetSelection(ESelection(0,0,0,0));
else
- pWin->View()->SetSelection(ESelection(0xFFFF,0xFFFF,0xFFFF,0xFFFF));
+ pWin->GetOutlinerView()->SetSelection(ESelection(0xFFFF,0xFFFF,0xFFFF,0xFFFF));
SvxSearchItem aItem(SID_SEARCH_ITEM );
aItem.SetSearchOptions(rSearchOptions);
aItem.SetBackward(!bSrchForward);
- aResult = pWin->View()->StartSearchAndReplace( aItem );
+ aResult = pWin->GetOutlinerView()->StartSearchAndReplace( aItem );
if (!aResult)
- pWin->View()->SetSelection(aOldSelection);
+ pWin->GetOutlinerView()->SetSelection(aOldSelection);
else
{
- SetActivePostIt(pWin);
+ SetActiveSidebarWin(pWin);
MakeVisible(pWin);
}
}
@@ -1945,6 +1929,121 @@ void SwPostItMgr::AssureStdModeAtShell()
}
}
+bool SwPostItMgr::HasActiveSidebarWin() const
+{
+ return mpActivePostIt != 0;
+}
+
+bool SwPostItMgr::HasActiveAnnotationWin() const
+{
+ return HasActiveSidebarWin() &&
+ dynamic_cast<sw::annotation::SwAnnotationWin*>(mpActivePostIt) != 0;
+}
+
+void SwPostItMgr::GrabFocusOnActiveSidebarWin()
+{
+ if ( HasActiveSidebarWin() )
+ {
+ mpActivePostIt->GrabFocus();
+ }
+}
+
+void SwPostItMgr::UpdateDataOnActiveSidebarWin()
+{
+ if ( HasActiveSidebarWin() )
+ {
+ mpActivePostIt->UpdateData();
+ }
+}
+
+void SwPostItMgr::DeleteActiveSidebarWin()
+{
+ if ( HasActiveSidebarWin() )
+ {
+ mpActivePostIt->Delete();
+ }
+}
+
+void SwPostItMgr::HideActiveSidebarWin()
+{
+ if ( HasActiveSidebarWin() )
+ {
+ mpActivePostIt->Hide();
+ }
+}
+
+void SwPostItMgr::ToggleInsModeOnActiveSidebarWin()
+{
+ if ( HasActiveSidebarWin() )
+ {
+ mpActivePostIt->ToggleInsMode();
+ }
+}
+
+void SwPostItMgr::ConnectSidebarWinToFrm( const SwFrm& rFrm,
+ const SwFmtFld& rFmtFld,
+ SwSidebarWin& rSidebarWin )
+{
+ if ( mpFrmSidebarWinContainer == 0 )
+ {
+ mpFrmSidebarWinContainer = new SwFrmSidebarWinContainer();
+ }
+
+ const bool bInserted = mpFrmSidebarWinContainer->insert( rFrm, rFmtFld, rSidebarWin );
+ if ( bInserted &&
+ mpWrtShell->GetAccessibleMap() )
+ {
+ mpWrtShell->GetAccessibleMap()->InvalidatePosOrSize( 0, 0, &rSidebarWin, SwRect() );
+ }
+}
+
+void SwPostItMgr::DisconnectSidebarWinFromFrm( const SwFrm& rFrm,
+ SwSidebarWin& rSidebarWin )
+{
+ if ( mpFrmSidebarWinContainer != 0 )
+ {
+ const bool bRemoved = mpFrmSidebarWinContainer->remove( rFrm, rSidebarWin );
+ if ( bRemoved &&
+ mpWrtShell->GetAccessibleMap() )
+ {
+ mpWrtShell->GetAccessibleMap()->Dispose( 0, 0, &rSidebarWin );
+ }
+ }
+}
+
+bool SwPostItMgr::HasFrmConnectedSidebarWins( const SwFrm& rFrm )
+{
+ bool bRet( false );
+
+ if ( mpFrmSidebarWinContainer != 0 )
+ {
+ bRet = !mpFrmSidebarWinContainer->empty( rFrm );
+ }
+
+ return bRet;
+}
+
+Window* SwPostItMgr::GetSidebarWinForFrmByIndex( const SwFrm& rFrm,
+ const sal_Int32 nIndex )
+{
+ Window* pSidebarWin( 0 );
+
+ if ( mpFrmSidebarWinContainer != 0 )
+ {
+ pSidebarWin = mpFrmSidebarWinContainer->get( rFrm, nIndex );
+ }
+
+ return pSidebarWin;
+}
+
+void SwPostItMgr::GetAllSidebarWinForFrm( const SwFrm& rFrm,
+ std::vector< Window* >* pChildren )
+{
+ if ( mpFrmSidebarWinContainer != 0 )
+ {
+ mpFrmSidebarWinContainer->getAll( rFrm, pChildren );
+ }
+}
+
void SwNoteProps::Commit() {}
void SwNoteProps::Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& ) {}
-
diff --git a/sw/source/ui/docvw/ShadowOverlayObject.cxx b/sw/source/ui/docvw/ShadowOverlayObject.cxx
new file mode 100644
index 000000000000..b11fc914b5fd
--- /dev/null
+++ b/sw/source/ui/docvw/ShadowOverlayObject.cxx
@@ -0,0 +1,268 @@
+/************************************************************************* *
+ *
+ * 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: postit.cxx,v $
+ * $Revision: 1.8.42.11 $
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+
+#include "precompiled_sw.hxx"
+
+#include <ShadowOverlayObject.hxx>
+
+#include <view.hxx>
+#include <svx/sdrpaintwindow.hxx>
+#include <svx/svdview.hxx>
+#include <svx/sdr/overlay/overlaymanager.hxx>
+
+#include <sw_primitivetypes2d.hxx>
+#include <drawinglayer/primitive2d/primitivetools2d.hxx>
+#include <drawinglayer/primitive2d/fillgradientprimitive2d.hxx>
+
+namespace sw { namespace sidebarwindows {
+
+//////////////////////////////////////////////////////////////////////////////
+// helper SwPostItShadowPrimitive
+//
+// Used to allow view-dependent primitive definition. For that purpose, the
+// initially created primitive (this one) always has to be view-independent,
+// but the decomposition is made view-dependent. Very simple primitive which
+// just remembers the discrete data and applies it at decomposition time.
+
+class ShadowPrimitive : public drawinglayer::primitive2d::DiscreteMetricDependentPrimitive2D
+{
+private:
+ basegfx::B2DPoint maBasePosition;
+ basegfx::B2DPoint maSecondPosition;
+ ShadowState maShadowState;
+
+protected:
+ virtual drawinglayer::primitive2d::Primitive2DSequence create2DDecomposition(
+ const drawinglayer::geometry::ViewInformation2D& rViewInformation) const;
+
+public:
+ ShadowPrimitive(
+ const basegfx::B2DPoint& rBasePosition,
+ const basegfx::B2DPoint& rSecondPosition,
+ ShadowState aShadowState)
+ : drawinglayer::primitive2d::DiscreteMetricDependentPrimitive2D(),
+ maBasePosition(rBasePosition),
+ maSecondPosition(rSecondPosition),
+ maShadowState(aShadowState)
+ {}
+
+ // data access
+ const basegfx::B2DPoint& getBasePosition() const { return maBasePosition; }
+ const basegfx::B2DPoint& getSecondPosition() const { return maSecondPosition; }
+ ShadowState getShadowState() const { return maShadowState; }
+
+ virtual bool operator==( const drawinglayer::primitive2d::BasePrimitive2D& rPrimitive ) const;
+
+ DeclPrimitrive2DIDBlock()
+};
+
+drawinglayer::primitive2d::Primitive2DSequence ShadowPrimitive::create2DDecomposition(
+ const drawinglayer::geometry::ViewInformation2D& /*rViewInformation*/) const
+{
+ // get logic sizes in object coordinate system
+ drawinglayer::primitive2d::Primitive2DSequence xRetval;
+ basegfx::B2DRange aRange(getBasePosition());
+
+ switch(maShadowState)
+ {
+ case SS_NORMAL:
+ {
+ aRange.expand(basegfx::B2DTuple(getSecondPosition().getX(), getSecondPosition().getY() + (2.0 * getDiscreteUnit())));
+ const ::drawinglayer::attribute::FillGradientAttribute aFillGradientAttribute(
+ drawinglayer::attribute::GRADIENTSTYLE_LINEAR,
+ 0.0,
+ 0.5,
+ 0.5,
+ 1800.0 * F_PI1800,
+ basegfx::BColor(230.0/255.0,230.0/255.0,230.0/255.0),
+ basegfx::BColor(180.0/255.0,180.0/255.0,180.0/255.0),
+ 2);
+
+ const drawinglayer::primitive2d::Primitive2DReference xReference(
+ new drawinglayer::primitive2d::FillGradientPrimitive2D(
+ aRange,
+ aFillGradientAttribute));
+
+ xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
+ break;
+ }
+ case SS_VIEW:
+ {
+ aRange.expand(basegfx::B2DTuple(getSecondPosition().getX(), getSecondPosition().getY() + (4.0 * getDiscreteUnit())));
+ const drawinglayer::attribute::FillGradientAttribute aFillGradientAttribute(
+ drawinglayer::attribute::GRADIENTSTYLE_LINEAR,
+ 0.0,
+ 0.5,
+ 0.5,
+ 1800.0 * F_PI1800,
+ basegfx::BColor(230.0/255.0,230.0/255.0,230.0/255.0),
+ basegfx::BColor(180.0/255.0,180.0/255.0,180.0/255.0),
+ 4);
+
+ const drawinglayer::primitive2d::Primitive2DReference xReference(
+ new drawinglayer::primitive2d::FillGradientPrimitive2D(
+ aRange,
+ aFillGradientAttribute));
+
+ xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
+ break;
+ }
+ case SS_EDIT:
+ {
+ aRange.expand(basegfx::B2DTuple(getSecondPosition().getX(), getSecondPosition().getY() + (4.0 * getDiscreteUnit())));
+ const drawinglayer::attribute::FillGradientAttribute aFillGradientAttribute(
+ drawinglayer::attribute::GRADIENTSTYLE_LINEAR,
+ 0.0,
+ 0.5,
+ 0.5,
+ 1800.0 * F_PI1800,
+ basegfx::BColor(230.0/255.0,230.0/255.0,230.0/255.0),
+ basegfx::BColor(83.0/255.0,83.0/255.0,83.0/255.0),
+ 4);
+
+ const drawinglayer::primitive2d::Primitive2DReference xReference(
+ new drawinglayer::primitive2d::FillGradientPrimitive2D(
+ aRange,
+ aFillGradientAttribute));
+
+ xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
+ break;
+ }
+ default:
+ {
+ break;
+ }
+ }
+
+ return xRetval;
+}
+
+bool ShadowPrimitive::operator==( const drawinglayer::primitive2d::BasePrimitive2D& rPrimitive ) const
+{
+ if(drawinglayer::primitive2d::DiscreteMetricDependentPrimitive2D::operator==(rPrimitive))
+ {
+ const ShadowPrimitive& rCompare = static_cast< const ShadowPrimitive& >(rPrimitive);
+
+ return (getBasePosition() == rCompare.getBasePosition()
+ && getSecondPosition() == rCompare.getSecondPosition()
+ && getShadowState() == rCompare.getShadowState());
+ }
+
+ return false;
+}
+
+ImplPrimitrive2DIDBlock(ShadowPrimitive, PRIMITIVE2D_ID_SWSIDEBARSHADOWPRIMITIVE)
+
+/****** ShadowOverlayObject **************************************************/
+/* static */ ShadowOverlayObject* ShadowOverlayObject::CreateShadowOverlayObject( SwView& rDocView )
+{
+ ShadowOverlayObject* pShadowOverlayObject( 0 );
+
+ if ( rDocView.GetDrawView() )
+ {
+ SdrPaintWindow* pPaintWindow = rDocView.GetDrawView()->GetPaintWindow(0);
+ if( pPaintWindow )
+ {
+ sdr::overlay::OverlayManager* pOverlayManager = pPaintWindow->GetOverlayManager();
+
+ if ( pOverlayManager )
+ {
+ pShadowOverlayObject = new ShadowOverlayObject( basegfx::B2DPoint(0,0),
+ basegfx::B2DPoint(0,0),
+ Color(0,0,0),
+ SS_NORMAL );
+ pOverlayManager->add(*pShadowOverlayObject);
+ }
+ }
+ }
+
+ return pShadowOverlayObject;
+}
+
+/* static */ void ShadowOverlayObject::DestroyShadowOverlayObject( ShadowOverlayObject* pShadow )
+{
+ if ( pShadow )
+ {
+ if ( pShadow->getOverlayManager() )
+ {
+ pShadow->getOverlayManager()->remove(*pShadow);
+ }
+ delete pShadow;
+ }
+}
+
+ShadowOverlayObject::ShadowOverlayObject( const basegfx::B2DPoint& rBasePos,
+ const basegfx::B2DPoint& rSecondPosition,
+ Color aBaseColor,
+ ShadowState aState )
+ : OverlayObjectWithBasePosition(rBasePos, aBaseColor)
+ , maSecondPosition(rSecondPosition)
+ , mShadowState(aState)
+{
+}
+
+ShadowOverlayObject::~ShadowOverlayObject()
+{
+}
+
+drawinglayer::primitive2d::Primitive2DSequence ShadowOverlayObject::createOverlayObjectPrimitive2DSequence()
+{
+ const drawinglayer::primitive2d::Primitive2DReference aReference(
+ new ShadowPrimitive( getBasePosition(),
+ GetSecondPosition(),
+ GetShadowState() ) );
+ return drawinglayer::primitive2d::Primitive2DSequence(&aReference, 1);
+}
+
+void ShadowOverlayObject::SetShadowState(ShadowState aState)
+{
+ if (mShadowState != aState)
+ {
+ mShadowState = aState;
+
+ objectChange();
+ }
+}
+
+void ShadowOverlayObject::SetPosition( const basegfx::B2DPoint& rPoint1,
+ const basegfx::B2DPoint& rPoint2)
+{
+ if(!rPoint1.equal(getBasePosition()) || !rPoint2.equal(GetSecondPosition()))
+ {
+ maBasePosition = rPoint1;
+ maSecondPosition = rPoint2;
+
+ objectChange();
+ }
+}
+
+} } // end of namespace sw::sidebarwindows
+
diff --git a/sw/source/ui/docvw/ShadowOverlayObject.hxx b/sw/source/ui/docvw/ShadowOverlayObject.hxx
new file mode 100644
index 000000000000..a00aea380fdb
--- /dev/null
+++ b/sw/source/ui/docvw/ShadowOverlayObject.hxx
@@ -0,0 +1,80 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#ifndef _SHADOWOVERLAYOBJECT_HXX
+#define _SHADOWOVERLAYOBJECT_HXX
+
+#include <svx/sdr/overlay/overlayobject.hxx>
+
+class SwView;
+
+namespace sw { namespace sidebarwindows {
+
+enum ShadowState
+{
+ SS_NORMAL,
+ SS_VIEW,
+ SS_EDIT
+};
+
+class ShadowOverlayObject: public sdr::overlay::OverlayObjectWithBasePosition
+{
+ protected:
+ // geometry creation for OverlayObject
+ virtual drawinglayer::primitive2d::Primitive2DSequence createOverlayObjectPrimitive2DSequence();
+
+ private:
+ basegfx::B2DPoint maSecondPosition;
+ ShadowState mShadowState;
+
+ ShadowOverlayObject( const basegfx::B2DPoint& rBasePos,
+ const basegfx::B2DPoint& rSecondPosition,
+ Color aBaseColor,
+ ShadowState aState );
+ virtual ~ShadowOverlayObject();
+
+ public:
+ void SetShadowState(ShadowState aState);
+ inline ShadowState GetShadowState() {return mShadowState;}
+
+ inline const basegfx::B2DPoint& GetSecondPosition() const { return maSecondPosition; }
+ void SetSecondPosition( const basegfx::B2DPoint& rNew );
+
+ void SetPosition( const basegfx::B2DPoint& rPoint1,
+ const basegfx::B2DPoint& rPoint2 );
+
+ static ShadowOverlayObject* CreateShadowOverlayObject( SwView& rDocView );
+ static void DestroyShadowOverlayObject( ShadowOverlayObject* pShadow );
+};
+
+} } // end of namespace sw::sidebarwindows
+
+#endif
diff --git a/sw/source/ui/docvw/SidebarTxtControl.cxx b/sw/source/ui/docvw/SidebarTxtControl.cxx
new file mode 100644
index 000000000000..829c79373a61
--- /dev/null
+++ b/sw/source/ui/docvw/SidebarTxtControl.cxx
@@ -0,0 +1,428 @@
+/************************************************************************* *
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+
+#include "precompiled_sw.hxx"
+
+#include <SidebarTxtControl.hxx>
+
+#include <SidebarTxtControlAcc.hxx>
+
+#include <SidebarWin.hxx>
+#include <PostItMgr.hxx>
+
+#include <cmdid.h>
+#include <docvw.hrc>
+
+#include <unotools/securityoptions.hxx>
+
+#include <sfx2/viewfrm.hxx>
+#include <sfx2/bindings.hxx>
+#include <sfx2/dispatch.hxx>
+#include <sfx2/mnumgr.hxx>
+
+#include <vcl/svapp.hxx>
+#include <vcl/help.hxx>
+#include <vcl/msgbox.hxx>
+#include <vcl/gradient.hxx>
+#include <vcl/scrbar.hxx>
+
+#include <editeng/outliner.hxx>
+#include <editeng/editeng.hxx>
+#include <editeng/editview.hxx>
+#include <editeng/flditem.hxx>
+
+#include <uitool.hxx>
+#include <view.hxx>
+#include <wrtsh.hxx>
+#include <shellres.hxx>
+#include <SwRewriter.hxx>
+#include <undobj.hxx>
+
+namespace css = ::com::sun::star;
+
+namespace sw { namespace sidebarwindows {
+
+SidebarTxtControl::SidebarTxtControl( SwSidebarWin& rSidebarWin,
+ WinBits nBits,
+ SwView& rDocView,
+ SwPostItMgr& rPostItMgr )
+ : Control( &rSidebarWin, nBits )
+ , mrSidebarWin( rSidebarWin )
+ , mrDocView( rDocView )
+ , mrPostItMgr( rPostItMgr )
+ , mbMouseOver( false )
+{
+ AddEventListener( LINK( &mrSidebarWin, SwSidebarWin, WindowEventListener ) );
+}
+
+SidebarTxtControl::~SidebarTxtControl()
+{
+ RemoveEventListener( LINK( &mrSidebarWin, SwSidebarWin, WindowEventListener ) );
+}
+
+OutlinerView* SidebarTxtControl::GetTextView() const
+{
+ return mrSidebarWin.GetOutlinerView();
+}
+
+void SidebarTxtControl::GetFocus()
+{
+ Window::GetFocus();
+ if ( !mrSidebarWin.IsMouseOver() )
+ {
+ Invalidate();
+ }
+}
+
+void SidebarTxtControl::LoseFocus()
+{
+ // write the visible text back into the SwField
+ mrSidebarWin.UpdateData();
+
+ Window::LoseFocus();
+ if ( !mrSidebarWin.IsMouseOver() )
+ {
+ Invalidate();
+ }
+}
+
+void SidebarTxtControl::RequestHelp(const HelpEvent &rEvt)
+{
+ USHORT nResId = 0;
+ switch( mrSidebarWin.GetLayoutStatus() )
+ {
+ case SwPostItHelper::INSERTED: nResId = STR_REDLINE_INSERT; break;
+ case SwPostItHelper::DELETED: nResId = STR_REDLINE_DELETE; break;
+ default: nResId = 0;
+ }
+
+ SwContentAtPos aCntntAtPos( SwContentAtPos::SW_REDLINE );
+ if ( nResId &&
+ mrDocView.GetWrtShell().GetContentAtPos( mrSidebarWin.GetAnchorPos(), aCntntAtPos ) )
+ {
+ String sTxt;
+ sTxt = SW_RESSTR( nResId );
+ sTxt.AppendAscii( RTL_CONSTASCII_STRINGPARAM(": " ));
+ sTxt += aCntntAtPos.aFnd.pRedl->GetAuthorString();
+ sTxt.AppendAscii( RTL_CONSTASCII_STRINGPARAM( " - " ));
+ sTxt += GetAppLangDateTimeString( aCntntAtPos.aFnd.pRedl->GetTimeStamp() );
+ Help::ShowQuickHelp( this,PixelToLogic(Rectangle(rEvt.GetMousePosPixel(),Size(50,10))),sTxt);
+ }
+}
+
+void SidebarTxtControl::Paint( const Rectangle& rRect)
+{
+ if ( !Application::GetSettings().GetStyleSettings().GetHighContrastMode() )
+ {
+ if ( mrSidebarWin.IsMouseOverSidebarWin() ||
+ HasFocus() )
+ {
+ DrawGradient( Rectangle( Point(0,0), PixelToLogic(GetSizePixel()) ),
+ Gradient( GRADIENT_LINEAR,
+ mrSidebarWin.ColorDark(),
+ mrSidebarWin.ColorDark() ) );
+ }
+ else
+ {
+ DrawGradient( Rectangle( Point(0,0), PixelToLogic(GetSizePixel()) ),
+ Gradient( GRADIENT_LINEAR,
+ mrSidebarWin.ColorLight(),
+ mrSidebarWin.ColorDark()));
+ }
+ }
+
+ if ( GetTextView() )
+ {
+ GetTextView()->Paint( rRect );
+ }
+
+ if ( mrSidebarWin.GetLayoutStatus()==SwPostItHelper::DELETED )
+ {
+ SetLineColor(mrSidebarWin.GetChangeColor());
+ DrawLine( PixelToLogic( GetPosPixel() ),
+ PixelToLogic( GetPosPixel() +
+ Point( GetSizePixel().Width(),
+ GetSizePixel().Height() ) ) );
+ DrawLine( PixelToLogic( GetPosPixel() +
+ Point( GetSizePixel().Width(),0) ),
+ PixelToLogic( GetPosPixel() +
+ Point( 0, GetSizePixel().Height() ) ) );
+ }
+}
+
+void SidebarTxtControl::KeyInput( const KeyEvent& rKeyEvt )
+{
+ const KeyCode& rKeyCode = rKeyEvt.GetKeyCode();
+ USHORT nKey = rKeyCode.GetCode();
+ if ( ( rKeyCode.IsMod1() && rKeyCode.IsMod2() ) &&
+ ( (nKey == KEY_PAGEUP) || (nKey == KEY_PAGEDOWN) ) )
+ {
+ mrSidebarWin.SwitchToPostIt(nKey);
+ }
+ else if ( nKey == KEY_ESCAPE ||
+ ( rKeyCode.IsMod1() &&
+ ( nKey == KEY_PAGEUP ||
+ nKey == KEY_PAGEDOWN ) ) )
+ {
+ mrSidebarWin.SwitchToFieldPos();
+ }
+ else if ( nKey == KEY_INSERT )
+ {
+ if ( !rKeyCode.IsMod1() && !rKeyCode.IsMod2() )
+ {
+ mrSidebarWin.ToggleInsMode();
+ }
+ }
+ else
+ {
+ //let's make sure we see our note
+ mrPostItMgr.MakeVisible(&mrSidebarWin);
+
+ long aOldHeight = mrSidebarWin.GetPostItTextHeight();
+ bool bDone = false;
+
+ /// HACK: need to switch off processing of Undo/Redo in Outliner
+ if ( !( (nKey == KEY_Z || nKey == KEY_Y) && rKeyCode.IsMod1()) )
+ {
+ bool bIsProtected = mrSidebarWin.IsProtected();
+ if ( !bIsProtected ||
+ ( bIsProtected &&
+ !mrSidebarWin.GetOutlinerView()->GetOutliner()->GetEditEngine().DoesKeyChangeText(rKeyEvt)) )
+ {
+ bDone = GetTextView() && GetTextView()->PostKeyEvent( rKeyEvt );
+ }
+ else
+ {
+ InfoBox( this, SW_RES( MSG_READONLY_CONTENT )).Execute();
+ }
+ }
+ if (bDone)
+ mrSidebarWin.ResizeIfNeccessary( aOldHeight, mrSidebarWin.GetPostItTextHeight() );
+ else
+ {
+ // write back data first when showing navigator
+ if ( nKey==KEY_F5 )
+ mrSidebarWin.UpdateData();
+ if (!mrDocView.KeyInput(rKeyEvt))
+ Window::KeyInput(rKeyEvt);
+ }
+ }
+
+ mrDocView.GetViewFrame()->GetBindings().InvalidateAll(FALSE);
+}
+
+void SidebarTxtControl::MouseMove( const MouseEvent& rMEvt )
+{
+ if ( GetTextView() )
+ {
+ OutlinerView* pOutlinerView( GetTextView() );
+ pOutlinerView->MouseMove( rMEvt );
+ // mba: why does OutlinerView not handle the modifier setting?!
+ // this forces the postit to handle *all* pointer types
+ SetPointer( pOutlinerView->GetPointer( rMEvt.GetPosPixel() ) );
+
+ const EditView& aEV = pOutlinerView->GetEditView();
+ const SvxFieldItem* pItem = aEV.GetFieldUnderMousePointer();
+ if ( pItem )
+ {
+ const SvxFieldData* pFld = pItem->GetField();
+ const SvxURLField* pURL = PTR_CAST( SvxURLField, pFld );
+ if ( pURL )
+ {
+ String sURL( pURL->GetURL() );
+ SvtSecurityOptions aSecOpts;
+ if ( aSecOpts.IsOptionSet( SvtSecurityOptions::E_CTRLCLICK_HYPERLINK) )
+ {
+ sURL.InsertAscii( ": ", 0 );
+ sURL.Insert( ViewShell::GetShellRes()->aHyperlinkClick, 0 );
+ }
+ Help::ShowQuickHelp( this,PixelToLogic(Rectangle(GetPosPixel(),Size(50,10))),sURL);
+ }
+ }
+ }
+}
+
+void SidebarTxtControl::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ if ( GetTextView() )
+ {
+ SvtSecurityOptions aSecOpts;
+ bool bExecuteMod = aSecOpts.IsOptionSet( SvtSecurityOptions::E_CTRLCLICK_HYPERLINK);
+
+ if ( !bExecuteMod || (bExecuteMod && rMEvt.GetModifier() == KEY_MOD1))
+ {
+ const EditView& aEV = GetTextView()->GetEditView();
+ const SvxFieldItem* pItem = aEV.GetFieldUnderMousePointer();
+ if ( pItem )
+ {
+ const SvxFieldData* pFld = pItem->GetField();
+ const SvxURLField* pURL = PTR_CAST( SvxURLField, pFld );
+ if ( pURL )
+ {
+ GetTextView()->MouseButtonDown( rMEvt );
+ SwWrtShell &rSh = mrDocView.GetWrtShell();
+ String sURL( pURL->GetURL() );
+ String sTarget( pURL->GetTargetFrame() );
+ ::LoadURL( sURL, &rSh, URLLOAD_NOFILTER, &sTarget);
+ return;
+ }
+ }
+ }
+ }
+
+ GrabFocus();
+ if ( GetTextView() )
+ {
+ GetTextView()->MouseButtonDown( rMEvt );
+ }
+ mrDocView.GetViewFrame()->GetBindings().InvalidateAll(FALSE);
+}
+
+void SidebarTxtControl::MouseButtonUp( const MouseEvent& rMEvt )
+{
+ if ( GetTextView() )
+ GetTextView()->MouseButtonUp( rMEvt );
+}
+
+IMPL_LINK( SidebarTxtControl, OnlineSpellCallback, SpellCallbackInfo*, pInfo )
+{
+ if ( pInfo->nCommand == SPELLCMD_STARTSPELLDLG )
+ {
+ mrDocView.GetViewFrame()->GetDispatcher()->Execute( FN_SPELL_GRAMMAR_DIALOG, SFX_CALLMODE_ASYNCHRON);
+ }
+ return 0;
+}
+
+IMPL_LINK( SidebarTxtControl, Select, Menu*, pSelMenu )
+{
+ mrSidebarWin.ExecuteCommand( pSelMenu->GetCurItemId() );
+ return 0;
+}
+
+void SidebarTxtControl::Command( const CommandEvent& rCEvt )
+{
+ if ( rCEvt.GetCommand() == COMMAND_CONTEXTMENU )
+ {
+ if ( !mrSidebarWin.IsProtected() &&
+ GetTextView() &&
+ GetTextView()->IsWrongSpelledWordAtPos( rCEvt.GetMousePosPixel(),TRUE ))
+ {
+ Link aLink = LINK(this, SidebarTxtControl, OnlineSpellCallback);
+ GetTextView()->ExecuteSpellPopup(rCEvt.GetMousePosPixel(),&aLink);
+ }
+ else
+ {
+ SfxPopupMenuManager* pMgr = mrDocView.GetViewFrame()->GetDispatcher()->Popup(0, this,&rCEvt.GetMousePosPixel());
+ ((PopupMenu*)pMgr->GetSVMenu())->SetSelectHdl( LINK(this, SidebarTxtControl, Select) );
+
+ {
+ XubString aText = ((PopupMenu*)pMgr->GetSVMenu())->GetItemText( FN_DELETE_NOTE_AUTHOR );
+ SwRewriter aRewriter;
+ aRewriter.AddRule(UNDO_ARG1, mrSidebarWin.GetAuthor());
+ aText = aRewriter.Apply(aText);
+ ((PopupMenu*)pMgr->GetSVMenu())->SetItemText(FN_DELETE_NOTE_AUTHOR,aText);
+ }
+
+ Point aPos;
+ if (rCEvt.IsMouseEvent())
+ aPos = rCEvt.GetMousePosPixel();
+ else
+ {
+ const Size aSize = GetSizePixel();
+ aPos = Point( aSize.getWidth()/2, aSize.getHeight()/2 );
+ }
+
+ //!! call different Execute function to get rid of the new thesaurus sub menu
+ //!! pointer created in the call to Popup.
+ //!! Otherwise we would have a memory leak (see also #i107205#)
+ //((PopupMenu*)pMgr->GetSVMenu())->Execute( this, aPos );
+ pMgr->Execute( aPos, this );
+ delete pMgr;
+ }
+ }
+ else
+ if (rCEvt.GetCommand() == COMMAND_WHEEL)
+ {
+ if (mrSidebarWin.IsScrollbarVisible())
+ {
+ const CommandWheelData* pData = rCEvt.GetWheelData();
+ if (pData->IsShift() || pData->IsMod1() || pData->IsMod2())
+ {
+ mrDocView.HandleWheelCommands(rCEvt);
+ }
+ else
+ {
+ HandleScrollCommand( rCEvt, 0 , mrSidebarWin.Scrollbar());
+ }
+ }
+ else
+ {
+ mrDocView.HandleWheelCommands(rCEvt);
+ }
+ }
+ else
+ {
+ if ( GetTextView() )
+ GetTextView()->Command( rCEvt );
+ else
+ Window::Command(rCEvt);
+ }
+}
+
+XubString SidebarTxtControl::GetSurroundingText() const
+{
+ if( GetTextView() )
+ return GetTextView()->GetSurroundingText();
+ else
+ return XubString::EmptyString();
+}
+
+Selection SidebarTxtControl::GetSurroundingTextSelection() const
+{
+ if( GetTextView() )
+ return GetTextView()->GetSurroundingTextSelection();
+ else
+ return Selection( 0, 0 );
+}
+
+css::uno::Reference< css::accessibility::XAccessible > SidebarTxtControl::CreateAccessible()
+{
+
+ SidebarTxtControlAccessible* pAcc( new SidebarTxtControlAccessible( *this ) );
+ css::uno::Reference< css::awt::XWindowPeer > xWinPeer( pAcc );
+ SetWindowPeer( xWinPeer, pAcc );
+
+ css::uno::Reference< css::accessibility::XAccessible > xAcc( xWinPeer, css::uno::UNO_QUERY );
+ return xAcc;
+}
+
+} } // end of namespace sw::sidebarwindows
+
diff --git a/sw/source/ui/docvw/SidebarTxtControl.hxx b/sw/source/ui/docvw/SidebarTxtControl.hxx
new file mode 100644
index 000000000000..08a5de0003c4
--- /dev/null
+++ b/sw/source/ui/docvw/SidebarTxtControl.hxx
@@ -0,0 +1,87 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#ifndef _SIDEBARTXTCONTROL_HXX
+#define _SIDEBARTXTCONTROL_HXX
+
+#include <vcl/ctrl.hxx>
+
+class OutlinerView;
+class SwView;
+class SwPostItMgr;
+class SpellCallbackInfo;
+
+namespace sw { namespace sidebarwindows {
+
+class SwSidebarWin;
+
+class SidebarTxtControl : public Control
+{
+ private:
+ SwSidebarWin& mrSidebarWin;
+ SwView& mrDocView;
+ SwPostItMgr& mrPostItMgr;
+
+ bool mbMouseOver;
+
+ protected:
+ virtual void Paint( const Rectangle& rRect);
+ virtual void KeyInput( const KeyEvent& rKeyEvt );
+ virtual void MouseMove( const MouseEvent& rMEvt );
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void MouseButtonUp( const MouseEvent& rMEvt );
+ virtual void Command( const CommandEvent& rCEvt );
+ virtual void LoseFocus();
+ virtual void RequestHelp(const HelpEvent &rEvt);
+ virtual XubString GetSurroundingText() const;
+ virtual Selection GetSurroundingTextSelection() const;
+
+ DECL_LINK( Select, Menu* );
+
+ public:
+ SidebarTxtControl( SwSidebarWin& rSidebarWin,
+ WinBits nBits,
+ SwView& rDocView,
+ SwPostItMgr& rPostItMgr );
+ ~SidebarTxtControl();
+
+ virtual void GetFocus();
+
+ OutlinerView* GetTextView() const;
+
+ DECL_LINK( OnlineSpellCallback, SpellCallbackInfo*);
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible();
+};
+
+} } // end of namespace sw::sidebarwindows
+
+#endif
diff --git a/sw/source/ui/docvw/SidebarTxtControlAcc.cxx b/sw/source/ui/docvw/SidebarTxtControlAcc.cxx
new file mode 100644
index 000000000000..8b0f0293367c
--- /dev/null
+++ b/sw/source/ui/docvw/SidebarTxtControlAcc.cxx
@@ -0,0 +1,317 @@
+/************************************************************************* *
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+
+#include "precompiled_sw.hxx"
+
+#include <SidebarTxtControlAcc.hxx>
+
+#include <SidebarTxtControl.hxx>
+
+#include <svl/brdcst.hxx>
+#include <toolkit/awt/vclxaccessiblecomponent.hxx>
+#include <editeng/unoedsrc.hxx>
+#include <editeng/unoforou.hxx>
+#include <editeng/unoviwou.hxx>
+#include <editeng/unoedhlp.hxx>
+#include <svx/AccessibleTextHelper.hxx>
+#include <editeng/outliner.hxx>
+
+
+namespace css = ::com::sun::star;
+
+namespace sw { namespace sidebarwindows {
+
+// =============================================================================
+// declaration and implementation of <SvxEditSource>
+// for <::accessibiliy::AccessibleTextHelper> instance
+// =============================================================================
+class SidebarTextEditSource : public SvxEditSource,
+ public SfxBroadcaster
+{
+ public:
+ SidebarTextEditSource( SidebarTxtControl& rSidebarTxtControl );
+ virtual ~SidebarTextEditSource();
+
+ virtual SvxEditSource* Clone() const;
+
+ virtual SvxTextForwarder* GetTextForwarder();
+ virtual SvxViewForwarder* GetViewForwarder();
+ virtual SvxEditViewForwarder* GetEditViewForwarder( sal_Bool bCreate = sal_False );
+
+ virtual void UpdateData();
+
+ virtual SfxBroadcaster& GetBroadcaster() const;
+ DECL_LINK( NotifyHdl, EENotify* );
+
+ private:
+ SidebarTxtControl& mrSidebarTxtControl;
+ SvxOutlinerForwarder mTextForwarder;
+ SvxDrawOutlinerViewForwarder mViewForwarder;
+};
+
+SidebarTextEditSource::SidebarTextEditSource( SidebarTxtControl& rSidebarTxtControl )
+ : SvxEditSource()
+ , mrSidebarTxtControl( rSidebarTxtControl )
+ , mTextForwarder( *(rSidebarTxtControl.GetTextView()->GetOutliner()), NULL )
+ , mViewForwarder( *(rSidebarTxtControl.GetTextView()) )
+{
+ if ( mrSidebarTxtControl.GetTextView() )
+ {
+ mrSidebarTxtControl.GetTextView()->GetOutliner()->SetNotifyHdl( LINK(this, SidebarTextEditSource, NotifyHdl) );
+ }
+}
+
+SidebarTextEditSource::~SidebarTextEditSource()
+{
+ if ( mrSidebarTxtControl.GetTextView() )
+ {
+ mrSidebarTxtControl.GetTextView()->GetOutliner()->SetNotifyHdl( Link() );
+ }
+}
+
+SvxEditSource* SidebarTextEditSource::Clone() const
+{
+ return new SidebarTextEditSource( mrSidebarTxtControl );
+}
+
+SvxTextForwarder* SidebarTextEditSource::GetTextForwarder()
+{
+ return &mTextForwarder;
+}
+
+SvxViewForwarder* SidebarTextEditSource::GetViewForwarder()
+{
+ return &mViewForwarder;
+}
+
+SvxEditViewForwarder* SidebarTextEditSource::GetEditViewForwarder( sal_Bool /*bCreate*/ )
+{
+ return &mViewForwarder;
+}
+
+void SidebarTextEditSource::UpdateData()
+{
+ // nothing to do
+}
+
+SfxBroadcaster& SidebarTextEditSource::GetBroadcaster() const
+{
+ return *( const_cast< SidebarTextEditSource* > (this) );
+}
+
+IMPL_LINK(SidebarTextEditSource, NotifyHdl, EENotify*, pNotify)
+{
+ if ( pNotify )
+ {
+ ::std::auto_ptr< SfxHint > aHint( SvxEditSourceHelper::EENotification2Hint( pNotify ) );
+
+ if( aHint.get() )
+ {
+ Broadcast( *aHint.get() );
+ }
+ }
+
+ return 0;
+}
+
+
+// =============================================================================
+// declaration and implementation of accessible context for <SidebarTxtControl> instance
+// =============================================================================
+class SidebarTxtControlAccessibleContext : public VCLXAccessibleComponent
+{
+ public:
+ explicit SidebarTxtControlAccessibleContext( SidebarTxtControl& rSidebarTxtControl );
+ virtual ~SidebarTxtControlAccessibleContext();
+
+ virtual sal_Int32 SAL_CALL
+ getAccessibleChildCount()
+ throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getAccessibleChild( sal_Int32 i )
+ throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+
+ using WeakAggComponentImplHelperBase::addEventListener;
+ using WeakAggComponentImplHelperBase::removeEventListener;
+
+ virtual void SAL_CALL
+ addEventListener (
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleEventListener >& xListener)
+ throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL
+ removeEventListener (
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleEventListener >& xListener)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ protected:
+ virtual void ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent );
+
+ private:
+ SidebarTxtControl& mrSidebarTxtControl;
+ ::accessibility::AccessibleTextHelper* mpAccessibleTextHelper;
+
+ ::vos::OMutex maMutex;
+
+ void defunc();
+};
+
+SidebarTxtControlAccessibleContext::SidebarTxtControlAccessibleContext( SidebarTxtControl& rSidebarTxtControl )
+ : VCLXAccessibleComponent( rSidebarTxtControl.GetWindowPeer() )
+ , mrSidebarTxtControl( rSidebarTxtControl )
+ , mpAccessibleTextHelper( 0 )
+ , maMutex()
+{
+ ::std::auto_ptr<SvxEditSource> pEditSource(
+ new SidebarTextEditSource( mrSidebarTxtControl ) );
+ mpAccessibleTextHelper = new ::accessibility::AccessibleTextHelper( pEditSource );
+ mpAccessibleTextHelper->SetEventSource( mrSidebarTxtControl.GetWindowPeer() );
+}
+
+SidebarTxtControlAccessibleContext::~SidebarTxtControlAccessibleContext()
+{
+ defunc();
+}
+
+void SidebarTxtControlAccessibleContext::defunc()
+{
+ delete mpAccessibleTextHelper;
+ mpAccessibleTextHelper = 0;
+}
+
+sal_Int32 SAL_CALL SidebarTxtControlAccessibleContext::getAccessibleChildCount()
+ throw (::com::sun::star::uno::RuntimeException)
+{
+ vos::OGuard aGuard( maMutex );
+
+ sal_Int32 nChildCount( 0 );
+
+ if ( mpAccessibleTextHelper )
+ {
+ nChildCount = mpAccessibleTextHelper->GetChildCount();
+ }
+
+ return nChildCount;
+}
+
+css::uno::Reference< css::accessibility::XAccessible > SAL_CALL SidebarTxtControlAccessibleContext::getAccessibleChild( sal_Int32 i )
+ throw ( css::lang::IndexOutOfBoundsException, css::uno::RuntimeException )
+{
+ vos::OGuard aGuard( maMutex );
+
+ css::uno::Reference< css::accessibility::XAccessible > xChild;
+
+ if ( mpAccessibleTextHelper )
+ {
+ xChild = mpAccessibleTextHelper->GetChild( i );
+ }
+
+ return xChild;
+}
+
+void SAL_CALL SidebarTxtControlAccessibleContext::addEventListener (
+ const css::uno::Reference< css::accessibility::XAccessibleEventListener >& xListener)
+ throw (css::uno::RuntimeException)
+{
+ vos::OGuard aGuard( maMutex );
+
+ if ( mpAccessibleTextHelper )
+ {
+ mpAccessibleTextHelper->AddEventListener(xListener);
+ }
+}
+
+void SAL_CALL SidebarTxtControlAccessibleContext::removeEventListener (
+ const css::uno::Reference< css::accessibility::XAccessibleEventListener >& xListener)
+ throw (css::uno::RuntimeException)
+{
+ vos::OGuard aGuard( maMutex );
+
+ if ( mpAccessibleTextHelper )
+ {
+ mpAccessibleTextHelper->RemoveEventListener(xListener);
+ }
+}
+
+void SidebarTxtControlAccessibleContext::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
+{
+ if ( mpAccessibleTextHelper )
+ {
+ switch ( rVclWindowEvent.GetId() )
+ {
+ case VCLEVENT_OBJECT_DYING:
+ {
+ defunc();
+ }
+ break;
+ case VCLEVENT_WINDOW_GETFOCUS:
+ case VCLEVENT_CONTROL_GETFOCUS:
+ {
+ mpAccessibleTextHelper->SetFocus( sal_True );
+ }
+ break;
+ case VCLEVENT_WINDOW_LOSEFOCUS:
+ case VCLEVENT_CONTROL_LOSEFOCUS:
+ {
+ mpAccessibleTextHelper->SetFocus( sal_False );
+ }
+ break;
+ }
+ }
+
+ VCLXAccessibleComponent::ProcessWindowEvent( rVclWindowEvent );
+}
+
+// =============================================================================
+// implementaion of accessible for <SidebarTxtControl> instance
+// =============================================================================
+SidebarTxtControlAccessible::SidebarTxtControlAccessible( SidebarTxtControl& rSidebarTxtControl )
+ : VCLXWindow()
+ , mrSidebarTxtControl( rSidebarTxtControl )
+{
+ SetWindow( &mrSidebarTxtControl );
+}
+
+SidebarTxtControlAccessible::~SidebarTxtControlAccessible()
+{
+}
+
+css::uno::Reference< css::accessibility::XAccessibleContext > SidebarTxtControlAccessible::CreateAccessibleContext()
+{
+ SidebarTxtControlAccessibleContext* pAccContext(
+ new SidebarTxtControlAccessibleContext( mrSidebarTxtControl ) );
+ css::uno::Reference< css::accessibility::XAccessibleContext > xAcc( pAccContext );
+ return xAcc;
+}
+
+} } // end of namespace sw::sidebarwindows
+
diff --git a/sw/source/ui/inc/tbxmgr.hxx b/sw/source/ui/docvw/SidebarTxtControlAcc.hxx
index 43798be42de1..57edc50512d5 100644
--- a/sw/source/ui/inc/tbxmgr.hxx
+++ b/sw/source/ui/docvw/SidebarTxtControlAcc.hxx
@@ -2,10 +2,14 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2000, 2010 Oracle and/or its affiliates.
+ * 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
@@ -24,29 +28,29 @@
* for a copy of the LGPLv3 License.
*
************************************************************************/
-#ifndef _TBXMGR_HXX
-#define _TBXMGR_HXX
-#include <svx/tbxdraw.hxx>
-/*
-class SwPopupWindowTbxMgr : public SvxPopupWindowTbxMgr
+#ifndef _SIDEBARTXTCONTROLACC_HXX
+#define _SIDEBARTXTCONTROLACC_HXX
+
+#include <toolkit/awt/vclxwindow.hxx>
+
+namespace sw { namespace sidebarwindows {
+
+class SidebarTxtControl;
+
+class SidebarTxtControlAccessible : public VCLXWindow
{
- BOOL bWeb:1; //gilt der WebMode?
- ResId aRIdWinTemp;
- ResId aRIdTbxTemp;
- WindowAlign eAlignment;
- SfxBindings& mrBindings;
-
-public:
- SwPopupWindowTbxMgr( USHORT nId,
- WindowAlign eAlign,
- ResId aRIdWin,
- ResId aRIdTbx,
- SfxBindings& rBindings );
-
- virtual void StateChanged(USHORT nSID, SfxItemState eState, const SfxPoolItem* pState);
- virtual SfxPopupWindow* Clone() const;
+ public:
+ explicit SidebarTxtControlAccessible( SidebarTxtControl& rSidebarTxtControl );
+ virtual ~SidebarTxtControlAccessible();
+
+ virtual com::sun::star::uno::Reference< com::sun::star::accessibility::XAccessibleContext >
+ CreateAccessibleContext();
+
+ private:
+ SidebarTxtControl& mrSidebarTxtControl;
};
-*/
-#endif // _TBX_DRAW_HXX
+} } // end of namespace sw::sidebarwindows
+
+#endif
diff --git a/sw/source/ui/docvw/SidebarWin.cxx b/sw/source/ui/docvw/SidebarWin.cxx
new file mode 100644
index 000000000000..dc4f006e2026
--- /dev/null
+++ b/sw/source/ui/docvw/SidebarWin.cxx
@@ -0,0 +1,1392 @@
+/************************************************************************* *
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#include "precompiled_sw.hxx"
+
+#include <SidebarWin.hxx>
+#include <SidebarWinAcc.hxx>
+#include <PostItMgr.hxx>
+
+#include <SidebarTxtControl.hxx>
+#include <AnchorOverlayObject.hxx>
+#include <ShadowOverlayObject.hxx>
+
+#include <annotation.hrc>
+#include <popup.hrc>
+#include <docvw.hrc>
+#include <app.hrc>
+#include <access.hrc>
+
+#include <viewopt.hxx>
+#include <cmdid.h>
+
+#include <editeng/fontitem.hxx>
+#include <editeng/fhgtitem.hxx>
+#include <editeng/langitem.hxx>
+#include <editeng/editview.hxx>
+#include <editeng/outliner.hxx>
+#include <editeng/editeng.hxx>
+#include <editeng/eeitem.hxx>
+
+#include <svl/zforlist.hxx>
+#include <svl/undo.hxx>
+#include <svl/stritem.hxx>
+
+#include <sfx2/viewfrm.hxx>
+#include <sfx2/bindings.hxx>
+#include <sfx2/dispatch.hxx>
+
+#include <vcl/scrbar.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/menubtn.hxx>
+
+#include <edtwin.hxx>
+#include <view.hxx>
+#include <docsh.hxx>
+#include <wrtsh.hxx>
+#include <doc.hxx>
+#include <swmodule.hxx>
+#include <langhelper.hxx>
+
+#include <sw_primitivetypes2d.hxx>
+#include <drawinglayer/primitive2d/primitivetools2d.hxx>
+#include <drawinglayer/primitive2d/fillgradientprimitive2d.hxx>
+#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
+#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
+#include <drawinglayer/primitive2d/shadowprimitive2d.hxx>
+
+namespace css = ::com::sun::star;
+
+namespace sw { namespace sidebarwindows {
+
+#define METABUTTON_WIDTH 16
+#define METABUTTON_HEIGHT 18
+#define METABUTTON_AREA_WIDTH 30
+#define POSTIT_META_HEIGHT (sal_Int32) 30
+#define POSTIT_MINIMUMSIZE_WITHOUT_META 50
+
+#define POSTIT_SHADOW_BRIGHT Color(180,180,180)
+#define POSTIT_SHADOW_DARK Color(83,83,83)
+
+#define EMPTYSTRING rtl::OUString::createFromAscii("")
+
+/************** SwSidebarWin************************************/
+SwSidebarWin::SwSidebarWin( SwEditWin& rEditWin,
+ WinBits nBits,
+ SwPostItMgr& aMgr,
+ SwPostItBits aBits,
+ SwSidebarItem& rSidebarItem )
+ : Window(&rEditWin, nBits)
+ , mrMgr(aMgr)
+ , mrView( rEditWin.GetView() )
+ , nFlags(aBits)
+ , mnEventId(0)
+ , mpOutlinerView(0)
+ , mpOutliner(0)
+ , mpSidebarTxtControl(0)
+ , mpVScrollbar(0)
+ , mpMetadataAuthor(0)
+ , mpMetadataDate(0)
+ , mpMenuButton(0)
+ , mpAnchor(0)
+ , mpShadow(0)
+ , mColorAnchor()
+ , mColorDark()
+ , mColorLight()
+ , mChangeColor()
+ , meSidebarPosition( sw::sidebarwindows::SIDEBAR_NONE )
+ , mPosSize()
+ , mAnchorRect()
+ , mPageBorder( 0 )
+ , mbMouseOver( false )
+ , mLayoutStatus( SwPostItHelper::INVISIBLE )
+ , mbReadonly( false )
+ , mbIsFollow( false )
+ , mrSidebarItem( rSidebarItem )
+ , mpAnchorFrm( rSidebarItem.maLayoutInfo.mpAnchorFrm )
+{
+ mpShadow = ShadowOverlayObject::CreateShadowOverlayObject( mrView );
+ if ( mpShadow )
+ {
+ mpShadow->setVisible(false);
+ }
+
+ mrMgr.ConnectSidebarWinToFrm( *(mrSidebarItem.maLayoutInfo.mpAnchorFrm),
+ *(mrSidebarItem.GetFmtFld()),
+ *this );
+}
+
+SwSidebarWin::~SwSidebarWin()
+{
+ mrMgr.DisconnectSidebarWinFromFrm( *(mrSidebarItem.maLayoutInfo.mpAnchorFrm),
+ *this );
+
+ Disable();
+
+ if ( mpSidebarTxtControl )
+ {
+ if ( mpOutlinerView )
+ {
+ mpOutlinerView->SetWindow( 0 );
+ }
+ delete mpSidebarTxtControl;
+ mpSidebarTxtControl = 0;
+ }
+
+ if ( mpOutlinerView )
+ {
+ delete mpOutlinerView;
+ mpOutlinerView = 0;
+ }
+
+ if (mpOutliner)
+ {
+ delete mpOutliner;
+ mpOutliner = 0;
+ }
+
+ if (mpMetadataAuthor)
+ {
+ mpMetadataAuthor->RemoveEventListener( LINK( this, SwSidebarWin, WindowEventListener ) );
+ delete mpMetadataAuthor;
+ mpMetadataAuthor = 0;
+ }
+
+ if (mpMetadataDate)
+ {
+ mpMetadataDate->RemoveEventListener( LINK( this, SwSidebarWin, WindowEventListener ) );
+ delete mpMetadataDate;
+ mpMetadataDate = 0;
+ }
+
+ if (mpVScrollbar)
+ {
+ mpVScrollbar->RemoveEventListener( LINK( this, SwSidebarWin, WindowEventListener ) );
+ delete mpVScrollbar;
+ mpVScrollbar = 0;
+ }
+
+ AnchorOverlayObject::DestroyAnchorOverlayObject( mpAnchor );
+ mpAnchor = 0;
+
+ ShadowOverlayObject::DestroyShadowOverlayObject( mpShadow );
+ mpShadow = 0;
+
+ delete mpMenuButton;
+ mpMenuButton = 0;
+
+ if (mnEventId)
+ Application::RemoveUserEvent( mnEventId );
+}
+
+void SwSidebarWin::Paint( const Rectangle& rRect)
+{
+ Window::Paint(rRect);
+
+ if (mpMetadataAuthor->IsVisible() )
+ {
+ //draw left over space
+ if ( Application::GetSettings().GetStyleSettings().GetHighContrastMode() )
+ {
+ SetFillColor(COL_BLACK);
+ }
+ else
+ {
+ SetFillColor(mColorDark);
+ }
+ SetLineColor();
+ DrawRect( PixelToLogic(
+ Rectangle( Point( mpMetadataAuthor->GetPosPixel().X() +
+ mpMetadataAuthor->GetSizePixel().Width(),
+ mpMetadataAuthor->GetPosPixel().Y() ),
+ Size( GetMetaButtonAreaWidth(),
+ mpMetadataAuthor->GetSizePixel().Height() +
+ mpMetadataDate->GetSizePixel().Height() ) ) ) );
+ }
+}
+
+void SwSidebarWin::SetPosSizePixelRect( long nX,
+ long nY,
+ long nWidth,
+ long nHeight,
+ const SwRect &aRect,
+ const long aPageBorder)
+{
+ mPosSize = Rectangle(Point(nX,nY),Size(nWidth,nHeight));
+ mAnchorRect = aRect;
+ mPageBorder = aPageBorder;
+}
+
+void SwSidebarWin::SetSize( const Size& rNewSize )
+{
+ mPosSize.SetSize(rNewSize);
+}
+
+void SwSidebarWin::SetVirtualPosSize( const Point& aPoint, const Size& aSize)
+{
+ mPosSize = Rectangle(aPoint,aSize);
+}
+
+void SwSidebarWin::TranslateTopPosition(const long aAmount)
+{
+ mPosSize.Move(0,aAmount);
+}
+
+void SwSidebarWin::ShowAnchorOnly(const Point &aPoint)
+{
+ HideNote();
+ SetPosAndSize();
+ if (mpAnchor)
+ {
+ mpAnchor->SetSixthPosition(basegfx::B2DPoint(aPoint.X(),aPoint.Y()));
+ mpAnchor->SetSeventhPosition(basegfx::B2DPoint(aPoint.X(),aPoint.Y()));
+ mpAnchor->SetAnchorState(AS_ALL);
+ mpAnchor->setVisible(true);
+ }
+ if (mpShadow)
+ mpShadow->setVisible(false);
+}
+
+SfxItemSet SwSidebarWin::DefaultItem()
+{
+ SfxItemSet aItem( mrView.GetDocShell()->GetPool() );
+ aItem.Put(SvxFontHeightItem(200,100,EE_CHAR_FONTHEIGHT));
+ aItem.Put(SvxFontItem(FAMILY_SWISS,GetSettings().GetStyleSettings().GetFieldFont().GetName(),
+ EMPTYSTRING,PITCH_DONTKNOW,RTL_TEXTENCODING_DONTKNOW,EE_CHAR_FONTINFO));
+ return aItem;
+}
+
+void SwSidebarWin::InitControls()
+{
+ AddEventListener( LINK( this, SwSidebarWin, WindowEventListener ) );
+
+ // actual window which holds the user text
+ mpSidebarTxtControl = new SidebarTxtControl( *this,
+ WB_NODIALOGCONTROL,
+ mrView, mrMgr );
+ mpSidebarTxtControl->SetPointer(Pointer(POINTER_TEXT));
+
+ // window controls for author and date
+ mpMetadataAuthor = new Edit( this, 0 );
+ mpMetadataAuthor->SetAccessibleName( SW_RES( STR_ACCESS_ANNOTATION_AUTHOR_NAME ) );
+ mpMetadataAuthor->SetReadOnly();
+ mpMetadataAuthor->AlwaysDisableInput(true);
+ mpMetadataAuthor->SetCallHandlersOnInputDisabled(true);
+ mpMetadataAuthor->AddEventListener( LINK( this, SwSidebarWin, WindowEventListener ) );
+ // we should leave this setting alone, but for this we need a better layout algo
+ // with variable meta size height
+ {
+ AllSettings aSettings = mpMetadataAuthor->GetSettings();
+ StyleSettings aStyleSettings = aSettings.GetStyleSettings();
+ Font aFont = aStyleSettings.GetFieldFont();
+ aFont.SetHeight(8);
+ aStyleSettings.SetFieldFont(aFont);
+ aSettings.SetStyleSettings(aStyleSettings);
+ mpMetadataAuthor->SetSettings(aSettings);
+ }
+
+ mpMetadataDate = new Edit( this, 0 );
+ mpMetadataDate->SetAccessibleName( SW_RES( STR_ACCESS_ANNOTATION_DATE_NAME ) );
+ mpMetadataDate->SetReadOnly();
+ mpMetadataDate->AlwaysDisableInput(true);
+ mpMetadataDate->SetCallHandlersOnInputDisabled(true);
+ mpMetadataDate->AddEventListener( LINK( this, SwSidebarWin, WindowEventListener ) );
+ // we should leave this setting alone, but for this we need a better layout algo
+ // with variable meta size height
+ {
+ AllSettings aSettings = mpMetadataDate->GetSettings();
+ StyleSettings aStyleSettings = aSettings.GetStyleSettings();
+ Font aFont = aStyleSettings.GetFieldFont();
+ aFont.SetHeight(8);
+ aStyleSettings.SetFieldFont(aFont);
+ aSettings.SetStyleSettings(aStyleSettings);
+ mpMetadataDate->SetSettings(aSettings);
+ }
+
+
+ SwDocShell* aShell = mrView.GetDocShell();
+ mpOutliner = new Outliner(&aShell->GetPool(),OUTLINERMODE_TEXTOBJECT);
+ aShell->GetDoc()->SetCalcFieldValueHdl( mpOutliner );
+ mpOutliner->SetUpdateMode( TRUE );
+ Rescale();
+
+ mpOutlinerView = new OutlinerView ( mpOutliner, mpSidebarTxtControl );
+ mpOutlinerView->SetBackgroundColor(COL_TRANSPARENT);
+ mpOutliner->InsertView(mpOutlinerView );
+ mpOutlinerView->SetOutputArea( PixelToLogic( Rectangle(0,0,1,1) ) );
+
+ mpOutlinerView->SetAttribs(DefaultItem());
+
+ // TODO: ??
+ EEHorizontalTextDirection aDefHoriTextDir = Application::GetSettings().GetLayoutRTL() ? EE_HTEXTDIR_R2L : EE_HTEXTDIR_L2R;
+ mpOutliner->SetDefaultHorizontalTextDirection( aDefHoriTextDir );
+
+ //create Scrollbars
+ mpVScrollbar = new ScrollBar(this, WB_3DLOOK |WB_VSCROLL|WB_DRAG);
+ mpVScrollbar->EnableNativeWidget(false);
+ mpVScrollbar->EnableRTL( false );
+ mpVScrollbar->SetScrollHdl(LINK(this, SwSidebarWin, ScrollHdl));
+ mpVScrollbar->EnableDrag();
+ mpVScrollbar->AddEventListener( LINK( this, SwSidebarWin, WindowEventListener ) );
+
+ const SwViewOption* pVOpt = mrView.GetWrtShellPtr()->GetViewOptions();
+ ULONG nCntrl = mpOutliner->GetControlWord();
+ // TODO: crash when AUTOCOMPLETE enabled
+ nCntrl |= EE_CNTRL_MARKFIELDS | EE_CNTRL_PASTESPECIAL | EE_CNTRL_AUTOCORRECT | EV_CNTRL_AUTOSCROLL | EE_CNTRL_URLSFXEXECUTE; // | EE_CNTRL_AUTOCOMPLETE;
+ if (pVOpt->IsFieldShadings())
+ nCntrl |= EE_CNTRL_MARKFIELDS;
+ else
+ nCntrl &= ~EE_CNTRL_MARKFIELDS;
+ if (pVOpt->IsOnlineSpell())
+ nCntrl |= EE_CNTRL_ONLINESPELLING;
+ else
+ nCntrl &= ~EE_CNTRL_ONLINESPELLING;
+ mpOutliner->SetControlWord(nCntrl);
+
+ sal_uInt16 aIndex = SW_MOD()->InsertRedlineAuthor(GetAuthor());
+ SetColor( mrMgr.GetColorDark(aIndex),
+ mrMgr.GetColorLight(aIndex),
+ mrMgr.GetColorAnchor(aIndex));
+
+ CheckMetaText();
+
+ mpMenuButton = CreateMenuButton();
+
+ SetLanguage(GetLanguage());
+ GetOutlinerView()->StartSpeller();
+ SetPostItText();
+ Engine()->CompleteOnlineSpelling();
+
+ mpSidebarTxtControl->Show();
+ mpMetadataAuthor->Show();
+ mpMetadataDate->Show();
+ mpVScrollbar->Show();
+}
+
+void SwSidebarWin::CheckMetaText()
+{
+ const LocaleDataWrapper& rLocalData = SvtSysLocale().GetLocaleData();
+ String sMeta = GetAuthor();
+ if (sMeta.Len() == 0)
+ {
+ sMeta = String(SW_RES(STR_NOAUTHOR));
+ }
+ else if (sMeta.Len() > 22)
+ {
+ sMeta.Erase(20);
+ sMeta = sMeta + rtl::OUString::createFromAscii("...");
+ }
+ if ( mpMetadataAuthor->GetText() != sMeta )
+ {
+ mpMetadataAuthor->SetText(sMeta);
+ }
+
+ Date aDate = GetDate();
+ if (aDate==Date())
+ {
+ sMeta = String(SW_RES(STR_POSTIT_TODAY));
+ }
+ else if (aDate == Date(Date()-1))
+ {
+ sMeta = String(SW_RES(STR_POSTIT_YESTERDAY));
+ }
+ else if (aDate.IsValid() )
+ {
+ sMeta = rLocalData.getDate(aDate);
+ }
+ else
+ {
+ sMeta = String(SW_RES(STR_NODATE));
+ }
+ if (GetTime()!=0)
+ {
+ sMeta = sMeta + rtl::OUString::createFromAscii(" ") + rLocalData.getTime( GetTime(),false );
+ }
+ if ( mpMetadataDate->GetText() != sMeta )
+ {
+ mpMetadataDate->SetText(sMeta);
+ }
+
+}
+
+void SwSidebarWin::Rescale()
+{
+ MapMode aMode = GetParent()->GetMapMode();
+ aMode.SetOrigin( Point() );
+ mpOutliner->SetRefMapMode( aMode );
+ SetMapMode( aMode );
+ mpSidebarTxtControl->SetMapMode( aMode );
+ if ( mpMetadataAuthor )
+ {
+ Font aFont( mpMetadataAuthor->GetSettings().GetStyleSettings().GetFieldFont() );
+ sal_Int32 nHeight = aFont.GetHeight();
+ nHeight = nHeight * aMode.GetScaleY().GetNumerator() / aMode.GetScaleY().GetDenominator();
+ aFont.SetHeight( nHeight );
+ mpMetadataAuthor->SetControlFont( aFont );
+ }
+ if ( mpMetadataDate )
+ {
+ Font aFont( mpMetadataDate->GetSettings().GetStyleSettings().GetFieldFont() );
+ sal_Int32 nHeight = aFont.GetHeight();
+ nHeight = nHeight * aMode.GetScaleY().GetNumerator() / aMode.GetScaleY().GetDenominator();
+ aFont.SetHeight( nHeight );
+ mpMetadataDate->SetControlFont( aFont );
+ }
+}
+
+void SwSidebarWin::SetPosAndSize()
+{
+ bool bChange = false;
+
+ if (GetSizePixel() != mPosSize.GetSize())
+ {
+ bChange = true;
+ SetSizePixel(mPosSize.GetSize());
+ DoResize();
+ }
+
+ if (GetPosPixel().X() != mPosSize.TopLeft().X() || (abs(GetPosPixel().Y() - mPosSize.TopLeft().Y()) > 5) )
+ {
+ bChange = true;
+ SetPosPixel(mPosSize.TopLeft());
+
+ Point aLineStart;
+ Point aLineEnd ;
+ switch ( meSidebarPosition )
+ {
+ case sw::sidebarwindows::SIDEBAR_LEFT:
+ {
+ aLineStart = EditWin()->PixelToLogic( Point(GetPosPixel().X()+GetSizePixel().Width(),GetPosPixel().Y()-1) );
+ aLineEnd = EditWin()->PixelToLogic( Point(GetPosPixel().X(),GetPosPixel().Y()-1) );
+ }
+ break;
+ case sw::sidebarwindows::SIDEBAR_RIGHT:
+ {
+ aLineStart = EditWin()->PixelToLogic( Point(GetPosPixel().X(),GetPosPixel().Y()-1) );
+ aLineEnd = EditWin()->PixelToLogic( Point(GetPosPixel().X()+GetSizePixel().Width(),GetPosPixel().Y()-1) );
+ }
+ break;
+ default:
+ ASSERT( false,
+ "<SwSidebarWin::SetPosAndSize()> - unexpected position of sidebar" );
+ break;
+ }
+
+ if (!IsPreview())
+ {
+ if (mpAnchor)
+ {
+ mpAnchor->SetAllPosition( basegfx::B2DPoint( mAnchorRect.Left() , mAnchorRect.Bottom() - 5* 15),
+ basegfx::B2DPoint( mAnchorRect.Left()-5*15 , mAnchorRect.Bottom()+5*15),
+ basegfx::B2DPoint( mAnchorRect.Left()+5*15 , mAnchorRect.Bottom()+5*15),
+ basegfx::B2DPoint( mAnchorRect.Left(), mAnchorRect.Bottom()+2*15),
+ basegfx::B2DPoint( mPageBorder ,mAnchorRect.Bottom()+2*15),
+ basegfx::B2DPoint( aLineStart.X(),aLineStart.Y()),
+ basegfx::B2DPoint( aLineEnd.X(),aLineEnd.Y()));
+ mpAnchor->SetHeight(mAnchorRect.Height());
+ }
+ else
+ {
+ mpAnchor = AnchorOverlayObject::CreateAnchorOverlayObject( mrView,
+ mAnchorRect,
+ mPageBorder,
+ aLineStart,
+ aLineEnd,
+ mColorAnchor );
+ if ( mpAnchor )
+ {
+ mpAnchor->SetHeight(mAnchorRect.Height());
+ mpAnchor->setVisible(true);
+ mpAnchor->SetAnchorState(AS_TRI);
+ if (HasChildPathFocus())
+ {
+ mpAnchor->setLineSolid(true);
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ if ( mpAnchor &&
+ ( mpAnchor->getBasePosition() != basegfx::B2DPoint( mAnchorRect.Left() , mAnchorRect.Bottom()-5*15) ) )
+ {
+ mpAnchor->SetTriPosition( basegfx::B2DPoint( mAnchorRect.Left() , mAnchorRect.Bottom() - 5* 15),
+ basegfx::B2DPoint( mAnchorRect.Left()-5*15 , mAnchorRect.Bottom()+5*15),
+ basegfx::B2DPoint( mAnchorRect.Left()+5*15 , mAnchorRect.Bottom()+5*15),
+ basegfx::B2DPoint( mAnchorRect.Left(), mAnchorRect.Bottom()+2*15),
+ basegfx::B2DPoint( mPageBorder , mAnchorRect.Bottom()+2*15));
+ }
+ }
+
+ if (bChange)
+ {
+ Point aStart = EditWin()->PixelToLogic(GetPosPixel()+Point(0,GetSizePixel().Height()));
+ Point aEnd = EditWin()->PixelToLogic(GetPosPixel()+Point(GetSizePixel().Width()-1,GetSizePixel().Height()));
+ mpShadow->SetPosition(basegfx::B2DPoint(aStart.X(),aStart.Y()), basegfx::B2DPoint(aEnd.X(),aEnd.Y()));
+ }
+
+ if (mrMgr.ShowNotes())
+ {
+ if (IsFollow() && !HasChildPathFocus())
+ {
+ // --> OD 2010-06-03 #i111964#
+ if ( mpAnchor )
+ {
+ mpAnchor->SetAnchorState(AS_END);
+ }
+ // <--
+ }
+ else
+ {
+ // --> OD 2010-06-03 #i111964#
+ if ( mpAnchor )
+ {
+ mpAnchor->SetAnchorState(AS_ALL);
+ }
+ // <--
+ SwSidebarWin* pWin = GetTopReplyNote();
+ // --> OD 2010-06-03 #i111964#
+ if ( pWin && pWin->Anchor() )
+ // <--
+ {
+ pWin->Anchor()->SetAnchorState(AS_END);
+ }
+ }
+ }
+}
+
+void SwSidebarWin::DoResize()
+{
+ long aTextHeight = LogicToPixel( mpOutliner->CalcTextSize()).Height();
+ long aHeight = GetSizePixel().Height();
+ unsigned long aWidth = GetSizePixel().Width();
+
+ aHeight -= GetMetaHeight();
+ mpMetadataAuthor->Show();
+ mpMetadataDate->Show();
+ mpSidebarTxtControl->SetQuickHelpText(EMPTYSTRING);
+
+ if ((aTextHeight > aHeight) && !IsPreview())
+ { // we need vertical scrollbars and have to reduce the width
+ aWidth -= GetScrollbarWidth();
+ mpVScrollbar->Show();
+ }
+ else
+ {
+ mpVScrollbar->Hide();
+ }
+
+ {
+ const Size aSizeOfMetadataControls( GetSizePixel().Width() - GetMetaButtonAreaWidth(),
+ GetMetaHeight()/2 );
+ mpMetadataAuthor->SetPosSizePixel( 0,
+ aHeight,
+ aSizeOfMetadataControls.Width(),
+ aSizeOfMetadataControls.Height() );
+ mpMetadataDate->SetPosSizePixel( 0,
+ aHeight + aSizeOfMetadataControls.Height(),
+ aSizeOfMetadataControls.Width(),
+ aSizeOfMetadataControls.Height() );
+ }
+
+ mpOutliner->SetPaperSize( PixelToLogic( Size(aWidth,aHeight) ) ) ;
+ mpOutlinerView->SetOutputArea( PixelToLogic( Rectangle(0,0,aWidth,aHeight) ) );
+ if (!mpVScrollbar->IsVisible())
+ { // if we do not have a scrollbar anymore, we want to see the complete text
+ mpOutlinerView->SetVisArea( PixelToLogic( Rectangle(0,0,aWidth,aHeight) ) );
+ }
+
+ if (!Application::GetSettings().GetLayoutRTL())
+ {
+ mpSidebarTxtControl->SetPosSizePixel(0, 0, aWidth, aHeight);
+ mpVScrollbar->SetPosSizePixel( aWidth, 0, GetScrollbarWidth(), aHeight);
+ }
+ else
+ {
+ mpSidebarTxtControl->SetPosSizePixel( ( (aTextHeight > aHeight) && !IsPreview()
+ ? GetScrollbarWidth() : 0 ) , 0,
+ aWidth, aHeight);
+ mpVScrollbar->SetPosSizePixel( 0, 0, GetScrollbarWidth(), aHeight);
+ }
+
+ mpVScrollbar->SetVisibleSize( PixelToLogic(Size(0,aHeight)).Height() );
+ mpVScrollbar->SetPageSize( PixelToLogic(Size(0,aHeight)).Height() * 8 / 10 );
+ mpVScrollbar->SetLineSize( mpOutliner->GetTextHeight() / 10 );
+ SetScrollbar();
+ mpVScrollbar->SetRange( Range(0, mpOutliner->GetTextHeight()));
+
+ //calculate rects for meta- button
+ const Fraction& fx( GetMapMode().GetScaleX() );
+ const Fraction& fy( GetMapMode().GetScaleY() );
+
+ const Point aPos( mpMetadataAuthor->GetPosPixel());
+ Rectangle aRectMetaButton;
+ if (IsPreview())
+ {
+ aRectMetaButton = PixelToLogic(
+ Rectangle( Point( aPos.X()+GetSizePixel().Width()-(METABUTTON_WIDTH*4+10)*fx.GetNumerator()/fx.GetDenominator(),
+ aPos.Y()+5*fy.GetNumerator()/fy.GetDenominator() ),
+ Size( METABUTTON_WIDTH*4*fx.GetNumerator()/fx.GetDenominator(),
+ METABUTTON_HEIGHT*fy.GetNumerator()/fy.GetDenominator() ) ) );
+ }
+ else
+ {
+ aRectMetaButton = PixelToLogic(
+ Rectangle( Point( aPos.X()+GetSizePixel().Width()-(METABUTTON_WIDTH+10)*fx.GetNumerator()/fx.GetDenominator(),
+ aPos.Y()+5*fy.GetNumerator()/fy.GetDenominator() ),
+ Size( METABUTTON_WIDTH*fx.GetNumerator()/fx.GetDenominator(),
+ METABUTTON_HEIGHT*fy.GetNumerator()/fy.GetDenominator() ) ) );
+ }
+
+ {
+ const Rectangle aRectMetaButtonPixel( LogicToPixel( aRectMetaButton ) );
+ mpMenuButton->SetPosSizePixel( aRectMetaButtonPixel.Left(),
+ aRectMetaButtonPixel.Top(),
+ aRectMetaButtonPixel.GetWidth(),
+ aRectMetaButtonPixel.GetHeight() );
+ }
+}
+
+void SwSidebarWin::SetSizePixel( const Size& rNewSize )
+{
+ Window::SetSizePixel(rNewSize);
+
+ if (mpShadow)
+ {
+ Point aStart = EditWin()->PixelToLogic(GetPosPixel()+Point(0,GetSizePixel().Height()));
+ Point aEnd = EditWin()->PixelToLogic(GetPosPixel()+Point(GetSizePixel().Width()-1,GetSizePixel().Height()));
+ mpShadow->SetPosition(basegfx::B2DPoint(aStart.X(),aStart.Y()), basegfx::B2DPoint(aEnd.X(),aEnd.Y()));
+ }
+}
+
+void SwSidebarWin::SetScrollbar()
+{
+ mpVScrollbar->SetThumbPos( mpOutlinerView->GetVisArea().Top()+ mpOutlinerView->GetEditView().GetCursor()->GetOffsetY());
+}
+
+void SwSidebarWin::ResizeIfNeccessary(long aOldHeight, long aNewHeight)
+{
+ if (aOldHeight != aNewHeight)
+ {
+ //check for lower border or next note
+ long aBorder = mrMgr.GetNextBorder();
+ if (aBorder != -1)
+ {
+ if (aNewHeight > GetMinimumSizeWithoutMeta())
+ {
+ long aNewLowerValue = GetPosPixel().Y() + aNewHeight + GetMetaHeight();
+ if (aNewLowerValue < aBorder)
+ SetSizePixel(Size(GetSizePixel().Width(),aNewHeight+GetMetaHeight()));
+ else
+ SetSizePixel(Size(GetSizePixel().Width(),aBorder - GetPosPixel().Y()));
+ DoResize();
+ Invalidate();
+ }
+ else
+ {
+ if (GetSizePixel().Height() != GetMinimumSizeWithoutMeta() + GetMetaHeight())
+ SetSizePixel(Size(GetSizePixel().Width(),GetMinimumSizeWithoutMeta() + GetMetaHeight()));
+ DoResize();
+ Invalidate();
+ }
+ }
+ else
+ {
+ DoResize();
+ Invalidate();
+ }
+ }
+ else
+ {
+ SetScrollbar();
+ }
+}
+
+void SwSidebarWin::SetColor(Color aColorDark,Color aColorLight, Color aColorAnchor)
+{
+ mColorDark = aColorDark;
+ mColorLight = aColorLight;
+ mColorAnchor = aColorAnchor;
+
+ if ( !Application::GetSettings().GetStyleSettings().GetHighContrastMode() )
+ {
+ {
+ mpMetadataAuthor->SetControlBackground(mColorDark);
+ AllSettings aSettings = mpMetadataAuthor->GetSettings();
+ StyleSettings aStyleSettings = aSettings.GetStyleSettings();
+ aStyleSettings.SetFieldTextColor(aColorAnchor);
+ aSettings.SetStyleSettings(aStyleSettings);
+ mpMetadataAuthor->SetSettings(aSettings);
+ }
+
+ {
+ mpMetadataDate->SetControlBackground(mColorDark);
+ AllSettings aSettings = mpMetadataDate->GetSettings();
+ StyleSettings aStyleSettings = aSettings.GetStyleSettings();
+ aStyleSettings.SetFieldTextColor(aColorAnchor);
+ aSettings.SetStyleSettings(aStyleSettings);
+ mpMetadataDate->SetSettings(aSettings);
+ }
+
+ AllSettings aSettings2 = mpVScrollbar->GetSettings();
+ StyleSettings aStyleSettings2 = aSettings2.GetStyleSettings();
+ aStyleSettings2.SetButtonTextColor(Color(0,0,0));
+ aStyleSettings2.SetCheckedColor(mColorLight); //hintergund
+ aStyleSettings2.SetShadowColor(mColorAnchor);
+ aStyleSettings2.SetFaceColor(mColorDark);
+ aSettings2.SetStyleSettings(aStyleSettings2);
+ mpVScrollbar->SetSettings(aSettings2);
+ }
+}
+
+void SwSidebarWin::SetSidebarPosition(sw::sidebarwindows::SidebarPosition eSidebarPosition)
+{
+ meSidebarPosition = eSidebarPosition;
+}
+
+void SwSidebarWin::SetReadonly(BOOL bSet)
+{
+ mbReadonly = bSet;
+ GetOutlinerView()->SetReadOnly(bSet);
+}
+
+void SwSidebarWin::SetLanguage(const SvxLanguageItem aNewItem)
+{
+ Link pLink = Engine()->GetModifyHdl();
+ Engine()->SetModifyHdl( Link() );
+ ESelection aOld = GetOutlinerView()->GetSelection();
+
+ ESelection aNewSelection( 0, 0, (USHORT)Engine()->GetParagraphCount()-1, USHRT_MAX );
+ GetOutlinerView()->SetSelection( aNewSelection );
+ SfxItemSet aEditAttr(GetOutlinerView()->GetAttribs());
+ aEditAttr.Put(aNewItem);
+ GetOutlinerView()->SetAttribs( aEditAttr );
+
+ GetOutlinerView()->SetSelection(aOld);
+ Engine()->SetModifyHdl( pLink );
+
+ const SwViewOption* pVOpt = mrView.GetWrtShellPtr()->GetViewOptions();
+ ULONG nCntrl = Engine()->GetControlWord();
+ // turn off
+ if (!pVOpt->IsOnlineSpell())
+ nCntrl &= ~EE_CNTRL_ONLINESPELLING;
+ else
+ nCntrl &= ~EE_CNTRL_ONLINESPELLING;
+ Engine()->SetControlWord(nCntrl);
+
+ //turn back on
+ if (pVOpt->IsOnlineSpell())
+ nCntrl |= EE_CNTRL_ONLINESPELLING;
+ else
+ nCntrl &= ~EE_CNTRL_ONLINESPELLING;
+ Engine()->SetControlWord(nCntrl);
+
+ Engine()->CompleteOnlineSpelling();
+ Invalidate();
+}
+
+void SwSidebarWin::DataChanged( const DataChangedEvent& aEvent)
+{
+ Window::DataChanged( aEvent );
+}
+
+void SwSidebarWin::GetFocus()
+{
+ if (mpSidebarTxtControl)
+ mpSidebarTxtControl->GrabFocus();
+}
+
+void SwSidebarWin::LoseFocus()
+{
+}
+
+void SwSidebarWin::ShowNote()
+{
+ SetPosAndSize();
+ if (!IsVisible())
+ Window::Show();
+ if (mpShadow && !mpShadow->isVisible())
+ mpShadow->setVisible(true);
+ if (mpAnchor && !mpAnchor->isVisible())
+ mpAnchor->setVisible(true);
+}
+
+void SwSidebarWin::HideNote()
+{
+ if (IsVisible())
+ Window::Hide();
+ if (mpAnchor)
+ {
+ if (mrMgr.IsShowAnchor())
+ mpAnchor->SetAnchorState(AS_TRI);
+ else
+ mpAnchor->setVisible(false);
+ }
+ if (mpShadow && mpShadow->isVisible())
+ mpShadow->setVisible(false);
+}
+
+void SwSidebarWin::ActivatePostIt()
+{
+ mrMgr.AssureStdModeAtShell();
+
+ mpOutliner->ClearModifyFlag();
+ mpOutliner->GetUndoManager().Clear();
+
+ CheckMetaText();
+ SetViewState(VS_EDIT);
+ GetOutlinerView()->ShowCursor();
+
+ mpOutlinerView->GetEditView().SetInsertMode(mrView.GetWrtShellPtr()->IsInsMode());
+
+ if ( !Application::GetSettings().GetStyleSettings().GetHighContrastMode() )
+ GetOutlinerView()->SetBackgroundColor(mColorDark);
+}
+
+void SwSidebarWin::DeactivatePostIt()
+{
+ // remove selection, #i87073#
+ if (GetOutlinerView()->GetEditView().HasSelection())
+ {
+ ESelection aSelection = GetOutlinerView()->GetEditView().GetSelection();
+ aSelection.nEndPara = aSelection.nStartPara;
+ aSelection.nEndPos = aSelection.nStartPos;
+ GetOutlinerView()->GetEditView().SetSelection(aSelection);
+ }
+
+ mpOutliner->CompleteOnlineSpelling();
+
+ SetViewState(VS_NORMAL);
+ // write the visible text back into the SwField
+ UpdateData();
+
+ if ( !Application::GetSettings().GetStyleSettings().GetHighContrastMode() )
+ GetOutlinerView()->SetBackgroundColor(COL_TRANSPARENT);
+
+
+ if ( !IsProtected() &&
+ Engine()->GetEditEngine().GetText()==String(EMPTYSTRING) )
+ {
+ mnEventId = Application::PostUserEvent( LINK( this, SwSidebarWin, DeleteHdl), 0 );
+ }
+}
+
+void SwSidebarWin::ToggleInsMode()
+{
+ if (!mrView.GetWrtShell().IsRedlineOn())
+ {
+ //change outliner
+ mpOutlinerView->GetEditView().SetInsertMode(!mpOutlinerView->GetEditView().IsInsertMode());
+ //change documnet
+ mrView.GetWrtShell().ToggleInsMode();
+ //update statusbar
+ SfxBindings &rBnd = mrView.GetViewFrame()->GetBindings();
+ rBnd.Invalidate(SID_ATTR_INSERT);
+ rBnd.Update(SID_ATTR_INSERT);
+ }
+}
+
+void SwSidebarWin::ExecuteCommand(USHORT nSlot)
+{
+ mrMgr.AssureStdModeAtShell();
+
+ switch (nSlot)
+ {
+ case FN_POSTIT:
+ case FN_REPLY:
+ {
+ // if this note is empty, it will be deleted once losing the focus, so no reply, but only a new note
+ // will be created
+ if (Engine()->GetEditEngine().GetText() != String(EMPTYSTRING))
+ {
+ OutlinerParaObject* pPara = new OutlinerParaObject(*GetOutlinerView()->GetEditView().CreateTextObject());
+ mrMgr.RegisterAnswer(pPara);
+ }
+ if (mrMgr.HasActiveSidebarWin())
+ mrMgr.SetActiveSidebarWin(0);
+ SwitchToFieldPos();
+ mrView.GetViewFrame()->GetDispatcher()->Execute(FN_POSTIT);
+ break;
+ }
+ case FN_DELETE_COMMENT:
+ case FN_DELETE_NOTE:
+
+ //Delete(); // do not kill the parent of our open popup menu
+ mnEventId = Application::PostUserEvent( LINK( this, SwSidebarWin, DeleteHdl), 0 );
+ break;
+ case FN_DELETE_ALL_NOTES:
+ case FN_HIDE_ALL_NOTES:
+ // not possible as slot as this would require that "this" is the active postit
+ mrView.GetViewFrame()->GetBindings().Execute( nSlot, 0, 0, SFX_CALLMODE_ASYNCHRON );
+ break;
+ case FN_DELETE_NOTE_AUTHOR:
+ case FN_HIDE_NOTE_AUTHOR:
+ {
+ // not possible as slot as this would require that "this" is the active postit
+ SfxStringItem aItem( nSlot, GetAuthor() );
+ const SfxPoolItem* aItems[2];
+ aItems[0] = &aItem;
+ aItems[1] = 0;
+ mrView.GetViewFrame()->GetBindings().Execute( nSlot, aItems, 0, SFX_CALLMODE_ASYNCHRON );
+ }
+ default:
+ mrView.GetViewFrame()->GetBindings().Execute( nSlot );
+ break;
+ }
+}
+
+SwEditWin* SwSidebarWin::EditWin()
+{
+ return &mrView.GetEditWin();
+}
+
+long SwSidebarWin::GetPostItTextHeight()
+{
+ return mpOutliner ? LogicToPixel(mpOutliner->CalcTextSize()).Height() : 0;
+}
+
+void SwSidebarWin::SwitchToPostIt(USHORT aDirection)
+{
+ SwSidebarWin* pPostIt = mrMgr.GetNextPostIt(aDirection, this);
+ if (pPostIt)
+ pPostIt->GrabFocus();
+}
+
+IMPL_LINK( SwSidebarWin, WindowEventListener, VclSimpleEvent*, pEvent )
+{
+ VclWindowEvent* pWinEvent = dynamic_cast<VclWindowEvent*>(pEvent);
+ if ( pWinEvent )
+ {
+ if ( pWinEvent->GetId() == VCLEVENT_WINDOW_MOUSEMOVE )
+ {
+ MouseEvent* pMouseEvt = (MouseEvent*)pWinEvent->GetData();
+ if ( pMouseEvt->IsEnterWindow() )
+ {
+ mbMouseOver = true;
+ if ( !HasFocus() )
+ {
+ SetViewState(VS_VIEW);
+ Invalidate();
+ }
+ }
+ else if ( pMouseEvt->IsLeaveWindow())
+ {
+ if (IsPreview())
+ {
+ //doLazyDelete();
+ }
+ else
+ {
+ mbMouseOver = false;
+ if ( !HasFocus() )
+ {
+ SetViewState(VS_NORMAL);
+ Invalidate();
+ }
+ }
+ }
+ }
+ else if ( pWinEvent->GetId() == VCLEVENT_WINDOW_ACTIVATE &&
+ pWinEvent->GetWindow() == mpSidebarTxtControl )
+ {
+ const BOOL bLockView = mrView.GetWrtShell().IsViewLocked();
+ mrView.GetWrtShell().LockView( TRUE );
+
+ if ( !IsPreview() )
+ {
+ mrMgr.SetActiveSidebarWin( this );
+ }
+
+ mrView.GetWrtShell().LockView( bLockView );
+ mrMgr.MakeVisible( this );
+ }
+ else if ( pWinEvent->GetWindow() == mpSidebarTxtControl )
+ {
+ int i = 5;
+ ++i;
+ }
+ }
+ return sal_True;
+}
+
+void SwSidebarWin::Delete()
+{
+ if ( mrMgr.GetActiveSidebarWin() == this)
+ {
+ mrMgr.SetActiveSidebarWin(0);
+ // if the note is empty, the previous line will send a delete event, but we are already there
+ if (mnEventId)
+ {
+ Application::RemoveUserEvent( mnEventId );
+ mnEventId = 0;
+ }
+ }
+}
+
+IMPL_LINK(SwSidebarWin, ScrollHdl, ScrollBar*, pScroll)
+{
+ long nDiff = GetOutlinerView()->GetEditView().GetVisArea().Top() - pScroll->GetThumbPos();
+ GetOutlinerView()->Scroll( 0, nDiff );
+ return 0;
+}
+
+IMPL_LINK(SwSidebarWin, ModifyHdl, void*, pVoid)
+{
+ // no warnings, please
+ pVoid=0;
+ mrView.GetDocShell()->SetModified(sal_True);
+ return 0;
+}
+
+IMPL_LINK(SwSidebarWin, DeleteHdl, void*, pVoid)
+{
+ // no warnings, please
+ pVoid=0;
+ mnEventId = 0;
+ Delete();
+ return 0;
+}
+
+
+void SwSidebarWin::ResetAttributes()
+{
+ mpOutlinerView->RemoveAttribsKeepLanguages(TRUE);
+ mpOutliner->RemoveFields(TRUE);
+ mpOutlinerView->SetAttribs(DefaultItem());
+}
+
+sal_Int32 SwSidebarWin::GetScrollbarWidth()
+{
+ return mrView.GetWrtShell().GetViewOptions()->GetZoom() / 10;
+}
+
+sal_Int32 SwSidebarWin::GetMetaButtonAreaWidth()
+{
+ const Fraction& f( GetMapMode().GetScaleX() );
+ if (IsPreview())
+ return 3 * METABUTTON_AREA_WIDTH * f.GetNumerator() / f.GetDenominator();
+ else
+ return METABUTTON_AREA_WIDTH * f.GetNumerator() / f.GetDenominator();
+}
+
+sal_Int32 SwSidebarWin::GetMetaHeight()
+{
+ const Fraction& f( GetMapMode().GetScaleY() );
+ return POSTIT_META_HEIGHT * f.GetNumerator() / f.GetDenominator();
+}
+
+sal_Int32 SwSidebarWin::GetMinimumSizeWithMeta()
+{
+ return mrMgr.GetMinimumSizeWithMeta();
+}
+
+sal_Int32 SwSidebarWin::GetMinimumSizeWithoutMeta()
+{
+ const Fraction& f( GetMapMode().GetScaleY() );
+ return POSTIT_MINIMUMSIZE_WITHOUT_META * f.GetNumerator() / f.GetDenominator();
+}
+
+void SwSidebarWin::SetSpellChecking()
+{
+ const SwViewOption* pVOpt = mrView.GetWrtShellPtr()->GetViewOptions();
+ ULONG nCntrl = mpOutliner->GetControlWord();
+ if (pVOpt->IsOnlineSpell())
+ nCntrl |= EE_CNTRL_ONLINESPELLING;
+ else
+ nCntrl &= ~EE_CNTRL_ONLINESPELLING;
+ mpOutliner->SetControlWord(nCntrl);
+
+ mpOutliner->CompleteOnlineSpelling();
+ Invalidate();
+}
+
+void SwSidebarWin::SetViewState(ViewState bViewState)
+{
+ switch (bViewState)
+ {
+ case VS_EDIT:
+ {
+ if (mpAnchor)
+ {
+ mpAnchor->SetAnchorState(AS_ALL);
+ SwSidebarWin* pWin = GetTopReplyNote();
+ // --> OD 2010-06-03 #i111964#
+ if ( pWin && pWin->Anchor() )
+ // <--
+ {
+ pWin->Anchor()->SetAnchorState(AS_END);
+ }
+ mpAnchor->setLineSolid(true);
+ }
+ if (mpShadow)
+ mpShadow->SetShadowState(SS_EDIT);
+ break;
+ }
+ case VS_VIEW:
+ {
+ if (mpAnchor)
+ mpAnchor->setLineSolid(true);
+ if (mpShadow)
+ mpShadow->SetShadowState(SS_VIEW);
+ break;
+ }
+ case VS_NORMAL:
+ {
+ if (mpAnchor)
+ {
+ if (IsFollow())
+ {
+ // if there is no visible parent note, we want to see the complete anchor ??
+ //if (IsAnyStackParentVisible())
+ mpAnchor->SetAnchorState(AS_END);
+ SwSidebarWin* pTopWinSelf = GetTopReplyNote();
+ SwSidebarWin* pTopWinActive = mrMgr.HasActiveSidebarWin()
+ ? mrMgr.GetActiveSidebarWin()->GetTopReplyNote()
+ : 0;
+ // --> OD 2010-06-03 #i111964#
+ if ( pTopWinSelf && ( pTopWinSelf != pTopWinActive ) &&
+ pTopWinSelf->Anchor() )
+ // <--
+ {
+ if ( pTopWinSelf != mrMgr.GetActiveSidebarWin() )
+ {
+ pTopWinSelf->Anchor()->setLineSolid(false);
+ }
+ pTopWinSelf->Anchor()->SetAnchorState(AS_ALL);
+ }
+ }
+ mpAnchor->setLineSolid(false);
+ }
+ if ( mpShadow )
+ {
+ mpShadow->SetShadowState(SS_NORMAL);
+ }
+ break;
+ }
+ }
+}
+
+SwSidebarWin* SwSidebarWin::GetTopReplyNote()
+{
+ SwSidebarWin* pTopNote = 0;
+ SwSidebarWin* pSidebarWin = IsFollow() ? mrMgr.GetNextPostIt(KEY_PAGEUP, this) : 0;
+ while (pSidebarWin)
+ {
+ pTopNote = pSidebarWin;
+ pSidebarWin = pSidebarWin->IsFollow() ? mrMgr.GetNextPostIt(KEY_PAGEUP, pSidebarWin) : 0;
+ }
+ return pTopNote;
+}
+
+void SwSidebarWin::SwitchToFieldPos()
+{
+ if ( mrMgr.GetActiveSidebarWin() == this )
+ mrMgr.SetActiveSidebarWin(0);
+ GotoPos();
+ sal_uInt32 aCount = MoveCaret();
+ if (aCount)
+ mrView.GetDocShell()->GetWrtShell()->SwCrsrShell::Right(aCount, 0, FALSE);
+ GrabFocusToDocument();
+}
+
+SvxLanguageItem SwSidebarWin::GetLanguage(void)
+{
+ return SvxLanguageItem(SwLangHelper::GetLanguage(mrView.GetWrtShell(),RES_CHRATR_LANGUAGE),RES_CHRATR_LANGUAGE);
+}
+
+void SwSidebarWin::SetChangeTracking( const SwPostItHelper::SwLayoutStatus aLayoutStatus,
+ const Color& aChangeColor )
+{
+ if ( (mLayoutStatus != aLayoutStatus) ||
+ (mChangeColor != aChangeColor) )
+ {
+ mLayoutStatus = aLayoutStatus;
+ mChangeColor = aChangeColor;
+ Invalidate();
+ }
+}
+
+bool SwSidebarWin::HasScrollbar() const
+{
+ return mpVScrollbar != 0;
+}
+
+bool SwSidebarWin::IsScrollbarVisible() const
+{
+ return HasScrollbar() && mpVScrollbar->IsVisible();
+}
+
+void SwSidebarWin::ChangeSidebarItem( SwSidebarItem& rSidebarItem )
+{
+ const bool bAnchorChanged = mpAnchorFrm != rSidebarItem.maLayoutInfo.mpAnchorFrm;
+ if ( bAnchorChanged )
+ {
+ mrMgr.DisconnectSidebarWinFromFrm( *(mpAnchorFrm), *this );
+ }
+
+ mrSidebarItem = rSidebarItem;
+ mpAnchorFrm = mrSidebarItem.maLayoutInfo.mpAnchorFrm;
+
+ if ( GetWindowPeer() )
+ {
+ SidebarWinAccessible* pAcc =
+ static_cast<SidebarWinAccessible*>( GetWindowPeer() );
+ ASSERT( dynamic_cast<SidebarWinAccessible*>( GetWindowPeer() ),
+ "<SwSidebarWin::ChangeSidebarItem(..)> - unexpected type of window peer -> crash possible!" );
+ pAcc->ChangeSidebarItem( mrSidebarItem );
+ }
+
+ if ( bAnchorChanged )
+ {
+ mrMgr.ConnectSidebarWinToFrm( *(mrSidebarItem.maLayoutInfo.mpAnchorFrm),
+ *(mrSidebarItem.GetFmtFld()),
+ *this );
+ }
+}
+
+css::uno::Reference< css::accessibility::XAccessible > SwSidebarWin::CreateAccessible()
+{
+ SidebarWinAccessible* pAcc( new SidebarWinAccessible( *this,
+ mrView.GetWrtShell(),
+ mrSidebarItem ) );
+ css::uno::Reference< css::awt::XWindowPeer > xWinPeer( pAcc );
+ SetWindowPeer( xWinPeer, pAcc );
+
+ css::uno::Reference< css::accessibility::XAccessible > xAcc( xWinPeer, css::uno::UNO_QUERY );
+ return xAcc;
+}
+
+} } // eof of namespace sw::sidebarwindows
+
+/********** SwRedComment**************/
+/*
+SwRedComment::SwRedComment( Window* pParent, WinBits nBits,SwPostItMgr* aMgr,SwPostItBits aBits,SwRedline* pRed)
+ : SwSidebarWin(pParent,nBits,aMgr,aBits),
+ pRedline(pRed)
+{
+}
+
+void SwRedComment::SetPopup()
+{
+ mpButtonPopup = new PopupMenu(SW_RES(MN_REDCOMMENT_BUTTON));
+ //mpButtonPopup->SetMenuFlags(MENU_FLAG_ALWAYSSHOWDISABLEDENTRIES);
+}
+
+void SwRedComment::UpdateData()
+{
+ if ( Engine()->IsModified() )
+ {
+ // so we get a new layout of notes (Anchor position is still the same and we would otherwise not get one)
+ Mgr()->SetLayout();
+ // SetRedline is calling SetModified already
+ DocView()->GetWrtShell().SetRedlineComment(Engine()->GetEditEngine().GetText());
+ }
+ Engine()->ClearModifyFlag();
+ Engine()->GetUndoManager().Clear();
+}
+
+void SwRedComment::SetPostItText()
+{
+ Engine()->SetModifyHdl( Link() );
+ Engine()->EnableUndo( FALSE );
+
+ Engine()->Clear();
+ View()->SetAttribs(DefaultItem());
+ View()->InsertText(pRedline->GetComment(),false);
+
+ Engine()->ClearModifyFlag();
+ Engine()->GetUndoManager().Clear();
+ Engine()->EnableUndo( TRUE );
+ Engine()->SetModifyHdl( LINK( this, SwSidebarWin, ModifyHdl ) );
+ Invalidate();
+}
+
+void SwRedComment::DeactivatePostIt()
+{
+ SwSidebarWin::DeactivatePostIt();
+ // current Redline is still selected
+ DocView()->GetWrtShellPtr()->ClearMark();
+}
+
+void SwRedComment::ActivatePostIt()
+{
+ SwSidebarWin::ActivatePostIt();
+
+ // do we want the redline selected?
+ // otherwise, SwRedComment::ActivatePostIt() as well as SwRedComment::DeactivatePostIt()
+ // can be thrown out completly
+ DocView()->GetDocShell()->GetWrtShell()->GotoRedline(
+ DocView()->GetDocShell()->GetWrtShell()->FindRedlineOfData(pRedline->GetRedlineData()),true);
+}
+
+void SwRedComment::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ if (mRectMetaButton.IsInside(PixelToLogic(rMEvt.GetPosPixel())) && rMEvt.IsLeft())
+ {
+ ExecuteCommand( mpButtonPopup->Execute( this,Rectangle(LogicToPixel(mRectMetaButton.BottomLeft()),LogicToPixel(mRectMetaButton.BottomLeft())),POPUPMENU_EXECUTE_DOWN | POPUPMENU_NOMOUSEUPCLOSE) );
+ }
+}
+
+void SwRedComment::Delete()
+{
+ SwSidebarWin::Delete();
+ // we are not neccessarily on our redline, so let's move there
+ GotoPos();
+ DocView()->GetWrtShell().SetRedlineComment(EMPTYSTRING);
+ DocView()->GetWrtShell().ClearMark();
+ // so we get a new layout of notes (Anchor position is still the same and we would otherwise not get one)
+ Mgr()->SetLayout();
+ Mgr()->RemoveItem(pRedline);
+}
+
+void SwRedComment::GotoPos()
+{
+ DocView()->GetDocShell()->GetWrtShell()->GotoRedline(
+ DocView()->GetDocShell()->GetWrtShell()->FindRedlineOfData(pRedline->GetRedlineData()));
+}
+
+String SwRedComment::GetAuthor()
+{
+ return pRedline->GetAuthorString();
+}
+
+Date SwRedComment::GetDate()
+{
+ return pRedline->GetTimeStamp().GetDate();
+}
+
+Time SwRedComment::GetTime()
+{
+ return pRedline->GetTimeStamp().GetTime();
+}
+
+bool SwRedComment::IsProtected()
+{
+ return SwSidebarWin::IsProtected() || pRedline->Start()->nNode.GetNode().GetTxtNode()->IsInProtectSect();
+}
+*/
diff --git a/sw/source/ui/docvw/SidebarWinAcc.cxx b/sw/source/ui/docvw/SidebarWinAcc.cxx
new file mode 100644
index 000000000000..214913963dcb
--- /dev/null
+++ b/sw/source/ui/docvw/SidebarWinAcc.cxx
@@ -0,0 +1,162 @@
+/************************************************************************* *
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+
+#include "precompiled_sw.hxx"
+
+#include <SidebarWinAcc.hxx>
+
+#include <SidebarWin.hxx>
+#include <viewsh.hxx>
+#include <accmap.hxx>
+#include <toolkit/awt/vclxaccessiblecomponent.hxx>
+
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+
+namespace css = ::com::sun::star;
+
+namespace sw { namespace sidebarwindows {
+
+// =============================================================================
+// declaration and implementation of accessible context for <SidebarWinAccessible> instance
+// =============================================================================
+class SidebarWinAccessibleContext : public VCLXAccessibleComponent
+{
+ public:
+ explicit SidebarWinAccessibleContext( SwSidebarWin& rSidebarWin,
+ ViewShell& rViewShell,
+ const SwFrm* pAnchorFrm )
+ : VCLXAccessibleComponent( rSidebarWin.GetWindowPeer() )
+ , mrViewShell( rViewShell )
+ , mpAnchorFrm( pAnchorFrm )
+ , maMutex()
+ {
+ rSidebarWin.SetAccessibleRole( css::accessibility::AccessibleRole::COMMENT );
+ }
+
+ virtual ~SidebarWinAccessibleContext()
+ {}
+
+ void ChangeAnchor( const SwFrm* pAnchorFrm )
+ {
+ vos::OGuard aGuard(maMutex);
+
+ mpAnchorFrm = pAnchorFrm;
+ }
+
+ virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL
+ getAccessibleParent() throw (css::uno::RuntimeException)
+ {
+ vos::OGuard aGuard(maMutex);
+
+ css::uno::Reference< css::accessibility::XAccessible > xAccParent;
+
+ if ( mpAnchorFrm &&
+ mrViewShell.GetAccessibleMap() )
+ {
+ xAccParent = mrViewShell.GetAccessibleMap()->GetContext( mpAnchorFrm, sal_False );
+ }
+
+ return xAccParent;
+ }
+
+ virtual sal_Int32 SAL_CALL getAccessibleIndexInParent() throw (css::uno::RuntimeException)
+ {
+ vos::OGuard aGuard(maMutex);
+
+ sal_Int32 nIndex( -1 );
+
+ if ( mpAnchorFrm && GetWindow() &&
+ mrViewShell.GetAccessibleMap() )
+ {
+ nIndex = mrViewShell.GetAccessibleMap()->GetChildIndex( *mpAnchorFrm,
+ *GetWindow() );
+ }
+
+ return nIndex;
+ }
+
+ private:
+ ViewShell& mrViewShell;
+ const SwFrm* mpAnchorFrm;
+
+ ::vos::OMutex maMutex;
+};
+
+// =============================================================================
+// implementaion of accessible for <SwSidebarWin> instance
+// =============================================================================
+SidebarWinAccessible::SidebarWinAccessible( SwSidebarWin& rSidebarWin,
+ ViewShell& rViewShell,
+ const SwSidebarItem& rSidebarItem )
+ : VCLXWindow()
+ , mrSidebarWin( rSidebarWin )
+ , mrViewShell( rViewShell )
+ , mpAnchorFrm( rSidebarItem.maLayoutInfo.mpAnchorFrm )
+ , bAccContextCreated( false )
+{
+ SetWindow( &mrSidebarWin );
+}
+
+SidebarWinAccessible::~SidebarWinAccessible()
+{
+}
+
+void SidebarWinAccessible::ChangeSidebarItem( const SwSidebarItem& rSidebarItem )
+{
+ if ( bAccContextCreated )
+ {
+ css::uno::Reference< css::accessibility::XAccessibleContext > xAcc
+ = getAccessibleContext();
+ if ( xAcc.is() )
+ {
+ SidebarWinAccessibleContext* pAccContext =
+ dynamic_cast<SidebarWinAccessibleContext*>(xAcc.get());
+ if ( pAccContext )
+ {
+ pAccContext->ChangeAnchor( rSidebarItem.maLayoutInfo.mpAnchorFrm );
+ }
+ }
+ }
+}
+
+css::uno::Reference< css::accessibility::XAccessibleContext > SidebarWinAccessible::CreateAccessibleContext()
+{
+ SidebarWinAccessibleContext* pAccContext =
+ new SidebarWinAccessibleContext( mrSidebarWin,
+ mrViewShell,
+ mpAnchorFrm );
+ css::uno::Reference< css::accessibility::XAccessibleContext > xAcc( pAccContext );
+ bAccContextCreated = true;
+ return xAcc;
+}
+
+} } // end of namespace sw::sidebarwindows
+
diff --git a/sw/source/ui/docvw/SidebarWinAcc.hxx b/sw/source/ui/docvw/SidebarWinAcc.hxx
new file mode 100644
index 000000000000..0abe1acbfaf5
--- /dev/null
+++ b/sw/source/ui/docvw/SidebarWinAcc.hxx
@@ -0,0 +1,67 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#ifndef _SIDEBARWINACC_HXX
+#define _SIDEBARWINACC_HXX
+
+#include <toolkit/awt/vclxwindow.hxx>
+
+class ViewShell;
+class SwSidebarItem;
+class SwFrm;
+
+namespace sw { namespace sidebarwindows {
+
+class SwSidebarWin;
+
+class SidebarWinAccessible : public VCLXWindow
+{
+ public:
+ explicit SidebarWinAccessible( SwSidebarWin& rSidebarWin,
+ ViewShell& rViewShell,
+ const SwSidebarItem& rSidebarItem );
+ virtual ~SidebarWinAccessible();
+
+ virtual com::sun::star::uno::Reference< com::sun::star::accessibility::XAccessibleContext >
+ CreateAccessibleContext();
+
+ void ChangeSidebarItem( const SwSidebarItem& rSidebarItem );
+
+ private:
+ SwSidebarWin& mrSidebarWin;
+ ViewShell& mrViewShell;
+ const SwFrm* mpAnchorFrm;
+ bool bAccContextCreated;
+};
+
+} } // end of namespace sw::sidebarwindows
+
+#endif
diff --git a/sw/source/ui/docvw/access.src b/sw/source/ui/docvw/access.src
index 17f06e8a0037..42081d3ab7e7 100644
--- a/sw/source/ui/docvw/access.src
+++ b/sw/source/ui/docvw/access.src
@@ -83,4 +83,20 @@ String STR_ACCESS_PAGE_DESC
{
Text [ en-US ] = "Page: $(ARG1)";
};
+String STR_ACCESS_ANNOTATION_AUTHOR_NAME
+{
+ Text [ en-US ] = "Author";
+};
+String STR_ACCESS_ANNOTATION_DATE_NAME
+{
+ Text [ en-US ] = "Date";
+};
+String STR_ACCESS_ANNOTATION_BUTTON_NAME
+{
+ Text [ en-US ] = "Actions";
+};
+String STR_ACCESS_ANNOTATION_BUTTON_DESC
+{
+ Text [ en-US ] = "Activate this button to open a list of actions which can be performed on this comment and other comments";
+};
diff --git a/sw/source/ui/docvw/annotation.hrc b/sw/source/ui/docvw/annotation.hrc
new file mode 100644
index 000000000000..e43a90342409
--- /dev/null
+++ b/sw/source/ui/docvw/annotation.hrc
@@ -0,0 +1,54 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#ifndef _ANNOTATION_HRC
+#define _ANNOTATION_HRC
+
+#include "rcid.hrc"
+
+#define STR_POSTIT_TODAY (RC_ANNOTATION_BEGIN + 1)
+#define STR_POSTIT_YESTERDAY (RC_ANNOTATION_BEGIN + 2)
+
+#define STR_DELETE_ALL_NOTES (RC_ANNOTATION_BEGIN + 3)
+#define STR_DELETE_AUTHOR_NOTES (RC_ANNOTATION_BEGIN + 4)
+
+#define STR_NODATE (RC_ANNOTATION_BEGIN + 5)
+#define STR_NOAUTHOR (RC_ANNOTATION_BEGIN + 6)
+
+#define STR_REPLY (RC_ANNOTATION_BEGIN + 7)
+
+
+#define ANNOTATION_ACT_END STR_REPLY
+#if ANNOTATION_ACT_END > RC_ANNOTATION_END
+#error Resource-Id Ueberlauf in #file, #line
+#endif
+
+
+#endif
diff --git a/sw/source/ui/docvw/annotation.src b/sw/source/ui/docvw/annotation.src
new file mode 100644
index 000000000000..8dcda9c25b8c
--- /dev/null
+++ b/sw/source/ui/docvw/annotation.src
@@ -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.
+ *
+ ************************************************************************/
+
+#include "annotation.hrc"
+#include "cmdid.h"
+
+String STR_POSTIT_TODAY
+{
+ Text [ en-US ] = "Today," ;
+};
+
+String STR_POSTIT_YESTERDAY
+{
+ Text [ en-US ] = "Yesterday," ;
+};
+
+String STR_DELETE_ALL_NOTES
+{
+ Text [ en-US ] = "All Comments" ;
+};
+
+String STR_DELETE_AUTHOR_NOTES
+{
+ Text [ en-US ] = "Comments by " ;
+};
+
+String STR_NODATE
+{
+ Text [ en-US ] = "(no date)" ;
+};
+
+String STR_NOAUTHOR
+{
+ Text [ en-US ] = "(no author)" ;
+};
+
+String STR_REPLY
+{
+ Text [ en-US ] = "Reply to $1" ;
+};
+
diff --git a/sw/source/ui/docvw/docvw.hrc b/sw/source/ui/docvw/docvw.hrc
index 31fd6a04949e..c0f15291795b 100644
--- a/sw/source/ui/docvw/docvw.hrc
+++ b/sw/source/ui/docvw/docvw.hrc
@@ -81,17 +81,6 @@
#define STR_SMARTTAG_CLICK (RC_DOCVW_BEGIN + 21)
-#define STR_POSTIT_TODAY (RC_DOCVW_BEGIN + 22)
-#define STR_POSTIT_YESTERDAY (RC_DOCVW_BEGIN + 23)
-
-#define STR_DELETE_ALL_NOTES (RC_DOCVW_BEGIN + 24)
-#define STR_DELETE_AUTHOR_NOTES (RC_DOCVW_BEGIN + 25)
-
-#define STR_NODATE (RC_DOCVW_BEGIN + 26)
-#define STR_NOAUTHOR (RC_DOCVW_BEGIN + 27)
-
-#define STR_REPLY (RC_DOCVW_BEGIN + 28)
-
#define MSG_READONLY_CONTENT (RC_DOCVW_BEGIN + 1)
#define DOCVW_ACT_END STR_SMARTTAG_CLICK
diff --git a/sw/source/ui/docvw/docvw.src b/sw/source/ui/docvw/docvw.src
index d38f249d905e..dcd0f98103f4 100644
--- a/sw/source/ui/docvw/docvw.src
+++ b/sw/source/ui/docvw/docvw.src
@@ -294,38 +294,3 @@ String STR_SMARTTAG_CLICK
Text [ en-US ] = "%s-click to open Smart Tag menu" ;
};
-String STR_POSTIT_TODAY
-{
- Text [ en-US ] = "Today," ;
-};
-
-String STR_POSTIT_YESTERDAY
-{
- Text [ en-US ] = "Yesterday," ;
-};
-
-String STR_DELETE_ALL_NOTES
-{
- Text [ en-US ] = "All Comments" ;
-};
-
-String STR_DELETE_AUTHOR_NOTES
-{
- Text [ en-US ] = "Comments by " ;
-};
-
-String STR_NODATE
-{
- Text [ en-US ] = "(no date)" ;
-};
-
-String STR_NOAUTHOR
-{
- Text [ en-US ] = "(no author)" ;
-};
-
-String STR_REPLY
-{
- Text [ en-US ] = "Reply to $1" ;
-};
-
diff --git a/sw/source/ui/docvw/edtwin.cxx b/sw/source/ui/docvw/edtwin.cxx
index 0a0bde33327b..e2e59e17831e 100644
--- a/sw/source/ui/docvw/edtwin.cxx
+++ b/sw/source/ui/docvw/edtwin.cxx
@@ -139,8 +139,7 @@
#include <doc.hxx>
#include <xmloff/odffields.hxx>
-#include "PostItMgr.hxx"
-#include "postit.hxx"
+#include <PostItMgr.hxx>
//JP 11.10.2001: enable test code for bug fix 91313
#if defined(DBG_UTIL) && (OSL_DEBUG_LEVEL > 1)
@@ -1342,8 +1341,8 @@ void SwEditWin::KeyInput(const KeyEvent &rKEvt)
}
aKeyEvent = KeyEvent( rKEvt.GetCharCode(),
- KeyCode( nKey, rKEvt.GetKeyCode().GetModifier() ),
- rKEvt.GetRepeat() );
+ KeyCode( nKey, rKEvt.GetKeyCode().GetModifier() ),
+ rKEvt.GetRepeat() );
}
}
@@ -2262,7 +2261,8 @@ KEYINPUT_CHECKTABLE_INSDEL:
BOOL bIsAutoCorrectChar = SvxAutoCorrect::IsAutoCorrectChar( aCh );
- if( !aKeyEvent.GetRepeat() && pACorr && bIsAutoCorrectChar &&
+ BOOL bRunNext = pACorr->HasRunNext();
+ if( !aKeyEvent.GetRepeat() && pACorr && ( bIsAutoCorrectChar || bRunNext ) &&
pACfg->IsAutoFmtByInput() &&
(( pACorr->IsAutoCorrFlag( ChgWeightUnderl ) &&
( '*' == aCh || '_' == aCh ) ) ||
@@ -2274,14 +2274,13 @@ KEYINPUT_CHECKTABLE_INSDEL:
if( '\"' != aCh && '\'' != aCh ) // nur bei "*_" rufen!
rSh.UpdateAttr();
}
- else if( !aKeyEvent.GetRepeat() && pACorr && bIsAutoCorrectChar &&
+ else if( !aKeyEvent.GetRepeat() && pACorr && ( bIsAutoCorrectChar || bRunNext ) &&
pACfg->IsAutoFmtByInput() &&
pACorr->IsAutoCorrFlag( CptlSttSntnc | CptlSttWrd |
- ChgOrdinalNumber |
+ ChgOrdinalNumber | AddNonBrkSpace |
ChgToEnEmDash | SetINetAttr |
Autocorrect ) &&
- '\"' != aCh && '\'' != aCh && '*' != aCh && '_' != aCh &&
- !bIsNormalChar
+ '\"' != aCh && '\'' != aCh && '*' != aCh && '_' != aCh
)
{
FlushInBuffer();
@@ -2605,7 +2604,7 @@ void SwEditWin::MouseButtonDown(const MouseEvent& _rMEvt)
if (rView.GetPostItMgr()->IsHit(rMEvt.GetPosPixel()))
return;
- rView.GetPostItMgr()->SetActivePostIt(0);
+ rView.GetPostItMgr()->SetActiveSidebarWin(0);
GrabFocus();
@@ -4701,8 +4700,10 @@ BOOL SwEditWin::IsDrawSelMode()
void SwEditWin::GetFocus()
{
- if (rView.GetPostItMgr()->GetActivePostIt())
- rView.GetPostItMgr()->GetActivePostIt()->GrabFocus();
+ if ( rView.GetPostItMgr()->HasActiveSidebarWin() )
+ {
+ rView.GetPostItMgr()->GrabFocusOnActiveSidebarWin();
+ }
else
{
rView.GotFocus();
diff --git a/sw/source/ui/docvw/edtwin2.cxx b/sw/source/ui/docvw/edtwin2.cxx
index d605ef993457..be201c32c24e 100644
--- a/sw/source/ui/docvw/edtwin2.cxx
+++ b/sw/source/ui/docvw/edtwin2.cxx
@@ -35,9 +35,7 @@
#include <stdio.h>
#endif
-#ifndef _HELP_HXX //autogen
#include <vcl/help.hxx>
-#endif
#include <svl/stritem.hxx>
#include <unotools/securityoptions.hxx>
#include <tools/urlobj.hxx>
@@ -46,24 +44,15 @@
#include <editeng/flditem.hxx>
#include <svl/urihelper.hxx>
#include <svx/svdotext.hxx>
-#ifndef _OUTLINER_HXX //autogen
-#define _EEITEMID_HXX
#include <editeng/outliner.hxx>
-#endif
#include <svl/itemiter.hxx>
#include <svx/svdview.hxx>
#include <svx/svdpagv.hxx>
#include <swmodule.hxx>
-#ifndef _MODCFG_HXX
#include <modcfg.hxx>
-#endif
-#ifndef _VIEW_HXX
#include <view.hxx>
-#endif
#include <wrtsh.hxx>
-#ifndef _DOCSH_HXX
#include <docsh.hxx>
-#endif
#include <edtwin.hxx>
#include <dpage.hxx>
#include <shellres.hxx>
@@ -80,14 +69,9 @@
#include <txttxmrk.hxx>
#include <uitool.hxx>
#include <viewopt.hxx>
-#ifndef _DOCVW_HRC
#include <docvw.hrc>
-#endif
-#ifndef _UTLUI_HRC
#include <utlui.hrc>
-#endif
-#include <postit.hxx>
#include <PostItMgr.hxx>
#include <fmtfld.hxx>
@@ -320,7 +304,8 @@ void SwEditWin::RequestHelp(const HelpEvent &rEvt)
{
USHORT nOldSubType = pFld->GetSubType();
((SwField*)pFld)->SetSubType(nsSwExtendedSubType::SUB_CMD);
- sTxt = pFld->Expand();
+ sTxt =
+ pFld->ExpandField(rSh.GetDoc()->IsClipBoard());
((SwField*)pFld)->SetSubType(nOldSubType);
}
break;
diff --git a/sw/source/ui/docvw/frmsidebarwincontainer.cxx b/sw/source/ui/docvw/frmsidebarwincontainer.cxx
new file mode 100644
index 000000000000..b5e406dcf69b
--- /dev/null
+++ b/sw/source/ui/docvw/frmsidebarwincontainer.cxx
@@ -0,0 +1,216 @@
+ /*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sw.hxx"
+
+#include <frmsidebarwincontainer.hxx>
+
+#include <map>
+#include <fmtfld.hxx>
+#include <txtfld.hxx>
+#include <SidebarWin.hxx>
+
+namespace {
+ struct SidebarWinKey
+ {
+ const xub_StrLen mnIndex;
+
+ explicit SidebarWinKey( const xub_StrLen nIndex )
+ : mnIndex( nIndex )
+ {}
+
+ bool operator < ( const SidebarWinKey& rSidebarWinKey ) const
+ {
+ return mnIndex < rSidebarWinKey.mnIndex;
+ }
+ };
+
+ struct SidebarWinOrder
+ {
+ sal_Bool operator()( const SidebarWinKey& rSidebarWinKeyA,
+ const SidebarWinKey& rSidebarWinKeyB ) const
+ {
+ return rSidebarWinKeyA < rSidebarWinKeyB;
+ }
+ };
+
+ typedef ::std::map < SidebarWinKey, sw::sidebarwindows::SwSidebarWin*, SidebarWinOrder > SidebarWinContainer;
+
+ struct FrmKey
+ {
+ const SwFrm* mpFrm;
+
+ explicit FrmKey( const SwFrm* pFrm )
+ : mpFrm( pFrm )
+ {}
+
+ bool operator < ( const FrmKey& rFrmKey ) const
+ {
+ return mpFrm < rFrmKey.mpFrm;
+ }
+ };
+
+ struct FrmOrder
+ {
+ sal_Bool operator()( const FrmKey& rFrmKeyA,
+ const FrmKey& rFrmKeyB ) const
+ {
+ return rFrmKeyA < rFrmKeyB;
+ }
+ };
+
+ typedef ::std::map < FrmKey, SidebarWinContainer, FrmOrder > _FrmSidebarWinContainer;
+}
+
+namespace sw { namespace sidebarwindows {
+
+class FrmSidebarWinContainer : public _FrmSidebarWinContainer
+{
+};
+
+SwFrmSidebarWinContainer::SwFrmSidebarWinContainer()
+ : mpFrmSidebarWinContainer( new FrmSidebarWinContainer() )
+{}
+
+SwFrmSidebarWinContainer::~SwFrmSidebarWinContainer()
+{
+ mpFrmSidebarWinContainer->clear();
+ delete mpFrmSidebarWinContainer;
+}
+
+bool SwFrmSidebarWinContainer::insert( const SwFrm& rFrm,
+ const SwFmtFld& rFmtFld,
+ SwSidebarWin& rSidebarWin )
+{
+ bool bInserted( false );
+
+ FrmKey aFrmKey( &rFrm );
+ SidebarWinContainer& rSidebarWinContainer = (*mpFrmSidebarWinContainer)[ aFrmKey ];
+
+ SidebarWinKey aSidebarWinKey( *(rFmtFld.GetTxtFld()->GetStart()) );
+ if ( rSidebarWinContainer.empty() ||
+ rSidebarWinContainer.find( aSidebarWinKey) == rSidebarWinContainer.end() )
+ {
+ rSidebarWinContainer[ aSidebarWinKey ] = &rSidebarWin;
+ bInserted = true;
+ }
+
+ return bInserted;
+}
+
+bool SwFrmSidebarWinContainer::remove( const SwFrm& rFrm,
+ const SwSidebarWin& rSidebarWin )
+{
+ bool bRemoved( false );
+
+ FrmKey aFrmKey( &rFrm );
+ FrmSidebarWinContainer::iterator aFrmIter = mpFrmSidebarWinContainer->find( aFrmKey );
+ if ( aFrmIter != mpFrmSidebarWinContainer->end() )
+ {
+ SidebarWinContainer& rSidebarWinContainer = (*aFrmIter).second;
+ for ( SidebarWinContainer::iterator aIter = rSidebarWinContainer.begin();
+ aIter != rSidebarWinContainer.end();
+ ++aIter )
+ {
+ if ( (*aIter).second == &rSidebarWin )
+ {
+ rSidebarWinContainer.erase( aIter );
+ bRemoved = true;
+ break;
+ }
+ }
+ }
+
+ return bRemoved;
+}
+
+bool SwFrmSidebarWinContainer::empty( const SwFrm& rFrm )
+{
+ bool bEmpty( true );
+
+ FrmKey aFrmKey( &rFrm );
+ FrmSidebarWinContainer::iterator aFrmIter = mpFrmSidebarWinContainer->find( aFrmKey );
+ if ( aFrmIter != mpFrmSidebarWinContainer->end() )
+ {
+ bEmpty = (*aFrmIter).second.empty();
+ }
+
+ return bEmpty;
+}
+
+SwSidebarWin* SwFrmSidebarWinContainer::get( const SwFrm& rFrm,
+ const sal_Int32 nIndex )
+{
+ SwSidebarWin* pRet( 0 );
+
+ FrmKey aFrmKey( &rFrm );
+ FrmSidebarWinContainer::iterator aFrmIter = mpFrmSidebarWinContainer->find( aFrmKey );
+ if ( aFrmIter != mpFrmSidebarWinContainer->end() )
+ {
+ SidebarWinContainer& rSidebarWinContainer = (*aFrmIter).second;
+ sal_Int32 nCounter( nIndex );
+ for ( SidebarWinContainer::iterator aIter = rSidebarWinContainer.begin();
+ nCounter >= 0 && aIter != rSidebarWinContainer.end();
+ ++aIter )
+ {
+ if ( nCounter == 0 )
+ {
+ pRet = (*aIter).second;
+ break;
+ }
+
+ --nCounter;
+ }
+ }
+
+ return pRet;
+}
+
+void SwFrmSidebarWinContainer::getAll( const SwFrm& rFrm,
+ std::vector< Window* >* pSidebarWins )
+{
+ pSidebarWins->clear();
+
+ FrmKey aFrmKey( &rFrm );
+ FrmSidebarWinContainer::iterator aFrmIter = mpFrmSidebarWinContainer->find( aFrmKey );
+ if ( aFrmIter != mpFrmSidebarWinContainer->end() )
+ {
+ SidebarWinContainer& rSidebarWinContainer = (*aFrmIter).second;
+ for ( SidebarWinContainer::iterator aIter = rSidebarWinContainer.begin();
+ aIter != rSidebarWinContainer.end();
+ ++aIter )
+ {
+ pSidebarWins->push_back( (*aIter).second );
+ }
+ }
+}
+
+} } // eof of namespace sw::sidebarwindows::
diff --git a/sw/source/ui/docvw/frmsidebarwincontainer.hxx b/sw/source/ui/docvw/frmsidebarwincontainer.hxx
new file mode 100644
index 000000000000..1583f36a0bb6
--- /dev/null
+++ b/sw/source/ui/docvw/frmsidebarwincontainer.hxx
@@ -0,0 +1,73 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+#ifndef _FRMSIDEBARWINCONTAINER_HXX
+#define _FRMSIDEBARWINCONTAINER_HXX
+
+#include <sal/types.h>
+#include <vector>
+
+class SwFrm;
+class SwFmtFld;
+class Window;
+
+namespace sw { namespace sidebarwindows {
+
+class SwSidebarWin;
+class FrmSidebarWinContainer;
+
+class SwFrmSidebarWinContainer
+{
+ public:
+ SwFrmSidebarWinContainer();
+ ~SwFrmSidebarWinContainer();
+
+ bool insert( const SwFrm& rFrm,
+ const SwFmtFld& rFmtFld,
+ SwSidebarWin& rSidebarWin );
+
+ bool remove( const SwFrm& rFrm,
+ const SwSidebarWin& rSidebarWin );
+
+ bool empty( const SwFrm& rFrm );
+
+ SwSidebarWin* get( const SwFrm& rFrm,
+ const sal_Int32 nIndex );
+
+ void getAll( const SwFrm& rFrm,
+ std::vector< Window* >* pSidebarWins );
+
+ private:
+ FrmSidebarWinContainer* mpFrmSidebarWinContainer;
+};
+
+} } // eof of namespace sw::sidebarwindows::
+
+#endif
+
diff --git a/sw/source/ui/docvw/makefile.mk b/sw/source/ui/docvw/makefile.mk
index c3644c83f267..a2914b2f86b7 100644
--- a/sw/source/ui/docvw/makefile.mk
+++ b/sw/source/ui/docvw/makefile.mk
@@ -42,7 +42,8 @@ ENABLE_EXCEPTIONS=TRUE
SRS1NAME=$(TARGET)
SRC1FILES = \
access.src \
- docvw.src
+ docvw.src \
+ annotation.src
SLOFILES = \
$(SLO)$/edtdd.obj \
@@ -51,8 +52,16 @@ SLOFILES = \
$(SLO)$/edtwin3.obj \
$(SLO)$/romenu.obj \
$(SLO)$/srcedtw.obj \
- $(SLO)$/postit.obj \
- $(SLO)$/PostItMgr.obj
+ $(SLO)$/PostItMgr.obj \
+ $(SLO)$/frmsidebarwincontainer.obj \
+ $(SLO)$/AnchorOverlayObject.obj \
+ $(SLO)$/ShadowOverlayObject.obj \
+ $(SLO)$/SidebarWin.obj \
+ $(SLO)$/SidebarWinAcc.obj \
+ $(SLO)$/AnnotationWin.obj \
+ $(SLO)$/AnnotationMenuButton.obj \
+ $(SLO)$/SidebarTxtControl.obj \
+ $(SLO)$/SidebarTxtControlAcc.obj
# --- Tagets -------------------------------------------------------
diff --git a/sw/source/ui/docvw/postit.cxx b/sw/source/ui/docvw/postit.cxx
deleted file mode 100644
index 06d26534abfd..000000000000
--- a/sw/source/ui/docvw/postit.cxx
+++ /dev/null
@@ -1,2482 +0,0 @@
-/************************************************************************* *
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * 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.
- *
- ************************************************************************/
-
-
-#include "precompiled_sw.hxx"
-#include <postit.hxx>
-#include <PostItMgr.hxx>
-
-#include <popup.hrc>
-#include <docvw.hrc>
-#include <app.hrc>
-
-#include <hintids.hxx>
-#include "viewopt.hxx"
-#include "cmdid.h"
-
-#include <tools/poly.hxx> // Polygon
-
-#include <editeng/postitem.hxx>
-#include <editeng/fontitem.hxx>
-#include <editeng/eeitem.hxx>
-#include <editeng/fhgtitem.hxx>
-#include <editeng/bulitem.hxx>
-#include <editeng/udlnitem.hxx>
-#include <editeng/shdditem.hxx>
-#include <editeng/wghtitem.hxx>
-#include <editeng/colritem.hxx>
-#include <editeng/flditem.hxx>
-#include <editeng/frmdir.hxx>
-#include <editeng/frmdiritem.hxx>
-#include <editeng/langitem.hxx>
-#include <editeng/adjitem.hxx>
-#include <editeng/editview.hxx>
-#include <svx/svdview.hxx>
-#include <svx/sdrpaintwindow.hxx>
-#include <svx/sdr/overlay/overlaymanager.hxx>
-#include <editeng/editstat.hxx> //EditEngine flags
-#include <editeng/outliner.hxx>
-#include <editeng/editeng.hxx>
-#include <editeng/editobj.hxx>
-#include <editeng/unolingu.hxx>
-
-#include <svtools/langtab.hxx>
-#include <svl/slstitm.hxx>
-#include <unotools/securityoptions.hxx>
-#include <unotools/useroptions.hxx>
-#include <svl/languageoptions.hxx>
-#include <svl/zforlist.hxx>
-#include <svtools/svmedit.hxx>
-
-#include <linguistic/lngprops.hxx>
-
-#include <sfx2/request.hxx>
-#include <sfx2/viewfrm.hxx>
-#include <sfx2/bindings.hxx>
-#include <sfx2/dispatch.hxx>
-#include <sfx2/mnumgr.hxx>
-
-#include <vcl/vclenum.hxx>
-#include <vcl/edit.hxx>
-#include <vcl/help.hxx>
-#include <vcl/scrbar.hxx>
-#include <vcl/button.hxx>
-#include <vcl/svapp.hxx>
-#include <vcl/gradient.hxx>
-#include <vcl/salbtype.hxx> // FRound
-#include <vcl/msgbox.hxx>
-
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <basegfx/tuple/b2dtuple.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-
-#include <swrect.hxx>
-#include <docufld.hxx> // SwPostItField
-#include <edtwin.hxx>
-#include <view.hxx>
-#include <viewsh.hxx>
-#include <docsh.hxx>
-#include <shellres.hxx>
-#include <fmtfld.hxx>
-#include <wrtsh.hxx>
-#include <textsh.hxx>
-#include <doc.hxx>
-#include <txtfld.hxx>
-#include <redline.hxx>
-#include <uitool.hxx>
-#include <SwUndoField.hxx>
-#include <editsh.hxx>
-#include <swmodule.hxx>
-#include <node.hxx>
-#include <ndtxt.hxx>
-#include <langhelper.hxx>
-
-#include <sw_primitivetypes2d.hxx>
-#include <drawinglayer/primitive2d/primitivetools2d.hxx>
-#include <drawinglayer/primitive2d/fillgradientprimitive2d.hxx>
-#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
-#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
-#include <drawinglayer/primitive2d/shadowprimitive2d.hxx>
-
-using namespace ::com::sun::star;
-
-#define METABUTTON_WIDTH 16
-#define METABUTTON_HEIGHT 18
-#define METABUTTON_AREA_WIDTH 30
-#define POSTIT_META_HEIGHT (sal_Int32) 30
-#define POSTIT_MINIMUMSIZE_WITHOUT_META 50
-
-#define POSTIT_SHADOW_BRIGHT Color(180,180,180)
-#define POSTIT_SHADOW_DARK Color(83,83,83)
-
-#define LINEBREAK rtl::OUString::createFromAscii("\n")
-#define EMPTYSTRING rtl::OUString::createFromAscii("")
-
-TYPEINIT0(SwMarginWin);
-TYPEINIT1(SwPostIt,SwMarginWin);
-//TYPEINIT1(SwRedComment,SwMarginWin);
-
-Color ColorFromAlphaColor(UINT8 aTransparency, Color &aFront, Color &aBack )
-{
- return Color((UINT8)(aFront.GetRed() * aTransparency/(double)255 + aBack.GetRed() * (1-aTransparency/(double)255)),
- (UINT8)(aFront.GetGreen() * aTransparency/(double)255 + aBack.GetGreen() * (1-aTransparency/(double)255)),
- (UINT8)(aFront.GetBlue() * aTransparency/(double)255 + aBack.GetBlue() * (1-aTransparency/(double)255)));
-}
-
-/************ PostItTxt **************************************/
-PostItTxt::PostItTxt(Window* pParent, WinBits nBits) : Window(pParent, nBits), mpOutlinerView(0),mMouseOver(false),mbShowPopup(FALSE)
-{
- SetHelpId(26276);
- AddEventListener( LINK( this, PostItTxt, WindowEventListener ) );
- mpMarginWin = static_cast<SwMarginWin*>(GetParent());
-}
-
-PostItTxt::~PostItTxt()
-{
- RemoveEventListener( LINK( this, PostItTxt, WindowEventListener ) );
-}
-
-void PostItTxt::GetFocus()
-{
- BOOL bLockView = mpMarginWin->DocView()->GetWrtShell().IsViewLocked();
- mpMarginWin->DocView()->GetWrtShell().LockView( TRUE );
-
- if(mpMarginWin && !mpMarginWin->IsPreview())
- mpMarginWin->Mgr()->SetActivePostIt(mpMarginWin);
- Window::GetFocus();
- if (!mMouseOver)
- Invalidate();
-
- mpMarginWin->DocView()->GetWrtShell().LockView( bLockView );
- mpMarginWin->Mgr()->MakeVisible(mpMarginWin);
-}
-
-void PostItTxt::LoseFocus()
-{
- // write the visible text back into the SwField
- if ( mpMarginWin )
- mpMarginWin->UpdateData();
-
- Window::LoseFocus();
- if (!mMouseOver)
- Invalidate();
-}
-
-void PostItTxt::RequestHelp(const HelpEvent &rEvt)
-{
- USHORT nResId = 0;
- switch( mpMarginWin->GetStatus() )
- {
- case SwPostItHelper::INSERTED: nResId = STR_REDLINE_INSERT; break;
- case SwPostItHelper::DELETED: nResId = STR_REDLINE_DELETE; break;
- default: nResId = 0;
- }
-
- SwContentAtPos aCntntAtPos( SwContentAtPos::SW_REDLINE );
- if ( nResId && mpMarginWin->DocView()->GetWrtShell().GetContentAtPos( mpMarginWin->GetAnkorRect().Pos(), aCntntAtPos ) )
- {
- String sTxt;
- sTxt = SW_RESSTR( nResId );
- sTxt.AppendAscii( RTL_CONSTASCII_STRINGPARAM(": " ));
- sTxt += aCntntAtPos.aFnd.pRedl->GetAuthorString();
- sTxt.AppendAscii( RTL_CONSTASCII_STRINGPARAM( " - " ));
- sTxt += GetAppLangDateTimeString( aCntntAtPos.aFnd.pRedl->GetTimeStamp() );
- Help::ShowQuickHelp( this,PixelToLogic(Rectangle(rEvt.GetMousePosPixel(),Size(50,10))),sTxt);
- }
-}
-
-void PostItTxt::Paint( const Rectangle& rRect)
-{
- if ( !Application::GetSettings().GetStyleSettings().GetHighContrastMode() )
- {
- if (mMouseOver || HasFocus())
- DrawGradient(Rectangle(Point(0,0),PixelToLogic(GetSizePixel())),
- Gradient(GRADIENT_LINEAR,mpMarginWin->ColorDark(),mpMarginWin->ColorDark()));
- else
- DrawGradient(Rectangle(Point(0,0),PixelToLogic(GetSizePixel())),
- Gradient(GRADIENT_LINEAR,mpMarginWin->ColorLight(),mpMarginWin->ColorDark()));
- }
-
- mpOutlinerView->Paint( rRect );
-
- if (mpMarginWin->GetStatus()==SwPostItHelper::DELETED)
- {
- SetLineColor(static_cast<SwPostIt*>(mpMarginWin)->GetChangeColor());
- DrawLine(PixelToLogic(GetPosPixel()),PixelToLogic(GetPosPixel()+Point(GetSizePixel().Width(),GetSizePixel().Height())));
- DrawLine(PixelToLogic(GetPosPixel()+Point(GetSizePixel().Width(),0)),PixelToLogic(GetPosPixel()+Point(0,GetSizePixel().Height())));
- }
-}
-
-void PostItTxt::KeyInput( const KeyEvent& rKeyEvt )
-{
- const KeyCode& rKeyCode = rKeyEvt.GetKeyCode();
- USHORT nKey = rKeyCode.GetCode();
- SwView* pView = mpMarginWin->DocView();
- if ((rKeyCode.IsMod1() && rKeyCode.IsMod2()) && ((nKey == KEY_PAGEUP) || (nKey == KEY_PAGEDOWN)))
- mpMarginWin->SwitchToPostIt(nKey);
- else
- if ((nKey == KEY_ESCAPE) || (rKeyCode.IsMod1() && ((nKey == KEY_PAGEUP) || (nKey == KEY_PAGEDOWN))))
- mpMarginWin->SwitchToFieldPos();
- else
- if (nKey == KEY_INSERT)
- {
- if (!rKeyCode.IsMod1() && !rKeyCode.IsMod2())
- mpMarginWin->ToggleInsMode();
- }
- else
- {
- //let's make sure we see our note
- mpMarginWin->Mgr()->MakeVisible(mpMarginWin);
-
- long aOldHeight = mpMarginWin->GetPostItTextHeight();
- bool bDone = false;
-
- /// HACK: need to switch off processing of Undo/Redo in Outliner
- if ( !( (nKey == KEY_Z || nKey == KEY_Y) && rKeyCode.IsMod1()) )
- {
- /*
- SwPostItHelper::SwLayoutStatus aStatus = mpMarginWin->GetStatus();
- if ( (aStatus!=SwPostItHelper::DELETED) ||
- ( (aStatus==SwPostItHelper::DELETED) && (!mpMarginWin->Engine()->GetEditEngine().DoesKeyChangeText(rKeyEvt))) )
- */
- bool bIsProtected = mpMarginWin->IsProtected();
- if (!bIsProtected || (bIsProtected && !mpMarginWin->Engine()->GetEditEngine().DoesKeyChangeText(rKeyEvt)) )
- bDone = mpOutlinerView->PostKeyEvent( rKeyEvt );
- else
- InfoBox( this, SW_RES( MSG_READONLY_CONTENT )).Execute();
- }
- if (bDone)
- mpMarginWin->ResizeIfNeccessary(aOldHeight,mpMarginWin->GetPostItTextHeight());
- else
- {
- // write back data first when showing navigator
- if ( nKey==KEY_F5 )
- mpMarginWin->UpdateData();
- if (!pView->KeyInput(rKeyEvt))
- Window::KeyInput(rKeyEvt);
- }
- }
-
- pView->GetViewFrame()->GetBindings().InvalidateAll(FALSE);
-}
-
-void PostItTxt::MouseMove( const MouseEvent& rMEvt )
-{
- if ( mpOutlinerView )
- {
- mpOutlinerView->MouseMove( rMEvt );
- // mba: why does OutlinerView not handle the modifier setting?!
- // this forces the postit to handle *all* pointer types
- SetPointer( mpOutlinerView->GetPointer( rMEvt.GetPosPixel() ) );
-
- const EditView& aEV = mpOutlinerView->GetEditView();
- const SvxFieldItem* pItem = aEV.GetFieldUnderMousePointer();
- if ( pItem )
- {
- const SvxFieldData* pFld = pItem->GetField();
- const SvxURLField* pURL = PTR_CAST( SvxURLField, pFld );
- if ( pURL )
- {
- String sURL( pURL->GetURL() );
- SvtSecurityOptions aSecOpts;
- if ( aSecOpts.IsOptionSet( SvtSecurityOptions::E_CTRLCLICK_HYPERLINK) )
- {
- sURL.InsertAscii( ": ", 0 );
- sURL.Insert( ViewShell::GetShellRes()->aHyperlinkClick, 0 );
- }
- Help::ShowQuickHelp( this,PixelToLogic(Rectangle(GetPosPixel(),Size(50,10))),sURL);
- }
- }
- }
-}
-
-void PostItTxt::MouseButtonDown( const MouseEvent& rMEvt )
-{
- if (mpOutlinerView )
- {
- SvtSecurityOptions aSecOpts;
- bool bExecuteMod = aSecOpts.IsOptionSet( SvtSecurityOptions::E_CTRLCLICK_HYPERLINK);
-
- if ( !bExecuteMod || (bExecuteMod && rMEvt.GetModifier() == KEY_MOD1))
- {
- const EditView& aEV = mpOutlinerView->GetEditView();
- const SvxFieldItem* pItem = aEV.GetFieldUnderMousePointer();
- if ( pItem )
- {
- const SvxFieldData* pFld = pItem->GetField();
- const SvxURLField* pURL = PTR_CAST( SvxURLField, pFld );
- if ( pURL )
- {
- mpOutlinerView->MouseButtonDown( rMEvt );
- SwWrtShell &rSh = mpMarginWin->DocView()->GetWrtShell();
- String sURL( pURL->GetURL() );
- String sTarget( pURL->GetTargetFrame() );
- ::LoadURL( sURL, &rSh, URLLOAD_NOFILTER, &sTarget);
- return;
- }
- }
- }
- }
-
- GrabFocus();
- if ( mpOutlinerView )
- mpOutlinerView->MouseButtonDown( rMEvt );
- mpMarginWin->DocView()->GetViewFrame()->GetBindings().InvalidateAll(FALSE);
-}
-
-void PostItTxt::MouseButtonUp( const MouseEvent& rMEvt )
-{
- if ( mpOutlinerView )
- mpOutlinerView->MouseButtonUp( rMEvt );
-}
-
-IMPL_LINK(PostItTxt, OnlineSpellCallback, SpellCallbackInfo*, pInfo)
-{
- if ( mpMarginWin && (pInfo->nCommand == SPELLCMD_STARTSPELLDLG) )
- mpMarginWin->DocView()->GetViewFrame()->GetDispatcher()->Execute( FN_SPELL_GRAMMAR_DIALOG, SFX_CALLMODE_ASYNCHRON);
- return 0;
-}
-
-IMPL_LINK( PostItTxt, Select, Menu*, pSelMenu )
-{
- mpMarginWin->ExecuteCommand( pSelMenu->GetCurItemId() );
- return 0;
-}
-
-void PostItTxt::Command( const CommandEvent& rCEvt )
-{
- if ( rCEvt.GetCommand() == COMMAND_CONTEXTMENU )
- {
- if (!mpMarginWin->IsProtected() &&
- //if (!mpMarginWin->IsReadOnly() && (mpMarginWin->GetStatus()!=SwPostItHelper::DELETED) &&
- mpOutlinerView->IsWrongSpelledWordAtPos( rCEvt.GetMousePosPixel(),TRUE ))
- {
- Link aLink = LINK(this, PostItTxt, OnlineSpellCallback);
- mpOutlinerView->ExecuteSpellPopup(rCEvt.GetMousePosPixel(),&aLink);
- }
- else
- {
- SfxPopupMenuManager* aMgr = mpMarginWin->DocView()->GetViewFrame()->GetDispatcher()->Popup(0, this,&rCEvt.GetMousePosPixel());
- XubString aText = ((PopupMenu*)aMgr->GetSVMenu())->GetItemText( FN_DELETE_NOTE_AUTHOR );
- SwRewriter aRewriter;
- aRewriter.AddRule(UNDO_ARG1, mpMarginWin->GetAuthor());
- aText = aRewriter.Apply(aText);
- ((PopupMenu*)aMgr->GetSVMenu())->SetItemText(FN_DELETE_NOTE_AUTHOR,aText);
- // SwPostItLinkForwarder_Impl aFwd( ((PopupMenu*)aMgr->GetSVMenu())->pSvMenu->GetSelectHdl(), mpPostIt );
- // ((PopupMenu*)aMgr->GetSVMenu())->pSvMenu->SetSelectHdl( LINK(&aFwd, SwPostItLinkForwarder_Impl, Select) );
-
- ((PopupMenu*)aMgr->GetSVMenu())->SetSelectHdl( LINK(this, PostItTxt, Select) );
-
- if (rCEvt.IsMouseEvent())
- ((PopupMenu*)aMgr->GetSVMenu())->Execute(this,rCEvt.GetMousePosPixel());
- else
- {
- const Size aSize = GetSizePixel();
- const Point aPos = Point( aSize.getWidth()/2, aSize.getHeight()/2 );
- ((PopupMenu*)aMgr->GetSVMenu())->Execute(this,aPos);
- }
- delete aMgr;
- }
- }
- else
- if (rCEvt.GetCommand() == COMMAND_WHEEL)
- {
- if (mpMarginWin->Scrollbar()->IsVisible())
- {
- const CommandWheelData* pData = rCEvt.GetWheelData();
- if (pData->IsShift() || pData->IsMod1() || pData->IsMod2())
- {
- mpMarginWin->DocView()->HandleWheelCommands(rCEvt);
- }
- else
- {
- HandleScrollCommand( rCEvt, 0 , mpMarginWin->Scrollbar());
-
- /*
- long nLines = pData->GetNotchDelta() * (long)pData->GetScrollLines();
- if ( ((mpMarginWin->Scrollbar()->GetRange().Min() == mpMarginWin->Scrollbar()->GetThumbPos()) && (nLines > 0)) ||
- ( (mpMarginWin->Scrollbar()->GetRange().Max() == mpMarginWin->Scrollbar()->GetThumbPos()+mpMarginWin->Scrollbar()->GetVisibleSize()) && (nLines < 0)) )
- {
- mpMarginWin->DocView()->HandleWheelCommands(rCEvt);
- }
- else
- {
- HandleScrollCommand( rCEvt, 0 , mpMarginWin->Scrollbar());
- }
- */
- }
- }
- else
- {
- mpMarginWin->DocView()->HandleWheelCommands(rCEvt);
- }
- }
- else
- {
- if ( mpOutlinerView )
- mpOutlinerView->Command( rCEvt );
- else
- Window::Command(rCEvt);
- }
-}
-
-void PostItTxt::DataChanged( const DataChangedEvent& aData)
-{
- Window::DataChanged( aData );
-}
-
-IMPL_LINK( PostItTxt, WindowEventListener, VclSimpleEvent*, pWinEvent )
-{
- if ( pWinEvent && pWinEvent->ISA( VclWindowEvent ) )
- {
- VclWindowEvent *pEvent = (VclWindowEvent*)pWinEvent;
- if (pEvent->GetId() == VCLEVENT_WINDOW_MOUSEMOVE)
- {
- MouseEvent* pMouseEvt = (MouseEvent*)pEvent->GetData();
- if ( pMouseEvt->IsEnterWindow() )
- {
- mMouseOver = true;
- if (!mbShowPopup && !HasFocus())
- {
- mpMarginWin->SetViewState(SS_VIEW);
- Invalidate();
- }
- }
- else if ( pMouseEvt->IsLeaveWindow())
- {
- if (mpMarginWin->IsPreview())
- {
- //mpMarginWin->doLazyDelete();
- }
- else
- {
- mMouseOver = false;
- if (!mbShowPopup && !HasFocus())
- {
- mpMarginWin->SetViewState(SS_NORMAL);
- Invalidate();
- }
- }
- }
- }
- }
- return sal_True;
-}
-
-XubString PostItTxt::GetSurroundingText() const
-{
- if( mpOutlinerView )
- return mpOutlinerView->GetSurroundingText();
- else
- return XubString::EmptyString();
-}
-
-Selection PostItTxt::GetSurroundingTextSelection() const
-{
- if( mpOutlinerView )
- return mpOutlinerView->GetSurroundingTextSelection();
- else
- return Selection( 0, 0 );
-}
-
-/************** SwMarginWin***********************************++*/
-SwMarginWin::SwMarginWin(Window* pParent, WinBits nBits,SwPostItMgr* aMgr,SwPostItBits aBits)
-: Window(pParent, nBits),
- mnEventId(0),
- mpOutlinerView(0),
- mpOutliner(0),
- mpPostItTxt(0),
- mpMeta(0),
- mpVScrollbar(0),
- mpAnkor(0),
- mpShadow(0),
- mpMgr(aMgr),
- mbMeta(true),
- nFlags(aBits),
- mbMouseOverButton(false),
- mpButtonPopup(0),
- mbIsFollow(false)
-{
- SwEditWin* aWin = static_cast<SwEditWin*>(GetParent());
- mpView = &aWin->GetView();
-
- SdrPaintWindow* pPaintWindow = mpView->GetDrawView()->GetPaintWindow(0);
- if(pPaintWindow)
- {
- pOverlayManager = pPaintWindow->GetOverlayManager();
-
- mpShadow = new SwPostItShadow(basegfx::B2DPoint(0,0),basegfx::B2DPoint(0,0),Color(0,0,0),SS_NORMAL);
- mpShadow->setVisible(false);
- pOverlayManager->add(*mpShadow);
- }
-}
-
-SwMarginWin::~SwMarginWin()
-{
- if (mpOutlinerView)
- {
- delete mpOutlinerView;
- }
-
- if (mpOutliner)
- {
- delete mpOutliner;
- }
-
- if (mpMeta)
- {
- mpMeta->RemoveEventListener( LINK( mpPostItTxt, PostItTxt, WindowEventListener ) );
- delete mpMeta;
- }
-
- if (mpPostItTxt)
- {
- delete mpPostItTxt;
- }
-
- if (mpVScrollbar)
- {
- delete mpVScrollbar;
- }
-
- if (mpAnkor)
- {
- if (mpAnkor->getOverlayManager())
- {
- // remove this object from the chain
- mpAnkor->getOverlayManager()->remove(*mpAnkor);
- }
- delete mpAnkor;
- }
-
- if (mpShadow)
- {
- if (mpShadow->getOverlayManager())
- {
- mpShadow->getOverlayManager()->remove(*mpShadow);
- }
- delete mpShadow;
- }
-
- if (mpButtonPopup)
- {
- delete mpButtonPopup;
- }
-
- if (mnEventId)
- Application::RemoveUserEvent( mnEventId );
-}
-
-void SwMarginWin::Paint( const Rectangle& rRect)
-{
- Window::Paint(rRect);
-
- if (mpMeta->IsVisible() )
- {
- //draw left over space
- if ( Application::GetSettings().GetStyleSettings().GetHighContrastMode() )
- SetFillColor(COL_BLACK);
- else
- SetFillColor(mColorDark);
- SetLineColor();
- DrawRect(PixelToLogic(Rectangle(Point(mpMeta->GetPosPixel().X()+mpMeta->GetSizePixel().Width(),mpMeta->GetPosPixel().Y()),Size(GetMetaButtonAreaWidth(),mpMeta->GetSizePixel().Height()))));
-
- if ( Application::GetSettings().GetStyleSettings().GetHighContrastMode())
- {
- //draw rect around button
- SetFillColor(COL_BLACK);
- SetLineColor(COL_WHITE);
- }
- else
- {
- //draw button
- Gradient aGradient;
- if (mbMouseOverButton)
- aGradient = Gradient(GRADIENT_LINEAR,ColorFromAlphaColor(80,mColorAnkor,mColorDark),ColorFromAlphaColor(15,mColorAnkor,mColorDark));
- else
- aGradient = Gradient(GRADIENT_LINEAR,ColorFromAlphaColor(15,mColorAnkor,mColorDark),ColorFromAlphaColor(80,mColorAnkor,mColorDark));
- DrawGradient(mRectMetaButton,aGradient);
- //draw rect around button
- SetFillColor();
- SetLineColor(ColorFromAlphaColor(90,mColorAnkor,mColorDark));
- }
- DrawRect(mRectMetaButton);
-
- if (IsPreview())
- {
- Font aOldFont( GetFont());
- Font aFont(aOldFont);
- Color aCol( COL_BLACK);
- aFont.SetColor( aCol );
- aFont.SetHeight(200);
- aFont.SetWeight(WEIGHT_MEDIUM);
- SetFont( aFont );
- DrawText(mRectMetaButton,rtl::OUString::createFromAscii("Edit Note"),TEXT_DRAW_CENTER);
- SetFont( aOldFont );
- }
- else
- {
- //draw arrow
- if ( Application::GetSettings().GetStyleSettings().GetHighContrastMode() )
- SetFillColor(COL_WHITE);
- else
- SetFillColor(COL_BLACK);
- SetLineColor();
- DrawPolygon(Polygon(aPopupTriangle));
- }
- }
-}
-
-void SwMarginWin::SetPosSizePixelRect(long nX, long nY,long nWidth, long nHeight,const SwRect &aRect, const long aPageBorder)
-{
- mbMeta = true;
- mPosSize = Rectangle(Point(nX,nY),Size(nWidth,nHeight));
- mAnkorRect = aRect;
- mPageBorder = aPageBorder;
-}
-
-void SwMarginWin::SetSize( const Size& rNewSize )
-{
- mPosSize.SetSize(rNewSize);
-}
-
-void SwMarginWin::SetVirtualPosSize( const Point& aPoint, const Size& aSize)
-{
- mPosSize = Rectangle(aPoint,aSize);
-}
-
-void SwMarginWin::TranslateTopPosition(const long aAmount)
-{
- mPosSize.Move(0,aAmount);
-}
-
-void SwMarginWin::ShowAnkorOnly(const Point &aPoint)
-{
- HideNote();
- SetPosAndSize();
- if (mpAnkor)
- {
- mpAnkor->SetSixthPosition(basegfx::B2DPoint(aPoint.X(),aPoint.Y()));
- mpAnkor->SetSeventhPosition(basegfx::B2DPoint(aPoint.X(),aPoint.Y()));
- mpAnkor->SetAnkorState(AS_ALL);
- mpAnkor->setVisible(true);
- }
- if (mpShadow)
- mpShadow->setVisible(false);
-}
-
-SfxItemSet SwMarginWin::DefaultItem()
-{
- SfxItemSet aItem( mpView->GetDocShell()->GetPool() );
- aItem.Put(SvxFontHeightItem(200,100,EE_CHAR_FONTHEIGHT));
- aItem.Put(SvxFontItem(FAMILY_SWISS,GetSettings().GetStyleSettings().GetFieldFont().GetName(),
- EMPTYSTRING,PITCH_DONTKNOW,RTL_TEXTENCODING_DONTKNOW,EE_CHAR_FONTINFO));
- return aItem;
-}
-
-void SwMarginWin::InitControls()
-{
- // actual window which holds the user text
- mpPostItTxt = new PostItTxt(this, WB_NODIALOGCONTROL);
- mpPostItTxt->SetPointer(Pointer(POINTER_TEXT));
-
- // window control for author and date
- mpMeta = new MultiLineEdit(this,0);
- mpMeta->SetReadOnly();
- mpMeta->SetRightToLeft(Application::GetSettings().GetLayoutRTL());
- mpMeta->AlwaysDisableInput(true);
- mpMeta->SetCallHandlersOnInputDisabled(true);
- mpMeta->AddEventListener( LINK( mpPostItTxt, PostItTxt, WindowEventListener ) );
- AddEventListener( LINK( mpPostItTxt, PostItTxt, WindowEventListener ) );
-
- // we should leave this setting alone, but for this we need a better layout algo
- // with variable meta size height
- AllSettings aSettings = mpMeta->GetSettings();
- StyleSettings aStyleSettings = aSettings.GetStyleSettings();
- Font aFont = aStyleSettings.GetFieldFont();
- aFont.SetHeight(8);
- aStyleSettings.SetFieldFont(aFont);
- aSettings.SetStyleSettings(aStyleSettings);
- mpMeta->SetSettings(aSettings);
-
- SwDocShell* aShell = mpView->GetDocShell();
- mpOutliner = new Outliner(&aShell->GetPool(),OUTLINERMODE_TEXTOBJECT);
- aShell->GetDoc()->SetCalcFieldValueHdl( mpOutliner );
- // mpOutliner->EnableUndo( FALSE );
- mpOutliner->SetUpdateMode( TRUE );
- Rescale();
-
- OutputDevice* pDev = aShell->GetDoc()->getReferenceDevice(TRUE);
- if ( pDev )
- {
- mpOutliner->SetRefDevice( pDev );
- }
-
- mpOutlinerView = new OutlinerView ( mpOutliner, mpPostItTxt );
- mpOutlinerView->SetBackgroundColor(COL_TRANSPARENT);
- mpOutliner->InsertView(mpOutlinerView );
- mpPostItTxt->SetTextView(mpOutlinerView);
- mpOutlinerView->SetOutputArea( PixelToLogic( Rectangle(0,0,1,1) ) );
-
- mpOutlinerView->SetAttribs(DefaultItem());
-
- // TODO: ??
- EEHorizontalTextDirection aDefHoriTextDir = Application::GetSettings().GetLayoutRTL() ? EE_HTEXTDIR_R2L : EE_HTEXTDIR_L2R;
- mpOutliner->SetDefaultHorizontalTextDirection( aDefHoriTextDir );
-
- //create Scrollbars
- mpVScrollbar = new ScrollBar(this, WB_3DLOOK |WB_VSCROLL|WB_DRAG);
- mpVScrollbar->EnableNativeWidget(false);
- mpVScrollbar->EnableRTL( false );
- mpVScrollbar->SetScrollHdl(LINK(this, SwMarginWin, ScrollHdl));
- mpVScrollbar->EnableDrag();
- mpVScrollbar->AddEventListener( LINK( mpPostItTxt, PostItTxt, WindowEventListener ) );
-
- const SwViewOption* pVOpt = mpView->GetWrtShellPtr()->GetViewOptions();
- ULONG nCntrl = mpOutliner->GetControlWord();
- // TODO: crash when AUTOCOMPLETE enabled
- nCntrl |= EE_CNTRL_MARKFIELDS | EE_CNTRL_PASTESPECIAL | EE_CNTRL_AUTOCORRECT | EV_CNTRL_AUTOSCROLL | EE_CNTRL_URLSFXEXECUTE; // | EE_CNTRL_AUTOCOMPLETE;
- if (pVOpt->IsFieldShadings())
- nCntrl |= EE_CNTRL_MARKFIELDS;
- else
- nCntrl &= ~EE_CNTRL_MARKFIELDS;
- if (pVOpt->IsOnlineSpell())
- nCntrl |= EE_CNTRL_ONLINESPELLING;
- else
- nCntrl &= ~EE_CNTRL_ONLINESPELLING;
- mpOutliner->SetControlWord(nCntrl);
-
- sal_uInt16 aIndex = SW_MOD()->InsertRedlineAuthor(GetAuthor());
- SetColor(mpMgr->GetColorDark(aIndex),mpMgr->GetColorLight(aIndex),mpMgr->GetColorAnkor(aIndex));
-
- CheckMetaText();
- SetPopup();
- SetLanguage(GetLanguage());
- View()->StartSpeller();
- SetPostItText();
- Engine()->CompleteOnlineSpelling();
-
- mpMeta->Show();
- mpVScrollbar->Show();
- mpPostItTxt->Show();
-}
-
-void SwMarginWin::CheckMetaText()
-{
- const LocaleDataWrapper& rLocalData = SvtSysLocale().GetLocaleData();
- String sMeta = GetAuthor();
- if (sMeta==String(EMPTYSTRING))
- sMeta = String(SW_RES(STR_NOAUTHOR));
- if (sMeta.Len() > 22)
- {
- sMeta.Erase(20);
- sMeta = sMeta + rtl::OUString::createFromAscii("...");
- }
- Date aDate = GetDate();
- if (aDate==Date())
- sMeta = sMeta + LINEBREAK + String(SW_RES(STR_POSTIT_TODAY));
- else
- if (aDate == Date(Date()-1))
- sMeta = sMeta + LINEBREAK + String(SW_RES(STR_POSTIT_YESTERDAY));
- else
- if (aDate.IsValid() )
- sMeta = sMeta + LINEBREAK + rLocalData.getDate(aDate);
- else
- sMeta = sMeta + LINEBREAK + String(SW_RES(STR_NODATE));
- if (GetTime()!=0)
- sMeta = sMeta + rtl::OUString::createFromAscii(" ") + rLocalData.getTime( GetTime(),false );
- if (mpMeta->GetText() != sMeta)
- mpMeta->SetText(sMeta);
-}
-
-void SwMarginWin::Rescale()
-{
- MapMode aMode = GetParent()->GetMapMode();
- aMode.SetOrigin( Point() );
- //aMode.SetScaleX( aMode.GetScaleX() * Fraction( 8, 10 ) );
- //aMode.SetScaleY( aMode.GetScaleY() * Fraction( 8, 10 ) );
- mpOutliner->SetRefMapMode( aMode );
- SetMapMode( aMode );
- mpPostItTxt->SetMapMode( aMode );
- if ( mpMeta )
- {
- Font aFont( mpMeta->GetSettings().GetStyleSettings().GetFieldFont() );
- sal_Int32 nHeight = aFont.GetHeight();
- nHeight = nHeight * aMode.GetScaleY().GetNumerator() / aMode.GetScaleY().GetDenominator();
- aFont.SetHeight( nHeight );
- mpMeta->SetControlFont( aFont );
- }
-}
-
-void SwMarginWin::SetPosAndSize()
-{
- bool bChange = false;
-
- if (GetSizePixel() != mPosSize.GetSize())
- {
- bChange = true;
- SetSizePixel(mPosSize.GetSize());
- DoResize();
- }
-
- if (GetPosPixel().X() != mPosSize.TopLeft().X() || (abs(GetPosPixel().Y() - mPosSize.TopLeft().Y()) > 5) )
- {
- bChange = true;
- SetPosPixel(mPosSize.TopLeft());
-
- Point aLineStart;
- Point aLineEnd ;
- if (mbMarginSide)
- {
- aLineStart = EditWin()->PixelToLogic( Point(GetPosPixel().X()+GetSizePixel().Width(),GetPosPixel().Y()-1) );
- aLineEnd = EditWin()->PixelToLogic( Point(GetPosPixel().X(),GetPosPixel().Y()-1) );
- }
- else
- {
- aLineStart = EditWin()->PixelToLogic( Point(GetPosPixel().X(),GetPosPixel().Y()-1) );
- aLineEnd = EditWin()->PixelToLogic( Point(GetPosPixel().X()+GetSizePixel().Width(),GetPosPixel().Y()-1) );
- }
-
- if (!IsPreview())
- {
- if (mpAnkor)
- {
- mpAnkor->SetAllPosition(basegfx::B2DPoint( mAnkorRect.Left() , mAnkorRect.Bottom() - 5* 15),
- basegfx::B2DPoint( mAnkorRect.Left()-5*15 , mAnkorRect.Bottom()+5*15),
- basegfx::B2DPoint( mAnkorRect.Left()+5*15 , mAnkorRect.Bottom()+5*15),
- basegfx::B2DPoint( mAnkorRect.Left(), mAnkorRect.Bottom()+2*15),
- basegfx::B2DPoint( mPageBorder ,mAnkorRect.Bottom()+2*15),
- basegfx::B2DPoint( aLineStart.X(),aLineStart.Y()),
- basegfx::B2DPoint( aLineEnd.X(),aLineEnd.Y()));
- mpAnkor->SetHeight(mAnkorRect.Height());
- }
- else
- {
- mpAnkor = new SwPostItAnkor(basegfx::B2DPoint( mAnkorRect.Left() , mAnkorRect.Bottom()-5*15),
- basegfx::B2DPoint( mAnkorRect.Left()-5*15 , mAnkorRect.Bottom()+5*15),
- basegfx::B2DPoint( mAnkorRect.Left()+5*15 , mAnkorRect.Bottom()+5*15),
- basegfx::B2DPoint( mAnkorRect.Left(), mAnkorRect.Bottom()+2*15),
- basegfx::B2DPoint( mPageBorder ,mAnkorRect.Bottom()+2*15),
- basegfx::B2DPoint( aLineStart.X(),aLineStart.Y()),
- basegfx::B2DPoint( aLineEnd.X(),aLineEnd.Y()) ,
- mColorAnkor,
- false,
- false);
- mpAnkor->SetHeight(mAnkorRect.Height());
- mpAnkor->setVisible(true);
- mpAnkor->SetAnkorState(AS_TRI);
- if (HasChildPathFocus())
- {
- mpAnkor->setLineSolid(true);
- }
- pOverlayManager->add(*mpAnkor);
- }
- }
- }
- else
- {
- if ( mpAnkor && (mpAnkor->getBasePosition() != basegfx::B2DPoint( mAnkorRect.Left() , mAnkorRect.Bottom()-5*15)) )
- mpAnkor->SetTriPosition(basegfx::B2DPoint( mAnkorRect.Left() , mAnkorRect.Bottom() - 5* 15),
- basegfx::B2DPoint( mAnkorRect.Left()-5*15 , mAnkorRect.Bottom()+5*15),
- basegfx::B2DPoint( mAnkorRect.Left()+5*15 , mAnkorRect.Bottom()+5*15),
- basegfx::B2DPoint( mAnkorRect.Left(), mAnkorRect.Bottom()+2*15),
- basegfx::B2DPoint( mPageBorder ,mAnkorRect.Bottom()+2*15));
- }
-
- if (bChange)
- {
- Point aStart = EditWin()->PixelToLogic(GetPosPixel()+Point(0,GetSizePixel().Height()));
- Point aEnd = EditWin()->PixelToLogic(GetPosPixel()+Point(GetSizePixel().Width()-1,GetSizePixel().Height()));
- mpShadow->SetPosition(basegfx::B2DPoint(aStart.X(),aStart.Y()), basegfx::B2DPoint(aEnd.X(),aEnd.Y()));
- }
-
- if (mpMgr->ShowNotes())
- {
- if (IsFollow() && !HasChildPathFocus())
- {
- mpAnkor->SetAnkorState(AS_END);
- }
- else
- {
- mpAnkor->SetAnkorState(AS_ALL);
- SwMarginWin* pWin = GetTopReplyNote();
- if (pWin)
- pWin->Ankor()->SetAnkorState(AS_END);
- }
- }
-}
-
-void SwMarginWin::DoResize()
-{
- long aTextHeight = LogicToPixel( mpOutliner->CalcTextSize()).Height();
- long aHeight = GetSizePixel().Height();
- unsigned long aWidth = GetSizePixel().Width();
-
- if (mbMeta)
- {
- aHeight -= GetMetaHeight();
- mpMeta->Show();
- mpPostItTxt->SetQuickHelpText(EMPTYSTRING);
- }
- else
- {
- mpMeta->Hide();
- mpPostItTxt->SetQuickHelpText(mpMeta->GetText());
- }
-
- if ((aTextHeight > aHeight) && !IsPreview())
- { // we need vertical scrollbars and have to reduce the width
- aWidth -= GetScrollbarWidth();
- mpVScrollbar->Show();
- }
- else
- {
- mpVScrollbar->Hide();
- }
-
- mpMeta->SetPosSizePixel(0,aHeight,GetSizePixel().Width()-GetMetaButtonAreaWidth(),GetMetaHeight());
- mpOutliner->SetPaperSize( PixelToLogic( Size(aWidth,aHeight) ) ) ;
- mpOutlinerView->SetOutputArea( PixelToLogic( Rectangle(0,0,aWidth,aHeight) ) );
- if (!mpVScrollbar->IsVisible())
- { // if we do not have a scrollbar anymore, we want to see the complete text
- mpOutlinerView->SetVisArea( PixelToLogic( Rectangle(0,0,aWidth,aHeight) ) );
- }
-
- if (!Application::GetSettings().GetLayoutRTL())
- {
- mpPostItTxt->SetPosSizePixel(0, 0, aWidth, aHeight);
- mpVScrollbar->SetPosSizePixel( aWidth, 0, GetScrollbarWidth(), aHeight);
- }
- else
- {
- mpPostItTxt->SetPosSizePixel((aTextHeight > aHeight) && !IsPreview() ? GetScrollbarWidth() : 0 , 0, aWidth, aHeight);
- mpVScrollbar->SetPosSizePixel( 0, 0, GetScrollbarWidth(), aHeight);
- }
-
- mpVScrollbar->SetVisibleSize( PixelToLogic(Size(0,aHeight)).Height() );
- mpVScrollbar->SetPageSize( PixelToLogic(Size(0,aHeight)).Height() * 8 / 10 );
- mpVScrollbar->SetLineSize( mpOutliner->GetTextHeight() / 10 );
- SetScrollbar();
- mpVScrollbar->SetRange( Range(0, mpOutliner->GetTextHeight()));
-
- //calculate rects for meta- button
- const Fraction& fx( GetMapMode().GetScaleX() );
- const Fraction& fy( GetMapMode().GetScaleY() );
-
- Point aPos( mpMeta->GetPosPixel());
- Point aBase( aPos.X() + aPos.X() + GetSizePixel().Width(), aPos.Y() );
- Point aLeft = PixelToLogic( Point( aBase.X() - (METABUTTON_WIDTH+5)*fx.GetNumerator()/fx.GetDenominator(), aBase.Y()+17*fy.GetNumerator()/fx.GetDenominator() ) );
- Point aRight = PixelToLogic( Point( aBase.X() - (METABUTTON_WIDTH-1)*fx.GetNumerator()/fx.GetDenominator(), aBase.Y()+17*fy.GetNumerator()/fy.GetDenominator() ) );
- Point aBottom = PixelToLogic( Point( aBase.X() - (METABUTTON_WIDTH+2)*fx.GetNumerator()/fx.GetDenominator(), aBase.Y()+20*fy.GetNumerator()/fy.GetDenominator() ) );
-
- aPopupTriangle.clear();
- aPopupTriangle.append(basegfx::B2DPoint(aLeft.X(),aLeft.Y()));
- aPopupTriangle.append(basegfx::B2DPoint(aRight.X(),aRight.Y()));
- aPopupTriangle.append(basegfx::B2DPoint(aBottom.X(),aBottom.Y()));
- aPopupTriangle.setClosed(true);
- if (IsPreview())
- mRectMetaButton = PixelToLogic( Rectangle( Point(
- aPos.X()+GetSizePixel().Width()-(METABUTTON_WIDTH*4+10)*fx.GetNumerator()/fx.GetDenominator(),
- aPos.Y()+5*fy.GetNumerator()/fy.GetDenominator() ),
- Size( METABUTTON_WIDTH*4*fx.GetNumerator()/fx.GetDenominator(), METABUTTON_HEIGHT*fy.GetNumerator()/fy.GetDenominator() ) ) );
- else
- mRectMetaButton = PixelToLogic( Rectangle( Point(
- aPos.X()+GetSizePixel().Width()-(METABUTTON_WIDTH+10)*fx.GetNumerator()/fx.GetDenominator(),
- aPos.Y()+5*fy.GetNumerator()/fy.GetDenominator() ),
- Size( METABUTTON_WIDTH*fx.GetNumerator()/fx.GetDenominator(), METABUTTON_HEIGHT*fy.GetNumerator()/fy.GetDenominator() ) ) );
-}
-
-void SwMarginWin::SetSizePixel( const Size& rNewSize )
-{
- Window::SetSizePixel(rNewSize);
-
- if (mpShadow)
- {
- Point aStart = EditWin()->PixelToLogic(GetPosPixel()+Point(0,GetSizePixel().Height()));
- Point aEnd = EditWin()->PixelToLogic(GetPosPixel()+Point(GetSizePixel().Width()-1,GetSizePixel().Height()));
- mpShadow->SetPosition(basegfx::B2DPoint(aStart.X(),aStart.Y()), basegfx::B2DPoint(aEnd.X(),aEnd.Y()));
- }
-}
-
-void SwMarginWin::SetScrollbar()
-{
- mpVScrollbar->SetThumbPos( mpOutlinerView->GetVisArea().Top()+ mpOutlinerView->GetEditView().GetCursor()->GetOffsetY());
-}
-
-void SwMarginWin::ResizeIfNeccessary(long aOldHeight, long aNewHeight)
-{
- if (aOldHeight != aNewHeight)
- {
- //check for lower border or next note
- long aBorder = mpMgr->GetNextBorder();
- if (aBorder != -1)
- {
- if (aNewHeight > GetMinimumSizeWithoutMeta())
- {
- long aNewLowerValue = GetPosPixel().Y() + aNewHeight + GetMetaHeight();
- if (aNewLowerValue < aBorder)
- SetSizePixel(Size(GetSizePixel().Width(),aNewHeight+GetMetaHeight()));
- else
- SetSizePixel(Size(GetSizePixel().Width(),aBorder - GetPosPixel().Y()));
- DoResize();
- Invalidate();
- }
- else
- {
- if (GetSizePixel().Height() != GetMinimumSizeWithoutMeta() + GetMetaHeight())
- SetSizePixel(Size(GetSizePixel().Width(),GetMinimumSizeWithoutMeta() + GetMetaHeight()));
- DoResize();
- Invalidate();
- }
- }
- else
- {
- DoResize();
- Invalidate();
- }
- }
- else
- {
- SetScrollbar();
- }
-}
-
-void SwMarginWin::SetColor(Color aColorDark,Color aColorLight, Color aColorAnkor)
-{
- mColorDark = aColorDark;
- mColorLight = aColorLight;
- mColorAnkor = aColorAnkor;
-
- if ( !Application::GetSettings().GetStyleSettings().GetHighContrastMode() )
- {
- //Wallpaper aWall(Gradient(GRADIENT_LINEAR,mColorLight,mColorDark));
- //mpPostItTxt->SetBackground(aWall);
-
- mpMeta->SetControlBackground(mColorDark);
- AllSettings aSettings = mpMeta->GetSettings();
- StyleSettings aStyleSettings = aSettings.GetStyleSettings();
- aStyleSettings.SetFieldTextColor(aColorAnkor);
- aSettings.SetStyleSettings(aStyleSettings);
- mpMeta->SetSettings(aSettings);
-
- AllSettings aSettings2 = mpVScrollbar->GetSettings();
- StyleSettings aStyleSettings2 = aSettings2.GetStyleSettings();
- aStyleSettings2.SetButtonTextColor(Color(0,0,0));
- //aStyleSettings2.SetLightColor(mColorAnkor);
- aStyleSettings2.SetCheckedColor(mColorLight); //hintergund
- //aStyleSettings2.SetLightBorderColor(mColorAnkor);
- aStyleSettings2.SetShadowColor(mColorAnkor);
- aStyleSettings2.SetFaceColor(mColorDark);
- aSettings2.SetStyleSettings(aStyleSettings2);
- mpVScrollbar->SetSettings(aSettings2);
- }
-}
-
-void SwMarginWin::SetMarginSide(bool aMarginSide)
-{
- mbMarginSide = aMarginSide;
-}
-
-void SwMarginWin::SetReadonly(BOOL bSet)
-{
- mbReadonly = bSet;
- View()->SetReadOnly(bSet);
-}
-
-void SwMarginWin::SetLanguage(const SvxLanguageItem aNewItem)
-{
- Engine()->SetModifyHdl( Link() );
- ESelection aOld = View()->GetSelection();
-
- ESelection aNewSelection( 0, 0, (USHORT)Engine()->GetParagraphCount()-1, USHRT_MAX );
- View()->SetSelection( aNewSelection );
- SfxItemSet aEditAttr(View()->GetAttribs());
- aEditAttr.Put(aNewItem);
- View()->SetAttribs( aEditAttr );
-
- View()->SetSelection(aOld);
- Engine()->SetModifyHdl( LINK( this, SwPostIt, ModifyHdl ) );
-
- const SwViewOption* pVOpt = DocView()->GetWrtShellPtr()->GetViewOptions();
- ULONG nCntrl = Engine()->GetControlWord();
- // turn off
- if (!pVOpt->IsOnlineSpell())
- nCntrl &= ~EE_CNTRL_ONLINESPELLING;
- else
- nCntrl &= ~EE_CNTRL_ONLINESPELLING;
- Engine()->SetControlWord(nCntrl);
-
- //turn back on
- if (pVOpt->IsOnlineSpell())
- nCntrl |= EE_CNTRL_ONLINESPELLING;
- else
- nCntrl &= ~EE_CNTRL_ONLINESPELLING;
- Engine()->SetControlWord(nCntrl);
-
- Engine()->CompleteOnlineSpelling();
- Invalidate();
-}
-
-void SwMarginWin::DataChanged( const DataChangedEvent& aEvent)
-{
- Window::DataChanged( aEvent );
-}
-
-void SwMarginWin::GetFocus()
-{
- if (mpPostItTxt)
- mpPostItTxt->GrabFocus();
-}
-
-void SwMarginWin::LoseFocus()
-{
-}
-
-void SwMarginWin::ShowNote()
-{
- SetPosAndSize();
- if (!IsVisible())
- Window::Show();
- if (mpAnkor && !mpShadow->isVisible())
- mpShadow->setVisible(true);
- if (mpAnkor && !mpAnkor->isVisible())
- mpAnkor->setVisible(true);
-}
-
-void SwMarginWin::HideNote()
-{
- if (IsVisible())
- Window::Hide();
- if (mpAnkor)
- {
- if (mpMgr->IsShowAnkor())
- mpAnkor->SetAnkorState(AS_TRI);
- else
- mpAnkor->setVisible(false);
- }
- if (mpShadow && mpShadow->isVisible())
- mpShadow->setVisible(false);
-}
-
-void SwMarginWin::ActivatePostIt()
-{
- mpMgr->AssureStdModeAtShell();
-
- mpOutliner->ClearModifyFlag();
- mpOutliner->GetUndoManager().Clear();
-
- CheckMetaText();
- SetViewState(SS_EDIT);
- View()->ShowCursor();
-
- mpOutlinerView->GetEditView().SetInsertMode(mpView->GetWrtShellPtr()->IsInsMode());
-
- if ( !Application::GetSettings().GetStyleSettings().GetHighContrastMode() )
- View()->SetBackgroundColor(mColorDark);
-
- // mpPostItTxt->SetBackground(Wallpaper(mColorDark));
-}
-
-void SwMarginWin::DeactivatePostIt()
-{
- // remove selection, #i87073#
- if (View()->GetEditView().HasSelection())
- {
- ESelection aSelection = View()->GetEditView().GetSelection();
- aSelection.nEndPara = aSelection.nStartPara;
- aSelection.nEndPos = aSelection.nStartPos;
- View()->GetEditView().SetSelection(aSelection);
- }
-
- mpOutliner->CompleteOnlineSpelling();
-
- SetViewState(SS_NORMAL);
- // write the visible text back into the SwField
- UpdateData();
-
- if ( !Application::GetSettings().GetStyleSettings().GetHighContrastMode() )
- View()->SetBackgroundColor(COL_TRANSPARENT);
-
- //mpPostItTxt->SetBackground(Gradient(GRADIENT_LINEAR,mColorLight,mColorDark));
-
- if ( !IsProtected() &&
- //if (!IsReadOnly() && (GetStatus()!=SwPostItHelper::DELETED) &&
- Engine()->GetEditEngine().GetText()==String(EMPTYSTRING) )
- mnEventId = Application::PostUserEvent( LINK( this, SwMarginWin, DeleteHdl), 0 );
-}
-
-void SwMarginWin::ToggleInsMode()
-{
- if (!mpView->GetWrtShell().IsRedlineOn())
- {
- //change outliner
- mpOutlinerView->GetEditView().SetInsertMode(!mpOutlinerView->GetEditView().IsInsertMode());
- //change documnet
- mpView->GetWrtShell().ToggleInsMode();
- //update statusbar
- SfxBindings &rBnd = mpView->GetViewFrame()->GetBindings();
- rBnd.Invalidate(SID_ATTR_INSERT);
- rBnd.Update(SID_ATTR_INSERT);
- }
-}
-
-void SwMarginWin::ExecuteCommand(USHORT nSlot)
-{
- mpMgr->AssureStdModeAtShell();
-
- switch (nSlot)
- {
- case FN_POSTIT:
- case FN_REPLY:
- {
- // if this note is empty, it will be deleted once losing the focus, so no reply, but only a new note
- // will be created
- SwView* pView = DocView();
- if (Engine()->GetEditEngine().GetText() != String(EMPTYSTRING))
- {
- OutlinerParaObject* pPara = new OutlinerParaObject(*View()->GetEditView().CreateTextObject());
- Mgr()->RegisterAnswer(pPara);
- }
- if (Mgr()->GetActivePostIt())
- Mgr()->SetActivePostIt(0);
- SwitchToFieldPos();
- pView->GetViewFrame()->GetDispatcher()->Execute(FN_POSTIT);
- break;
- }
- case FN_DELETE_COMMENT:
- case FN_DELETE_NOTE:
-
- //Delete(); // do not kill the parent of our open popup menu
- mnEventId = Application::PostUserEvent( LINK( this, SwMarginWin, DeleteHdl), 0 );
- break;
- /*
- case FN_HIDE_NOTE:
- if ( Mgr()->GetActivePostIt() == this )
- {
- Mgr()->SetActivePostIt(0);
- // put the cursor back into the document
- SwitchToFieldPos();
- }
- Mgr()->Hide(mpFld);
- break;
- */
- case FN_DELETE_ALL_NOTES:
- case FN_HIDE_ALL_NOTES:
- // not possible as slot as this would require that "this" is the active postit
- DocView()->GetViewFrame()->GetBindings().Execute( nSlot, 0, 0, SFX_CALLMODE_ASYNCHRON );
- break;
- case FN_DELETE_NOTE_AUTHOR:
- case FN_HIDE_NOTE_AUTHOR:
- {
- // not possible as slot as this would require that "this" is the active postit
- SfxStringItem aItem( nSlot, GetAuthor() );
- const SfxPoolItem* aItems[2];
- aItems[0] = &aItem;
- aItems[1] = 0;
- DocView()->GetViewFrame()->GetBindings().Execute( nSlot, aItems, 0, SFX_CALLMODE_ASYNCHRON );
- }
- default:
- mpView->GetViewFrame()->GetBindings().Execute( nSlot );
- break;
- }
-}
-
-bool SwMarginWin::CalcFollow()
-{
- return false;
-}
-
-SwEditWin* SwMarginWin::EditWin()
-{
- return &mpView->GetEditWin();
-}
-
-String SwPostIt::GetAuthor()
-{
- return mpFld->GetPar1();
-}
-
-Date SwPostIt::GetDate()
-{
- return mpFld->GetDate();
-}
-
-Time SwPostIt::GetTime()
-{
- return mpFld->GetTime();
-}
-
-long SwMarginWin::GetPostItTextHeight()
-{
- return mpOutliner ? LogicToPixel(mpOutliner->CalcTextSize()).Height() : 0;
-}
-
-void SwMarginWin::SwitchToPostIt(USHORT aDirection)
-{
- if (mpMgr)
- {
- SwMarginWin* pPostIt = mpMgr->GetNextPostIt(aDirection, this);
- if (pPostIt)
- pPostIt->GrabFocus();
- }
-}
-
-void SwMarginWin::MouseButtonDown( const MouseEvent& /*rMEvt */)
-{
-}
-
-void SwMarginWin::MouseMove( const MouseEvent& rMEvt )
-{
- if (mRectMetaButton.IsInside(PixelToLogic(rMEvt.GetPosPixel())))
- {
- if (!mbMouseOverButton)
- {
- Invalidate(mRectMetaButton);
- mbMouseOverButton = true;
- }
- }
- else
- {
- if (mbMouseOverButton)
- {
- Invalidate(mRectMetaButton);
- mbMouseOverButton = false;
- }
- }
-}
-
-void SwMarginWin::Delete()
-{
- if ( Mgr()->GetActivePostIt() == this)
- {
- Mgr()->SetActivePostIt(0);
- // if the note is empty, the previous line will send a delete event, but we are already there
- if (mnEventId)
- {
- Application::RemoveUserEvent( mnEventId );
- mnEventId = 0;
- }
- }
-}
-
-IMPL_LINK(SwMarginWin, ScrollHdl, ScrollBar*, pScroll)
-{
- long nDiff = View()->GetEditView().GetVisArea().Top() - pScroll->GetThumbPos();
- View()->Scroll( 0, nDiff );
- return 0;
-}
-
-IMPL_LINK(SwMarginWin, ModifyHdl, void*, pVoid)
-{
- // no warnings, please
- pVoid=0;
- DocView()->GetDocShell()->SetModified(sal_True);
- return 0;
-}
-
-IMPL_LINK(SwMarginWin, DeleteHdl, void*, pVoid)
-{
- // no warnings, please
- pVoid=0;
- mnEventId = 0;
- Delete();
- return 0;
-}
-
-
-void SwMarginWin::ResetAttributes()
-{
- mpOutlinerView->RemoveAttribsKeepLanguages(TRUE);
- mpOutliner->RemoveFields(TRUE);
- mpOutlinerView->SetAttribs(DefaultItem());
-}
-
-sal_Int32 SwMarginWin::GetScrollbarWidth()
-{
- return mpView->GetWrtShell().GetViewOptions()->GetZoom() / 10;
-}
-
-sal_Int32 SwMarginWin::GetMetaButtonAreaWidth()
-{
- const Fraction& f( GetMapMode().GetScaleX() );
- if (IsPreview())
- return 3 * METABUTTON_AREA_WIDTH * f.GetNumerator() / f.GetDenominator();
- else
- return METABUTTON_AREA_WIDTH * f.GetNumerator() / f.GetDenominator();
-}
-
-sal_Int32 SwMarginWin::GetMetaHeight()
-{
- const Fraction& f( GetMapMode().GetScaleY() );
- return POSTIT_META_HEIGHT * f.GetNumerator() / f.GetDenominator();
-}
-
-sal_Int32 SwMarginWin::GetMinimumSizeWithMeta()
-{
- return mpMgr->GetMinimumSizeWithMeta();
-}
-
-sal_Int32 SwMarginWin::GetMinimumSizeWithoutMeta()
-{
- const Fraction& f( GetMapMode().GetScaleY() );
- return POSTIT_MINIMUMSIZE_WITHOUT_META * f.GetNumerator() / f.GetDenominator();
-}
-
-void SwMarginWin::SetSpellChecking()
-{
- const SwViewOption* pVOpt = mpView->GetWrtShellPtr()->GetViewOptions();
- ULONG nCntrl = mpOutliner->GetControlWord();
- if (pVOpt->IsOnlineSpell())
- nCntrl |= EE_CNTRL_ONLINESPELLING;
- else
- nCntrl &= ~EE_CNTRL_ONLINESPELLING;
- mpOutliner->SetControlWord(nCntrl);
-
- mpOutliner->CompleteOnlineSpelling();
- Invalidate();
-}
-
-void SwMarginWin::SetViewState(ShadowState bState)
-{
- switch (bState)
- {
- case SS_EDIT:
- {
- if (mpAnkor)
- {
- mpAnkor->SetAnkorState(AS_ALL);
- SwMarginWin* pWin = GetTopReplyNote();
- if (pWin)
- pWin->Ankor()->SetAnkorState(AS_END);
- mpAnkor->setLineSolid(true);
- }
- if (mpShadow)
- mpShadow->SetShadowState(bState);
- break;
- }
- case SS_VIEW:
- {
- if (mpAnkor)
- mpAnkor->setLineSolid(true);
- if (mpShadow)
- mpShadow->SetShadowState(bState);
- break;
- }
- case SS_NORMAL:
- {
- if (mpAnkor)
- {
- if (IsFollow())
- {
- // if there is no visible parent note, we want to see the complete anchor ??
- //if (IsAnyStackParentVisible())
- mpAnkor->SetAnkorState(AS_END);
- SwMarginWin* pTopWinSelf = GetTopReplyNote();
- SwMarginWin* pTopWinActive = mpMgr->GetActivePostIt() ? mpMgr->GetActivePostIt()->GetTopReplyNote() : 0;
- if (pTopWinSelf && (pTopWinSelf!=pTopWinActive))
- {
- if (pTopWinSelf!=mpMgr->GetActivePostIt())
- pTopWinSelf->Ankor()->setLineSolid(false);
- pTopWinSelf->Ankor()->SetAnkorState(AS_ALL);
- }
- }
- mpAnkor->setLineSolid(false);
- }
- if (mpShadow)
- mpShadow->SetShadowState(bState);
- break;
- }
- }
-}
-
-bool SwMarginWin::IsAnyStackParentVisible()
-{
- SwMarginWin* pMarginWin = mpMgr->GetNextPostIt(KEY_PAGEUP, this);
- while (pMarginWin)
- {
- if (pMarginWin->IsFollow())
- {
- pMarginWin = mpMgr->GetNextPostIt(KEY_PAGEUP, pMarginWin);
- if (pMarginWin && pMarginWin->IsVisible())
- return true;
- }
- else
- return pMarginWin && pMarginWin->IsVisible() ? true : false;
- }
- return false;
-}
-
-SwMarginWin* SwMarginWin::GetTopReplyNote()
-{
- SwMarginWin* pTopNote = 0;
- SwMarginWin* pMarginWin = IsFollow() ? mpMgr->GetNextPostIt(KEY_PAGEUP, this) : 0;
- while (pMarginWin)
- {
- pTopNote = pMarginWin;
- pMarginWin = pMarginWin->IsFollow() ? mpMgr->GetNextPostIt(KEY_PAGEUP, pMarginWin) : 0;
- }
- return pTopNote;
-}
-
-void SwMarginWin::SwitchToFieldPos()
-{
- if ( Mgr()->GetActivePostIt() == this )
- Mgr()->SetActivePostIt(0);
- GotoPos();
- sal_uInt32 aCount = MoveCaret();
- if (aCount)
- DocView()->GetDocShell()->GetWrtShell()->SwCrsrShell::Right(aCount, 0, FALSE);
- GrabFocusToDocument();
-}
-
-String SwMarginWin::GetAuthor()
-{
- return String(EMPTYSTRING);
-}
-
-Date SwMarginWin::GetDate()
-{
- return Date(0);
-}
-
-Time SwMarginWin::GetTime()
-{
- return Time(0);
-}
-
-SvxLanguageItem SwMarginWin::GetLanguage(void)
-{
- return SvxLanguageItem(SwLangHelper::GetLanguage(DocView()->GetWrtShell(),RES_CHRATR_LANGUAGE),RES_CHRATR_LANGUAGE);
-}
-
-/***** SwPostIt *********************************************/
-SwPostIt::SwPostIt( Window* pParent, WinBits nBits, SwFmtFld* aField,SwPostItMgr* aMgr,SwPostItBits aBits)
- : SwMarginWin(pParent,nBits,aMgr,aBits),
- mpFmtFld(aField),
- mpFld( static_cast<SwPostItField*>(aField->GetFld())),
- mStatus(SwPostItHelper::INVISIBLE)
-{
-}
-
-void SwPostIt::SetPostItText()
-{
- // get text from SwPostItField and insert into our textview
- Engine()->SetModifyHdl( Link() );
- Engine()->EnableUndo( FALSE );
- mpFld = static_cast<SwPostItField*>(mpFmtFld->GetFld());
- if( mpFld->GetTextObject() )
- Engine()->SetText( *mpFld->GetTextObject() );
- else
- {
- Engine()->Clear();
- View()->SetAttribs(DefaultItem());
- View()->InsertText(mpFld->GetPar2(),false);
- }
-
- Engine()->ClearModifyFlag();
- Engine()->GetUndoManager().Clear();
- Engine()->EnableUndo( TRUE );
- Engine()->SetModifyHdl( LINK( this, SwPostIt, ModifyHdl ) );
- Invalidate();
-}
-
-void SwPostIt::UpdateData()
-{
- if ( Engine()->IsModified() )
- {
- SwTxtFld* pTxtFld = mpFmtFld->GetTxtFld();
- SwPosition aPosition( pTxtFld->GetTxtNode() );
- aPosition.nContent = *pTxtFld->GetStart();
- SwField* pOldField = mpFld->Copy();
- mpFld->SetPar2(Engine()->GetEditEngine().GetText());
- mpFld->SetTextObject(Engine()->CreateParaObject());
- DocView()->GetDocShell()->GetDoc()->AppendUndo(new SwUndoFieldFromDoc(aPosition, *pOldField, *mpFld, 0, true));
- delete pOldField;
- // so we get a new layout of notes (anchor position is still the same and we would otherwise not get one)
- Mgr()->SetLayout();
- // #i98686# if we have several views, all notes should update their text
- mpFmtFld->Broadcast(SwFmtFldHint( 0, SWFMTFLD_CHANGED));
- DocView()->GetDocShell()->SetModified();
- }
- Engine()->ClearModifyFlag();
- Engine()->GetUndoManager().Clear();
-}
-
-void SwPostIt::SetChangeTracking(SwPostItHelper::SwLayoutStatus& aStatus,Color aColor)
-{
- if ( (mStatus != aStatus) || (mChangeColor != aColor) )
- {
- mStatus = aStatus;
- mChangeColor = aColor;
- Invalidate();
- }
-}
-
-void SwPostIt::Delete()
-{
- SwMarginWin::Delete();
- // we delete the field directly, the Mgr cleans up the PostIt by listening
- DocView()->GetWrtShellPtr()->GotoField(*mpFmtFld);
- GrabFocusToDocument();
- DocView()->GetWrtShellPtr()->DelRight();
-}
-
-void SwPostIt::GotoPos()
-{
- DocView()->GetDocShell()->GetWrtShell()->GotoField(*mpFmtFld);
-}
-
-sal_uInt32 SwPostIt::MoveCaret()
-{
- // if this is an answer, do not skip over all following ones, but insert directly behind the current one
- // but when just leaving a note, skip all following ones as well to continue typing
- return Mgr()->IsAnswer() ? 1 : 1 + CountFollowing();
-}
-
-//returns true, if there is another note right before this note
-bool SwPostIt::CalcFollow()
-{
- SwTxtFld* pTxtFld = mpFmtFld->GetTxtFld();
- SwPosition aPosition( pTxtFld->GetTxtNode() );
- aPosition.nContent = *pTxtFld->GetStart();
- SwTxtAttr * const pTxtAttr = pTxtFld->GetTxtNode().GetTxtAttrForCharAt(
- aPosition.nContent.GetIndex() - 1, RES_TXTATR_FIELD );
- const SwField* pFld = pTxtAttr ? pTxtAttr->GetFld().GetFld() : 0;
- return pFld && (pFld->Which()== RES_POSTITFLD);
-}
-
-// counts how many SwPostItField we have right after the current one
-sal_uInt32 SwPostIt::CountFollowing()
-{
- sal_uInt32 aCount = 1; // we start with 1, so we have to subtract one at the end again
- SwTxtFld* pTxtFld = mpFmtFld->GetTxtFld();
- SwPosition aPosition( pTxtFld->GetTxtNode() );
- aPosition.nContent = *pTxtFld->GetStart();
-
- SwTxtAttr * pTxtAttr = pTxtFld->GetTxtNode().GetTxtAttrForCharAt(
- aPosition.nContent.GetIndex() + 1, RES_TXTATR_FIELD );
- SwField* pFld = pTxtAttr ? const_cast<SwField*>(pTxtAttr->GetFld().GetFld()) : 0;
- while (pFld && (pFld->Which()== RES_POSTITFLD))
- {
- aCount++;
- pTxtAttr = pTxtFld->GetTxtNode().GetTxtAttrForCharAt(
- aPosition.nContent.GetIndex() + aCount, RES_TXTATR_FIELD );
- pFld = pTxtAttr ? const_cast<SwField*>(pTxtAttr->GetFld().GetFld()) : 0;
- }
- return aCount - 1;
-}
-
-void SwPostIt::MouseButtonDown( const MouseEvent& rMEvt )
-{
- if (mRectMetaButton.IsInside(PixelToLogic(rMEvt.GetPosPixel())) && rMEvt.IsLeft())
- {
- if (IsPreview())
- {
- doLazyDelete();
- if (Mgr())
- {
- SwPostIt* pPostIt = dynamic_cast<SwPostIt*>(Mgr()->GetPostIt(mpFmtFld));
- if (pPostIt)
- {
- pPostIt->GrabFocus();
- Mgr()->MakeVisible(pPostIt);
- }
- }
-
- }
- else
- {
- if ( mbReadonly )
- {
- mpButtonPopup->EnableItem(FN_REPLY,false);
- mpButtonPopup->EnableItem(FN_DELETE_NOTE,false);
- mpButtonPopup->EnableItem(FN_DELETE_NOTE_AUTHOR,false);
- mpButtonPopup->EnableItem(FN_DELETE_ALL_NOTES,false);
- }
- else
- {
- if (IsProtected())
- mpButtonPopup->EnableItem(FN_DELETE_NOTE,false);
- else
- mpButtonPopup->EnableItem(FN_DELETE_NOTE,true);
- mpButtonPopup->EnableItem(FN_DELETE_NOTE_AUTHOR,true);
- mpButtonPopup->EnableItem(FN_DELETE_ALL_NOTES,true);
- }
- SvtUserOptions aUserOpt;
- String sAuthor;
- if( !(sAuthor = aUserOpt.GetFullName()).Len())
- if( !(sAuthor = aUserOpt.GetID()).Len() )
- sAuthor = String( SW_RES( STR_REDLINE_UNKNOWN_AUTHOR ));
- // do not allow to reply to ourself and no answer possible if this note is in a protected section
- if ((sAuthor == GetAuthor()) || (IsProtected()))
- mpButtonPopup->EnableItem(FN_REPLY,false);
- else
- mpButtonPopup->EnableItem(FN_REPLY,true);
-
- // show the popup menu and execute the selected command
- ExecuteCommand( mpButtonPopup->Execute( this,Rectangle(LogicToPixel(mRectMetaButton.BottomLeft()),LogicToPixel(mRectMetaButton.BottomLeft())),POPUPMENU_EXECUTE_DOWN | POPUPMENU_NOMOUSEUPCLOSE) );
- }
- }
-}
-
-void SwPostIt::SetPopup()
-{
- mpButtonPopup = new PopupMenu(SW_RES(MN_ANNOTATION_BUTTON));
- //mpButtonPopup->SetMenuFlags(MENU_FLAG_ALWAYSSHOWDISABLEDENTRIES);
- XubString aText = mpButtonPopup->GetItemText( FN_DELETE_NOTE_AUTHOR );
- SwRewriter aRewriter;
- aRewriter.AddRule(UNDO_ARG1,GetAuthor());
- aText = aRewriter.Apply(aText);
- mpButtonPopup->SetItemText(FN_DELETE_NOTE_AUTHOR,aText);
-}
-
-void SwPostIt::InitAnswer(OutlinerParaObject* pText)
-{
- //collect our old meta data
- SwMarginWin* pWin = Mgr()->GetNextPostIt(KEY_PAGEUP, this);
- const LocaleDataWrapper& rLocalData = SvtSysLocale().GetLocaleData();
- String aText = String(SW_RES(STR_REPLY));
- SwRewriter aRewriter;
- aRewriter.AddRule(UNDO_ARG1, pWin->GetAuthor());
- aText = aRewriter.Apply(aText);
- aText.Append(String(rtl::OUString::createFromAscii(" (") +
- String(rLocalData.getDate( pWin->GetDate())) + rtl::OUString::createFromAscii(", ") +
- String(rLocalData.getTime( pWin->GetTime(),false)) + rtl::OUString::createFromAscii("): \"")));
- View()->InsertText(aText,false);
-
- // insert old, selected text or "..."
- // TOOD: iterate over all paragraphs, not only first one to find out if it is empty
- if (pText->GetTextObject().GetText(0) != String(EMPTYSTRING))
- View()->GetEditView().InsertText(pText->GetTextObject());
- else
- View()->InsertText(rtl::OUString::createFromAscii("..."),false);
- View()->InsertText(rtl::OUString::createFromAscii("\"\n"),false);
-
- View()->SetSelection(ESelection(0x0,0x0,0xFFFF,0xFFFF));
- SfxItemSet aAnswerSet( DocView()->GetDocShell()->GetPool() );
- aAnswerSet.Put(SvxFontHeightItem(200,80,EE_CHAR_FONTHEIGHT));
- aAnswerSet.Put(SvxPostureItem(ITALIC_NORMAL,EE_CHAR_ITALIC));
- View()->SetAttribs(aAnswerSet);
- View()->SetSelection(ESelection(0xFFFF,0xFFFF,0xFFFF,0xFFFF));
-
- //remove all attributes and reset our standard ones
- View()->GetEditView().RemoveAttribsKeepLanguages(true);
- View()->SetAttribs(DefaultItem());
- // lets insert an undo step so the initial text can be easily deleted
- // but do not use UpdateData() directly, would set modified state again and reentrance into Mgr
- Engine()->SetModifyHdl( Link() );
- SwTxtFld* pTxtFld = mpFmtFld->GetTxtFld();
- SwPosition aPosition( pTxtFld->GetTxtNode() );
- aPosition.nContent = *pTxtFld->GetStart();
- SwField* pOldField = mpFld->Copy();
- mpFld->SetPar2(Engine()->GetEditEngine().GetText());
- mpFld->SetTextObject(Engine()->CreateParaObject());
- DocView()->GetDocShell()->GetDoc()->AppendUndo(new SwUndoFieldFromDoc(aPosition, *pOldField, *mpFld, 0, true));
- delete pOldField;
- Engine()->SetModifyHdl( LINK( this, SwPostIt, ModifyHdl ) );
- Engine()->ClearModifyFlag();
- Engine()->GetUndoManager().Clear();
-}
-
-SvxLanguageItem SwPostIt::GetLanguage(void)
-{
- // set initial language for outliner
- USHORT nScriptType = SvtLanguageOptions::GetScriptTypeOfLanguage( mpFld->GetLanguage() );
- USHORT nLangWhichId = 0;
- switch (nScriptType)
- {
- case SCRIPTTYPE_LATIN : nLangWhichId = EE_CHAR_LANGUAGE ; break;
- case SCRIPTTYPE_ASIAN : nLangWhichId = EE_CHAR_LANGUAGE_CJK; break;
- case SCRIPTTYPE_COMPLEX : nLangWhichId = EE_CHAR_LANGUAGE_CTL; break;
- default: DBG_ERROR("GetLanguage: wrong script tye");
- }
- return SvxLanguageItem(mpFld->GetLanguage(),nLangWhichId);
-}
-
-bool SwPostIt::IsProtected()
-{
- bool aReturn;
- aReturn = mpFmtFld ? (SwMarginWin::IsProtected() || (mStatus==SwPostItHelper::DELETED) ||
- mpFmtFld->IsProtect()) : (SwMarginWin::IsProtected() || (mStatus==SwPostItHelper::DELETED));
- return aReturn;
-}
-
-/********** SwRedComment**************/
-/*
-SwRedComment::SwRedComment( Window* pParent, WinBits nBits,SwPostItMgr* aMgr,SwPostItBits aBits,SwRedline* pRed)
- : SwMarginWin(pParent,nBits,aMgr,aBits),
- pRedline(pRed)
-{
-}
-
-void SwRedComment::SetPopup()
-{
- mpButtonPopup = new PopupMenu(SW_RES(MN_REDCOMMENT_BUTTON));
- //mpButtonPopup->SetMenuFlags(MENU_FLAG_ALWAYSSHOWDISABLEDENTRIES);
-}
-
-void SwRedComment::UpdateData()
-{
- if ( Engine()->IsModified() )
- {
- // so we get a new layout of notes (ankor position is still the same and we would otherwise not get one)
- Mgr()->SetLayout();
- // SetRedline is calling SetModified already
- DocView()->GetWrtShell().SetRedlineComment(Engine()->GetEditEngine().GetText());
- }
- Engine()->ClearModifyFlag();
- Engine()->GetUndoManager().Clear();
-}
-
-void SwRedComment::SetPostItText()
-{
- Engine()->SetModifyHdl( Link() );
- Engine()->EnableUndo( FALSE );
-
- Engine()->Clear();
- View()->SetAttribs(DefaultItem());
- View()->InsertText(pRedline->GetComment(),false);
-
- Engine()->ClearModifyFlag();
- Engine()->GetUndoManager().Clear();
- Engine()->EnableUndo( TRUE );
- Engine()->SetModifyHdl( LINK( this, SwMarginWin, ModifyHdl ) );
- Invalidate();
-}
-
-void SwRedComment::DeactivatePostIt()
-{
- SwMarginWin::DeactivatePostIt();
- // current Redline is still selected
- DocView()->GetWrtShellPtr()->ClearMark();
-}
-
-void SwRedComment::ActivatePostIt()
-{
- SwMarginWin::ActivatePostIt();
-
- // do we want the redline selected?
- // otherwise, SwRedComment::ActivatePostIt() as well as SwRedComment::DeactivatePostIt()
- // can be thrown out completly
- DocView()->GetDocShell()->GetWrtShell()->GotoRedline(
- DocView()->GetDocShell()->GetWrtShell()->FindRedlineOfData(pRedline->GetRedlineData()),true);
-}
-
-void SwRedComment::MouseButtonDown( const MouseEvent& rMEvt )
-{
- if (mRectMetaButton.IsInside(PixelToLogic(rMEvt.GetPosPixel())) && rMEvt.IsLeft())
- {
- ExecuteCommand( mpButtonPopup->Execute( this,Rectangle(LogicToPixel(mRectMetaButton.BottomLeft()),LogicToPixel(mRectMetaButton.BottomLeft())),POPUPMENU_EXECUTE_DOWN | POPUPMENU_NOMOUSEUPCLOSE) );
- }
-}
-
-void SwRedComment::Delete()
-{
- SwMarginWin::Delete();
- // we are not neccessarily on our redline, so let's move there
- GotoPos();
- DocView()->GetWrtShell().SetRedlineComment(EMPTYSTRING);
- DocView()->GetWrtShell().ClearMark();
- // so we get a new layout of notes (ankor position is still the same and we would otherwise not get one)
- Mgr()->SetLayout();
- Mgr()->RemoveItem(pRedline);
-}
-
-void SwRedComment::GotoPos()
-{
- DocView()->GetDocShell()->GetWrtShell()->GotoRedline(
- DocView()->GetDocShell()->GetWrtShell()->FindRedlineOfData(pRedline->GetRedlineData()));
-}
-
-String SwRedComment::GetAuthor()
-{
- return pRedline->GetAuthorString();
-}
-
-Date SwRedComment::GetDate()
-{
- return pRedline->GetTimeStamp().GetDate();
-}
-
-Time SwRedComment::GetTime()
-{
- return pRedline->GetTimeStamp().GetTime();
-}
-
-bool SwRedComment::IsProtected()
-{
- return SwMarginWin::IsProtected() || pRedline->Start()->nNode.GetNode().GetTxtNode()->IsInProtectSect();
-}
-*/
-
-//////////////////////////////////////////////////////////////////////////////
-// helper SwPostItShadowPrimitive
-//
-// Used to allow view-dependent primitive definition. For that purpose, the
-// initially created primitive (this one) always has to be view-independent,
-// but the decomposition is made view-dependent. Very simple primitive which
-// just remembers the discrete data and applies it at decomposition time.
-
-class SwPostItShadowPrimitive : public drawinglayer::primitive2d::DiscreteMetricDependentPrimitive2D
-{
-private:
- basegfx::B2DPoint maBasePosition;
- basegfx::B2DPoint maSecondPosition;
- ShadowState maShadowState;
-
-protected:
- virtual drawinglayer::primitive2d::Primitive2DSequence create2DDecomposition(
- const drawinglayer::geometry::ViewInformation2D& rViewInformation) const;
-
-public:
- SwPostItShadowPrimitive(
- const basegfx::B2DPoint& rBasePosition,
- const basegfx::B2DPoint& rSecondPosition,
- ShadowState aShadowState)
- : drawinglayer::primitive2d::DiscreteMetricDependentPrimitive2D(),
- maBasePosition(rBasePosition),
- maSecondPosition(rSecondPosition),
- maShadowState(aShadowState)
- {}
-
- // data access
- const basegfx::B2DPoint& getBasePosition() const { return maBasePosition; }
- const basegfx::B2DPoint& getSecondPosition() const { return maSecondPosition; }
- ShadowState getShadowState() const { return maShadowState; }
-
- virtual bool operator==( const drawinglayer::primitive2d::BasePrimitive2D& rPrimitive ) const;
-
- DeclPrimitrive2DIDBlock()
-};
-
-drawinglayer::primitive2d::Primitive2DSequence SwPostItShadowPrimitive::create2DDecomposition(
- const drawinglayer::geometry::ViewInformation2D& /*rViewInformation*/) const
-{
- // get logic sizes in object coordinate system
- drawinglayer::primitive2d::Primitive2DSequence xRetval;
- basegfx::B2DRange aRange(getBasePosition());
-
- switch(maShadowState)
- {
- case SS_NORMAL:
- {
- aRange.expand(basegfx::B2DTuple(getSecondPosition().getX(), getSecondPosition().getY() + (2.0 * getDiscreteUnit())));
- const drawinglayer::attribute::FillGradientAttribute aFillGradientAttribute(
- drawinglayer::attribute::GRADIENTSTYLE_LINEAR,
- 0.0,
- 0.5,
- 0.5,
- 1800.0 * F_PI1800,
- basegfx::BColor(230.0/255.0,230.0/255.0,230.0/255.0),
- basegfx::BColor(180.0/255.0,180.0/255.0,180.0/255.0),
- 2);
-
- const drawinglayer::primitive2d::Primitive2DReference xReference(
- new drawinglayer::primitive2d::FillGradientPrimitive2D(
- aRange,
- aFillGradientAttribute));
-
- xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
- break;
- }
- case SS_VIEW:
- {
- aRange.expand(basegfx::B2DTuple(getSecondPosition().getX(), getSecondPosition().getY() + (4.0 * getDiscreteUnit())));
- const drawinglayer::attribute::FillGradientAttribute aFillGradientAttribute(
- drawinglayer::attribute::GRADIENTSTYLE_LINEAR,
- 0.0,
- 0.5,
- 0.5,
- 1800.0 * F_PI1800,
- basegfx::BColor(230.0/255.0,230.0/255.0,230.0/255.0),
- basegfx::BColor(180.0/255.0,180.0/255.0,180.0/255.0),
- 4);
-
- const drawinglayer::primitive2d::Primitive2DReference xReference(
- new drawinglayer::primitive2d::FillGradientPrimitive2D(
- aRange,
- aFillGradientAttribute));
-
- xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
- break;
- }
- case SS_EDIT:
- {
- aRange.expand(basegfx::B2DTuple(getSecondPosition().getX(), getSecondPosition().getY() + (4.0 * getDiscreteUnit())));
- const drawinglayer::attribute::FillGradientAttribute aFillGradientAttribute(
- drawinglayer::attribute::GRADIENTSTYLE_LINEAR,
- 0.0,
- 0.5,
- 0.5,
- 1800.0 * F_PI1800,
- basegfx::BColor(230.0/255.0,230.0/255.0,230.0/255.0),
- basegfx::BColor(83.0/255.0,83.0/255.0,83.0/255.0),
- 4);
-
- const drawinglayer::primitive2d::Primitive2DReference xReference(
- new drawinglayer::primitive2d::FillGradientPrimitive2D(
- aRange,
- aFillGradientAttribute));
-
- xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
- break;
- }
- default:
- {
- break;
- }
- }
-
- return xRetval;
-}
-
-bool SwPostItShadowPrimitive::operator==( const drawinglayer::primitive2d::BasePrimitive2D& rPrimitive ) const
-{
- if(drawinglayer::primitive2d::DiscreteMetricDependentPrimitive2D::operator==(rPrimitive))
- {
- const SwPostItShadowPrimitive& rCompare = static_cast< const SwPostItShadowPrimitive& >(rPrimitive);
-
- return (getBasePosition() == rCompare.getBasePosition()
- && getSecondPosition() == rCompare.getSecondPosition()
- && getShadowState() == rCompare.getShadowState());
- }
-
- return false;
-}
-
-ImplPrimitrive2DIDBlock(SwPostItShadowPrimitive, PRIMITIVE2D_ID_SWPOSTITSHADOWPRIMITIVE)
-
-/****** SwPostItShadow ***********************************************************/
-SwPostItShadow::SwPostItShadow(const basegfx::B2DPoint& rBasePos,const basegfx::B2DPoint& rSecondPosition,
- Color aBaseColor,ShadowState aState)
- : OverlayObjectWithBasePosition(rBasePos, aBaseColor),
- maSecondPosition(rSecondPosition),
- mShadowState(aState)
-{
-// mbAllowsAnimation = false;
-}
-
-SwPostItShadow::~SwPostItShadow()
-{
-}
-
-drawinglayer::primitive2d::Primitive2DSequence SwPostItShadow::createOverlayObjectPrimitive2DSequence()
-{
- const drawinglayer::primitive2d::Primitive2DReference aReference(
- new SwPostItShadowPrimitive(
- getBasePosition(),
- GetSecondPosition(),
- GetShadowState()));
- return drawinglayer::primitive2d::Primitive2DSequence(&aReference, 1);
-}
-
-void SwPostItShadow::SetShadowState(ShadowState aState)
-{
- if (mShadowState != aState)
- {
- mShadowState = aState;
-
- objectChange();
- }
-}
-
-void SwPostItShadow::SetPosition(const basegfx::B2DPoint& rPoint1,
- const basegfx::B2DPoint& rPoint2)
-{
- if(!rPoint1.equal(getBasePosition()) || !rPoint2.equal(GetSecondPosition()))
- {
- maBasePosition = rPoint1;
- maSecondPosition = rPoint2;
-
- objectChange();
- }
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// helper class: Primitive for discrete visualisation
-
-class SwPostItAnkorPrimitive : public drawinglayer::primitive2d::DiscreteMetricDependentPrimitive2D
-{
-private:
- basegfx::B2DPolygon maTriangle;
- basegfx::B2DPolygon maLine;
- basegfx::B2DPolygon maLineTop;
- AnkorState maAnkorState;
- basegfx::BColor maColor;
-
- // discrete line width
- double mfLogicLineWidth;
-
- // bitfield
- bool mbShadow : 1;
- bool mbLineSolid : 1;
-
-protected:
- virtual drawinglayer::primitive2d::Primitive2DSequence create2DDecomposition(
- const drawinglayer::geometry::ViewInformation2D& rViewInformation) const;
-
-public:
- SwPostItAnkorPrimitive(
- const basegfx::B2DPolygon& rTriangle,
- const basegfx::B2DPolygon& rLine,
- const basegfx::B2DPolygon& rLineTop,
- AnkorState aAnkorState,
- const basegfx::BColor& rColor,
- double fLogicLineWidth,
- bool bShadow,
- bool bLineSolid)
- : drawinglayer::primitive2d::DiscreteMetricDependentPrimitive2D(),
- maTriangle(rTriangle),
- maLine(rLine),
- maLineTop(rLineTop),
- maAnkorState(aAnkorState),
- maColor(rColor),
- mfLogicLineWidth(fLogicLineWidth),
- mbShadow(bShadow),
- mbLineSolid(bLineSolid)
- {}
-
- // data access
- const basegfx::B2DPolygon& getTriangle() const { return maTriangle; }
- const basegfx::B2DPolygon& getLine() const { return maLine; }
- const basegfx::B2DPolygon& getLineTop() const { return maLineTop; }
- AnkorState getAnkorState() const { return maAnkorState; }
- const basegfx::BColor& getColor() const { return maColor; }
- double getLogicLineWidth() const { return mfLogicLineWidth; }
- bool getShadow() const { return mbShadow; }
- bool getLineSolid() const { return mbLineSolid; }
-
- virtual bool operator==( const drawinglayer::primitive2d::BasePrimitive2D& rPrimitive ) const;
-
- DeclPrimitrive2DIDBlock()
-};
-
-drawinglayer::primitive2d::Primitive2DSequence SwPostItAnkorPrimitive::create2DDecomposition(
- const drawinglayer::geometry::ViewInformation2D& /*rViewInformation*/) const
-{
- drawinglayer::primitive2d::Primitive2DSequence aRetval;
-
- if(AS_TRI == getAnkorState() || AS_ALL == getAnkorState() || AS_START == getAnkorState())
- {
- // create triangle
- const drawinglayer::primitive2d::Primitive2DReference aTriangle(
- new drawinglayer::primitive2d::PolyPolygonColorPrimitive2D(
- basegfx::B2DPolyPolygon(getTriangle()),
- getColor()));
-
- drawinglayer::primitive2d::appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, aTriangle);
- }
-
- if(AS_ALL == getAnkorState() || AS_START == getAnkorState())
- {
- // create line start
- const drawinglayer::attribute::LineAttribute aLineAttribute(
- getColor(),
- getLogicLineWidth() / (basegfx::fTools::equalZero(getDiscreteUnit()) ? 1.0 : getDiscreteUnit()));
-
- if(getLineSolid())
- {
- const drawinglayer::primitive2d::Primitive2DReference aSolidLine(
- new drawinglayer::primitive2d::PolygonStrokePrimitive2D(
- getLine(),
- aLineAttribute));
-
- drawinglayer::primitive2d::appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, aSolidLine);
- }
- else
- {
- ::std::vector< double > aDotDashArray;
- const double fDistance(3.0 * 15.0);
- const double fDashLen(5.0 * 15.0);
-
- aDotDashArray.push_back(fDashLen);
- aDotDashArray.push_back(fDistance);
-
- const drawinglayer::attribute::StrokeAttribute aStrokeAttribute(
- aDotDashArray,
- fDistance + fDashLen);
-
- const drawinglayer::primitive2d::Primitive2DReference aStrokedLine(
- new drawinglayer::primitive2d::PolygonStrokePrimitive2D(
- getLine(),
- aLineAttribute,
- aStrokeAttribute));
-
- drawinglayer::primitive2d::appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, aStrokedLine);
- }
- }
-
- if(aRetval.hasElements() && getShadow())
- {
- // shadow is only for triangle and line start, and in upper left
- // and lower right direction, in different colors
- const double fColorChange(20.0 / 255.0);
- const basegfx::B3DTuple aColorChange(fColorChange, fColorChange, fColorChange);
- basegfx::BColor aLighterColor(getColor() + aColorChange);
- basegfx::BColor aDarkerColor(getColor() - aColorChange);
-
- aLighterColor.clamp();
- aDarkerColor.clamp();
-
- // create shadow sequence
- drawinglayer::primitive2d::Primitive2DSequence aShadows(2);
- basegfx::B2DHomMatrix aTransform;
-
- aTransform.set(0, 2, -getDiscreteUnit());
- aTransform.set(1, 2, -getDiscreteUnit());
-
- aShadows[0] = drawinglayer::primitive2d::Primitive2DReference(
- new drawinglayer::primitive2d::ShadowPrimitive2D(
- aTransform,
- aLighterColor,
- aRetval));
-
- aTransform.set(0, 2, getDiscreteUnit());
- aTransform.set(1, 2, getDiscreteUnit());
-
- aShadows[1] = drawinglayer::primitive2d::Primitive2DReference(
- new drawinglayer::primitive2d::ShadowPrimitive2D(
- aTransform,
- aDarkerColor,
- aRetval));
-
- // add shadow before geometry to make it be proccessed first
- const drawinglayer::primitive2d::Primitive2DSequence aTemporary(aRetval);
-
- aRetval = aShadows;
- drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence(aRetval, aTemporary);
- }
-
- if(AS_ALL == getAnkorState() || AS_END == getAnkorState())
- {
- // LineTop has to be created, too, but uses no shadow, so add after
- // the other parts are created
- const drawinglayer::attribute::LineAttribute aLineAttribute(
- getColor(),
- getLogicLineWidth() / (basegfx::fTools::equalZero(getDiscreteUnit()) ? 1.0 : getDiscreteUnit()));
-
- const drawinglayer::primitive2d::Primitive2DReference aLineTop(
- new drawinglayer::primitive2d::PolygonStrokePrimitive2D(
- getLineTop(),
- aLineAttribute));
-
- drawinglayer::primitive2d::appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, aLineTop);
- }
-
- return aRetval;
-}
-
-bool SwPostItAnkorPrimitive::operator==( const drawinglayer::primitive2d::BasePrimitive2D& rPrimitive ) const
-{
- if(drawinglayer::primitive2d::DiscreteMetricDependentPrimitive2D::operator==(rPrimitive))
- {
- const SwPostItAnkorPrimitive& rCompare = static_cast< const SwPostItAnkorPrimitive& >(rPrimitive);
-
- return (getTriangle() == rCompare.getTriangle()
- && getLine() == rCompare.getLine()
- && getLineTop() == rCompare.getLineTop()
- && getAnkorState() == rCompare.getAnkorState()
- && getColor() == rCompare.getColor()
- && getLogicLineWidth() == rCompare.getLogicLineWidth()
- && getShadow() == rCompare.getShadow()
- && getLineSolid() == rCompare.getLineSolid());
- }
-
- return false;
-}
-
-ImplPrimitrive2DIDBlock(SwPostItAnkorPrimitive, PRIMITIVE2D_ID_SWPOSTITANKORPRIMITIVE)
-
-/****** SwPostItAnkor ***********************************************************/
-
-void SwPostItAnkor::implEnsureGeometry()
-{
- if(!maTriangle.count())
- {
- maTriangle.append(getBasePosition());
- maTriangle.append(GetSecondPosition());
- maTriangle.append(GetThirdPosition());
- maTriangle.setClosed(true);
- }
-
- if(!maLine.count())
- {
- maLine.append(GetFourthPosition());
- maLine.append(GetFifthPosition());
- maLine.append(GetSixthPosition());
- }
-
- if(!maLineTop.count())
- {
- maLineTop.append(GetSixthPosition());
- maLineTop.append(GetSeventhPosition());
- }
-}
-
-void SwPostItAnkor::implResetGeometry()
-{
- maTriangle.clear();
- maLine.clear();
- maLineTop.clear();
-}
-
-SwPostItAnkor::SwPostItAnkor(const basegfx::B2DPoint& rBasePos,
- const basegfx::B2DPoint& rSecondPos,
- const basegfx::B2DPoint& rThirdPos,
- const basegfx::B2DPoint& rFourthPos,
- const basegfx::B2DPoint& rFifthPos,
- const basegfx::B2DPoint& rSixthPos,
- const basegfx::B2DPoint& rSeventhPos,
- Color aBaseColor,
- bool bShadowedEffect,
- bool bLineSolid)
- : OverlayObjectWithBasePosition(rBasePos, aBaseColor),
- maSecondPosition(rSecondPos),
- maThirdPosition(rThirdPos),
- maFourthPosition(rFourthPos),
- maFifthPosition(rFifthPos),
- maSixthPosition(rSixthPos),
- maSeventhPosition(rSeventhPos),
- maTriangle(),
- maLine(),
- maLineTop(),
- mHeight(0),
- mAnkorState(AS_ALL),
- mbShadowedEffect(bShadowedEffect),
- mbLineSolid(bLineSolid)
-{
- //mbAllowsAnimation = true;
-}
-
-SwPostItAnkor::~SwPostItAnkor()
-{
-}
-
-drawinglayer::primitive2d::Primitive2DSequence SwPostItAnkor::createOverlayObjectPrimitive2DSequence()
-{
- implEnsureGeometry();
-
- const drawinglayer::primitive2d::Primitive2DReference aReference(
- new SwPostItAnkorPrimitive(
- maTriangle,
- maLine,
- maLineTop,
- GetAnkorState(),
- getBaseColor().getBColor(),
- ANKORLINE_WIDTH * 15.0,
- getShadowedEffect(),
- getLineSolid()));
-
- return drawinglayer::primitive2d::Primitive2DSequence(&aReference, 1);
-}
-
-void SwPostItAnkor::SetAllPosition(const basegfx::B2DPoint& rPoint1,
- const basegfx::B2DPoint& rPoint2,
- const basegfx::B2DPoint& rPoint3,
- const basegfx::B2DPoint& rPoint4,
- const basegfx::B2DPoint& rPoint5,
- const basegfx::B2DPoint& rPoint6,
- const basegfx::B2DPoint& rPoint7)
-{
- if(rPoint1 != getBasePosition()
- || rPoint2 != GetSecondPosition()
- || rPoint3 != GetThirdPosition()
- || rPoint4 != GetFourthPosition()
- || rPoint5 != GetFifthPosition()
- || rPoint6 != GetSixthPosition()
- || rPoint7 != GetSeventhPosition())
- {
- maBasePosition = rPoint1;
- maSecondPosition = rPoint2;
- maThirdPosition = rPoint3;
- maFourthPosition = rPoint4;
- maFifthPosition = rPoint5;
- maSixthPosition = rPoint6;
- maSeventhPosition = rPoint7;
-
- implResetGeometry();
- objectChange();
- }
-}
-
-void SwPostItAnkor::SetSixthPosition(const basegfx::B2DPoint& rNew)
-{
- if(rNew != maSixthPosition)
- {
- maSixthPosition = rNew;
- implResetGeometry();
- objectChange();
- }
-}
-
-void SwPostItAnkor::SetSeventhPosition(const basegfx::B2DPoint& rNew)
-{
- if(rNew != maSeventhPosition)
- {
- maSeventhPosition = rNew;
- implResetGeometry();
- objectChange();
- }
-}
-
-void SwPostItAnkor::SetTriPosition(const basegfx::B2DPoint& rPoint1,const basegfx::B2DPoint& rPoint2,const basegfx::B2DPoint& rPoint3,
- const basegfx::B2DPoint& rPoint4,const basegfx::B2DPoint& rPoint5)
-{
- if(rPoint1 != getBasePosition()
- || rPoint2 != GetSecondPosition()
- || rPoint3 != GetThirdPosition()
- || rPoint4 != GetFourthPosition()
- || rPoint5 != GetFifthPosition())
- {
- maBasePosition = rPoint1;
- maSecondPosition = rPoint2;
- maThirdPosition = rPoint3;
- maFourthPosition = rPoint4;
- maFifthPosition = rPoint5;
-
- implResetGeometry();
- objectChange();
- }
-}
-
-void SwPostItAnkor::setLineSolid(bool bNew)
-{
- if(bNew != getLineSolid())
- {
- mbLineSolid = bNew;
- objectChange();
- }
-}
-
-void SwPostItAnkor::SetAnkorState(AnkorState aState)
-{
- if (mAnkorState != aState)
- {
- mAnkorState = aState;
- objectChange();
- }
-}
diff --git a/sw/source/ui/envelp/mailmrge.cxx b/sw/source/ui/envelp/mailmrge.cxx
index ae553ee89a19..141adf35ddf0 100644
--- a/sw/source/ui/envelp/mailmrge.cxx
+++ b/sw/source/ui/envelp/mailmrge.cxx
@@ -65,7 +65,7 @@
#include <com/sun/star/sdbc/XDataSource.hpp>
#include <toolkit/unohlp.hxx>
#include <comphelper/processfactory.hxx>
-#include <com/sun/star/form/XFormController.hpp>
+#include <com/sun/star/form/runtime/XFormController.hpp>
#include <cppuhelper/implbase1.hxx>
#include <com/sun/star/container/XChild.hpp>
#include <com/sun/star/container/XContainerQuery.hpp>
@@ -96,7 +96,7 @@ using namespace ::com::sun::star::ui::dialogs;
---------------------------------------------------------------------------*/
struct SwMailMergeDlg_Impl
{
- uno::Reference<XFormController> xFController;
+ uno::Reference<runtime::XFormController> xFController;
uno::Reference<XSelectionChangeListener> xChgLstnr;
uno::Reference<XSelectionSupplier> xSelSupp;
};
@@ -329,7 +329,7 @@ SwMailMergeDlg::SwMailMergeDlg(Window* pParent, SwWrtShell& rShell,
pBeamerWin->Show();
}
uno::Reference<XController> xController = xFrame->getController();
- pImpl->xFController = uno::Reference<XFormController>(xController, UNO_QUERY);
+ pImpl->xFController = uno::Reference<runtime::XFormController>(xController, UNO_QUERY);
if(pImpl->xFController.is())
{
uno::Reference< awt::XControl > xCtrl = pImpl->xFController->getCurrentControl( );
diff --git a/sw/source/ui/fldui/fldmgr.cxx b/sw/source/ui/fldui/fldmgr.cxx
index 3499c8875093..95001f897702 100644
--- a/sw/source/ui/fldui/fldmgr.cxx
+++ b/sw/source/ui/fldui/fldmgr.cxx
@@ -1435,7 +1435,7 @@ void SwFldMgr::UpdateCurFld(ULONG nFormat,
}
else
{
- pTmpFld = pCurFld->Copy();
+ pTmpFld = pCurFld->CopyField();
bDelete = true;
}
diff --git a/sw/source/ui/fldui/fldpage.cxx b/sw/source/ui/fldui/fldpage.cxx
index 39a6a98d764b..265a53dc6646 100644
--- a/sw/source/ui/fldui/fldpage.cxx
+++ b/sw/source/ui/fldui/fldpage.cxx
@@ -42,28 +42,16 @@
#include <fmtfld.hxx>
#include <viewopt.hxx>
#include <fldedt.hxx>
-#ifndef _DOCSH_HXX
#include <docsh.hxx>
-#endif
#include <swmodule.hxx>
-#ifndef _VIEW_HXX
#include <view.hxx>
-#endif
#include <wrtsh.hxx>
#include <expfld.hxx>
-#ifndef _FLDTDLG_HXX
#include <fldtdlg.hxx>
-#endif
-#ifndef _FLDPAGE_HXX
#include <fldpage.hxx>
-#endif
#include <docufld.hxx>
-#ifndef _CMDID_H
#include <cmdid.h>
-#endif
-#ifndef _GLOBALS_HRC
#include <globals.hrc>
-#endif
#include <sfx2/bindings.hxx>
using namespace ::com::sun::star;
@@ -218,7 +206,7 @@ BOOL SwFldPage::InsertFld(USHORT nTypeId, USHORT nSubType, const String& rPar1,
}
else // Feld aendern
{
- SwField * pTmpFld = m_pCurFld->Copy();
+ SwField *const pTmpFld = m_pCurFld->CopyField();
String sPar1(rPar1);
String sPar2(rPar2);
diff --git a/sw/source/ui/frmdlg/column.cxx b/sw/source/ui/frmdlg/column.cxx
index eb067cc61c71..0a3c8cc33623 100644
--- a/sw/source/ui/frmdlg/column.cxx
+++ b/sw/source/ui/frmdlg/column.cxx
@@ -354,7 +354,8 @@ IMPL_LINK(SwColumnDlg, OkHdl, OKButton*, EMPTYARG)
const SwSection* pCurrSection = rWrtShell.GetCurrSection();
const SwSectionFmt* pFmt = pCurrSection->GetFmt();
USHORT nNewPos = rWrtShell.GetSectionFmtPos( *pFmt );
- rWrtShell.ChgSection( nNewPos, *pCurrSection, pSectionSet );
+ SwSectionData aData(*pCurrSection);
+ rWrtShell.UpdateSection( nNewPos, aData, pSectionSet );
}
if(pSectionSet && pSectionSet->Count() && bSelSectionChanged )
diff --git a/sw/source/ui/inc/SidebarWindowsConsts.hxx b/sw/source/ui/inc/SidebarWindowsConsts.hxx
new file mode 100644
index 000000000000..378b2be0790a
--- /dev/null
+++ b/sw/source/ui/inc/SidebarWindowsConsts.hxx
@@ -0,0 +1,41 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#ifndef _SIDEBARWINDOWSCONSTS_HXX
+#define _SIDEBARWINDOWSCONSTS_HXX
+
+namespace sw { namespace sidebarwindows {
+
+const sal_Int8 ANCHORLINE_WIDTH = 1;
+
+} } // end of namespace sw::sidebarwindows
+
+#endif
diff --git a/sw/source/ui/inc/SwSpellDialogChildWindow.hxx b/sw/source/ui/inc/SwSpellDialogChildWindow.hxx
index 3ab86b3469d7..dd3e7e2dce9b 100644
--- a/sw/source/ui/inc/SwSpellDialogChildWindow.hxx
+++ b/sw/source/ui/inc/SwSpellDialogChildWindow.hxx
@@ -48,8 +48,8 @@ class SwSpellDialogChildWindow
void LockFocusNotification(bool bLock);
protected:
- virtual svx::SpellPortions GetNextWrongSentence (void);
- virtual void ApplyChangedSentence(const svx::SpellPortions& rChanged);
+ virtual svx::SpellPortions GetNextWrongSentence(bool bRecheck);
+ virtual void ApplyChangedSentence(const svx::SpellPortions& rChanged, bool bRecheck);
virtual void AddAutoCorrection(const String& rOld, const String& rNew, LanguageType eLanguage);
virtual bool HasAutoCorrection();
virtual bool HasGrammarChecking();
diff --git a/sw/source/ui/inc/langhelper.hxx b/sw/source/ui/inc/langhelper.hxx
index 0d05c930284a..3ff795d83f56 100755
--- a/sw/source/ui/inc/langhelper.hxx
+++ b/sw/source/ui/inc/langhelper.hxx
@@ -31,31 +31,37 @@ class SwWrtShell;
class SwView;
class EditEngine;
class EditView;
+class OutlinerView;
class SfxItemSet;
struct ESelection;
namespace SwLangHelper
{
- extern USHORT GetLanguageStatus(OutlinerView* pOLV,SfxItemSet& rSet);
- extern bool SetLanguageStatus(OutlinerView* pOLV,SfxRequest &rReq,SwView &rView,SwWrtShell &rSh);
+ extern USHORT GetLanguageStatus( OutlinerView* pOLV, SfxItemSet& rSet );
+ extern bool SetLanguageStatus( OutlinerView* pOLV, SfxRequest &rReq, SwView &rView, SwWrtShell &rSh );
- extern void SetLanguage(SwWrtShell &rWrtSh, const String &rLangText, bool bIsForSelection, SfxItemSet &rCoreSet);
- extern void SetLanguage(SwWrtShell &rWrtSh, EditEngine* pEditEngine,ESelection aSelection, const String &rLangText, bool bIsForSelection, SfxItemSet &rCoreSet);
- extern void SetLanguage_None(SwWrtShell &rWrtSh, EditEngine* pEditEngine,ESelection aSelection, bool bIsForSelection, SfxItemSet &rCoreSet );
- extern void SetLanguage_None(SwWrtShell &rWrtSh,bool bIsForSelection, SfxItemSet &rCoreSet );
+ extern void SetLanguage( SwWrtShell &rWrtSh, const String &rLangText, bool bIsForSelection, SfxItemSet &rCoreSet );
+// extern void SetLanguage( SwWrtShell &rWrtSh, EditEngine* pEditEngine, ESelection aSelection, const String &rLangText, bool bIsForSelection, SfxItemSet &rCoreSet );
+ extern void SetLanguage( SwWrtShell &rWrtSh, OutlinerView* pOLV, ESelection aSelection, const String &rLangText, bool bIsForSelection, SfxItemSet &rCoreSet );
+ extern void SetLanguage_None( SwWrtShell &rWrtSh, bool bIsForSelection, SfxItemSet &rCoreSet );
+// extern void SetLanguage_None( SwWrtShell &rWrtSh, EditEngine* pEditEngine, ESelection aSelection, bool bIsForSelection, SfxItemSet &rCoreSet );
+ extern void SetLanguage_None( SwWrtShell &rWrtSh, OutlinerView* pOLV, ESelection aSelection, bool bIsForSelection, SfxItemSet &rCoreSet );
+ extern void ResetLanguages( SwWrtShell &rWrtSh, bool bIsForSelection );
+// extern void ResetLanguages( SwWrtShell &rWrtSh, EditEngine* pEditEngine, ESelection aSelection, bool bIsForSelection );
+ extern void ResetLanguages( SwWrtShell &rWrtSh, OutlinerView* pOLV, ESelection aSelection, bool bIsForSelection );
// document
extern void SelectCurrentPara( SwWrtShell &rWrtSh );
// EditView
extern void SelectPara( EditView &rEditView, const ESelection &rCurSel );
- extern String GetTextForLanguageGuessing(EditEngine* rEditEngine, ESelection aDocSelection );
+ extern String GetTextForLanguageGuessing( EditEngine* rEditEngine, ESelection aDocSelection );
extern String GetTextForLanguageGuessing( SwWrtShell &rSh );
extern LanguageType GetLanguage( SfxItemSet aSet, USHORT nLangWhichId );
extern LanguageType GetLanguage( SwWrtShell &rSh, USHORT nLangWhichId );
- extern LanguageType GetCurrentLanguage(SfxItemSet aSet,USHORT nScriptType );
+ extern LanguageType GetCurrentLanguage( SfxItemSet aSet, USHORT nScriptType );
extern LanguageType GetCurrentLanguage( SwWrtShell &rSh );
}
diff --git a/sw/source/ui/inc/olmenu.hxx b/sw/source/ui/inc/olmenu.hxx
index 3bc0eb02d3b6..ef6a26e73f67 100644
--- a/sw/source/ui/inc/olmenu.hxx
+++ b/sw/source/ui/inc/olmenu.hxx
@@ -51,23 +51,22 @@ class SwSpellPopup : public PopupMenu
::com::sun::star::linguistic2::XSpellAlternatives > xSpellAlt;
::com::sun::star::uno::Sequence< rtl::OUString > aSuggestions;
- LanguageType nCheckedLanguage;
+ LanguageType nCheckedLanguage;
LanguageType nGuessLangWord;
LanguageType nGuessLangPara;
- USHORT nNumLanguageTextEntries;
- USHORT nNumLanguageParaEntries;
- USHORT nNumLanguageDocEntries;
std::map< sal_Int16, ::rtl::OUString > aLangTable_Text;
std::map< sal_Int16, ::rtl::OUString > aLangTable_Paragraph;
- std::map< sal_Int16, ::rtl::OUString > aLangTable_Document;
+// std::map< sal_Int16, ::rtl::OUString > aLangTable_Document;
bool bGrammarResults; // show grammar results? Or show spellcheck results?
Image aInfo16;
- USHORT fillLangPopupMenu( PopupMenu *pPopupMenu , USHORT Lang_Start, ::com::sun::star::uno::Sequence< ::rtl::OUString > aSeq,SwWrtShell* pWrtSh, USHORT nLangTable);
+ void fillLangPopupMenu( PopupMenu *pPopupMenu, USHORT nLangStart,
+ ::com::sun::star::uno::Sequence< ::rtl::OUString > aSeq, SwWrtShell* pWrtSh,
+ std::map< sal_Int16, ::rtl::OUString > &rLangTable );
using PopupMenu::Execute;
diff --git a/sw/source/ui/inc/regionsw.hxx b/sw/source/ui/inc/regionsw.hxx
index 40ba9d3d0a15..0237f560da09 100644
--- a/sw/source/ui/inc/regionsw.hxx
+++ b/sw/source/ui/inc/regionsw.hxx
@@ -61,91 +61,11 @@ namespace sfx2
class FileDialogHelper;
}
-/*--------------------------------------------------------------------
- Beschreibung:
- --------------------------------------------------------------------*/
-
-class SectRepr
-{
- SwSection aSection;
- SwFmtCol aCol;
- SvxBrushItem aBrush;
- SwFmtFtnAtTxtEnd aFtnNtAtEnd;
- SwFmtEndAtTxtEnd aEndNtAtEnd;
- SwFmtNoBalancedColumns aBalance;
- SvxFrameDirectionItem aFrmDirItem;
- SvxLRSpaceItem aLRSpaceItem;
- USHORT nArrPos;
- USHORT nColumn;
- BOOL bContent : 1; //zeigt an, ob evtl. Textinhalt im Bereich ist
- BOOL bSelected : 1; //fuer Multiselektion erst markieren, dann mit der TreeListBox arbeiten!
- ::com::sun::star::uno::Sequence <sal_Int8 > aTempPasswd;
-public:
- SectRepr(USHORT nPos, SwSection& rSect);
- BOOL operator ==(SectRepr& rSectRef) const
- {return nArrPos==rSectRef.GetArrPos();}
-
- BOOL operator <(SectRepr& rSectRef) const
- {return nArrPos<rSectRef.GetArrPos();}
-
- SwSection& GetSection() { return aSection; }
- SwFmtCol& GetCol() { return aCol; }
- SvxBrushItem& GetBackground() { return aBrush; }
- SwFmtFtnAtTxtEnd& GetFtnNtAtEnd() { return aFtnNtAtEnd; }
- SwFmtEndAtTxtEnd& GetEndNtAtEnd() { return aEndNtAtEnd; }
- SwFmtNoBalancedColumns& GetBalance() { return aBalance; }
- SvxFrameDirectionItem& GetFrmDir() { return aFrmDirItem; }
- SvxLRSpaceItem& GetLRSpace() { return aLRSpaceItem; }
-
- USHORT GetArrPos() const {return nArrPos;}
- const String& GetCondition() const {return aSection.GetCondition();}
- const String& GetName() const { return aSection.GetName(); }
- String GetFile() const;
- String GetSubRegion() const;
- void SetFile( const String& rFile );
- void SetFilter( const String& rFilter );
- void SetSubRegion( const String& rSubRegion );
-
- void SetFilePasswd( const String& rPasswd )
- { aSection.SetLinkFilePassWd( rPasswd ); }
- void SetCondition( const String& rString )
- {aSection.SetCondition( rString);}
- BOOL IsCondHidden()const
- {return aSection.IsCondHidden();}
- BOOL IsHidden()const
- {return aSection.IsHidden();}
- BOOL IsProtect()const
- {return aSection.IsProtect();}
- // --> FME 2004-06-22 #114856# edit in readonly sections
- BOOL IsEditInReadonly()const
- {return aSection.IsEditInReadonly();}
- void SetEditInReadonly(BOOL bFlag = TRUE)
- {aSection.SetEditInReadonly(bFlag);}
- // <--
- void SetHidden(BOOL bFlag = TRUE)
- {aSection.SetHidden(bFlag);}
- void SetCondHidden(BOOL bFlag = TRUE)
- {aSection.SetCondHidden(bFlag);}
- void SetProtect(BOOL bFlag = TRUE)
- {aSection.SetProtect(bFlag);}
- BOOL IsContent(){return bContent;}
- void SetContent(BOOL bValue){bContent = bValue;}
- void SetSectionType(SectionType eSectionType) {aSection.SetType(eSectionType);}
- SectionType GetSectionType(){return aSection.GetType();}
-
- void SetSelected(){bSelected = TRUE;}
- BOOL IsSelected() const {return bSelected;}
-
-
- const ::com::sun::star::uno::Sequence <sal_Int8 >& GetPasswd() const {return aSection.GetPasswd();}
- ::com::sun::star::uno::Sequence <sal_Int8 >& GetTempPasswd() {return aTempPasswd;}
- void SetTempPasswd(const ::com::sun::star::uno::Sequence <sal_Int8 >& aPasswd) {aTempPasswd = aPasswd;}
-};
-
/*************************************************************************
Dialog "Bereiche bearbeiten"
*************************************************************************/
+class SectRepr;
typedef SectRepr* SectReprPtr;
SV_DECL_PTRARR_SORT( SectReprArr, SectReprPtr, 0, 4 )
@@ -385,7 +305,8 @@ public:
class SwInsertSectionTabDialog : public SfxTabDialog
{
SwWrtShell& rWrtSh;
- SwSection* pToInsertSection;
+ ::std::auto_ptr<SwSectionData> m_pSectionData;
+
protected:
virtual void PageCreated( USHORT nId, SfxTabPage &rPage );
virtual short Ok();
@@ -393,8 +314,8 @@ public:
SwInsertSectionTabDialog(Window* pParent, const SfxItemSet& rSet, SwWrtShell& rSh);
virtual ~SwInsertSectionTabDialog();
- void SetSection(const SwSection& rSect);
- SwSection* GetSection() { return pToInsertSection;}
+ void SetSectionData(SwSectionData const& rSect);
+ SwSectionData * GetSectionData() { return m_pSectionData.get(); }
};
/* -----------------21.05.99 13:07-------------------
diff --git a/sw/source/ui/inc/swdtflvr.hxx b/sw/source/ui/inc/swdtflvr.hxx
index 84b3309f70bc..041b55d9c6db 100644
--- a/sw/source/ui/inc/swdtflvr.hxx
+++ b/sw/source/ui/inc/swdtflvr.hxx
@@ -26,12 +26,10 @@
************************************************************************/
#ifndef _SWDTFLVR_HXX
#define _SWDTFLVR_HXX
-#ifndef _TRANSFER_HXX
#include <sfx2/objsh.hxx>
#include <svtools/transfer.hxx>
-#endif
#include <vcl/graph.hxx>
#include <sfx2/lnkbase.hxx>
#include <com/sun/star/embed/XEmbeddedObject.hpp>
@@ -93,6 +91,7 @@ class SwTransferable : public TransferableHelper
void DeleteSelection();
// helper methods for the paste
+ static SwTransferable* GetSwTransferable( const TransferableDataHelper& rData );
static void SetSelInShell( SwWrtShell& , BOOL , const Point* );
static BOOL _CheckForURLOrLNKFile( TransferableDataHelper& rData,
String& rFileName, String* pTitle = 0 );
diff --git a/sw/source/ui/inc/swmn.hrc b/sw/source/ui/inc/swmn.hrc
index 3128f741be30..bf375e4ab010 100644
--- a/sw/source/ui/inc/swmn.hrc
+++ b/sw/source/ui/inc/swmn.hrc
@@ -131,7 +131,6 @@
HelpID = MN_FORMAT_ALGN ; \
Command = ".uno:AlignTextMenu" ; \
Text [ en-US ] = "A~lignment" ; \
- RadioCheck = TRUE ; \
SubMenu = Menu\
{\
ItemList = \
diff --git a/sw/source/ui/inc/view.hxx b/sw/source/ui/inc/view.hxx
index 7cff88c897cc..d63149eb7c4f 100644
--- a/sw/source/ui/inc/view.hxx
+++ b/sw/source/ui/inc/view.hxx
@@ -437,6 +437,12 @@ public:
virtual USHORT PrepareClose( BOOL bUI = TRUE, BOOL bForBrowsing = FALSE );
virtual void MarginChanged();
+ // replace word/selection with text from the thesaurus
+ // (this code has special handling for "in word" character)
+ void InsertThesaurusSynonym( const String &rSynonmText, const String &rLookUpText, bool bValidSelection );
+ bool IsValidSelectionForThesaurus() const;
+ String GetThesaurusLookUpText( bool bSelection ) const;
+
// Shell sofort wechseln -> fuer GetSelectionObject
void StopShellTimer();
@@ -574,7 +580,7 @@ public:
BOOL HasDrwObj(SdrObject *pSdrObj) const;
BOOL HasOnlyObj(SdrObject *pSdrObj, UINT32 eObjInventor) const;
BOOL BeginTextEdit( SdrObject* pObj, SdrPageView* pPV=NULL,
- Window* pWin=NULL, BOOL bIsNewObj=FALSE);
+ Window* pWin=NULL, bool bIsNewObj=false, bool bSetSelectionToStart=false );
void StateTabWin(SfxItemSet&);
@@ -599,6 +605,7 @@ public:
SwDocShell *GetDocShell();
inline const SwDocShell *GetDocShell() const;
inline FmFormShell *GetFormShell() { return pFormShell; }
+ inline const FmFormShell *GetFormShell() const { return pFormShell; }
//damit in DToren der SubShells ggf. pShell zurueckgesetzt werden kann
void ResetSubShell() { pShell = 0; }
diff --git a/sw/source/ui/inc/wrtsh.hxx b/sw/source/ui/inc/wrtsh.hxx
index 2a65e1b36ff7..2fce41b1a972 100644
--- a/sw/source/ui/inc/wrtsh.hxx
+++ b/sw/source/ui/inc/wrtsh.hxx
@@ -47,7 +47,7 @@ class SdrView;
class SwView;
class SvGlobalName;
class SwInputFieldList;
-class SwSection;
+class SwSectionData;
class Timer;
class SvxMacro;
class SwFmtINetFmt;
@@ -460,7 +460,7 @@ typedef BOOL (SwWrtShell:: *FNSimpleMove)();
void AutoUpdatePara(SwTxtFmtColl* pColl, const SfxItemSet& rStyleSet);
// Link fuers einfuegen von Bereichen uebers Drag&Drop/Clipboard
- DECL_STATIC_LINK( SwWrtShell, InsertRegionDialog, SwSection* );
+ DECL_STATIC_LINK( SwWrtShell, InsertRegionDialog, SwSectionData* );
//ctoren, der erstere ist eine Art kontrollierter copy ctor fuer weitere
diff --git a/sw/source/ui/lingu/olmenu.cxx b/sw/source/ui/lingu/olmenu.cxx
index a3f2b67b69b6..934cfc19e22b 100644
--- a/sw/source/ui/lingu/olmenu.cxx
+++ b/sw/source/ui/lingu/olmenu.cxx
@@ -28,85 +28,84 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_sw.hxx"
-#include <hintids.hxx>
+#include "SwRewriter.hxx"
+#include "chrdlg.hrc"
+#include "cmdid.h"
+#include "comcore.hrc"
+#include "crsskip.hxx"
+#include "doc.hxx"
+#include "docsh.hxx" //CheckSpellChanges
+#include "edtwin.hxx"
+#include "helpid.h"
+#include "hintids.hxx"
+#include "langhelper.hxx"
+#include "ndtxt.hxx"
+#include "olmenu.hrc"
+#include "olmenu.hxx"
+#include "swabstdlg.hxx"
+#include "swmodule.hxx"
+#include "swtypes.hxx"
+#include "swundo.hxx"
+#include "uitool.hxx"
+#include "undobj.hxx"
+#include "unomid.h"
+#include "view.hxx"
+#include "viewopt.hxx"
+#include "wrtsh.hxx"
+#include "wview.hxx"
+#include "swabstdlg.hxx"
+#include "chrdlg.hrc"
+
#ifndef _SVSTDARR_HXX
#define _SVSTDARR_STRINGSDTOR
#include <svl/svstdarr.hxx>
#endif
-#include <unotools/lingucfg.hxx>
-#include <unotools/linguprops.hxx>
-#include <svtools/filter.hxx>
-#include <editeng/svxacorr.hxx>
-#include <sfx2/dispatch.hxx>
-#include <sfx2/imagemgr.hxx>
-#include <osl/file.hxx>
-#include <rtl/string.hxx>
+#include <comphelper/processfactory.hxx>
+#include <editeng/acorrcfg.hxx>
+#include <editeng/svxacorr.hxx>
+#include <editeng/langitem.hxx>
+#include <editeng/splwrap.hxx>
+#include <editeng/brshitem.hxx>
+#include <editeng/unolingu.hxx>
#include <i18npool/mslangid.hxx>
#include <linguistic/lngprops.hxx>
#include <linguistic/misc.hxx>
-#include <comphelper/processfactory.hxx>
-#include <editeng/unolingu.hxx>
-#include <com/sun/star/uno/Any.hxx>
-#include <com/sun/star/frame/XStorable.hpp>
-#include <com/sun/star/linguistic2/XSpellChecker1.hpp>
-#include <com/sun/star/linguistic2/XLanguageGuessing.hpp>
-#include <com/sun/star/linguistic2/SingleProofreadingError.hpp>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/container/XIndexAccess.hpp>
-#include <com/sun/star/container/XNameAccess.hpp>
-#include <com/sun/star/frame/XModuleManager.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <com/sun/star/i18n/ScriptType.hpp>
-#include <svx/dlgutil.hxx>
+#include <osl/file.hxx>
+#include <rtl/string.hxx>
+#include <svtools/filter.hxx>
+#include <sfx2/dispatch.hxx>
+#include <sfx2/imagemgr.hxx>
+#include <sfx2/request.hxx>
+#include <sfx2/sfxdlg.hxx>
#include <svl/itemset.hxx>
-#include <editeng/langitem.hxx>
-#include <editeng/splwrap.hxx>
-#include <vcl/svapp.hxx>
-#include <vcl/settings.hxx>
-#include <unotools/lingucfg.hxx>
-#include <editeng/acorrcfg.hxx>
-#include <swmodule.hxx>
-#include <cmdid.h>
-#include <helpid.h>
-#include <swtypes.hxx>
-#include <wrtsh.hxx>
-#include <view.hxx>
-#include <docsh.hxx> //CheckSpellChanges
-#include <olmenu.hxx>
-#include <swundo.hxx>
-#include <crsskip.hxx>
-#include <ndtxt.hxx>
-#include <olmenu.hrc>
-#include <doc.hxx>
-
-// -> #111827#
-#include <SwRewriter.hxx>
-#include <comcore.hrc>
-#include <undobj.hxx>
-// <- #111827#
-
-#include <unomid.h>
#include <svl/languageoptions.hxx>
-#include <map>
-#include <svtools/langtab.hxx>
-#include <com/sun/star/document/XDocumentLanguages.hpp>
-#include <edtwin.hxx>
-#include <sfx2/sfxdlg.hxx>
-#include "swabstdlg.hxx"
-#include "chrdlg.hrc"
-#include <editeng/brshitem.hxx>
#include <svl/stritem.hxx>
-#include <viewopt.hxx>
-#include <uitool.hxx>
+#include <svtools/filter.hxx>
+#include <svtools/langtab.hxx>
+#include <svx/dlgutil.hxx>
+#include <unotools/lingucfg.hxx>
+#include <unotools/linguprops.hxx>
+#include <vcl/msgbox.hxx>
+#include <vcl/settings.hxx>
+#include <vcl/svapp.hxx>
-#include <wview.hxx>
-#include <sfx2/request.hxx>
+#include <map>
-#include <vcl/msgbox.hxx>
+#include <com/sun/star/container/XIndexAccess.hpp>
+#include <com/sun/star/container/XNameAccess.hpp>
+#include <com/sun/star/document/XDocumentLanguages.hpp>
+#include <com/sun/star/frame/XModuleManager.hpp>
+#include <com/sun/star/frame/XStorable.hpp>
+#include <com/sun/star/i18n/ScriptType.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/linguistic2/SingleProofreadingError.hpp>
+#include <com/sun/star/linguistic2/XLanguageGuessing.hpp>
+#include <com/sun/star/linguistic2/XSpellChecker1.hpp>
+#include <com/sun/star/uno/Any.hxx>
-#include <langhelper.hxx>
using namespace ::com::sun::star;
using ::rtl::OUString;
@@ -214,63 +213,59 @@ inline bool lcl_checkScriptType( sal_Int16 nScriptType, LanguageType nLang )
return 0 != (nScriptType & SvtLanguageOptions::GetScriptTypeOfLanguage( nLang ));
}
-USHORT SwSpellPopup::fillLangPopupMenu(
+void SwSpellPopup::fillLangPopupMenu(
PopupMenu *pPopupMenu,
- USHORT Lang_Start,
- uno::Sequence< ::rtl::OUString > aSeq,
+ USHORT nLangItemIdStart,
+ uno::Sequence< OUString > aSeq,
SwWrtShell* pWrtSh,
- USHORT nLangTable )
+ std::map< sal_Int16, ::rtl::OUString > &rLangTable )
{
if (!pPopupMenu)
- return 0;
-
- //Reference< awt::XMenuExtended > m_xMenuExtended( m_xPopupMenu, UNO_QUERY );
- std::map< ::rtl::OUString, ::rtl::OUString > LangItems;
+ return;
SvtLanguageTable aLanguageTable;
- USHORT nItemId = Lang_Start;
- rtl::OUString curLang = aSeq[0];
- USHORT nScriptType = static_cast< sal_Int16 >(aSeq[1].toInt32());
- rtl::OUString keyboardLang = aSeq[2];
- rtl::OUString guessLang = aSeq[3];
-
- //1--add current language
- if(curLang!=OUString::createFromAscii(""))
- {
- LangItems[curLang]=curLang;
- }
- SvtLanguageTable aLangTable;
+ // set of languages to be displayed in the sub menus
+ std::set< OUString > aLangItems;
+
+ OUString aCurLang( aSeq[0] );
+ USHORT nScriptType = static_cast< sal_Int16 >(aSeq[1].toInt32());
+ OUString aKeyboardLang( aSeq[2] );
+ OUString aGuessedTextLang( aSeq[3] );
+
+ if (aCurLang != OUString() &&
+ LANGUAGE_DONTKNOW != aLanguageTable.GetType( aCurLang ))
+ aLangItems.insert( aCurLang );
+
//2--System
- const AllSettings& rAllSettings=Application::GetSettings();
+ const AllSettings& rAllSettings = Application::GetSettings();
LanguageType rSystemLanguage = rAllSettings.GetLanguage();
- if(rSystemLanguage!=LANGUAGE_DONTKNOW)
+ if (rSystemLanguage != LANGUAGE_DONTKNOW)
{
- if (lcl_checkScriptType(nScriptType,rSystemLanguage ))
- LangItems[OUString(aLangTable.GetString(rSystemLanguage))]=OUString(aLangTable.GetString(rSystemLanguage));
+ if (lcl_checkScriptType( nScriptType, rSystemLanguage ))
+ aLangItems.insert( aLanguageTable.GetString(rSystemLanguage) );
}
//3--UI
LanguageType rUILanguage = rAllSettings.GetUILanguage();
- if(rUILanguage!=LANGUAGE_DONTKNOW)
+ if (rUILanguage != LANGUAGE_DONTKNOW)
{
if (lcl_checkScriptType(nScriptType, rUILanguage ))
- LangItems[OUString(aLangTable.GetString(rUILanguage))]=OUString(aLangTable.GetString(rUILanguage));
+ aLangItems.insert( aLanguageTable.GetString(rUILanguage) );
}
//4--guessed language
- if(guessLang!=OUString::createFromAscii(""))
+ if (aGuessedTextLang.getLength() > 0)
{
- if (lcl_checkScriptType(nScriptType, aLanguageTable.GetType(guessLang)))
- LangItems[guessLang]=guessLang;
+ if (lcl_checkScriptType(nScriptType, aLanguageTable.GetType(aGuessedTextLang)))
+ aLangItems.insert( aGuessedTextLang );
}
-
//5--keyboard language
- if(keyboardLang!=OUString::createFromAscii(""))
+ if (aKeyboardLang.getLength() > 0)
{
- if (lcl_checkScriptType(nScriptType, aLanguageTable.GetType(keyboardLang)))
- LangItems[keyboardLang]=keyboardLang;
+ if (lcl_checkScriptType(nScriptType, aLanguageTable.GetType(aKeyboardLang)))
+ aLangItems.insert( aKeyboardLang );
}
//6--all languages used in current document
@@ -278,68 +273,57 @@ USHORT SwSpellPopup::fillLangPopupMenu(
uno::Reference< com::sun::star::frame::XController > xController( pWrtSh->GetView().GetViewFrame()->GetFrame().GetFrameInterface()->getController(), uno::UNO_QUERY );
if ( xController.is() )
xModel = xController->getModel();
-
uno::Reference< document::XDocumentLanguages > xDocumentLanguages( xModel, uno::UNO_QUERY );
- /*the description of nScriptType
- LATIN : 1
- ASIAN : 2
- COMPLEX:4
- LATIN + ASIAN : 3
- LATIN + COMPLEX : 5
- ASIAN + COMPLEX : 6
- LATIN + ASIAN + COMPLEX : 7
+ /*the description of nScriptType flags
+ LATIN : 0x0001
+ ASIAN : 0x0002
+ COMPLEX: 0x0004
*/
-
- sal_Int16 nCount=7;
- if(xDocumentLanguages.is())
+ const sal_Int16 nMaxCount = 7;
+ if (xDocumentLanguages.is())
{
- uno::Sequence< lang::Locale > rLocales(xDocumentLanguages->getDocumentLanguages(nScriptType,nCount));
- if(rLocales.getLength()>0)
+ uno::Sequence< lang::Locale > rLocales( xDocumentLanguages->getDocumentLanguages( nScriptType, nMaxCount ) );
+ if (rLocales.getLength() > 0)
{
- for(USHORT i = 0; i<rLocales.getLength();++i)
+ for (USHORT i = 0; i < rLocales.getLength(); ++i)
{
- if (LangItems.size()==7)
+ if (aLangItems.size() == (size_t)nMaxCount)
break;
- const lang::Locale& rLocale=rLocales[i];
- if(lcl_checkScriptType(nScriptType, aLanguageTable.GetType(rLocale.Language)))
- LangItems[ rtl::OUString(rLocale.Language)]=OUString(rLocale.Language);
+ const lang::Locale& rLocale = rLocales[i];
+ if (lcl_checkScriptType( nScriptType, aLanguageTable.GetType( rLocale.Language )))
+ aLangItems.insert( rLocale.Language );
}
}
}
- for (std::map< rtl::OUString, rtl::OUString >::const_iterator it = LangItems.begin(); it != LangItems.end(); ++it)
+
+ USHORT nItemId = nLangItemIdStart;
+ const OUString sAsterix(RTL_CONSTASCII_USTRINGPARAM("*")); // multiple languages in current selection
+ const OUString sEmpty; // 'no language found' from language guessing
+ std::set< OUString >::const_iterator it;
+ for (it = aLangItems.begin(); it != aLangItems.end(); ++it)
{
- rtl::OUString aEntryTxt( it->first );
- if (aEntryTxt != rtl::OUString( aLangTable.GetString( LANGUAGE_NONE ) )&&
- aEntryTxt != rtl::OUString::createFromAscii("*") &&
- aEntryTxt.getLength() > 0)
+ OUString aEntryTxt( *it );
+ if (aEntryTxt != OUString( aLanguageTable.GetString( LANGUAGE_NONE ) )&&
+ aEntryTxt != sAsterix &&
+ aEntryTxt != sEmpty)
{
- ++nItemId;
- if (nLangTable == 0) // language for selection
- aLangTable_Text[nItemId] = aEntryTxt;
- else if (nLangTable == 1) // language for paragraph
- aLangTable_Paragraph[nItemId] = aEntryTxt;
- else if (nLangTable == 2) // language for document
- aLangTable_Document[nItemId] = aEntryTxt;
-
+ DBG_ASSERT( nLangItemIdStart <= nItemId && nItemId <= nLangItemIdStart + MN_MAX_NUM_LANG,
+ "nItemId outside of expected range!" );
pPopupMenu->InsertItem( nItemId, aEntryTxt, MIB_RADIOCHECK );
- if (aEntryTxt == curLang)
+ if (aEntryTxt == aCurLang)
{
//make a check mark for the current language
pPopupMenu->CheckItem( nItemId, TRUE );
}
+ rLangTable[ nItemId ] = aEntryTxt;
+ ++nItemId;
}
}
- //7--none
- nItemId++;
- pPopupMenu->InsertItem( nItemId, String(SW_RES( STR_LANGSTATUS_NONE )), MIB_RADIOCHECK );
-
- //More...
- nItemId++;
- pPopupMenu->InsertItem( nItemId, String(SW_RES( STR_LANGSTATUS_MORE )), MIB_RADIOCHECK );
-
- return nItemId - Lang_Start; // return number of inserted entries
+ pPopupMenu->InsertItem( nLangItemIdStart + MN_NONE_OFFSET, String(SW_RES( STR_LANGSTATUS_NONE )), MIB_RADIOCHECK );
+ pPopupMenu->InsertItem( nLangItemIdStart + MN_RESET_OFFSET, String(SW_RES( STR_RESET_TO_DEFAULT_LANGUAGE )), MIB_RADIOCHECK );
+ pPopupMenu->InsertItem( nLangItemIdStart + MN_MORE_OFFSET, String(SW_RES( STR_LANGSTATUS_MORE )), MIB_RADIOCHECK );
}
@@ -362,22 +346,22 @@ static Image lcl_GetImageFromPngUrl( const OUString &rFileUrl )
}
-::rtl::OUString RetrieveLabelFromCommand( const ::rtl::OUString& aCmdURL )
+OUString RetrieveLabelFromCommand( const OUString& aCmdURL )
{
- ::rtl::OUString aLabel;
+ OUString aLabel;
if ( aCmdURL.getLength() )
{
try
{
- uno::Reference< container::XNameAccess > xNameAccess( ::comphelper::getProcessServiceFactory()->createInstance( rtl::OUString::createFromAscii("com.sun.star.frame.UICommandDescription") ), uno::UNO_QUERY );
+ uno::Reference< container::XNameAccess > xNameAccess( ::comphelper::getProcessServiceFactory()->createInstance( OUString::createFromAscii("com.sun.star.frame.UICommandDescription") ), uno::UNO_QUERY );
if ( xNameAccess.is() )
{
uno::Reference< container::XNameAccess > xUICommandLabels;
- const ::rtl::OUString aModule( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.text.TextDocument" ) );
+ const OUString aModule( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.text.TextDocument" ) );
uno::Any a = xNameAccess->getByName( aModule );
uno::Reference< container::XNameAccess > xUICommands;
a >>= xUICommandLabels;
- rtl::OUString aStr;
+ OUString aStr;
uno::Sequence< beans::PropertyValue > aPropSeq;
a = xUICommandLabels->getByName( aCmdURL );
if ( a >>= aPropSeq )
@@ -442,25 +426,28 @@ bGrammarResults(false)
InsertSeparator(0);
bEnable = sal_True;
- for( sal_uInt16 i = 0, nPos = 1, nId = MN_AUTOCORR_START + 1;
- i < nStringCount; ++i, ++nPos, ++nId )
+ USHORT nAutoCorrItemId = MN_AUTOCORR_START;
+ USHORT nItemId = MN_SUGGESTION_START;
+ for (USHORT i = 0; i < nStringCount; ++i)
{
const String aEntry = aSuggestions[ i ];
- InsertItem( nPos, aEntry, 0, i );
- SetHelpId( nPos, HID_LINGU_REPLACE);
-
+ InsertItem( nItemId, aEntry, 0, i );
+ SetHelpId( nItemId, HID_LINGU_REPLACE);
if (aSuggestionImageUrl.getLength() > 0)
- SetItemImage( nPos, aImage );
+ SetItemImage( nItemId, aImage );
+
+ pMenu->InsertItem( nAutoCorrItemId, aEntry );
+ pMenu->SetHelpId( nAutoCorrItemId, HID_LINGU_AUTOCORR);
- pMenu->InsertItem( nId, aEntry );
- pMenu->SetHelpId( nPos, HID_LINGU_AUTOCORR);
+ ++nAutoCorrItemId;
+ ++nItemId;
}
}
OUString aIgnoreSelection( String( SW_RES( STR_IGNORE_SELECTION ) ) );
OUString aSpellingAndGrammar = RetrieveLabelFromCommand( C2U(".uno:SpellingAndGrammarDialog") );
- SetItemText( MN_SPELLING, aSpellingAndGrammar );
- USHORT nItemPos = GetItemPos( MN_IGNORE );
+ SetItemText( MN_SPELLING_DLG, aSpellingAndGrammar );
+ USHORT nItemPos = GetItemPos( MN_IGNORE_WORD );
InsertItem( MN_IGNORE_SELECTION, aIgnoreSelection, 0, nItemPos );
SetHelpId( MN_IGNORE_SELECTION, HID_LINGU_IGNORE_SELECTION);
@@ -483,11 +470,9 @@ bGrammarResults(false)
nGuessLangPara = nGuessLangWord;
}
- pMenu = GetPopupMenu(MN_INSERT);
-
- bEnable = FALSE; // enable MN_INSERT?
-
+ pMenu = GetPopupMenu(MN_ADD_TO_DIC);
pMenu->CreateAutoMnemonics();
+ bEnable = FALSE; // enable MN_ADD_TO_DIC?
uno::Reference< linguistic2::XDictionaryList > xDicList( SvxGetDictionaryList() );
if (xDicList.is())
{
@@ -502,6 +487,7 @@ bGrammarResults(false)
const uno::Reference< linguistic2::XDictionary > *pDic = aDics.getConstArray();
USHORT nDicCount = static_cast< USHORT >(aDics.getLength());
+ USHORT nItemId = MN_DICTIONARIES_START;
for( USHORT i = 0; i < nDicCount; i++ )
{
uno::Reference< linguistic2::XDictionary > xDicTmp( pDic[i], uno::UNO_QUERY );
@@ -517,8 +503,7 @@ bGrammarResults(false)
{
// the extra 1 is because of the (possible) external
// linguistic entry above
- USHORT nPos = MN_INSERT_START + i + 1;
- pMenu->InsertItem( nPos, xDicTmp->getName() );
+ pMenu->InsertItem( nItemId, xDicTmp->getName() );
bEnable = sal_True;
uno::Reference< lang::XServiceInfo > xSvcInfo( xDicTmp, uno::UNO_QUERY );
@@ -529,18 +514,20 @@ bGrammarResults(false)
if (aDictionaryImageUrl.getLength() > 0)
{
Image aImage( lcl_GetImageFromPngUrl( aDictionaryImageUrl ) );
- pMenu->SetItemImage( nPos, aImage );
+ pMenu->SetItemImage( nItemId, aImage );
}
}
+
+ ++nItemId;
}
}
}
- EnableItem( MN_INSERT, bEnable );
+ EnableItem( MN_ADD_TO_DIC, bEnable );
//ADD NEW LANGUAGE MENU ITEM
///////////////////////////////////////////////////////////////////////////
String aScriptTypesInUse( String::CreateFromInt32( pWrtSh->GetScriptType() ) );
- SvtLanguageTable aLangTable;
+ SvtLanguageTable aLanguageTable;
// get keyboard language
String aKeyboardLang;
@@ -548,39 +535,40 @@ bGrammarResults(false)
SwEditWin& rEditWin = pWrtSh->GetView().GetEditWin();
nLang = rEditWin.GetInputLanguage();
if (nLang != LANGUAGE_DONTKNOW && nLang != LANGUAGE_SYSTEM)
- aKeyboardLang = aLangTable.GetString( nLang );
+ aKeyboardLang = aLanguageTable.GetString( nLang );
// get the language that is in use
const String aMultipleLanguages = String::CreateFromAscii("*");
String aCurrentLang = aMultipleLanguages;
nLang = SwLangHelper::GetCurrentLanguage( *pWrtSh );
if (nLang != LANGUAGE_DONTKNOW)
- aCurrentLang = aLangTable.GetString( nLang );
+ aCurrentLang = aLanguageTable.GetString( nLang );
// build sequence for status value
- uno::Sequence< ::rtl::OUString > aSeq( 4 );
+ uno::Sequence< OUString > aSeq( 4 );
aSeq[0] = aCurrentLang;
aSeq[1] = aScriptTypesInUse;
aSeq[2] = aKeyboardLang;
- aSeq[3] = aLangTable.GetString(nGuessLangWord);
+ aSeq[3] = aLanguageTable.GetString(nGuessLangWord);
- pMenu = GetPopupMenu(MN_LANGUAGE_SELECTION);
- nNumLanguageTextEntries = fillLangPopupMenu( pMenu, MN_LANGUAGE_SELECTION_START, aSeq, pWrtSh, 0 );
- EnableItem( MN_LANGUAGE_SELECTION, true );
+ pMenu = GetPopupMenu(MN_SET_LANGUAGE_SELECTION);
+ fillLangPopupMenu( pMenu, MN_SET_LANGUAGE_SELECTION_START, aSeq, pWrtSh, aLangTable_Text );
+ EnableItem( MN_SET_LANGUAGE_SELECTION, true );
- pMenu = GetPopupMenu(MN_LANGUAGE_PARAGRAPH);
- nNumLanguageParaEntries = fillLangPopupMenu( pMenu, MN_LANGUAGE_PARAGRAPH_START, aSeq, pWrtSh, 1 );
- EnableItem( MN_LANGUAGE_PARAGRAPH, true );
+ pMenu = GetPopupMenu(MN_SET_LANGUAGE_PARAGRAPH);
+ fillLangPopupMenu( pMenu, MN_SET_LANGUAGE_PARAGRAPH_START, aSeq, pWrtSh, aLangTable_Paragraph );
+ EnableItem( MN_SET_LANGUAGE_PARAGRAPH, true );
/*
- pMenu = GetPopupMenu(MN_LANGUAGE_ALL_TEXT);
- nNumLanguageDocEntries = fillLangPopupMenu( pMenu, MN_LANGUAGE_ALL_TEXT_START, aSeq, pWrtSh, 2 );
- EnableItem( MN_LANGUAGE_ALL_TEXT, true );
+ pMenu = GetPopupMenu(MN_SET_LANGUAGE_ALL_TEXT);
+ fillLangPopupMenu( pMenu, MN_SET_LANGUAGE_ALL_TEXT_START, aSeq, pWrtSh, aLangTable_Document );
+ EnableItem( MN_SET_LANGUAGE_ALL_TEXT, true );
*/
uno::Reference< frame::XFrame > xFrame = pWrtSh->GetView().GetViewFrame()->GetFrame().GetFrameInterface();
Image rImg = ::GetImage( xFrame,
- ::rtl::OUString::createFromAscii(".uno:SpellingAndGrammarDialog"), sal_False,
+ OUString::createFromAscii(".uno:SpellingAndGrammarDialog"), sal_False,
Application::GetSettings().GetStyleSettings().GetHighContrastMode() );
- SetItemImage( MN_SPELLING, rImg );
+ SetItemImage( MN_SPELLING_DLG, rImg );
+
//////////////////////////////////////////////////////////////////////////////////
RemoveDisabledEntries( TRUE, TRUE );
@@ -595,7 +583,7 @@ SwSpellPopup::SwSpellPopup(
SwWrtShell *pWrtSh,
const linguistic2::ProofreadingResult &rResult,
sal_Int32 nErrorInResult,
- const uno::Sequence< rtl::OUString > &rSuggestions,
+ const uno::Sequence< OUString > &rSuggestions,
const String &rParaText ) :
PopupMenu( SW_RES(MN_SPELL_POPUP) ),
pSh( pWrtSh ),
@@ -605,13 +593,11 @@ aInfo16( SW_RES(IMG_INFO_16) )
{
nCheckedLanguage = SvxLocaleToLanguage( rResult.aLocale );
- sal_Int16 nItemId = 1;
- sal_Int16 nPos = 0;
+ USHORT nPos = 0;
OUString aMessageText( rResult.aErrors[ nErrorInResult ].aShortComment );
InsertSeparator( nPos++ );
- InsertItem( nItemId, aMessageText, MIB_NOSELECT, nPos++ );
- SetItemImage( nItemId, aInfo16 );
- ++nItemId;
+ InsertItem( MN_SHORT_COMMENT, aMessageText, MIB_NOSELECT, nPos++ );
+ SetItemImage( MN_SHORT_COMMENT, aInfo16 );
CreateAutoMnemonics();
@@ -628,12 +614,12 @@ aInfo16( SW_RES(IMG_INFO_16) )
aImage = Image( lcl_GetImageFromPngUrl( aSuggestionImageUrl ) );
}
+ USHORT nItemId = MN_SUGGESTION_START;
for (sal_uInt16 i = 0; i < nStringCount; ++i)
{
const String aEntry = aSuggestions[ i ];
InsertItem( nItemId, aEntry, 0, nPos++ );
SetHelpId( nItemId, HID_LINGU_REPLACE );
-
if (aSuggestionImageUrl.getLength() > 0)
SetItemImage( nItemId, aImage );
@@ -644,8 +630,8 @@ aInfo16( SW_RES(IMG_INFO_16) )
OUString aIgnoreSelection( String( SW_RES( STR_IGNORE_SELECTION ) ) );
OUString aSpellingAndGrammar = RetrieveLabelFromCommand( C2U(".uno:SpellingAndGrammarDialog") );
- SetItemText( MN_SPELLING, aSpellingAndGrammar );
- USHORT nItemPos = GetItemPos( MN_IGNORE );
+ SetItemText( MN_SPELLING_DLG, aSpellingAndGrammar );
+ USHORT nItemPos = GetItemPos( MN_IGNORE_WORD );
InsertItem( MN_IGNORE_SELECTION, aIgnoreSelection, 0, nItemPos );
SetHelpId( MN_IGNORE_SELECTION, HID_LINGU_IGNORE_SELECTION);
@@ -668,13 +654,13 @@ aInfo16( SW_RES(IMG_INFO_16) )
nGuessLangPara = nGuessLangWord;
}
- EnableItem( MN_IGNORE, false );
- EnableItem( MN_INSERT, false );
+ EnableItem( MN_IGNORE_WORD, false );
+ EnableItem( MN_ADD_TO_DIC, false );
//ADD NEW LANGUAGE MENU ITEM
///////////////////////////////////////////////////////////////////////////
String aScriptTypesInUse( String::CreateFromInt32( pWrtSh->GetScriptType() ) );
- SvtLanguageTable aLangTable;
+ SvtLanguageTable aLanguageTable;
// get keyboard language
String aKeyboardLang;
@@ -682,39 +668,39 @@ aInfo16( SW_RES(IMG_INFO_16) )
SwEditWin& rEditWin = pWrtSh->GetView().GetEditWin();
nLang = rEditWin.GetInputLanguage();
if (nLang != LANGUAGE_DONTKNOW && nLang != LANGUAGE_SYSTEM)
- aKeyboardLang = aLangTable.GetString( nLang );
+ aKeyboardLang = aLanguageTable.GetString( nLang );
// get the language that is in use
const String aMultipleLanguages = String::CreateFromAscii("*");
String aCurrentLang = aMultipleLanguages;
nLang = SwLangHelper::GetCurrentLanguage( *pWrtSh );
if (nLang != LANGUAGE_DONTKNOW)
- aCurrentLang = aLangTable.GetString( nLang );
+ aCurrentLang = aLanguageTable.GetString( nLang );
// build sequence for status value
- uno::Sequence< ::rtl::OUString > aSeq( 4 );
+ uno::Sequence< OUString > aSeq( 4 );
aSeq[0] = aCurrentLang;
aSeq[1] = aScriptTypesInUse;
aSeq[2] = aKeyboardLang;
- aSeq[3] = aLangTable.GetString(nGuessLangWord);
+ aSeq[3] = aLanguageTable.GetString(nGuessLangWord);
- PopupMenu *pMenu = GetPopupMenu(MN_LANGUAGE_SELECTION);
- nNumLanguageTextEntries = fillLangPopupMenu( pMenu, MN_LANGUAGE_SELECTION_START, aSeq, pWrtSh, 0 );
- EnableItem( MN_LANGUAGE_SELECTION, true );
+ PopupMenu *pMenu = GetPopupMenu(MN_SET_LANGUAGE_SELECTION);
+ fillLangPopupMenu( pMenu, MN_SET_LANGUAGE_SELECTION_START, aSeq, pWrtSh, aLangTable_Text );
+ EnableItem( MN_SET_LANGUAGE_SELECTION, true );
- pMenu = GetPopupMenu(MN_LANGUAGE_PARAGRAPH);
- nNumLanguageParaEntries = fillLangPopupMenu( pMenu, MN_LANGUAGE_PARAGRAPH_START, aSeq, pWrtSh, 1 );
- EnableItem( MN_LANGUAGE_PARAGRAPH, true );
+ pMenu = GetPopupMenu(MN_SET_LANGUAGE_PARAGRAPH);
+ fillLangPopupMenu( pMenu, MN_SET_LANGUAGE_PARAGRAPH_START, aSeq, pWrtSh, aLangTable_Paragraph );
+ EnableItem( MN_SET_LANGUAGE_PARAGRAPH, true );
/*
- pMenu = GetPopupMenu(MN_LANGUAGE_ALL_TEXT);
- nNumLanguageDocEntries = fillLangPopupMenu( pMenu, MN_LANGUAGE_ALL_TEXT_START, aSeq, pWrtSh, 2 );
- EnableItem( MN_LANGUAGE_ALL_TEXT, true );
+ pMenu = GetPopupMenu(MN_SET_LANGUAGE_ALL_TEXT);
+ fillLangPopupMenu( pMenu, MN_SET_LANGUAGE_ALL_TEXT_START, aSeq, pWrtSh, aLangTable_Document );
+ EnableItem( MN_SET_LANGUAGE_ALL_TEXT, true );
*/
uno::Reference< frame::XFrame > xFrame = pWrtSh->GetView().GetViewFrame()->GetFrame().GetFrameInterface();
Image rImg = ::GetImage( xFrame,
- ::rtl::OUString::createFromAscii(".uno:SpellingAndGrammarDialog"), sal_False,
+ OUString::createFromAscii(".uno:SpellingAndGrammarDialog"), sal_False,
Application::GetSettings().GetStyleSettings().GetHighContrastMode() );
- SetItemImage( MN_SPELLING, rImg );
+ SetItemImage( MN_SPELLING_DLG, rImg );
//////////////////////////////////////////////////////////////////////////////////
@@ -737,25 +723,23 @@ sal_uInt16 SwSpellPopup::Execute( const Rectangle& rWordPos, Window* pWin )
-----------------------------------------------------------------------*/
void SwSpellPopup::Execute( USHORT nId )
{
- if (bGrammarResults && nId == 1)
- return; // nothing to do since it is the error message (short comment)
+ if (nId == USHRT_MAX)
+ return;
- sal_Bool bAutoCorr = sal_False;
- if( nId > MN_AUTOCORR_START && nId < MN_LANGUAGE_SELECTION_START && nId != USHRT_MAX )
- {
- nId -= MN_AUTOCORR_START;
- bAutoCorr = sal_True;
- }
+ if (/*bGrammarResults && */nId == MN_SHORT_COMMENT)
+ return; // nothing to do since it is the error message (short comment)
- if( nId && nId != USHRT_MAX)
+ if ((MN_SUGGESTION_START <= nId && nId <= MN_SUGGESTION_END) ||
+ (MN_AUTOCORR_START <= nId && nId <= MN_AUTOCORR_END))
{
- int nAltIdx = bGrammarResults ? nId - 2 : nId - 1;
- if ( nAltIdx >= 0 && nAltIdx < aSuggestions.getLength() && (bGrammarResults || xSpellAlt.is()) )
+ sal_Int32 nAltIdx = (MN_SUGGESTION_START <= nId && nId <= MN_SUGGESTION_END) ?
+ nId - MN_SUGGESTION_START : nId - MN_AUTOCORR_START;
+ DBG_ASSERT( 0 <= nAltIdx && nAltIdx < aSuggestions.getLength(), "index out of range" );
+ if (0 <= nAltIdx && nAltIdx < aSuggestions.getLength() && (bGrammarResults || xSpellAlt.is()))
{
sal_Bool bOldIns = pSh->IsInsMode();
pSh->SetInsMode( sal_True );
- DBG_ASSERT( 0 <= nAltIdx && nAltIdx <= aSuggestions.getLength(), "index out of range");
String aTmp( aSuggestions[ nAltIdx ] );
String aOrig( bGrammarResults ? OUString() : xSpellAlt->getWord() );
@@ -774,40 +758,30 @@ void SwSpellPopup::Execute( USHORT nId )
aRewriter.AddRule(UNDO_ARG1, pSh->GetCrsrDescr());
aRewriter.AddRule(UNDO_ARG2, String(SW_RES(STR_YIELDS)));
- {
- String aTmpStr;
-
- aTmpStr += String(SW_RES(STR_START_QUOTE));
- aTmpStr += aTmp;
- aTmpStr += String(SW_RES(STR_END_QUOTE));
- aRewriter.AddRule(UNDO_ARG3, aTmpStr);
- }
+ String aTmpStr( SW_RES(STR_START_QUOTE) );
+ aTmpStr += aTmp;
+ aTmpStr += String(SW_RES(STR_END_QUOTE));
+ aRewriter.AddRule(UNDO_ARG3, aTmpStr);
pSh->StartUndo(UNDO_UI_REPLACE, &aRewriter);
pSh->StartAction();
pSh->DelLeft();
pSh->Insert( aTmp );
+
/* #102505# EndAction/EndUndo moved down since insertion
of temporary auto correction is now undoable two and
must reside in the same undo group.*/
-
// nur aufnehmen, wenn es NICHT schon in der Autokorrektur vorhanden ist
SvxAutoCorrect* pACorr = SvxAutoCorrCfg::Get()->GetAutoCorrect();
String aOrigWord( bGrammarResults ? OUString() : xSpellAlt->getWord() ) ;
- String aNewWord;
- if( nId )
- aNewWord = aSuggestions[ nAltIdx ];
- else
- aNewWord = aOrigWord;
+ String aNewWord( aSuggestions[ nAltIdx ] );
SvxPrepareAutoCorrect( aOrigWord, aNewWord );
- if( bAutoCorr )
- {
+ if (MN_AUTOCORR_START <= nId && nId <= MN_AUTOCORR_END)
pACorr->PutText( aOrigWord, aNewWord, nCheckedLanguage );
- }
/* #102505# EndAction/EndUndo moved down since insertion
of temporary auto correction is now undoable two and
@@ -817,180 +791,140 @@ void SwSpellPopup::Execute( USHORT nId )
pSh->SetInsMode( bOldIns );
}
- else
+ }
+ else if (nId == MN_SPELLING_DLG)
+ {
+ if (bGrammarResults)
+ {
+ SvtLinguConfig().SetProperty( A2OU( UPN_IS_GRAMMAR_INTERACTIVE ), uno::makeAny( sal_True ));
+ }
+ pSh->Left(CRSR_SKIP_CHARS, FALSE, 1, FALSE );
{
- if (nId < MN_LANGUAGE_SELECTION_START)
+ uno::Reference<linguistic2::XDictionaryList> xDictionaryList( SvxGetDictionaryList() );
+ SvxDicListChgClamp aClamp( xDictionaryList );
+ pSh->GetView().GetViewFrame()->GetDispatcher()->
+ Execute( FN_SPELL_GRAMMAR_DIALOG, SFX_CALLMODE_ASYNCHRON );
+ }
+ }
+ else if (nId == MN_IGNORE_SELECTION)
+ {
+ SwPaM *pPaM = pSh->GetCrsr();
+ if (pPaM)
+ pSh->IgnoreGrammarErrorAt( *pPaM );
+ }
+ else if (nId == MN_IGNORE_WORD)
+ {
+ uno::Reference< linguistic2::XDictionary > xDictionary( SvxGetIgnoreAllList(), uno::UNO_QUERY );
+ linguistic::AddEntryToDic( xDictionary,
+ xSpellAlt->getWord(), sal_False, aEmptyStr, LANGUAGE_NONE );
+ }
+ else if (MN_DICTIONARIES_START <= nId && nId <= MN_DICTIONARIES_END)
+ {
+ OUString aWord( xSpellAlt->getWord() );
+ USHORT nDicIdx = nId - MN_DICTIONARIES_START;
+ DBG_ASSERT( nDicIdx < aDics.getLength(), "dictionary index out of range" );
+
+ if (nDicIdx < aDics.getLength())
{
- switch( nId )
+ uno::Reference< linguistic2::XDictionary > xDic = aDics.getConstArray()[nDicIdx];
+ INT16 nAddRes = linguistic::AddEntryToDic( xDic, aWord, FALSE, aEmptyStr, LANGUAGE_NONE );
+ // save modified user-dictionary if it is persistent
+ uno::Reference< frame::XStorable > xSavDic( xDic, uno::UNO_QUERY );
+ if (xSavDic.is())
+ xSavDic->store();
+
+ if (DIC_ERR_NONE != nAddRes
+ && !xDic->getEntry( aWord ).is())
{
- case MN_SPELLING:
- {
- if (bGrammarResults)
- {
- SvtLinguConfig().SetProperty( A2OU( UPN_IS_GRAMMAR_INTERACTIVE ), uno::makeAny( sal_True ));
- }
- pSh->Left(CRSR_SKIP_CHARS, FALSE, 1, FALSE );
- {
- uno::Reference<linguistic2::XDictionaryList> xDictionaryList( SvxGetDictionaryList() );
- SvxDicListChgClamp aClamp( xDictionaryList );
- pSh->GetView().GetViewFrame()->GetDispatcher()->
- Execute( FN_SPELL_GRAMMAR_DIALOG, SFX_CALLMODE_ASYNCHRON );
- }
- }
- break;
- case MN_IGNORE_SELECTION :
- {
- SwPaM *pPaM = pSh->GetCrsr();
- if (pPaM)
- pSh->IgnoreGrammarErrorAt( *pPaM );
- }
- break;
- case MN_IGNORE :
- {
- uno::Reference< linguistic2::XDictionary > xDictionary( SvxGetIgnoreAllList(), uno::UNO_QUERY );
- linguistic::AddEntryToDic(
- xDictionary,
- xSpellAlt->getWord(), sal_False,
- aEmptyStr, LANGUAGE_NONE );
- }
- break;
- case MN_INSERT:
- DBG_ERROR("geht noch nicht!");
- break;
- case MN_LANGUAGE_WORD:
- case MN_LANGUAGE_PARA:
- {
- pSh->StartAction();
-
- if( MN_LANGUAGE_PARA == nId )
- {
- if( !pSh->IsSttPara() )
- pSh->MovePara( fnParaCurr, fnParaStart );
- pSh->SwapPam();
- if( !pSh->IsEndPara() )
- pSh->MovePara( fnParaCurr, fnParaEnd );
- }
-
- LanguageType nLangToUse = (MN_LANGUAGE_PARA == nId) ? nGuessLangPara : nGuessLangWord;
- sal_uInt16 nScriptType = SvtLanguageOptions::GetScriptTypeOfLanguage( nLangToUse );
- USHORT nResId = 0;
- switch (nScriptType)
- {
- case SCRIPTTYPE_COMPLEX : nResId = RES_CHRATR_CTL_LANGUAGE; break;
- case SCRIPTTYPE_ASIAN : nResId = RES_CHRATR_CJK_LANGUAGE; break;
- default /*SCRIPTTYPE_LATIN*/: nResId = RES_CHRATR_LANGUAGE; break;
- }
- SfxItemSet aSet(pSh->GetAttrPool(), nResId, nResId );
- aSet.Put( SvxLanguageItem( nLangToUse, nResId ) );
- pSh->SetAttr( aSet );
-
- pSh->EndAction();
- }
- break;
- default:
- if(nId >= MN_INSERT_START )
- {
- OUString aWord( xSpellAlt->getWord() );
- INT32 nDicIdx = nId - MN_INSERT_START - 1;
- DBG_ASSERT( nDicIdx < aDics.getLength(),
- "dictionary index out of range" );
- uno::Reference< linguistic2::XDictionary > xDic =
- aDics.getConstArray()[nDicIdx];
- INT16 nAddRes = linguistic::AddEntryToDic( xDic,
- aWord, FALSE, aEmptyStr, LANGUAGE_NONE );
- // save modified user-dictionary if it is persistent
- uno::Reference< frame::XStorable > xSavDic( xDic, uno::UNO_QUERY );
- if (xSavDic.is())
- xSavDic->store();
-
- if (DIC_ERR_NONE != nAddRes
- && !xDic->getEntry( aWord ).is())
- {
- SvxDicError(
- &pSh->GetView().GetViewFrame()->GetWindow(),
- nAddRes );
- }
- }
+ SvxDicError(
+ &pSh->GetView().GetViewFrame()->GetWindow(),
+ nAddRes );
}
}
- else
- {
- SfxItemSet aCoreSet( pSh->GetView().GetPool(),
- RES_CHRATR_LANGUAGE, RES_CHRATR_LANGUAGE,
- RES_CHRATR_CJK_LANGUAGE, RES_CHRATR_CJK_LANGUAGE,
- RES_CHRATR_CTL_LANGUAGE, RES_CHRATR_CTL_LANGUAGE,
- 0 );
- String aNewLangTxt;
-
-// pSh->StartAction();
+ }
+ else
+ {
+ // Set language for selection or for paragraph...
- if (nId >= MN_LANGUAGE_SELECTION_START && nId < MN_LANGUAGE_SELECTION_START + nNumLanguageTextEntries - 1)
- {
- //Set language for current selection
- aNewLangTxt=aLangTable_Text[nId];
- SwLangHelper::SetLanguage( *pSh, aNewLangTxt, true, aCoreSet );
- }
- else if (nId == MN_LANGUAGE_SELECTION_START + nNumLanguageTextEntries - 1)
- {
- //Set Language_None for current selection
- SwLangHelper::SetLanguage_None( *pSh, true, aCoreSet );
- }
- else if (nId == MN_LANGUAGE_SELECTION_START + nNumLanguageTextEntries)
- {
- //Open Format/Character Dialog
- lcl_CharDialog( *pSh, true, nId, 0, 0 );
- }
- else if (nId >= MN_LANGUAGE_PARAGRAPH_START && nId < MN_LANGUAGE_PARAGRAPH_START + nNumLanguageParaEntries - 1)
- {
- //Set language for current paragraph
- aNewLangTxt=aLangTable_Paragraph[nId];
- pSh->Push(); // save cursor
- SwLangHelper::SelectCurrentPara( *pSh );
- SwLangHelper::SetLanguage( *pSh, aNewLangTxt, true, aCoreSet );
- pSh->Pop( FALSE ); // restore cursor
- }
- else if (nId == MN_LANGUAGE_PARAGRAPH_START + nNumLanguageParaEntries - 1)
- {
- //Set Language_None for current paragraph
- pSh->Push(); // save cursor
- SwLangHelper::SelectCurrentPara( *pSh );
- SwLangHelper::SetLanguage_None( *pSh, true, aCoreSet );
- pSh->Pop( FALSE ); // restore cursor
- }
- else if (nId == MN_LANGUAGE_PARAGRAPH_START + nNumLanguageParaEntries)
- {
- pSh->Push(); // save cursor
- SwLangHelper::SelectCurrentPara( *pSh );
- //Open Format/Character Dialog
- lcl_CharDialog( *pSh, true, nId, 0, 0 );
- pSh->Pop( FALSE ); // restore cursor
- }
- else if (nId >= MN_LANGUAGE_ALL_TEXT_START && nId < MN_LANGUAGE_ALL_TEXT_START + nNumLanguageDocEntries - 1)
- {
- //Set selected language as the default language
- aNewLangTxt=aLangTable_Document[nId];
- SwLangHelper::SetLanguage( *pSh, aNewLangTxt, false, aCoreSet );
- }
- else if (nId == MN_LANGUAGE_ALL_TEXT_START + nNumLanguageDocEntries - 1)
- {
- //Set Language_None as the default language
- SwLangHelper::SetLanguage_None( *pSh, false, aCoreSet );
- }
- else if (nId == MN_LANGUAGE_ALL_TEXT_START + nNumLanguageDocEntries)
- {
- // open the dialog "Tools/Options/Language Settings - Language"
- SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create();
- if (pFact)
- {
- VclAbstractDialog* pDlg = pFact->CreateVclDialog( pSh->GetView().GetWindow(), SID_LANGUAGE_OPTIONS );
- pDlg->Execute();
- delete pDlg;
- }
- }
+ SfxItemSet aCoreSet( pSh->GetView().GetPool(),
+ RES_CHRATR_LANGUAGE, RES_CHRATR_LANGUAGE,
+ RES_CHRATR_CJK_LANGUAGE, RES_CHRATR_CJK_LANGUAGE,
+ RES_CHRATR_CTL_LANGUAGE, RES_CHRATR_CTL_LANGUAGE,
+ 0 );
+ String aNewLangTxt;
-// pSh->EndAction();
+ if (MN_SET_LANGUAGE_SELECTION_START <= nId && nId <= MN_SET_LANGUAGE_SELECTION_END)
+ {
+ //Set language for current selection
+ aNewLangTxt = aLangTable_Text[nId];
+ SwLangHelper::SetLanguage( *pSh, aNewLangTxt, true, aCoreSet );
+ }
+ else if (nId == MN_SET_SELECTION_NONE)
+ {
+ //Set Language_None for current selection
+ SwLangHelper::SetLanguage_None( *pSh, true, aCoreSet );
+ }
+ else if (nId == MN_SET_SELECTION_RESET)
+ {
+ //reset languages for current selection
+ SwLangHelper::ResetLanguages( *pSh, true );
+ }
+ else if (nId == MN_SET_SELECTION_MORE)
+ {
+ //Open Format/Character Dialog
+ lcl_CharDialog( *pSh, true, nId, 0, 0 );
+ }
+ else if (MN_SET_LANGUAGE_PARAGRAPH_START <= nId && nId <= MN_SET_LANGUAGE_PARAGRAPH_END)
+ {
+ //Set language for current paragraph
+ aNewLangTxt = aLangTable_Paragraph[nId];
+ pSh->Push(); // save cursor
+ SwLangHelper::SelectCurrentPara( *pSh );
+ SwLangHelper::SetLanguage( *pSh, aNewLangTxt, true, aCoreSet );
+ pSh->Pop( FALSE ); // restore cursor
+ }
+ else if (nId == MN_SET_PARA_NONE)
+ {
+ //Set Language_None for current paragraph
+ pSh->Push(); // save cursor
+ SwLangHelper::SelectCurrentPara( *pSh );
+ SwLangHelper::SetLanguage_None( *pSh, true, aCoreSet );
+ pSh->Pop( FALSE ); // restore cursor
+ }
+ else if (nId == MN_SET_PARA_RESET)
+ {
+ //reset languages for current paragraph
+ pSh->Push(); // save cursor
+ SwLangHelper::SelectCurrentPara( *pSh );
+ SwLangHelper::ResetLanguages( *pSh, true );
+ pSh->Pop( FALSE ); // restore cursor
+ }
+ else if (nId == MN_SET_PARA_MORE)
+ {
+ pSh->Push(); // save cursor
+ SwLangHelper::SelectCurrentPara( *pSh );
+ //Open Format/Character Dialog
+ lcl_CharDialog( *pSh, true, nId, 0, 0 );
+ pSh->Pop( FALSE ); // restore cursor
+ }
+#if 0
+ else if (nId == MN_SET_LANGUAGE_ALL_TEXT_START + nNumLanguageDocEntries - 1)
+ {
+ //Set Language_None as the default language
+ SwLangHelper::SetLanguage_None( *pSh, false, aCoreSet );
+ }
+ else if (nId == MN_SET_LANGUAGE_ALL_TEXT_START + nNumLanguageDocEntries)
+ {
+ // open the dialog "Tools/Options/Language Settings - Language"
+ SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create();
+ if (pFact)
+ {
+ VclAbstractDialog* pDlg = pFact->CreateVclDialog( pSh->GetView().GetWindow(), SID_LANGUAGE_OPTIONS );
+ pDlg->Execute();
+ delete pDlg;
}
}
+#endif
}
pSh->EnterStdMode();
diff --git a/sw/source/ui/lingu/olmenu.hrc b/sw/source/ui/lingu/olmenu.hrc
index 11e7b03d440b..887f8a2ad3af 100644
--- a/sw/source/ui/lingu/olmenu.hrc
+++ b/sw/source/ui/lingu/olmenu.hrc
@@ -30,35 +30,65 @@
#include "rcid.hrc"
-#define MN_SPELL_POPUP (RC_LINGU_BEGIN + 1)
-#define STR_SPELL_OK (RC_LINGU_BEGIN + 2)
-#define STR_HYP_OK (RC_LINGU_BEGIN + 3)
-#define STR_WORD (RC_LINGU_BEGIN + 4)
-#define STR_PARAGRAPH (RC_LINGU_BEGIN + 5)
-#define STR_LANGSTATUS_NONE (RC_LINGU_BEGIN + 6)
-#define STR_LANGSTATUS_MORE (RC_LINGU_BEGIN + 7)
-#define STR_IGNORE_SELECTION (RC_LINGU_BEGIN + 8)
+#define MN_SPELL_POPUP (RC_LINGU_BEGIN + 1)
+#define STR_SPELL_OK (RC_LINGU_BEGIN + 2)
+#define STR_HYP_OK (RC_LINGU_BEGIN + 3)
+#define STR_WORD (RC_LINGU_BEGIN + 4)
+#define STR_PARAGRAPH (RC_LINGU_BEGIN + 5)
+#define STR_LANGSTATUS_NONE (RC_LINGU_BEGIN + 6)
+#define STR_LANGSTATUS_MORE (RC_LINGU_BEGIN + 7)
+#define STR_IGNORE_SELECTION (RC_LINGU_BEGIN + 8)
+#define STR_RESET_TO_DEFAULT_LANGUAGE (RC_LINGU_BEGIN + 9)
-#define IMG_INFO_16 (RC_LINGU_BEGIN + 8)
+#define IMG_INFO_16 (RC_LINGU_BEGIN + 100)
//! Don't change these values. You may break context menu modifying extensions!
-#define MN_SPELLING 100
-#define MN_IGNORE_SELECTION 101
-#define MN_IGNORE 102
-#define MN_INSERT 103
-#define MN_AUTOCORR 104
-#define MN_LANGUAGE_WORD 105
-#define MN_LANGUAGE_PARA 106
-#define MN_LANGUAGE_SELECTION 107
-#define MN_LANGUAGE_PARAGRAPH 108
-#define MN_LANGUAGE_ALL_TEXT 109
-
-#define MN_INSERT_START 500
-#define MN_AUTOCORR_START 900
-
-#define MN_LANGUAGE_SELECTION_START 1170
-#define MN_LANGUAGE_PARAGRAPH_START 1270
-#define MN_LANGUAGE_ALL_TEXT_START 1370
+#define MN_SPELLING_DLG 200
+#define MN_IGNORE_SELECTION 201
+#define MN_IGNORE_WORD 202
+#define MN_ADD_TO_DIC 203
+#define MN_AUTOCORR 204
+#define MN_SET_LANGUAGE_SELECTION 205
+#define MN_SET_LANGUAGE_PARAGRAPH 206
+#define MN_SET_LANGUAGE_ALL_TEXT 207
+#define MN_SHORT_COMMENT 208
+
+// id range for dictionaries sub menu
+#define MN_DICTIONARIES_START 300
+#define MN_DICTIONARIES_END (MN_DICTIONARIES_START + 99)
+
+// id range for suggestions from spell and grammar checker
+#define MN_SUGGESTION_START 500
+#define MN_SUGGESTION_END (MN_SUGGESTION_START + MN_MAX_NUM_LANG)
+
+// id range for auto correction sub menu entries
+#define MN_AUTOCORR_START 700
+#define MN_AUTOCORR_END (MN_AUTOCORR_START + MN_MAX_NUM_LANG)
+
+// max number of language entries sub menus
+#define MN_MAX_NUM_LANG 99
+
+#define MN_NONE_OFFSET (MN_MAX_NUM_LANG + 1)
+#define MN_RESET_OFFSET (MN_MAX_NUM_LANG + 2)
+#define MN_MORE_OFFSET (MN_MAX_NUM_LANG + 3)
+
+// id range for 'set language for selection' sub menu entries
+#define MN_SET_LANGUAGE_SELECTION_START 900
+#define MN_SET_LANGUAGE_SELECTION_END (MN_SET_LANGUAGE_SELECTION_START + MN_MAX_NUM_LANG)
+#define MN_SET_SELECTION_NONE (MN_SET_LANGUAGE_SELECTION_START + MN_NONE_OFFSET)
+#define MN_SET_SELECTION_RESET (MN_SET_LANGUAGE_SELECTION_START + MN_RESET_OFFSET)
+#define MN_SET_SELECTION_MORE (MN_SET_LANGUAGE_SELECTION_START + MN_MORE_OFFSET)
+
+// id range for 'set language for paragraph' sub menu entries
+#define MN_SET_LANGUAGE_PARAGRAPH_START 1100
+#define MN_SET_LANGUAGE_PARAGRAPH_END (MN_SET_LANGUAGE_PARAGRAPH_START + MN_MAX_NUM_LANG)
+#define MN_SET_PARA_NONE (MN_SET_LANGUAGE_PARAGRAPH_START + MN_NONE_OFFSET)
+#define MN_SET_PARA_RESET (MN_SET_LANGUAGE_PARAGRAPH_START + MN_RESET_OFFSET)
+#define MN_SET_PARA_MORE (MN_SET_LANGUAGE_PARAGRAPH_START + MN_MORE_OFFSET)
+
+// id range for 'set language for all text' sub menu entries
+#define MN_SET_LANGUAGE_ALL_TEXT_START 1300
+#define MN_SET_LANGUAGE_ALL_TEXT_END (MN_SET_LANGUAGE_ALL_TEXT_START + MN_MAX_NUM_LANG)
#endif
diff --git a/sw/source/ui/lingu/olmenu.src b/sw/source/ui/lingu/olmenu.src
index 487215c2bff6..b8d9124d2e52 100644
--- a/sw/source/ui/lingu/olmenu.src
+++ b/sw/source/ui/lingu/olmenu.src
@@ -38,13 +38,13 @@ Menu MN_SPELL_POPUP
{
MenuItem
{
- Identifier = MN_IGNORE ;
+ Identifier = MN_IGNORE_WORD ;
HelpID = HID_LINGU_IGNORE_WORD ;
Text [ en-US ] = "Ignore All" ;
};
MenuItem
{
- Identifier = MN_INSERT ;
+ Identifier = MN_ADD_TO_DIC ;
HelpID = HID_LINGU_ADD_WORD ;
SubMenu = Menu
{
@@ -62,14 +62,14 @@ Menu MN_SPELL_POPUP
};
MenuItem
{
- Identifier = MN_SPELLING ;
+ Identifier = MN_SPELLING_DLG ;
HelpID = HID_LINGU_SPELLING_DLG ;
Text [ en-US ] = "~Spellcheck..." ;
};
SEPARATOR
MenuItem
{
- Identifier = MN_LANGUAGE_SELECTION ;
+ Identifier = MN_SET_LANGUAGE_SELECTION ;
SubMenu = Menu
{
};
@@ -77,7 +77,7 @@ Menu MN_SPELL_POPUP
};
MenuItem
{
- Identifier = MN_LANGUAGE_PARAGRAPH ;
+ Identifier = MN_SET_LANGUAGE_PARAGRAPH ;
SubMenu = Menu
{
};
@@ -86,7 +86,7 @@ Menu MN_SPELL_POPUP
/*
MenuItem
{
- Identifier = MN_LANGUAGE_ALL_TEXT ;
+ Identifier = MN_SET_LANGUAGE_ALL_TEXT ;
SubMenu = Menu
{
};
@@ -115,6 +115,11 @@ String STR_LANGSTATUS_NONE
{
Text [ en-US ] = "None (Do not check spelling)" ;
};
+String STR_RESET_TO_DEFAULT_LANGUAGE
+{
+ Text [ en-US ] = "Reset to Default Language" ;
+ Text [ x-comment ] = " ";
+};
String STR_LANGSTATUS_MORE
{
Text [ en-US ] = "More..." ;
diff --git a/sw/source/ui/makefile.mk b/sw/source/ui/makefile.mk
index fa1dea2bac5c..b331a2a00765 100644
--- a/sw/source/ui/makefile.mk
+++ b/sw/source/ui/makefile.mk
@@ -58,8 +58,8 @@ SUBLIBS1= \
$(SLB)$/dbui.lib \
$(SLB)$/dialog.lib \
$(SLB)$/dochdl.lib \
- $(SLB)$/docvw.lib \
- $(SLB)$/envelp.lib \
+ $(SLB)$/docvw.lib \
+ $(SLB)$/envelp.lib \
$(SLB)$/fldui.lib \
$(SLB)$/frmdlg.lib \
$(SLB)$/globdoc.lib
diff --git a/sw/source/ui/ribbar/makefile.mk b/sw/source/ui/ribbar/makefile.mk
index 72acc793070a..2405d4b16d9f 100644
--- a/sw/source/ui/ribbar/makefile.mk
+++ b/sw/source/ui/ribbar/makefile.mk
@@ -45,6 +45,11 @@ SRC1FILES = \
tblctrl.src \
workctrl.src
+EXCEPTIONSFILES = \
+ $(SLO)$/tblctrl.obj \
+ $(SLO)$/tbxanchr.obj \
+ $(SLO)$/workctrl.obj
+
SLOFILES = \
$(SLO)$/inputwin.obj \
$(SLO)$/tbxanchr.obj \
diff --git a/sw/source/ui/ribbar/tblctrl.cxx b/sw/source/ui/ribbar/tblctrl.cxx
index 5c214950f4bc..ad5046af6b42 100644
--- a/sw/source/ui/ribbar/tblctrl.cxx
+++ b/sw/source/ui/ribbar/tblctrl.cxx
@@ -36,7 +36,6 @@
#include "cmdid.h"
#include "swtypes.hxx"
-#include "tbxmgr.hxx"
#include "tblctrl.hxx"
#include "tblctrl.hrc"
diff --git a/sw/source/ui/ribbar/tbxmgr.cxx b/sw/source/ui/ribbar/tbxmgr.cxx
deleted file mode 100644
index cbef12105242..000000000000
--- a/sw/source/ui/ribbar/tbxmgr.cxx
+++ /dev/null
@@ -1,180 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * 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.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_sw.hxx"
-
-
-
-#include "cmdid.h"
-#include "swtypes.hxx" // nur wegen aEmptyString??
-#include "errhdl.hxx"
-#include "wdocsh.hxx"
-#include "tbxmgr.hxx"
-
-
-/*************************************************************************
-|*
-|*
-|*
-\************************************************************************/
-/*
-SwPopupWindowTbxMgr::SwPopupWindowTbxMgr( USHORT nId, WindowAlign eAlign,
- ResId aRIdWin, ResId aRIdTbx,
- SfxBindings& rBindings ) :
- SvxPopupWindowTbxMgr( nId, eAlign, aRIdWin, aRIdTbx ),
- bWeb(FALSE),
- aRIdWinTemp(aRIdWin),
- aRIdTbxTemp(aRIdTbx),
- eAlignment( eAlign ),
- mrBindings( rBindings )
-{
- SfxObjectShell* pObjShell = SfxObjectShell::Current();
- if(PTR_CAST(SwWebDocShell, pObjShell))
- {
- bWeb = TRUE;
- ToolBox& rTbx = GetTbxMgr().GetToolBox();
- // jetzt muessen ein paar Items aus der Toolbox versteckt werden:
- switch(nId)
- {
- case FN_INSERT_CTRL:
- rTbx.ShowItem(FN_INSERT_FRAME_INTERACT_NOCOL);
- rTbx.HideItem(FN_INSERT_FRAME_INTERACT);
- rTbx.HideItem(FN_INSERT_FOOTNOTE);
- rTbx.HideItem(FN_INSERT_ENDNOTE);
- rTbx.HideItem(FN_PAGE_STYLE_SET_COLS);
- rTbx.HideItem(FN_INSERT_IDX_ENTRY_DLG);
-
- break;
- case FN_INSERT_FIELD_CTRL:
- rTbx.HideItem(FN_INSERT_FLD_PGNUMBER);
- rTbx.HideItem(FN_INSERT_FLD_PGCOUNT);
- rTbx.HideItem(FN_INSERT_FLD_TOPIC);
- rTbx.HideItem(FN_INSERT_FLD_TITLE);
- break;
- }
- }
- else if( FN_INSERT_CTRL == nId)
- {
- ToolBox& rTbx = GetTbxMgr().GetToolBox();
- rTbx.ShowItem(FN_INSERT_FRAME_INTERACT);
- rTbx.HideItem(FN_INSERT_FRAME_INTERACT_NOCOL);
- }
-
- Size aSize = GetTbxMgr().CalcWindowSizePixel();
- GetTbxMgr().SetPosSizePixel( Point(), aSize );
- SetOutputSizePixel( aSize );
-}
-*/
-/*************************************************************************
-|*
-|*
-|*
-\************************************************************************/
-/*
-void SwPopupWindowTbxMgr::StateChanged(USHORT nSID, SfxItemState eState,
- const SfxPoolItem* pState)
-{
- static USHORT __READONLY_DATA aInsertCtrl[] =
- {
- FN_INSERT_FRAME_INTERACT,
- FN_INSERT_FOOTNOTE,
- FN_INSERT_ENDNOTE,
- FN_PAGE_STYLE_SET_COLS,
- FN_INSERT_IDX_ENTRY_DLG,
- 0
- };
- static USHORT __READONLY_DATA aInsertFld[] =
- {
- FN_INSERT_FLD_PGNUMBER,
- FN_INSERT_FLD_PGCOUNT,
- FN_INSERT_FLD_TOPIC,
- FN_INSERT_FLD_TITLE,
- 0
- };
-
- SfxObjectShell* pObjShell = SfxObjectShell::Current();
- BOOL bNewWeb = 0 != PTR_CAST(SwWebDocShell, pObjShell);
-
- if(bWeb != bNewWeb)
- {
- bWeb = bNewWeb;
- ToolBox& rTbx = GetTbxMgr().GetToolBox();
- // jetzt muessen ein paar Items aus der Toolbox versteckt werden:
- const USHORT* pSid = 0;
-
- switch(nSID)
- {
- case FN_INSERT_CTRL:
- pSid = &aInsertCtrl[0];
- if(bWeb)
- rTbx.ShowItem(FN_INSERT_FRAME_INTERACT_NOCOL);
- else
- rTbx.HideItem(FN_INSERT_FRAME_INTERACT_NOCOL);
- break;
- case FN_INSERT_FIELD_CTRL:
- pSid = & aInsertFld[0];
- break;
- }
- if(pSid)
- {
- if(bWeb)
- while(*pSid)
- {
- rTbx.HideItem(*pSid);
- pSid++;
- }
- else
- while(*pSid)
- {
- rTbx.ShowItem(*pSid);
- pSid++;
- }
- Size aSize = GetTbxMgr().CalcWindowSizePixel();
- GetTbxMgr().SetPosSizePixel( Point(), aSize );
- SetOutputSizePixel( aSize );
- }
- }
-
- SfxPopupWindow::StateChanged(nSID, eState, pState);
-}
-*/
-/*
-SfxPopupWindow* SwPopupWindowTbxMgr::Clone() const
-{
- return new SwPopupWindowTbxMgr(
- GetId(),
- eAlignment,
-// ((SwPopupWindowTbxMgr*)this)->GetTbxMgr().GetToolBox().GetAlign(),
- aRIdWinTemp,
- aRIdTbxTemp,
- mrBindings
-// (SfxBindings&)GetBindings()
- );
-}
-*/
-
diff --git a/sw/source/ui/ribbar/workctrl.cxx b/sw/source/ui/ribbar/workctrl.cxx
index f802751a47ea..c75cb3f0dfc4 100644
--- a/sw/source/ui/ribbar/workctrl.cxx
+++ b/sw/source/ui/ribbar/workctrl.cxx
@@ -50,7 +50,6 @@
#include <gloshdl.hxx>
#include <glosdoc.hxx>
#include <gloslst.hxx>
-#include <tbxmgr.hxx>
#include <workctrl.hxx>
#ifndef _WORKCTRL_HRC
#include <workctrl.hrc>
diff --git a/sw/source/ui/shells/annotsh.cxx b/sw/source/ui/shells/annotsh.cxx
index b7b7b509d036..e795c123d3a2 100755
--- a/sw/source/ui/shells/annotsh.cxx
+++ b/sw/source/ui/shells/annotsh.cxx
@@ -27,13 +27,17 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_sw.hxx"
+
#include <hintids.hxx>
-#include <tools/shl.hxx>
#include <com/sun/star/i18n/TransliterationModules.hpp>
+#include <com/sun/star/i18n/TransliterationModulesExtra.hpp>
#include <com/sun/star/i18n/TextConversionOption.hpp>
#include <com/sun/star/ui/dialogs/XExecutableDialog.hpp>
#include <com/sun/star/lang/XInitialization.hpp>
+
+#include <tools/shl.hxx>
+#include <i18npool/mslangid.hxx>
#include <sfx2/objface.hxx>
#include <sfx2/viewfrm.hxx>
#include <sfx2/bindings.hxx>
@@ -96,8 +100,8 @@
#include <breakit.hxx>
#include "annotsh.hxx"
#include "view.hxx"
-#include "PostItMgr.hxx"
-#include "postit.hxx"
+#include <PostItMgr.hxx>
+#include <SidebarWin.hxx>
#include "swtypes.hxx"
@@ -117,8 +121,8 @@
#include <docsh.hxx>
#include <svl/undo.hxx>
-#include "swabstdlg.hxx" //CHINA001
-#include "chrdlg.hrc" //CHINA001
+#include "swabstdlg.hxx"
+#include "chrdlg.hrc"
#include "misc.hrc"
#include <app.hrc>
@@ -160,22 +164,23 @@ SwAnnotationShell::~SwAnnotationShell()
SfxUndoManager* SwAnnotationShell::GetUndoManager()
{
SwPostItMgr* pPostItMgr = rView.GetPostItMgr();
- if ( !pPostItMgr || !pPostItMgr->GetActivePostIt() )
+ if ( !pPostItMgr ||
+ !pPostItMgr->HasActiveSidebarWin() )
{
DBG_ASSERT(pPostItMgr,"PostItMgr::Layout(): We are looping forever");
return 0;
}
- return &pPostItMgr->GetActivePostIt()->Engine()->GetUndoManager();
+ return &pPostItMgr->GetActiveSidebarWin()->GetOutlinerView()->GetOutliner()->GetUndoManager();
}
void SwAnnotationShell::Exec( SfxRequest &rReq )
{
//TODO: clean this up!!!!
SwPostItMgr* pPostItMgr = rView.GetPostItMgr();
- if ( !pPostItMgr || !pPostItMgr->GetActivePostIt() )
+ if ( !pPostItMgr || !pPostItMgr->HasActiveSidebarWin() )
return;
- OutlinerView* pOLV = pPostItMgr->GetActivePostIt()->View();
+ OutlinerView* pOLV = pPostItMgr->GetActiveSidebarWin()->GetOutlinerView();
SfxItemSet aEditAttr(pOLV->GetAttribs());
SfxItemSet aNewAttr(*aEditAttr.GetPool(), aEditAttr.GetRanges());
@@ -269,7 +274,7 @@ void SwAnnotationShell::Exec( SfxRequest &rReq )
}
case FN_FORMAT_RESET:
{
- pPostItMgr->GetActivePostIt()->ResetAttributes();
+ pPostItMgr->GetActiveSidebarWin()->ResetAttributes();
rReq.Done();
break;
}
@@ -320,7 +325,7 @@ void SwAnnotationShell::Exec( SfxRequest &rReq )
aSel.nEndPos++;
pOLV->SetSelection(aSel);
}
- if (pPostItMgr->GetActivePostIt()->GetStatus()!=SwPostItHelper::DELETED)
+ if (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()!=SwPostItHelper::DELETED)
pOLV->InsertField(SvxFieldItem(aFld, EE_FEATURE_FIELD));
}
break;
@@ -350,7 +355,7 @@ void SwAnnotationShell::Exec( SfxRequest &rReq )
}
case SID_CHARMAP:
{
- if (pPostItMgr->GetActivePostIt()->GetStatus()!=SwPostItHelper::DELETED)
+ if (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()!=SwPostItHelper::DELETED)
InsertSymbol(rReq);
break;
}
@@ -359,7 +364,7 @@ void SwAnnotationShell::Exec( SfxRequest &rReq )
const SfxPoolItem* pItem = 0;
if(pNewAttrs)
pNewAttrs->GetItemState(nSlot, FALSE, &pItem );
- if (pPostItMgr->GetActivePostIt()->GetStatus()!=SwPostItHelper::DELETED)
+ if (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()!=SwPostItHelper::DELETED)
pOLV->InsertText(((const SfxStringItem *)pItem)->GetValue());
break;
}
@@ -577,10 +582,10 @@ void SwAnnotationShell::GetState(SfxItemSet& rSet)
//SID_ATTR_PARA_ADJUST_BLOCK
SwPostItMgr* pPostItMgr = rView.GetPostItMgr();
- if ( !pPostItMgr || !pPostItMgr->GetActivePostIt() )
+ if ( !pPostItMgr || !pPostItMgr->HasActiveSidebarWin() )
return;
- OutlinerView* pOLV = pPostItMgr->GetActivePostIt()->View();
+ OutlinerView* pOLV = pPostItMgr->GetActiveSidebarWin()->GetOutlinerView();
SfxItemSet aEditAttr(pOLV->GetAttribs());
SfxWhichIter aIter(rSet);
@@ -764,7 +769,7 @@ void SwAnnotationShell::GetState(SfxItemSet& rSet)
if(nEEWhich)
rSet.Put(aEditAttr.Get(nEEWhich, sal_True), nWhich);
- if (pPostItMgr->GetActivePostIt()->GetStatus()==SwPostItHelper::DELETED)
+ if (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()==SwPostItHelper::DELETED)
rSet.DisableItem( nWhich );
nWhich = aIter.NextWhich();
@@ -784,19 +789,19 @@ void SwAnnotationShell::StateSearch(SfxItemSet &rSet)
void SwAnnotationShell::ExecClpbrd(SfxRequest &rReq)
{
SwPostItMgr* pPostItMgr = rView.GetPostItMgr();
- if ( !pPostItMgr || !pPostItMgr->GetActivePostIt() )
+ if ( !pPostItMgr || !pPostItMgr->HasActiveSidebarWin() )
return;
- OutlinerView* pOLV = pPostItMgr->GetActivePostIt()->View();
+ OutlinerView* pOLV = pPostItMgr->GetActiveSidebarWin()->GetOutlinerView();
SfxItemSet aEditAttr(pOLV->GetAttribs());
SfxItemSet aNewAttr(*aEditAttr.GetPool(), aEditAttr.GetRanges());
- long aOldHeight = pPostItMgr->GetActivePostIt()->GetPostItTextHeight();
+ long aOldHeight = pPostItMgr->GetActiveSidebarWin()->GetPostItTextHeight();
sal_uInt16 nSlot = rReq.GetSlot();
switch (nSlot)
{
case SID_CUT:
- if ( (pPostItMgr->GetActivePostIt()->GetStatus()!=SwPostItHelper::DELETED) && pOLV->HasSelection() )
+ if ( (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()!=SwPostItHelper::DELETED) && pOLV->HasSelection() )
pOLV->Cut();
break;
case SID_COPY:
@@ -804,12 +809,12 @@ void SwAnnotationShell::ExecClpbrd(SfxRequest &rReq)
pOLV->Copy();
break;
case SID_PASTE:
- if (pPostItMgr->GetActivePostIt()->GetStatus()!=SwPostItHelper::DELETED)
+ if (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()!=SwPostItHelper::DELETED)
pOLV->Paste();
break;
case SID_PASTE_SPECIAL:
{
- if (pPostItMgr->GetActivePostIt()->GetStatus()!=SwPostItHelper::DELETED)
+ if (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()!=SwPostItHelper::DELETED)
{
SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
SfxAbstractPasteDialog* pDlg = pFact->CreatePasteDialog( &rView.GetEditWin() );
@@ -852,19 +857,19 @@ void SwAnnotationShell::ExecClpbrd(SfxRequest &rReq)
break;
}
}
- pPostItMgr->GetActivePostIt()->ResizeIfNeccessary(aOldHeight,pPostItMgr->GetActivePostIt()->GetPostItTextHeight());
+ pPostItMgr->GetActiveSidebarWin()->ResizeIfNeccessary(aOldHeight,pPostItMgr->GetActiveSidebarWin()->GetPostItTextHeight());
}
void SwAnnotationShell::StateClpbrd(SfxItemSet &rSet)
{
SwPostItMgr* pPostItMgr = rView.GetPostItMgr();
- if ( !pPostItMgr || !pPostItMgr->GetActivePostIt() )
+ if ( !pPostItMgr || !pPostItMgr->HasActiveSidebarWin() )
return;
- OutlinerView* pOLV = pPostItMgr->GetActivePostIt()->View();
+ OutlinerView* pOLV = pPostItMgr->GetActiveSidebarWin()->GetOutlinerView();
TransferableDataHelper aDataHelper( TransferableDataHelper::CreateFromSystemClipboard( &rView.GetEditWin() ) );
bool bPastePossible = ( aDataHelper.HasFormat( SOT_FORMAT_STRING ) || aDataHelper.HasFormat( SOT_FORMAT_RTF ) );
- bPastePossible = bPastePossible && (pPostItMgr->GetActivePostIt()->GetStatus()!=SwPostItHelper::DELETED);
+ bPastePossible = bPastePossible && (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()!=SwPostItHelper::DELETED);
SfxWhichIter aIter(rSet);
sal_uInt16 nWhich = aIter.FirstWhich();
@@ -875,7 +880,7 @@ void SwAnnotationShell::StateClpbrd(SfxItemSet &rSet)
{
case SID_CUT:
{
- if ( (pPostItMgr->GetActivePostIt()->GetStatus()==SwPostItHelper::DELETED) || !pOLV->HasSelection() )
+ if ( (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()==SwPostItHelper::DELETED) || !pOLV->HasSelection() )
rSet.DisableItem( nWhich );
}
case SID_COPY:
@@ -939,10 +944,10 @@ void SwAnnotationShell::StateStatusLine(SfxItemSet &rSet)
void SwAnnotationShell::StateInsert(SfxItemSet &rSet)
{
SwPostItMgr* pPostItMgr = rView.GetPostItMgr();
- if ( !pPostItMgr || !pPostItMgr->GetActivePostIt() )
+ if ( !pPostItMgr || !pPostItMgr->HasActiveSidebarWin() )
return;
- OutlinerView* pOLV = pPostItMgr->GetActivePostIt()->View();
+ OutlinerView* pOLV = pPostItMgr->GetActiveSidebarWin()->GetOutlinerView();
SfxWhichIter aIter(rSet);
sal_uInt16 nWhich = aIter.FirstWhich();
@@ -985,7 +990,7 @@ void SwAnnotationShell::StateInsert(SfxItemSet &rSet)
break;
}
- if (pPostItMgr->GetActivePostIt()->GetStatus()==SwPostItHelper::DELETED)
+ if (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()==SwPostItHelper::DELETED)
rSet.DisableItem( nWhich );
nWhich = aIter.NextWhich();
@@ -1006,8 +1011,8 @@ void SwAnnotationShell::NoteExec(SfxRequest &rReq)
case FN_POSTIT:
case FN_DELETE_COMMENT:
case FN_DELETE_NOTE:
- if ( pPostItMgr->GetActivePostIt() )
- pPostItMgr->GetActivePostIt()->ExecuteCommand(nSlot);
+ if ( pPostItMgr->HasActiveSidebarWin() )
+ pPostItMgr->GetActiveSidebarWin()->ExecuteCommand(nSlot);
break;
case FN_DELETE_ALL_NOTES:
pPostItMgr->Delete();
@@ -1021,7 +1026,7 @@ void SwAnnotationShell::NoteExec(SfxRequest &rReq)
}
case FN_HIDE_NOTE:
/*
- if ( Mgr()->GetActivePostIt() == this )
+ if ( Mgr()->GetActiveSidebarWin() == this )
{
Mgr()->SetActivePostIt(0);
// put the cursor back into the document
@@ -1060,20 +1065,29 @@ void SwAnnotationShell::GetNoteState(SfxItemSet &rSet)
case FN_HIDE_NOTE_AUTHOR:
case FN_HIDE_ALL_NOTES:
{
- if ( !pPostItMgr || !pPostItMgr->GetActivePostIt() || !pPostItMgr->GetActivePostIt()->ISA(SwPostIt))
+ if ( !pPostItMgr ||
+ !pPostItMgr->HasActiveAnnotationWin() )
+ {
rSet.DisableItem(nWhich);
+ }
break;
}
case FN_DELETE_COMMENT:
{
- if ( !pPostItMgr || !pPostItMgr->GetActivePostIt() ) //|| !pPostItMgr->GetActivePostIt()->ISA(SwRedComment))
+ if ( !pPostItMgr ||
+ !pPostItMgr->HasActiveSidebarWin() /*HasActiveRedCommentWin()*/ )
+ {
rSet.DisableItem(nWhich);
+ }
break;
}
case FN_REPLY:
{
- if ( !pPostItMgr || !pPostItMgr->GetActivePostIt() || !pPostItMgr->GetActivePostIt()->ISA(SwPostIt))
+ if ( !pPostItMgr ||
+ !pPostItMgr->HasActiveAnnotationWin() )
+ {
rSet.DisableItem(nWhich);
+ }
else
{
SvtUserOptions aUserOpt;
@@ -1081,7 +1095,7 @@ void SwAnnotationShell::GetNoteState(SfxItemSet &rSet)
if( !(sAuthor = aUserOpt.GetFullName()).Len())
if( !(sAuthor = aUserOpt.GetID()).Len() )
sAuthor = String( SW_RES( STR_REDLINE_UNKNOWN_AUTHOR ));
- if (sAuthor == pPostItMgr->GetActivePostIt()->GetAuthor())
+ if (sAuthor == pPostItMgr->GetActiveSidebarWin()->GetAuthor())
rSet.DisableItem(nWhich);
}
break;
@@ -1091,9 +1105,9 @@ void SwAnnotationShell::GetNoteState(SfxItemSet &rSet)
break;
}
- if (pPostItMgr->GetActivePostIt())
+ if (pPostItMgr->HasActiveSidebarWin())
{
- if ( (pPostItMgr->GetActivePostIt()->IsProtected()) &&
+ if ( (pPostItMgr->GetActiveSidebarWin()->IsProtected()) &&
( (nSlotId==FN_DELETE_NOTE) || (nSlotId==FN_REPLY) ) )
rSet.DisableItem( nWhich );
}
@@ -1104,10 +1118,10 @@ void SwAnnotationShell::GetNoteState(SfxItemSet &rSet)
void SwAnnotationShell::ExecLingu(SfxRequest &rReq)
{
SwPostItMgr* pPostItMgr = rView.GetPostItMgr();
- if ( !pPostItMgr || !pPostItMgr->GetActivePostIt() )
+ if ( !pPostItMgr || !pPostItMgr->HasActiveSidebarWin() )
return;
- OutlinerView* pOLV = pPostItMgr->GetActivePostIt()->View();
+ OutlinerView* pOLV = pPostItMgr->GetActiveSidebarWin()->GetOutlinerView();
SfxItemSet aEditAttr(pOLV->GetAttribs());
sal_uInt16 nSlot = rReq.GetSlot();
SwWrtShell &rSh = rView.GetWrtShell();
@@ -1128,7 +1142,17 @@ void SwAnnotationShell::ExecLingu(SfxRequest &rReq)
bRestoreSelection = SwLangHelper::SetLanguageStatus(pOLV,rReq,rView,rSh);
break;
}
- case FN_THESAURUS_DLG:
+ case SID_THES:
+ {
+ String aReplaceText;
+ SFX_REQUEST_ARG( rReq, pItem2, SfxStringItem, SID_THES, sal_False );
+ if (pItem2)
+ aReplaceText = pItem2->GetValue();
+ if (aReplaceText.Len() > 0)
+ ReplaceTextWithSynonym( pOLV->GetEditView(), aReplaceText );
+ break;
+ }
+ case SID_THESAURUS:
{
pOLV->StartThesaurus();
break;
@@ -1219,10 +1243,10 @@ void SwAnnotationShell::ExecLingu(SfxRequest &rReq)
void SwAnnotationShell::GetLinguState(SfxItemSet &rSet)
{
SwPostItMgr* pPostItMgr = rView.GetPostItMgr();
- if ( !pPostItMgr || !pPostItMgr->GetActivePostIt() )
+ if ( !pPostItMgr || !pPostItMgr->HasActiveSidebarWin() )
return;
- OutlinerView* pOLV = pPostItMgr->GetActivePostIt()->View();
+ OutlinerView* pOLV = pPostItMgr->GetActiveSidebarWin()->GetOutlinerView();
SfxItemSet aEditAttr(pOLV->GetAttribs());
SfxWhichIter aIter(rSet);
@@ -1236,8 +1260,25 @@ void SwAnnotationShell::GetLinguState(SfxItemSet &rSet)
SwLangHelper::GetLanguageStatus(pOLV,rSet);
break;
}
+
+ case SID_THES:
+ {
+ String aStatusVal;
+ LanguageType nLang = LANGUAGE_NONE;
+ bool bIsLookUpWord = GetStatusValueForThesaurusFromContext( aStatusVal, nLang, pOLV->GetEditView() );
+ rSet.Put( SfxStringItem( SID_THES, aStatusVal ) );
+
+ // disable "Thesaurus" context menu entry if there is nothing to look up
+ uno::Reference< linguistic2::XThesaurus > xThes( ::GetThesaurus() );
+ lang::Locale aLocale( SvxCreateLocale( nLang ) );
+ if (!bIsLookUpWord ||
+ !xThes.is() || nLang == LANGUAGE_NONE || !xThes->hasLocale( aLocale ))
+ rSet.DisableItem( SID_THES );
+ break;
+ }
+
// disable "Thesaurus" if the language is not supported
- case FN_THESAURUS_DLG:
+ case SID_THESAURUS:
{
const SfxPoolItem &rItem = rView.GetWrtShell().GetDoc()->GetDefault(
GetWhichOfScript( RES_CHRATR_LANGUAGE,
@@ -1247,7 +1288,7 @@ void SwAnnotationShell::GetLinguState(SfxItemSet &rSet)
uno::Reference< linguistic2::XThesaurus > xThes( ::GetThesaurus() );
if (!xThes.is() || nLang == LANGUAGE_NONE ||
!xThes->hasLocale( SvxCreateLocale( nLang ) ))
- rSet.DisableItem( FN_THESAURUS_DLG );
+ rSet.DisableItem( SID_THESAURUS );
}
break;
case SID_HANGUL_HANJA_CONVERSION:
@@ -1264,7 +1305,7 @@ void SwAnnotationShell::GetLinguState(SfxItemSet &rSet)
break;
}
- if (pPostItMgr->GetActivePostIt()->GetStatus()==SwPostItHelper::DELETED)
+ if (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()==SwPostItHelper::DELETED)
rSet.DisableItem( nWhich );
nWhich = aIter.NextWhich();
@@ -1274,10 +1315,10 @@ void SwAnnotationShell::GetLinguState(SfxItemSet &rSet)
void SwAnnotationShell::ExecTransliteration(SfxRequest &rReq)
{
SwPostItMgr* pPostItMgr = rView.GetPostItMgr();
- if ( !pPostItMgr || !pPostItMgr->GetActivePostIt() )
+ if ( !pPostItMgr || !pPostItMgr->HasActiveSidebarWin() )
return;
- OutlinerView* pOLV = pPostItMgr->GetActivePostIt()->View();
+ OutlinerView* pOLV = pPostItMgr->GetActiveSidebarWin()->GetOutlinerView();
using namespace ::com::sun::star::i18n;
{
@@ -1285,6 +1326,15 @@ void SwAnnotationShell::ExecTransliteration(SfxRequest &rReq)
switch( rReq.GetSlot() )
{
+ case SID_TRANSLITERATE_SENTENCE_CASE:
+ nMode = TransliterationModulesExtra::SENTENCE_CASE;
+ break;
+ case SID_TRANSLITERATE_TITLE_CASE:
+ nMode = TransliterationModulesExtra::TITLE_CASE;
+ break;
+ case SID_TRANSLITERATE_TOGGLE_CASE:
+ nMode = TransliterationModulesExtra::TOGGLE_CASE;
+ break;
case SID_TRANSLITERATE_UPPER:
nMode = TransliterationModules_LOWERCASE_UPPERCASE;
break;
@@ -1321,7 +1371,9 @@ void SwAnnotationShell::ExecUndo(SfxRequest &rReq)
SfxUndoManager* pUndoManager = GetUndoManager();
SwWrtShell &rSh = rView.GetWrtShell();
- long aOldHeight = rView.GetPostItMgr()->GetActivePostIt() ? rView.GetPostItMgr()->GetActivePostIt()->GetPostItTextHeight() : 0;
+ long aOldHeight = rView.GetPostItMgr()->HasActiveSidebarWin()
+ ? rView.GetPostItMgr()->GetActiveSidebarWin()->GetPostItTextHeight()
+ : 0;
USHORT nId = rReq.GetSlot();
sal_uInt16 nCnt = 1;
@@ -1381,14 +1433,14 @@ void SwAnnotationShell::ExecUndo(SfxRequest &rReq)
rView.GetViewFrame()->GetBindings().InvalidateAll(sal_False);
- if (rView.GetPostItMgr()->GetActivePostIt())
- rView.GetPostItMgr()->GetActivePostIt()->ResizeIfNeccessary(aOldHeight,rView.GetPostItMgr()->GetActivePostIt()->GetPostItTextHeight());
+ if (rView.GetPostItMgr()->HasActiveSidebarWin())
+ rView.GetPostItMgr()->GetActiveSidebarWin()->ResizeIfNeccessary(aOldHeight,rView.GetPostItMgr()->GetActiveSidebarWin()->GetPostItTextHeight());
}
void SwAnnotationShell::StateUndo(SfxItemSet &rSet)
{
SwPostItMgr* pPostItMgr = rView.GetPostItMgr();
- if ( !pPostItMgr || !pPostItMgr->GetActivePostIt() )
+ if ( !pPostItMgr || !pPostItMgr->HasActiveSidebarWin() )
return;
SfxWhichIter aIter(rSet);
@@ -1477,7 +1529,7 @@ void SwAnnotationShell::StateUndo(SfxItemSet &rSet)
}
- if (pPostItMgr->GetActivePostIt()->GetStatus()==SwPostItHelper::DELETED)
+ if (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()==SwPostItHelper::DELETED)
rSet.DisableItem( nWhich );
nWhich = aIter.NextWhich();
@@ -1498,10 +1550,10 @@ void SwAnnotationShell::StateDisableItems( SfxItemSet &rSet )
void SwAnnotationShell::InsertSymbol(SfxRequest& rReq)
{
SwPostItMgr* pPostItMgr = rView.GetPostItMgr();
- if ( !pPostItMgr || !pPostItMgr->GetActivePostIt() )
+ if ( !pPostItMgr || !pPostItMgr->HasActiveSidebarWin() )
return;
- OutlinerView* pOLV = pPostItMgr->GetActivePostIt()->View();
+ OutlinerView* pOLV = pPostItMgr->GetActiveSidebarWin()->GetOutlinerView();
const SfxItemSet *pArgs = rReq.GetArgs();
const SfxPoolItem* pItem = 0;
diff --git a/sw/source/ui/shells/basesh.cxx b/sw/source/ui/shells/basesh.cxx
index 0cee102729a7..0500b4a88310 100644
--- a/sw/source/ui/shells/basesh.cxx
+++ b/sw/source/ui/shells/basesh.cxx
@@ -703,8 +703,9 @@ void SwBaseShell::Execute(SfxRequest &rReq)
rSh.EndSelect();
}
BOOL bRet = rSh.MoveFldType(pFldType, nSlot == FN_GOTO_NEXT_MARK);
- if (bRet)
- rSh.ClickToField(*rSh.GetCurFld());
+ SwField* pCurField = bRet ? rSh.GetCurFld() : 0;
+ if (pCurField)
+ rSh.ClickToField(*pCurField);
rReq.SetReturnValue(SfxBoolItem( nSlot, bRet));
}
}
diff --git a/sw/source/ui/shells/drwtxtex.cxx b/sw/source/ui/shells/drwtxtex.cxx
index 94d49720a50c..c95ad7e64c1c 100644
--- a/sw/source/ui/shells/drwtxtex.cxx
+++ b/sw/source/ui/shells/drwtxtex.cxx
@@ -27,8 +27,14 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_sw.hxx"
-#include <hintids.hxx>
+#include <com/sun/star/ui/dialogs/XExecutableDialog.hpp>
+
+#include <comphelper/processfactory.hxx>
+#include <i18npool/mslangid.hxx>
+#include <sfx2/bindings.hxx>
+#include <sfx2/dispatch.hxx>
+#include <sfx2/request.hxx>
#include <tools/shl.hxx>
#include <svx/svdview.hxx>
#include <editeng/spltitem.hxx>
@@ -37,9 +43,7 @@
#include <editeng/widwitem.hxx>
#include <editeng/kernitem.hxx>
#include <editeng/escpitem.hxx>
-#ifndef _SVX_PARAITEM_HXX //autogen
#include <editeng/lspcitem.hxx>
-#endif
#include <editeng/adjitem.hxx>
#include <editeng/crsditem.hxx>
#include <editeng/shdditem.hxx>
@@ -49,9 +53,7 @@
#include <editeng/fhgtitem.hxx>
#include <editeng/colritem.hxx>
#include <editeng/wghtitem.hxx>
-#ifndef _SVX_CNTRITEM_HXX //autogen
#include <editeng/cntritem.hxx>
-#endif
#include <editeng/postitem.hxx>
#include <editeng/frmdiritem.hxx>
#include <svx/svdoutl.hxx>
@@ -59,6 +61,8 @@
#include <svl/whiter.hxx>
#include <svl/cjkoptions.hxx>
#include <svl/ctloptions.hxx>
+#include <svtools/langtab.hxx>
+#include <svl/languageoptions.hxx>
#include <sfx2/bindings.hxx>
#include <vcl/msgbox.hxx>
#include <sfx2/dispatch.hxx>
@@ -67,48 +71,66 @@
#include <editeng/editstat.hxx>
#include <svx/hlnkitem.hxx>
#include <svx/htmlmode.hxx>
+#include <svl/languageoptions.hxx>
+#include <svl/slstitm.hxx>
#include <editeng/langitem.hxx>
+#include <svtools/langtab.hxx>
#include <editeng/unolingu.hxx>
#include <editeng/scripttypeitem.hxx>
#include <editeng/writingmodeitem.hxx>
+#include <editeng/eeitem.hxx>
+#include <editeng/editeng.hxx>
+#include <editeng/editdata.hxx>
+#include <editeng/outliner.hxx>
+#include <vcl/window.hxx>
+#include <editeng/editview.hxx>
+#include <vcl/outdev.hxx>
+#include <editeng/hyznitem.hxx>
+#include <editeng/kernitem.hxx>
+#include <editeng/langitem.hxx>
+#include <editeng/lspcitem.hxx>
+#include <editeng/orphitem.hxx>
+#include <editeng/outliner.hxx>
+#include <editeng/postitem.hxx>
+#include <editeng/scripttypeitem.hxx>
+#include <editeng/shdditem.hxx>
+#include <editeng/spltitem.hxx>
+#include <svx/svdoutl.hxx>
+#include <svx/svdview.hxx>
+#include <editeng/udlnitem.hxx>
+#include <editeng/unolingu.hxx>
+#include <editeng/wghtitem.hxx>
+#include <editeng/widwitem.hxx>
+#include <editeng/writingmodeitem.hxx>
+#include <tools/shl.hxx>
+#include <vcl/msgbox.hxx>
+#include <vcl/outdev.hxx>
+#include <vcl/window.hxx>
+
+#include <cmdid.h>
#include <doc.hxx>
-#include <wview.hxx>
-#include <viewopt.hxx>
-#include <wrtsh.hxx>
-#include <uitool.hxx>
+#include <docstat.hxx>
+#include <drwtxtsh.hxx>
+#include <edtwin.hxx>
+#include <globals.hrc>
+#include <hintids.hxx>
+#include <initui.hxx> // fuer SpellPointer
+#include <langhelper.hxx>
#include <pardlg.hxx>
+#include <shells.hrc>
+#include <string.h>
#include <swdtflvr.hxx>
-#include <drwtxtsh.hxx>
#include <swmodule.hxx>
-#include <initui.hxx> // fuer SpellPointer
-#include <edtwin.hxx>
#include <swwait.hxx>
-#include <docstat.hxx>
-
-#include <comphelper/processfactory.hxx>
-#include <com/sun/star/ui/dialogs/XExecutableDialog.hpp>
+#include <uitool.hxx>
+#include <viewopt.hxx>
+#include <wrtsh.hxx>
+#include <wview.hxx>
-#include <cmdid.h>
-#include <globals.hrc>
-#include <shells.hrc>
#include "swabstdlg.hxx"
#include "chrdlg.hrc"
#include "misc.hrc"
-//modified on Jul. 30th
-#include <svl/languageoptions.hxx>
-#include <editeng/langitem.hxx>
-#include <svtools/langtab.hxx>
-#include <svl/slstitm.hxx>
-#include <string.h>
-
-#include <editeng/eeitem.hxx>
-#include <editeng/editeng.hxx>
-#include <editeng/editdata.hxx>
-#include <editeng/outliner.hxx>
-#include <vcl/window.hxx>
-#include <editeng/editview.hxx>
-#include <vcl/outdev.hxx>
#include <langhelper.hxx>
@@ -148,6 +170,18 @@ void SwDrawTextShell::Execute( SfxRequest &rReq )
bRestoreSelection = SwLangHelper::SetLanguageStatus(pOLV,rReq,GetView(),rSh);
break;
}
+
+ case SID_THES:
+ {
+ String aReplaceText;
+ SFX_REQUEST_ARG( rReq, pItem2, SfxStringItem, SID_THES, sal_False );
+ if (pItem2)
+ aReplaceText = pItem2->GetValue();
+ if (aReplaceText.Len() > 0)
+ ReplaceTextWithSynonym( pOLV->GetEditView(), aReplaceText );
+ break;
+ }
+
case SID_ATTR_CHAR_FONT:
case SID_ATTR_CHAR_FONTHEIGHT:
case SID_ATTR_CHAR_WEIGHT:
@@ -569,7 +603,27 @@ void SwDrawTextShell::GetState(SfxItemSet& rSet)
nSlotId = SwLangHelper::GetLanguageStatus(pOLV,rSet);;
break;
}
- case SID_ATTR_PARA_ADJUST_LEFT: eAdjust = SVX_ADJUST_LEFT; goto ASK_ADJUST;
+
+ case SID_THES:
+ {
+ String aStatusVal;
+ LanguageType nLang = LANGUAGE_NONE;
+ bool bIsLookUpWord = GetStatusValueForThesaurusFromContext( aStatusVal, nLang, pOLV->GetEditView() );
+ rSet.Put( SfxStringItem( SID_THES, aStatusVal ) );
+
+ // disable "Thesaurus" context menu entry if there is nothing to look up
+ uno::Reference< linguistic2::XThesaurus > xThes( ::GetThesaurus() );
+ lang::Locale aLocale( SvxCreateLocale( nLang ) );
+ if (!bIsLookUpWord ||
+ !xThes.is() || nLang == LANGUAGE_NONE || !xThes->hasLocale( aLocale ))
+ rSet.DisableItem( SID_THES );
+
+ //! avoid puting the same item as SfxBoolItem at the end of this function
+ nSlotId = 0;
+ break;
+ }
+
+ case SID_ATTR_PARA_ADJUST_LEFT: eAdjust = SVX_ADJUST_LEFT; goto ASK_ADJUST;
case SID_ATTR_PARA_ADJUST_RIGHT: eAdjust = SVX_ADJUST_RIGHT; goto ASK_ADJUST;
case SID_ATTR_PARA_ADJUST_CENTER: eAdjust = SVX_ADJUST_CENTER; goto ASK_ADJUST;
case SID_ATTR_PARA_ADJUST_BLOCK: eAdjust = SVX_ADJUST_BLOCK; goto ASK_ADJUST;
@@ -620,19 +674,17 @@ ASK_ESCAPE:
}
break;
- case FN_THESAURUS_DLG:
+ case SID_THESAURUS:
{
// disable "Thesaurus" if the language is not supported
const SfxPoolItem &rItem = GetShell().GetDoc()->GetDefault(
GetWhichOfScript( RES_CHRATR_LANGUAGE,
GetI18NScriptTypeOfLanguage( (USHORT)GetAppLanguage())) );
- LanguageType nLang = ((const SvxLanguageItem &)
- rItem).GetLanguage();
- //
+ LanguageType nLang = ((const SvxLanguageItem &) rItem).GetLanguage();
+
uno::Reference< linguistic2::XThesaurus > xThes( ::GetThesaurus() );
- if (!xThes.is() || nLang == LANGUAGE_NONE ||
- !xThes->hasLocale( SvxCreateLocale( nLang ) ))
- rSet.DisableItem( FN_THESAURUS_DLG );
+ if (!xThes.is() || nLang == LANGUAGE_NONE || !xThes->hasLocale( SvxCreateLocale( nLang ) ))
+ rSet.DisableItem( SID_THESAURUS );
nSlotId = 0;
}
break;
diff --git a/sw/source/ui/shells/drwtxtsh.cxx b/sw/source/ui/shells/drwtxtsh.cxx
index 4b8e2c65c5fc..78a9b05ce70b 100644
--- a/sw/source/ui/shells/drwtxtsh.cxx
+++ b/sw/source/ui/shells/drwtxtsh.cxx
@@ -52,6 +52,7 @@
#include <editeng/editstat.hxx>
#include <svx/svdoutl.hxx>
#include <com/sun/star/i18n/TransliterationModules.hpp>
+#include <com/sun/star/i18n/TransliterationModulesExtra.hpp>
#include <com/sun/star/i18n/TextConversionOption.hpp>
#include <com/sun/star/ui/dialogs/XExecutableDialog.hpp>
#include <com/sun/star/lang/XInitialization.hpp>
@@ -392,7 +393,7 @@ void SwDrawTextShell::ExecDrawLingu(SfxRequest &rReq)
{
switch(rReq.GetSlot())
{
- case FN_THESAURUS_DLG:
+ case SID_THESAURUS:
pOLV->StartThesaurus();
break;
@@ -717,6 +718,15 @@ void SwDrawTextShell::ExecTransliteration( SfxRequest & rReq )
switch( rReq.GetSlot() )
{
+ case SID_TRANSLITERATE_SENTENCE_CASE:
+ nMode = TransliterationModulesExtra::SENTENCE_CASE;
+ break;
+ case SID_TRANSLITERATE_TITLE_CASE:
+ nMode = TransliterationModulesExtra::TITLE_CASE;
+ break;
+ case SID_TRANSLITERATE_TOGGLE_CASE:
+ nMode = TransliterationModulesExtra::TOGGLE_CASE;
+ break;
case SID_TRANSLITERATE_UPPER:
nMode = TransliterationModules_LOWERCASE_UPPERCASE;
break;
diff --git a/sw/source/ui/shells/langhelper.cxx b/sw/source/ui/shells/langhelper.cxx
index 3a0fe1421a0c..37d5e1ed5d69 100755
--- a/sw/source/ui/shells/langhelper.cxx
+++ b/sw/source/ui/shells/langhelper.cxx
@@ -66,7 +66,8 @@ using namespace ::com::sun::star;
namespace SwLangHelper
{
- USHORT GetLanguageStatus(OutlinerView* pOLV,SfxItemSet& rSet)
+
+ USHORT GetLanguageStatus( OutlinerView* pOLV, SfxItemSet& rSet )
{
ESelection aSelection = pOLV->GetSelection();
EditView& rEditView=pOLV->GetEditView();
@@ -110,7 +111,7 @@ namespace SwLangHelper
return 0;
}
- bool SetLanguageStatus(OutlinerView* pOLV,SfxRequest &rReq,SwView &rView,SwWrtShell &rSh)
+ bool SetLanguageStatus( OutlinerView* pOLV, SfxRequest &rReq, SwView &rView, SwWrtShell &rSh )
{
bool bRestoreSelection = false;
SfxItemSet aEditAttr(pOLV->GetAttribs());
@@ -130,126 +131,132 @@ namespace SwLangHelper
//!! SwTextShell got destroyed meanwhile.)
SfxViewFrame *pViewFrame = rView.GetViewFrame();
- if (aNewLangTxt.EqualsAscii( "*" ))
+ if (aNewLangTxt.EqualsAscii( "*" ))
+ {
+ // open the dialog "Tools/Options/Language Settings - Language"
+ SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create();
+ if (pFact)
{
- // open the dialog "Tools/Options/Language Settings - Language"
- SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create();
- if (pFact)
- {
- VclAbstractDialog* pDlg = pFact->CreateVclDialog( rView.GetWindow(), SID_LANGUAGE_OPTIONS );
- pDlg->Execute();
- delete pDlg;
- }
+ VclAbstractDialog* pDlg = pFact->CreateVclDialog( rView.GetWindow(), SID_LANGUAGE_OPTIONS );
+ pDlg->Execute();
+ delete pDlg;
}
- else
+ }
+ else
+ {
+ // setting the new language...
+ if (aNewLangTxt.Len() > 0)
{
- // setting the new language...
- if (aNewLangTxt.Len() > 0)
+ const String aSelectionLangPrefix( String::CreateFromAscii("Current_") );
+ const String aParagraphLangPrefix( String::CreateFromAscii("Paragraph_") );
+ const String aDocumentLangPrefix( String::CreateFromAscii("Default_") );
+ const String aStrNone( String::CreateFromAscii("LANGUAGE_NONE") );
+ const String aStrResetLangs( String::CreateFromAscii("RESET_LANGUAGES") );
+
+ xub_StrLen nPos = 0;
+ bool bForSelection = true;
+ bool bForParagraph = false;
+ if (STRING_NOTFOUND != (nPos = aNewLangTxt.Search( aSelectionLangPrefix, 0 )))
{
- const String aSelectionLangPrefix( String::CreateFromAscii("Current_") );
- const String aParagraphLangPrefix( String::CreateFromAscii("Paragraph_") );
- const String aDocumentLangPrefix( String::CreateFromAscii("Default_") );
- const String aStrNone( String::CreateFromAscii("LANGUAGE_NONE") );
-
- xub_StrLen nPos = 0;
- bool bForSelection = true;
- bool bForParagraph = false;
- if (STRING_NOTFOUND != (nPos = aNewLangTxt.Search( aSelectionLangPrefix, 0 )))
- {
- // ... for the current selection
- aNewLangTxt = aNewLangTxt.Erase( nPos, aSelectionLangPrefix.Len() );
- bForSelection = true;
- }
- else if (STRING_NOTFOUND != (nPos = aNewLangTxt.Search( aParagraphLangPrefix , 0 )))
- {
- // ... for the current paragraph language
- aNewLangTxt = aNewLangTxt.Erase( nPos, aParagraphLangPrefix.Len() );
- bForSelection = true;
- bForParagraph = true;
- }
- else if (STRING_NOTFOUND != (nPos = aNewLangTxt.Search( aDocumentLangPrefix , 0 )))
- {
- // ... as default document language
- aNewLangTxt = aNewLangTxt.Erase( nPos, aDocumentLangPrefix.Len() );
- bForSelection = false;
- }
+ // ... for the current selection
+ aNewLangTxt = aNewLangTxt.Erase( nPos, aSelectionLangPrefix.Len() );
+ bForSelection = true;
+ }
+ else if (STRING_NOTFOUND != (nPos = aNewLangTxt.Search( aParagraphLangPrefix , 0 )))
+ {
+ // ... for the current paragraph language
+ aNewLangTxt = aNewLangTxt.Erase( nPos, aParagraphLangPrefix.Len() );
+ bForSelection = true;
+ bForParagraph = true;
+ }
+ else if (STRING_NOTFOUND != (nPos = aNewLangTxt.Search( aDocumentLangPrefix , 0 )))
+ {
+ // ... as default document language
+ aNewLangTxt = aNewLangTxt.Erase( nPos, aDocumentLangPrefix.Len() );
+ bForSelection = false;
+ }
- if (bForParagraph)
- {
- bRestoreSelection = true;
- SwLangHelper::SelectPara( rEditView, aSelection );
- aSelection = pOLV->GetSelection();
- }
- if (!bForSelection) // document language to be changed...
- {
- rSh.StartAction();
- rSh.LockView( TRUE );
- rSh.Push();
+ if (bForParagraph)
+ {
+ bRestoreSelection = true;
+ SwLangHelper::SelectPara( rEditView, aSelection );
+ aSelection = pOLV->GetSelection();
+ }
+ if (!bForSelection) // document language to be changed...
+ {
+ rSh.StartAction();
+ rSh.LockView( TRUE );
+ rSh.Push();
- // prepare to apply new language to all text in document
- rSh.SelAll();
- rSh.ExtendedSelectAll();
- }
+ // prepare to apply new language to all text in document
+ rSh.SelAll();
+ rSh.ExtendedSelectAll();
+ }
+
+ if (aNewLangTxt == aStrNone)
+ SwLangHelper::SetLanguage_None( rSh, pOLV, aSelection, bForSelection, aEditAttr );
+ else if (aNewLangTxt == aStrResetLangs)
+ SwLangHelper::ResetLanguages( rSh, pOLV, aSelection, bForSelection );
+ else
+ SwLangHelper::SetLanguage( rSh, pOLV, aSelection, aNewLangTxt, bForSelection, aEditAttr );
- if (aNewLangTxt != aStrNone)
- SwLangHelper::SetLanguage( rSh, pEditEngine, aSelection, aNewLangTxt, bForSelection, aEditAttr );
+ // ugly hack, as it seems that EditView/EditEngine does not update their spellchecking marks
+ // when setting a new language attribute
+ if (bForSelection)
+ {
+ const SwViewOption* pVOpt = rView.GetWrtShellPtr()->GetViewOptions();
+ ULONG nCntrl = pEditEngine->GetControlWord();
+ // turn off
+ if (!pVOpt->IsOnlineSpell())
+ nCntrl &= ~EE_CNTRL_ONLINESPELLING;
else
- SwLangHelper::SetLanguage_None( rSh, pEditEngine, aSelection, bForSelection, aEditAttr );
+ nCntrl &= ~EE_CNTRL_ONLINESPELLING;
+ pEditEngine->SetControlWord(nCntrl);
- // ugly hack, as it seems that EditView/EditEngine does not update their spellchecking marks
- // when setting a new language attribute
- if (bForSelection)
- {
- const SwViewOption* pVOpt = rView.GetWrtShellPtr()->GetViewOptions();
- ULONG nCntrl = pEditEngine->GetControlWord();
- // turn off
- if (!pVOpt->IsOnlineSpell())
- nCntrl &= ~EE_CNTRL_ONLINESPELLING;
- else
- nCntrl &= ~EE_CNTRL_ONLINESPELLING;
- pEditEngine->SetControlWord(nCntrl);
-
- //turn back on
- if (pVOpt->IsOnlineSpell())
- nCntrl |= EE_CNTRL_ONLINESPELLING;
- else
- nCntrl &= ~EE_CNTRL_ONLINESPELLING;
- pEditEngine->SetControlWord(nCntrl);
-
- pEditEngine->CompleteOnlineSpelling();
- rEditView.Invalidate();
- }
+ //turn back on
+ if (pVOpt->IsOnlineSpell())
+ nCntrl |= EE_CNTRL_ONLINESPELLING;
+ else
+ nCntrl &= ~EE_CNTRL_ONLINESPELLING;
+ pEditEngine->SetControlWord(nCntrl);
- if (!bForSelection)
- {
- // need to release view and restore selection...
- rSh.Pop( FALSE );
- rSh.LockView( FALSE );
- rSh.EndAction();
- }
+ pEditEngine->CompleteOnlineSpelling();
+ rEditView.Invalidate();
+ }
+
+ if (!bForSelection)
+ {
+ // need to release view and restore selection...
+ rSh.Pop( FALSE );
+ rSh.LockView( FALSE );
+ rSh.EndAction();
}
}
+ }
- // invalidate slot to get the new language displayed
- pViewFrame->GetBindings().Invalidate( rReq.GetSlot() );
+ // invalidate slot to get the new language displayed
+ pViewFrame->GetBindings().Invalidate( rReq.GetSlot() );
- rReq.Done();
- return bRestoreSelection;
+ rReq.Done();
+ return bRestoreSelection;
}
- void SetLanguage(SwWrtShell &rWrtSh, const String &rLangText, bool bIsForSelection, SfxItemSet &rCoreSet)
+ void SetLanguage( SwWrtShell &rWrtSh, const String &rLangText, bool bIsForSelection, SfxItemSet &rCoreSet )
{
- SetLanguage(rWrtSh,0,ESelection(),rLangText,bIsForSelection,rCoreSet);
+ SetLanguage( rWrtSh, 0 , ESelection(), rLangText, bIsForSelection, rCoreSet );
}
- void SetLanguage(SwWrtShell &rWrtSh, EditEngine* pEditEngine,ESelection aSelection, const String &rLangText, bool bIsForSelection, SfxItemSet &rCoreSet)
+ void SetLanguage( SwWrtShell &rWrtSh, OutlinerView* pOLV, ESelection aSelection, const String &rLangText, bool bIsForSelection, SfxItemSet &rCoreSet )
{
const LanguageType nLang = SvtLanguageTable().GetType( rLangText );
if (nLang != LANGUAGE_DONTKNOW)
{
USHORT nScriptType = SvtLanguageOptions::GetScriptTypeOfLanguage( nLang );
+ EditEngine* pEditEngine = pOLV ? pOLV->GetEditView().GetEditEngine() : NULL;
+ DBG_ASSERT( !pOLV || pEditEngine, "OutlinerView without EditEngine???" );
+
//get ScriptType
USHORT nLangWhichId = 0;
bool bIsSingleScriptType = true;
@@ -264,6 +271,9 @@ namespace SwLangHelper
}
if (bIsSingleScriptType)
{
+ // change language for selection or paragraph
+ // (for paragraph is handled by previosuly having set the selection to the
+ // whole paragraph)
if (bIsForSelection)
{
// apply language to current selection
@@ -279,7 +289,7 @@ namespace SwLangHelper
rWrtSh.SetAttr( rCoreSet );
}
}
- else // change document language
+ else // change language for all text
{
// set document default language
switch (nLangWhichId)
@@ -300,12 +310,12 @@ namespace SwLangHelper
}
}
- void SetLanguage_None(SwWrtShell &rWrtSh,bool bIsForSelection, SfxItemSet &rCoreSet )
+ void SetLanguage_None( SwWrtShell &rWrtSh, bool bIsForSelection, SfxItemSet &rCoreSet )
{
- SetLanguage_None(rWrtSh,0,ESelection(),bIsForSelection,rCoreSet);
+ SetLanguage_None( rWrtSh,0,ESelection(),bIsForSelection,rCoreSet );
}
- void SetLanguage_None(SwWrtShell &rWrtSh, EditEngine* pEditEngine,ESelection aSelection, bool bIsForSelection, SfxItemSet &rCoreSet )
+ void SetLanguage_None( SwWrtShell &rWrtSh, OutlinerView* pOLV, ESelection aSelection, bool bIsForSelection, SfxItemSet &rCoreSet )
{
// EditEngine IDs
const USHORT aLangWhichId_EE[3] =
@@ -325,7 +335,12 @@ namespace SwLangHelper
if (bIsForSelection)
{
- // apply language to current selection
+ // change language for selection or paragraph
+ // (for paragraph is handled by previosuly having set the selection to the
+ // whole paragraph)
+
+ EditEngine* pEditEngine = pOLV ? pOLV->GetEditView().GetEditEngine() : NULL;
+ DBG_ASSERT( !pOLV || pEditEngine, "OutlinerView without EditEngine???" );
if (pEditEngine)
{
for (sal_uInt16 i = 0; i < 3; ++i)
@@ -340,7 +355,7 @@ namespace SwLangHelper
rWrtSh.SetAttr( rCoreSet );
}
}
- else // change document language
+ else // change language for all text
{
SvUShortsSort aAttribs;
for (sal_uInt16 i = 0; i < 3; ++i)
@@ -355,6 +370,39 @@ namespace SwLangHelper
}
}
+ void ResetLanguages( SwWrtShell &rWrtSh, bool bIsForSelection )
+ {
+ ResetLanguages( rWrtSh, 0 , ESelection(), bIsForSelection );
+ }
+
+ void ResetLanguages( SwWrtShell &rWrtSh, OutlinerView* pOLV, ESelection aSelection, bool bIsForSelection )
+ {
+ (void) bIsForSelection;
+ (void) aSelection;
+
+ // reset language for current selection.
+ // The selection should already have been expanded to the whole paragraph or
+ // to all text in the document if those are the ranges where to reset
+ // the language attributes
+
+ if (pOLV)
+ {
+ EditView &rEditView = pOLV->GetEditView();
+ rEditView.RemoveAttribs( true, EE_CHAR_LANGUAGE );
+ rEditView.RemoveAttribs( true, EE_CHAR_LANGUAGE_CJK );
+ rEditView.RemoveAttribs( true, EE_CHAR_LANGUAGE_CTL );
+ }
+ else
+ {
+ SvUShortsSort aAttribs;
+ aAttribs.Insert( RES_CHRATR_LANGUAGE );
+ aAttribs.Insert( RES_CHRATR_CJK_LANGUAGE );
+ aAttribs.Insert( RES_CHRATR_CTL_LANGUAGE );
+ rWrtSh.ResetAttr( &aAttribs );
+ }
+ }
+
+
/// @returns : the language for the selected text that is set for the
/// specified attribute (script type).
/// If there are more than one languages used LANGUAGE_DONTKNOW will be returned.
@@ -450,7 +498,7 @@ namespace SwLangHelper
/// 'In use' means the language(s) matching the script type(s) of the
/// selected text. Or in other words, the language a spell checker would use.
/// If there is more than one language LANGUAGE_DONTKNOW will be returned.
- LanguageType GetCurrentLanguage(SfxItemSet aSet,USHORT nScriptType )
+ LanguageType GetCurrentLanguage( SfxItemSet aSet, USHORT nScriptType )
{
//set language attribute to use according to the script type
USHORT nLangWhichId = 0;
@@ -517,7 +565,7 @@ namespace SwLangHelper
return aText;
}
- String GetTextForLanguageGuessing(EditEngine* rEditEngine, ESelection aDocSelection )
+ String GetTextForLanguageGuessing( EditEngine* rEditEngine, ESelection aDocSelection )
{
// string for guessing language
String aText;
diff --git a/sw/source/ui/shells/makefile.mk b/sw/source/ui/shells/makefile.mk
index e9a03a5a41cc..dce62a2c9336 100644
--- a/sw/source/ui/shells/makefile.mk
+++ b/sw/source/ui/shells/makefile.mk
@@ -83,6 +83,7 @@ EXCEPTIONSFILES = \
$(SLO)$/drwtxtsh.obj \
$(SLO)$/frmsh.obj \
$(SLO)$/drwtxtex.obj \
+ $(SLO)$/slotadd.obj \
$(SLO)$/textsh1.obj
# --- Tagets -------------------------------------------------------
diff --git a/sw/source/ui/shells/textdrw.cxx b/sw/source/ui/shells/textdrw.cxx
index 5c6d043e0e01..e4d1bc817940 100644
--- a/sw/source/ui/shells/textdrw.cxx
+++ b/sw/source/ui/shells/textdrw.cxx
@@ -133,7 +133,6 @@ void SwBaseShell::InsertURLButton(const String& rURL, const String& rTarget, con
if (rSh.IsObjSelected())
{
-// rSh.ChgAnchor(FLY_AT_CNTNT);
rSh.UnSelectFrm();
}
}
diff --git a/sw/source/ui/shells/textfld.cxx b/sw/source/ui/shells/textfld.cxx
index a5093e8efcdd..3f26e47c8823 100644
--- a/sw/source/ui/shells/textfld.cxx
+++ b/sw/source/ui/shells/textfld.cxx
@@ -80,8 +80,7 @@
#include <app.hrc>
-#include "PostItMgr.hxx"
-#include "postit.hxx"
+#include <PostItMgr.hxx>
using namespace nsSwDocInfoSubType;
@@ -315,8 +314,11 @@ void SwTextShell::ExecField(SfxRequest &rReq)
}
break;
case FN_DELETE_NOTE:
- if ( GetView().GetPostItMgr() && GetView().GetPostItMgr()->GetActivePostIt() )
- GetView().GetPostItMgr()->GetActivePostIt()->Delete();
+ if ( GetView().GetPostItMgr() &&
+ GetView().GetPostItMgr()->HasActiveSidebarWin() )
+ {
+ GetView().GetPostItMgr()->DeleteActiveSidebarWin();
+ }
break;
case FN_DELETE_ALL_NOTES:
if ( GetView().GetPostItMgr() )
@@ -330,8 +332,11 @@ void SwTextShell::ExecField(SfxRequest &rReq)
}
break;
case FN_HIDE_NOTE:
- if ( GetView().GetPostItMgr() && GetView().GetPostItMgr()->GetActivePostIt() )
- GetView().GetPostItMgr()->GetActivePostIt()->Hide();
+ if ( GetView().GetPostItMgr() &&
+ GetView().GetPostItMgr()->HasActiveSidebarWin() )
+ {
+ GetView().GetPostItMgr()->HideActiveSidebarWin();
+ }
break;
case FN_HIDE_ALL_NOTES:
if ( GetView().GetPostItMgr() )
@@ -627,7 +632,7 @@ void SwTextShell::StateField( SfxItemSet &rSet )
SwPostItMgr* pPostItMgr = GetView().GetPostItMgr();
if ( !pPostItMgr )
rSet.InvalidateItem( nWhich );
- else if ( !pPostItMgr->GetActivePostIt() )
+ else if ( !pPostItMgr->HasActiveSidebarWin() )
{
rSet.InvalidateItem( FN_DELETE_NOTE );
rSet.InvalidateItem( FN_HIDE_NOTE );
diff --git a/sw/source/ui/shells/textsh.cxx b/sw/source/ui/shells/textsh.cxx
index c2308b9def0a..0de14dc3dacb 100644
--- a/sw/source/ui/shells/textsh.cxx
+++ b/sw/source/ui/shells/textsh.cxx
@@ -62,7 +62,8 @@
#include <svx/htmlmode.hxx>
#include <svx/pfiledlg.hxx>
#include <svtools/htmlcfg.hxx>
-#include <com/sun/star/i18n/TransliterationModules.hdl>
+#include <com/sun/star/i18n/TransliterationModules.hpp>
+#include <com/sun/star/i18n/TransliterationModulesExtra.hpp>
#include <sot/clsids.hxx>
#include <editeng/acorrcfg.hxx>
@@ -1027,6 +1028,15 @@ void SwTextShell::ExecTransliteration( SfxRequest & rReq )
switch( rReq.GetSlot() )
{
+ case SID_TRANSLITERATE_SENTENCE_CASE:
+ nMode = TransliterationModulesExtra::SENTENCE_CASE;
+ break;
+ case SID_TRANSLITERATE_TITLE_CASE:
+ nMode = TransliterationModulesExtra::TITLE_CASE;
+ break;
+ case SID_TRANSLITERATE_TOGGLE_CASE:
+ nMode = TransliterationModulesExtra::TOGGLE_CASE;
+ break;
case SID_TRANSLITERATE_UPPER:
nMode = TransliterationModules_LOWERCASE_UPPERCASE;
break;
diff --git a/sw/source/ui/shells/textsh1.cxx b/sw/source/ui/shells/textsh1.cxx
index b7aa72acfb2c..e7d7ef613f2b 100644
--- a/sw/source/ui/shells/textsh1.cxx
+++ b/sw/source/ui/shells/textsh1.cxx
@@ -27,7 +27,10 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_sw.hxx"
+
+#include <com/sun/star/i18n/WordType.hpp>
#include <com/sun/star/ui/dialogs/XExecutableDialog.hpp>
+
#include <comphelper/processfactory.hxx>
#include <svx/dialogs.hrc>
#include <hintids.hxx>
@@ -338,6 +341,7 @@ void SwTextShell::Execute(SfxRequest &rReq)
const String aParagraphLangPrefix( String::CreateFromAscii("Paragraph_") );
const String aDocumentLangPrefix( String::CreateFromAscii("Default_") );
const String aStrNone( String::CreateFromAscii("LANGUAGE_NONE") );
+ const String aStrResetLangs( String::CreateFromAscii("RESET_LANGUAGES") );
SfxItemSet aCoreSet( GetPool(),
RES_CHRATR_LANGUAGE, RES_CHRATR_LANGUAGE,
@@ -376,10 +380,12 @@ void SwTextShell::Execute(SfxRequest &rReq)
rWrtSh.SelAll();
rWrtSh.ExtendedSelectAll();
}
- if (aNewLangTxt != aStrNone)
- SwLangHelper::SetLanguage( rWrtSh, aNewLangTxt, bForSelection, aCoreSet );
- else
+ if (aNewLangTxt == aStrNone)
SwLangHelper::SetLanguage_None( rWrtSh, bForSelection, aCoreSet );
+ else if (aNewLangTxt == aStrResetLangs)
+ SwLangHelper::ResetLanguages( rWrtSh, bForSelection );
+ else
+ SwLangHelper::SetLanguage( rWrtSh, aNewLangTxt, bForSelection, aCoreSet );
}
// restore selection...
@@ -396,6 +402,23 @@ void SwTextShell::Execute(SfxRequest &rReq)
break;
}
+ case SID_THES:
+ {
+ // replace word/selection with text from selected sub menu entry
+ String aReplaceText;
+ SFX_REQUEST_ARG( rReq, pItem2, SfxStringItem, SID_THES , sal_False );
+ if (pItem2)
+ aReplaceText = pItem2->GetValue();
+ if (aReplaceText.Len() > 0)
+ {
+ SwView &rView2 = rWrtSh.GetView();
+ const bool bSelection = rWrtSh.HasSelection();
+ const String aLookUpText = rView2.GetThesaurusLookUpText( bSelection );
+ rView2.InsertThesaurusSynonym( aReplaceText, aLookUpText, bSelection );
+ }
+ }
+ break;
+
case SID_CHARMAP:
{
InsertSymbol( rReq );
@@ -1375,6 +1398,38 @@ void SwTextShell::GetState( SfxItemSet &rSet )
}
break;
+ case SID_THES:
+ {
+ // is there a valid selection to get text from?
+ String aText;
+ sal_Bool bValid = !rSh.HasSelection() ||
+ (rSh.IsSelOnePara() && !rSh.IsMultiSelection());
+ // prevent context menu from showing when cursor is not in or at the end of a word
+ // (GetCurWord will return the next word if there is none at the current position...)
+ const sal_Int16 nWordType = ::i18n::WordType::DICTIONARY_WORD;
+ bool bWord = rSh.IsInWord( nWordType ) || rSh.IsStartWord( nWordType ) || rSh.IsEndWord( nWordType );
+ if (bValid && bWord)
+ aText = rSh.HasSelection()? rSh.GetSelTxt() : rSh.GetCurWord();
+
+ LanguageType nLang = rSh.GetCurLang();
+ lang::Locale aLocale = SvxCreateLocale( nLang );
+ String aLangText( MsLangId::convertLanguageToIsoString( nLang ) );
+
+ // set word and locale to look up as status value
+ String aStatusVal( aText );
+ aStatusVal.AppendAscii( "#" );
+ aStatusVal += aLangText;
+
+ rSet.Put( SfxStringItem( SID_THES, aStatusVal ) );
+
+ // disable "Thesaurus" context menu entry if there is nothing to look up
+ uno::Reference< linguistic2::XThesaurus > xThes( ::GetThesaurus() );
+ if (aText.Len() == 0 ||
+ !xThes.is() || nLang == LANGUAGE_NONE || !xThes->hasLocale( aLocale ))
+ rSet.DisableItem( SID_THES );
+ }
+ break;
+
case FN_NUMBER_NEWSTART :
if(!rSh.GetCurNumRule())
rSet.DisableItem(nWhich);
diff --git a/sw/source/ui/shells/txtcrsr.cxx b/sw/source/ui/shells/txtcrsr.cxx
index 8a72bb606e59..69f82ebf902d 100644
--- a/sw/source/ui/shells/txtcrsr.cxx
+++ b/sw/source/ui/shells/txtcrsr.cxx
@@ -47,6 +47,8 @@
#include <num.hxx>
#include <edtwin.hxx>
#include <crsskip.hxx>
+#include <doc.hxx>
+#include <docsh.hxx>
#ifndef _CMDID_H
#include <cmdid.h>
@@ -56,6 +58,10 @@
#include <globals.hrc>
#endif
+#include <svx/svdouno.hxx>
+#include <svx/fmshell.hxx>
+#include <svx/sdrobjectfilter.hxx>
+
using namespace ::com::sun::star;
void SwTextShell::ExecBasicMove(SfxRequest &rReq)
@@ -246,6 +252,36 @@ void SwTextShell::ExecMoveMisc(SfxRequest &rReq)
BOOL bSetRetVal = TRUE, bRet = TRUE;
switch ( nSlot )
{
+ case SID_FM_TOGGLECONTROLFOCUS:
+ {
+ const SwDoc* pDoc = rSh.GetDoc();
+ const SwDocShell* pDocShell = pDoc ? pDoc->GetDocShell() : NULL;
+ const SwView* pView = pDocShell ? pDocShell->GetView() : NULL;
+ const FmFormShell* pFormShell = pView ? pView->GetFormShell() : NULL;
+ SdrView* pDrawView = pView ? pView->GetDrawView() : NULL;
+ Window* pWindow = pView ? pView->GetWrtShell().GetWin() : NULL;
+
+ OSL_ENSURE( pFormShell && pDrawView && pWindow, "SwXTextView::ExecMoveMisc: no chance!" );
+ if ( !pFormShell || !pDrawView || !pWindow )
+ break;
+
+ ::std::auto_ptr< ::svx::ISdrObjectFilter > pFilter( pFormShell->CreateFocusableControlFilter(
+ *pDrawView, *pWindow ) );
+ if ( !pFilter.get() )
+ break;
+
+ const SdrObject* pNearestControl = rSh.GetBestObject( TRUE, GOTOOBJ_DRAW_CONTROL, FALSE, pFilter.get() );
+ if ( !pNearestControl )
+ break;
+
+ const SdrUnoObj* pUnoObject = dynamic_cast< const SdrUnoObj* >( pNearestControl );
+ OSL_ENSURE( pUnoObject, "SwTextShell::ExecMoveMisc: GetBestObject returned nonsense!" );
+ if ( !pUnoObject )
+ break;
+
+ pFormShell->ToggleControlFocus( *pUnoObject, *pDrawView, *pWindow );
+ }
+ break;
case FN_CNTNT_TO_NEXT_FRAME:
bRet = rSh.GotoObj(TRUE, GOTOOBJ_GOTO_ANY);
if(bRet)
diff --git a/sw/source/ui/uiview/makefile.mk b/sw/source/ui/uiview/makefile.mk
index d06bb58a7dab..337ee85da580 100644
--- a/sw/source/ui/uiview/makefile.mk
+++ b/sw/source/ui/uiview/makefile.mk
@@ -49,8 +49,13 @@ EXCEPTIONSFILES= \
$(SLO)$/swcli.obj \
$(SLO)$/uivwimp.obj \
$(SLO)$/view.obj \
+ $(SLO)$/view0.obj \
+ $(SLO)$/view1.obj \
$(SLO)$/view2.obj \
+ $(SLO)$/viewdraw.obj \
+ $(SLO)$/viewport.obj \
$(SLO)$/viewprt.obj \
+ $(SLO)$/viewsrch.obj \
$(SLO)$/viewling.obj \
$(SLO)$/viewmdi.obj \
diff --git a/sw/source/ui/uiview/pview.cxx b/sw/source/ui/uiview/pview.cxx
index f94387fcf623..eb4c9299afb0 100644
--- a/sw/source/ui/uiview/pview.cxx
+++ b/sw/source/ui/uiview/pview.cxx
@@ -1055,7 +1055,7 @@ void SwPagePreViewWin::Command( const CommandEvent& rCEvt )
if( pData )
{
const CommandWheelData aDataNew(pData->GetDelta(),pData->GetNotchDelta(),COMMAND_WHEEL_PAGESCROLL,
- pData->GetMode(),pData->GetModifier(),pData->IsHorz());
+ pData->GetMode(),pData->GetModifier(),pData->IsHorz(), pData->IsDeltaPixel());
const CommandEvent aEvent( rCEvt.GetMousePosPixel(),rCEvt.GetCommand(),rCEvt.IsMouseEvent(),&aDataNew);
bCallBase = !mrView.HandleWheelCommands( aEvent );
}
diff --git a/sw/source/ui/uiview/srcview.cxx b/sw/source/ui/uiview/srcview.cxx
index abd392b490dc..d325085f53e6 100644
--- a/sw/source/ui/uiview/srcview.cxx
+++ b/sw/source/ui/uiview/srcview.cxx
@@ -49,7 +49,7 @@
#include <svl/whiter.hxx>
#include <unotools/saveopt.hxx>
#include <svtools/transfer.hxx>
-#include <svl/svtools.hrc>
+#include <svtools/svtools.hrc>
#include <svtools/svtdata.hxx>
#include <svx/svxids.hrc>
#include <svtools/htmlcfg.hxx>
@@ -601,15 +601,11 @@ void SwSrcView::GetState(SfxItemSet& rSet)
break;
case SID_PASTE:
{
- BOOL bDisable = 0 == SW_MOD()->pClipboard;
- if( bDisable )
- {
- TransferableDataHelper aDataHelper(
- TransferableDataHelper::CreateFromSystemClipboard(
- &aEditWin) );
- bDisable = !aDataHelper.GetXTransferable().is() ||
- 0 == aDataHelper.GetFormatCount();
- }
+ TransferableDataHelper aDataHelper(
+ TransferableDataHelper::CreateFromSystemClipboard(
+ &aEditWin) );
+ BOOL bDisable = !aDataHelper.GetXTransferable().is() ||
+ 0 == aDataHelper.GetFormatCount();
if( bDisable )
rSet.DisableItem(nWhich);
}
diff --git a/sw/source/ui/uiview/view.cxx b/sw/source/ui/uiview/view.cxx
index 23e6a44012e4..4396ff03807c 100644
--- a/sw/source/ui/uiview/view.cxx
+++ b/sw/source/ui/uiview/view.cxx
@@ -212,7 +212,7 @@ void SwView::GotFocus() const
SwAnnotationShell* pAsAnnotationShell = PTR_CAST( SwAnnotationShell, pTopShell );
if ( pAsAnnotationShell )
{
- mpPostItMgr->SetActivePostIt(0);
+ mpPostItMgr->SetActiveSidebarWin(0);
const_cast< SwView* >( this )->AttrChangedNotify( pWrtShell );
}
}
@@ -1399,11 +1399,6 @@ void SwView::ReadUserDataSequence ( const uno::Sequence < beans::PropertyValue >
pValue->Value >>= bSelectedFrame;
bGotIsSelectedFrame = sal_True;
}
- else if (pValue->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "IsSelectedFrame" ) ) )
- {
- pValue->Value >>= bSelectedFrame;
- bGotIsSelectedFrame = sal_True;
- }
pValue++;
}
if (bGotVisibleBottom)
diff --git a/sw/source/ui/uiview/view.src b/sw/source/ui/uiview/view.src
index 7c47fe6ef208..9cf4f910f183 100644
--- a/sw/source/ui/uiview/view.src
+++ b/sw/source/ui/uiview/view.src
@@ -299,8 +299,8 @@ ToolBox RID_TOOLS_TOOLBOX
};
ToolBoxItem
{
- Identifier = FN_THESAURUS_DLG;
- HelpID = FN_THESAURUS_DLG;
+ Identifier = SID_THESAURUS;
+ HelpID = SID_THESAURUS;
Hide = TRUE;
};
ToolBoxItem
diff --git a/sw/source/ui/uiview/view0.cxx b/sw/source/ui/uiview/view0.cxx
index 52f94324437c..f7a12cc1b0be 100644
--- a/sw/source/ui/uiview/view0.cxx
+++ b/sw/source/ui/uiview/view0.cxx
@@ -117,6 +117,7 @@ SFX_IMPL_VIEWFACTORY(SwView)
SFX_IMPL_INTERFACE( SwView, SfxViewShell, SW_RES(RID_TOOLS_TOOLBOX) )
{
SFX_CHILDWINDOW_CONTEXT_REGISTRATION(SID_NAVIGATOR);
+ SFX_CHILDWINDOW_REGISTRATION(SID_TASKPANE);
SFX_CHILDWINDOW_REGISTRATION(SfxTemplateDialogWrapper::GetChildWindowId());
SFX_CHILDWINDOW_REGISTRATION(SvxSearchDialogWrapper::GetChildWindowId());
SFX_CHILDWINDOW_REGISTRATION(SwSpellDialogChildWindow::GetChildWindowId());
diff --git a/sw/source/ui/uiview/view2.cxx b/sw/source/ui/uiview/view2.cxx
index a38956cc5d68..3a7003ff7bca 100644..100755
--- a/sw/source/ui/uiview/view2.cxx
+++ b/sw/source/ui/uiview/view2.cxx
@@ -55,6 +55,7 @@
#include <editeng/langitem.hxx>
#include <svx/viewlayoutitem.hxx>
#include <svx/zoomslideritem.hxx>
+#include <svtools/xwindowitem.hxx>
#include <svx/htmlmode.hxx>
#include <vcl/svapp.hxx>
#include <vcl/wrkwin.hxx>
@@ -125,7 +126,6 @@
#include <dbmgr.hxx>
#include <PostItMgr.hxx>
-#include <postit.hxx>
#include <ndtxt.hxx> //#outline level,added by zhaojianwei
@@ -539,11 +539,12 @@ void __EXPORT SwView::Execute(SfxRequest &rReq)
// xmlsec05: new password dialog
Window* pParent;
const SfxPoolItem* pParentItem;
- if( SFX_ITEM_SET == pArgs->GetItemState( SID_ATTR_PARENTWINDOW, FALSE, &pParentItem ) )
- pParent = ( Window* ) ( ( const OfaPtrItem* ) pParentItem )->GetValue();
+ if( SFX_ITEM_SET == pArgs->GetItemState( SID_ATTR_XWINDOW, FALSE, &pParentItem ) )
+ pParent = ( ( const XWindowItem* ) pParentItem )->GetWindowPtr();
else
pParent = &GetViewFrame()->GetWindow();
SfxPasswordDialog aPasswdDlg( pParent );
+ aPasswdDlg.SetMinLen( 1 );
//#i69751# the result of Execute() can be ignored
aPasswdDlg.Execute();
String sNewPasswd( aPasswdDlg.GetPassword() );
@@ -575,11 +576,12 @@ void __EXPORT SwView::Execute(SfxRequest &rReq)
// message box for wrong password
Window* pParent;
const SfxPoolItem* pParentItem;
- if( pArgs && SFX_ITEM_SET == pArgs->GetItemState( SID_ATTR_PARENTWINDOW, FALSE, &pParentItem ) )
- pParent = ( Window* ) ( ( const OfaPtrItem* ) pParentItem )->GetValue();
+ if( pArgs && SFX_ITEM_SET == pArgs->GetItemState( SID_ATTR_XWINDOW, FALSE, &pParentItem ) )
+ pParent = ( ( const XWindowItem* ) pParentItem )->GetWindowPtr();
else
pParent = &GetViewFrame()->GetWindow();
SfxPasswordDialog aPasswdDlg( pParent );
+ aPasswdDlg.SetMinLen( 1 );
if(!aPasswd.getLength())
aPasswdDlg.ShowExtras(SHOWEXTRAS_CONFIRM);
if (aPasswdDlg.Execute())
@@ -1369,12 +1371,12 @@ void SwView::StateStatusLine(SfxItemSet &rSet)
{
ASSERT( !this,
"was ist das fuer ein Verzeichnis?" );
- sStr = pCurrSect->GetName();
+ sStr = pCurrSect->GetSectionName();
}
}
break;
default:
- sStr = pCurrSect->GetName();
+ sStr = pCurrSect->GetSectionName();
break;
}
}
@@ -1760,8 +1762,10 @@ void SwView::ExecuteStatusLine(SfxRequest &rReq)
break;
case SID_ATTR_INSERT:
SwPostItMgr* pMgr = GetPostItMgr();
- if (pMgr && pMgr->GetActivePostIt())
- pMgr->GetActivePostIt()->ToggleInsMode();
+ if ( pMgr && pMgr->HasActiveSidebarWin() )
+ {
+ pMgr->ToggleInsModeOnActiveSidebarWin();
+ }
else
rSh.ToggleInsMode();
bUp = TRUE;
@@ -1776,9 +1780,6 @@ void SwView::ExecuteStatusLine(SfxRequest &rReq)
}
}
-
-
-
void SwView::InsFrmMode(USHORT nCols)
{
if ( pWrtShell->HasWholeTabSelection() )
diff --git a/sw/source/ui/uiview/viewdraw.cxx b/sw/source/ui/uiview/viewdraw.cxx
index 7e35ca0049df..abae753c1b56 100644
--- a/sw/source/ui/uiview/viewdraw.cxx
+++ b/sw/source/ui/uiview/viewdraw.cxx
@@ -520,7 +520,8 @@ sal_Bool SwView::EnterDrawTextMode(const Point& aDocPos)
/******************************************************************************
* Beschreibung: DrawTextEditMode einschalten
******************************************************************************/
-sal_Bool SwView::BeginTextEdit(SdrObject* pObj, SdrPageView* pPV, Window* pWin, sal_Bool bIsNewObj)
+sal_Bool SwView::BeginTextEdit(SdrObject* pObj, SdrPageView* pPV, Window* pWin,
+ bool bIsNewObj, bool bSetSelectionToStart)
{
SwWrtShell *pSh = &GetWrtShell();
SdrView *pSdrView = pSh->GetDrawView();
@@ -606,7 +607,11 @@ sal_Bool SwView::BeginTextEdit(SdrObject* pObj, SdrPageView* pPV, Window* pWin,
Color aBackground(pSh->GetShapeBackgrd());
pView->SetBackgroundColor(aBackground);
}
+
+ // editing should start at the end of text, spell checking at the beginning ...
ESelection aNewSelection(EE_PARA_NOT_FOUND, EE_INDEX_NOT_FOUND, EE_PARA_NOT_FOUND, EE_INDEX_NOT_FOUND);
+ if (bSetSelectionToStart)
+ aNewSelection = ESelection();
pView->SetSelection(aNewSelection);
}
diff --git a/sw/source/ui/uiview/viewling.cxx b/sw/source/ui/uiview/viewling.cxx
index 04414b5d83db..b3f73f7c38e4 100644
--- a/sw/source/ui/uiview/viewling.cxx
+++ b/sw/source/ui/uiview/viewling.cxx
@@ -120,7 +120,7 @@ void SwView::ExecLingu(SfxRequest &rReq)
{
switch(rReq.GetSlot())
{
- case FN_THESAURUS_DLG:
+ case SID_THESAURUS:
StartThesaurus();
rReq.Ignore();
break;
@@ -252,64 +252,31 @@ void SwView::StartTextConversion(
// do not do text conversion if it is active elsewhere
if (GetWrtShell().HasConvIter())
{
-// MessBox( 0, WB_OK, String( SW_RES( STR_SPELL_TITLE ) ),
-// String( SW_RES( STR_MULT_INTERACT_SPELL_WARN ) ) ).Execute();
return;
}
-/*
- SfxErrorContext aContext( ERRCTX_SVX_LINGU_SPELLING, aEmptyStr, pEditWin,
- RID_SVXERRCTX, DIALOG_MGR() );
- Reference< XSpellChecker1 > xSpell = ::GetSpellChecker();
- if(!xSpell.is())
- { // keine Arme keine Kekse
- ErrorHandler::HandleError( ERRCODE_SVX_LINGU_LINGUNOTEXISTS );
- return;
- }
-*/
SpellKontext(sal_True);
- SwViewOption* pVOpt = (SwViewOption*)pWrtShell->GetViewOptions();
- sal_Bool bOldIdle = pVOpt->IsIdle();
+ const SwViewOption* pVOpt = pWrtShell->GetViewOptions();
+ const sal_Bool bOldIdle = pVOpt->IsIdle();
pVOpt->SetIdle( sal_False );
sal_Bool bOldIns = pWrtShell->IsInsMode();
pWrtShell->SetInsMode( sal_True );
+ sal_Bool bSelection = ((SwCrsrShell*)pWrtShell)->HasSelection() ||
+ pWrtShell->GetCrsr() != pWrtShell->GetCrsr()->GetNext();
- {
- sal_Bool bSelection = ((SwCrsrShell*)pWrtShell)->HasSelection() ||
- pWrtShell->GetCrsr() != pWrtShell->GetCrsr()->GetNext();
-
-// sal_Bool bIsSpellSpecial = sal_True;
-
- sal_Bool bStart = bSelection || pWrtShell->IsStartOfDoc();
- sal_Bool bOther = !bSelection && !(pWrtShell->GetFrmType(0,sal_True) & FRMTYPE_BODY);
+ sal_Bool bStart = bSelection || pWrtShell->IsStartOfDoc();
+ sal_Bool bOther = !bSelection && !(pWrtShell->GetFrmType(0,sal_True) & FRMTYPE_BODY);
-/*
- if( bOther && !bIsSpellSpecial )
- // kein Sonderbereich eingeschaltet
- {
- // Ich will auch in Sonderbereichen trennen
- QueryBox aBox( &GetEditWin(), SW_RES( DLG_SPECIAL_FORCED ) );
- if( aBox.Execute() == RET_YES && xProp.is())
- {
- sal_Bool bTrue = sal_True;
- Any aTmp(&bTrue, ::getBooleanCppuType());
- xProp->setPropertyValue( C2U(UPN_IS_SPELL_SPECIAL), aTmp );
- }
- else
- return; // Nein Es wird nicht gespellt
- }
-*/
- {
- const uno::Reference< lang::XMultiServiceFactory > xMgr(
- comphelper::getProcessServiceFactory() );
- SwHHCWrapper aWrap( this, xMgr, nSourceLang, nTargetLang, pTargetFont,
- nOptions, bIsInteractive,
- bStart, bOther, bSelection );
- aWrap.Convert();
- }
+ {
+ const uno::Reference< lang::XMultiServiceFactory > xMgr(
+ comphelper::getProcessServiceFactory() );
+ SwHHCWrapper aWrap( this, xMgr, nSourceLang, nTargetLang, pTargetFont,
+ nOptions, bIsInteractive,
+ bStart, bOther, bSelection );
+ aWrap.Convert();
}
pWrtShell->SetInsMode( bOldIns );
@@ -557,16 +524,77 @@ void SwView::HyphenateDocument()
}
/*--------------------------------------------------------------------
+ --------------------------------------------------------------------*/
+
+bool SwView::IsValidSelectionForThesaurus() const
+{
+ // must not be a multi-selection, and if it is a selection it needs
+ // to be within a single paragraph
+
+ const bool bMultiSel = pWrtShell->GetCrsr() != pWrtShell->GetCrsr()->GetNext();
+ const sal_Bool bSelection = ((SwCrsrShell*)pWrtShell)->HasSelection();
+ return !bMultiSel && (!bSelection || pWrtShell->IsSelOnePara() );
+}
+
+
+String SwView::GetThesaurusLookUpText( bool bSelection ) const
+{
+ return bSelection ? pWrtShell->GetSelTxt() : pWrtShell->GetCurWord();
+}
+
+
+void SwView::InsertThesaurusSynonym( const String &rSynonmText, const String &rLookUpText, bool bSelection )
+{
+ sal_Bool bOldIns = pWrtShell->IsInsMode();
+ pWrtShell->SetInsMode( sal_True );
+
+ pWrtShell->StartAllAction();
+ pWrtShell->StartUndo(UNDO_DELETE);
+
+ if( !bSelection )
+ {
+ if(pWrtShell->IsEndWrd())
+ pWrtShell->Left(CRSR_SKIP_CELLS, FALSE, 1, FALSE );
+
+ pWrtShell->SelWrd();
+
+ // make sure the selection build later from the
+ // data below does not include footnotes and other
+ // "in word" character to the left and right in order
+ // to preserve those. Therefore count those "in words"
+ // in order to modify the selection accordingly.
+ const sal_Unicode* pChar = rLookUpText.GetBuffer();
+ xub_StrLen nLeft = 0;
+ while (pChar && *pChar++ == CH_TXTATR_INWORD)
+ ++nLeft;
+ pChar = rLookUpText.Len() ? rLookUpText.GetBuffer() + rLookUpText.Len() - 1 : 0;
+ xub_StrLen nRight = 0;
+ while (pChar && *pChar-- == CH_TXTATR_INWORD)
+ ++nRight;
+
+ // adjust existing selection
+ SwPaM *pCrsr = pWrtShell->GetCrsr();
+ pCrsr->GetPoint()->nContent/*.nIndex*/ -= nRight;
+ pCrsr->GetMark()->nContent/*.nIndex*/ += nLeft;
+ }
+
+ pWrtShell->Insert( rSynonmText );
+
+ pWrtShell->EndUndo(UNDO_DELETE);
+ pWrtShell->EndAllAction();
+
+ pWrtShell->SetInsMode( bOldIns );
+}
+
+
+/*--------------------------------------------------------------------
Beschreibung: Thesaurus starten
--------------------------------------------------------------------*/
void SwView::StartThesaurus()
{
- if( pWrtShell->GetCrsr() != pWrtShell->GetCrsr()->GetNext() )
- return;
- sal_Bool bSelection = ((SwCrsrShell*)pWrtShell)->HasSelection();
- if( bSelection && !pWrtShell->IsSelOnePara() )
+ if (!IsValidSelectionForThesaurus())
return;
SfxErrorContext aContext( ERRCTX_SVX_LINGU_THESAURUS, aEmptyStr, pEditWin,
@@ -589,114 +617,32 @@ void SwView::StartThesaurus()
sal_Bool bOldIdle = pVOpt->IsIdle();
pVOpt->SetIdle( sal_False );
-#ifdef TL_NEVER
-//!!! hier mu� noch was getan werden... (Umsetzung der Funktionalitaet)
- // ErrorLink setzen, alten merken
- Link aOldLnk = pSpell->ChgErrorLink(LINK(this, SwView, SpellError));
-#endif
-
-
// get initial LookUp text
- String aTmp = bSelection ?
- pWrtShell->GetSelTxt() : pWrtShell->GetCurWord();
+ const sal_Bool bSelection = ((SwCrsrShell*)pWrtShell)->HasSelection();
+ String aTmp = GetThesaurusLookUpText( bSelection );
Reference< XThesaurus > xThes( ::GetThesaurus() );
AbstractThesaurusDialog *pDlg = NULL;
if ( !xThes.is() || !xThes->hasLocale( SvxCreateLocale( eLang ) ) )
- {
SpellError( &eLang );
- }
else
{
// create dialog
{ //Scope for SwWait-Object
SwWait aWait( *GetDocShell(), sal_True );
+ // load library with dialog only on demand ...
SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
- pDlg = pFact->CreateThesaurusDialog( &GetEditWin(),
- xThes, aTmp, eLang );
- }
-
- {
- // Hier wird der Thesaurus-Dialog im Applikationsfenster zentriert,
- // und zwar oberhalb oder unterhalb der Cursorposition, je nachdem,
- // wo mehr Platz ist.
-
- // Current Word:
- SwRect aRect( pWrtShell->GetCharRect() );
- Point aTopPos = aRect.Pos();
- Point aBtmPos( aTopPos.X(), aRect.Bottom() );
- aTopPos = GetEditWin().LogicToPixel( aTopPos );
- aTopPos = GetEditWin().OutputToScreenPixel( aTopPos );
- aBtmPos = GetEditWin().LogicToPixel( aBtmPos );
- aBtmPos = GetEditWin().OutputToScreenPixel( aBtmPos );
- // ::frame::Desktop:
- Rectangle aRct = GetEditWin().GetDesktopRectPixel();
- Point aWinTop( aRct.TopLeft() );
- Point aWinBtm( aRct.BottomRight() );
- if ( aTopPos.Y() - aWinTop.Y() > aWinBtm.Y() - aBtmPos.Y() )
- aWinBtm.Y() = aTopPos.Y();
- else
- aWinTop.Y() = aBtmPos.Y();
-
- Size aSz = pDlg->GetWindow()->GetSizePixel();
- if ( aWinBtm.Y() - aWinTop.Y() > aSz.Height() )
- {
- aWinTop.X() = ( aWinTop.X() + aWinBtm.X() - aSz.Width() ) / 2;
- aWinTop.Y() = ( aWinTop.Y() + aWinBtm.Y() - aSz.Height() ) / 2;
- pDlg->GetWindow()->SetPosPixel( aWinTop );
- }
+ pDlg = pFact->CreateThesaurusDialog( &GetEditWin(), xThes, aTmp, eLang );
}
if ( pDlg->Execute()== RET_OK )
- {
- sal_Bool bOldIns = pWrtShell->IsInsMode();
- pWrtShell->SetInsMode( sal_True );
-
- pWrtShell->StartAllAction();
- pWrtShell->StartUndo(UNDO_DELETE);
-
- if( !bSelection )
- {
- if(pWrtShell->IsEndWrd())
- pWrtShell->Left(CRSR_SKIP_CELLS, FALSE, 1, FALSE );
-
- pWrtShell->SelWrd();
-
- // make sure the selection build later from the
- // data below does not include footnotes and other
- // "in word" character to the left and right in order
- // to preserve those. Therefore count those "in words"
- // in order to modify the selection accordingly.
- const sal_Unicode* pChar = aTmp.GetBuffer();
- xub_StrLen nLeft = 0;
- while (pChar && *pChar++ == CH_TXTATR_INWORD)
- ++nLeft;
- pChar = aTmp.Len() ? aTmp.GetBuffer() + aTmp.Len() - 1 : 0;
- xub_StrLen nRight = 0;
- while (pChar && *pChar-- == CH_TXTATR_INWORD)
- ++nRight;
-
- // adjust existing selection
- SwPaM *pCrsr = pWrtShell->GetCrsr();
- pCrsr->GetPoint()->nContent/*.nIndex*/ -= nRight;
- pCrsr->GetMark()->nContent/*.nIndex*/ += nLeft;
- }
-
- pWrtShell->Insert( pDlg->GetWord() );
-
- pWrtShell->EndUndo(UNDO_DELETE);
- pWrtShell->EndAllAction();
-
- pWrtShell->SetInsMode( bOldIns );
-
- }
+ InsertThesaurusSynonym( pDlg->GetWord(), aTmp, bSelection );
}
delete pDlg;
pVOpt->SetIdle( bOldIdle );
-
}
/*--------------------------------------------------------------------
diff --git a/sw/source/ui/uiview/viewmdi.cxx b/sw/source/ui/uiview/viewmdi.cxx
index d3c5d54d8743..9dfa8e79ecfa 100644
--- a/sw/source/ui/uiview/viewmdi.cxx
+++ b/sw/source/ui/uiview/viewmdi.cxx
@@ -82,7 +82,6 @@
#include <IDocumentSettingAccess.hxx>
#include <PostItMgr.hxx>
-#include <postit.hxx>
USHORT SwView::nMoveType = NID_PGE;
sal_Int32 SwView::nActMark = 0;
@@ -241,12 +240,12 @@ void SwView::_SetZoom( const Size &rEditSize, SvxZoomType eZoomType,
if( bUnLockView )
pWrtShell->LockView( FALSE );
- if ( mpPostItMgr )
- {
- mpPostItMgr->Rescale();
- mpPostItMgr->CalcRects();
- mpPostItMgr->LayoutPostIts();
- }
+// if ( mpPostItMgr )
+// {
+// mpPostItMgr->Rescale();
+// mpPostItMgr->CalcRects();
+// mpPostItMgr->LayoutPostIts();
+// }
// eZoom = eZoomType;
}
@@ -489,15 +488,15 @@ IMPL_STATIC_LINK( SwView, MoveNavigationHdl, bool *, pbNext )
break;
case NID_POSTIT:
{
- SwMarginWin* pPostIt = pThis->GetPostItMgr()->GetActivePostIt();
+ sw::sidebarwindows::SwSidebarWin* pPostIt = pThis->GetPostItMgr()->GetActiveSidebarWin();
if (pPostIt)
- pThis->GetPostItMgr()->SetActivePostIt(0);
+ pThis->GetPostItMgr()->SetActiveSidebarWin(0);
SwFieldType* pFldType = rSh.GetFldType(0, RES_POSTITFLD);
if (rSh.MoveFldType(pFldType, bNext))
pThis->GetViewFrame()->GetDispatcher()->Execute(FN_POSTIT);
else
//first/last item
- pThis->GetPostItMgr()->SetActivePostIt(pPostIt);
+ pThis->GetPostItMgr()->SetActiveSidebarWin(pPostIt);
}
break;
case NID_SRCH_REP:
diff --git a/sw/source/ui/uiview/viewsrch.cxx b/sw/source/ui/uiview/viewsrch.cxx
index b12fc6280cc9..57c7bd20623c 100644
--- a/sw/source/ui/uiview/viewsrch.cxx
+++ b/sw/source/ui/uiview/viewsrch.cxx
@@ -602,7 +602,7 @@ void SwView::Replace()
}
else
{
- if (GetPostItMgr()->GetActivePostIt())
+ if (GetPostItMgr()->HasActiveSidebarWin())
GetPostItMgr()->Replace(pSrchItem);
sal_Bool bReplaced = pWrtShell->SwEditShell::Replace( pSrchItem->GetReplaceString(),
pSrchItem->GetRegExp());
diff --git a/sw/source/ui/uiview/viewstat.cxx b/sw/source/ui/uiview/viewstat.cxx
index 23415b630252..b0d5f71744c9 100644..100755
--- a/sw/source/ui/uiview/viewstat.cxx
+++ b/sw/source/ui/uiview/viewstat.cxx
@@ -269,12 +269,10 @@ void SwView::GetState(SfxItemSet &rSet)
}
break;
case FN_REDLINE_ON:
- rSet.Put( SfxBoolItem( nWhich, (pWrtShell->GetRedlineMode() & nsRedlineMode_t::REDLINE_ON) != 0 ) );
- break;
+ rSet.Put( SfxBoolItem( nWhich, GetDocShell()->IsChangeRecording() ) );
+ break;
case FN_REDLINE_PROTECT :
- {
- rSet.Put( SfxBoolItem( nWhich, pWrtShell->getIDocumentRedlineAccess()->GetRedlinePassword().getLength() > 0 ) );
- }
+ rSet.Put( SfxBoolItem( nWhich, GetDocShell()->HasChangeRecordProtection() ) );
break;
case FN_REDLINE_SHOW:
{
@@ -303,7 +301,7 @@ void SwView::GetState(SfxItemSet &rSet)
rSet.DisableItem( nWhich );
}
break;
- case FN_THESAURUS_DLG:
+ case SID_THESAURUS:
{
SwWrtShell &rSh = GetWrtShell();
if (2 <= rSh.GetCrsrCnt()) // multi selection?
diff --git a/sw/source/ui/uiview/viewtab.cxx b/sw/source/ui/uiview/viewtab.cxx
index 7088347480a8..44e314a7475b 100644
--- a/sw/source/ui/uiview/viewtab.cxx
+++ b/sw/source/ui/uiview/viewtab.cxx
@@ -422,7 +422,8 @@ void SwView::ExecTabWin( SfxRequest& rReq )
::ResizeFrameCols(aCols, aSectRect.Width(), aSectRect.Width() - nDiffWidth, nLeftDiff );
aSet.Put( aCols );
}
- rSh.ChgSection( rSh.GetSectionFmtPos(*pSectFmt), *pCurrSect, &aSet );
+ SwSectionData aData(*pCurrSect);
+ rSh.UpdateSection(rSh.GetSectionFmtPos(*pSectFmt), aData, &aSet);
}
else
{ // Seitenraender einstellen
@@ -511,8 +512,8 @@ void SwView::ExecTabWin( SfxRequest& rReq )
::ResizeFrameCols(aCols, aSectRect.Height(), aSectRect.Height() - nDiffWidth, nLeftDiff );
aSet.Put( aCols );
}
- rSh.ChgSection( rSh.GetSectionFmtPos(*pSectFmt), *pCurrSect, &aSet );
-
+ SwSectionData aData(*pCurrSect);
+ rSh.UpdateSection(rSh.GetSectionFmtPos(*pSectFmt), aData, &aSet);
}
else
{ SwPageDesc aDesc( rDesc );
diff --git a/sw/source/ui/uno/SwXDocumentSettings.cxx b/sw/source/ui/uno/SwXDocumentSettings.cxx
index 63a674e0efad..b0ad816df4a1 100644
--- a/sw/source/ui/uno/SwXDocumentSettings.cxx
+++ b/sw/source/ui/uno/SwXDocumentSettings.cxx
@@ -122,8 +122,9 @@ enum SwDocumentSettingsPropertyHandles
HANDLE_PROTECT_FORM,
HANDLE_TABS_RELATIVE_TO_INDENT,
// --> OD 2008-06-05 #i89181#
- HANDLE_TAB_AT_LEFT_INDENT_FOR_PARA_IN_LIST
+ HANDLE_TAB_AT_LEFT_INDENT_FOR_PARA_IN_LIST,
// <--
+ HANDLE_MODIFYPASSWORDINFO
};
MasterPropertySetInfo * lcl_createSettingsInfo()
@@ -177,6 +178,7 @@ MasterPropertySetInfo * lcl_createSettingsInfo()
{ RTL_CONSTASCII_STRINGPARAM("ProtectForm"), HANDLE_PROTECT_FORM, CPPUTYPE_BOOLEAN, 0, 0},
// --> OD 2008-06-05 #i89181#
{ RTL_CONSTASCII_STRINGPARAM("TabAtLeftIndentForParagraphsInList"), HANDLE_TAB_AT_LEFT_INDENT_FOR_PARA_IN_LIST, CPPUTYPE_BOOLEAN, 0, 0},
+ { RTL_CONSTASCII_STRINGPARAM("ModifyPasswordInfo"), HANDLE_MODIFYPASSWORDINFO, CPPUTYPE_PROPERTYVALUE, 0, 0},
/*
* As OS said, we don't have a view when we need to set this, so I have to
@@ -671,6 +673,21 @@ void SwXDocumentSettings::_setSingleValue( const comphelper::PropertyInfo & rInf
}
break;
// <--
+ case HANDLE_MODIFYPASSWORDINFO:
+ {
+ uno::Sequence< beans::PropertyValue > aInfo;
+ if ( !( rValue >>= aInfo ) )
+ throw lang::IllegalArgumentException(
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Value of type Sequence<PropertyValue> expected!" ) ),
+ uno::Reference< uno::XInterface >(),
+ 2 );
+
+ if ( !mpDocSh->SetModifyPasswordInfo( aInfo ) )
+ throw beans::PropertyVetoException(
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "The hash is not allowed to be changed now!" ) ),
+ uno::Reference< uno::XInterface >() );
+ }
+ break;
default:
throw UnknownPropertyException();
}
@@ -998,6 +1015,11 @@ void SwXDocumentSettings::_getSingleValue( const comphelper::PropertyInfo & rInf
}
break;
// <--
+ case HANDLE_MODIFYPASSWORDINFO:
+ {
+ rValue <<= mpDocSh->GetModifyPasswordInfo();
+ }
+ break;
default:
throw UnknownPropertyException();
diff --git a/sw/source/ui/uno/makefile.mk b/sw/source/ui/uno/makefile.mk
index 32210b2162d6..0023fd52f55c 100644
--- a/sw/source/ui/uno/makefile.mk
+++ b/sw/source/ui/uno/makefile.mk
@@ -59,8 +59,7 @@ SLO1FILES = \
$(SLO)$/SwXFilterOptions.obj\
$(SLO)$/RefreshListenerContainer.obj \
$(SLO)$/unomodule.obj \
- $(SLO)$/unodoc.obj \
- $(SLO)$/warnpassword.obj
+ $(SLO)$/unodoc.obj
SLO2FILES = \
$(SLO)$/swdetect.obj \
diff --git a/sw/source/ui/uno/swdetect.cxx b/sw/source/ui/uno/swdetect.cxx
index 4b86b9f76add..aa54b4707935 100644
--- a/sw/source/ui/uno/swdetect.cxx
+++ b/sw/source/ui/uno/swdetect.cxx
@@ -167,7 +167,7 @@ SwFilterDetect::~SwFilterDetect()
lDescriptor[nProperty].Value >>= xInteraction;
nIndexOfInteractionHandler = nProperty;
}
- else if( lDescriptor[nProperty].Name == OUString(RTL_CONSTASCII_USTRINGPARAM("RapairPackage")) )
+ else if( lDescriptor[nProperty].Name == OUString(RTL_CONSTASCII_USTRINGPARAM("RepairPackage")) )
lDescriptor[nProperty].Value >>= bRepairPackage;
else if( lDescriptor[nProperty].Name == OUString(RTL_CONSTASCII_USTRINGPARAM("DocumentTitle")) )
nIndexOfDocumentTitle = nProperty;
diff --git a/sw/source/ui/uno/unotxdoc.cxx b/sw/source/ui/uno/unotxdoc.cxx
index c818affa9398..0579d180a04c 100644..100755
--- a/sw/source/ui/uno/unotxdoc.cxx
+++ b/sw/source/ui/uno/unotxdoc.cxx
@@ -35,6 +35,7 @@
#include <vcl/print.hxx>
#include <sfx2/viewfrm.hxx>
#include <sfx2/sfxbasecontroller.hxx>
+#include <sfx2/docfile.hxx>
#include <toolkit/helper/vclunohelper.hxx>
#include <toolkit/awt/vclxdevice.hxx>
#include <cmdid.h>
@@ -113,6 +114,8 @@
#include <drawdoc.hxx>
#include <SwStyleNameMapper.hxx>
#include <osl/file.hxx>
+#include <comphelper/storagehelper.hxx>
+
// --> FME 2004-06-08 #i12836# enhanced pdf export
#include <EnhancedPDFExportHelper.hxx>
@@ -2709,6 +2712,8 @@ sal_Int32 SAL_CALL SwXTextDocument::getRendererCount(
const TypeId aSwViewTypeId = TYPE(SwView);
if (pView->IsA(aSwViewTypeId))
{
+ if (m_pRenderData && m_pRenderData->NeedNewViewOptionAdjust( *pWrtShell ) )
+ m_pRenderData->ViewOptionAdjustStop();
if (m_pRenderData && !m_pRenderData->IsViewOptionAdjust())
m_pRenderData->ViewOptionAdjustStart( *pWrtShell, *pWrtShell->GetViewOptions() );
}
@@ -2811,6 +2816,7 @@ uno::Sequence< beans::PropertyValue > SAL_CALL SwXTextDocument::getRenderer(
m_pPrintUIOptions->processProperties( rxOptions );
const bool bPrintProspect = m_pPrintUIOptions->getBoolValue( "PrintProspect", false );
const bool bIsSkipEmptyPages = !m_pPrintUIOptions->IsPrintEmptyPages( bIsPDFExport );
+ const bool bPrintPaperFromSetup = m_pPrintUIOptions->getBoolValue( "PrintPaperFromSetup", false );
SwDoc *pDoc = GetRenderDoc( pView, rSelection, bIsPDFExport );
DBG_ASSERT( pDoc && pView, "doc or view shell missing!" );
@@ -2838,7 +2844,21 @@ uno::Sequence< beans::PropertyValue > SAL_CALL SwXTextDocument::getRenderer(
uno::Sequence< beans::PropertyValue > aRenderer;
if (m_pRenderData)
{
+ const USHORT nPage = nRenderer + 1;
+
+ // get paper tray to use ...
+ sal_Int32 nPrinterPaperTray = -1;
+ if (! bPrintPaperFromSetup)
+ {
+ // ... from individual page style (see the page tab in Format/Page dialog)
+ const std::map< sal_Int32, sal_Int32 > &rPaperTrays = m_pRenderData->GetPrinterPaperTrays();
+ std::map< sal_Int32, sal_Int32 >::const_iterator aIt( rPaperTrays.find( nPage ) );
+ if (aIt != rPaperTrays.end())
+ nPrinterPaperTray = aIt->second;
+ }
+
awt::Size aPageSize;
+ awt::Size aPreferredPageSize;
Size aTmpSize;
if (bIsSwSrcView || bPrintProspect)
{
@@ -2856,36 +2876,49 @@ uno::Sequence< beans::PropertyValue > SAL_CALL SwXTextDocument::getRenderer(
Printer *pPrinter = dynamic_cast< Printer * >(lcl_GetOutputDevice( *m_pPrintUIOptions ));
if (pPrinter)
{
+ // HTML source view and prospect adapt to the printer's paper size
+ aTmpSize = pPrinter->GetPaperSize();
+ aTmpSize = pPrinter->LogicToLogic( aTmpSize,
+ pPrinter->GetMapMode(), MapMode( MAP_100TH_MM ));
+ aPageSize = awt::Size( aTmpSize.Width(), aTmpSize.Height() );
if (bPrintProspect)
{
- aTmpSize = pDoc->GetPageSize( USHORT(nRenderer + 1), bIsSkipEmptyPages );
// we just state what output size we would need
- // the rest is nowadays up to vcl
- aPageSize = awt::Size ( TWIP_TO_MM100( 2 * aTmpSize.Width() ),
- TWIP_TO_MM100( aTmpSize.Height() ));
- }
- else
- {
- // printing HTML source view
- aTmpSize = pPrinter->GetPaperSize();
- aTmpSize = pPrinter->LogicToLogic( aTmpSize,
- pPrinter->GetMapMode(), MapMode( MAP_100TH_MM ));
- aPageSize = awt::Size( aTmpSize.Width(), aTmpSize.Height() );
+ // which may cause vcl to set that page size on the printer
+ // (if available and not overriden by the user)
+ aTmpSize = pDoc->GetPageSize( nPage, bIsSkipEmptyPages );
+ aPreferredPageSize = awt::Size ( TWIP_TO_MM100( 2 * aTmpSize.Width() ),
+ TWIP_TO_MM100( aTmpSize.Height() ));
}
}
}
else
{
- aTmpSize = pDoc->GetPageSize( USHORT(nRenderer + 1), bIsSkipEmptyPages );
+ aTmpSize = pDoc->GetPageSize( nPage, bIsSkipEmptyPages );
aPageSize = awt::Size ( TWIP_TO_MM100( aTmpSize.Width() ),
TWIP_TO_MM100( aTmpSize.Height() ));
}
+ sal_Int32 nLen = 2;
aRenderer.realloc(2);
aRenderer[0].Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "PageSize" ) );
aRenderer[0].Value <<= aPageSize;
aRenderer[1].Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "PageIncludesNonprintableArea" ) );
aRenderer[1].Value <<= sal_True;
+ if (aPreferredPageSize.Width && aPreferredPageSize.Height)
+ {
+ ++nLen;
+ aRenderer.realloc( nLen );
+ aRenderer[ nLen - 1 ].Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "PreferredPageSize" ) );
+ aRenderer[ nLen - 1 ].Value <<= aPreferredPageSize;
+ }
+ if (nPrinterPaperTray >= 0)
+ {
+ ++nLen;
+ aRenderer.realloc( nLen );
+ aRenderer[ nLen - 1 ].Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "PrinterPaperTray" ) );
+ aRenderer[ nLen - 1 ].Value <<= nPrinterPaperTray;
+ }
}
m_pPrintUIOptions->appendPrintUIOptions( aRenderer );
@@ -3073,6 +3106,12 @@ void SAL_CALL SwXTextDocument::render(
{
lcl_DisposeView( m_pHiddenViewFrame, pDocShell );
m_pHiddenViewFrame = 0;
+
+ // prevent crash described in #i108805
+ SwDocShell *pRenderDocShell = pDoc->GetDocShell();
+ SfxItemSet *pSet = pRenderDocShell->GetMedium()->GetItemSet();
+ pSet->Put( SfxBoolItem( SID_HIDDEN, sal_False ) );
+
}
}
}
@@ -3115,16 +3154,13 @@ uno::Reference< util::XCloneable > SwXTextDocument::createClone( ) throw (uno::
if(!IsValid())
throw RuntimeException();
//create a new document - hidden - copy the storage and return it
- SwDoc* pCopyDoc = pDocShell->GetDoc()->CreateCopy();
- SfxObjectShell* pShell = new SwDocShell( pCopyDoc, SFX_CREATE_MODE_STANDARD );
- pShell->DoInitNew();
-
- uno::Reference< embed::XStorage > xSourceStorage = getDocumentStorage();
+ SfxObjectShell* pShell = pDocShell->GetDoc()->CreateCopy(false);
uno::Reference< frame::XModel > xNewModel = pShell->GetModel();
- //copy this storage
+ uno::Reference< embed::XStorage > xNewStorage = ::comphelper::OStorageHelper::GetTemporaryStorage( );
+ uno::Sequence< beans::PropertyValue > aTempMediaDescriptor;
+ storeToStorage( xNewStorage, aTempMediaDescriptor );
uno::Reference< document::XStorageBasedDocument > xStorageDoc( xNewModel, uno::UNO_QUERY );
- uno::Reference< embed::XStorage > xNewStorage = xStorageDoc->getDocumentStorage();
- xSourceStorage->copyToStorage( xNewStorage );
+ xStorageDoc->loadFromStorage( xNewStorage, aTempMediaDescriptor );
return uno::Reference< util::XCloneable >( xNewModel, UNO_QUERY );
}
/* -----------------------------20.06.00 09:54--------------------------------
diff --git a/sw/source/ui/uno/unotxvw.cxx b/sw/source/ui/uno/unotxvw.cxx
index 24049e571f60..1f1fc9149e34 100644
--- a/sw/source/ui/uno/unotxvw.cxx
+++ b/sw/source/ui/uno/unotxvw.cxx
@@ -710,7 +710,7 @@ uno::Reference< form::runtime::XFormController > SAL_CALL SwXTextView::getFormCo
FmFormShell* pFormShell = pView2 ? pView2->GetFormShell() : NULL;
SdrView* pDrawView = pView2 ? pView2->GetDrawView() : NULL;
Window* pWindow = pView2 ? pView2->GetWrtShell().GetWin() : NULL;
- DBG_ASSERT( pFormShell && pDrawView && pWindow, "SwXTextView::GetControl: how could I?" );
+ DBG_ASSERT( pFormShell && pDrawView && pWindow, "SwXTextView::getFormController: how could I?" );
uno::Reference< form::runtime::XFormController > xController;
if ( pFormShell && pDrawView && pWindow )
@@ -905,12 +905,12 @@ void SAL_CALL SwXTextView::setRubyList(
-----------------------------------------------------------------------*/
SfxObjectShellRef SwXTextView::BuildTmpSelectionDoc( SfxObjectShellRef& /*rRef*/ )
{
- SwWrtShell* pOldSh = &m_pView->GetWrtShell();
- SfxPrinter *pPrt = pOldSh->getIDocumentDeviceAccess()->getPrinter( false );
+ SwWrtShell& rOldSh = m_pView->GetWrtShell();
+ SfxPrinter *pPrt = rOldSh.getIDocumentDeviceAccess()->getPrinter( false );
SwDocShell* pDocSh;
SfxObjectShellRef xDocSh( pDocSh = new SwDocShell( /*pPrtDoc, */SFX_CREATE_MODE_STANDARD ) );
xDocSh->DoInitNew( 0 );
- pOldSh->FillPrtDoc(pDocSh->GetDoc(), pPrt);
+ rOldSh.FillPrtDoc(pDocSh->GetDoc(), pPrt);
SfxViewFrame* pDocFrame = SfxViewFrame::LoadHiddenDocument( *xDocSh, 0 );
SwView* pDocView = (SwView*) pDocFrame->GetViewShell();
pDocView->AttrChangedNotify( &pDocView->GetWrtShell() );//Damit SelectShell gerufen wird.
@@ -919,22 +919,19 @@ SfxObjectShellRef SwXTextView::BuildTmpSelectionDoc( SfxObjectShellRef& /*rRef*/
IDocumentDeviceAccess* pIDDA = pSh->getIDocumentDeviceAccess();
SfxPrinter* pTempPrinter = pIDDA->getPrinter( true );
- if( pOldSh )
- {
- const SwPageDesc& rCurPageDesc = pOldSh->GetPageDesc(pOldSh->GetCurPageDesc());
+ const SwPageDesc& rCurPageDesc = rOldSh.GetPageDesc(rOldSh.GetCurPageDesc());
- IDocumentDeviceAccess* pIDDA_old = pOldSh->getIDocumentDeviceAccess();
+ IDocumentDeviceAccess* pIDDA_old = rOldSh.getIDocumentDeviceAccess();
- if( pIDDA_old->getPrinter( false ) )
- {
- pIDDA->setJobsetup( *pIDDA_old->getJobsetup() );
- //#69563# if it isn't the same printer then the pointer has been invalidated!
- pTempPrinter = pIDDA->getPrinter( true );
- }
-
- pTempPrinter->SetPaperBin(rCurPageDesc.GetMaster().GetPaperBin().GetValue());
+ if( pIDDA_old->getPrinter( false ) )
+ {
+ pIDDA->setJobsetup( *pIDDA_old->getJobsetup() );
+ //#69563# if it isn't the same printer then the pointer has been invalidated!
+ pTempPrinter = pIDDA->getPrinter( true );
}
+ pTempPrinter->SetPaperBin(rCurPageDesc.GetMaster().GetPaperBin().GetValue());
+
return xDocSh;
}
diff --git a/sw/source/ui/uno/warnpassword.cxx b/sw/source/ui/uno/warnpassword.cxx
deleted file mode 100644
index cd121226a5f1..000000000000
--- a/sw/source/ui/uno/warnpassword.cxx
+++ /dev/null
@@ -1,86 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * 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.
- *
-+ ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_sw.hxx"
-// ============================================================================
-#include "warnpassword.hxx"
-#include <com/sun/star/task/XInteractionHandler.hpp>
-#include <svl/itemset.hxx>
-#include <sfx2/docfile.hxx>
-#include <sfx2/sfxsids.hrc>
-#include <ucbhelper/simpleinteractionrequest.hxx>
-#include <com/sun/star/ucb/InteractiveAppException.hpp>
-#include <svx/svxerr.hxx>
-
-using ::rtl::OUString;
-
-using namespace ::com::sun::star;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::ucb;
-using namespace ::com::sun::star::task;
-
-bool SwWarnPassword::WarningOnPassword( SfxMedium& rMedium )
-{
- bool bReturn = true;
- uno::Reference< task::XInteractionHandler > xHandler( rMedium.GetInteractionHandler());
- if( xHandler.is() )
- {
-
- OUString empty;
- uno::Any xException( makeAny(InteractiveAppException(empty,
- uno::Reference <XInterface> (),
- InteractionClassification_QUERY,
- ERRCODE_SVX_EXPORT_FILTER_CRYPT)));
-
- uno::Reference< ucbhelper::SimpleInteractionRequest > xRequest
- = new ucbhelper::SimpleInteractionRequest(
- xException,
- ucbhelper::CONTINUATION_APPROVE
- | ucbhelper::CONTINUATION_DISAPPROVE );
-
- xHandler->handle( xRequest.get() );
-
- const sal_Int32 nResp = xRequest->getResponse();
-
- switch ( nResp )
- {
- case ucbhelper::CONTINUATION_UNKNOWN:
- break;
-
- case ucbhelper::CONTINUATION_APPROVE:
- // Continue
- break;
-
- case ucbhelper::CONTINUATION_DISAPPROVE:
- bReturn = false;
- break;
- }
- }
- return bReturn;
-}
-
diff --git a/sw/source/ui/utlui/attrdesc.cxx b/sw/source/ui/utlui/attrdesc.cxx
index 06c1a580a73f..418ea4a4559b 100644
--- a/sw/source/ui/utlui/attrdesc.cxx
+++ b/sw/source/ui/utlui/attrdesc.cxx
@@ -683,13 +683,13 @@ SfxItemPresentation SwFmtAnchor::GetPresentation
switch ( GetAnchorId() )
{
case FLY_AT_PARA:
- nId = STR_FLY_AT_CNTNT;
+ nId = STR_FLY_AT_PARA;
break;
case FLY_AS_CHAR:
- nId = STR_FLY_IN_CNTNT;
+ nId = STR_FLY_AS_CHAR;
break;
case FLY_AT_PAGE:
- nId = STR_FLY_PAGE;
+ nId = STR_FLY_AT_PAGE;
break;
default:;//prevent warning
}
diff --git a/sw/source/ui/utlui/attrdesc.hrc b/sw/source/ui/utlui/attrdesc.hrc
index a750750566f3..1f2c5d34fa37 100644
--- a/sw/source/ui/utlui/attrdesc.hrc
+++ b/sw/source/ui/utlui/attrdesc.hrc
@@ -55,9 +55,9 @@
#define STR_FRM_WIDTH (RC_ATTR_BEGIN + 23)
#define STR_FRM_FIXEDHEIGHT (RC_ATTR_BEGIN + 24)
#define STR_FRM_MINHEIGHT (RC_ATTR_BEGIN + 25)
-#define STR_FLY_AT_CNTNT (RC_ATTR_BEGIN + 26)
-#define STR_FLY_IN_CNTNT (RC_ATTR_BEGIN + 27)
-#define STR_FLY_PAGE (RC_ATTR_BEGIN + 28)
+#define STR_FLY_AT_PARA (RC_ATTR_BEGIN + 26)
+#define STR_FLY_AS_CHAR (RC_ATTR_BEGIN + 27)
+#define STR_FLY_AT_PAGE (RC_ATTR_BEGIN + 28)
#define STR_POS_X (RC_ATTR_BEGIN + 29)
#define STR_POS_Y (RC_ATTR_BEGIN + 30)
#define STR_VERT_TOP (RC_ATTR_BEGIN + 31)
diff --git a/sw/source/ui/utlui/attrdesc.src b/sw/source/ui/utlui/attrdesc.src
index f1602efcacd8..809af110da6f 100644
--- a/sw/source/ui/utlui/attrdesc.src
+++ b/sw/source/ui/utlui/attrdesc.src
@@ -148,15 +148,15 @@ String STR_FRM_MINHEIGHT
/* ### ACHTUNG: Neuer Text in Resource? min. Hhe: : min. Hhe: */
Text [ en-US ] = "Min. height:" ;
};
-String STR_FLY_AT_CNTNT
+String STR_FLY_AT_PARA
{
Text [ en-US ] = "to paragraph" ;
};
-String STR_FLY_IN_CNTNT
+String STR_FLY_AS_CHAR
{
Text [ en-US ] = "to character" ;
};
-String STR_FLY_PAGE
+String STR_FLY_AT_PAGE
{
Text [ en-US ] = "to page" ;
};
diff --git a/sw/source/ui/utlui/content.cxx b/sw/source/ui/utlui/content.cxx
index 9be4ef6eadf3..0b0bca564f48 100644
--- a/sw/source/ui/utlui/content.cxx
+++ b/sw/source/ui/utlui/content.cxx
@@ -106,7 +106,6 @@
#include <swundo.hxx>
#include <ndtxt.hxx>
#include <PostItMgr.hxx>
-#include <postit.hxx>
#include <postithelper.hxx>
#include <redline.hxx>
#include <docary.hxx>
@@ -335,7 +334,8 @@ void SwContentType::Init(sal_Bool* pbInvalidateWindow)
(eTmpType = pFmt->GetSection()->GetType()) != TOX_CONTENT_SECTION
&& TOX_HEADER_SECTION != eTmpType )
{
- const String& rSectionName = pFmt->GetSection()->GetName();
+ const String& rSectionName =
+ pFmt->GetSection()->GetSectionName();
BYTE nLevel = 0;
SwSectionFmt* pParentFmt = pFmt->GetParent();
while(pParentFmt)
@@ -697,7 +697,7 @@ void SwContentType::FillMemberList(sal_Bool* pbLevelOrVisibiblityChanged)
(eTmpType = pFmt->GetSection()->GetType()) != TOX_CONTENT_SECTION
&& TOX_HEADER_SECTION != eTmpType )
{
- String sSectionName = pFmt->GetSection()->GetName();
+ String sSectionName = pFmt->GetSection()->GetSectionName();
BYTE nLevel = 0;
SwSectionFmt* pParentFmt = pFmt->GetParent();
@@ -2670,7 +2670,7 @@ void SwContentTree::ExcecuteContextMenuAction( USHORT nSelectedPopupEntry )
break;
case 602:
{
- pActiveShell->GetView().GetPostItMgr()->SetActivePostIt(0);
+ pActiveShell->GetView().GetPostItMgr()->SetActiveSidebarWin(0);
pActiveShell->GetView().GetPostItMgr()->Delete();
break;
}
@@ -2932,7 +2932,7 @@ void SwContentTree::EditEntry(SvLBoxEntry* pEntry, sal_uInt8 nMode)
{
if (((SwPostItContent*)pCnt)->IsPostIt())
{
- pActiveShell->GetView().GetPostItMgr()->SetActivePostIt(0);
+ pActiveShell->GetView().GetPostItMgr()->SetActiveSidebarWin(0);
pActiveShell->DelRight();
}
/*
@@ -3140,7 +3140,7 @@ void SwContentTree::GotoContent(SwContent* pCnt)
}
SwView& rView = pActiveShell->GetView();
rView.StopShellTimer();
- rView.GetPostItMgr()->SetActivePostIt(0);
+ rView.GetPostItMgr()->SetActiveSidebarWin(0);
rView.GetEditWin().GrabFocus();
}
/*-----------------06.02.97 19.14-------------------
diff --git a/sw/source/ui/utlui/glbltree.cxx b/sw/source/ui/utlui/glbltree.cxx
index fea4b72462e3..e9b8fdf6feef 100644
--- a/sw/source/ui/utlui/glbltree.cxx
+++ b/sw/source/ui/utlui/glbltree.cxx
@@ -32,18 +32,14 @@
#define _SVSTDARR_STRINGSDTOR
#include <svl/svstdarr.hxx>
#endif
-#ifndef _MSGBOX_HXX //autogen
#include <vcl/msgbox.hxx>
-#endif
#include <svl/stritem.hxx>
#include <sfx2/fcontnr.hxx>
#include <sfx2/linkmgr.hxx>
#include <sfx2/dispatch.hxx>
#include <svl/urihelper.hxx>
#include <sfx2/docfile.hxx>
-#ifndef _HELP_HXX //autogen
#include <vcl/help.hxx>
-#endif
#include <sot/filelist.hxx>
#include <svl/eitem.hxx>
#include <svl/urlbmk.hxx>
@@ -54,13 +50,9 @@
#include <sfx2/app.hxx>
#include <swmodule.hxx>
#include <wrtsh.hxx>
-#ifndef _VIEW_HXX
#include <view.hxx>
-#endif
#include <errhdl.hxx>
-#ifndef _DOCSH_HXX
#include <docsh.hxx>
-#endif
#include <content.hxx>
#include <edglbldc.hxx>
#include <section.hxx>
@@ -72,12 +64,8 @@
#include <edtwin.hxx>
#include <uitool.hxx>
-#ifndef _CMDID_H
#include <cmdid.h>
-#endif
-#ifndef _HELPID_H
#include <helpid.h>
-#endif
#ifndef _NAVIPI_HRC
#include <navipi.hrc>
#endif
@@ -779,7 +767,7 @@ void SwGlobalTree::Display(BOOL bOnlyUpdateUserData)
case GLBLDOC_SECTION:
{
const SwSection* pSect = pCont->GetSection();
- sEntry = pSect->GetName();
+ sEntry = pSect->GetSectionName();
aImage = aEntryImages.GetImage(SID_SW_START + CONTENT_TYPE_REGION);
}
break;
@@ -947,7 +935,8 @@ void SwGlobalTree::ExcecuteContextMenuAction( USHORT nSelectedPopupEntry )
case CTX_EDIT_LINK:
{
DBG_ASSERT(pCont, "Edit ohne Entry ? " );
- SfxStringItem aName(FN_EDIT_REGION, pCont->GetSection()->GetName());
+ SfxStringItem aName(FN_EDIT_REGION,
+ pCont->GetSection()->GetSectionName());
rDispatch.Execute(FN_EDIT_REGION, SFX_CALLMODE_ASYNCHRON, &aName, 0L);
}
break;
@@ -1254,7 +1243,7 @@ BOOL SwGlobalTree::Update(BOOL bHard)
String sTemp = GetEntryText(pEntry);
if(eType != pRight->GetType() ||
eType == GLBLDOC_SECTION &&
- pLeft->GetSection()->GetName() != sTemp ||
+ (pLeft->GetSection()->GetSectionName() != sTemp) ||
eType == GLBLDOC_TOXBASE && pLeft->GetTOX()->GetTitle() != sTemp)
bCopy = bRet = TRUE;
}
@@ -1456,7 +1445,8 @@ void SwGlobalTree::InsertRegion( const SwGlblDocContent* _pContent, const Sequen
while ( nCount < nSectCount )
{
const SwSectionFmt& rFmt = rSh.GetSectionFmt(nCount);
- if ( rFmt.GetSection()->GetName() == sTempSectionName && rFmt.IsInNodesArr() )
+ if ((rFmt.GetSection()->GetSectionName() == sTempSectionName)
+ && rFmt.IsInNodesArr())
{
nCount = 0;
nAddNumber++;
@@ -1471,15 +1461,15 @@ void SwGlobalTree::InsertRegion( const SwGlblDocContent* _pContent, const Sequen
if ( nAddNumber )
sSectionName = sTempSectionName;
- SwSection aSection(CONTENT_SECTION, sSectionName);
- aSection.SetProtect(TRUE);
- aSection.SetHidden(FALSE);
+ SwSectionData aSectionData(CONTENT_SECTION, sSectionName);
+ aSectionData.SetProtectFlag(true);
+ aSectionData.SetHidden(false);
- aSection.SetLinkFileName(sFileName);
- aSection.SetType( FILE_LINK_SECTION);
- aSection.SetLinkFilePassWd( sFilePassword );
+ aSectionData.SetLinkFileName(sFileName);
+ aSectionData.SetType(FILE_LINK_SECTION);
+ aSectionData.SetLinkFilePassword( sFilePassword );
- rSh.InsertGlobalDocContent( *pAnchorContent, aSection );
+ rSh.InsertGlobalDocContent( *pAnchorContent, aSectionData );
}
if ( bMove )
{
diff --git a/sw/source/ui/utlui/makefile.mk b/sw/source/ui/utlui/makefile.mk
index 7f2aa91c0e11..cded61eee357 100644
--- a/sw/source/ui/utlui/makefile.mk
+++ b/sw/source/ui/utlui/makefile.mk
@@ -51,15 +51,15 @@ SRC1FILES = \
EXCEPTIONSFILES= \
$(SLO)$/bookctrl.obj \
+ $(SLO)$/glbltree.obj \
$(SLO)$/navipi.obj \
$(SLO)$/unotools.obj \
+ $(SLO)$/content.obj \
$(SLO)$/swrenamexnameddlg.obj
SLOFILES = $(EXCEPTIONSFILES) \
$(SLO)$/condedit.obj \
- $(SLO)$/content.obj \
$(SLO)$/gloslst.obj \
- $(SLO)$/glbltree.obj \
$(SLO)$/initui.obj \
$(SLO)$/navicfg.obj \
$(SLO)$/numfmtlb.obj \
diff --git a/sw/source/ui/vba/vbafind.cxx b/sw/source/ui/vba/vbafind.cxx
index 79112109bf8c..fccf04181993 100644
--- a/sw/source/ui/vba/vbafind.cxx
+++ b/sw/source/ui/vba/vbafind.cxx
@@ -80,13 +80,13 @@ void SwVbaFind::SetReplace( sal_Int32 type )
mnReplaceType = type;
mbReplace = sal_True;
}
-
+#ifdef TOMORROW
rtl::OUString SwVbaFind::ReplaceWildcards( const rtl::OUString& /*rText*/ ) throw ( uno::RuntimeException )
{
// TODO:
return rtl::OUString();
}
-
+#endif
uno::Reference< text::XTextRange > SwVbaFind::FindOneElement() throw ( uno::RuntimeException )
{
uno::Reference< text::XTextRange > xFoundOne;
diff --git a/sw/source/ui/vba/vbafind.hxx b/sw/source/ui/vba/vbafind.hxx
index 1252050c7823..ef971866500d 100644
--- a/sw/source/ui/vba/vbafind.hxx
+++ b/sw/source/ui/vba/vbafind.hxx
@@ -58,7 +58,9 @@ private:
void SetReplace( sal_Int32 type );
void SetReplaceWith( const rtl::OUString& rText ) throw ( css::uno::RuntimeException );
rtl::OUString GetReplaceWith() throw ( css::uno::RuntimeException );
+#ifdef TOMORROW
rtl::OUString ReplaceWildcards( const rtl::OUString& rText ) throw ( css::uno::RuntimeException );
+#endif
css::uno::Reference< css::text::XTextRange > FindOneElement() throw ( css::uno::RuntimeException );
sal_Bool SearchReplace() throw ( css::uno::RuntimeException );
diff --git a/sw/source/ui/vba/vbaheaderfooterhelper.cxx b/sw/source/ui/vba/vbaheaderfooterhelper.cxx
index 240bba8d900b..604cc1e11d8c 100644
--- a/sw/source/ui/vba/vbaheaderfooterhelper.cxx
+++ b/sw/source/ui/vba/vbaheaderfooterhelper.cxx
@@ -155,7 +155,7 @@ sal_Bool HeaderFooterHelper::isEvenPagesFooter( const uno::Reference< frame::XMo
}
return sal_False;
}
-
+#ifdef TOMORROW
sal_Bool HeaderFooterHelper::isPrimaryHeader( const uno::Reference< frame::XModel >& xModel, const uno::Reference< text::XText >& xCurrentText ) throw (uno::RuntimeException)
{
if( isHeader( xModel, xCurrentText ) )
@@ -173,3 +173,4 @@ sal_Bool HeaderFooterHelper::isPrimaryFooter( const uno::Reference< frame::XMode
}
return sal_False;
}
+#endif
diff --git a/sw/source/ui/vba/vbaheaderfooterhelper.hxx b/sw/source/ui/vba/vbaheaderfooterhelper.hxx
index 30f4a0222549..fd29a16015ab 100644
--- a/sw/source/ui/vba/vbaheaderfooterhelper.hxx
+++ b/sw/source/ui/vba/vbaheaderfooterhelper.hxx
@@ -42,8 +42,10 @@ public:
static sal_Bool isFooter( const css::uno::Reference< css::frame::XModel >& xModel, const css::uno::Reference< css::text::XText >& xCurrentText ) throw (css::uno::RuntimeException);
static sal_Bool isFirstPageFooter( const css::uno::Reference< css::frame::XModel >& xModel, const css::uno::Reference< css::text::XText >& xCurrentText ) throw (css::uno::RuntimeException);
static sal_Bool isEvenPagesFooter( const css::uno::Reference< css::frame::XModel >& xModel, const css::uno::Reference< css::text::XText >& xCurrentText ) throw (css::uno::RuntimeException);
+#ifdef TOMORROW
static sal_Bool isPrimaryHeader( const css::uno::Reference< css::frame::XModel >& xModel, const css::uno::Reference< css::text::XText >& xCurrentText ) throw (css::uno::RuntimeException);
static sal_Bool isPrimaryFooter( const css::uno::Reference< css::frame::XModel >& xModel, const css::uno::Reference< css::text::XText >& xCurrentText ) throw (css::uno::RuntimeException);
+#endif
};
#endif
diff --git a/sw/source/ui/vba/vbarange.cxx b/sw/source/ui/vba/vbarange.cxx
index 2f1ee48ec5ef..647aedb34791 100644
--- a/sw/source/ui/vba/vbarange.cxx
+++ b/sw/source/ui/vba/vbarange.cxx
@@ -84,13 +84,13 @@ SwVbaRange::getXTextRange() throw (uno::RuntimeException)
uno::Reference< text::XTextRange > xTextRange( mxTextCursor, uno::UNO_QUERY_THROW );
return xTextRange;
}
-
+#ifdef TOMORROW
void SwVbaRange::setXTextRange( const uno::Reference< text::XTextRange >& xRange ) throw (uno::RuntimeException)
{
mxTextCursor->gotoRange( xRange->getStart(), sal_False );
mxTextCursor->gotoRange( xRange->getEnd(), sal_True );
}
-
+#endif
/**
* The complexity in this method is because we need to workaround
* an issue that the last paragraph in a document does not have a trailing CRLF.
diff --git a/sw/source/ui/vba/vbarange.hxx b/sw/source/ui/vba/vbarange.hxx
index 73992494f146..1f1b3a3bbc8b 100644
--- a/sw/source/ui/vba/vbarange.hxx
+++ b/sw/source/ui/vba/vbarange.hxx
@@ -56,7 +56,9 @@ public:
css::uno::Reference< css::text::XTextDocument > getDocument() { return mxTextDocument; }
virtual css::uno::Reference< css::text::XTextRange > SAL_CALL getXTextRange() throw (css::uno::RuntimeException);
+#ifdef TOMORROW
void setXTextRange( const css::uno::Reference< css::text::XTextRange >& xRange ) throw (css::uno::RuntimeException);
+#endif
css::uno::Reference< css::text::XText > getXText() { return mxText; }
void setXTextCursor( const css::uno::Reference< css::text::XTextCursor >& xTextCursor ) { mxTextCursor = xTextCursor; }
diff --git a/sw/source/ui/vba/vbasystem.cxx b/sw/source/ui/vba/vbasystem.cxx
index 71b2389bc96b..42d1c09ccbac 100644
--- a/sw/source/ui/vba/vbasystem.cxx
+++ b/sw/source/ui/vba/vbasystem.cxx
@@ -37,11 +37,6 @@
using namespace ::ooo::vba;
using namespace ::com::sun::star;
-PrivateProfileStringListener::PrivateProfileStringListener( const rtl::OUString& rFileName, const ByteString& rGroupName, const ByteString& rKey )
- :maFileName( rFileName ), maGroupName( rGroupName ), maKey( rKey )
-{
-}
-
PrivateProfileStringListener::~PrivateProfileStringListener()
{
}
diff --git a/sw/source/ui/vba/vbasystem.hxx b/sw/source/ui/vba/vbasystem.hxx
index e11494857617..deeb6f00fdf4 100644
--- a/sw/source/ui/vba/vbasystem.hxx
+++ b/sw/source/ui/vba/vbasystem.hxx
@@ -42,7 +42,6 @@ private:
ByteString maKey;
public:
PrivateProfileStringListener(){};
- PrivateProfileStringListener( const rtl::OUString& rFileName, const ByteString& rGroupName, const ByteString& rKey );
virtual ~PrivateProfileStringListener();
void Initialize( const rtl::OUString& rFileName, const ByteString& rGroupName, const ByteString& rKey );
diff --git a/sw/source/ui/vba/vbawindow.cxx b/sw/source/ui/vba/vbawindow.cxx
index 519b5a5c725b..e3d9bddbc7aa 100644
--- a/sw/source/ui/vba/vbawindow.cxx
+++ b/sw/source/ui/vba/vbawindow.cxx
@@ -39,11 +39,6 @@ SwVbaWindow::SwVbaWindow( const uno::Reference< XHelperInterface >& xParent, con
{
}
-SwVbaWindow::SwVbaWindow( uno::Sequence< uno::Any > const & args, uno::Reference< uno::XComponentContext > const & xContext )
- : WindowImpl_BASE( args, xContext )
-{
-}
-
void
SwVbaWindow::Activate() throw (css::uno::RuntimeException)
{
diff --git a/sw/source/ui/vba/vbawindow.hxx b/sw/source/ui/vba/vbawindow.hxx
index 902af1b51257..0809d2b73685 100644
--- a/sw/source/ui/vba/vbawindow.hxx
+++ b/sw/source/ui/vba/vbawindow.hxx
@@ -39,7 +39,6 @@ class SwVbaWindow : public WindowImpl_BASE
{
public:
SwVbaWindow( const css::uno::Reference< ov::XHelperInterface >& xParent, const css::uno::Reference< css::uno::XComponentContext >& xContext, const css::uno::Reference< css::frame::XModel >& xModel );
- SwVbaWindow( css::uno::Sequence< css::uno::Any > const& aArgs, css::uno::Reference< css::uno::XComponentContext > const& xContext );
// Attributes
diff --git a/sw/source/ui/vba/vbawrapformat.cxx b/sw/source/ui/vba/vbawrapformat.cxx
index 92e3e78790a0..4125cc00aaa0 100644
--- a/sw/source/ui/vba/vbawrapformat.cxx
+++ b/sw/source/ui/vba/vbawrapformat.cxx
@@ -34,11 +34,6 @@
using namespace ooo::vba;
using namespace com::sun::star;
-SwVbaWrapFormat::SwVbaWrapFormat( const uno::Reference< ov::XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext >& xContext, const uno::Reference< drawing::XShape > xShape ) : SwVbaWrapFormat_BASE( xParent, xContext ), m_xShape( xShape ), mnWrapFormatType( 0 ), mnSide( word::WdWrapSideType::wdWrapBoth )
-{
- m_xPropertySet.set( xShape, uno::UNO_QUERY_THROW );
-}
-
SwVbaWrapFormat::SwVbaWrapFormat( uno::Sequence< uno::Any > const& aArgs, uno::Reference< uno::XComponentContext >const& xContext ) : SwVbaWrapFormat_BASE( getXSomethingFromArgs< XHelperInterface >( aArgs, 0 ), xContext ), m_xShape( getXSomethingFromArgs< drawing::XShape >( aArgs, 1, false ) ), mnWrapFormatType( 0 ), mnSide( word::WdWrapSideType::wdWrapBoth )
{
m_xPropertySet.set( m_xShape, uno::UNO_QUERY_THROW );
diff --git a/sw/source/ui/vba/vbawrapformat.hxx b/sw/source/ui/vba/vbawrapformat.hxx
index e24f2b90ac42..71520d78aaae 100644
--- a/sw/source/ui/vba/vbawrapformat.hxx
+++ b/sw/source/ui/vba/vbawrapformat.hxx
@@ -47,7 +47,6 @@ private:
void setDistance( const rtl::OUString& sName, float _distance ) throw (css::uno::RuntimeException);
public:
- SwVbaWrapFormat( const css::uno::Reference< ov::XHelperInterface >& xParent, const css::uno::Reference< css::uno::XComponentContext >& xContext, const css::uno::Reference< css::drawing::XShape > xShape );
SwVbaWrapFormat( css::uno::Sequence< css::uno::Any > const& aArgs, css::uno::Reference< css::uno::XComponentContext >const& xContext );
virtual ::sal_Int32 SAL_CALL getType() throw (css::uno::RuntimeException);
diff --git a/sw/source/ui/wrtsh/wrtsh1.cxx b/sw/source/ui/wrtsh/wrtsh1.cxx
index 57e76a9cff61..04f87e877aa5 100644
--- a/sw/source/ui/wrtsh/wrtsh1.cxx
+++ b/sw/source/ui/wrtsh/wrtsh1.cxx
@@ -1387,7 +1387,20 @@ void SwWrtShell::NumOrBulletOn(BOOL bNum)
// <--
if ( ( nTxtNodeIndent + nWidthOfTabs ) != 0 )
{
- const SwTwips nIndentChange = nTxtNodeIndent + nWidthOfTabs;
+ // --> OD 2010-05-05 #i111172#
+ // If text node is already inside a list, assure that the indents
+ // are the same. Thus, adjust the indent change value by subtracting
+ // indents of to be applied list style.
+ SwTwips nIndentChange = nTxtNodeIndent + nWidthOfTabs;
+ if ( pTxtNode->GetNumRule() )
+ {
+ const SwNumFmt aFmt( aNumRule.Get( 0 ) );
+ if ( aFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_ALIGNMENT )
+ {
+ nIndentChange -= aFmt.GetIndentAt() + aFmt.GetFirstLineIndent();
+ }
+ }
+ // <--
aNumRule.ChangeIndent( nIndentChange );
}
}
@@ -1476,7 +1489,7 @@ SelectionType SwWrtShell::GetSelectionType() const
// return nsSelectionType::SEL_TBL | nsSelectionType::SEL_TBL_CELLS;
SwView &_rView = ((SwView&)GetView());
- if (_rView.GetPostItMgr() && _rView.GetPostItMgr()->GetActivePostIt() )
+ if (_rView.GetPostItMgr() && _rView.GetPostItMgr()->HasActiveSidebarWin() )
return nsSelectionType::SEL_POSTIT;
int nCnt;
@@ -1808,7 +1821,7 @@ BOOL SwWrtShell::Pop( BOOL bOldCrsr )
--------------------------------------------------------------------*/
BOOL SwWrtShell::CanInsert()
{
- return (!(IsSelFrmMode() | IsObjSelected() | (GetView().GetDrawFuncPtr() != NULL) | (GetView().GetPostItMgr()->GetActivePostIt()!= NULL)));
+ return (!(IsSelFrmMode() | IsObjSelected() | (GetView().GetDrawFuncPtr() != NULL) | (GetView().GetPostItMgr()->GetActiveSidebarWin()!= NULL)));
}
// die Core erzeugt eine Selektion, das SttSelect muss gerufen werden
diff --git a/sw/source/ui/wrtsh/wrtsh2.cxx b/sw/source/ui/wrtsh/wrtsh2.cxx
index 4d0172a5461b..17af61be8bad 100644
--- a/sw/source/ui/wrtsh/wrtsh2.cxx
+++ b/sw/source/ui/wrtsh/wrtsh2.cxx
@@ -468,20 +468,20 @@ void SwWrtShell::NavigatorPaste( const NaviContentBookmark& rBkmk,
}
else
{
- SwSection aSection( FILE_LINK_SECTION, GetUniqueSectionName( 0 ) );
+ SwSectionData aSection( FILE_LINK_SECTION, GetUniqueSectionName( 0 ) );
String aLinkFile( rBkmk.GetURL().GetToken(0, '#') );
aLinkFile += sfx2::cTokenSeperator;
aLinkFile += sfx2::cTokenSeperator;
aLinkFile += rBkmk.GetURL().GetToken(1, '#');
aSection.SetLinkFileName( aLinkFile );
- aSection.SetProtect( TRUE );
+ aSection.SetProtectFlag( true );
const SwSection* pIns = InsertSection( aSection );
if( EXCHG_IN_ACTION_MOVE == nAction && pIns )
{
- aSection = *pIns;
+ aSection = SwSectionData(*pIns);
aSection.SetLinkFileName( aEmptyStr );
aSection.SetType( CONTENT_SECTION );
- aSection.SetProtect( FALSE );
+ aSection.SetProtectFlag( false );
// the update of content from linked section at time delete
// the undostack. Then the change of the section dont create
@@ -489,7 +489,7 @@ void SwWrtShell::NavigatorPaste( const NaviContentBookmark& rBkmk,
BOOL bDoesUndo = DoesUndo();
if( UNDO_INSSECTION != GetUndoIds() )
DoUndo( FALSE );
- ChgSection( GetSectionFmtPos( *pIns->GetFmt() ), aSection );
+ UpdateSection( GetSectionFmtPos( *pIns->GetFmt() ), aSection );
DoUndo( bDoesUndo );
}
}
diff --git a/sw/source/ui/wrtsh/wrtundo.cxx b/sw/source/ui/wrtsh/wrtundo.cxx
index 95483f527a25..8a60988b2a5b 100644
--- a/sw/source/ui/wrtsh/wrtundo.cxx
+++ b/sw/source/ui/wrtsh/wrtundo.cxx
@@ -39,7 +39,7 @@
#include <swdtflvr.hxx>
#include <svl/svtools.hrc>
#include <svtools/svtdata.hxx>
-#include <svl/svtools.hrc>
+#include <svtools/svtools.hrc>
#include <svtools/svtdata.hxx>
#include <wrtsh.hrc>
#include <sfx2/sfx.hrc>
diff --git a/sw/uiconfig/sglobal/accelerator/de/default.xml b/sw/uiconfig/sglobal/accelerator/de/default.xml
deleted file mode 100644
index b134a2a41a89..000000000000
--- a/sw/uiconfig/sglobal/accelerator/de/default.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
- <accel:item accel:code="KEY_F11" xlink:href=".uno:DesignerDialog"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" xlink:href=".uno:StyleNewByExample"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" accel:mod1="true" xlink:href=".uno:StyleUpdateByExample"/>
- <accel:item accel:code="KEY_F11" accel:mod1="true" xlink:href=".uno:ActivateStyleApply"/>
- <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href=".uno:Redo"/>
- <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_UNDO" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_REPEAT" xlink:href=".uno:Repeat"/>
- <accel:item accel:code="KEY_K" accel:shift="true" accel:mod1="true" xlink:href=".uno:Italic"/>
- <accel:item accel:code="KEY_F" accel:shift="true" accel:mod1="true" xlink:href=".uno:Bold"/>
- <accel:item accel:code="KEY_U" accel:shift="true" accel:mod1="true" xlink:href=".uno:Underline"/>
- <accel:item accel:code="KEY_L" accel:mod1="true" xlink:href=".uno:LeftPara"/>
- <accel:item accel:code="KEY_R" accel:mod1="true" xlink:href=".uno:RightPara"/>
- <accel:item accel:code="KEY_E" accel:mod1="true" xlink:href=".uno:CenterPara"/>
- <accel:item accel:code="KEY_B" accel:mod1="true" xlink:href=".uno:JustifyPara"/>
- <accel:item accel:code="KEY_INSERT" xlink:href=".uno:InsertMode"/>
- <accel:item accel:code="KEY_F5" xlink:href=".uno:Navigator"/>
- <accel:item accel:code="KEY_A" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaLeftToRight"/>
- <accel:item accel:code="KEY_D" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaRightToLeft"/>
- <accel:item accel:code="KEY_V" accel:shift="true" accel:mod1="true" xlink:href=".uno:PasteSpecial"/>
- <accel:item accel:code="KEY_F9" xlink:href=".uno:UpdateFields"/>
- <accel:item accel:code="KEY_MULTIPLY" accel:mod1="true" xlink:href=".uno:ExecuteMacroField"/>
- <accel:item accel:code="KEY_F2" xlink:href=".uno:InsertFormula"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" xlink:href=".uno:Calc"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveUp"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" xlink:href=".uno:GoToPrevPara"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveDown"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" xlink:href=".uno:GoToNextPara"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveBullets"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" xlink:href=".uno:DefaultBullet"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" accel:mod1="true" xlink:href=".uno:UpdateInputFields"/>
- <accel:item accel:code="KEY_F12" xlink:href=".uno:DefaultNumbering"/>
- <accel:item accel:code="KEY_G" accel:mod1="true" xlink:href=".uno:RepeatSearch"/>
- <accel:item accel:code="KEY_R" accel:shift="true" accel:mod1="true" xlink:href=".uno:RefreshView"/>
- <accel:item accel:code="KEY_F10" accel:mod1="true" xlink:href=".uno:ControlCodes"/>
- <accel:item accel:code="KEY_F8" accel:mod1="true" xlink:href=".uno:Marks"/>
- <accel:item accel:code="KEY_F9" accel:mod1="true" xlink:href=".uno:Fieldnames"/>
- <accel:item accel:code="KEY_RETURN" xlink:href=".uno:InsertPara"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertColumnBreak"/>
- <accel:item accel:code="KEY_F2" accel:mod1="true" xlink:href=".uno:InsertField"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" xlink:href=".uno:InsertLinebreak"/>
- <accel:item accel:code="KEY_RETURN" accel:mod1="true" xlink:href=".uno:InsertPagebreak"/>
- <accel:item accel:code="KEY_F12" accel:mod1="true" xlink:href=".uno:InsertTable"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:mod1="true" xlink:href=".uno:InsertSoftHyphen"/>
- <accel:item accel:code="KEY_SPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertNonBreakingSpace"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertHardHyphen"/>
- <accel:item accel:code="KEY_D" accel:mod1="true" xlink:href=".uno:UnderlineDouble"/>
- <accel:item accel:code="KEY_H" accel:mod1="true" xlink:href=".uno:SuperScript"/>
- <accel:item accel:code="KEY_T" accel:mod1="true" xlink:href=".uno:SubScript"/>
- <accel:item accel:code="KEY_T" accel:shift="true" accel:mod1="true" xlink:href=".uno:ResetTableProtection"/>
- <accel:item accel:code="KEY_F7" accel:mod1="true" xlink:href=".uno:ThesaurusDialog"/>
- <accel:item accel:code="KEY_ADD" accel:mod1="true" xlink:href=".uno:CalculateSel"/>
- <accel:item accel:code="KEY_F3" accel:mod1="true" xlink:href=".uno:EditGlossary"/>
- <accel:item accel:code="KEY_F7" xlink:href=".uno:SpellingAndGrammarDialog"/>
- <accel:item accel:code="KEY_F3" xlink:href=".uno:ExpandGlossary"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" accel:mod1="true" xlink:href=".uno:GotoPage"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" xlink:href=".uno:CharLeftSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" xlink:href=".uno:CharRightSel"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" xlink:href=".uno:LineUpSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" xlink:href=".uno:LineDownSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" xlink:href=".uno:StartOfLineSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" xlink:href=".uno:EndOfLineSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfDocumentSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfDocumentSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordRightSel"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordLeftSel"/>
- <accel:item accel:code="KEY_PAGEUP" accel:shift="true" xlink:href=".uno:PageUpSel"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" xlink:href=".uno:PageDownSel"/>
- <accel:item accel:code="KEY_LEFT" xlink:href=".uno:GoLeft"/>
- <accel:item accel:code="KEY_RIGHT" xlink:href=".uno:GoRight"/>
- <accel:item accel:code="KEY_UP" xlink:href=".uno:GoUp"/>
- <accel:item accel:code="KEY_DOWN" xlink:href=".uno:GoDown"/>
- <accel:item accel:code="KEY_HOME" xlink:href=".uno:GoToStartOfLine"/>
- <accel:item accel:code="KEY_END" xlink:href=".uno:GoToEndOfLine"/>
- <accel:item accel:code="KEY_HOME" accel:mod1="true" xlink:href=".uno:GoToStartOfDoc"/>
- <accel:item accel:code="KEY_END" accel:mod1="true" xlink:href=".uno:GoToEndOfDoc"/>
- <accel:item accel:code="KEY_RIGHT" accel:mod1="true" xlink:href=".uno:GoToNextWord"/>
- <accel:item accel:code="KEY_LEFT" accel:mod1="true" xlink:href=".uno:GoToPrevWord"/>
- <accel:item accel:code="KEY_BACKSPACE" xlink:href=".uno:SwBackspace"/>
- <accel:item accel:code="KEY_DELETE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToEndOfSentence"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToStartOfSentence"/>
- <accel:item accel:code="KEY_DELETE" accel:mod1="true" xlink:href=".uno:DelToEndOfWord"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod1="true" xlink:href=".uno:DelToStartOfWord"/>
- <accel:item accel:code="KEY_PAGEUP" xlink:href=".uno:PageUp"/>
- <accel:item accel:code="KEY_PAGEDOWN" xlink:href=".uno:PageDown"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" xlink:href=".uno:SetMultiSelection"/>
- <accel:item accel:code="KEY_F8" xlink:href=".uno:SetExtSelection"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod2="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_ESCAPE" xlink:href=".uno:Escape"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" xlink:href=".uno:ShiftBackspace"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfParaSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfParaSel"/>
- <accel:item accel:code="KEY_F4" accel:shift="true" xlink:href=".uno:JumpToNextFrame"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" xlink:href=".uno:RestoreEditingView"/>
- <accel:item accel:code="KEY_PAGEUP" accel:mod1="true" xlink:href=".uno:JumpToHeader"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:mod1="true" xlink:href=".uno:JumpToFooter"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:JumpToFootnoteArea"/>
- <accel:item accel:code="KEY_I" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectTextMode"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Text body&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" accel:shift="true" xlink:href=".uno:StyleApply?Style:string=Standard&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_1" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 1&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_2" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 2&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_3" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 3&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_4" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 4&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_5" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 5&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_M" accel:mod1="true" xlink:href=".uno:ResetAttributes"/>
- <accel:item accel:code="KEY_J" accel:shift="true" accel:mod1="true" xlink:href=".uno:FullScreen"/>
- <accel:item accel:code="KEY_DIVIDE" accel:mod1="true" xlink:href=".uno:InsertZWSP"/>
- <accel:item accel:code="KEY_N" accel:mod1="true" accel:mod2="true" xlink:href=".uno:InsertAnnotation"/>
-</accel:acceleratorlist>
diff --git a/sw/uiconfig/sglobal/accelerator/en-GB/default.xml b/sw/uiconfig/sglobal/accelerator/en-GB/default.xml
deleted file mode 100644
index c07ff3fcf036..000000000000
--- a/sw/uiconfig/sglobal/accelerator/en-GB/default.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
- <accel:item accel:code="KEY_F11" xlink:href=".uno:DesignerDialog"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" xlink:href=".uno:StyleNewByExample"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" accel:mod1="true" xlink:href=".uno:StyleUpdateByExample"/>
- <accel:item accel:code="KEY_F11" accel:mod1="true" xlink:href=".uno:ActivateStyleApply"/>
- <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href=".uno:Redo"/>
- <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_UNDO" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_REPEAT" xlink:href=".uno:Repeat"/>
- <accel:item accel:code="KEY_I" accel:mod1="true" xlink:href=".uno:Italic"/>
- <accel:item accel:code="KEY_B" accel:mod1="true" xlink:href=".uno:Bold"/>
- <accel:item accel:code="KEY_U" accel:mod1="true" xlink:href=".uno:Underline"/>
- <accel:item accel:code="KEY_L" accel:mod1="true" xlink:href=".uno:LeftPara"/>
- <accel:item accel:code="KEY_R" accel:mod1="true" xlink:href=".uno:RightPara"/>
- <accel:item accel:code="KEY_E" accel:mod1="true" xlink:href=".uno:CenterPara"/>
- <accel:item accel:code="KEY_J" accel:mod1="true" xlink:href=".uno:JustifyPara"/>
- <accel:item accel:code="KEY_INSERT" xlink:href=".uno:InsertMode"/>
- <accel:item accel:code="KEY_F5" xlink:href=".uno:Navigator"/>
- <accel:item accel:code="KEY_A" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaLeftToRight"/>
- <accel:item accel:code="KEY_D" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaRightToLeft"/>
- <accel:item accel:code="KEY_V" accel:shift="true" accel:mod1="true" xlink:href=".uno:PasteSpecial"/>
- <accel:item accel:code="KEY_F9" xlink:href=".uno:UpdateFields"/>
- <accel:item accel:code="KEY_MULTIPLY" accel:mod1="true" xlink:href=".uno:ExecuteMacroField"/>
- <accel:item accel:code="KEY_F2" xlink:href=".uno:InsertFormula"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" xlink:href=".uno:Calc"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveUp"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" xlink:href=".uno:GoToPrevPara"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveDown"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" xlink:href=".uno:GoToNextPara"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveBullets"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" xlink:href=".uno:DefaultBullet"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" accel:mod1="true" xlink:href=".uno:UpdateInputFields"/>
- <accel:item accel:code="KEY_F12" xlink:href=".uno:DefaultNumbering"/>
- <accel:item accel:code="KEY_F" accel:shift="true" accel:mod1="true" xlink:href=".uno:RepeatSearch"/>
- <accel:item accel:code="KEY_R" accel:shift="true" accel:mod1="true" xlink:href=".uno:RefreshView"/>
- <accel:item accel:code="KEY_F10" accel:mod1="true" xlink:href=".uno:ControlCodes"/>
- <accel:item accel:code="KEY_F8" accel:mod1="true" xlink:href=".uno:Marks"/>
- <accel:item accel:code="KEY_F9" accel:mod1="true" xlink:href=".uno:Fieldnames"/>
- <accel:item accel:code="KEY_RETURN" xlink:href=".uno:InsertPara"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertColumnBreak"/>
- <accel:item accel:code="KEY_F2" accel:mod1="true" xlink:href=".uno:InsertField"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" xlink:href=".uno:InsertLinebreak"/>
- <accel:item accel:code="KEY_RETURN" accel:mod1="true" xlink:href=".uno:InsertPagebreak"/>
- <accel:item accel:code="KEY_F12" accel:mod1="true" xlink:href=".uno:InsertTable"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:mod1="true" xlink:href=".uno:InsertSoftHyphen"/>
- <accel:item accel:code="KEY_SPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertNonBreakingSpace"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertHardHyphen"/>
- <accel:item accel:code="KEY_D" accel:mod1="true" xlink:href=".uno:UnderlineDouble"/>
- <accel:item accel:code="KEY_P" accel:shift="true" accel:mod1="true" xlink:href=".uno:SuperScript"/>
- <accel:item accel:code="KEY_B" accel:shift="true" accel:mod1="true" xlink:href=".uno:SubScript"/>
- <accel:item accel:code="KEY_T" accel:shift="true" accel:mod1="true" xlink:href=".uno:ResetTableProtection"/>
- <accel:item accel:code="KEY_F7" accel:mod1="true" xlink:href=".uno:ThesaurusDialog"/>
- <accel:item accel:code="KEY_ADD" accel:mod1="true" xlink:href=".uno:CalculateSel"/>
- <accel:item accel:code="KEY_F3" accel:mod1="true" xlink:href=".uno:EditGlossary"/>
- <accel:item accel:code="KEY_F7" xlink:href=".uno:SpellingAndGrammarDialog"/>
- <accel:item accel:code="KEY_F3" xlink:href=".uno:ExpandGlossary"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" accel:mod1="true" xlink:href=".uno:GotoPage"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" xlink:href=".uno:CharLeftSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" xlink:href=".uno:CharRightSel"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" xlink:href=".uno:LineUpSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" xlink:href=".uno:LineDownSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" xlink:href=".uno:StartOfLineSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" xlink:href=".uno:EndOfLineSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfDocumentSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfDocumentSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordRightSel"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordLeftSel"/>
- <accel:item accel:code="KEY_PAGEUP" accel:shift="true" xlink:href=".uno:PageUpSel"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" xlink:href=".uno:PageDownSel"/>
- <accel:item accel:code="KEY_LEFT" xlink:href=".uno:GoLeft"/>
- <accel:item accel:code="KEY_RIGHT" xlink:href=".uno:GoRight"/>
- <accel:item accel:code="KEY_UP" xlink:href=".uno:GoUp"/>
- <accel:item accel:code="KEY_DOWN" xlink:href=".uno:GoDown"/>
- <accel:item accel:code="KEY_HOME" xlink:href=".uno:GoToStartOfLine"/>
- <accel:item accel:code="KEY_END" xlink:href=".uno:GoToEndOfLine"/>
- <accel:item accel:code="KEY_HOME" accel:mod1="true" xlink:href=".uno:GoToStartOfDoc"/>
- <accel:item accel:code="KEY_END" accel:mod1="true" xlink:href=".uno:GoToEndOfDoc"/>
- <accel:item accel:code="KEY_RIGHT" accel:mod1="true" xlink:href=".uno:GoToNextWord"/>
- <accel:item accel:code="KEY_LEFT" accel:mod1="true" xlink:href=".uno:GoToPrevWord"/>
- <accel:item accel:code="KEY_BACKSPACE" xlink:href=".uno:SwBackspace"/>
- <accel:item accel:code="KEY_DELETE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToEndOfSentence"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToStartOfSentence"/>
- <accel:item accel:code="KEY_DELETE" accel:mod1="true" xlink:href=".uno:DelToEndOfWord"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod1="true" xlink:href=".uno:DelToStartOfWord"/>
- <accel:item accel:code="KEY_PAGEUP" xlink:href=".uno:PageUp"/>
- <accel:item accel:code="KEY_PAGEDOWN" xlink:href=".uno:PageDown"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" xlink:href=".uno:SetMultiSelection"/>
- <accel:item accel:code="KEY_F8" xlink:href=".uno:SetExtSelection"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod2="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_ESCAPE" xlink:href=".uno:Escape"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" xlink:href=".uno:ShiftBackspace"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfParaSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfParaSel"/>
- <accel:item accel:code="KEY_F4" accel:shift="true" xlink:href=".uno:JumpToNextFrame"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" xlink:href=".uno:RestoreEditingView"/>
- <accel:item accel:code="KEY_PAGEUP" accel:mod1="true" xlink:href=".uno:JumpToHeader"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:mod1="true" xlink:href=".uno:JumpToFooter"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:JumpToFootnoteArea"/>
- <accel:item accel:code="KEY_I" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectTextMode"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Text body&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" accel:shift="true" xlink:href=".uno:StyleApply?Style:string=Standard&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_1" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 1&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_2" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 2&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_3" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 3&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_4" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 4&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_5" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 5&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_M" accel:mod1="true" xlink:href=".uno:ResetAttributes"/>
- <accel:item accel:code="KEY_J" accel:shift="true" accel:mod1="true" xlink:href=".uno:FullScreen"/>
- <accel:item accel:code="KEY_X" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveDirectCharFormats"/>
- <accel:item accel:code="KEY_DIVIDE" accel:mod1="true" xlink:href=".uno:InsertZWSP"/>
- <accel:item accel:code="KEY_C" accel:mod1="true" accel:mod2="true" xlink:href=".uno:InsertAnnotation"/>
-</accel:acceleratorlist>
diff --git a/sw/uiconfig/sglobal/accelerator/en-US/default.xml b/sw/uiconfig/sglobal/accelerator/en-US/default.xml
deleted file mode 100644
index c07ff3fcf036..000000000000
--- a/sw/uiconfig/sglobal/accelerator/en-US/default.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
- <accel:item accel:code="KEY_F11" xlink:href=".uno:DesignerDialog"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" xlink:href=".uno:StyleNewByExample"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" accel:mod1="true" xlink:href=".uno:StyleUpdateByExample"/>
- <accel:item accel:code="KEY_F11" accel:mod1="true" xlink:href=".uno:ActivateStyleApply"/>
- <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href=".uno:Redo"/>
- <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_UNDO" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_REPEAT" xlink:href=".uno:Repeat"/>
- <accel:item accel:code="KEY_I" accel:mod1="true" xlink:href=".uno:Italic"/>
- <accel:item accel:code="KEY_B" accel:mod1="true" xlink:href=".uno:Bold"/>
- <accel:item accel:code="KEY_U" accel:mod1="true" xlink:href=".uno:Underline"/>
- <accel:item accel:code="KEY_L" accel:mod1="true" xlink:href=".uno:LeftPara"/>
- <accel:item accel:code="KEY_R" accel:mod1="true" xlink:href=".uno:RightPara"/>
- <accel:item accel:code="KEY_E" accel:mod1="true" xlink:href=".uno:CenterPara"/>
- <accel:item accel:code="KEY_J" accel:mod1="true" xlink:href=".uno:JustifyPara"/>
- <accel:item accel:code="KEY_INSERT" xlink:href=".uno:InsertMode"/>
- <accel:item accel:code="KEY_F5" xlink:href=".uno:Navigator"/>
- <accel:item accel:code="KEY_A" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaLeftToRight"/>
- <accel:item accel:code="KEY_D" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaRightToLeft"/>
- <accel:item accel:code="KEY_V" accel:shift="true" accel:mod1="true" xlink:href=".uno:PasteSpecial"/>
- <accel:item accel:code="KEY_F9" xlink:href=".uno:UpdateFields"/>
- <accel:item accel:code="KEY_MULTIPLY" accel:mod1="true" xlink:href=".uno:ExecuteMacroField"/>
- <accel:item accel:code="KEY_F2" xlink:href=".uno:InsertFormula"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" xlink:href=".uno:Calc"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveUp"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" xlink:href=".uno:GoToPrevPara"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveDown"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" xlink:href=".uno:GoToNextPara"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveBullets"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" xlink:href=".uno:DefaultBullet"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" accel:mod1="true" xlink:href=".uno:UpdateInputFields"/>
- <accel:item accel:code="KEY_F12" xlink:href=".uno:DefaultNumbering"/>
- <accel:item accel:code="KEY_F" accel:shift="true" accel:mod1="true" xlink:href=".uno:RepeatSearch"/>
- <accel:item accel:code="KEY_R" accel:shift="true" accel:mod1="true" xlink:href=".uno:RefreshView"/>
- <accel:item accel:code="KEY_F10" accel:mod1="true" xlink:href=".uno:ControlCodes"/>
- <accel:item accel:code="KEY_F8" accel:mod1="true" xlink:href=".uno:Marks"/>
- <accel:item accel:code="KEY_F9" accel:mod1="true" xlink:href=".uno:Fieldnames"/>
- <accel:item accel:code="KEY_RETURN" xlink:href=".uno:InsertPara"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertColumnBreak"/>
- <accel:item accel:code="KEY_F2" accel:mod1="true" xlink:href=".uno:InsertField"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" xlink:href=".uno:InsertLinebreak"/>
- <accel:item accel:code="KEY_RETURN" accel:mod1="true" xlink:href=".uno:InsertPagebreak"/>
- <accel:item accel:code="KEY_F12" accel:mod1="true" xlink:href=".uno:InsertTable"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:mod1="true" xlink:href=".uno:InsertSoftHyphen"/>
- <accel:item accel:code="KEY_SPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertNonBreakingSpace"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertHardHyphen"/>
- <accel:item accel:code="KEY_D" accel:mod1="true" xlink:href=".uno:UnderlineDouble"/>
- <accel:item accel:code="KEY_P" accel:shift="true" accel:mod1="true" xlink:href=".uno:SuperScript"/>
- <accel:item accel:code="KEY_B" accel:shift="true" accel:mod1="true" xlink:href=".uno:SubScript"/>
- <accel:item accel:code="KEY_T" accel:shift="true" accel:mod1="true" xlink:href=".uno:ResetTableProtection"/>
- <accel:item accel:code="KEY_F7" accel:mod1="true" xlink:href=".uno:ThesaurusDialog"/>
- <accel:item accel:code="KEY_ADD" accel:mod1="true" xlink:href=".uno:CalculateSel"/>
- <accel:item accel:code="KEY_F3" accel:mod1="true" xlink:href=".uno:EditGlossary"/>
- <accel:item accel:code="KEY_F7" xlink:href=".uno:SpellingAndGrammarDialog"/>
- <accel:item accel:code="KEY_F3" xlink:href=".uno:ExpandGlossary"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" accel:mod1="true" xlink:href=".uno:GotoPage"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" xlink:href=".uno:CharLeftSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" xlink:href=".uno:CharRightSel"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" xlink:href=".uno:LineUpSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" xlink:href=".uno:LineDownSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" xlink:href=".uno:StartOfLineSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" xlink:href=".uno:EndOfLineSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfDocumentSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfDocumentSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordRightSel"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordLeftSel"/>
- <accel:item accel:code="KEY_PAGEUP" accel:shift="true" xlink:href=".uno:PageUpSel"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" xlink:href=".uno:PageDownSel"/>
- <accel:item accel:code="KEY_LEFT" xlink:href=".uno:GoLeft"/>
- <accel:item accel:code="KEY_RIGHT" xlink:href=".uno:GoRight"/>
- <accel:item accel:code="KEY_UP" xlink:href=".uno:GoUp"/>
- <accel:item accel:code="KEY_DOWN" xlink:href=".uno:GoDown"/>
- <accel:item accel:code="KEY_HOME" xlink:href=".uno:GoToStartOfLine"/>
- <accel:item accel:code="KEY_END" xlink:href=".uno:GoToEndOfLine"/>
- <accel:item accel:code="KEY_HOME" accel:mod1="true" xlink:href=".uno:GoToStartOfDoc"/>
- <accel:item accel:code="KEY_END" accel:mod1="true" xlink:href=".uno:GoToEndOfDoc"/>
- <accel:item accel:code="KEY_RIGHT" accel:mod1="true" xlink:href=".uno:GoToNextWord"/>
- <accel:item accel:code="KEY_LEFT" accel:mod1="true" xlink:href=".uno:GoToPrevWord"/>
- <accel:item accel:code="KEY_BACKSPACE" xlink:href=".uno:SwBackspace"/>
- <accel:item accel:code="KEY_DELETE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToEndOfSentence"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToStartOfSentence"/>
- <accel:item accel:code="KEY_DELETE" accel:mod1="true" xlink:href=".uno:DelToEndOfWord"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod1="true" xlink:href=".uno:DelToStartOfWord"/>
- <accel:item accel:code="KEY_PAGEUP" xlink:href=".uno:PageUp"/>
- <accel:item accel:code="KEY_PAGEDOWN" xlink:href=".uno:PageDown"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" xlink:href=".uno:SetMultiSelection"/>
- <accel:item accel:code="KEY_F8" xlink:href=".uno:SetExtSelection"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod2="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_ESCAPE" xlink:href=".uno:Escape"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" xlink:href=".uno:ShiftBackspace"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfParaSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfParaSel"/>
- <accel:item accel:code="KEY_F4" accel:shift="true" xlink:href=".uno:JumpToNextFrame"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" xlink:href=".uno:RestoreEditingView"/>
- <accel:item accel:code="KEY_PAGEUP" accel:mod1="true" xlink:href=".uno:JumpToHeader"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:mod1="true" xlink:href=".uno:JumpToFooter"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:JumpToFootnoteArea"/>
- <accel:item accel:code="KEY_I" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectTextMode"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Text body&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" accel:shift="true" xlink:href=".uno:StyleApply?Style:string=Standard&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_1" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 1&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_2" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 2&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_3" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 3&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_4" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 4&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_5" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 5&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_M" accel:mod1="true" xlink:href=".uno:ResetAttributes"/>
- <accel:item accel:code="KEY_J" accel:shift="true" accel:mod1="true" xlink:href=".uno:FullScreen"/>
- <accel:item accel:code="KEY_X" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveDirectCharFormats"/>
- <accel:item accel:code="KEY_DIVIDE" accel:mod1="true" xlink:href=".uno:InsertZWSP"/>
- <accel:item accel:code="KEY_C" accel:mod1="true" accel:mod2="true" xlink:href=".uno:InsertAnnotation"/>
-</accel:acceleratorlist>
diff --git a/sw/uiconfig/sglobal/accelerator/es/default.xml b/sw/uiconfig/sglobal/accelerator/es/default.xml
deleted file mode 100644
index 42b11d834e20..000000000000
--- a/sw/uiconfig/sglobal/accelerator/es/default.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
- <accel:item accel:code="KEY_F11" xlink:href=".uno:DesignerDialog"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" xlink:href=".uno:StyleNewByExample"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" accel:mod1="true" xlink:href=".uno:StyleUpdateByExample"/>
- <accel:item accel:code="KEY_F11" accel:mod1="true" xlink:href=".uno:ActivateStyleApply"/>
- <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href=".uno:Redo"/>
- <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_UNDO" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_REPEAT" xlink:href=".uno:Repeat"/>
- <accel:item accel:code="KEY_K" accel:mod1="true" xlink:href=".uno:Italic"/>
- <accel:item accel:code="KEY_N" accel:mod1="true" xlink:href=".uno:Bold"/>
- <accel:item accel:code="KEY_S" accel:mod1="true" xlink:href=".uno:Underline"/>
- <accel:item accel:code="KEY_L" accel:mod1="true" xlink:href=".uno:LeftPara"/>
- <accel:item accel:code="KEY_R" accel:mod1="true" xlink:href=".uno:RightPara"/>
- <accel:item accel:code="KEY_T" accel:mod1="true" xlink:href=".uno:CenterPara"/>
- <accel:item accel:code="KEY_J" accel:mod1="true" xlink:href=".uno:JustifyPara"/>
- <accel:item accel:code="KEY_INSERT" xlink:href=".uno:InsertMode"/>
- <accel:item accel:code="KEY_F5" xlink:href=".uno:Navigator"/>
- <accel:item accel:code="KEY_A" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaLeftToRight"/>
- <accel:item accel:code="KEY_D" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaRightToLeft"/>
- <accel:item accel:code="KEY_V" accel:shift="true" accel:mod1="true" xlink:href=".uno:PasteSpecial"/>
- <accel:item accel:code="KEY_F9" xlink:href=".uno:UpdateFields"/>
- <accel:item accel:code="KEY_MULTIPLY" accel:mod1="true" xlink:href=".uno:ExecuteMacroField"/>
- <accel:item accel:code="KEY_F2" xlink:href=".uno:InsertFormula"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" xlink:href=".uno:Calc"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveUp"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" xlink:href=".uno:GoToPrevPara"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveDown"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" xlink:href=".uno:GoToNextPara"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveBullets"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" xlink:href=".uno:DefaultBullet"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" accel:mod1="true" xlink:href=".uno:UpdateInputFields"/>
- <accel:item accel:code="KEY_F12" xlink:href=".uno:DefaultNumbering"/>
- <accel:item accel:code="KEY_F" accel:shift="true" accel:mod1="true" xlink:href=".uno:RepeatSearch"/>
- <accel:item accel:code="KEY_R" accel:shift="true" accel:mod1="true" xlink:href=".uno:RefreshView"/>
- <accel:item accel:code="KEY_F10" accel:mod1="true" xlink:href=".uno:ControlCodes"/>
- <accel:item accel:code="KEY_F8" accel:mod1="true" xlink:href=".uno:Marks"/>
- <accel:item accel:code="KEY_F9" accel:mod1="true" xlink:href=".uno:Fieldnames"/>
- <accel:item accel:code="KEY_RETURN" xlink:href=".uno:InsertPara"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertColumnBreak"/>
- <accel:item accel:code="KEY_F2" accel:mod1="true" xlink:href=".uno:InsertField"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" xlink:href=".uno:InsertLinebreak"/>
- <accel:item accel:code="KEY_RETURN" accel:mod1="true" xlink:href=".uno:InsertPagebreak"/>
- <accel:item accel:code="KEY_F12" accel:mod1="true" xlink:href=".uno:InsertTable"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:mod1="true" xlink:href=".uno:InsertSoftHyphen"/>
- <accel:item accel:code="KEY_SPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertNonBreakingSpace"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertHardHyphen"/>
- <accel:item accel:code="KEY_D" accel:mod1="true" xlink:href=".uno:UnderlineDouble"/>
- <accel:item accel:code="KEY_P" accel:shift="true" accel:mod1="true" xlink:href=".uno:SuperScript"/>
- <accel:item accel:code="KEY_B" accel:shift="true" accel:mod1="true" xlink:href=".uno:SubScript"/>
- <accel:item accel:code="KEY_T" accel:shift="true" accel:mod1="true" xlink:href=".uno:ResetTableProtection"/>
- <accel:item accel:code="KEY_F7" accel:mod1="true" xlink:href=".uno:ThesaurusDialog"/>
- <accel:item accel:code="KEY_ADD" accel:mod1="true" xlink:href=".uno:CalculateSel"/>
- <accel:item accel:code="KEY_F3" accel:mod1="true" xlink:href=".uno:EditGlossary"/>
- <accel:item accel:code="KEY_F7" xlink:href=".uno:SpellingAndGrammarDialog"/>
- <accel:item accel:code="KEY_F3" xlink:href=".uno:ExpandGlossary"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" accel:mod1="true" xlink:href=".uno:GotoPage"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" xlink:href=".uno:CharLeftSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" xlink:href=".uno:CharRightSel"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" xlink:href=".uno:LineUpSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" xlink:href=".uno:LineDownSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" xlink:href=".uno:StartOfLineSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" xlink:href=".uno:EndOfLineSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfDocumentSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfDocumentSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordRightSel"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordLeftSel"/>
- <accel:item accel:code="KEY_PAGEUP" accel:shift="true" xlink:href=".uno:PageUpSel"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" xlink:href=".uno:PageDownSel"/>
- <accel:item accel:code="KEY_LEFT" xlink:href=".uno:GoLeft"/>
- <accel:item accel:code="KEY_RIGHT" xlink:href=".uno:GoRight"/>
- <accel:item accel:code="KEY_UP" xlink:href=".uno:GoUp"/>
- <accel:item accel:code="KEY_DOWN" xlink:href=".uno:GoDown"/>
- <accel:item accel:code="KEY_HOME" xlink:href=".uno:GoToStartOfLine"/>
- <accel:item accel:code="KEY_END" xlink:href=".uno:GoToEndOfLine"/>
- <accel:item accel:code="KEY_HOME" accel:mod1="true" xlink:href=".uno:GoToStartOfDoc"/>
- <accel:item accel:code="KEY_END" accel:mod1="true" xlink:href=".uno:GoToEndOfDoc"/>
- <accel:item accel:code="KEY_RIGHT" accel:mod1="true" xlink:href=".uno:GoToNextWord"/>
- <accel:item accel:code="KEY_LEFT" accel:mod1="true" xlink:href=".uno:GoToPrevWord"/>
- <accel:item accel:code="KEY_BACKSPACE" xlink:href=".uno:SwBackspace"/>
- <accel:item accel:code="KEY_DELETE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToEndOfSentence"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToStartOfSentence"/>
- <accel:item accel:code="KEY_DELETE" accel:mod1="true" xlink:href=".uno:DelToEndOfWord"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod1="true" xlink:href=".uno:DelToStartOfWord"/>
- <accel:item accel:code="KEY_PAGEUP" xlink:href=".uno:PageUp"/>
- <accel:item accel:code="KEY_PAGEDOWN" xlink:href=".uno:PageDown"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" xlink:href=".uno:SetMultiSelection"/>
- <accel:item accel:code="KEY_F8" xlink:href=".uno:SetExtSelection"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod2="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_ESCAPE" xlink:href=".uno:Escape"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" xlink:href=".uno:ShiftBackspace"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfParaSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfParaSel"/>
- <accel:item accel:code="KEY_F4" accel:shift="true" xlink:href=".uno:JumpToNextFrame"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" xlink:href=".uno:RestoreEditingView"/>
- <accel:item accel:code="KEY_PAGEUP" accel:mod1="true" xlink:href=".uno:JumpToHeader"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:mod1="true" xlink:href=".uno:JumpToFooter"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:JumpToFootnoteArea"/>
- <accel:item accel:code="KEY_I" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectTextMode"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Text body&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" accel:shift="true" xlink:href=".uno:StyleApply?Style:string=Standard&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_1" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 1&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_2" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 2&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_3" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 3&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_4" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 4&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_5" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 5&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_M" accel:mod1="true" xlink:href=".uno:ResetAttributes"/>
- <accel:item accel:code="KEY_J" accel:shift="true" accel:mod1="true" xlink:href=".uno:FullScreen"/>
- <accel:item accel:code="KEY_DIVIDE" accel:mod1="true" xlink:href=".uno:InsertZWSP"/>
- <accel:item accel:code="KEY_N" accel:mod1="true" accel:mod2="true" xlink:href=".uno:InsertAnnotation"/>
-</accel:acceleratorlist>
diff --git a/sw/uiconfig/sglobal/accelerator/fr/default.xml b/sw/uiconfig/sglobal/accelerator/fr/default.xml
deleted file mode 100644
index 4ee8b9e2a1ec..000000000000
--- a/sw/uiconfig/sglobal/accelerator/fr/default.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
- <accel:item accel:code="KEY_F11" xlink:href=".uno:DesignerDialog"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" xlink:href=".uno:StyleNewByExample"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" accel:mod1="true" xlink:href=".uno:StyleUpdateByExample"/>
- <accel:item accel:code="KEY_F11" accel:mod1="true" xlink:href=".uno:ActivateStyleApply"/>
- <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href=".uno:Redo"/>
- <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_UNDO" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_REPEAT" xlink:href=".uno:Repeat"/>
- <accel:item accel:code="KEY_I" accel:mod1="true" xlink:href=".uno:Italic"/>
- <accel:item accel:code="KEY_G" accel:mod1="true" xlink:href=".uno:Bold"/>
- <accel:item accel:code="KEY_U" accel:mod1="true" xlink:href=".uno:Underline"/>
- <accel:item accel:code="KEY_L" accel:mod1="true" xlink:href=".uno:LeftPara"/>
- <accel:item accel:code="KEY_R" accel:mod1="true" xlink:href=".uno:RightPara"/>
- <accel:item accel:code="KEY_E" accel:mod1="true" xlink:href=".uno:CenterPara"/>
- <accel:item accel:code="KEY_J" accel:mod1="true" xlink:href=".uno:JustifyPara"/>
- <accel:item accel:code="KEY_INSERT" xlink:href=".uno:InsertMode"/>
- <accel:item accel:code="KEY_F5" xlink:href=".uno:Navigator"/>
- <accel:item accel:code="KEY_A" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaLeftToRight"/>
- <accel:item accel:code="KEY_D" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaRightToLeft"/>
- <accel:item accel:code="KEY_V" accel:shift="true" accel:mod1="true" xlink:href=".uno:PasteSpecial"/>
- <accel:item accel:code="KEY_F9" xlink:href=".uno:UpdateFields"/>
- <accel:item accel:code="KEY_MULTIPLY" accel:mod1="true" xlink:href=".uno:ExecuteMacroField"/>
- <accel:item accel:code="KEY_F2" xlink:href=".uno:InsertFormula"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" xlink:href=".uno:Calc"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveUp"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" xlink:href=".uno:GoToPrevPara"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveDown"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" xlink:href=".uno:GoToNextPara"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveBullets"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" xlink:href=".uno:DefaultBullet"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" accel:mod1="true" xlink:href=".uno:UpdateInputFields"/>
- <accel:item accel:code="KEY_F12" xlink:href=".uno:DefaultNumbering"/>
- <accel:item accel:code="KEY_F" accel:shift="true" accel:mod1="true" xlink:href=".uno:RepeatSearch"/>
- <accel:item accel:code="KEY_R" accel:shift="true" accel:mod1="true" xlink:href=".uno:RefreshView"/>
- <accel:item accel:code="KEY_F10" accel:mod1="true" xlink:href=".uno:ControlCodes"/>
- <accel:item accel:code="KEY_F8" accel:mod1="true" xlink:href=".uno:Marks"/>
- <accel:item accel:code="KEY_F9" accel:mod1="true" xlink:href=".uno:Fieldnames"/>
- <accel:item accel:code="KEY_RETURN" xlink:href=".uno:InsertPara"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertColumnBreak"/>
- <accel:item accel:code="KEY_F2" accel:mod1="true" xlink:href=".uno:InsertField"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" xlink:href=".uno:InsertLinebreak"/>
- <accel:item accel:code="KEY_RETURN" accel:mod1="true" xlink:href=".uno:InsertPagebreak"/>
- <accel:item accel:code="KEY_F12" accel:mod1="true" xlink:href=".uno:InsertTable"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:mod1="true" xlink:href=".uno:InsertSoftHyphen"/>
- <accel:item accel:code="KEY_SPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertNonBreakingSpace"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertHardHyphen"/>
- <accel:item accel:code="KEY_D" accel:mod1="true" xlink:href=".uno:UnderlineDouble"/>
- <accel:item accel:code="KEY_P" accel:shift="true" accel:mod1="true" xlink:href=".uno:SuperScript"/>
- <accel:item accel:code="KEY_B" accel:shift="true" accel:mod1="true" xlink:href=".uno:SubScript"/>
- <accel:item accel:code="KEY_T" accel:shift="true" accel:mod1="true" xlink:href=".uno:ResetTableProtection"/>
- <accel:item accel:code="KEY_F7" accel:mod1="true" xlink:href=".uno:ThesaurusDialog"/>
- <accel:item accel:code="KEY_ADD" accel:mod1="true" xlink:href=".uno:CalculateSel"/>
- <accel:item accel:code="KEY_F3" accel:mod1="true" xlink:href=".uno:EditGlossary"/>
- <accel:item accel:code="KEY_F7" xlink:href=".uno:SpellingAndGrammarDialog"/>
- <accel:item accel:code="KEY_F3" xlink:href=".uno:ExpandGlossary"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" accel:mod1="true" xlink:href=".uno:GotoPage"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" xlink:href=".uno:CharLeftSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" xlink:href=".uno:CharRightSel"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" xlink:href=".uno:LineUpSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" xlink:href=".uno:LineDownSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" xlink:href=".uno:StartOfLineSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" xlink:href=".uno:EndOfLineSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfDocumentSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfDocumentSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordRightSel"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordLeftSel"/>
- <accel:item accel:code="KEY_PAGEUP" accel:shift="true" xlink:href=".uno:PageUpSel"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" xlink:href=".uno:PageDownSel"/>
- <accel:item accel:code="KEY_LEFT" xlink:href=".uno:GoLeft"/>
- <accel:item accel:code="KEY_RIGHT" xlink:href=".uno:GoRight"/>
- <accel:item accel:code="KEY_UP" xlink:href=".uno:GoUp"/>
- <accel:item accel:code="KEY_DOWN" xlink:href=".uno:GoDown"/>
- <accel:item accel:code="KEY_HOME" xlink:href=".uno:GoToStartOfLine"/>
- <accel:item accel:code="KEY_END" xlink:href=".uno:GoToEndOfLine"/>
- <accel:item accel:code="KEY_HOME" accel:mod1="true" xlink:href=".uno:GoToStartOfDoc"/>
- <accel:item accel:code="KEY_END" accel:mod1="true" xlink:href=".uno:GoToEndOfDoc"/>
- <accel:item accel:code="KEY_RIGHT" accel:mod1="true" xlink:href=".uno:GoToNextWord"/>
- <accel:item accel:code="KEY_LEFT" accel:mod1="true" xlink:href=".uno:GoToPrevWord"/>
- <accel:item accel:code="KEY_BACKSPACE" xlink:href=".uno:SwBackspace"/>
- <accel:item accel:code="KEY_DELETE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToEndOfSentence"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToStartOfSentence"/>
- <accel:item accel:code="KEY_DELETE" accel:mod1="true" xlink:href=".uno:DelToEndOfWord"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod1="true" xlink:href=".uno:DelToStartOfWord"/>
- <accel:item accel:code="KEY_PAGEUP" xlink:href=".uno:PageUp"/>
- <accel:item accel:code="KEY_PAGEDOWN" xlink:href=".uno:PageDown"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" xlink:href=".uno:SetMultiSelection"/>
- <accel:item accel:code="KEY_F8" xlink:href=".uno:SetExtSelection"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod2="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_ESCAPE" xlink:href=".uno:Escape"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" xlink:href=".uno:ShiftBackspace"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfParaSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfParaSel"/>
- <accel:item accel:code="KEY_F4" accel:shift="true" xlink:href=".uno:JumpToNextFrame"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" xlink:href=".uno:RestoreEditingView"/>
- <accel:item accel:code="KEY_PAGEUP" accel:mod1="true" xlink:href=".uno:JumpToHeader"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:mod1="true" xlink:href=".uno:JumpToFooter"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:JumpToFootnoteArea"/>
- <accel:item accel:code="KEY_I" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectTextMode"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Text body&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" accel:shift="true" xlink:href=".uno:StyleApply?Style:string=Standard&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_1" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 1&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_2" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 2&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_3" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 3&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_4" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 4&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_5" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 5&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_M" accel:mod1="true" xlink:href=".uno:ResetAttributes"/>
- <accel:item accel:code="KEY_J" accel:shift="true" accel:mod1="true" xlink:href=".uno:FullScreen"/>
- <accel:item accel:code="KEY_DIVIDE" accel:mod1="true" xlink:href=".uno:InsertZWSP"/>
- <accel:item accel:code="KEY_N" accel:mod1="true" accel:mod2="true" xlink:href=".uno:InsertAnnotation"/>
-</accel:acceleratorlist>
diff --git a/sw/uiconfig/sglobal/menubar/menubar.xml b/sw/uiconfig/sglobal/menubar/menubar.xml
index 4b46f4d46a2a..c3bef67c8c12 100644
--- a/sw/uiconfig/sglobal/menubar/menubar.xml
+++ b/sw/uiconfig/sglobal/menubar/menubar.xml
@@ -1,457 +1,461 @@
<?xml version="1.0" encoding="UTF-8"?>
<menu:menubar xmlns:menu="http://openoffice.org/2001/menu" menu:id="menubar">
- <menu:menu menu:id=".uno:PickList">
+ <menu:menu menu:id=".uno:PickList">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:AddDirect"/>
+ <menu:menuitem menu:id=".uno:Open"/>
+ <menu:menuitem menu:id=".uno:RecentFileList"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:AutoPilotMenu"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:CloseDoc"/>
+ <menu:menuitem menu:id=".uno:Save"/>
+ <menu:menuitem menu:id=".uno:SaveAs"/>
+ <menu:menuitem menu:id=".uno:SaveAll"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Reload"/>
+ <menu:menuitem menu:id=".uno:VersionDialog"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ExportTo"/>
+ <menu:menuitem menu:id=".uno:ExportToPDF"/>
+ <menu:menu menu:id=".uno:SendToMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:AddDirect"/>
- <menu:menuitem menu:id=".uno:Open"/>
- <menu:menuitem menu:id=".uno:RecentFileList"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:AutoPilotMenu"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:CloseDoc"/>
- <menu:menuitem menu:id=".uno:Save"/>
- <menu:menuitem menu:id=".uno:SaveAs"/>
- <menu:menuitem menu:id=".uno:SaveAll"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:Reload"/>
- <menu:menuitem menu:id=".uno:VersionDialog"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ExportTo"/>
- <menu:menuitem menu:id=".uno:ExportToPDF"/>
- <menu:menu menu:id=".uno:SendToMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SendMail"/>
- <menu:menuitem menu:id=".uno:SendMailDocAsPDF"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:NewGlobalDoc"/>
- <menu:menuitem menu:id=".uno:NewHtmlDoc"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:SendOutlineToStarImpress"/>
- <menu:menuitem menu:id=".uno:SendOutlineToClipboard"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:CreateAbstract"/>
- <menu:menuitem menu:id=".uno:SendAbstractToStarImpress"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:SetDocumentProperties"/>
- <menu:menu menu:id=".uno:TemplateMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:Organizer"/>
- <menu:menuitem menu:id=".uno:AddressBookSource"/>
- <menu:menuitem menu:id=".uno:SaveAsTemplate"/>
- <menu:menuitem menu:id=".uno:OpenTemplate"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:WebHtml"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:PrintPreview"/>
- <menu:menuitem menu:id=".uno:Print"/>
- <menu:menuitem menu:id=".uno:PrinterSetup"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:Quit"/>
+ <menu:menuitem menu:id=".uno:SendMail"/>
+ <menu:menuitem menu:id=".uno:SendMailDocAsPDF"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:NewGlobalDoc"/>
+ <menu:menuitem menu:id=".uno:NewHtmlDoc"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:SendOutlineToStarImpress"/>
+ <menu:menuitem menu:id=".uno:SendOutlineToClipboard"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:CreateAbstract"/>
+ <menu:menuitem menu:id=".uno:SendAbstractToStarImpress"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:EditMenu">
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:SetDocumentProperties"/>
+ <menu:menu menu:id=".uno:TemplateMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:Undo"/>
- <menu:menuitem menu:id=".uno:Redo"/>
- <menu:menuitem menu:id=".uno:Repeat"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:Cut"/>
- <menu:menuitem menu:id=".uno:Copy"/>
- <menu:menuitem menu:id=".uno:Paste"/>
- <menu:menuitem menu:id=".uno:PasteSpecial"/>
- <menu:menu menu:id=".uno:SelectionModeMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SelectionModeDefault"/>
- <menu:menuitem menu:id=".uno:SelectionModeBlock"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:SelectTextMode"/>
- <menu:menuitem menu:id=".uno:SelectAll"/>
- <menu:menuseparator/>
- <menu:menu menu:id=".uno:ChangesMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:TrackChanges"/>
- <menu:menuitem menu:id=".uno:ProtectTraceChangeMode"/>
- <menu:menuitem menu:id=".uno:ShowTrackedChanges"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:AcceptTrackedChanges"/>
- <menu:menuitem menu:id=".uno:CommentChangeTracking"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:MergeDocuments"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:CompareDocuments"/>
- <menu:menuitem menu:id=".uno:SearchDialog"/>
- <menu:menuitem menu:id=".uno:EditGlossary"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ChangeDatabaseField"/>
- <menu:menuitem menu:id=".uno:FieldDialog"/>
- <menu:menuitem menu:id=".uno:EditFootnote"/>
- <menu:menuitem menu:id=".uno:IndexEntryDialog"/>
- <menu:menuitem menu:id=".uno:AuthoritiesEntryDialog"/>
- <menu:menuitem menu:id=".uno:EditHyperlink"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:LinkDialog"/>
- <menu:menuitem menu:id=".uno:PlugInsActive"/>
- <menu:menuitem menu:id=".uno:ImageMapDialog"/>
- <menu:menuitem menu:id=".uno:ObjectMenue"/>
+ <menu:menuitem menu:id=".uno:Organizer"/>
+ <menu:menuitem menu:id=".uno:AddressBookSource"/>
+ <menu:menuitem menu:id=".uno:SaveAsTemplate"/>
+ <menu:menuitem menu:id=".uno:OpenTemplate"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:ViewMenu">
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:WebHtml"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:PrintPreview"/>
+ <menu:menuitem menu:id=".uno:Print"/>
+ <menu:menuitem menu:id=".uno:PrinterSetup"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Quit"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:EditMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:Undo"/>
+ <menu:menuitem menu:id=".uno:Redo"/>
+ <menu:menuitem menu:id=".uno:Repeat"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Cut"/>
+ <menu:menuitem menu:id=".uno:Copy"/>
+ <menu:menuitem menu:id=".uno:Paste"/>
+ <menu:menuitem menu:id=".uno:PasteSpecial"/>
+ <menu:menu menu:id=".uno:SelectionModeMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:PrintLayout"/>
- <menu:menuitem menu:id=".uno:BrowseView"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:AvailableToolbars"/>
- <menu:menuitem menu:id=".uno:StatusBarVisible"/>
- <menu:menuitem menu:id=".uno:ShowImeStatusWindow"/>
- <menu:menuitem menu:id=".uno:Ruler"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ViewBounds"/>
- <menu:menuitem menu:id=".uno:Marks"/>
- <menu:menuitem menu:id=".uno:Fieldnames"/>
- <menu:menuitem menu:id=".uno:ControlCodes"/>
- <menu:menuitem menu:id=".uno:ShowHiddenParagraphs"/>
- <menu:menuitem menu:id=".uno:ShowAnnotations"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ViewDataSourceBrowser"/>
- <menu:menuitem menu:id=".uno:Navigator"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:FullScreen"/>
- <menu:menuitem menu:id=".uno:Zoom"/>
+ <menu:menuitem menu:id=".uno:SelectionModeDefault" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:SelectionModeBlock" menu:style="radio"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:InsertMenu">
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:SelectTextMode"/>
+ <menu:menuitem menu:id=".uno:SelectAll"/>
+ <menu:menuseparator/>
+ <menu:menu menu:id=".uno:ChangesMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertBreak"/>
- <menu:menu menu:id=".uno:FieldMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertDateField"/>
- <menu:menuitem menu:id=".uno:InsertTimeField"/>
- <menu:menuitem menu:id=".uno:InsertPageNumberField"/>
- <menu:menuitem menu:id=".uno:InsertPageCountField"/>
- <menu:menuitem menu:id=".uno:InsertTopicField"/>
- <menu:menuitem menu:id=".uno:InsertTitleField"/>
- <menu:menuitem menu:id=".uno:InsertAuthorField"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:InsertField"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:InsertSymbol"/>
- <menu:menu menu:id=".uno:FormattingMarkMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertNonBreakingSpace"/>
- <menu:menuitem menu:id=".uno:InsertHardHyphen"/>
- <menu:menuitem menu:id=".uno:InsertSoftHyphen"/>
- <menu:menuitem menu:id=".uno:InsertZWSP"/>
- <menu:menuitem menu:id=".uno:InsertZWNBSP"/>
- <menu:menuitem menu:id=".uno:InsertLRM"/>
- <menu:menuitem menu:id=".uno:InsertRLM"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:InsertSection"/>
- <menu:menuitem menu:id=".uno:HyperlinkDialog"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:InsertPageHeader"/>
- <menu:menuitem menu:id=".uno:InsertPageFooter"/>
- <menu:menuitem menu:id=".uno:InsertFootnoteDialog"/>
- <menu:menuitem menu:id=".uno:InsertCaptionDialog"/>
- <menu:menuitem menu:id=".uno:InsertBookmark"/>
- <menu:menuitem menu:id=".uno:InsertReferenceField"/>
- <menu:menuitem menu:id=".uno:InsertAnnotation"/>
- <menu:menuitem menu:id=".uno:InsertScript"/>
- <menu:menu menu:id=".uno:IndexesMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertIndexesEntry"/>
- <menu:menuitem menu:id=".uno:InsertMultiIndex"/>
- <menu:menuitem menu:id=".uno:InsertAuthoritiesEntry"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:InsertEnvelope"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:InsertFrame"/>
- <menu:menuitem menu:id=".uno:InsertTable"/>
- <menu:menuitem menu:id=".uno:InsertGraphicRuler"/>
- <menu:menu menu:id=".uno:GraphicMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertGraphic"/>
- <menu:menu menu:id=".uno:Scan">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:TwainSelect"/>
- <menu:menuitem menu:id=".uno:TwainTransfer"/>
- </menu:menupopup>
- </menu:menu>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:InsertAVMedia"/>
- <menu:menu menu:id=".uno:ObjectMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertObject"/>
- <menu:menuitem menu:id=".uno:InsertPlugin"/>
- <menu:menuitem menu:id=".uno:InsertSound"/>
- <menu:menuitem menu:id=".uno:InsertVideo"/>
- <menu:menuitem menu:id=".uno:InsertObjectStarMath"/>
- <menu:menuitem menu:id=".uno:InsertObjectChart"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:InsertObjectFloatingFrame"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:InsertDoc"/>
+ <menu:menuitem menu:id=".uno:TrackChanges"/>
+ <menu:menuitem menu:id=".uno:ProtectTraceChangeMode"/>
+ <menu:menuitem menu:id=".uno:ShowTrackedChanges"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:AcceptTrackedChanges"/>
+ <menu:menuitem menu:id=".uno:CommentChangeTracking"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:MergeDocuments"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:FormatMenu">
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:CompareDocuments"/>
+ <menu:menuitem menu:id=".uno:SearchDialog"/>
+ <menu:menuitem menu:id=".uno:EditGlossary"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ChangeDatabaseField"/>
+ <menu:menuitem menu:id=".uno:FieldDialog"/>
+ <menu:menuitem menu:id=".uno:EditFootnote"/>
+ <menu:menuitem menu:id=".uno:IndexEntryDialog"/>
+ <menu:menuitem menu:id=".uno:AuthoritiesEntryDialog"/>
+ <menu:menuitem menu:id=".uno:EditHyperlink"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:LinkDialog"/>
+ <menu:menuitem menu:id=".uno:PlugInsActive"/>
+ <menu:menuitem menu:id=".uno:ImageMapDialog"/>
+ <menu:menuitem menu:id=".uno:ObjectMenue"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:ViewMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:PrintLayout"/>
+ <menu:menuitem menu:id=".uno:BrowseView"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:AvailableToolbars"/>
+ <menu:menuitem menu:id=".uno:StatusBarVisible"/>
+ <menu:menuitem menu:id=".uno:ShowImeStatusWindow"/>
+ <menu:menuitem menu:id=".uno:Ruler"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ViewBounds"/>
+ <menu:menuitem menu:id=".uno:Marks"/>
+ <menu:menuitem menu:id=".uno:Fieldnames"/>
+ <menu:menuitem menu:id=".uno:ControlCodes"/>
+ <menu:menuitem menu:id=".uno:ShowHiddenParagraphs"/>
+ <menu:menuitem menu:id=".uno:ShowAnnotations"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ViewDataSourceBrowser"/>
+ <menu:menuitem menu:id=".uno:Navigator"/>
+ <menu:menuitem menu:id=".uno:TaskPane"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:FullScreen"/>
+ <menu:menuitem menu:id=".uno:Zoom"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:InsertMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:InsertBreak"/>
+ <menu:menu menu:id=".uno:FieldMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:ResetAttributes"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:FontDialog"/>
- <menu:menuitem menu:id=".uno:ParagraphDialog"/>
- <menu:menuitem menu:id=".uno:BulletsAndNumberingDialog"/>
- <menu:menuitem menu:id=".uno:PageDialog"/>
- <menu:menuseparator/>
- <menu:menu menu:id=".uno:TransliterateMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:ChangeCaseToUpper"/>
- <menu:menuitem menu:id=".uno:ChangeCaseToLower"/>
- <menu:menuitem menu:id=".uno:ChangeCaseToHalfWidth"/>
- <menu:menuitem menu:id=".uno:ChangeCaseToFullWidth"/>
- <menu:menuitem menu:id=".uno:ChangeCaseToHiragana"/>
- <menu:menuitem menu:id=".uno:ChangeCaseToKatakana"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:RubyDialog"/>
- <menu:menuitem menu:id=".uno:FormatColumns"/>
- <menu:menuitem menu:id=".uno:EditRegion"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:DesignerDialog"/>
- <menu:menu menu:id=".uno:AutoFormatMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:OnlineAutoFormat"/>
- <menu:menuitem menu:id=".uno:AutoFormatApply"/>
- <menu:menuitem menu:id=".uno:AutoFormatRedlineApply"/>
- <menu:menuitem menu:id=".uno:AutoCorrectDlg"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menu menu:id=".uno:AnchorMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SetAnchorToPage"/>
- <menu:menuitem menu:id=".uno:SetAnchorToPara"/>
- <menu:menuitem menu:id=".uno:SetAnchorAtChar"/>
- <menu:menuitem menu:id=".uno:SetAnchorToChar"/>
- <menu:menuitem menu:id=".uno:SetAnchorToFrame"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:WrapMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:WrapOff"/>
- <menu:menuitem menu:id=".uno:WrapOn"/>
- <menu:menuitem menu:id=".uno:WrapIdeal"/>
- <menu:menuitem menu:id=".uno:WrapThrough"/>
- <menu:menuitem menu:id=".uno:WrapThroughTransparent"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:WrapContour"/>
- <menu:menuitem menu:id=".uno:ContourDialog"/>
- <menu:menuitem menu:id=".uno:WrapAnchorOnly"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:TextWrap"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:ObjectAlign">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:CommonAlignLeft"/>
- <menu:menuitem menu:id=".uno:CommonAlignHorizontalCenter"/>
- <menu:menuitem menu:id=".uno:CommonAlignRight"/>
- <menu:menuitem menu:id=".uno:CommonAlignJustified"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:CommonAlignTop"/>
- <menu:menuitem menu:id=".uno:CommonAlignVerticalCenter"/>
- <menu:menuitem menu:id=".uno:CommonAlignBottom"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:ArrangeMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:BringToFront"/>
- <menu:menuitem menu:id=".uno:ObjectForwardOne"/>
- <menu:menuitem menu:id=".uno:ObjectBackOne"/>
- <menu:menuitem menu:id=".uno:SendToBack"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:SetObjectToForeground"/>
- <menu:menuitem menu:id=".uno:SetObjectToBackground"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:FlipMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:FlipHorizontal"/>
- <menu:menuitem menu:id=".uno:FlipVertical"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:GroupMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:FormatGroup"/>
- <menu:menuitem menu:id=".uno:FormatUngroup"/>
- <menu:menuitem menu:id=".uno:EnterGroup"/>
- <menu:menuitem menu:id=".uno:LeaveGroup"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menu menu:id=".uno:ObjectMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:TransformDialog"/>
- <menu:menuitem menu:id=".uno:FormatLine"/>
- <menu:menuitem menu:id=".uno:FormatArea"/>
- <menu:menuitem menu:id=".uno:TextAttributes"/>
- <menu:menuitem menu:id=".uno:FontWork"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ObjectTitleDescription"/>
- <menu:menuitem menu:id=".uno:NameGroup"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:FrameDialog"/>
- <menu:menuitem menu:id=".uno:GraphicDialog"/>
+ <menu:menuitem menu:id=".uno:InsertDateField"/>
+ <menu:menuitem menu:id=".uno:InsertTimeField"/>
+ <menu:menuitem menu:id=".uno:InsertPageNumberField"/>
+ <menu:menuitem menu:id=".uno:InsertPageCountField"/>
+ <menu:menuitem menu:id=".uno:InsertTopicField"/>
+ <menu:menuitem menu:id=".uno:InsertTitleField"/>
+ <menu:menuitem menu:id=".uno:InsertAuthorField"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertField"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:TableMenu">
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:InsertSymbol"/>
+ <menu:menu menu:id=".uno:FormattingMarkMenu">
<menu:menupopup>
- <menu:menu menu:id=".uno:TableInsertMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertTable"/>
- <menu:menuitem menu:id=".uno:InsertRowDialog"/>
- <menu:menuitem menu:id=".uno:InsertColumnDialog"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:TableDeleteMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:DeleteTable"/>
- <menu:menuitem menu:id=".uno:DeleteRows"/>
- <menu:menuitem menu:id=".uno:DeleteColumns"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:TableSelectMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SelectTable"/>
- <menu:menuitem menu:id=".uno:EntireRow"/>
- <menu:menuitem menu:id=".uno:EntireColumn"/>
- <menu:menuitem menu:id=".uno:EntireCell"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:MergeCells"/>
- <menu:menuitem menu:id=".uno:SplitCell"/>
- <menu:menuitem menu:id=".uno:Protect"/>
- <menu:menuitem menu:id=".uno:MergeTable"/>
- <menu:menuitem menu:id=".uno:SplitTable"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:AutoFormat"/>
- <menu:menu menu:id=".uno:TableAutoFitMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SetColumnWidth"/>
- <menu:menuitem menu:id=".uno:SetOptimalColumnWidth"/>
- <menu:menuitem menu:id=".uno:DistributeColumns"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:SetRowHeight"/>
- <menu:menuitem menu:id=".uno:SetOptimalRowHeight"/>
- <menu:menuitem menu:id=".uno:DistributeRows"/>
- <menu:menuitem menu:id=".uno:RowSplit"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:HeadingRowsRepeat"/>
- <menu:menu menu:id=".uno:TableConvertMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:ConvertTextToTable"/>
- <menu:menuitem menu:id=".uno:ConvertTableToText"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:TableSort"/>
- <menu:menuitem menu:id=".uno:InsertFormula"/>
- <menu:menuitem menu:id=".uno:TableNumberFormatDialog"/>
- <menu:menuitem menu:id=".uno:TableBoundaries"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:TableDialog"/>
+ <menu:menuitem menu:id=".uno:InsertNonBreakingSpace"/>
+ <menu:menuitem menu:id=".uno:InsertHardHyphen"/>
+ <menu:menuitem menu:id=".uno:InsertSoftHyphen"/>
+ <menu:menuitem menu:id=".uno:InsertZWSP"/>
+ <menu:menuitem menu:id=".uno:InsertZWNBSP"/>
+ <menu:menuitem menu:id=".uno:InsertLRM"/>
+ <menu:menuitem menu:id=".uno:InsertRLM"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:ToolsMenu">
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertSection"/>
+ <menu:menuitem menu:id=".uno:HyperlinkDialog"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertPageHeader"/>
+ <menu:menuitem menu:id=".uno:InsertPageFooter"/>
+ <menu:menuitem menu:id=".uno:InsertFootnoteDialog"/>
+ <menu:menuitem menu:id=".uno:InsertCaptionDialog"/>
+ <menu:menuitem menu:id=".uno:InsertBookmark"/>
+ <menu:menuitem menu:id=".uno:InsertReferenceField"/>
+ <menu:menuitem menu:id=".uno:InsertAnnotation"/>
+ <menu:menuitem menu:id=".uno:InsertScript"/>
+ <menu:menu menu:id=".uno:IndexesMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:SpellingAndGrammarDialog"/>
- <menu:menu menu:id=".uno:LanguageMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SetLanguageSelectionMenu"/>
- <menu:menuitem menu:id=".uno:SetLanguageParagraphMenu"/>
- <menu:menuitem menu:id=".uno:SetLanguageAllTextMenu"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:HangulHanjaConversion"/>
- <menu:menuitem menu:id=".uno:ChineseConversion"/>
- <menu:menuitem menu:id=".uno:ThesaurusDialog"/>
- <menu:menuitem menu:id=".uno:Hyphenate"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:MoreDictionaries"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:WordCountDialog"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ChapterNumberingDialog"/>
- <menu:menuitem menu:id=".uno:LineNumberingDialog"/>
- <menu:menuitem menu:id=".uno:FootnoteDialog"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:Gallery"/>
- <menu:menuitem menu:id=".uno:AVMediaPlayer"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:BibliographyComponent"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:MergeDocuments"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:SortDialog"/>
- <menu:menuitem menu:id=".uno:CalculateSel"/>
- <menu:menu menu:id=".uno:UpdateMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:UpdateAll"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:UpdateFields"/>
- <menu:menuitem menu:id=".uno:UpdateAllLinks"/>
- <menu:menuitem menu:id=".uno:UpdateCharts"/>
- <menu:menuitem menu:id=".uno:UpdateCurIndex"/>
- <menu:menuitem menu:id=".uno:UpdateAllIndexes"/>
- <menu:menuitem menu:id=".uno:Repaginate"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menu menu:id=".uno:MacrosMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:MacroRecorder"/>
- <menu:menuitem menu:id=".uno:RunMacro"/>
- <menu:menu menu:id=".uno:ScriptOrganizer"/>
- <menu:menuitem menu:id=".uno:MacroSignature"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:MacroOrganizer?TabId:short=1"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id="service:com.sun.star.deployment.ui.PackageManagerDialog"/>
- <menu:menuitem menu:id=".uno:OpenXMLFilterSettings"/>
- <menu:menuitem menu:id=".uno:AutoCorrectDlg"/>
- <menu:menuitem menu:id=".uno:ConfigureDialog"/>
- <menu:menuitem menu:id=".uno:OptionsTreeDialog"/>
+ <menu:menuitem menu:id=".uno:InsertIndexesEntry"/>
+ <menu:menuitem menu:id=".uno:InsertMultiIndex"/>
+ <menu:menuitem menu:id=".uno:InsertAuthoritiesEntry"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:WindowList">
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertEnvelope"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertFrame"/>
+ <menu:menuitem menu:id=".uno:InsertTable"/>
+ <menu:menuitem menu:id=".uno:InsertGraphicRuler"/>
+ <menu:menu menu:id=".uno:GraphicMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:NewWindow"/>
- <menu:menuitem menu:id=".uno:CloseWin"/>
- <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertGraphic"/>
+ <menu:menu menu:id=".uno:Scan">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:TwainSelect"/>
+ <menu:menuitem menu:id=".uno:TwainTransfer"/>
+ </menu:menupopup>
+ </menu:menu>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:HelpMenu">
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:InsertAVMedia"/>
+ <menu:menu menu:id=".uno:ObjectMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:HelpIndex"/>
- <menu:menuitem menu:id=".uno:ExtendedHelp"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:HelpSupport"/>
- <menu:menuitem menu:id=".uno:OnlineRegistrationDlg"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:About"/>
+ <menu:menuitem menu:id=".uno:InsertObject"/>
+ <menu:menuitem menu:id=".uno:InsertPlugin"/>
+ <menu:menuitem menu:id=".uno:InsertSound"/>
+ <menu:menuitem menu:id=".uno:InsertVideo"/>
+ <menu:menuitem menu:id=".uno:InsertObjectStarMath"/>
+ <menu:menuitem menu:id=".uno:InsertObjectChart"/>
</menu:menupopup>
- </menu:menu>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:InsertObjectFloatingFrame"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertDoc"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:FormatMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:ResetAttributes"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:FontDialog"/>
+ <menu:menuitem menu:id=".uno:ParagraphDialog"/>
+ <menu:menuitem menu:id=".uno:BulletsAndNumberingDialog"/>
+ <menu:menuitem menu:id=".uno:PageDialog"/>
+ <menu:menuseparator/>
+ <menu:menu menu:id=".uno:TransliterateMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:ChangeCaseToSentenceCase"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToLower"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToUpper"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToTitleCase"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToToggleCase"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToHalfWidth"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToFullWidth"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToHiragana"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToKatakana"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:RubyDialog"/>
+ <menu:menuitem menu:id=".uno:FormatColumns"/>
+ <menu:menuitem menu:id=".uno:EditRegion"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:DesignerDialog"/>
+ <menu:menu menu:id=".uno:AutoFormatMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:OnlineAutoFormat"/>
+ <menu:menuitem menu:id=".uno:AutoFormatApply"/>
+ <menu:menuitem menu:id=".uno:AutoFormatRedlineApply"/>
+ <menu:menuitem menu:id=".uno:AutoCorrectDlg"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menu menu:id=".uno:AnchorMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:SetAnchorToPage" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:SetAnchorToPara" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:SetAnchorAtChar" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:SetAnchorToChar" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:SetAnchorToFrame" menu:style="radio"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:WrapMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:WrapOff"/>
+ <menu:menuitem menu:id=".uno:WrapOn"/>
+ <menu:menuitem menu:id=".uno:WrapIdeal"/>
+ <menu:menuitem menu:id=".uno:WrapThrough"/>
+ <menu:menuitem menu:id=".uno:WrapThroughTransparent"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:WrapContour"/>
+ <menu:menuitem menu:id=".uno:ContourDialog"/>
+ <menu:menuitem menu:id=".uno:WrapAnchorOnly"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:TextWrap"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:ObjectAlign">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:CommonAlignLeft" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:CommonAlignHorizontalCenter" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:CommonAlignRight" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:CommonAlignJustified" menu:style="radio"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:CommonAlignTop"/>
+ <menu:menuitem menu:id=".uno:CommonAlignVerticalCenter"/>
+ <menu:menuitem menu:id=".uno:CommonAlignBottom"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:ArrangeMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:BringToFront"/>
+ <menu:menuitem menu:id=".uno:ObjectForwardOne"/>
+ <menu:menuitem menu:id=".uno:ObjectBackOne"/>
+ <menu:menuitem menu:id=".uno:SendToBack"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:SetObjectToForeground"/>
+ <menu:menuitem menu:id=".uno:SetObjectToBackground"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:FlipMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:FlipHorizontal"/>
+ <menu:menuitem menu:id=".uno:FlipVertical"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:GroupMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:FormatGroup"/>
+ <menu:menuitem menu:id=".uno:FormatUngroup"/>
+ <menu:menuitem menu:id=".uno:EnterGroup"/>
+ <menu:menuitem menu:id=".uno:LeaveGroup"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menu menu:id=".uno:ObjectMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:TransformDialog"/>
+ <menu:menuitem menu:id=".uno:FormatLine"/>
+ <menu:menuitem menu:id=".uno:FormatArea"/>
+ <menu:menuitem menu:id=".uno:TextAttributes"/>
+ <menu:menuitem menu:id=".uno:FontWork"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ObjectTitleDescription"/>
+ <menu:menuitem menu:id=".uno:NameGroup"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:FrameDialog"/>
+ <menu:menuitem menu:id=".uno:GraphicDialog"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:TableMenu">
+ <menu:menupopup>
+ <menu:menu menu:id=".uno:TableInsertMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:InsertTable"/>
+ <menu:menuitem menu:id=".uno:InsertRowDialog"/>
+ <menu:menuitem menu:id=".uno:InsertColumnDialog"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:TableDeleteMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:DeleteTable"/>
+ <menu:menuitem menu:id=".uno:DeleteRows"/>
+ <menu:menuitem menu:id=".uno:DeleteColumns"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:TableSelectMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:SelectTable"/>
+ <menu:menuitem menu:id=".uno:EntireRow"/>
+ <menu:menuitem menu:id=".uno:EntireColumn"/>
+ <menu:menuitem menu:id=".uno:EntireCell"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:MergeCells"/>
+ <menu:menuitem menu:id=".uno:SplitCell"/>
+ <menu:menuitem menu:id=".uno:Protect"/>
+ <menu:menuitem menu:id=".uno:MergeTable"/>
+ <menu:menuitem menu:id=".uno:SplitTable"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:AutoFormat"/>
+ <menu:menu menu:id=".uno:TableAutoFitMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:SetColumnWidth"/>
+ <menu:menuitem menu:id=".uno:SetOptimalColumnWidth"/>
+ <menu:menuitem menu:id=".uno:DistributeColumns"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:SetRowHeight"/>
+ <menu:menuitem menu:id=".uno:SetOptimalRowHeight"/>
+ <menu:menuitem menu:id=".uno:DistributeRows"/>
+ <menu:menuitem menu:id=".uno:RowSplit"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:HeadingRowsRepeat"/>
+ <menu:menu menu:id=".uno:TableConvertMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:ConvertTextToTable"/>
+ <menu:menuitem menu:id=".uno:ConvertTableToText"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:TableSort"/>
+ <menu:menuitem menu:id=".uno:InsertFormula"/>
+ <menu:menuitem menu:id=".uno:TableNumberFormatDialog"/>
+ <menu:menuitem menu:id=".uno:TableBoundaries"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:TableDialog"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:ToolsMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:SpellingAndGrammarDialog"/>
+ <menu:menu menu:id=".uno:LanguageMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:SetLanguageSelectionMenu"/>
+ <menu:menuitem menu:id=".uno:SetLanguageParagraphMenu"/>
+ <menu:menuitem menu:id=".uno:SetLanguageAllTextMenu"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:HangulHanjaConversion"/>
+ <menu:menuitem menu:id=".uno:ChineseConversion"/>
+ <menu:menuitem menu:id=".uno:ThesaurusDialog"/>
+ <menu:menuitem menu:id=".uno:Hyphenate"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:MoreDictionaries"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:WordCountDialog"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ChapterNumberingDialog"/>
+ <menu:menuitem menu:id=".uno:LineNumberingDialog"/>
+ <menu:menuitem menu:id=".uno:FootnoteDialog"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Gallery"/>
+ <menu:menuitem menu:id=".uno:AVMediaPlayer"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:BibliographyComponent"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:MergeDocuments"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:SortDialog"/>
+ <menu:menuitem menu:id=".uno:CalculateSel"/>
+ <menu:menu menu:id=".uno:UpdateMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:UpdateAll"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:UpdateFields"/>
+ <menu:menuitem menu:id=".uno:UpdateAllLinks"/>
+ <menu:menuitem menu:id=".uno:UpdateCharts"/>
+ <menu:menuitem menu:id=".uno:UpdateCurIndex"/>
+ <menu:menuitem menu:id=".uno:UpdateAllIndexes"/>
+ <menu:menuitem menu:id=".uno:Repaginate"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menu menu:id=".uno:MacrosMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:MacroRecorder"/>
+ <menu:menuitem menu:id=".uno:RunMacro"/>
+ <menu:menu menu:id=".uno:ScriptOrganizer"/>
+ <menu:menuitem menu:id=".uno:MacroSignature"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:MacroOrganizer?TabId:short=1"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="service:com.sun.star.deployment.ui.PackageManagerDialog"/>
+ <menu:menuitem menu:id=".uno:OpenXMLFilterSettings"/>
+ <menu:menuitem menu:id=".uno:AutoCorrectDlg"/>
+ <menu:menuitem menu:id=".uno:ConfigureDialog"/>
+ <menu:menuitem menu:id=".uno:OptionsTreeDialog"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:WindowList">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:NewWindow"/>
+ <menu:menuitem menu:id=".uno:CloseWin"/>
+ <menu:menuseparator/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:HelpMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:HelpIndex"/>
+ <menu:menuitem menu:id=".uno:ExtendedHelp"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:HelpSupport"/>
+ <menu:menuitem menu:id=".uno:OnlineRegistrationDlg"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:About"/>
+ </menu:menupopup>
+ </menu:menu>
</menu:menubar>
diff --git a/sw/uiconfig/sglobal/toolbar/extrusionobjectbar.xml b/sw/uiconfig/sglobal/toolbar/extrusionobjectbar.xml
index 1f212226cf52..148849db6ee7 100644
--- a/sw/uiconfig/sglobal/toolbar/extrusionobjectbar.xml
+++ b/sw/uiconfig/sglobal/toolbar/extrusionobjectbar.xml
@@ -8,9 +8,9 @@
<toolbar:toolbaritem xlink:href=".uno:ExtrusionTiltLeft" toolbar:helpid="10963"/>
<toolbar:toolbaritem xlink:href=".uno:ExtrusionTiltRight" toolbar:helpid="10964"/>
<toolbar:toolbarseparator/>
- <toolbar:toolbaritem xlink:href=".uno:ExtrusionDepthFloater" toolbar:helpid="10965"/>
- <toolbar:toolbaritem xlink:href=".uno:ExtrusionDirectionFloater" toolbar:helpid="10966"/>
- <toolbar:toolbaritem xlink:href=".uno:ExtrusionLightingFloater" toolbar:helpid="10967"/>
- <toolbar:toolbaritem xlink:href=".uno:ExtrusionSurfaceFloater" toolbar:helpid="10968"/>
- <toolbar:toolbaritem xlink:href=".uno:Extrusion3DColor" toolbar:helpid="10969"/>
+ <toolbar:toolbaritem xlink:href=".uno:ExtrusionDepthFloater" toolbar:helpid="10965" toolbar:style="dropdownonly"/>
+ <toolbar:toolbaritem xlink:href=".uno:ExtrusionDirectionFloater" toolbar:helpid="10966" toolbar:style="dropdownonly"/>
+ <toolbar:toolbaritem xlink:href=".uno:ExtrusionLightingFloater" toolbar:helpid="10967" toolbar:style="dropdownonly"/>
+ <toolbar:toolbaritem xlink:href=".uno:ExtrusionSurfaceFloater" toolbar:helpid="10968" toolbar:style="dropdownonly"/>
+ <toolbar:toolbaritem xlink:href=".uno:Extrusion3DColor" toolbar:helpid="10969" toolbar:style="dropdownonly"/>
</toolbar:toolbar> \ No newline at end of file
diff --git a/sw/uiconfig/sglobal/toolbar/findbar.xml b/sw/uiconfig/sglobal/toolbar/findbar.xml
new file mode 100644
index 000000000000..9ef9d8a1a78f
--- /dev/null
+++ b/sw/uiconfig/sglobal/toolbar/findbar.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE toolbar:toolbar PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "toolbar.dtd">
+<toolbar:toolbar xmlns:toolbar="http://openoffice.org/2001/toolbar" xmlns:xlink="http://www.w3.org/1999/xlink" toolbar:id="toolbar">
+ <toolbar:toolbaritem xlink:href=".uno:FindText" toolbar:helpid="helpid:100105" />
+ <toolbar:toolbaritem xlink:href=".uno:DownSearch" toolbar:helpid="helpid:100105" />
+ <toolbar:toolbaritem xlink:href=".uno:UpSearch" toolbar:helpid="helpid:100105" />
+ <toolbar:toolbaritem xlink:href=".uno:SearchDialog" toolbar:text="Find &amp; Replace" toolbar:visible="false" toolbar:helpid="helpid:100105"/>
+</toolbar:toolbar>
diff --git a/sw/uiconfig/sglobal/toolbar/fontworkobjectbar.xml b/sw/uiconfig/sglobal/toolbar/fontworkobjectbar.xml
index 3ac334e0e920..32de621477dc 100644
--- a/sw/uiconfig/sglobal/toolbar/fontworkobjectbar.xml
+++ b/sw/uiconfig/sglobal/toolbar/fontworkobjectbar.xml
@@ -3,9 +3,9 @@
<toolbar:toolbar xmlns:toolbar="http://openoffice.org/2001/toolbar" xmlns:xlink="http://www.w3.org/1999/xlink" toolbar:id="toolbar">
<toolbar:toolbaritem xlink:href=".uno:FontworkGalleryFloater" toolbar:helpid="helpid:10977" />
<toolbar:toolbarseparator/>
- <toolbar:toolbaritem xlink:href=".uno:FontworkShapeType" toolbar:helpid="helpid:10978" toolbar:style="radio dropdown" />
+ <toolbar:toolbaritem xlink:href=".uno:FontworkShapeType" toolbar:helpid="helpid:10978" toolbar:style="dropdownonly"/>
<toolbar:toolbaritem xlink:href=".uno:FontworkSameLetterHeights" toolbar:helpid="helpid:10979" />
<toolbar:toolbarseparator/>
- <toolbar:toolbaritem xlink:href=".uno:FontworkAlignmentFloater" toolbar:helpid="helpid:10981" toolbar:style="dropdown" />
- <toolbar:toolbaritem xlink:href=".uno:FontworkCharacterSpacingFloater" toolbar:helpid="helpid:10982" toolbar:style="dropdown" />
+ <toolbar:toolbaritem xlink:href=".uno:FontworkAlignmentFloater" toolbar:helpid="helpid:10981" toolbar:style="dropdownonly"/>
+ <toolbar:toolbaritem xlink:href=".uno:FontworkCharacterSpacingFloater" toolbar:helpid="helpid:10982" toolbar:style="dropdownonly"/>
</toolbar:toolbar> \ No newline at end of file
diff --git a/sw/uiconfig/sweb/accelerator/de/default.xml b/sw/uiconfig/sweb/accelerator/de/default.xml
deleted file mode 100644
index b134a2a41a89..000000000000
--- a/sw/uiconfig/sweb/accelerator/de/default.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
- <accel:item accel:code="KEY_F11" xlink:href=".uno:DesignerDialog"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" xlink:href=".uno:StyleNewByExample"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" accel:mod1="true" xlink:href=".uno:StyleUpdateByExample"/>
- <accel:item accel:code="KEY_F11" accel:mod1="true" xlink:href=".uno:ActivateStyleApply"/>
- <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href=".uno:Redo"/>
- <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_UNDO" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_REPEAT" xlink:href=".uno:Repeat"/>
- <accel:item accel:code="KEY_K" accel:shift="true" accel:mod1="true" xlink:href=".uno:Italic"/>
- <accel:item accel:code="KEY_F" accel:shift="true" accel:mod1="true" xlink:href=".uno:Bold"/>
- <accel:item accel:code="KEY_U" accel:shift="true" accel:mod1="true" xlink:href=".uno:Underline"/>
- <accel:item accel:code="KEY_L" accel:mod1="true" xlink:href=".uno:LeftPara"/>
- <accel:item accel:code="KEY_R" accel:mod1="true" xlink:href=".uno:RightPara"/>
- <accel:item accel:code="KEY_E" accel:mod1="true" xlink:href=".uno:CenterPara"/>
- <accel:item accel:code="KEY_B" accel:mod1="true" xlink:href=".uno:JustifyPara"/>
- <accel:item accel:code="KEY_INSERT" xlink:href=".uno:InsertMode"/>
- <accel:item accel:code="KEY_F5" xlink:href=".uno:Navigator"/>
- <accel:item accel:code="KEY_A" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaLeftToRight"/>
- <accel:item accel:code="KEY_D" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaRightToLeft"/>
- <accel:item accel:code="KEY_V" accel:shift="true" accel:mod1="true" xlink:href=".uno:PasteSpecial"/>
- <accel:item accel:code="KEY_F9" xlink:href=".uno:UpdateFields"/>
- <accel:item accel:code="KEY_MULTIPLY" accel:mod1="true" xlink:href=".uno:ExecuteMacroField"/>
- <accel:item accel:code="KEY_F2" xlink:href=".uno:InsertFormula"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" xlink:href=".uno:Calc"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveUp"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" xlink:href=".uno:GoToPrevPara"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveDown"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" xlink:href=".uno:GoToNextPara"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveBullets"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" xlink:href=".uno:DefaultBullet"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" accel:mod1="true" xlink:href=".uno:UpdateInputFields"/>
- <accel:item accel:code="KEY_F12" xlink:href=".uno:DefaultNumbering"/>
- <accel:item accel:code="KEY_G" accel:mod1="true" xlink:href=".uno:RepeatSearch"/>
- <accel:item accel:code="KEY_R" accel:shift="true" accel:mod1="true" xlink:href=".uno:RefreshView"/>
- <accel:item accel:code="KEY_F10" accel:mod1="true" xlink:href=".uno:ControlCodes"/>
- <accel:item accel:code="KEY_F8" accel:mod1="true" xlink:href=".uno:Marks"/>
- <accel:item accel:code="KEY_F9" accel:mod1="true" xlink:href=".uno:Fieldnames"/>
- <accel:item accel:code="KEY_RETURN" xlink:href=".uno:InsertPara"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertColumnBreak"/>
- <accel:item accel:code="KEY_F2" accel:mod1="true" xlink:href=".uno:InsertField"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" xlink:href=".uno:InsertLinebreak"/>
- <accel:item accel:code="KEY_RETURN" accel:mod1="true" xlink:href=".uno:InsertPagebreak"/>
- <accel:item accel:code="KEY_F12" accel:mod1="true" xlink:href=".uno:InsertTable"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:mod1="true" xlink:href=".uno:InsertSoftHyphen"/>
- <accel:item accel:code="KEY_SPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertNonBreakingSpace"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertHardHyphen"/>
- <accel:item accel:code="KEY_D" accel:mod1="true" xlink:href=".uno:UnderlineDouble"/>
- <accel:item accel:code="KEY_H" accel:mod1="true" xlink:href=".uno:SuperScript"/>
- <accel:item accel:code="KEY_T" accel:mod1="true" xlink:href=".uno:SubScript"/>
- <accel:item accel:code="KEY_T" accel:shift="true" accel:mod1="true" xlink:href=".uno:ResetTableProtection"/>
- <accel:item accel:code="KEY_F7" accel:mod1="true" xlink:href=".uno:ThesaurusDialog"/>
- <accel:item accel:code="KEY_ADD" accel:mod1="true" xlink:href=".uno:CalculateSel"/>
- <accel:item accel:code="KEY_F3" accel:mod1="true" xlink:href=".uno:EditGlossary"/>
- <accel:item accel:code="KEY_F7" xlink:href=".uno:SpellingAndGrammarDialog"/>
- <accel:item accel:code="KEY_F3" xlink:href=".uno:ExpandGlossary"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" accel:mod1="true" xlink:href=".uno:GotoPage"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" xlink:href=".uno:CharLeftSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" xlink:href=".uno:CharRightSel"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" xlink:href=".uno:LineUpSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" xlink:href=".uno:LineDownSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" xlink:href=".uno:StartOfLineSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" xlink:href=".uno:EndOfLineSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfDocumentSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfDocumentSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordRightSel"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordLeftSel"/>
- <accel:item accel:code="KEY_PAGEUP" accel:shift="true" xlink:href=".uno:PageUpSel"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" xlink:href=".uno:PageDownSel"/>
- <accel:item accel:code="KEY_LEFT" xlink:href=".uno:GoLeft"/>
- <accel:item accel:code="KEY_RIGHT" xlink:href=".uno:GoRight"/>
- <accel:item accel:code="KEY_UP" xlink:href=".uno:GoUp"/>
- <accel:item accel:code="KEY_DOWN" xlink:href=".uno:GoDown"/>
- <accel:item accel:code="KEY_HOME" xlink:href=".uno:GoToStartOfLine"/>
- <accel:item accel:code="KEY_END" xlink:href=".uno:GoToEndOfLine"/>
- <accel:item accel:code="KEY_HOME" accel:mod1="true" xlink:href=".uno:GoToStartOfDoc"/>
- <accel:item accel:code="KEY_END" accel:mod1="true" xlink:href=".uno:GoToEndOfDoc"/>
- <accel:item accel:code="KEY_RIGHT" accel:mod1="true" xlink:href=".uno:GoToNextWord"/>
- <accel:item accel:code="KEY_LEFT" accel:mod1="true" xlink:href=".uno:GoToPrevWord"/>
- <accel:item accel:code="KEY_BACKSPACE" xlink:href=".uno:SwBackspace"/>
- <accel:item accel:code="KEY_DELETE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToEndOfSentence"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToStartOfSentence"/>
- <accel:item accel:code="KEY_DELETE" accel:mod1="true" xlink:href=".uno:DelToEndOfWord"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod1="true" xlink:href=".uno:DelToStartOfWord"/>
- <accel:item accel:code="KEY_PAGEUP" xlink:href=".uno:PageUp"/>
- <accel:item accel:code="KEY_PAGEDOWN" xlink:href=".uno:PageDown"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" xlink:href=".uno:SetMultiSelection"/>
- <accel:item accel:code="KEY_F8" xlink:href=".uno:SetExtSelection"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod2="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_ESCAPE" xlink:href=".uno:Escape"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" xlink:href=".uno:ShiftBackspace"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfParaSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfParaSel"/>
- <accel:item accel:code="KEY_F4" accel:shift="true" xlink:href=".uno:JumpToNextFrame"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" xlink:href=".uno:RestoreEditingView"/>
- <accel:item accel:code="KEY_PAGEUP" accel:mod1="true" xlink:href=".uno:JumpToHeader"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:mod1="true" xlink:href=".uno:JumpToFooter"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:JumpToFootnoteArea"/>
- <accel:item accel:code="KEY_I" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectTextMode"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Text body&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" accel:shift="true" xlink:href=".uno:StyleApply?Style:string=Standard&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_1" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 1&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_2" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 2&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_3" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 3&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_4" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 4&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_5" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 5&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_M" accel:mod1="true" xlink:href=".uno:ResetAttributes"/>
- <accel:item accel:code="KEY_J" accel:shift="true" accel:mod1="true" xlink:href=".uno:FullScreen"/>
- <accel:item accel:code="KEY_DIVIDE" accel:mod1="true" xlink:href=".uno:InsertZWSP"/>
- <accel:item accel:code="KEY_N" accel:mod1="true" accel:mod2="true" xlink:href=".uno:InsertAnnotation"/>
-</accel:acceleratorlist>
diff --git a/sw/uiconfig/sweb/accelerator/en-GB/default.xml b/sw/uiconfig/sweb/accelerator/en-GB/default.xml
deleted file mode 100644
index 2bc37195b94c..000000000000
--- a/sw/uiconfig/sweb/accelerator/en-GB/default.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
- <accel:item accel:code="KEY_F11" xlink:href=".uno:DesignerDialog"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" xlink:href=".uno:StyleNewByExample"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" accel:mod1="true" xlink:href=".uno:StyleUpdateByExample"/>
- <accel:item accel:code="KEY_F11" accel:mod1="true" xlink:href=".uno:ActivateStyleApply"/>
- <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href=".uno:Redo"/>
- <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_UNDO" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_REPEAT" xlink:href=".uno:Repeat"/>
- <accel:item accel:code="KEY_I" accel:mod1="true" xlink:href=".uno:Italic"/>
- <accel:item accel:code="KEY_B" accel:mod1="true" xlink:href=".uno:Bold"/>
- <accel:item accel:code="KEY_U" accel:mod1="true" xlink:href=".uno:Underline"/>
- <accel:item accel:code="KEY_L" accel:mod1="true" xlink:href=".uno:LeftPara"/>
- <accel:item accel:code="KEY_R" accel:mod1="true" xlink:href=".uno:RightPara"/>
- <accel:item accel:code="KEY_E" accel:mod1="true" xlink:href=".uno:CenterPara"/>
- <accel:item accel:code="KEY_J" accel:mod1="true" xlink:href=".uno:JustifyPara"/>
- <accel:item accel:code="KEY_INSERT" xlink:href=".uno:InsertMode"/>
- <accel:item accel:code="KEY_F5" xlink:href=".uno:Navigator"/>
- <accel:item accel:code="KEY_A" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaLeftToRight"/>
- <accel:item accel:code="KEY_D" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaRightToLeft"/>
- <accel:item accel:code="KEY_V" accel:shift="true" accel:mod1="true" xlink:href=".uno:PasteSpecial"/>
- <accel:item accel:code="KEY_F9" xlink:href=".uno:UpdateFields"/>
- <accel:item accel:code="KEY_MULTIPLY" accel:mod1="true" xlink:href=".uno:ExecuteMacroField"/>
- <accel:item accel:code="KEY_F2" xlink:href=".uno:InsertFormula"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" xlink:href=".uno:Calc"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveUp"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" xlink:href=".uno:GoToPrevPara"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveDown"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" xlink:href=".uno:GoToNextPara"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveBullets"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" xlink:href=".uno:DefaultBullet"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" accel:mod1="true" xlink:href=".uno:UpdateInputFields"/>
- <accel:item accel:code="KEY_F12" xlink:href=".uno:DefaultNumbering"/>
- <accel:item accel:code="KEY_F" accel:shift="true" accel:mod1="true" xlink:href=".uno:RepeatSearch"/>
- <accel:item accel:code="KEY_R" accel:shift="true" accel:mod1="true" xlink:href=".uno:RefreshView"/>
- <accel:item accel:code="KEY_F10" accel:mod1="true" xlink:href=".uno:ControlCodes"/>
- <accel:item accel:code="KEY_F8" accel:mod1="true" xlink:href=".uno:Marks"/>
- <accel:item accel:code="KEY_F9" accel:mod1="true" xlink:href=".uno:Fieldnames"/>
- <accel:item accel:code="KEY_RETURN" xlink:href=".uno:InsertPara"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertColumnBreak"/>
- <accel:item accel:code="KEY_F2" accel:mod1="true" xlink:href=".uno:InsertField"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" xlink:href=".uno:InsertLinebreak"/>
- <accel:item accel:code="KEY_RETURN" accel:mod1="true" xlink:href=".uno:InsertPagebreak"/>
- <accel:item accel:code="KEY_F12" accel:mod1="true" xlink:href=".uno:InsertTable"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:mod1="true" xlink:href=".uno:InsertSoftHyphen"/>
- <accel:item accel:code="KEY_SPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertNonBreakingSpace"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertHardHyphen"/>
- <accel:item accel:code="KEY_D" accel:mod1="true" xlink:href=".uno:UnderlineDouble"/>
- <accel:item accel:code="KEY_P" accel:shift="true" accel:mod1="true" xlink:href=".uno:SuperScript"/>
- <accel:item accel:code="KEY_B" accel:shift="true" accel:mod1="true" xlink:href=".uno:SubScript"/>
- <accel:item accel:code="KEY_T" accel:shift="true" accel:mod1="true" xlink:href=".uno:ResetTableProtection"/>
- <accel:item accel:code="KEY_F7" accel:mod1="true" xlink:href=".uno:ThesaurusDialog"/>
- <accel:item accel:code="KEY_ADD" accel:mod1="true" xlink:href=".uno:CalculateSel"/>
- <accel:item accel:code="KEY_F3" accel:mod1="true" xlink:href=".uno:EditGlossary"/>
- <accel:item accel:code="KEY_F7" xlink:href=".uno:SpellingAndGrammarDialog"/>
- <accel:item accel:code="KEY_F3" xlink:href=".uno:ExpandGlossary"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" accel:mod1="true" xlink:href=".uno:GotoPage"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" xlink:href=".uno:CharLeftSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" xlink:href=".uno:CharRightSel"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" xlink:href=".uno:LineUpSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" xlink:href=".uno:LineDownSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" xlink:href=".uno:StartOfLineSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" xlink:href=".uno:EndOfLineSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfDocumentSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfDocumentSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordRightSel"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordLeftSel"/>
- <accel:item accel:code="KEY_PAGEUP" accel:shift="true" xlink:href=".uno:PageUpSel"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" xlink:href=".uno:PageDownSel"/>
- <accel:item accel:code="KEY_LEFT" xlink:href=".uno:GoLeft"/>
- <accel:item accel:code="KEY_RIGHT" xlink:href=".uno:GoRight"/>
- <accel:item accel:code="KEY_UP" xlink:href=".uno:GoUp"/>
- <accel:item accel:code="KEY_DOWN" xlink:href=".uno:GoDown"/>
- <accel:item accel:code="KEY_HOME" xlink:href=".uno:GoToStartOfLine"/>
- <accel:item accel:code="KEY_END" xlink:href=".uno:GoToEndOfLine"/>
- <accel:item accel:code="KEY_HOME" accel:mod1="true" xlink:href=".uno:GoToStartOfDoc"/>
- <accel:item accel:code="KEY_END" accel:mod1="true" xlink:href=".uno:GoToEndOfDoc"/>
- <accel:item accel:code="KEY_RIGHT" accel:mod1="true" xlink:href=".uno:GoToNextWord"/>
- <accel:item accel:code="KEY_LEFT" accel:mod1="true" xlink:href=".uno:GoToPrevWord"/>
- <accel:item accel:code="KEY_BACKSPACE" xlink:href=".uno:SwBackspace"/>
- <accel:item accel:code="KEY_DELETE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToEndOfSentence"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToStartOfSentence"/>
- <accel:item accel:code="KEY_DELETE" accel:mod1="true" xlink:href=".uno:DelToEndOfWord"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod1="true" xlink:href=".uno:DelToStartOfWord"/>
- <accel:item accel:code="KEY_PAGEUP" xlink:href=".uno:PageUp"/>
- <accel:item accel:code="KEY_PAGEDOWN" xlink:href=".uno:PageDown"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" xlink:href=".uno:SetMultiSelection"/>
- <accel:item accel:code="KEY_F8" xlink:href=".uno:SetExtSelection"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod2="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_ESCAPE" xlink:href=".uno:Escape"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" xlink:href=".uno:ShiftBackspace"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfParaSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfParaSel"/>
- <accel:item accel:code="KEY_F4" accel:shift="true" xlink:href=".uno:JumpToNextFrame"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" xlink:href=".uno:RestoreEditingView"/>
- <accel:item accel:code="KEY_PAGEUP" accel:mod1="true" xlink:href=".uno:JumpToHeader"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:mod1="true" xlink:href=".uno:JumpToFooter"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:JumpToFootnoteArea"/>
- <accel:item accel:code="KEY_I" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectTextMode"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Text body&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" accel:shift="true" xlink:href=".uno:StyleApply?Style:string=Standard&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_1" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 1&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_2" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 2&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_3" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 3&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_4" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 4&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_5" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 5&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_M" accel:mod1="true" xlink:href=".uno:ResetAttributes"/>
- <accel:item accel:code="KEY_J" accel:shift="true" accel:mod1="true" xlink:href=".uno:FullScreen"/>
- <accel:item accel:code="KEY_X" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveDirectCharFormats"/>
- <accel:item accel:code="KEY_DIVIDE" accel:mod1="true" xlink:href=".uno:InsertZWSP"/>
- <accel:item accel:code="KEY_N" accel:mod1="true" accel:mod2="true" xlink:href=".uno:InsertAnnotation"/>
-</accel:acceleratorlist>
diff --git a/sw/uiconfig/sweb/accelerator/en-US/default.xml b/sw/uiconfig/sweb/accelerator/en-US/default.xml
deleted file mode 100644
index 2bc37195b94c..000000000000
--- a/sw/uiconfig/sweb/accelerator/en-US/default.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
- <accel:item accel:code="KEY_F11" xlink:href=".uno:DesignerDialog"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" xlink:href=".uno:StyleNewByExample"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" accel:mod1="true" xlink:href=".uno:StyleUpdateByExample"/>
- <accel:item accel:code="KEY_F11" accel:mod1="true" xlink:href=".uno:ActivateStyleApply"/>
- <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href=".uno:Redo"/>
- <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_UNDO" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_REPEAT" xlink:href=".uno:Repeat"/>
- <accel:item accel:code="KEY_I" accel:mod1="true" xlink:href=".uno:Italic"/>
- <accel:item accel:code="KEY_B" accel:mod1="true" xlink:href=".uno:Bold"/>
- <accel:item accel:code="KEY_U" accel:mod1="true" xlink:href=".uno:Underline"/>
- <accel:item accel:code="KEY_L" accel:mod1="true" xlink:href=".uno:LeftPara"/>
- <accel:item accel:code="KEY_R" accel:mod1="true" xlink:href=".uno:RightPara"/>
- <accel:item accel:code="KEY_E" accel:mod1="true" xlink:href=".uno:CenterPara"/>
- <accel:item accel:code="KEY_J" accel:mod1="true" xlink:href=".uno:JustifyPara"/>
- <accel:item accel:code="KEY_INSERT" xlink:href=".uno:InsertMode"/>
- <accel:item accel:code="KEY_F5" xlink:href=".uno:Navigator"/>
- <accel:item accel:code="KEY_A" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaLeftToRight"/>
- <accel:item accel:code="KEY_D" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaRightToLeft"/>
- <accel:item accel:code="KEY_V" accel:shift="true" accel:mod1="true" xlink:href=".uno:PasteSpecial"/>
- <accel:item accel:code="KEY_F9" xlink:href=".uno:UpdateFields"/>
- <accel:item accel:code="KEY_MULTIPLY" accel:mod1="true" xlink:href=".uno:ExecuteMacroField"/>
- <accel:item accel:code="KEY_F2" xlink:href=".uno:InsertFormula"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" xlink:href=".uno:Calc"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveUp"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" xlink:href=".uno:GoToPrevPara"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveDown"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" xlink:href=".uno:GoToNextPara"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveBullets"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" xlink:href=".uno:DefaultBullet"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" accel:mod1="true" xlink:href=".uno:UpdateInputFields"/>
- <accel:item accel:code="KEY_F12" xlink:href=".uno:DefaultNumbering"/>
- <accel:item accel:code="KEY_F" accel:shift="true" accel:mod1="true" xlink:href=".uno:RepeatSearch"/>
- <accel:item accel:code="KEY_R" accel:shift="true" accel:mod1="true" xlink:href=".uno:RefreshView"/>
- <accel:item accel:code="KEY_F10" accel:mod1="true" xlink:href=".uno:ControlCodes"/>
- <accel:item accel:code="KEY_F8" accel:mod1="true" xlink:href=".uno:Marks"/>
- <accel:item accel:code="KEY_F9" accel:mod1="true" xlink:href=".uno:Fieldnames"/>
- <accel:item accel:code="KEY_RETURN" xlink:href=".uno:InsertPara"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertColumnBreak"/>
- <accel:item accel:code="KEY_F2" accel:mod1="true" xlink:href=".uno:InsertField"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" xlink:href=".uno:InsertLinebreak"/>
- <accel:item accel:code="KEY_RETURN" accel:mod1="true" xlink:href=".uno:InsertPagebreak"/>
- <accel:item accel:code="KEY_F12" accel:mod1="true" xlink:href=".uno:InsertTable"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:mod1="true" xlink:href=".uno:InsertSoftHyphen"/>
- <accel:item accel:code="KEY_SPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertNonBreakingSpace"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertHardHyphen"/>
- <accel:item accel:code="KEY_D" accel:mod1="true" xlink:href=".uno:UnderlineDouble"/>
- <accel:item accel:code="KEY_P" accel:shift="true" accel:mod1="true" xlink:href=".uno:SuperScript"/>
- <accel:item accel:code="KEY_B" accel:shift="true" accel:mod1="true" xlink:href=".uno:SubScript"/>
- <accel:item accel:code="KEY_T" accel:shift="true" accel:mod1="true" xlink:href=".uno:ResetTableProtection"/>
- <accel:item accel:code="KEY_F7" accel:mod1="true" xlink:href=".uno:ThesaurusDialog"/>
- <accel:item accel:code="KEY_ADD" accel:mod1="true" xlink:href=".uno:CalculateSel"/>
- <accel:item accel:code="KEY_F3" accel:mod1="true" xlink:href=".uno:EditGlossary"/>
- <accel:item accel:code="KEY_F7" xlink:href=".uno:SpellingAndGrammarDialog"/>
- <accel:item accel:code="KEY_F3" xlink:href=".uno:ExpandGlossary"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" accel:mod1="true" xlink:href=".uno:GotoPage"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" xlink:href=".uno:CharLeftSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" xlink:href=".uno:CharRightSel"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" xlink:href=".uno:LineUpSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" xlink:href=".uno:LineDownSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" xlink:href=".uno:StartOfLineSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" xlink:href=".uno:EndOfLineSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfDocumentSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfDocumentSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordRightSel"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordLeftSel"/>
- <accel:item accel:code="KEY_PAGEUP" accel:shift="true" xlink:href=".uno:PageUpSel"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" xlink:href=".uno:PageDownSel"/>
- <accel:item accel:code="KEY_LEFT" xlink:href=".uno:GoLeft"/>
- <accel:item accel:code="KEY_RIGHT" xlink:href=".uno:GoRight"/>
- <accel:item accel:code="KEY_UP" xlink:href=".uno:GoUp"/>
- <accel:item accel:code="KEY_DOWN" xlink:href=".uno:GoDown"/>
- <accel:item accel:code="KEY_HOME" xlink:href=".uno:GoToStartOfLine"/>
- <accel:item accel:code="KEY_END" xlink:href=".uno:GoToEndOfLine"/>
- <accel:item accel:code="KEY_HOME" accel:mod1="true" xlink:href=".uno:GoToStartOfDoc"/>
- <accel:item accel:code="KEY_END" accel:mod1="true" xlink:href=".uno:GoToEndOfDoc"/>
- <accel:item accel:code="KEY_RIGHT" accel:mod1="true" xlink:href=".uno:GoToNextWord"/>
- <accel:item accel:code="KEY_LEFT" accel:mod1="true" xlink:href=".uno:GoToPrevWord"/>
- <accel:item accel:code="KEY_BACKSPACE" xlink:href=".uno:SwBackspace"/>
- <accel:item accel:code="KEY_DELETE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToEndOfSentence"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToStartOfSentence"/>
- <accel:item accel:code="KEY_DELETE" accel:mod1="true" xlink:href=".uno:DelToEndOfWord"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod1="true" xlink:href=".uno:DelToStartOfWord"/>
- <accel:item accel:code="KEY_PAGEUP" xlink:href=".uno:PageUp"/>
- <accel:item accel:code="KEY_PAGEDOWN" xlink:href=".uno:PageDown"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" xlink:href=".uno:SetMultiSelection"/>
- <accel:item accel:code="KEY_F8" xlink:href=".uno:SetExtSelection"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod2="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_ESCAPE" xlink:href=".uno:Escape"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" xlink:href=".uno:ShiftBackspace"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfParaSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfParaSel"/>
- <accel:item accel:code="KEY_F4" accel:shift="true" xlink:href=".uno:JumpToNextFrame"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" xlink:href=".uno:RestoreEditingView"/>
- <accel:item accel:code="KEY_PAGEUP" accel:mod1="true" xlink:href=".uno:JumpToHeader"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:mod1="true" xlink:href=".uno:JumpToFooter"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:JumpToFootnoteArea"/>
- <accel:item accel:code="KEY_I" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectTextMode"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Text body&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" accel:shift="true" xlink:href=".uno:StyleApply?Style:string=Standard&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_1" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 1&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_2" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 2&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_3" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 3&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_4" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 4&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_5" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 5&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_M" accel:mod1="true" xlink:href=".uno:ResetAttributes"/>
- <accel:item accel:code="KEY_J" accel:shift="true" accel:mod1="true" xlink:href=".uno:FullScreen"/>
- <accel:item accel:code="KEY_X" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveDirectCharFormats"/>
- <accel:item accel:code="KEY_DIVIDE" accel:mod1="true" xlink:href=".uno:InsertZWSP"/>
- <accel:item accel:code="KEY_N" accel:mod1="true" accel:mod2="true" xlink:href=".uno:InsertAnnotation"/>
-</accel:acceleratorlist>
diff --git a/sw/uiconfig/sweb/accelerator/es/default.xml b/sw/uiconfig/sweb/accelerator/es/default.xml
deleted file mode 100644
index 42b11d834e20..000000000000
--- a/sw/uiconfig/sweb/accelerator/es/default.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
- <accel:item accel:code="KEY_F11" xlink:href=".uno:DesignerDialog"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" xlink:href=".uno:StyleNewByExample"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" accel:mod1="true" xlink:href=".uno:StyleUpdateByExample"/>
- <accel:item accel:code="KEY_F11" accel:mod1="true" xlink:href=".uno:ActivateStyleApply"/>
- <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href=".uno:Redo"/>
- <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_UNDO" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_REPEAT" xlink:href=".uno:Repeat"/>
- <accel:item accel:code="KEY_K" accel:mod1="true" xlink:href=".uno:Italic"/>
- <accel:item accel:code="KEY_N" accel:mod1="true" xlink:href=".uno:Bold"/>
- <accel:item accel:code="KEY_S" accel:mod1="true" xlink:href=".uno:Underline"/>
- <accel:item accel:code="KEY_L" accel:mod1="true" xlink:href=".uno:LeftPara"/>
- <accel:item accel:code="KEY_R" accel:mod1="true" xlink:href=".uno:RightPara"/>
- <accel:item accel:code="KEY_T" accel:mod1="true" xlink:href=".uno:CenterPara"/>
- <accel:item accel:code="KEY_J" accel:mod1="true" xlink:href=".uno:JustifyPara"/>
- <accel:item accel:code="KEY_INSERT" xlink:href=".uno:InsertMode"/>
- <accel:item accel:code="KEY_F5" xlink:href=".uno:Navigator"/>
- <accel:item accel:code="KEY_A" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaLeftToRight"/>
- <accel:item accel:code="KEY_D" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaRightToLeft"/>
- <accel:item accel:code="KEY_V" accel:shift="true" accel:mod1="true" xlink:href=".uno:PasteSpecial"/>
- <accel:item accel:code="KEY_F9" xlink:href=".uno:UpdateFields"/>
- <accel:item accel:code="KEY_MULTIPLY" accel:mod1="true" xlink:href=".uno:ExecuteMacroField"/>
- <accel:item accel:code="KEY_F2" xlink:href=".uno:InsertFormula"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" xlink:href=".uno:Calc"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveUp"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" xlink:href=".uno:GoToPrevPara"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveDown"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" xlink:href=".uno:GoToNextPara"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveBullets"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" xlink:href=".uno:DefaultBullet"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" accel:mod1="true" xlink:href=".uno:UpdateInputFields"/>
- <accel:item accel:code="KEY_F12" xlink:href=".uno:DefaultNumbering"/>
- <accel:item accel:code="KEY_F" accel:shift="true" accel:mod1="true" xlink:href=".uno:RepeatSearch"/>
- <accel:item accel:code="KEY_R" accel:shift="true" accel:mod1="true" xlink:href=".uno:RefreshView"/>
- <accel:item accel:code="KEY_F10" accel:mod1="true" xlink:href=".uno:ControlCodes"/>
- <accel:item accel:code="KEY_F8" accel:mod1="true" xlink:href=".uno:Marks"/>
- <accel:item accel:code="KEY_F9" accel:mod1="true" xlink:href=".uno:Fieldnames"/>
- <accel:item accel:code="KEY_RETURN" xlink:href=".uno:InsertPara"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertColumnBreak"/>
- <accel:item accel:code="KEY_F2" accel:mod1="true" xlink:href=".uno:InsertField"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" xlink:href=".uno:InsertLinebreak"/>
- <accel:item accel:code="KEY_RETURN" accel:mod1="true" xlink:href=".uno:InsertPagebreak"/>
- <accel:item accel:code="KEY_F12" accel:mod1="true" xlink:href=".uno:InsertTable"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:mod1="true" xlink:href=".uno:InsertSoftHyphen"/>
- <accel:item accel:code="KEY_SPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertNonBreakingSpace"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertHardHyphen"/>
- <accel:item accel:code="KEY_D" accel:mod1="true" xlink:href=".uno:UnderlineDouble"/>
- <accel:item accel:code="KEY_P" accel:shift="true" accel:mod1="true" xlink:href=".uno:SuperScript"/>
- <accel:item accel:code="KEY_B" accel:shift="true" accel:mod1="true" xlink:href=".uno:SubScript"/>
- <accel:item accel:code="KEY_T" accel:shift="true" accel:mod1="true" xlink:href=".uno:ResetTableProtection"/>
- <accel:item accel:code="KEY_F7" accel:mod1="true" xlink:href=".uno:ThesaurusDialog"/>
- <accel:item accel:code="KEY_ADD" accel:mod1="true" xlink:href=".uno:CalculateSel"/>
- <accel:item accel:code="KEY_F3" accel:mod1="true" xlink:href=".uno:EditGlossary"/>
- <accel:item accel:code="KEY_F7" xlink:href=".uno:SpellingAndGrammarDialog"/>
- <accel:item accel:code="KEY_F3" xlink:href=".uno:ExpandGlossary"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" accel:mod1="true" xlink:href=".uno:GotoPage"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" xlink:href=".uno:CharLeftSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" xlink:href=".uno:CharRightSel"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" xlink:href=".uno:LineUpSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" xlink:href=".uno:LineDownSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" xlink:href=".uno:StartOfLineSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" xlink:href=".uno:EndOfLineSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfDocumentSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfDocumentSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordRightSel"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordLeftSel"/>
- <accel:item accel:code="KEY_PAGEUP" accel:shift="true" xlink:href=".uno:PageUpSel"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" xlink:href=".uno:PageDownSel"/>
- <accel:item accel:code="KEY_LEFT" xlink:href=".uno:GoLeft"/>
- <accel:item accel:code="KEY_RIGHT" xlink:href=".uno:GoRight"/>
- <accel:item accel:code="KEY_UP" xlink:href=".uno:GoUp"/>
- <accel:item accel:code="KEY_DOWN" xlink:href=".uno:GoDown"/>
- <accel:item accel:code="KEY_HOME" xlink:href=".uno:GoToStartOfLine"/>
- <accel:item accel:code="KEY_END" xlink:href=".uno:GoToEndOfLine"/>
- <accel:item accel:code="KEY_HOME" accel:mod1="true" xlink:href=".uno:GoToStartOfDoc"/>
- <accel:item accel:code="KEY_END" accel:mod1="true" xlink:href=".uno:GoToEndOfDoc"/>
- <accel:item accel:code="KEY_RIGHT" accel:mod1="true" xlink:href=".uno:GoToNextWord"/>
- <accel:item accel:code="KEY_LEFT" accel:mod1="true" xlink:href=".uno:GoToPrevWord"/>
- <accel:item accel:code="KEY_BACKSPACE" xlink:href=".uno:SwBackspace"/>
- <accel:item accel:code="KEY_DELETE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToEndOfSentence"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToStartOfSentence"/>
- <accel:item accel:code="KEY_DELETE" accel:mod1="true" xlink:href=".uno:DelToEndOfWord"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod1="true" xlink:href=".uno:DelToStartOfWord"/>
- <accel:item accel:code="KEY_PAGEUP" xlink:href=".uno:PageUp"/>
- <accel:item accel:code="KEY_PAGEDOWN" xlink:href=".uno:PageDown"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" xlink:href=".uno:SetMultiSelection"/>
- <accel:item accel:code="KEY_F8" xlink:href=".uno:SetExtSelection"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod2="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_ESCAPE" xlink:href=".uno:Escape"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" xlink:href=".uno:ShiftBackspace"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfParaSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfParaSel"/>
- <accel:item accel:code="KEY_F4" accel:shift="true" xlink:href=".uno:JumpToNextFrame"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" xlink:href=".uno:RestoreEditingView"/>
- <accel:item accel:code="KEY_PAGEUP" accel:mod1="true" xlink:href=".uno:JumpToHeader"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:mod1="true" xlink:href=".uno:JumpToFooter"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:JumpToFootnoteArea"/>
- <accel:item accel:code="KEY_I" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectTextMode"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Text body&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" accel:shift="true" xlink:href=".uno:StyleApply?Style:string=Standard&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_1" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 1&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_2" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 2&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_3" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 3&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_4" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 4&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_5" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 5&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_M" accel:mod1="true" xlink:href=".uno:ResetAttributes"/>
- <accel:item accel:code="KEY_J" accel:shift="true" accel:mod1="true" xlink:href=".uno:FullScreen"/>
- <accel:item accel:code="KEY_DIVIDE" accel:mod1="true" xlink:href=".uno:InsertZWSP"/>
- <accel:item accel:code="KEY_N" accel:mod1="true" accel:mod2="true" xlink:href=".uno:InsertAnnotation"/>
-</accel:acceleratorlist>
diff --git a/sw/uiconfig/sweb/accelerator/fr/default.xml b/sw/uiconfig/sweb/accelerator/fr/default.xml
deleted file mode 100644
index 4ee8b9e2a1ec..000000000000
--- a/sw/uiconfig/sweb/accelerator/fr/default.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
- <accel:item accel:code="KEY_F11" xlink:href=".uno:DesignerDialog"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" xlink:href=".uno:StyleNewByExample"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" accel:mod1="true" xlink:href=".uno:StyleUpdateByExample"/>
- <accel:item accel:code="KEY_F11" accel:mod1="true" xlink:href=".uno:ActivateStyleApply"/>
- <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href=".uno:Redo"/>
- <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_UNDO" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_REPEAT" xlink:href=".uno:Repeat"/>
- <accel:item accel:code="KEY_I" accel:mod1="true" xlink:href=".uno:Italic"/>
- <accel:item accel:code="KEY_G" accel:mod1="true" xlink:href=".uno:Bold"/>
- <accel:item accel:code="KEY_U" accel:mod1="true" xlink:href=".uno:Underline"/>
- <accel:item accel:code="KEY_L" accel:mod1="true" xlink:href=".uno:LeftPara"/>
- <accel:item accel:code="KEY_R" accel:mod1="true" xlink:href=".uno:RightPara"/>
- <accel:item accel:code="KEY_E" accel:mod1="true" xlink:href=".uno:CenterPara"/>
- <accel:item accel:code="KEY_J" accel:mod1="true" xlink:href=".uno:JustifyPara"/>
- <accel:item accel:code="KEY_INSERT" xlink:href=".uno:InsertMode"/>
- <accel:item accel:code="KEY_F5" xlink:href=".uno:Navigator"/>
- <accel:item accel:code="KEY_A" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaLeftToRight"/>
- <accel:item accel:code="KEY_D" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaRightToLeft"/>
- <accel:item accel:code="KEY_V" accel:shift="true" accel:mod1="true" xlink:href=".uno:PasteSpecial"/>
- <accel:item accel:code="KEY_F9" xlink:href=".uno:UpdateFields"/>
- <accel:item accel:code="KEY_MULTIPLY" accel:mod1="true" xlink:href=".uno:ExecuteMacroField"/>
- <accel:item accel:code="KEY_F2" xlink:href=".uno:InsertFormula"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" xlink:href=".uno:Calc"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveUp"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" xlink:href=".uno:GoToPrevPara"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveDown"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" xlink:href=".uno:GoToNextPara"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveBullets"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" xlink:href=".uno:DefaultBullet"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" accel:mod1="true" xlink:href=".uno:UpdateInputFields"/>
- <accel:item accel:code="KEY_F12" xlink:href=".uno:DefaultNumbering"/>
- <accel:item accel:code="KEY_F" accel:shift="true" accel:mod1="true" xlink:href=".uno:RepeatSearch"/>
- <accel:item accel:code="KEY_R" accel:shift="true" accel:mod1="true" xlink:href=".uno:RefreshView"/>
- <accel:item accel:code="KEY_F10" accel:mod1="true" xlink:href=".uno:ControlCodes"/>
- <accel:item accel:code="KEY_F8" accel:mod1="true" xlink:href=".uno:Marks"/>
- <accel:item accel:code="KEY_F9" accel:mod1="true" xlink:href=".uno:Fieldnames"/>
- <accel:item accel:code="KEY_RETURN" xlink:href=".uno:InsertPara"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertColumnBreak"/>
- <accel:item accel:code="KEY_F2" accel:mod1="true" xlink:href=".uno:InsertField"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" xlink:href=".uno:InsertLinebreak"/>
- <accel:item accel:code="KEY_RETURN" accel:mod1="true" xlink:href=".uno:InsertPagebreak"/>
- <accel:item accel:code="KEY_F12" accel:mod1="true" xlink:href=".uno:InsertTable"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:mod1="true" xlink:href=".uno:InsertSoftHyphen"/>
- <accel:item accel:code="KEY_SPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertNonBreakingSpace"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertHardHyphen"/>
- <accel:item accel:code="KEY_D" accel:mod1="true" xlink:href=".uno:UnderlineDouble"/>
- <accel:item accel:code="KEY_P" accel:shift="true" accel:mod1="true" xlink:href=".uno:SuperScript"/>
- <accel:item accel:code="KEY_B" accel:shift="true" accel:mod1="true" xlink:href=".uno:SubScript"/>
- <accel:item accel:code="KEY_T" accel:shift="true" accel:mod1="true" xlink:href=".uno:ResetTableProtection"/>
- <accel:item accel:code="KEY_F7" accel:mod1="true" xlink:href=".uno:ThesaurusDialog"/>
- <accel:item accel:code="KEY_ADD" accel:mod1="true" xlink:href=".uno:CalculateSel"/>
- <accel:item accel:code="KEY_F3" accel:mod1="true" xlink:href=".uno:EditGlossary"/>
- <accel:item accel:code="KEY_F7" xlink:href=".uno:SpellingAndGrammarDialog"/>
- <accel:item accel:code="KEY_F3" xlink:href=".uno:ExpandGlossary"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" accel:mod1="true" xlink:href=".uno:GotoPage"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" xlink:href=".uno:CharLeftSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" xlink:href=".uno:CharRightSel"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" xlink:href=".uno:LineUpSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" xlink:href=".uno:LineDownSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" xlink:href=".uno:StartOfLineSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" xlink:href=".uno:EndOfLineSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfDocumentSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfDocumentSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordRightSel"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordLeftSel"/>
- <accel:item accel:code="KEY_PAGEUP" accel:shift="true" xlink:href=".uno:PageUpSel"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" xlink:href=".uno:PageDownSel"/>
- <accel:item accel:code="KEY_LEFT" xlink:href=".uno:GoLeft"/>
- <accel:item accel:code="KEY_RIGHT" xlink:href=".uno:GoRight"/>
- <accel:item accel:code="KEY_UP" xlink:href=".uno:GoUp"/>
- <accel:item accel:code="KEY_DOWN" xlink:href=".uno:GoDown"/>
- <accel:item accel:code="KEY_HOME" xlink:href=".uno:GoToStartOfLine"/>
- <accel:item accel:code="KEY_END" xlink:href=".uno:GoToEndOfLine"/>
- <accel:item accel:code="KEY_HOME" accel:mod1="true" xlink:href=".uno:GoToStartOfDoc"/>
- <accel:item accel:code="KEY_END" accel:mod1="true" xlink:href=".uno:GoToEndOfDoc"/>
- <accel:item accel:code="KEY_RIGHT" accel:mod1="true" xlink:href=".uno:GoToNextWord"/>
- <accel:item accel:code="KEY_LEFT" accel:mod1="true" xlink:href=".uno:GoToPrevWord"/>
- <accel:item accel:code="KEY_BACKSPACE" xlink:href=".uno:SwBackspace"/>
- <accel:item accel:code="KEY_DELETE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToEndOfSentence"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToStartOfSentence"/>
- <accel:item accel:code="KEY_DELETE" accel:mod1="true" xlink:href=".uno:DelToEndOfWord"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod1="true" xlink:href=".uno:DelToStartOfWord"/>
- <accel:item accel:code="KEY_PAGEUP" xlink:href=".uno:PageUp"/>
- <accel:item accel:code="KEY_PAGEDOWN" xlink:href=".uno:PageDown"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" xlink:href=".uno:SetMultiSelection"/>
- <accel:item accel:code="KEY_F8" xlink:href=".uno:SetExtSelection"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod2="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_ESCAPE" xlink:href=".uno:Escape"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" xlink:href=".uno:ShiftBackspace"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfParaSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfParaSel"/>
- <accel:item accel:code="KEY_F4" accel:shift="true" xlink:href=".uno:JumpToNextFrame"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" xlink:href=".uno:RestoreEditingView"/>
- <accel:item accel:code="KEY_PAGEUP" accel:mod1="true" xlink:href=".uno:JumpToHeader"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:mod1="true" xlink:href=".uno:JumpToFooter"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:JumpToFootnoteArea"/>
- <accel:item accel:code="KEY_I" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectTextMode"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Text body&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" accel:shift="true" xlink:href=".uno:StyleApply?Style:string=Standard&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_1" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 1&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_2" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 2&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_3" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 3&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_4" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 4&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_5" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 5&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_M" accel:mod1="true" xlink:href=".uno:ResetAttributes"/>
- <accel:item accel:code="KEY_J" accel:shift="true" accel:mod1="true" xlink:href=".uno:FullScreen"/>
- <accel:item accel:code="KEY_DIVIDE" accel:mod1="true" xlink:href=".uno:InsertZWSP"/>
- <accel:item accel:code="KEY_N" accel:mod1="true" accel:mod2="true" xlink:href=".uno:InsertAnnotation"/>
-</accel:acceleratorlist>
diff --git a/sw/uiconfig/sweb/menubar/menubar.xml b/sw/uiconfig/sweb/menubar/menubar.xml
index 4be8c6f8e791..4b482e373d3f 100644
--- a/sw/uiconfig/sweb/menubar/menubar.xml
+++ b/sw/uiconfig/sweb/menubar/menubar.xml
@@ -1,386 +1,390 @@
<?xml version="1.0" encoding="UTF-8"?>
<menu:menubar xmlns:menu="http://openoffice.org/2001/menu" menu:id="menubar">
- <menu:menu menu:id=".uno:PickList">
+ <menu:menu menu:id=".uno:PickList">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:AddDirect"/>
+ <menu:menuitem menu:id=".uno:Open"/>
+ <menu:menuitem menu:id=".uno:RecentFileList"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:AutoPilotMenu"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:CloseDoc"/>
+ <menu:menuitem menu:id=".uno:Save"/>
+ <menu:menuitem menu:id=".uno:SaveAs"/>
+ <menu:menuitem menu:id=".uno:SaveAll"/>
+ <menu:menuitem menu:id=".uno:Reload"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ExportTo"/>
+ <menu:menu menu:id=".uno:SendToMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:AddDirect"/>
- <menu:menuitem menu:id=".uno:Open"/>
- <menu:menuitem menu:id=".uno:RecentFileList"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:AutoPilotMenu"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:CloseDoc"/>
- <menu:menuitem menu:id=".uno:Save"/>
- <menu:menuitem menu:id=".uno:SaveAs"/>
- <menu:menuitem menu:id=".uno:SaveAll"/>
- <menu:menuitem menu:id=".uno:Reload"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ExportTo"/>
- <menu:menu menu:id=".uno:SendToMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SendMail"/>
- <menu:menuitem menu:id=".uno:SendMailDocAsPDF"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:SetDocumentProperties"/>
- <menu:menu menu:id=".uno:TemplateMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:Organizer"/>
- <menu:menuitem menu:id=".uno:AddressBookSource"/>
- <menu:menuitem menu:id=".uno:SaveAsTemplate"/>
- <menu:menuitem menu:id=".uno:OpenTemplate"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:WebHtml"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:PrintPreview"/>
- <menu:menuitem menu:id=".uno:Print"/>
- <menu:menuitem menu:id=".uno:PrinterSetup"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:Quit"/>
+ <menu:menuitem menu:id=".uno:SendMail"/>
+ <menu:menuitem menu:id=".uno:SendMailDocAsPDF"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:EditMenu">
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:SetDocumentProperties"/>
+ <menu:menu menu:id=".uno:TemplateMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:Undo"/>
- <menu:menuitem menu:id=".uno:Redo"/>
- <menu:menuitem menu:id=".uno:Repeat"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:Cut"/>
- <menu:menuitem menu:id=".uno:Copy"/>
- <menu:menuitem menu:id=".uno:Paste"/>
- <menu:menuitem menu:id=".uno:PasteSpecial"/>
- <menu:menuitem menu:id=".uno:SelectTextMode"/>
- <menu:menu menu:id=".uno:SelectionModeMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SelectionModeDefault"/>
- <menu:menuitem menu:id=".uno:SelectionModeBlock"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:SelectAll"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:SearchDialog"/>
- <menu:menuitem menu:id=".uno:EditGlossary"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:FieldDialog"/>
- <menu:menuitem menu:id=".uno:EditFootnote"/>
- <menu:menuitem menu:id=".uno:EditHyperlink"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:LinkDialog"/>
- <menu:menuitem menu:id=".uno:PlugInsActive"/>
- <menu:menuitem menu:id=".uno:ImageMapDialog"/>
- <menu:menuitem menu:id=".uno:ObjectMenue"/>
+ <menu:menuitem menu:id=".uno:Organizer"/>
+ <menu:menuitem menu:id=".uno:AddressBookSource"/>
+ <menu:menuitem menu:id=".uno:SaveAsTemplate"/>
+ <menu:menuitem menu:id=".uno:OpenTemplate"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:ViewMenu">
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:WebHtml"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:PrintPreview"/>
+ <menu:menuitem menu:id=".uno:Print"/>
+ <menu:menuitem menu:id=".uno:PrinterSetup"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Quit"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:EditMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:Undo"/>
+ <menu:menuitem menu:id=".uno:Redo"/>
+ <menu:menuitem menu:id=".uno:Repeat"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Cut"/>
+ <menu:menuitem menu:id=".uno:Copy"/>
+ <menu:menuitem menu:id=".uno:Paste"/>
+ <menu:menuitem menu:id=".uno:PasteSpecial"/>
+ <menu:menuitem menu:id=".uno:SelectTextMode"/>
+ <menu:menu menu:id=".uno:SelectionModeMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:PrintLayout"/>
- <menu:menuitem menu:id=".uno:BrowseView"/>
- <menu:menuitem menu:id=".uno:SourceView"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:AvailableToolbars"/>
- <menu:menuitem menu:id=".uno:StatusBarVisible"/>
- <menu:menuitem menu:id=".uno:ShowImeStatusWindow"/>
- <menu:menuitem menu:id=".uno:Ruler"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ViewBounds"/>
- <menu:menuitem menu:id=".uno:Marks"/>
- <menu:menuitem menu:id=".uno:Fieldnames"/>
- <menu:menuitem menu:id=".uno:ControlCodes"/>
- <menu:menuitem menu:id=".uno:ShowHiddenParagraphs"/>
- <menu:menuitem menu:id=".uno:ShowAnnotations"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ViewDataSourceBrowser"/>
- <menu:menuitem menu:id=".uno:Navigator"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:FullScreen"/>
- <menu:menuitem menu:id=".uno:Zoom"/>
+ <menu:menuitem menu:id=".uno:SelectionModeDefault" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:SelectionModeBlock" menu:style="radio"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:InsertMenu">
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:SelectAll"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:SearchDialog"/>
+ <menu:menuitem menu:id=".uno:EditGlossary"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:FieldDialog"/>
+ <menu:menuitem menu:id=".uno:EditFootnote"/>
+ <menu:menuitem menu:id=".uno:EditHyperlink"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:LinkDialog"/>
+ <menu:menuitem menu:id=".uno:PlugInsActive"/>
+ <menu:menuitem menu:id=".uno:ImageMapDialog"/>
+ <menu:menuitem menu:id=".uno:ObjectMenue"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:ViewMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:PrintLayout"/>
+ <menu:menuitem menu:id=".uno:BrowseView"/>
+ <menu:menuitem menu:id=".uno:SourceView"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:AvailableToolbars"/>
+ <menu:menuitem menu:id=".uno:StatusBarVisible"/>
+ <menu:menuitem menu:id=".uno:ShowImeStatusWindow"/>
+ <menu:menuitem menu:id=".uno:Ruler"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ViewBounds"/>
+ <menu:menuitem menu:id=".uno:Marks"/>
+ <menu:menuitem menu:id=".uno:Fieldnames"/>
+ <menu:menuitem menu:id=".uno:ControlCodes"/>
+ <menu:menuitem menu:id=".uno:ShowHiddenParagraphs"/>
+ <menu:menuitem menu:id=".uno:ShowAnnotations"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ViewDataSourceBrowser"/>
+ <menu:menuitem menu:id=".uno:Navigator"/>
+ <menu:menuitem menu:id=".uno:TaskPane"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:FullScreen"/>
+ <menu:menuitem menu:id=".uno:Zoom"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:InsertMenu">
+ <menu:menupopup>
+ <menu:menu menu:id=".uno:FieldMenu">
<menu:menupopup>
- <menu:menu menu:id=".uno:FieldMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertDateField"/>
- <menu:menuitem menu:id=".uno:InsertTimeField"/>
- <menu:menuitem menu:id=".uno:InsertPageNumberField"/>
- <menu:menuitem menu:id=".uno:InsertPageCountField"/>
- <menu:menuitem menu:id=".uno:InsertTitleField"/>
- <menu:menuitem menu:id=".uno:InsertAuthorField"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:InsertField"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:InsertSymbol"/>
- <menu:menu menu:id=".uno:FormattingMarkMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertNonBreakingSpace"/>
- <menu:menuitem menu:id=".uno:InsertHardHyphen"/>
- <menu:menuitem menu:id=".uno:InsertSoftHyphen"/>
- <menu:menuitem menu:id=".uno:InsertZWSP"/>
- <menu:menuitem menu:id=".uno:InsertZWNBSP"/>
- <menu:menuitem menu:id=".uno:InsertLRM"/>
- <menu:menuitem menu:id=".uno:InsertRLM"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:InsertSection"/>
- <menu:menuitem menu:id=".uno:HyperlinkDialog"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:InsertFootnoteDialog"/>
- <menu:menuitem menu:id=".uno:InsertBookmark"/>
- <menu:menuitem menu:id=".uno:InsertAnnotation"/>
- <menu:menuitem menu:id=".uno:InsertScript"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:InsertFrame"/>
- <menu:menuitem menu:id=".uno:InsertTable"/>
- <menu:menuitem menu:id=".uno:InsertGraphicRuler"/>
- <menu:menuitem menu:id=".uno:InsertGraphic"/>
- <menu:menuitem menu:id=".uno:InsertAVMedia"/>
- <menu:menu menu:id=".uno:ObjectMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertObject"/>
- <menu:menuitem menu:id=".uno:InsertPlugin"/>
- <menu:menuitem menu:id=".uno:InsertSound"/>
- <menu:menuitem menu:id=".uno:InsertVideo"/>
- <menu:menuitem menu:id=".uno:InsertObjectStarMath"/>
- <menu:menuitem menu:id=".uno:InsertObjectChart"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:InsertObjectFloatingFrame"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:InsertDoc"/>
+ <menu:menuitem menu:id=".uno:InsertDateField"/>
+ <menu:menuitem menu:id=".uno:InsertTimeField"/>
+ <menu:menuitem menu:id=".uno:InsertPageNumberField"/>
+ <menu:menuitem menu:id=".uno:InsertPageCountField"/>
+ <menu:menuitem menu:id=".uno:InsertTitleField"/>
+ <menu:menuitem menu:id=".uno:InsertAuthorField"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertField"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:FormatMenu">
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:InsertSymbol"/>
+ <menu:menu menu:id=".uno:FormattingMarkMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:ResetAttributes"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:FontDialog"/>
- <menu:menuitem menu:id=".uno:ParagraphDialog"/>
- <menu:menuitem menu:id=".uno:BulletsAndNumberingDialog"/>
- <menu:menuitem menu:id=".uno:PageDialog"/>
- <menu:menuseparator/>
- <menu:menu menu:id=".uno:TransliterateMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:ChangeCaseToUpper"/>
- <menu:menuitem menu:id=".uno:ChangeCaseToLower"/>
- <menu:menuitem menu:id=".uno:ChangeCaseToHalfWidth"/>
- <menu:menuitem menu:id=".uno:ChangeCaseToFullWidth"/>
- <menu:menuitem menu:id=".uno:ChangeCaseToHiragana"/>
- <menu:menuitem menu:id=".uno:ChangeCaseToKatakana"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:FormatColumns"/>
- <menu:menuitem menu:id=".uno:EditRegion"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:DesignerDialog"/>
- <menu:menu menu:id=".uno:AutoFormatMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:OnlineAutoFormat"/>
- <menu:menuitem menu:id=".uno:AutoFormatApply"/>
- <menu:menuitem menu:id=".uno:AutoFormatRedlineApply"/>
- <menu:menuitem menu:id=".uno:AutoCorrectDlg"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menu menu:id=".uno:AnchorMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SetAnchorToPage"/>
- <menu:menuitem menu:id=".uno:SetAnchorToPara"/>
- <menu:menuitem menu:id=".uno:SetAnchorAtChar"/>
- <menu:menuitem menu:id=".uno:SetAnchorToChar"/>
- <menu:menuitem menu:id=".uno:SetAnchorToFrame"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:WrapMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:WrapOff"/>
- <menu:menuitem menu:id=".uno:WrapOn"/>
- <menu:menuitem menu:id=".uno:WrapIdeal"/>
- <menu:menuitem menu:id=".uno:WrapThrough"/>
- <menu:menuitem menu:id=".uno:WrapThroughTransparent"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:WrapContour"/>
- <menu:menuitem menu:id=".uno:ContourDialog"/>
- <menu:menuitem menu:id=".uno:WrapAnchorOnly"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:TextWrap"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:ObjectAlign">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:CommonAlignLeft"/>
- <menu:menuitem menu:id=".uno:CommonAlignHorizontalCenter"/>
- <menu:menuitem menu:id=".uno:CommonAlignRight"/>
- <menu:menuitem menu:id=".uno:CommonAlignJustified"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:CommonAlignTop"/>
- <menu:menuitem menu:id=".uno:CommonAlignVerticalCenter"/>
- <menu:menuitem menu:id=".uno:CommonAlignBottom"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:ArrangeMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:BringToFront"/>
- <menu:menuitem menu:id=".uno:ObjectForwardOne"/>
- <menu:menuitem menu:id=".uno:ObjectBackOne"/>
- <menu:menuitem menu:id=".uno:SendToBack"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:SetObjectToForeground"/>
- <menu:menuitem menu:id=".uno:SetObjectToBackground"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:FlipMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:FlipHorizontal"/>
- <menu:menuitem menu:id=".uno:FlipVertical"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:GroupMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:FormatGroup"/>
- <menu:menuitem menu:id=".uno:FormatUngroup"/>
- <menu:menuitem menu:id=".uno:EnterGroup"/>
- <menu:menuitem menu:id=".uno:LeaveGroup"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:ObjectMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:TransformDialog"/>
- <menu:menuitem menu:id=".uno:FormatLine"/>
- <menu:menuitem menu:id=".uno:FormatArea"/>
- <menu:menuitem menu:id=".uno:TextAttributes"/>
- <menu:menuitem menu:id=".uno:FontWork"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:NameGroup"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:FrameDialog"/>
- <menu:menuitem menu:id=".uno:GraphicDialog"/>
+ <menu:menuitem menu:id=".uno:InsertNonBreakingSpace"/>
+ <menu:menuitem menu:id=".uno:InsertHardHyphen"/>
+ <menu:menuitem menu:id=".uno:InsertSoftHyphen"/>
+ <menu:menuitem menu:id=".uno:InsertZWSP"/>
+ <menu:menuitem menu:id=".uno:InsertZWNBSP"/>
+ <menu:menuitem menu:id=".uno:InsertLRM"/>
+ <menu:menuitem menu:id=".uno:InsertRLM"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:TableMenu">
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertSection"/>
+ <menu:menuitem menu:id=".uno:HyperlinkDialog"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertFootnoteDialog"/>
+ <menu:menuitem menu:id=".uno:InsertBookmark"/>
+ <menu:menuitem menu:id=".uno:InsertAnnotation"/>
+ <menu:menuitem menu:id=".uno:InsertScript"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertFrame"/>
+ <menu:menuitem menu:id=".uno:InsertTable"/>
+ <menu:menuitem menu:id=".uno:InsertGraphicRuler"/>
+ <menu:menuitem menu:id=".uno:InsertGraphic"/>
+ <menu:menuitem menu:id=".uno:InsertAVMedia"/>
+ <menu:menu menu:id=".uno:ObjectMenu">
<menu:menupopup>
- <menu:menu menu:id=".uno:TableInsertMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertTable"/>
- <menu:menuitem menu:id=".uno:InsertRowDialog"/>
- <menu:menuitem menu:id=".uno:InsertColumnDialog"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:TableDeleteMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:DeleteTable"/>
- <menu:menuitem menu:id=".uno:DeleteRows"/>
- <menu:menuitem menu:id=".uno:DeleteColumns"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:TableSelectMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SelectTable"/>
- <menu:menuitem menu:id=".uno:EntireRow"/>
- <menu:menuitem menu:id=".uno:EntireColumn"/>
- <menu:menuitem menu:id=".uno:EntireCell"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:MergeCells"/>
- <menu:menuitem menu:id=".uno:SplitCell"/>
- <menu:menuitem menu:id=".uno:Protect"/>
- <menu:menuitem menu:id=".uno:MergeTable"/>
- <menu:menuitem menu:id=".uno:SplitTable"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:AutoFormat"/>
- <menu:menu menu:id=".uno:TableAutoFitMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SetColumnWidth"/>
- <menu:menuitem menu:id=".uno:SetOptimalColumnWidth"/>
- <menu:menuitem menu:id=".uno:DistributeColumns"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:SetRowHeight"/>
- <menu:menuitem menu:id=".uno:SetOptimalRowHeight"/>
- <menu:menuitem menu:id=".uno:DistributeRows"/>
- <menu:menuitem menu:id=".uno:RowSplit"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:HeadingRowsRepeat"/>
- <menu:menu menu:id=".uno:TableConvertMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:ConvertTextToTable"/>
- <menu:menuitem menu:id=".uno:ConvertTableToText"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:TableSort"/>
- <menu:menuitem menu:id=".uno:InsertFormula"/>
- <menu:menuitem menu:id=".uno:TableNumberFormatDialog"/>
- <menu:menuitem menu:id=".uno:TableBoundaries"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:TableDialog"/>
+ <menu:menuitem menu:id=".uno:InsertObject"/>
+ <menu:menuitem menu:id=".uno:InsertPlugin"/>
+ <menu:menuitem menu:id=".uno:InsertSound"/>
+ <menu:menuitem menu:id=".uno:InsertVideo"/>
+ <menu:menuitem menu:id=".uno:InsertObjectStarMath"/>
+ <menu:menuitem menu:id=".uno:InsertObjectChart"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:ToolsMenu">
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:InsertObjectFloatingFrame"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertDoc"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:FormatMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:ResetAttributes"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:FontDialog"/>
+ <menu:menuitem menu:id=".uno:ParagraphDialog"/>
+ <menu:menuitem menu:id=".uno:BulletsAndNumberingDialog"/>
+ <menu:menuitem menu:id=".uno:PageDialog"/>
+ <menu:menuseparator/>
+ <menu:menu menu:id=".uno:TransliterateMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:SpellingAndGrammarDialog"/>
- <menu:menu menu:id=".uno:LanguageMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SetLanguageSelectionMenu"/>
- <menu:menuitem menu:id=".uno:SetLanguageParagraphMenu"/>
- <menu:menuitem menu:id=".uno:SetLanguageAllTextMenu"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:HangulHanjaConversion"/>
- <menu:menuitem menu:id=".uno:ChineseConversion"/>
- <menu:menuitem menu:id=".uno:ThesaurusDialog"/>
- <menu:menuitem menu:id=".uno:Hyphenate"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:MoreDictionaries"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:WordCountDialog"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:FootnoteDialog"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:Gallery"/>
- <menu:menuitem menu:id=".uno:AVMediaPlayer"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:BibliographyComponent"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:SortDialog"/>
- <menu:menuitem menu:id=".uno:CalculateSel"/>
- <menu:menuitem menu:id=".uno:Repaginate"/>
- <menu:menuseparator/>
- <menu:menu menu:id=".uno:MacrosMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:MacroRecorder"/>
- <menu:menuitem menu:id=".uno:RunMacro"/>
- <menu:menu menu:id=".uno:ScriptOrganizer"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:MacroOrganizer?TabId:short=1"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id="service:com.sun.star.deployment.ui.PackageManagerDialog"/>
- <menu:menuitem menu:id=".uno:OpenXMLFilterSettings"/>
- <menu:menuitem menu:id=".uno:AutoCorrectDlg"/>
- <menu:menuitem menu:id=".uno:ConfigureDialog"/>
- <menu:menuitem menu:id=".uno:OptionsTreeDialog"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToSentenceCase"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToLower"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToUpper"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToTitleCase"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToToggleCase"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToHalfWidth"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToFullWidth"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToHiragana"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToKatakana"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:FormatColumns"/>
+ <menu:menuitem menu:id=".uno:EditRegion"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:DesignerDialog"/>
+ <menu:menu menu:id=".uno:AutoFormatMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:OnlineAutoFormat"/>
+ <menu:menuitem menu:id=".uno:AutoFormatApply"/>
+ <menu:menuitem menu:id=".uno:AutoFormatRedlineApply"/>
+ <menu:menuitem menu:id=".uno:AutoCorrectDlg"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menu menu:id=".uno:AnchorMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:SetAnchorToPage" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:SetAnchorToPara" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:SetAnchorAtChar" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:SetAnchorToChar" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:SetAnchorToFrame" menu:style="radio"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:WrapMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:WrapOff"/>
+ <menu:menuitem menu:id=".uno:WrapOn"/>
+ <menu:menuitem menu:id=".uno:WrapIdeal"/>
+ <menu:menuitem menu:id=".uno:WrapThrough"/>
+ <menu:menuitem menu:id=".uno:WrapThroughTransparent"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:WrapContour"/>
+ <menu:menuitem menu:id=".uno:ContourDialog"/>
+ <menu:menuitem menu:id=".uno:WrapAnchorOnly"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:TextWrap"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:ObjectAlign">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:CommonAlignLeft" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:CommonAlignHorizontalCenter" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:CommonAlignRight" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:CommonAlignJustified" menu:style="radio"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:CommonAlignTop"/>
+ <menu:menuitem menu:id=".uno:CommonAlignVerticalCenter"/>
+ <menu:menuitem menu:id=".uno:CommonAlignBottom"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:ArrangeMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:BringToFront"/>
+ <menu:menuitem menu:id=".uno:ObjectForwardOne"/>
+ <menu:menuitem menu:id=".uno:ObjectBackOne"/>
+ <menu:menuitem menu:id=".uno:SendToBack"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:SetObjectToForeground"/>
+ <menu:menuitem menu:id=".uno:SetObjectToBackground"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:FlipMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:FlipHorizontal"/>
+ <menu:menuitem menu:id=".uno:FlipVertical"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:GroupMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:FormatGroup"/>
+ <menu:menuitem menu:id=".uno:FormatUngroup"/>
+ <menu:menuitem menu:id=".uno:EnterGroup"/>
+ <menu:menuitem menu:id=".uno:LeaveGroup"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:ObjectMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:TransformDialog"/>
+ <menu:menuitem menu:id=".uno:FormatLine"/>
+ <menu:menuitem menu:id=".uno:FormatArea"/>
+ <menu:menuitem menu:id=".uno:TextAttributes"/>
+ <menu:menuitem menu:id=".uno:FontWork"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:NameGroup"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:FrameDialog"/>
+ <menu:menuitem menu:id=".uno:GraphicDialog"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:TableMenu">
+ <menu:menupopup>
+ <menu:menu menu:id=".uno:TableInsertMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:InsertTable"/>
+ <menu:menuitem menu:id=".uno:InsertRowDialog"/>
+ <menu:menuitem menu:id=".uno:InsertColumnDialog"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:TableDeleteMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:DeleteTable"/>
+ <menu:menuitem menu:id=".uno:DeleteRows"/>
+ <menu:menuitem menu:id=".uno:DeleteColumns"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:WindowList">
+ </menu:menu>
+ <menu:menu menu:id=".uno:TableSelectMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:NewWindow"/>
- <menu:menuitem menu:id=".uno:CloseWin"/>
- <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:SelectTable"/>
+ <menu:menuitem menu:id=".uno:EntireRow"/>
+ <menu:menuitem menu:id=".uno:EntireColumn"/>
+ <menu:menuitem menu:id=".uno:EntireCell"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:HelpMenu">
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:MergeCells"/>
+ <menu:menuitem menu:id=".uno:SplitCell"/>
+ <menu:menuitem menu:id=".uno:Protect"/>
+ <menu:menuitem menu:id=".uno:MergeTable"/>
+ <menu:menuitem menu:id=".uno:SplitTable"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:AutoFormat"/>
+ <menu:menu menu:id=".uno:TableAutoFitMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:HelpIndex"/>
- <menu:menuitem menu:id=".uno:ExtendedHelp"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:HelpSupport"/>
- <menu:menuitem menu:id=".uno:OnlineRegistrationDlg"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:About"/>
+ <menu:menuitem menu:id=".uno:SetColumnWidth"/>
+ <menu:menuitem menu:id=".uno:SetOptimalColumnWidth"/>
+ <menu:menuitem menu:id=".uno:DistributeColumns"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:SetRowHeight"/>
+ <menu:menuitem menu:id=".uno:SetOptimalRowHeight"/>
+ <menu:menuitem menu:id=".uno:DistributeRows"/>
+ <menu:menuitem menu:id=".uno:RowSplit"/>
</menu:menupopup>
- </menu:menu>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:HeadingRowsRepeat"/>
+ <menu:menu menu:id=".uno:TableConvertMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:ConvertTextToTable"/>
+ <menu:menuitem menu:id=".uno:ConvertTableToText"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:TableSort"/>
+ <menu:menuitem menu:id=".uno:InsertFormula"/>
+ <menu:menuitem menu:id=".uno:TableNumberFormatDialog"/>
+ <menu:menuitem menu:id=".uno:TableBoundaries"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:TableDialog"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:ToolsMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:SpellingAndGrammarDialog"/>
+ <menu:menu menu:id=".uno:LanguageMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:SetLanguageSelectionMenu"/>
+ <menu:menuitem menu:id=".uno:SetLanguageParagraphMenu"/>
+ <menu:menuitem menu:id=".uno:SetLanguageAllTextMenu"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:HangulHanjaConversion"/>
+ <menu:menuitem menu:id=".uno:ChineseConversion"/>
+ <menu:menuitem menu:id=".uno:ThesaurusDialog"/>
+ <menu:menuitem menu:id=".uno:Hyphenate"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:MoreDictionaries"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:WordCountDialog"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:FootnoteDialog"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Gallery"/>
+ <menu:menuitem menu:id=".uno:AVMediaPlayer"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:BibliographyComponent"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:SortDialog"/>
+ <menu:menuitem menu:id=".uno:CalculateSel"/>
+ <menu:menuitem menu:id=".uno:Repaginate"/>
+ <menu:menuseparator/>
+ <menu:menu menu:id=".uno:MacrosMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:MacroRecorder"/>
+ <menu:menuitem menu:id=".uno:RunMacro"/>
+ <menu:menu menu:id=".uno:ScriptOrganizer"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:MacroOrganizer?TabId:short=1"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="service:com.sun.star.deployment.ui.PackageManagerDialog"/>
+ <menu:menuitem menu:id=".uno:OpenXMLFilterSettings"/>
+ <menu:menuitem menu:id=".uno:AutoCorrectDlg"/>
+ <menu:menuitem menu:id=".uno:ConfigureDialog"/>
+ <menu:menuitem menu:id=".uno:OptionsTreeDialog"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:WindowList">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:NewWindow"/>
+ <menu:menuitem menu:id=".uno:CloseWin"/>
+ <menu:menuseparator/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:HelpMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:HelpIndex"/>
+ <menu:menuitem menu:id=".uno:ExtendedHelp"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:HelpSupport"/>
+ <menu:menuitem menu:id=".uno:OnlineRegistrationDlg"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:About"/>
+ </menu:menupopup>
+ </menu:menu>
</menu:menubar>
diff --git a/sw/uiconfig/sweb/toolbar/extrusionobjectbar.xml b/sw/uiconfig/sweb/toolbar/extrusionobjectbar.xml
index 1f212226cf52..148849db6ee7 100644
--- a/sw/uiconfig/sweb/toolbar/extrusionobjectbar.xml
+++ b/sw/uiconfig/sweb/toolbar/extrusionobjectbar.xml
@@ -8,9 +8,9 @@
<toolbar:toolbaritem xlink:href=".uno:ExtrusionTiltLeft" toolbar:helpid="10963"/>
<toolbar:toolbaritem xlink:href=".uno:ExtrusionTiltRight" toolbar:helpid="10964"/>
<toolbar:toolbarseparator/>
- <toolbar:toolbaritem xlink:href=".uno:ExtrusionDepthFloater" toolbar:helpid="10965"/>
- <toolbar:toolbaritem xlink:href=".uno:ExtrusionDirectionFloater" toolbar:helpid="10966"/>
- <toolbar:toolbaritem xlink:href=".uno:ExtrusionLightingFloater" toolbar:helpid="10967"/>
- <toolbar:toolbaritem xlink:href=".uno:ExtrusionSurfaceFloater" toolbar:helpid="10968"/>
- <toolbar:toolbaritem xlink:href=".uno:Extrusion3DColor" toolbar:helpid="10969"/>
+ <toolbar:toolbaritem xlink:href=".uno:ExtrusionDepthFloater" toolbar:helpid="10965" toolbar:style="dropdownonly"/>
+ <toolbar:toolbaritem xlink:href=".uno:ExtrusionDirectionFloater" toolbar:helpid="10966" toolbar:style="dropdownonly"/>
+ <toolbar:toolbaritem xlink:href=".uno:ExtrusionLightingFloater" toolbar:helpid="10967" toolbar:style="dropdownonly"/>
+ <toolbar:toolbaritem xlink:href=".uno:ExtrusionSurfaceFloater" toolbar:helpid="10968" toolbar:style="dropdownonly"/>
+ <toolbar:toolbaritem xlink:href=".uno:Extrusion3DColor" toolbar:helpid="10969" toolbar:style="dropdownonly"/>
</toolbar:toolbar> \ No newline at end of file
diff --git a/sw/uiconfig/sweb/toolbar/findbar.xml b/sw/uiconfig/sweb/toolbar/findbar.xml
new file mode 100644
index 000000000000..9ef9d8a1a78f
--- /dev/null
+++ b/sw/uiconfig/sweb/toolbar/findbar.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE toolbar:toolbar PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "toolbar.dtd">
+<toolbar:toolbar xmlns:toolbar="http://openoffice.org/2001/toolbar" xmlns:xlink="http://www.w3.org/1999/xlink" toolbar:id="toolbar">
+ <toolbar:toolbaritem xlink:href=".uno:FindText" toolbar:helpid="helpid:100105" />
+ <toolbar:toolbaritem xlink:href=".uno:DownSearch" toolbar:helpid="helpid:100105" />
+ <toolbar:toolbaritem xlink:href=".uno:UpSearch" toolbar:helpid="helpid:100105" />
+ <toolbar:toolbaritem xlink:href=".uno:SearchDialog" toolbar:text="Find &amp; Replace" toolbar:visible="false" toolbar:helpid="helpid:100105"/>
+</toolbar:toolbar>
diff --git a/sw/uiconfig/sweb/toolbar/fontworkobjectbar.xml b/sw/uiconfig/sweb/toolbar/fontworkobjectbar.xml
index 850943e5486b..a6d5c8d4f6f9 100644
--- a/sw/uiconfig/sweb/toolbar/fontworkobjectbar.xml
+++ b/sw/uiconfig/sweb/toolbar/fontworkobjectbar.xml
@@ -3,9 +3,9 @@
<toolbar:toolbar xmlns:toolbar="http://openoffice.org/2001/toolbar" xmlns:xlink="http://www.w3.org/1999/xlink" toolbar:id="toolbar">
<toolbar:toolbaritem xlink:href=".uno:FontworkGalleryFloater" toolbar:helpid="helpid:10977" />
<toolbar:toolbarseparator/>
- <toolbar:toolbaritem xlink:href=".uno:FontworkShapeType" toolbar:helpid="helpid:10978" toolbar:style="radio dropdown" />
+ <toolbar:toolbaritem xlink:href=".uno:FontworkShapeType" toolbar:helpid="helpid:10978" toolbar:style="dropdownonly" />
<toolbar:toolbaritem xlink:href=".uno:FontworkSameLetterHeights" toolbar:helpid="helpid:10979" />
<toolbar:toolbarseparator/>
- <toolbar:toolbaritem xlink:href=".uno:FontworkAlignmentFloater" toolbar:helpid="helpid:10981" />
- <toolbar:toolbaritem xlink:href=".uno:FontworkCharacterSpacingFloater" toolbar:helpid="helpid:10982" />
+ <toolbar:toolbaritem xlink:href=".uno:FontworkAlignmentFloater" toolbar:helpid="helpid:10981" toolbar:style="dropdownonly" />
+ <toolbar:toolbaritem xlink:href=".uno:FontworkCharacterSpacingFloater" toolbar:helpid="helpid:10982" toolbar:style="dropdownonly" />
</toolbar:toolbar>
diff --git a/sw/uiconfig/swform/accelerator/de/default.xml b/sw/uiconfig/swform/accelerator/de/default.xml
deleted file mode 100644
index 8ac4a74fd3a3..000000000000
--- a/sw/uiconfig/swform/accelerator/de/default.xml
+++ /dev/null
@@ -1,119 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
- <accel:item accel:code="KEY_0" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Text body&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" accel:shift="true" xlink:href=".uno:StyleApply?Style:string=Standard&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_1" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 1&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_2" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 2&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_3" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 3&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_4" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 4&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_5" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 5&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_A" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaLeftToRight"/>
- <accel:item accel:code="KEY_ADD" accel:mod1="true" xlink:href=".uno:CalculateSel"/>
- <accel:item accel:code="KEY_B" accel:mod1="true" xlink:href=".uno:JustifyPara"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod1="true" xlink:href=".uno:DelToStartOfWord"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToStartOfSentence"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" xlink:href=".uno:ShiftBackspace"/>
- <accel:item accel:code="KEY_BACKSPACE" xlink:href=".uno:SwBackspace"/>
- <accel:item accel:code="KEY_D" accel:mod1="true" xlink:href=".uno:UnderlineDouble"/>
- <accel:item accel:code="KEY_D" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaRightToLeft"/>
- <accel:item accel:code="KEY_DELETE" accel:mod1="true" xlink:href=".uno:DelToEndOfWord"/>
- <accel:item accel:code="KEY_DELETE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToEndOfSentence"/>
- <accel:item accel:code="KEY_DIVIDE" accel:mod1="true" xlink:href=".uno:InsertZWSP"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveDown"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" xlink:href=".uno:GoToNextPara"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfParaSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" xlink:href=".uno:LineDownSel"/>
- <accel:item accel:code="KEY_DOWN" xlink:href=".uno:GoDown"/>
- <accel:item accel:code="KEY_E" accel:mod1="true" xlink:href=".uno:CenterPara"/>
- <accel:item accel:code="KEY_END" accel:mod1="true" accel:mod2="true" xlink:href=".uno:LastRecord"/>
- <accel:item accel:code="KEY_END" accel:mod1="true" xlink:href=".uno:GoToEndOfDoc"/>
- <accel:item accel:code="KEY_END" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfDocumentSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" xlink:href=".uno:EndOfLineSel"/>
- <accel:item accel:code="KEY_END" xlink:href=".uno:GoToEndOfLine"/>
- <accel:item accel:code="KEY_ESCAPE" xlink:href=".uno:Escape"/>
- <accel:item accel:code="KEY_F" accel:shift="true" accel:mod1="true" xlink:href=".uno:Bold"/>
- <accel:item accel:code="KEY_F10" accel:mod1="true" xlink:href=".uno:ControlCodes"/>
- <accel:item accel:code="KEY_F11" accel:mod1="true" xlink:href=".uno:ActivateStyleApply"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" accel:mod1="true" xlink:href=".uno:StyleUpdateByExample"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" xlink:href=".uno:StyleNewByExample"/>
- <accel:item accel:code="KEY_F11" xlink:href=".uno:DesignerDialog"/>
- <accel:item accel:code="KEY_F12" accel:mod1="true" xlink:href=".uno:InsertTable"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveBullets"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" xlink:href=".uno:DefaultBullet"/>
- <accel:item accel:code="KEY_F12" xlink:href=".uno:DefaultNumbering"/>
- <accel:item accel:code="KEY_F2" accel:mod1="true" xlink:href=".uno:InsertField"/>
- <accel:item accel:code="KEY_F2" xlink:href=".uno:InsertFormula"/>
- <accel:item accel:code="KEY_F3" accel:mod1="true" xlink:href=".uno:EditGlossary"/>
- <accel:item accel:code="KEY_F3" xlink:href=".uno:ExpandGlossary"/>
- <accel:item accel:code="KEY_F4" accel:shift="true" xlink:href=".uno:JumpToNextFrame"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" accel:mod1="true" xlink:href=".uno:GotoPage"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" xlink:href=".uno:RestoreEditingView"/>
- <accel:item accel:code="KEY_F5" xlink:href=".uno:Navigator"/>
- <accel:item accel:code="KEY_F7" accel:mod1="true" xlink:href=".uno:ThesaurusDialog"/>
- <accel:item accel:code="KEY_F7" xlink:href=".uno:SpellingAndGrammarDialog"/>
- <accel:item accel:code="KEY_F8" accel:mod1="true" xlink:href=".uno:Marks"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" xlink:href=".uno:SetMultiSelection"/>
- <accel:item accel:code="KEY_F8" xlink:href=".uno:SetExtSelection"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod2="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_F9" accel:mod1="true" xlink:href=".uno:Fieldnames"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" accel:mod1="true" xlink:href=".uno:UpdateInputFields"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" xlink:href=".uno:Calc"/>
- <accel:item accel:code="KEY_F9" xlink:href=".uno:UpdateFields"/>
- <accel:item accel:code="KEY_G" accel:mod1="true" xlink:href=".uno:RepeatSearch"/>
- <accel:item accel:code="KEY_H" accel:mod1="true" xlink:href=".uno:SuperScript"/>
- <accel:item accel:code="KEY_HOME" accel:mod1="true" accel:mod2="true" xlink:href=".uno:FirstRecord"/>
- <accel:item accel:code="KEY_HOME" accel:mod1="true" xlink:href=".uno:GoToStartOfDoc"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfDocumentSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" xlink:href=".uno:StartOfLineSel"/>
- <accel:item accel:code="KEY_HOME" xlink:href=".uno:GoToStartOfLine"/>
- <accel:item accel:code="KEY_I" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectTextMode"/>
- <accel:item accel:code="KEY_INSERT" xlink:href=".uno:InsertMode"/>
- <accel:item accel:code="KEY_J" accel:shift="true" accel:mod1="true" xlink:href=".uno:FullScreen"/>
- <accel:item accel:code="KEY_K" accel:shift="true" accel:mod1="true" xlink:href=".uno:Italic"/>
- <accel:item accel:code="KEY_L" accel:mod1="true" xlink:href=".uno:LeftPara"/>
- <accel:item accel:code="KEY_L" accel:shift="true" accel:mod1="true" xlink:href=".uno:FormFilter"/>
- <accel:item accel:code="KEY_LEFT" accel:mod1="true" accel:mod2="true" xlink:href=".uno:PrevRecord"/>
- <accel:item accel:code="KEY_LEFT" accel:mod1="true" xlink:href=".uno:GoToPrevWord"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordLeftSel"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" xlink:href=".uno:CharLeftSel"/>
- <accel:item accel:code="KEY_LEFT" xlink:href=".uno:GoLeft"/>
- <accel:item accel:code="KEY_MULTIPLY" accel:mod1="true" xlink:href=".uno:ExecuteMacroField"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:mod1="true" xlink:href=".uno:JumpToFooter"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:JumpToFootnoteArea"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" xlink:href=".uno:PageDownSel"/>
- <accel:item accel:code="KEY_PAGEDOWN" xlink:href=".uno:PageDown"/>
- <accel:item accel:code="KEY_PAGEUP" accel:mod1="true" xlink:href=".uno:JumpToHeader"/>
- <accel:item accel:code="KEY_PAGEUP" accel:shift="true" xlink:href=".uno:PageUpSel"/>
- <accel:item accel:code="KEY_PAGEUP" xlink:href=".uno:PageUp"/>
- <accel:item accel:code="KEY_R" accel:mod1="true" xlink:href=".uno:RightPara"/>
- <accel:item accel:code="KEY_R" accel:shift="true" accel:mod1="true" xlink:href=".uno:RefreshView"/>
- <accel:item accel:code="KEY_REPEAT" xlink:href=".uno:Repeat"/>
- <accel:item accel:code="KEY_RETURN" accel:mod1="true" xlink:href=".uno:InsertPagebreak"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertColumnBreak"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" xlink:href=".uno:InsertLinebreak"/>
- <accel:item accel:code="KEY_RETURN" xlink:href=".uno:InsertPara"/>
- <accel:item accel:code="KEY_RIGHT" accel:mod1="true" accel:mod2="true" xlink:href=".uno:NextRecord"/>
- <accel:item accel:code="KEY_RIGHT" accel:mod1="true" xlink:href=".uno:GoToNextWord"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordRightSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" xlink:href=".uno:CharRightSel"/>
- <accel:item accel:code="KEY_RIGHT" xlink:href=".uno:GoRight"/>
- <accel:item accel:code="KEY_M" accel:mod1="true" xlink:href=".uno:ResetAttributes"/>
- <accel:item accel:code="KEY_SPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertNonBreakingSpace"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:mod1="true" xlink:href=".uno:InsertSoftHyphen"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertHardHyphen"/>
- <accel:item accel:code="KEY_T" accel:mod1="true" xlink:href=".uno:SubScript"/>
- <accel:item accel:code="KEY_T" accel:shift="true" accel:mod1="true" xlink:href=".uno:ResetTableProtection"/>
- <accel:item accel:code="KEY_U" accel:shift="true" accel:mod1="true" xlink:href=".uno:Underline"/>
- <accel:item accel:code="KEY_UNDO" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveUp"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" xlink:href=".uno:GoToPrevPara"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfParaSel"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" xlink:href=".uno:LineUpSel"/>
- <accel:item accel:code="KEY_UP" xlink:href=".uno:GoUp"/>
- <accel:item accel:code="KEY_V" accel:shift="true" accel:mod1="true" xlink:href=".uno:PasteSpecial"/>
- <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href=".uno:Redo"/>
- <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_N" accel:mod1="true" accel:mod2="true" xlink:href=".uno:InsertAnnotation"/>
-</accel:acceleratorlist>
diff --git a/sw/uiconfig/swform/accelerator/en-US/default.xml b/sw/uiconfig/swform/accelerator/en-US/default.xml
deleted file mode 100644
index 82fcdd073baa..000000000000
--- a/sw/uiconfig/swform/accelerator/en-US/default.xml
+++ /dev/null
@@ -1,120 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
- <accel:item accel:code="KEY_0" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Text body&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" accel:shift="true" xlink:href=".uno:StyleApply?Style:string=Standard&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_1" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 1&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_2" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 2&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_3" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 3&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_4" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 4&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_5" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 5&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_A" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaLeftToRight"/>
- <accel:item accel:code="KEY_ADD" accel:mod1="true" xlink:href=".uno:CalculateSel"/>
- <accel:item accel:code="KEY_B" accel:mod1="true" xlink:href=".uno:Bold"/>
- <accel:item accel:code="KEY_B" accel:shift="true" accel:mod1="true" xlink:href=".uno:SubScript"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod1="true" xlink:href=".uno:DelToStartOfWord"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToStartOfSentence"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" xlink:href=".uno:ShiftBackspace"/>
- <accel:item accel:code="KEY_BACKSPACE" xlink:href=".uno:SwBackspace"/>
- <accel:item accel:code="KEY_D" accel:mod1="true" xlink:href=".uno:UnderlineDouble"/>
- <accel:item accel:code="KEY_D" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaRightToLeft"/>
- <accel:item accel:code="KEY_DELETE" accel:mod1="true" xlink:href=".uno:DelToEndOfWord"/>
- <accel:item accel:code="KEY_DELETE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToEndOfSentence"/>
- <accel:item accel:code="KEY_DIVIDE" accel:mod1="true" xlink:href=".uno:InsertZWSP"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveDown"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" xlink:href=".uno:GoToNextPara"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfParaSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" xlink:href=".uno:LineDownSel"/>
- <accel:item accel:code="KEY_DOWN" xlink:href=".uno:GoDown"/>
- <accel:item accel:code="KEY_E" accel:mod1="true" xlink:href=".uno:CenterPara"/>
- <accel:item accel:code="KEY_END" accel:mod1="true" accel:mod2="true" xlink:href=".uno:LastRecord"/>
- <accel:item accel:code="KEY_END" accel:mod1="true" xlink:href=".uno:GoToEndOfDoc"/>
- <accel:item accel:code="KEY_END" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfDocumentSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" xlink:href=".uno:EndOfLineSel"/>
- <accel:item accel:code="KEY_END" xlink:href=".uno:GoToEndOfLine"/>
- <accel:item accel:code="KEY_ESCAPE" xlink:href=".uno:Escape"/>
- <accel:item accel:code="KEY_F" accel:shift="true" accel:mod1="true" xlink:href=".uno:RepeatSearch"/>
- <accel:item accel:code="KEY_F10" accel:mod1="true" xlink:href=".uno:ControlCodes"/>
- <accel:item accel:code="KEY_F11" accel:mod1="true" xlink:href=".uno:ActivateStyleApply"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" accel:mod1="true" xlink:href=".uno:StyleUpdateByExample"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" xlink:href=".uno:StyleNewByExample"/>
- <accel:item accel:code="KEY_F11" xlink:href=".uno:DesignerDialog"/>
- <accel:item accel:code="KEY_F12" accel:mod1="true" xlink:href=".uno:InsertTable"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveBullets"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" xlink:href=".uno:DefaultBullet"/>
- <accel:item accel:code="KEY_F12" xlink:href=".uno:DefaultNumbering"/>
- <accel:item accel:code="KEY_F2" accel:mod1="true" xlink:href=".uno:InsertField"/>
- <accel:item accel:code="KEY_F2" xlink:href=".uno:InsertFormula"/>
- <accel:item accel:code="KEY_F3" accel:mod1="true" xlink:href=".uno:EditGlossary"/>
- <accel:item accel:code="KEY_F3" xlink:href=".uno:ExpandGlossary"/>
- <accel:item accel:code="KEY_F4" accel:shift="true" xlink:href=".uno:JumpToNextFrame"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" accel:mod1="true" xlink:href=".uno:GotoPage"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" xlink:href=".uno:RestoreEditingView"/>
- <accel:item accel:code="KEY_F5" xlink:href=".uno:Navigator"/>
- <accel:item accel:code="KEY_F7" accel:mod1="true" xlink:href=".uno:ThesaurusDialog"/>
- <accel:item accel:code="KEY_F7" xlink:href=".uno:SpellingAndGrammarDialog"/>
- <accel:item accel:code="KEY_F8" accel:mod1="true" xlink:href=".uno:Marks"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" xlink:href=".uno:SetMultiSelection"/>
- <accel:item accel:code="KEY_F8" xlink:href=".uno:SetExtSelection"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod2="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_F9" accel:mod1="true" xlink:href=".uno:Fieldnames"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" accel:mod1="true" xlink:href=".uno:UpdateInputFields"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" xlink:href=".uno:Calc"/>
- <accel:item accel:code="KEY_F9" xlink:href=".uno:UpdateFields"/>
- <accel:item accel:code="KEY_HOME" accel:mod1="true" accel:mod2="true" xlink:href=".uno:FirstRecord"/>
- <accel:item accel:code="KEY_HOME" accel:mod1="true" xlink:href=".uno:GoToStartOfDoc"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfDocumentSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" xlink:href=".uno:StartOfLineSel"/>
- <accel:item accel:code="KEY_HOME" xlink:href=".uno:GoToStartOfLine"/>
- <accel:item accel:code="KEY_I" accel:mod1="true" xlink:href=".uno:Italic"/>
- <accel:item accel:code="KEY_I" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectTextMode"/>
- <accel:item accel:code="KEY_INSERT" xlink:href=".uno:InsertMode"/>
- <accel:item accel:code="KEY_J" accel:mod1="true" xlink:href=".uno:JustifyPara"/>
- <accel:item accel:code="KEY_J" accel:shift="true" accel:mod1="true" xlink:href=".uno:FullScreen"/>
- <accel:item accel:code="KEY_L" accel:mod1="true" xlink:href=".uno:LeftPara"/>
- <accel:item accel:code="KEY_L" accel:shift="true" accel:mod1="true" xlink:href=".uno:FormFilter"/>
- <accel:item accel:code="KEY_LEFT" accel:mod1="true" accel:mod2="true" xlink:href=".uno:PrevRecord"/>
- <accel:item accel:code="KEY_LEFT" accel:mod1="true" xlink:href=".uno:GoToPrevWord"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordLeftSel"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" xlink:href=".uno:CharLeftSel"/>
- <accel:item accel:code="KEY_LEFT" xlink:href=".uno:GoLeft"/>
- <accel:item accel:code="KEY_MULTIPLY" accel:mod1="true" xlink:href=".uno:ExecuteMacroField"/>
- <accel:item accel:code="KEY_P" accel:shift="true" accel:mod1="true" xlink:href=".uno:SuperScript"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:mod1="true" xlink:href=".uno:JumpToFooter"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:JumpToFootnoteArea"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" xlink:href=".uno:PageDownSel"/>
- <accel:item accel:code="KEY_PAGEDOWN" xlink:href=".uno:PageDown"/>
- <accel:item accel:code="KEY_PAGEUP" accel:mod1="true" xlink:href=".uno:JumpToHeader"/>
- <accel:item accel:code="KEY_PAGEUP" accel:shift="true" xlink:href=".uno:PageUpSel"/>
- <accel:item accel:code="KEY_PAGEUP" xlink:href=".uno:PageUp"/>
- <accel:item accel:code="KEY_R" accel:mod1="true" xlink:href=".uno:RightPara"/>
- <accel:item accel:code="KEY_R" accel:shift="true" accel:mod1="true" xlink:href=".uno:RefreshView"/>
- <accel:item accel:code="KEY_REPEAT" xlink:href=".uno:Repeat"/>
- <accel:item accel:code="KEY_RETURN" accel:mod1="true" xlink:href=".uno:InsertPagebreak"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertColumnBreak"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" xlink:href=".uno:InsertLinebreak"/>
- <accel:item accel:code="KEY_RETURN" xlink:href=".uno:InsertPara"/>
- <accel:item accel:code="KEY_RIGHT" accel:mod1="true" accel:mod2="true" xlink:href=".uno:NextRecord"/>
- <accel:item accel:code="KEY_RIGHT" accel:mod1="true" xlink:href=".uno:GoToNextWord"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordRightSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" xlink:href=".uno:CharRightSel"/>
- <accel:item accel:code="KEY_RIGHT" xlink:href=".uno:GoRight"/>
- <accel:item accel:code="KEY_M" accel:mod1="true" xlink:href=".uno:ResetAttributes"/>
- <accel:item accel:code="KEY_SPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertNonBreakingSpace"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:mod1="true" xlink:href=".uno:InsertSoftHyphen"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertHardHyphen"/>
- <accel:item accel:code="KEY_T" accel:shift="true" accel:mod1="true" xlink:href=".uno:ResetTableProtection"/>
- <accel:item accel:code="KEY_U" accel:mod1="true" xlink:href=".uno:Underline"/>
- <accel:item accel:code="KEY_UNDO" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveUp"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" xlink:href=".uno:GoToPrevPara"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfParaSel"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" xlink:href=".uno:LineUpSel"/>
- <accel:item accel:code="KEY_UP" xlink:href=".uno:GoUp"/>
- <accel:item accel:code="KEY_V" accel:shift="true" accel:mod1="true" xlink:href=".uno:PasteSpecial"/>
- <accel:item accel:code="KEY_X" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveDirectCharFormats"/>
- <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href=".uno:Redo"/>
- <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_C" accel:mod1="true" accel:mod2="true" xlink:href=".uno:InsertAnnotation"/>
-</accel:acceleratorlist>
diff --git a/sw/uiconfig/swform/accelerator/es/default.xml b/sw/uiconfig/swform/accelerator/es/default.xml
deleted file mode 100644
index db982a44d7f6..000000000000
--- a/sw/uiconfig/swform/accelerator/es/default.xml
+++ /dev/null
@@ -1,119 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
- <accel:item accel:code="KEY_0" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Text body&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" accel:shift="true" xlink:href=".uno:StyleApply?Style:string=Standard&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_1" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 1&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_2" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 2&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_3" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 3&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_4" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 4&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_5" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 5&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_A" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaLeftToRight"/>
- <accel:item accel:code="KEY_ADD" accel:mod1="true" xlink:href=".uno:CalculateSel"/>
- <accel:item accel:code="KEY_B" accel:shift="true" accel:mod1="true" xlink:href=".uno:SubScript"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod1="true" xlink:href=".uno:DelToStartOfWord"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToStartOfSentence"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" xlink:href=".uno:ShiftBackspace"/>
- <accel:item accel:code="KEY_BACKSPACE" xlink:href=".uno:SwBackspace"/>
- <accel:item accel:code="KEY_D" accel:mod1="true" xlink:href=".uno:UnderlineDouble"/>
- <accel:item accel:code="KEY_D" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaRightToLeft"/>
- <accel:item accel:code="KEY_DELETE" accel:mod1="true" xlink:href=".uno:DelToEndOfWord"/>
- <accel:item accel:code="KEY_DELETE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToEndOfSentence"/>
- <accel:item accel:code="KEY_DIVIDE" accel:mod1="true" xlink:href=".uno:InsertZWSP"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveDown"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" xlink:href=".uno:GoToNextPara"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfParaSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" xlink:href=".uno:LineDownSel"/>
- <accel:item accel:code="KEY_DOWN" xlink:href=".uno:GoDown"/>
- <accel:item accel:code="KEY_END" accel:mod1="true" accel:mod2="true" xlink:href=".uno:LastRecord"/>
- <accel:item accel:code="KEY_END" accel:mod1="true" xlink:href=".uno:GoToEndOfDoc"/>
- <accel:item accel:code="KEY_END" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfDocumentSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" xlink:href=".uno:EndOfLineSel"/>
- <accel:item accel:code="KEY_END" xlink:href=".uno:GoToEndOfLine"/>
- <accel:item accel:code="KEY_ESCAPE" xlink:href=".uno:Escape"/>
- <accel:item accel:code="KEY_F" accel:shift="true" accel:mod1="true" xlink:href=".uno:RepeatSearch"/>
- <accel:item accel:code="KEY_F10" accel:mod1="true" xlink:href=".uno:ControlCodes"/>
- <accel:item accel:code="KEY_F11" accel:mod1="true" xlink:href=".uno:ActivateStyleApply"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" accel:mod1="true" xlink:href=".uno:StyleUpdateByExample"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" xlink:href=".uno:StyleNewByExample"/>
- <accel:item accel:code="KEY_F11" xlink:href=".uno:DesignerDialog"/>
- <accel:item accel:code="KEY_F12" accel:mod1="true" xlink:href=".uno:InsertTable"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveBullets"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" xlink:href=".uno:DefaultBullet"/>
- <accel:item accel:code="KEY_F12" xlink:href=".uno:DefaultNumbering"/>
- <accel:item accel:code="KEY_F2" accel:mod1="true" xlink:href=".uno:InsertField"/>
- <accel:item accel:code="KEY_F2" xlink:href=".uno:InsertFormula"/>
- <accel:item accel:code="KEY_F3" accel:mod1="true" xlink:href=".uno:EditGlossary"/>
- <accel:item accel:code="KEY_F3" xlink:href=".uno:ExpandGlossary"/>
- <accel:item accel:code="KEY_F4" accel:shift="true" xlink:href=".uno:JumpToNextFrame"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" accel:mod1="true" xlink:href=".uno:GotoPage"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" xlink:href=".uno:RestoreEditingView"/>
- <accel:item accel:code="KEY_F5" xlink:href=".uno:Navigator"/>
- <accel:item accel:code="KEY_F7" accel:mod1="true" xlink:href=".uno:ThesaurusDialog"/>
- <accel:item accel:code="KEY_F7" xlink:href=".uno:SpellingAndGrammarDialog"/>
- <accel:item accel:code="KEY_F8" accel:mod1="true" xlink:href=".uno:Marks"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" xlink:href=".uno:SetMultiSelection"/>
- <accel:item accel:code="KEY_F8" xlink:href=".uno:SetExtSelection"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod2="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_F9" accel:mod1="true" xlink:href=".uno:Fieldnames"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" accel:mod1="true" xlink:href=".uno:UpdateInputFields"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" xlink:href=".uno:Calc"/>
- <accel:item accel:code="KEY_F9" xlink:href=".uno:UpdateFields"/>
- <accel:item accel:code="KEY_HOME" accel:mod1="true" accel:mod2="true" xlink:href=".uno:FirstRecord"/>
- <accel:item accel:code="KEY_HOME" accel:mod1="true" xlink:href=".uno:GoToStartOfDoc"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfDocumentSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" xlink:href=".uno:StartOfLineSel"/>
- <accel:item accel:code="KEY_HOME" xlink:href=".uno:GoToStartOfLine"/>
- <accel:item accel:code="KEY_I" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectTextMode"/>
- <accel:item accel:code="KEY_INSERT" xlink:href=".uno:InsertMode"/>
- <accel:item accel:code="KEY_J" accel:mod1="true" xlink:href=".uno:JustifyPara"/>
- <accel:item accel:code="KEY_J" accel:shift="true" accel:mod1="true" xlink:href=".uno:FullScreen"/>
- <accel:item accel:code="KEY_K" accel:mod1="true" xlink:href=".uno:Italic"/>
- <accel:item accel:code="KEY_L" accel:mod1="true" xlink:href=".uno:LeftPara"/>
- <accel:item accel:code="KEY_L" accel:shift="true" accel:mod1="true" xlink:href=".uno:FormFilter"/>
- <accel:item accel:code="KEY_LEFT" accel:mod1="true" accel:mod2="true" xlink:href=".uno:PrevRecord"/>
- <accel:item accel:code="KEY_LEFT" accel:mod1="true" xlink:href=".uno:GoToPrevWord"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordLeftSel"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" xlink:href=".uno:CharLeftSel"/>
- <accel:item accel:code="KEY_LEFT" xlink:href=".uno:GoLeft"/>
- <accel:item accel:code="KEY_MULTIPLY" accel:mod1="true" xlink:href=".uno:ExecuteMacroField"/>
- <accel:item accel:code="KEY_N" accel:mod1="true" xlink:href=".uno:Bold"/>
- <accel:item accel:code="KEY_P" accel:shift="true" accel:mod1="true" xlink:href=".uno:SuperScript"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:mod1="true" xlink:href=".uno:JumpToFooter"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:JumpToFootnoteArea"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" xlink:href=".uno:PageDownSel"/>
- <accel:item accel:code="KEY_PAGEDOWN" xlink:href=".uno:PageDown"/>
- <accel:item accel:code="KEY_PAGEUP" accel:mod1="true" xlink:href=".uno:JumpToHeader"/>
- <accel:item accel:code="KEY_PAGEUP" accel:shift="true" xlink:href=".uno:PageUpSel"/>
- <accel:item accel:code="KEY_PAGEUP" xlink:href=".uno:PageUp"/>
- <accel:item accel:code="KEY_R" accel:mod1="true" xlink:href=".uno:RightPara"/>
- <accel:item accel:code="KEY_R" accel:shift="true" accel:mod1="true" xlink:href=".uno:RefreshView"/>
- <accel:item accel:code="KEY_REPEAT" xlink:href=".uno:Repeat"/>
- <accel:item accel:code="KEY_RETURN" accel:mod1="true" xlink:href=".uno:InsertPagebreak"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertColumnBreak"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" xlink:href=".uno:InsertLinebreak"/>
- <accel:item accel:code="KEY_RETURN" xlink:href=".uno:InsertPara"/>
- <accel:item accel:code="KEY_RIGHT" accel:mod1="true" accel:mod2="true" xlink:href=".uno:NextRecord"/>
- <accel:item accel:code="KEY_RIGHT" accel:mod1="true" xlink:href=".uno:GoToNextWord"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordRightSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" xlink:href=".uno:CharRightSel"/>
- <accel:item accel:code="KEY_RIGHT" xlink:href=".uno:GoRight"/>
- <accel:item accel:code="KEY_S" accel:mod1="true" xlink:href=".uno:Underline"/>
- <accel:item accel:code="KEY_M" accel:mod1="true" xlink:href=".uno:ResetAttributes"/>
- <accel:item accel:code="KEY_SPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertNonBreakingSpace"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:mod1="true" xlink:href=".uno:InsertSoftHyphen"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertHardHyphen"/>
- <accel:item accel:code="KEY_T" accel:mod1="true" xlink:href=".uno:CenterPara"/>
- <accel:item accel:code="KEY_T" accel:shift="true" accel:mod1="true" xlink:href=".uno:ResetTableProtection"/>
- <accel:item accel:code="KEY_UNDO" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveUp"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" xlink:href=".uno:GoToPrevPara"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfParaSel"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" xlink:href=".uno:LineUpSel"/>
- <accel:item accel:code="KEY_UP" xlink:href=".uno:GoUp"/>
- <accel:item accel:code="KEY_V" accel:shift="true" accel:mod1="true" xlink:href=".uno:PasteSpecial"/>
- <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href=".uno:Redo"/>
- <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_N" accel:mod1="true" accel:mod2="true" xlink:href=".uno:InsertAnnotation"/>
-</accel:acceleratorlist>
diff --git a/sw/uiconfig/swform/accelerator/fr/default.xml b/sw/uiconfig/swform/accelerator/fr/default.xml
deleted file mode 100644
index 98b7eb4c0cd8..000000000000
--- a/sw/uiconfig/swform/accelerator/fr/default.xml
+++ /dev/null
@@ -1,119 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
- <accel:item accel:code="KEY_0" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Text body&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" accel:shift="true" xlink:href=".uno:StyleApply?Style:string=Standard&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_1" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 1&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_2" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 2&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_3" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 3&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_4" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 4&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_5" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 5&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_A" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaLeftToRight"/>
- <accel:item accel:code="KEY_ADD" accel:mod1="true" xlink:href=".uno:CalculateSel"/>
- <accel:item accel:code="KEY_B" accel:shift="true" accel:mod1="true" xlink:href=".uno:SubScript"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod1="true" xlink:href=".uno:DelToStartOfWord"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToStartOfSentence"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" xlink:href=".uno:ShiftBackspace"/>
- <accel:item accel:code="KEY_BACKSPACE" xlink:href=".uno:SwBackspace"/>
- <accel:item accel:code="KEY_D" accel:mod1="true" xlink:href=".uno:UnderlineDouble"/>
- <accel:item accel:code="KEY_D" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaRightToLeft"/>
- <accel:item accel:code="KEY_DELETE" accel:mod1="true" xlink:href=".uno:DelToEndOfWord"/>
- <accel:item accel:code="KEY_DELETE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToEndOfSentence"/>
- <accel:item accel:code="KEY_DIVIDE" accel:mod1="true" xlink:href=".uno:InsertZWSP"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveDown"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" xlink:href=".uno:GoToNextPara"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfParaSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" xlink:href=".uno:LineDownSel"/>
- <accel:item accel:code="KEY_DOWN" xlink:href=".uno:GoDown"/>
- <accel:item accel:code="KEY_E" accel:mod1="true" xlink:href=".uno:CenterPara"/>
- <accel:item accel:code="KEY_END" accel:mod1="true" accel:mod2="true" xlink:href=".uno:LastRecord"/>
- <accel:item accel:code="KEY_END" accel:mod1="true" xlink:href=".uno:GoToEndOfDoc"/>
- <accel:item accel:code="KEY_END" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfDocumentSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" xlink:href=".uno:EndOfLineSel"/>
- <accel:item accel:code="KEY_END" xlink:href=".uno:GoToEndOfLine"/>
- <accel:item accel:code="KEY_ESCAPE" xlink:href=".uno:Escape"/>
- <accel:item accel:code="KEY_F" accel:shift="true" accel:mod1="true" xlink:href=".uno:RepeatSearch"/>
- <accel:item accel:code="KEY_F10" accel:mod1="true" xlink:href=".uno:ControlCodes"/>
- <accel:item accel:code="KEY_F11" accel:mod1="true" xlink:href=".uno:ActivateStyleApply"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" accel:mod1="true" xlink:href=".uno:StyleUpdateByExample"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" xlink:href=".uno:StyleNewByExample"/>
- <accel:item accel:code="KEY_F11" xlink:href=".uno:DesignerDialog"/>
- <accel:item accel:code="KEY_F12" accel:mod1="true" xlink:href=".uno:InsertTable"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveBullets"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" xlink:href=".uno:DefaultBullet"/>
- <accel:item accel:code="KEY_F12" xlink:href=".uno:DefaultNumbering"/>
- <accel:item accel:code="KEY_F2" accel:mod1="true" xlink:href=".uno:InsertField"/>
- <accel:item accel:code="KEY_F2" xlink:href=".uno:InsertFormula"/>
- <accel:item accel:code="KEY_F3" accel:mod1="true" xlink:href=".uno:EditGlossary"/>
- <accel:item accel:code="KEY_F3" xlink:href=".uno:ExpandGlossary"/>
- <accel:item accel:code="KEY_F4" accel:shift="true" xlink:href=".uno:JumpToNextFrame"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" accel:mod1="true" xlink:href=".uno:GotoPage"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" xlink:href=".uno:RestoreEditingView"/>
- <accel:item accel:code="KEY_F5" xlink:href=".uno:Navigator"/>
- <accel:item accel:code="KEY_F7" accel:mod1="true" xlink:href=".uno:ThesaurusDialog"/>
- <accel:item accel:code="KEY_F7" xlink:href=".uno:SpellingAndGrammarDialog"/>
- <accel:item accel:code="KEY_F8" accel:mod1="true" xlink:href=".uno:Marks"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" xlink:href=".uno:SetMultiSelection"/>
- <accel:item accel:code="KEY_F8" xlink:href=".uno:SetExtSelection"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod2="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_F9" accel:mod1="true" xlink:href=".uno:Fieldnames"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" accel:mod1="true" xlink:href=".uno:UpdateInputFields"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" xlink:href=".uno:Calc"/>
- <accel:item accel:code="KEY_F9" xlink:href=".uno:UpdateFields"/>
- <accel:item accel:code="KEY_G" accel:mod1="true" xlink:href=".uno:Bold"/>
- <accel:item accel:code="KEY_HOME" accel:mod1="true" accel:mod2="true" xlink:href=".uno:FirstRecord"/>
- <accel:item accel:code="KEY_HOME" accel:mod1="true" xlink:href=".uno:GoToStartOfDoc"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfDocumentSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" xlink:href=".uno:StartOfLineSel"/>
- <accel:item accel:code="KEY_HOME" xlink:href=".uno:GoToStartOfLine"/>
- <accel:item accel:code="KEY_I" accel:mod1="true" xlink:href=".uno:Italic"/>
- <accel:item accel:code="KEY_I" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectTextMode"/>
- <accel:item accel:code="KEY_INSERT" xlink:href=".uno:InsertMode"/>
- <accel:item accel:code="KEY_J" accel:mod1="true" xlink:href=".uno:JustifyPara"/>
- <accel:item accel:code="KEY_J" accel:shift="true" accel:mod1="true" xlink:href=".uno:FullScreen"/>
- <accel:item accel:code="KEY_L" accel:mod1="true" xlink:href=".uno:LeftPara"/>
- <accel:item accel:code="KEY_L" accel:shift="true" accel:mod1="true" xlink:href=".uno:FormFilter"/>
- <accel:item accel:code="KEY_LEFT" accel:mod1="true" accel:mod2="true" xlink:href=".uno:PrevRecord"/>
- <accel:item accel:code="KEY_LEFT" accel:mod1="true" xlink:href=".uno:GoToPrevWord"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordLeftSel"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" xlink:href=".uno:CharLeftSel"/>
- <accel:item accel:code="KEY_LEFT" xlink:href=".uno:GoLeft"/>
- <accel:item accel:code="KEY_MULTIPLY" accel:mod1="true" xlink:href=".uno:ExecuteMacroField"/>
- <accel:item accel:code="KEY_P" accel:shift="true" accel:mod1="true" xlink:href=".uno:SuperScript"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:mod1="true" xlink:href=".uno:JumpToFooter"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:JumpToFootnoteArea"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" xlink:href=".uno:PageDownSel"/>
- <accel:item accel:code="KEY_PAGEDOWN" xlink:href=".uno:PageDown"/>
- <accel:item accel:code="KEY_PAGEUP" accel:mod1="true" xlink:href=".uno:JumpToHeader"/>
- <accel:item accel:code="KEY_PAGEUP" accel:shift="true" xlink:href=".uno:PageUpSel"/>
- <accel:item accel:code="KEY_PAGEUP" xlink:href=".uno:PageUp"/>
- <accel:item accel:code="KEY_R" accel:mod1="true" xlink:href=".uno:RightPara"/>
- <accel:item accel:code="KEY_R" accel:shift="true" accel:mod1="true" xlink:href=".uno:RefreshView"/>
- <accel:item accel:code="KEY_REPEAT" xlink:href=".uno:Repeat"/>
- <accel:item accel:code="KEY_RETURN" accel:mod1="true" xlink:href=".uno:InsertPagebreak"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertColumnBreak"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" xlink:href=".uno:InsertLinebreak"/>
- <accel:item accel:code="KEY_RETURN" xlink:href=".uno:InsertPara"/>
- <accel:item accel:code="KEY_RIGHT" accel:mod1="true" accel:mod2="true" xlink:href=".uno:NextRecord"/>
- <accel:item accel:code="KEY_RIGHT" accel:mod1="true" xlink:href=".uno:GoToNextWord"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordRightSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" xlink:href=".uno:CharRightSel"/>
- <accel:item accel:code="KEY_RIGHT" xlink:href=".uno:GoRight"/>
- <accel:item accel:code="KEY_M" accel:mod1="true" xlink:href=".uno:ResetAttributes"/>
- <accel:item accel:code="KEY_SPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertNonBreakingSpace"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:mod1="true" xlink:href=".uno:InsertSoftHyphen"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertHardHyphen"/>
- <accel:item accel:code="KEY_T" accel:shift="true" accel:mod1="true" xlink:href=".uno:ResetTableProtection"/>
- <accel:item accel:code="KEY_U" accel:mod1="true" xlink:href=".uno:Underline"/>
- <accel:item accel:code="KEY_UNDO" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveUp"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" xlink:href=".uno:GoToPrevPara"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfParaSel"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" xlink:href=".uno:LineUpSel"/>
- <accel:item accel:code="KEY_UP" xlink:href=".uno:GoUp"/>
- <accel:item accel:code="KEY_V" accel:shift="true" accel:mod1="true" xlink:href=".uno:PasteSpecial"/>
- <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href=".uno:Redo"/>
- <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_N" accel:mod1="true" accel:mod2="true" xlink:href=".uno:InsertAnnotation"/>
-</accel:acceleratorlist>
diff --git a/sw/uiconfig/swform/menubar/menubar.xml b/sw/uiconfig/swform/menubar/menubar.xml
index 13448e424754..69b65cfd3e59 100644
--- a/sw/uiconfig/swform/menubar/menubar.xml
+++ b/sw/uiconfig/swform/menubar/menubar.xml
@@ -1,452 +1,456 @@
<?xml version="1.0" encoding="UTF-8"?>
<menu:menubar xmlns:menu="http://openoffice.org/2001/menu" menu:id="menubar">
- <menu:menu menu:id=".uno:PickList">
+ <menu:menu menu:id=".uno:PickList">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:AddDirect"/>
+ <menu:menuitem menu:id=".uno:Open"/>
+ <menu:menuitem menu:id=".uno:RecentFileList"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:AutoPilotMenu"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:CloseDoc"/>
+ <menu:menuitem menu:id=".uno:Save"/>
+ <menu:menuitem menu:id=".uno:SaveAs"/>
+ <menu:menuitem menu:id=".uno:SaveAll"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Reload"/>
+ <menu:menuitem menu:id=".uno:VersionDialog"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ExportTo"/>
+ <menu:menuitem menu:id=".uno:ExportToPDF"/>
+ <menu:menu menu:id=".uno:SendToMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:AddDirect"/>
- <menu:menuitem menu:id=".uno:Open"/>
- <menu:menuitem menu:id=".uno:RecentFileList"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:AutoPilotMenu"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:CloseDoc"/>
- <menu:menuitem menu:id=".uno:Save"/>
- <menu:menuitem menu:id=".uno:SaveAs"/>
- <menu:menuitem menu:id=".uno:SaveAll"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:Reload"/>
- <menu:menuitem menu:id=".uno:VersionDialog"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ExportTo"/>
- <menu:menuitem menu:id=".uno:ExportToPDF"/>
- <menu:menu menu:id=".uno:SendToMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SendMail"/>
- <menu:menuitem menu:id=".uno:SendMailDocAsOOo"/>
- <menu:menuitem menu:id=".uno:SendMailDocAsMS"/>
- <menu:menuitem menu:id=".uno:SendMailDocAsPDF"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:NewGlobalDoc"/>
- <menu:menuitem menu:id=".uno:NewHtmlDoc"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:SendOutlineToStarImpress"/>
- <menu:menuitem menu:id=".uno:SendOutlineToClipboard"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:CreateAbstract"/>
- <menu:menuitem menu:id=".uno:SendAbstractToStarImpress"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:SetDocumentProperties"/>
- <menu:menu menu:id=".uno:TemplateMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:Organizer"/>
- <menu:menuitem menu:id=".uno:AddressBookSource"/>
- <menu:menuitem menu:id=".uno:SaveAsTemplate"/>
- <menu:menuitem menu:id=".uno:OpenTemplate"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:PrintPreview"/>
- <menu:menuitem menu:id=".uno:Print"/>
- <menu:menuitem menu:id=".uno:PrinterSetup"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:Quit"/>
+ <menu:menuitem menu:id=".uno:SendMail"/>
+ <menu:menuitem menu:id=".uno:SendMailDocAsOOo"/>
+ <menu:menuitem menu:id=".uno:SendMailDocAsMS"/>
+ <menu:menuitem menu:id=".uno:SendMailDocAsPDF"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:NewGlobalDoc"/>
+ <menu:menuitem menu:id=".uno:NewHtmlDoc"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:SendOutlineToStarImpress"/>
+ <menu:menuitem menu:id=".uno:SendOutlineToClipboard"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:CreateAbstract"/>
+ <menu:menuitem menu:id=".uno:SendAbstractToStarImpress"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:EditMenu">
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:SetDocumentProperties"/>
+ <menu:menu menu:id=".uno:TemplateMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:Undo"/>
- <menu:menuitem menu:id=".uno:Redo"/>
- <menu:menuitem menu:id=".uno:Repeat"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:Cut"/>
- <menu:menuitem menu:id=".uno:Copy"/>
- <menu:menuitem menu:id=".uno:Paste"/>
- <menu:menuitem menu:id=".uno:PasteSpecial"/>
- <menu:menuitem menu:id=".uno:SelectTextMode"/>
- <menu:menu menu:id=".uno:SelectionModeMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SelectionModeDefault"/>
- <menu:menuitem menu:id=".uno:SelectionModeBlock"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:SelectAll"/>
- <menu:menuseparator/>
- <menu:menu menu:id=".uno:ChangesMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:TrackChanges"/>
- <menu:menuitem menu:id=".uno:ProtectTraceChangeMode"/>
- <menu:menuitem menu:id=".uno:ShowTrackedChanges"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:AcceptTrackedChanges"/>
- <menu:menuitem menu:id=".uno:CommentChangeTracking"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:MergeDocuments"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:CompareDocuments"/>
- <menu:menuitem menu:id=".uno:SearchDialog"/>
- <menu:menuitem menu:id=".uno:EditGlossary"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ChangeDatabaseField"/>
- <menu:menuitem menu:id=".uno:FieldDialog"/>
- <menu:menuitem menu:id=".uno:EditFootnote"/>
- <menu:menuitem menu:id=".uno:IndexEntryDialog"/>
- <menu:menuitem menu:id=".uno:AuthoritiesEntryDialog"/>
- <menu:menuitem menu:id=".uno:EditHyperlink"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:LinkDialog"/>
- <menu:menuitem menu:id=".uno:PlugInsActive"/>
- <menu:menuitem menu:id=".uno:ImageMapDialog"/>
- <menu:menuitem menu:id=".uno:ObjectMenue"/>
+ <menu:menuitem menu:id=".uno:Organizer"/>
+ <menu:menuitem menu:id=".uno:AddressBookSource"/>
+ <menu:menuitem menu:id=".uno:SaveAsTemplate"/>
+ <menu:menuitem menu:id=".uno:OpenTemplate"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:ViewMenu">
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:PrintPreview"/>
+ <menu:menuitem menu:id=".uno:Print"/>
+ <menu:menuitem menu:id=".uno:PrinterSetup"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Quit"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:EditMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:Undo"/>
+ <menu:menuitem menu:id=".uno:Redo"/>
+ <menu:menuitem menu:id=".uno:Repeat"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Cut"/>
+ <menu:menuitem menu:id=".uno:Copy"/>
+ <menu:menuitem menu:id=".uno:Paste"/>
+ <menu:menuitem menu:id=".uno:PasteSpecial"/>
+ <menu:menuitem menu:id=".uno:SelectTextMode"/>
+ <menu:menu menu:id=".uno:SelectionModeMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:PrintLayout"/>
- <menu:menuitem menu:id=".uno:BrowseView"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:AvailableToolbars"/>
- <menu:menuitem menu:id=".uno:StatusBarVisible"/>
- <menu:menuitem menu:id=".uno:ShowImeStatusWindow"/>
- <menu:menuitem menu:id=".uno:Ruler"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ViewBounds"/>
- <menu:menuitem menu:id=".uno:Marks"/>
- <menu:menuitem menu:id=".uno:Fieldnames"/>
- <menu:menuitem menu:id=".uno:ControlCodes"/>
- <menu:menuitem menu:id=".uno:ShowHiddenParagraphs"/>
- <menu:menuitem menu:id=".uno:ShowAnnotations"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ViewDataSourceBrowser"/>
- <menu:menuitem menu:id=".uno:Navigator"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:FullScreen"/>
- <menu:menuitem menu:id=".uno:Zoom"/>
+ <menu:menuitem menu:id=".uno:SelectionModeDefault" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:SelectionModeBlock" menu:style="radio"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:InsertMenu">
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:SelectAll"/>
+ <menu:menuseparator/>
+ <menu:menu menu:id=".uno:ChangesMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertBreak"/>
- <menu:menu menu:id=".uno:FieldMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertDateField"/>
- <menu:menuitem menu:id=".uno:InsertTimeField"/>
- <menu:menuitem menu:id=".uno:InsertPageNumberField"/>
- <menu:menuitem menu:id=".uno:InsertPageCountField"/>
- <menu:menuitem menu:id=".uno:InsertTopicField"/>
- <menu:menuitem menu:id=".uno:InsertTitleField"/>
- <menu:menuitem menu:id=".uno:InsertAuthorField"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:InsertField"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:InsertSymbol"/>
- <menu:menu menu:id=".uno:FormattingMarkMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertNonBreakingSpace"/>
- <menu:menuitem menu:id=".uno:InsertHardHyphen"/>
- <menu:menuitem menu:id=".uno:InsertSoftHyphen"/>
- <menu:menuitem menu:id=".uno:InsertZWSP"/>
- <menu:menuitem menu:id=".uno:InsertZWNBSP"/>
- <menu:menuitem menu:id=".uno:InsertLRM"/>
- <menu:menuitem menu:id=".uno:InsertRLM"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:InsertSection"/>
- <menu:menuitem menu:id=".uno:HyperlinkDialog"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:InsertPageHeader"/>
- <menu:menuitem menu:id=".uno:InsertPageFooter"/>
- <menu:menuitem menu:id=".uno:InsertFootnoteDialog"/>
- <menu:menuitem menu:id=".uno:InsertCaptionDialog"/>
- <menu:menuitem menu:id=".uno:InsertBookmark"/>
- <menu:menuitem menu:id=".uno:InsertReferenceField"/>
- <menu:menuitem menu:id=".uno:InsertAnnotation"/>
- <menu:menuitem menu:id=".uno:InsertScript"/>
- <menu:menu menu:id=".uno:IndexesMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertIndexesEntry"/>
- <menu:menuitem menu:id=".uno:InsertMultiIndex"/>
- <menu:menuitem menu:id=".uno:InsertAuthoritiesEntry"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:InsertEnvelope"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:InsertFrame"/>
- <menu:menuitem menu:id=".uno:InsertTable"/>
- <menu:menuitem menu:id=".uno:InsertGraphicRuler"/>
- <menu:menu menu:id=".uno:GraphicMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertGraphic"/>
- <menu:menu menu:id=".uno:Scan">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:TwainSelect"/>
- <menu:menuitem menu:id=".uno:TwainTransfer"/>
- </menu:menupopup>
- </menu:menu>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:InsertAVMedia"/>
- <menu:menu menu:id=".uno:ObjectMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertObject"/>
- <menu:menuitem menu:id=".uno:InsertPlugin"/>
- <menu:menuitem menu:id=".uno:InsertSound"/>
- <menu:menuitem menu:id=".uno:InsertVideo"/>
- <menu:menuitem menu:id=".uno:InsertObjectStarMath"/>
- <menu:menuitem menu:id=".uno:InsertObjectChart"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:InsertObjectFloatingFrame"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:InsertDoc"/>
+ <menu:menuitem menu:id=".uno:TrackChanges"/>
+ <menu:menuitem menu:id=".uno:ProtectTraceChangeMode"/>
+ <menu:menuitem menu:id=".uno:ShowTrackedChanges"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:AcceptTrackedChanges"/>
+ <menu:menuitem menu:id=".uno:CommentChangeTracking"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:MergeDocuments"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:FormatMenu">
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:CompareDocuments"/>
+ <menu:menuitem menu:id=".uno:SearchDialog"/>
+ <menu:menuitem menu:id=".uno:EditGlossary"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ChangeDatabaseField"/>
+ <menu:menuitem menu:id=".uno:FieldDialog"/>
+ <menu:menuitem menu:id=".uno:EditFootnote"/>
+ <menu:menuitem menu:id=".uno:IndexEntryDialog"/>
+ <menu:menuitem menu:id=".uno:AuthoritiesEntryDialog"/>
+ <menu:menuitem menu:id=".uno:EditHyperlink"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:LinkDialog"/>
+ <menu:menuitem menu:id=".uno:PlugInsActive"/>
+ <menu:menuitem menu:id=".uno:ImageMapDialog"/>
+ <menu:menuitem menu:id=".uno:ObjectMenue"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:ViewMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:PrintLayout"/>
+ <menu:menuitem menu:id=".uno:BrowseView"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:AvailableToolbars"/>
+ <menu:menuitem menu:id=".uno:StatusBarVisible"/>
+ <menu:menuitem menu:id=".uno:ShowImeStatusWindow"/>
+ <menu:menuitem menu:id=".uno:Ruler"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ViewBounds"/>
+ <menu:menuitem menu:id=".uno:Marks"/>
+ <menu:menuitem menu:id=".uno:Fieldnames"/>
+ <menu:menuitem menu:id=".uno:ControlCodes"/>
+ <menu:menuitem menu:id=".uno:ShowHiddenParagraphs"/>
+ <menu:menuitem menu:id=".uno:ShowAnnotations"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ViewDataSourceBrowser"/>
+ <menu:menuitem menu:id=".uno:Navigator"/>
+ <menu:menuitem menu:id=".uno:TaskPane"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:FullScreen"/>
+ <menu:menuitem menu:id=".uno:Zoom"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:InsertMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:InsertBreak"/>
+ <menu:menu menu:id=".uno:FieldMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:ResetAttributes"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:FontDialog"/>
- <menu:menuitem menu:id=".uno:ParagraphDialog"/>
- <menu:menuitem menu:id=".uno:BulletsAndNumberingDialog"/>
- <menu:menuitem menu:id=".uno:PageDialog"/>
- <menu:menuseparator/>
- <menu:menu menu:id=".uno:TransliterateMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:ChangeCaseToUpper"/>
- <menu:menuitem menu:id=".uno:ChangeCaseToLower"/>
- <menu:menuitem menu:id=".uno:ChangeCaseToHalfWidth"/>
- <menu:menuitem menu:id=".uno:ChangeCaseToFullWidth"/>
- <menu:menuitem menu:id=".uno:ChangeCaseToHiragana"/>
- <menu:menuitem menu:id=".uno:ChangeCaseToKatakana"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:RubyDialog"/>
- <menu:menuitem menu:id=".uno:FormatColumns"/>
- <menu:menuitem menu:id=".uno:EditRegion"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:DesignerDialog"/>
- <menu:menu menu:id=".uno:AutoFormatMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:OnlineAutoFormat"/>
- <menu:menuitem menu:id=".uno:AutoFormatApply"/>
- <menu:menuitem menu:id=".uno:AutoFormatRedlineApply"/>
- <menu:menuitem menu:id=".uno:AutoCorrectDlg"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menu menu:id=".uno:AnchorMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SetAnchorToPage"/>
- <menu:menuitem menu:id=".uno:SetAnchorToPara"/>
- <menu:menuitem menu:id=".uno:SetAnchorAtChar"/>
- <menu:menuitem menu:id=".uno:SetAnchorToChar"/>
- <menu:menuitem menu:id=".uno:SetAnchorToFrame"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:WrapMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:WrapOff"/>
- <menu:menuitem menu:id=".uno:WrapOn"/>
- <menu:menuitem menu:id=".uno:WrapIdeal"/>
- <menu:menuitem menu:id=".uno:WrapThrough"/>
- <menu:menuitem menu:id=".uno:WrapThroughTransparent"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:WrapContour"/>
- <menu:menuitem menu:id=".uno:ContourDialog"/>
- <menu:menuitem menu:id=".uno:WrapAnchorOnly"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:TextWrap"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:ObjectAlign">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:CommonAlignLeft"/>
- <menu:menuitem menu:id=".uno:CommonAlignHorizontalCenter"/>
- <menu:menuitem menu:id=".uno:CommonAlignRight"/>
- <menu:menuitem menu:id=".uno:CommonAlignJustified"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:CommonAlignTop"/>
- <menu:menuitem menu:id=".uno:CommonAlignVerticalCenter"/>
- <menu:menuitem menu:id=".uno:CommonAlignBottom"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:ArrangeMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:BringToFront"/>
- <menu:menuitem menu:id=".uno:ObjectForwardOne"/>
- <menu:menuitem menu:id=".uno:ObjectBackOne"/>
- <menu:menuitem menu:id=".uno:SendToBack"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:SetObjectToForeground"/>
- <menu:menuitem menu:id=".uno:SetObjectToBackground"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:FlipMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:FlipHorizontal"/>
- <menu:menuitem menu:id=".uno:FlipVertical"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:GroupMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:FormatGroup"/>
- <menu:menuitem menu:id=".uno:FormatUngroup"/>
- <menu:menuitem menu:id=".uno:EnterGroup"/>
- <menu:menuitem menu:id=".uno:LeaveGroup"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menu menu:id=".uno:ObjectMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:TransformDialog"/>
- <menu:menuitem menu:id=".uno:FormatLine"/>
- <menu:menuitem menu:id=".uno:FormatArea"/>
- <menu:menuitem menu:id=".uno:TextAttributes"/>
- <menu:menuitem menu:id=".uno:FontWork"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ObjectTitleDescription"/>
- <menu:menuitem menu:id=".uno:NameGroup"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:FrameDialog"/>
- <menu:menuitem menu:id=".uno:GraphicDialog"/>
+ <menu:menuitem menu:id=".uno:InsertDateField"/>
+ <menu:menuitem menu:id=".uno:InsertTimeField"/>
+ <menu:menuitem menu:id=".uno:InsertPageNumberField"/>
+ <menu:menuitem menu:id=".uno:InsertPageCountField"/>
+ <menu:menuitem menu:id=".uno:InsertTopicField"/>
+ <menu:menuitem menu:id=".uno:InsertTitleField"/>
+ <menu:menuitem menu:id=".uno:InsertAuthorField"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertField"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:TableMenu">
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:InsertSymbol"/>
+ <menu:menu menu:id=".uno:FormattingMarkMenu">
<menu:menupopup>
- <menu:menu menu:id=".uno:TableInsertMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertTable"/>
- <menu:menuitem menu:id=".uno:InsertRowDialog"/>
- <menu:menuitem menu:id=".uno:InsertColumnDialog"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:TableDeleteMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:DeleteTable"/>
- <menu:menuitem menu:id=".uno:DeleteRows"/>
- <menu:menuitem menu:id=".uno:DeleteColumns"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:TableSelectMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SelectTable"/>
- <menu:menuitem menu:id=".uno:EntireRow"/>
- <menu:menuitem menu:id=".uno:EntireColumn"/>
- <menu:menuitem menu:id=".uno:EntireCell"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:MergeCells"/>
- <menu:menuitem menu:id=".uno:SplitCell"/>
- <menu:menuitem menu:id=".uno:Protect"/>
- <menu:menuitem menu:id=".uno:MergeTable"/>
- <menu:menuitem menu:id=".uno:SplitTable"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:AutoFormat"/>
- <menu:menu menu:id=".uno:TableAutoFitMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SetColumnWidth"/>
- <menu:menuitem menu:id=".uno:SetOptimalColumnWidth"/>
- <menu:menuitem menu:id=".uno:DistributeColumns"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:SetRowHeight"/>
- <menu:menuitem menu:id=".uno:SetOptimalRowHeight"/>
- <menu:menuitem menu:id=".uno:DistributeRows"/>
- <menu:menuitem menu:id=".uno:RowSplit"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:HeadingRowsRepeat"/>
- <menu:menu menu:id=".uno:TableConvertMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:ConvertTextToTable"/>
- <menu:menuitem menu:id=".uno:ConvertTableToText"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:TableSort"/>
- <menu:menuitem menu:id=".uno:InsertFormula"/>
- <menu:menuitem menu:id=".uno:TableNumberFormatDialog"/>
- <menu:menuitem menu:id=".uno:TableBoundaries"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:TableDialog"/>
+ <menu:menuitem menu:id=".uno:InsertNonBreakingSpace"/>
+ <menu:menuitem menu:id=".uno:InsertHardHyphen"/>
+ <menu:menuitem menu:id=".uno:InsertSoftHyphen"/>
+ <menu:menuitem menu:id=".uno:InsertZWSP"/>
+ <menu:menuitem menu:id=".uno:InsertZWNBSP"/>
+ <menu:menuitem menu:id=".uno:InsertLRM"/>
+ <menu:menuitem menu:id=".uno:InsertRLM"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:ToolsMenu">
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertSection"/>
+ <menu:menuitem menu:id=".uno:HyperlinkDialog"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertPageHeader"/>
+ <menu:menuitem menu:id=".uno:InsertPageFooter"/>
+ <menu:menuitem menu:id=".uno:InsertFootnoteDialog"/>
+ <menu:menuitem menu:id=".uno:InsertCaptionDialog"/>
+ <menu:menuitem menu:id=".uno:InsertBookmark"/>
+ <menu:menuitem menu:id=".uno:InsertReferenceField"/>
+ <menu:menuitem menu:id=".uno:InsertAnnotation"/>
+ <menu:menuitem menu:id=".uno:InsertScript"/>
+ <menu:menu menu:id=".uno:IndexesMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:SpellingAndGrammarDialog"/>
- <menu:menu menu:id=".uno:LanguageMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:HangulHanjaConversion"/>
- <menu:menuitem menu:id=".uno:ChineseConversion"/>
- <menu:menuitem menu:id=".uno:ThesaurusDialog"/>
- <menu:menuitem menu:id=".uno:Hyphenate"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:MoreDictionaries"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:WordCountDialog"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ChapterNumberingDialog"/>
- <menu:menuitem menu:id=".uno:LineNumberingDialog"/>
- <menu:menuitem menu:id=".uno:FootnoteDialog"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:Gallery"/>
- <menu:menuitem menu:id=".uno:AVMediaPlayer"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:BibliographyComponent"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:MailMergeWizard"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:SortDialog"/>
- <menu:menuitem menu:id=".uno:CalculateSel"/>
- <menu:menu menu:id=".uno:UpdateMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:UpdateAll"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:UpdateFields"/>
- <menu:menuitem menu:id=".uno:UpdateAllLinks"/>
- <menu:menuitem menu:id=".uno:UpdateCharts"/>
- <menu:menuitem menu:id=".uno:UpdateCurIndex"/>
- <menu:menuitem menu:id=".uno:UpdateAllIndexes"/>
- <menu:menuitem menu:id=".uno:Repaginate"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menu menu:id=".uno:MacrosMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:MacroRecorder"/>
- <menu:menuitem menu:id=".uno:RunMacro"/>
- <menu:menu menu:id=".uno:ScriptOrganizer"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:MacroOrganizer?TabId:short=1"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id="service:com.sun.star.deployment.ui.PackageManagerDialog"/>
- <menu:menuitem menu:id=".uno:OpenXMLFilterSettings"/>
- <menu:menuitem menu:id=".uno:AutoCorrectDlg"/>
- <menu:menuitem menu:id=".uno:ConfigureDialog"/>
- <menu:menuitem menu:id=".uno:OptionsTreeDialog"/>
+ <menu:menuitem menu:id=".uno:InsertIndexesEntry"/>
+ <menu:menuitem menu:id=".uno:InsertMultiIndex"/>
+ <menu:menuitem menu:id=".uno:InsertAuthoritiesEntry"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertEnvelope"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertFrame"/>
+ <menu:menuitem menu:id=".uno:InsertTable"/>
+ <menu:menuitem menu:id=".uno:InsertGraphicRuler"/>
+ <menu:menu menu:id=".uno:GraphicMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:InsertGraphic"/>
+ <menu:menu menu:id=".uno:Scan">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:TwainSelect"/>
+ <menu:menuitem menu:id=".uno:TwainTransfer"/>
+ </menu:menupopup>
+ </menu:menu>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:InsertAVMedia"/>
+ <menu:menu menu:id=".uno:ObjectMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:InsertObject"/>
+ <menu:menuitem menu:id=".uno:InsertPlugin"/>
+ <menu:menuitem menu:id=".uno:InsertSound"/>
+ <menu:menuitem menu:id=".uno:InsertVideo"/>
+ <menu:menuitem menu:id=".uno:InsertObjectStarMath"/>
+ <menu:menuitem menu:id=".uno:InsertObjectChart"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:InsertObjectFloatingFrame"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertDoc"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:FormatMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:ResetAttributes"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:FontDialog"/>
+ <menu:menuitem menu:id=".uno:ParagraphDialog"/>
+ <menu:menuitem menu:id=".uno:BulletsAndNumberingDialog"/>
+ <menu:menuitem menu:id=".uno:PageDialog"/>
+ <menu:menuseparator/>
+ <menu:menu menu:id=".uno:TransliterateMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:ChangeCaseToSentenceCase"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToLower"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToUpper"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToTitleCase"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToToggleCase"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToHalfWidth"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToFullWidth"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToHiragana"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToKatakana"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:RubyDialog"/>
+ <menu:menuitem menu:id=".uno:FormatColumns"/>
+ <menu:menuitem menu:id=".uno:EditRegion"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:DesignerDialog"/>
+ <menu:menu menu:id=".uno:AutoFormatMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:OnlineAutoFormat"/>
+ <menu:menuitem menu:id=".uno:AutoFormatApply"/>
+ <menu:menuitem menu:id=".uno:AutoFormatRedlineApply"/>
+ <menu:menuitem menu:id=".uno:AutoCorrectDlg"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menu menu:id=".uno:AnchorMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:SetAnchorToPage" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:SetAnchorToPara" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:SetAnchorAtChar" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:SetAnchorToChar" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:SetAnchorToFrame" menu:style="radio"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:WrapMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:WrapOff"/>
+ <menu:menuitem menu:id=".uno:WrapOn"/>
+ <menu:menuitem menu:id=".uno:WrapIdeal"/>
+ <menu:menuitem menu:id=".uno:WrapThrough"/>
+ <menu:menuitem menu:id=".uno:WrapThroughTransparent"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:WrapContour"/>
+ <menu:menuitem menu:id=".uno:ContourDialog"/>
+ <menu:menuitem menu:id=".uno:WrapAnchorOnly"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:TextWrap"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:ObjectAlign">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:CommonAlignLeft" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:CommonAlignHorizontalCenter" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:CommonAlignRight" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:CommonAlignJustified" menu:style="radio"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:CommonAlignTop"/>
+ <menu:menuitem menu:id=".uno:CommonAlignVerticalCenter"/>
+ <menu:menuitem menu:id=".uno:CommonAlignBottom"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:ArrangeMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:BringToFront"/>
+ <menu:menuitem menu:id=".uno:ObjectForwardOne"/>
+ <menu:menuitem menu:id=".uno:ObjectBackOne"/>
+ <menu:menuitem menu:id=".uno:SendToBack"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:SetObjectToForeground"/>
+ <menu:menuitem menu:id=".uno:SetObjectToBackground"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:FlipMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:FlipHorizontal"/>
+ <menu:menuitem menu:id=".uno:FlipVertical"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:GroupMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:FormatGroup"/>
+ <menu:menuitem menu:id=".uno:FormatUngroup"/>
+ <menu:menuitem menu:id=".uno:EnterGroup"/>
+ <menu:menuitem menu:id=".uno:LeaveGroup"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menu menu:id=".uno:ObjectMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:TransformDialog"/>
+ <menu:menuitem menu:id=".uno:FormatLine"/>
+ <menu:menuitem menu:id=".uno:FormatArea"/>
+ <menu:menuitem menu:id=".uno:TextAttributes"/>
+ <menu:menuitem menu:id=".uno:FontWork"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ObjectTitleDescription"/>
+ <menu:menuitem menu:id=".uno:NameGroup"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:FrameDialog"/>
+ <menu:menuitem menu:id=".uno:GraphicDialog"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:TableMenu">
+ <menu:menupopup>
+ <menu:menu menu:id=".uno:TableInsertMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:InsertTable"/>
+ <menu:menuitem menu:id=".uno:InsertRowDialog"/>
+ <menu:menuitem menu:id=".uno:InsertColumnDialog"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:TableDeleteMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:DeleteTable"/>
+ <menu:menuitem menu:id=".uno:DeleteRows"/>
+ <menu:menuitem menu:id=".uno:DeleteColumns"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:WindowList">
+ </menu:menu>
+ <menu:menu menu:id=".uno:TableSelectMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:NewWindow"/>
- <menu:menuitem menu:id=".uno:CloseWin"/>
- <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:SelectTable"/>
+ <menu:menuitem menu:id=".uno:EntireRow"/>
+ <menu:menuitem menu:id=".uno:EntireColumn"/>
+ <menu:menuitem menu:id=".uno:EntireCell"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:HelpMenu">
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:MergeCells"/>
+ <menu:menuitem menu:id=".uno:SplitCell"/>
+ <menu:menuitem menu:id=".uno:Protect"/>
+ <menu:menuitem menu:id=".uno:MergeTable"/>
+ <menu:menuitem menu:id=".uno:SplitTable"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:AutoFormat"/>
+ <menu:menu menu:id=".uno:TableAutoFitMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:HelpIndex"/>
- <menu:menuitem menu:id=".uno:ExtendedHelp"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:HelpSupport"/>
- <menu:menuitem menu:id=".uno:OnlineRegistrationDlg"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:About"/>
+ <menu:menuitem menu:id=".uno:SetColumnWidth"/>
+ <menu:menuitem menu:id=".uno:SetOptimalColumnWidth"/>
+ <menu:menuitem menu:id=".uno:DistributeColumns"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:SetRowHeight"/>
+ <menu:menuitem menu:id=".uno:SetOptimalRowHeight"/>
+ <menu:menuitem menu:id=".uno:DistributeRows"/>
+ <menu:menuitem menu:id=".uno:RowSplit"/>
</menu:menupopup>
- </menu:menu>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:HeadingRowsRepeat"/>
+ <menu:menu menu:id=".uno:TableConvertMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:ConvertTextToTable"/>
+ <menu:menuitem menu:id=".uno:ConvertTableToText"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:TableSort"/>
+ <menu:menuitem menu:id=".uno:InsertFormula"/>
+ <menu:menuitem menu:id=".uno:TableNumberFormatDialog"/>
+ <menu:menuitem menu:id=".uno:TableBoundaries"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:TableDialog"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:ToolsMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:SpellingAndGrammarDialog"/>
+ <menu:menu menu:id=".uno:LanguageMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:HangulHanjaConversion"/>
+ <menu:menuitem menu:id=".uno:ChineseConversion"/>
+ <menu:menuitem menu:id=".uno:ThesaurusDialog"/>
+ <menu:menuitem menu:id=".uno:Hyphenate"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:MoreDictionaries"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:WordCountDialog"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ChapterNumberingDialog"/>
+ <menu:menuitem menu:id=".uno:LineNumberingDialog"/>
+ <menu:menuitem menu:id=".uno:FootnoteDialog"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Gallery"/>
+ <menu:menuitem menu:id=".uno:AVMediaPlayer"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:BibliographyComponent"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:MailMergeWizard"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:SortDialog"/>
+ <menu:menuitem menu:id=".uno:CalculateSel"/>
+ <menu:menu menu:id=".uno:UpdateMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:UpdateAll"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:UpdateFields"/>
+ <menu:menuitem menu:id=".uno:UpdateAllLinks"/>
+ <menu:menuitem menu:id=".uno:UpdateCharts"/>
+ <menu:menuitem menu:id=".uno:UpdateCurIndex"/>
+ <menu:menuitem menu:id=".uno:UpdateAllIndexes"/>
+ <menu:menuitem menu:id=".uno:Repaginate"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menu menu:id=".uno:MacrosMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:MacroRecorder"/>
+ <menu:menuitem menu:id=".uno:RunMacro"/>
+ <menu:menu menu:id=".uno:ScriptOrganizer"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:MacroOrganizer?TabId:short=1"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="service:com.sun.star.deployment.ui.PackageManagerDialog"/>
+ <menu:menuitem menu:id=".uno:OpenXMLFilterSettings"/>
+ <menu:menuitem menu:id=".uno:AutoCorrectDlg"/>
+ <menu:menuitem menu:id=".uno:ConfigureDialog"/>
+ <menu:menuitem menu:id=".uno:OptionsTreeDialog"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:WindowList">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:NewWindow"/>
+ <menu:menuitem menu:id=".uno:CloseWin"/>
+ <menu:menuseparator/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:HelpMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:HelpIndex"/>
+ <menu:menuitem menu:id=".uno:ExtendedHelp"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:HelpSupport"/>
+ <menu:menuitem menu:id=".uno:OnlineRegistrationDlg"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:About"/>
+ </menu:menupopup>
+ </menu:menu>
</menu:menubar>
diff --git a/sw/uiconfig/swform/toolbar/extrusionobjectbar.xml b/sw/uiconfig/swform/toolbar/extrusionobjectbar.xml
index 1f212226cf52..148849db6ee7 100644
--- a/sw/uiconfig/swform/toolbar/extrusionobjectbar.xml
+++ b/sw/uiconfig/swform/toolbar/extrusionobjectbar.xml
@@ -8,9 +8,9 @@
<toolbar:toolbaritem xlink:href=".uno:ExtrusionTiltLeft" toolbar:helpid="10963"/>
<toolbar:toolbaritem xlink:href=".uno:ExtrusionTiltRight" toolbar:helpid="10964"/>
<toolbar:toolbarseparator/>
- <toolbar:toolbaritem xlink:href=".uno:ExtrusionDepthFloater" toolbar:helpid="10965"/>
- <toolbar:toolbaritem xlink:href=".uno:ExtrusionDirectionFloater" toolbar:helpid="10966"/>
- <toolbar:toolbaritem xlink:href=".uno:ExtrusionLightingFloater" toolbar:helpid="10967"/>
- <toolbar:toolbaritem xlink:href=".uno:ExtrusionSurfaceFloater" toolbar:helpid="10968"/>
- <toolbar:toolbaritem xlink:href=".uno:Extrusion3DColor" toolbar:helpid="10969"/>
+ <toolbar:toolbaritem xlink:href=".uno:ExtrusionDepthFloater" toolbar:helpid="10965" toolbar:style="dropdownonly"/>
+ <toolbar:toolbaritem xlink:href=".uno:ExtrusionDirectionFloater" toolbar:helpid="10966" toolbar:style="dropdownonly"/>
+ <toolbar:toolbaritem xlink:href=".uno:ExtrusionLightingFloater" toolbar:helpid="10967" toolbar:style="dropdownonly"/>
+ <toolbar:toolbaritem xlink:href=".uno:ExtrusionSurfaceFloater" toolbar:helpid="10968" toolbar:style="dropdownonly"/>
+ <toolbar:toolbaritem xlink:href=".uno:Extrusion3DColor" toolbar:helpid="10969" toolbar:style="dropdownonly"/>
</toolbar:toolbar> \ No newline at end of file
diff --git a/sw/uiconfig/swform/toolbar/fontworkobjectbar.xml b/sw/uiconfig/swform/toolbar/fontworkobjectbar.xml
index 3ac334e0e920..5219a1e235e9 100644
--- a/sw/uiconfig/swform/toolbar/fontworkobjectbar.xml
+++ b/sw/uiconfig/swform/toolbar/fontworkobjectbar.xml
@@ -3,9 +3,9 @@
<toolbar:toolbar xmlns:toolbar="http://openoffice.org/2001/toolbar" xmlns:xlink="http://www.w3.org/1999/xlink" toolbar:id="toolbar">
<toolbar:toolbaritem xlink:href=".uno:FontworkGalleryFloater" toolbar:helpid="helpid:10977" />
<toolbar:toolbarseparator/>
- <toolbar:toolbaritem xlink:href=".uno:FontworkShapeType" toolbar:helpid="helpid:10978" toolbar:style="radio dropdown" />
+ <toolbar:toolbaritem xlink:href=".uno:FontworkShapeType" toolbar:helpid="helpid:10978" toolbar:style="dropdownonly" />
<toolbar:toolbaritem xlink:href=".uno:FontworkSameLetterHeights" toolbar:helpid="helpid:10979" />
<toolbar:toolbarseparator/>
- <toolbar:toolbaritem xlink:href=".uno:FontworkAlignmentFloater" toolbar:helpid="helpid:10981" toolbar:style="dropdown" />
- <toolbar:toolbaritem xlink:href=".uno:FontworkCharacterSpacingFloater" toolbar:helpid="helpid:10982" toolbar:style="dropdown" />
+ <toolbar:toolbaritem xlink:href=".uno:FontworkAlignmentFloater" toolbar:helpid="helpid:10981" toolbar:style="dropdownonly" />
+ <toolbar:toolbaritem xlink:href=".uno:FontworkCharacterSpacingFloater" toolbar:helpid="helpid:10982" toolbar:style="dropdownonly" />
</toolbar:toolbar> \ No newline at end of file
diff --git a/sw/uiconfig/swreport/accelerator/de/default.xml b/sw/uiconfig/swreport/accelerator/de/default.xml
deleted file mode 100644
index b134a2a41a89..000000000000
--- a/sw/uiconfig/swreport/accelerator/de/default.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
- <accel:item accel:code="KEY_F11" xlink:href=".uno:DesignerDialog"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" xlink:href=".uno:StyleNewByExample"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" accel:mod1="true" xlink:href=".uno:StyleUpdateByExample"/>
- <accel:item accel:code="KEY_F11" accel:mod1="true" xlink:href=".uno:ActivateStyleApply"/>
- <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href=".uno:Redo"/>
- <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_UNDO" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_REPEAT" xlink:href=".uno:Repeat"/>
- <accel:item accel:code="KEY_K" accel:shift="true" accel:mod1="true" xlink:href=".uno:Italic"/>
- <accel:item accel:code="KEY_F" accel:shift="true" accel:mod1="true" xlink:href=".uno:Bold"/>
- <accel:item accel:code="KEY_U" accel:shift="true" accel:mod1="true" xlink:href=".uno:Underline"/>
- <accel:item accel:code="KEY_L" accel:mod1="true" xlink:href=".uno:LeftPara"/>
- <accel:item accel:code="KEY_R" accel:mod1="true" xlink:href=".uno:RightPara"/>
- <accel:item accel:code="KEY_E" accel:mod1="true" xlink:href=".uno:CenterPara"/>
- <accel:item accel:code="KEY_B" accel:mod1="true" xlink:href=".uno:JustifyPara"/>
- <accel:item accel:code="KEY_INSERT" xlink:href=".uno:InsertMode"/>
- <accel:item accel:code="KEY_F5" xlink:href=".uno:Navigator"/>
- <accel:item accel:code="KEY_A" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaLeftToRight"/>
- <accel:item accel:code="KEY_D" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaRightToLeft"/>
- <accel:item accel:code="KEY_V" accel:shift="true" accel:mod1="true" xlink:href=".uno:PasteSpecial"/>
- <accel:item accel:code="KEY_F9" xlink:href=".uno:UpdateFields"/>
- <accel:item accel:code="KEY_MULTIPLY" accel:mod1="true" xlink:href=".uno:ExecuteMacroField"/>
- <accel:item accel:code="KEY_F2" xlink:href=".uno:InsertFormula"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" xlink:href=".uno:Calc"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveUp"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" xlink:href=".uno:GoToPrevPara"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveDown"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" xlink:href=".uno:GoToNextPara"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveBullets"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" xlink:href=".uno:DefaultBullet"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" accel:mod1="true" xlink:href=".uno:UpdateInputFields"/>
- <accel:item accel:code="KEY_F12" xlink:href=".uno:DefaultNumbering"/>
- <accel:item accel:code="KEY_G" accel:mod1="true" xlink:href=".uno:RepeatSearch"/>
- <accel:item accel:code="KEY_R" accel:shift="true" accel:mod1="true" xlink:href=".uno:RefreshView"/>
- <accel:item accel:code="KEY_F10" accel:mod1="true" xlink:href=".uno:ControlCodes"/>
- <accel:item accel:code="KEY_F8" accel:mod1="true" xlink:href=".uno:Marks"/>
- <accel:item accel:code="KEY_F9" accel:mod1="true" xlink:href=".uno:Fieldnames"/>
- <accel:item accel:code="KEY_RETURN" xlink:href=".uno:InsertPara"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertColumnBreak"/>
- <accel:item accel:code="KEY_F2" accel:mod1="true" xlink:href=".uno:InsertField"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" xlink:href=".uno:InsertLinebreak"/>
- <accel:item accel:code="KEY_RETURN" accel:mod1="true" xlink:href=".uno:InsertPagebreak"/>
- <accel:item accel:code="KEY_F12" accel:mod1="true" xlink:href=".uno:InsertTable"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:mod1="true" xlink:href=".uno:InsertSoftHyphen"/>
- <accel:item accel:code="KEY_SPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertNonBreakingSpace"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertHardHyphen"/>
- <accel:item accel:code="KEY_D" accel:mod1="true" xlink:href=".uno:UnderlineDouble"/>
- <accel:item accel:code="KEY_H" accel:mod1="true" xlink:href=".uno:SuperScript"/>
- <accel:item accel:code="KEY_T" accel:mod1="true" xlink:href=".uno:SubScript"/>
- <accel:item accel:code="KEY_T" accel:shift="true" accel:mod1="true" xlink:href=".uno:ResetTableProtection"/>
- <accel:item accel:code="KEY_F7" accel:mod1="true" xlink:href=".uno:ThesaurusDialog"/>
- <accel:item accel:code="KEY_ADD" accel:mod1="true" xlink:href=".uno:CalculateSel"/>
- <accel:item accel:code="KEY_F3" accel:mod1="true" xlink:href=".uno:EditGlossary"/>
- <accel:item accel:code="KEY_F7" xlink:href=".uno:SpellingAndGrammarDialog"/>
- <accel:item accel:code="KEY_F3" xlink:href=".uno:ExpandGlossary"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" accel:mod1="true" xlink:href=".uno:GotoPage"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" xlink:href=".uno:CharLeftSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" xlink:href=".uno:CharRightSel"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" xlink:href=".uno:LineUpSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" xlink:href=".uno:LineDownSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" xlink:href=".uno:StartOfLineSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" xlink:href=".uno:EndOfLineSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfDocumentSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfDocumentSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordRightSel"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordLeftSel"/>
- <accel:item accel:code="KEY_PAGEUP" accel:shift="true" xlink:href=".uno:PageUpSel"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" xlink:href=".uno:PageDownSel"/>
- <accel:item accel:code="KEY_LEFT" xlink:href=".uno:GoLeft"/>
- <accel:item accel:code="KEY_RIGHT" xlink:href=".uno:GoRight"/>
- <accel:item accel:code="KEY_UP" xlink:href=".uno:GoUp"/>
- <accel:item accel:code="KEY_DOWN" xlink:href=".uno:GoDown"/>
- <accel:item accel:code="KEY_HOME" xlink:href=".uno:GoToStartOfLine"/>
- <accel:item accel:code="KEY_END" xlink:href=".uno:GoToEndOfLine"/>
- <accel:item accel:code="KEY_HOME" accel:mod1="true" xlink:href=".uno:GoToStartOfDoc"/>
- <accel:item accel:code="KEY_END" accel:mod1="true" xlink:href=".uno:GoToEndOfDoc"/>
- <accel:item accel:code="KEY_RIGHT" accel:mod1="true" xlink:href=".uno:GoToNextWord"/>
- <accel:item accel:code="KEY_LEFT" accel:mod1="true" xlink:href=".uno:GoToPrevWord"/>
- <accel:item accel:code="KEY_BACKSPACE" xlink:href=".uno:SwBackspace"/>
- <accel:item accel:code="KEY_DELETE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToEndOfSentence"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToStartOfSentence"/>
- <accel:item accel:code="KEY_DELETE" accel:mod1="true" xlink:href=".uno:DelToEndOfWord"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod1="true" xlink:href=".uno:DelToStartOfWord"/>
- <accel:item accel:code="KEY_PAGEUP" xlink:href=".uno:PageUp"/>
- <accel:item accel:code="KEY_PAGEDOWN" xlink:href=".uno:PageDown"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" xlink:href=".uno:SetMultiSelection"/>
- <accel:item accel:code="KEY_F8" xlink:href=".uno:SetExtSelection"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod2="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_ESCAPE" xlink:href=".uno:Escape"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" xlink:href=".uno:ShiftBackspace"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfParaSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfParaSel"/>
- <accel:item accel:code="KEY_F4" accel:shift="true" xlink:href=".uno:JumpToNextFrame"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" xlink:href=".uno:RestoreEditingView"/>
- <accel:item accel:code="KEY_PAGEUP" accel:mod1="true" xlink:href=".uno:JumpToHeader"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:mod1="true" xlink:href=".uno:JumpToFooter"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:JumpToFootnoteArea"/>
- <accel:item accel:code="KEY_I" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectTextMode"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Text body&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" accel:shift="true" xlink:href=".uno:StyleApply?Style:string=Standard&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_1" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 1&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_2" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 2&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_3" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 3&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_4" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 4&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_5" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 5&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_M" accel:mod1="true" xlink:href=".uno:ResetAttributes"/>
- <accel:item accel:code="KEY_J" accel:shift="true" accel:mod1="true" xlink:href=".uno:FullScreen"/>
- <accel:item accel:code="KEY_DIVIDE" accel:mod1="true" xlink:href=".uno:InsertZWSP"/>
- <accel:item accel:code="KEY_N" accel:mod1="true" accel:mod2="true" xlink:href=".uno:InsertAnnotation"/>
-</accel:acceleratorlist>
diff --git a/sw/uiconfig/swreport/accelerator/en-GB/default.xml b/sw/uiconfig/swreport/accelerator/en-GB/default.xml
deleted file mode 100644
index 83f88ade9dc1..000000000000
--- a/sw/uiconfig/swreport/accelerator/en-GB/default.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
- <accel:item accel:code="KEY_F11" xlink:href=".uno:DesignerDialog"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" xlink:href=".uno:StyleNewByExample"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" accel:mod1="true" xlink:href=".uno:StyleUpdateByExample"/>
- <accel:item accel:code="KEY_F11" accel:mod1="true" xlink:href=".uno:ActivateStyleApply"/>
- <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href=".uno:Redo"/>
- <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_UNDO" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_REPEAT" xlink:href=".uno:Repeat"/>
- <accel:item accel:code="KEY_I" accel:mod1="true" xlink:href=".uno:Italic"/>
- <accel:item accel:code="KEY_B" accel:mod1="true" xlink:href=".uno:Bold"/>
- <accel:item accel:code="KEY_U" accel:mod1="true" xlink:href=".uno:Underline"/>
- <accel:item accel:code="KEY_L" accel:mod1="true" xlink:href=".uno:LeftPara"/>
- <accel:item accel:code="KEY_R" accel:mod1="true" xlink:href=".uno:RightPara"/>
- <accel:item accel:code="KEY_E" accel:mod1="true" xlink:href=".uno:CenterPara"/>
- <accel:item accel:code="KEY_J" accel:mod1="true" xlink:href=".uno:JustifyPara"/>
- <accel:item accel:code="KEY_INSERT" xlink:href=".uno:InsertMode"/>
- <accel:item accel:code="KEY_F5" xlink:href=".uno:Navigator"/>
- <accel:item accel:code="KEY_A" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaLeftToRight"/>
- <accel:item accel:code="KEY_D" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaRightToLeft"/>
- <accel:item accel:code="KEY_V" accel:shift="true" accel:mod1="true" xlink:href=".uno:PasteSpecial"/>
- <accel:item accel:code="KEY_F9" xlink:href=".uno:UpdateFields"/>
- <accel:item accel:code="KEY_MULTIPLY" accel:mod1="true" xlink:href=".uno:ExecuteMacroField"/>
- <accel:item accel:code="KEY_F2" xlink:href=".uno:InsertFormula"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" xlink:href=".uno:Calc"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveUp"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" xlink:href=".uno:GoToPrevPara"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveDown"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" xlink:href=".uno:GoToNextPara"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveBullets"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" xlink:href=".uno:DefaultBullet"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" accel:mod1="true" xlink:href=".uno:UpdateInputFields"/>
- <accel:item accel:code="KEY_F12" xlink:href=".uno:DefaultNumbering"/>
- <accel:item accel:code="KEY_F" accel:shift="true" accel:mod1="true" xlink:href=".uno:RepeatSearch"/>
- <accel:item accel:code="KEY_R" accel:shift="true" accel:mod1="true" xlink:href=".uno:RefreshView"/>
- <accel:item accel:code="KEY_F10" accel:mod1="true" xlink:href=".uno:ControlCodes"/>
- <accel:item accel:code="KEY_F8" accel:mod1="true" xlink:href=".uno:Marks"/>
- <accel:item accel:code="KEY_F9" accel:mod1="true" xlink:href=".uno:Fieldnames"/>
- <accel:item accel:code="KEY_RETURN" xlink:href=".uno:InsertPara"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertColumnBreak"/>
- <accel:item accel:code="KEY_F2" accel:mod1="true" xlink:href=".uno:InsertField"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" xlink:href=".uno:InsertLinebreak"/>
- <accel:item accel:code="KEY_RETURN" accel:mod1="true" xlink:href=".uno:InsertPagebreak"/>
- <accel:item accel:code="KEY_F12" accel:mod1="true" xlink:href=".uno:InsertTable"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:mod1="true" xlink:href=".uno:InsertSoftHyphen"/>
- <accel:item accel:code="KEY_SPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertNonBreakingSpace"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertHardHyphen"/>
- <accel:item accel:code="KEY_D" accel:mod1="true" xlink:href=".uno:UnderlineDouble"/>
- <accel:item accel:code="KEY_P" accel:shift="true" accel:mod1="true" xlink:href=".uno:SuperScript"/>
- <accel:item accel:code="KEY_B" accel:shift="true" accel:mod1="true" xlink:href=".uno:SubScript"/>
- <accel:item accel:code="KEY_T" accel:shift="true" accel:mod1="true" xlink:href=".uno:ResetTableProtection"/>
- <accel:item accel:code="KEY_F7" accel:mod1="true" xlink:href=".uno:ThesaurusDialog"/>
- <accel:item accel:code="KEY_ADD" accel:mod1="true" xlink:href=".uno:CalculateSel"/>
- <accel:item accel:code="KEY_F3" accel:mod1="true" xlink:href=".uno:EditGlossary"/>
- <accel:item accel:code="KEY_F7" xlink:href=".uno:SpellingAndGrammarDialog"/>
- <accel:item accel:code="KEY_F3" xlink:href=".uno:ExpandGlossary"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" accel:mod1="true" xlink:href=".uno:GotoPage"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" xlink:href=".uno:CharLeftSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" xlink:href=".uno:CharRightSel"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" xlink:href=".uno:LineUpSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" xlink:href=".uno:LineDownSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" xlink:href=".uno:StartOfLineSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" xlink:href=".uno:EndOfLineSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfDocumentSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfDocumentSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordRightSel"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordLeftSel"/>
- <accel:item accel:code="KEY_PAGEUP" accel:shift="true" xlink:href=".uno:PageUpSel"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" xlink:href=".uno:PageDownSel"/>
- <accel:item accel:code="KEY_LEFT" xlink:href=".uno:GoLeft"/>
- <accel:item accel:code="KEY_RIGHT" xlink:href=".uno:GoRight"/>
- <accel:item accel:code="KEY_UP" xlink:href=".uno:GoUp"/>
- <accel:item accel:code="KEY_DOWN" xlink:href=".uno:GoDown"/>
- <accel:item accel:code="KEY_HOME" xlink:href=".uno:GoToStartOfLine"/>
- <accel:item accel:code="KEY_END" xlink:href=".uno:GoToEndOfLine"/>
- <accel:item accel:code="KEY_HOME" accel:mod1="true" xlink:href=".uno:GoToStartOfDoc"/>
- <accel:item accel:code="KEY_END" accel:mod1="true" xlink:href=".uno:GoToEndOfDoc"/>
- <accel:item accel:code="KEY_RIGHT" accel:mod1="true" xlink:href=".uno:GoToNextWord"/>
- <accel:item accel:code="KEY_LEFT" accel:mod1="true" xlink:href=".uno:GoToPrevWord"/>
- <accel:item accel:code="KEY_BACKSPACE" xlink:href=".uno:SwBackspace"/>
- <accel:item accel:code="KEY_DELETE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToEndOfSentence"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToStartOfSentence"/>
- <accel:item accel:code="KEY_DELETE" accel:mod1="true" xlink:href=".uno:DelToEndOfWord"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod1="true" xlink:href=".uno:DelToStartOfWord"/>
- <accel:item accel:code="KEY_PAGEUP" xlink:href=".uno:PageUp"/>
- <accel:item accel:code="KEY_PAGEDOWN" xlink:href=".uno:PageDown"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" xlink:href=".uno:SetMultiSelection"/>
- <accel:item accel:code="KEY_F8" xlink:href=".uno:SetExtSelection"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod2="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_ESCAPE" xlink:href=".uno:Escape"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" xlink:href=".uno:ShiftBackspace"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfParaSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfParaSel"/>
- <accel:item accel:code="KEY_F4" accel:shift="true" xlink:href=".uno:JumpToNextFrame"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" xlink:href=".uno:RestoreEditingView"/>
- <accel:item accel:code="KEY_PAGEUP" accel:mod1="true" xlink:href=".uno:JumpToHeader"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:mod1="true" xlink:href=".uno:JumpToFooter"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:JumpToFootnoteArea"/>
- <accel:item accel:code="KEY_I" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectTextMode"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Text body&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" accel:shift="true" xlink:href=".uno:StyleApply?Style:string=Standard&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_1" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 1&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_2" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 2&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_3" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 3&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_4" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 4&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_5" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 5&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_M" accel:mod1="true" xlink:href=".uno:ResetAttributes"/>
- <accel:item accel:code="KEY_J" accel:shift="true" accel:mod1="true" xlink:href=".uno:FullScreen"/>
- <accel:item accel:code="KEY_X" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveDirectCharFormats"/>
- <accel:item accel:code="KEY_DIVIDE" accel:mod1="true" xlink:href=".uno:InsertZWSP"/>
- <accel:item accel:code="KEY_C" accel:mod1="true" accel:mod2="true" xlink:href=".uno:InsertAnnotation"/>
-</accel:acceleratorlist>
diff --git a/sw/uiconfig/swreport/accelerator/en-US/default.xml b/sw/uiconfig/swreport/accelerator/en-US/default.xml
deleted file mode 100644
index 83f88ade9dc1..000000000000
--- a/sw/uiconfig/swreport/accelerator/en-US/default.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
- <accel:item accel:code="KEY_F11" xlink:href=".uno:DesignerDialog"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" xlink:href=".uno:StyleNewByExample"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" accel:mod1="true" xlink:href=".uno:StyleUpdateByExample"/>
- <accel:item accel:code="KEY_F11" accel:mod1="true" xlink:href=".uno:ActivateStyleApply"/>
- <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href=".uno:Redo"/>
- <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_UNDO" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_REPEAT" xlink:href=".uno:Repeat"/>
- <accel:item accel:code="KEY_I" accel:mod1="true" xlink:href=".uno:Italic"/>
- <accel:item accel:code="KEY_B" accel:mod1="true" xlink:href=".uno:Bold"/>
- <accel:item accel:code="KEY_U" accel:mod1="true" xlink:href=".uno:Underline"/>
- <accel:item accel:code="KEY_L" accel:mod1="true" xlink:href=".uno:LeftPara"/>
- <accel:item accel:code="KEY_R" accel:mod1="true" xlink:href=".uno:RightPara"/>
- <accel:item accel:code="KEY_E" accel:mod1="true" xlink:href=".uno:CenterPara"/>
- <accel:item accel:code="KEY_J" accel:mod1="true" xlink:href=".uno:JustifyPara"/>
- <accel:item accel:code="KEY_INSERT" xlink:href=".uno:InsertMode"/>
- <accel:item accel:code="KEY_F5" xlink:href=".uno:Navigator"/>
- <accel:item accel:code="KEY_A" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaLeftToRight"/>
- <accel:item accel:code="KEY_D" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaRightToLeft"/>
- <accel:item accel:code="KEY_V" accel:shift="true" accel:mod1="true" xlink:href=".uno:PasteSpecial"/>
- <accel:item accel:code="KEY_F9" xlink:href=".uno:UpdateFields"/>
- <accel:item accel:code="KEY_MULTIPLY" accel:mod1="true" xlink:href=".uno:ExecuteMacroField"/>
- <accel:item accel:code="KEY_F2" xlink:href=".uno:InsertFormula"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" xlink:href=".uno:Calc"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveUp"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" xlink:href=".uno:GoToPrevPara"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveDown"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" xlink:href=".uno:GoToNextPara"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveBullets"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" xlink:href=".uno:DefaultBullet"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" accel:mod1="true" xlink:href=".uno:UpdateInputFields"/>
- <accel:item accel:code="KEY_F12" xlink:href=".uno:DefaultNumbering"/>
- <accel:item accel:code="KEY_F" accel:shift="true" accel:mod1="true" xlink:href=".uno:RepeatSearch"/>
- <accel:item accel:code="KEY_R" accel:shift="true" accel:mod1="true" xlink:href=".uno:RefreshView"/>
- <accel:item accel:code="KEY_F10" accel:mod1="true" xlink:href=".uno:ControlCodes"/>
- <accel:item accel:code="KEY_F8" accel:mod1="true" xlink:href=".uno:Marks"/>
- <accel:item accel:code="KEY_F9" accel:mod1="true" xlink:href=".uno:Fieldnames"/>
- <accel:item accel:code="KEY_RETURN" xlink:href=".uno:InsertPara"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertColumnBreak"/>
- <accel:item accel:code="KEY_F2" accel:mod1="true" xlink:href=".uno:InsertField"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" xlink:href=".uno:InsertLinebreak"/>
- <accel:item accel:code="KEY_RETURN" accel:mod1="true" xlink:href=".uno:InsertPagebreak"/>
- <accel:item accel:code="KEY_F12" accel:mod1="true" xlink:href=".uno:InsertTable"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:mod1="true" xlink:href=".uno:InsertSoftHyphen"/>
- <accel:item accel:code="KEY_SPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertNonBreakingSpace"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertHardHyphen"/>
- <accel:item accel:code="KEY_D" accel:mod1="true" xlink:href=".uno:UnderlineDouble"/>
- <accel:item accel:code="KEY_P" accel:shift="true" accel:mod1="true" xlink:href=".uno:SuperScript"/>
- <accel:item accel:code="KEY_B" accel:shift="true" accel:mod1="true" xlink:href=".uno:SubScript"/>
- <accel:item accel:code="KEY_T" accel:shift="true" accel:mod1="true" xlink:href=".uno:ResetTableProtection"/>
- <accel:item accel:code="KEY_F7" accel:mod1="true" xlink:href=".uno:ThesaurusDialog"/>
- <accel:item accel:code="KEY_ADD" accel:mod1="true" xlink:href=".uno:CalculateSel"/>
- <accel:item accel:code="KEY_F3" accel:mod1="true" xlink:href=".uno:EditGlossary"/>
- <accel:item accel:code="KEY_F7" xlink:href=".uno:SpellingAndGrammarDialog"/>
- <accel:item accel:code="KEY_F3" xlink:href=".uno:ExpandGlossary"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" accel:mod1="true" xlink:href=".uno:GotoPage"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" xlink:href=".uno:CharLeftSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" xlink:href=".uno:CharRightSel"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" xlink:href=".uno:LineUpSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" xlink:href=".uno:LineDownSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" xlink:href=".uno:StartOfLineSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" xlink:href=".uno:EndOfLineSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfDocumentSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfDocumentSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordRightSel"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordLeftSel"/>
- <accel:item accel:code="KEY_PAGEUP" accel:shift="true" xlink:href=".uno:PageUpSel"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" xlink:href=".uno:PageDownSel"/>
- <accel:item accel:code="KEY_LEFT" xlink:href=".uno:GoLeft"/>
- <accel:item accel:code="KEY_RIGHT" xlink:href=".uno:GoRight"/>
- <accel:item accel:code="KEY_UP" xlink:href=".uno:GoUp"/>
- <accel:item accel:code="KEY_DOWN" xlink:href=".uno:GoDown"/>
- <accel:item accel:code="KEY_HOME" xlink:href=".uno:GoToStartOfLine"/>
- <accel:item accel:code="KEY_END" xlink:href=".uno:GoToEndOfLine"/>
- <accel:item accel:code="KEY_HOME" accel:mod1="true" xlink:href=".uno:GoToStartOfDoc"/>
- <accel:item accel:code="KEY_END" accel:mod1="true" xlink:href=".uno:GoToEndOfDoc"/>
- <accel:item accel:code="KEY_RIGHT" accel:mod1="true" xlink:href=".uno:GoToNextWord"/>
- <accel:item accel:code="KEY_LEFT" accel:mod1="true" xlink:href=".uno:GoToPrevWord"/>
- <accel:item accel:code="KEY_BACKSPACE" xlink:href=".uno:SwBackspace"/>
- <accel:item accel:code="KEY_DELETE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToEndOfSentence"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToStartOfSentence"/>
- <accel:item accel:code="KEY_DELETE" accel:mod1="true" xlink:href=".uno:DelToEndOfWord"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod1="true" xlink:href=".uno:DelToStartOfWord"/>
- <accel:item accel:code="KEY_PAGEUP" xlink:href=".uno:PageUp"/>
- <accel:item accel:code="KEY_PAGEDOWN" xlink:href=".uno:PageDown"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" xlink:href=".uno:SetMultiSelection"/>
- <accel:item accel:code="KEY_F8" xlink:href=".uno:SetExtSelection"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod2="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_ESCAPE" xlink:href=".uno:Escape"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" xlink:href=".uno:ShiftBackspace"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfParaSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfParaSel"/>
- <accel:item accel:code="KEY_F4" accel:shift="true" xlink:href=".uno:JumpToNextFrame"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" xlink:href=".uno:RestoreEditingView"/>
- <accel:item accel:code="KEY_PAGEUP" accel:mod1="true" xlink:href=".uno:JumpToHeader"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:mod1="true" xlink:href=".uno:JumpToFooter"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:JumpToFootnoteArea"/>
- <accel:item accel:code="KEY_I" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectTextMode"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Text body&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" accel:shift="true" xlink:href=".uno:StyleApply?Style:string=Standard&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_1" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 1&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_2" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 2&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_3" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 3&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_4" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 4&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_5" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 5&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_M" accel:mod1="true" xlink:href=".uno:ResetAttributes"/>
- <accel:item accel:code="KEY_J" accel:shift="true" accel:mod1="true" xlink:href=".uno:FullScreen"/>
- <accel:item accel:code="KEY_X" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveDirectCharFormats"/>
- <accel:item accel:code="KEY_DIVIDE" accel:mod1="true" xlink:href=".uno:InsertZWSP"/>
- <accel:item accel:code="KEY_C" accel:mod1="true" accel:mod2="true" xlink:href=".uno:InsertAnnotation"/>
-</accel:acceleratorlist>
diff --git a/sw/uiconfig/swreport/accelerator/es/default.xml b/sw/uiconfig/swreport/accelerator/es/default.xml
deleted file mode 100644
index 12f1aa3ab8cf..000000000000
--- a/sw/uiconfig/swreport/accelerator/es/default.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
- <accel:item accel:code="KEY_F11" xlink:href=".uno:DesignerDialog"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" xlink:href=".uno:StyleNewByExample"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" accel:mod1="true" xlink:href=".uno:StyleUpdateByExample"/>
- <accel:item accel:code="KEY_F11" accel:mod1="true" xlink:href=".uno:ActivateStyleApply"/>
- <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href=".uno:Redo"/>
- <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_UNDO" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_REPEAT" xlink:href=".uno:Repeat"/>
- <accel:item accel:code="KEY_K" accel:mod1="true" xlink:href=".uno:Italic"/>
- <accel:item accel:code="KEY_N" accel:mod1="true" xlink:href=".uno:Bold"/>
- <accel:item accel:code="KEY_S" accel:mod1="true" xlink:href=".uno:Underline"/>
- <accel:item accel:code="KEY_L" accel:mod1="true" xlink:href=".uno:LeftPara"/>
- <accel:item accel:code="KEY_R" accel:mod1="true" xlink:href=".uno:RightPara"/>
- <accel:item accel:code="KEY_T" accel:mod1="true" xlink:href=".uno:CenterPara"/>
- <accel:item accel:code="KEY_J" accel:mod1="true" xlink:href=".uno:JustifyPara"/>
- <accel:item accel:code="KEY_INSERT" xlink:href=".uno:InsertMode"/>
- <accel:item accel:code="KEY_F5" xlink:href=".uno:Navigator"/>
- <accel:item accel:code="KEY_A" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaLeftToRight"/>
- <accel:item accel:code="KEY_D" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaRightToLeft"/>
- <accel:item accel:code="KEY_V" accel:shift="true" accel:mod1="true" xlink:href=".uno:PasteSpecial"/>
- <accel:item accel:code="KEY_F9" xlink:href=".uno:UpdateFields"/>
- <accel:item accel:code="KEY_MULTIPLY" accel:mod1="true" xlink:href=".uno:ExecuteMacroField"/>
- <accel:item accel:code="KEY_F2" xlink:href=".uno:InsertFormula"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" xlink:href=".uno:Calc"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveUp"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" xlink:href=".uno:GoToPrevPara"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveDown"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" xlink:href=".uno:GoToNextPara"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveBullets"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" xlink:href=".uno:DefaultBullet"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" accel:mod1="true" xlink:href=".uno:UpdateInputFields"/>
- <accel:item accel:code="KEY_F12" xlink:href=".uno:DefaultNumbering"/>
- <accel:item accel:code="KEY_F" accel:shift="true" accel:mod1="true" xlink:href=".uno:RepeatSearch"/>
- <accel:item accel:code="KEY_R" accel:shift="true" accel:mod1="true" xlink:href=".uno:RefreshView"/>
- <accel:item accel:code="KEY_F10" accel:mod1="true" xlink:href=".uno:ControlCodes"/>
- <accel:item accel:code="KEY_F8" accel:mod1="true" xlink:href=".uno:Marks"/>
- <accel:item accel:code="KEY_F9" accel:mod1="true" xlink:href=".uno:Fieldnames"/>
- <accel:item accel:code="KEY_RETURN" xlink:href=".uno:InsertPara"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertColumnBreak"/>
- <accel:item accel:code="KEY_F2" accel:mod1="true" xlink:href=".uno:InsertField"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" xlink:href=".uno:InsertLinebreak"/>
- <accel:item accel:code="KEY_RETURN" accel:mod1="true" xlink:href=".uno:InsertPagebreak"/>
- <accel:item accel:code="KEY_F12" accel:mod1="true" xlink:href=".uno:InsertTable"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:mod1="true" xlink:href=".uno:InsertSoftHyphen"/>
- <accel:item accel:code="KEY_SPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertNonBreakingSpace"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertHardHyphen"/>
- <accel:item accel:code="KEY_D" accel:mod1="true" xlink:href=".uno:UnderlineDouble"/>
- <accel:item accel:code="KEY_P" accel:shift="true" accel:mod1="true" xlink:href=".uno:SuperScript"/>
- <accel:item accel:code="KEY_B" accel:shift="true" accel:mod1="true" xlink:href=".uno:SubScript"/>
- <accel:item accel:code="KEY_T" accel:shift="true" accel:mod1="true" xlink:href=".uno:ResetTableProtection"/>
- <accel:item accel:code="KEY_F7" accel:mod1="true" xlink:href=".uno:ThesaurusDialog"/>
- <accel:item accel:code="KEY_ADD" accel:mod1="true" xlink:href=".uno:CalculateSel"/>
- <accel:item accel:code="KEY_F3" accel:mod1="true" xlink:href=".uno:EditGlossary"/>
- <accel:item accel:code="KEY_F7" xlink:href=".uno:SpellingAndGrammarDialog"/>
- <accel:item accel:code="KEY_F3" xlink:href=".uno:ExpandGlossary"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" accel:mod1="true" xlink:href=".uno:GotoPage"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" xlink:href=".uno:CharLeftSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" xlink:href=".uno:CharRightSel"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" xlink:href=".uno:LineUpSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" xlink:href=".uno:LineDownSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" xlink:href=".uno:StartOfLineSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" xlink:href=".uno:EndOfLineSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfDocumentSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfDocumentSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordRightSel"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordLeftSel"/>
- <accel:item accel:code="KEY_PAGEUP" accel:shift="true" xlink:href=".uno:PageUpSel"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" xlink:href=".uno:PageDownSel"/>
- <accel:item accel:code="KEY_LEFT" xlink:href=".uno:GoLeft"/>
- <accel:item accel:code="KEY_RIGHT" xlink:href=".uno:GoRight"/>
- <accel:item accel:code="KEY_UP" xlink:href=".uno:GoUp"/>
- <accel:item accel:code="KEY_DOWN" xlink:href=".uno:GoDown"/>
- <accel:item accel:code="KEY_HOME" xlink:href=".uno:GoToStartOfLine"/>
- <accel:item accel:code="KEY_END" xlink:href=".uno:GoToEndOfLine"/>
- <accel:item accel:code="KEY_HOME" accel:mod1="true" xlink:href=".uno:GoToStartOfDoc"/>
- <accel:item accel:code="KEY_END" accel:mod1="true" xlink:href=".uno:GoToEndOfDoc"/>
- <accel:item accel:code="KEY_RIGHT" accel:mod1="true" xlink:href=".uno:GoToNextWord"/>
- <accel:item accel:code="KEY_LEFT" accel:mod1="true" xlink:href=".uno:GoToPrevWord"/>
- <accel:item accel:code="KEY_BACKSPACE" xlink:href=".uno:SwBackspace"/>
- <accel:item accel:code="KEY_DELETE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToEndOfSentence"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToStartOfSentence"/>
- <accel:item accel:code="KEY_DELETE" accel:mod1="true" xlink:href=".uno:DelToEndOfWord"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod1="true" xlink:href=".uno:DelToStartOfWord"/>
- <accel:item accel:code="KEY_PAGEUP" xlink:href=".uno:PageUp"/>
- <accel:item accel:code="KEY_PAGEDOWN" xlink:href=".uno:PageDown"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" xlink:href=".uno:SetMultiSelection"/>
- <accel:item accel:code="KEY_F8" xlink:href=".uno:SetExtSelection"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod2="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_ESCAPE" xlink:href=".uno:Escape"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" xlink:href=".uno:ShiftBackspace"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfParaSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfParaSel"/>
- <accel:item accel:code="KEY_F4" accel:shift="true" xlink:href=".uno:JumpToNextFrame"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" xlink:href=".uno:RestoreEditingView"/>
- <accel:item accel:code="KEY_PAGEUP" accel:mod1="true" xlink:href=".uno:JumpToHeader"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:mod1="true" xlink:href=".uno:JumpToFooter"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:JumpToFootnoteArea"/>
- <accel:item accel:code="KEY_I" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectTextMode"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Text body&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" accel:shift="true" xlink:href=".uno:StyleApply?Style:string=Standard&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_1" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 1&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_2" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 2&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_3" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 3&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_4" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 4&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_5" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 5&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_M" accel:mod1="true" xlink:href=".uno:ResetAttributes"/>
- <accel:item accel:code="KEY_J" accel:shift="true" accel:mod1="true" xlink:href=".uno:FullScreen"/>
- <accel:item accel:code="KEY_DIVIDE" accel:mod1="true" xlink:href=".uno:InsertZWSP"/>
- <accel:item accel:code="KEY_N" accel:mod1="true" accel:mod2="true" xlink:href=".uno:InsertAnnotation"/>
-</accel:acceleratorlist>
diff --git a/sw/uiconfig/swreport/accelerator/fr/default.xml b/sw/uiconfig/swreport/accelerator/fr/default.xml
deleted file mode 100644
index ac445d4a5a57..000000000000
--- a/sw/uiconfig/swreport/accelerator/fr/default.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
- <accel:item accel:code="KEY_F11" xlink:href=".uno:DesignerDialog"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" xlink:href=".uno:StyleNewByExample"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" accel:mod1="true" xlink:href=".uno:StyleUpdateByExample"/>
- <accel:item accel:code="KEY_F11" accel:mod1="true" xlink:href=".uno:ActivateStyleApply"/>
- <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href=".uno:Redo"/>
- <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_UNDO" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_REPEAT" xlink:href=".uno:Repeat"/>
- <accel:item accel:code="KEY_I" accel:mod1="true" xlink:href=".uno:Italic"/>
- <accel:item accel:code="KEY_G" accel:mod1="true" xlink:href=".uno:Bold"/>
- <accel:item accel:code="KEY_U" accel:mod1="true" xlink:href=".uno:Underline"/>
- <accel:item accel:code="KEY_L" accel:mod1="true" xlink:href=".uno:LeftPara"/>
- <accel:item accel:code="KEY_R" accel:mod1="true" xlink:href=".uno:RightPara"/>
- <accel:item accel:code="KEY_E" accel:mod1="true" xlink:href=".uno:CenterPara"/>
- <accel:item accel:code="KEY_J" accel:mod1="true" xlink:href=".uno:JustifyPara"/>
- <accel:item accel:code="KEY_INSERT" xlink:href=".uno:InsertMode"/>
- <accel:item accel:code="KEY_F5" xlink:href=".uno:Navigator"/>
- <accel:item accel:code="KEY_A" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaLeftToRight"/>
- <accel:item accel:code="KEY_D" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaRightToLeft"/>
- <accel:item accel:code="KEY_V" accel:shift="true" accel:mod1="true" xlink:href=".uno:PasteSpecial"/>
- <accel:item accel:code="KEY_F9" xlink:href=".uno:UpdateFields"/>
- <accel:item accel:code="KEY_MULTIPLY" accel:mod1="true" xlink:href=".uno:ExecuteMacroField"/>
- <accel:item accel:code="KEY_F2" xlink:href=".uno:InsertFormula"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" xlink:href=".uno:Calc"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveUp"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" xlink:href=".uno:GoToPrevPara"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveDown"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" xlink:href=".uno:GoToNextPara"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveBullets"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" xlink:href=".uno:DefaultBullet"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" accel:mod1="true" xlink:href=".uno:UpdateInputFields"/>
- <accel:item accel:code="KEY_F12" xlink:href=".uno:DefaultNumbering"/>
- <accel:item accel:code="KEY_F" accel:shift="true" accel:mod1="true" xlink:href=".uno:RepeatSearch"/>
- <accel:item accel:code="KEY_R" accel:shift="true" accel:mod1="true" xlink:href=".uno:RefreshView"/>
- <accel:item accel:code="KEY_F10" accel:mod1="true" xlink:href=".uno:ControlCodes"/>
- <accel:item accel:code="KEY_F8" accel:mod1="true" xlink:href=".uno:Marks"/>
- <accel:item accel:code="KEY_F9" accel:mod1="true" xlink:href=".uno:Fieldnames"/>
- <accel:item accel:code="KEY_RETURN" xlink:href=".uno:InsertPara"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertColumnBreak"/>
- <accel:item accel:code="KEY_F2" accel:mod1="true" xlink:href=".uno:InsertField"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" xlink:href=".uno:InsertLinebreak"/>
- <accel:item accel:code="KEY_RETURN" accel:mod1="true" xlink:href=".uno:InsertPagebreak"/>
- <accel:item accel:code="KEY_F12" accel:mod1="true" xlink:href=".uno:InsertTable"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:mod1="true" xlink:href=".uno:InsertSoftHyphen"/>
- <accel:item accel:code="KEY_SPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertNonBreakingSpace"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertHardHyphen"/>
- <accel:item accel:code="KEY_D" accel:mod1="true" xlink:href=".uno:UnderlineDouble"/>
- <accel:item accel:code="KEY_P" accel:shift="true" accel:mod1="true" xlink:href=".uno:SuperScript"/>
- <accel:item accel:code="KEY_B" accel:shift="true" accel:mod1="true" xlink:href=".uno:SubScript"/>
- <accel:item accel:code="KEY_T" accel:shift="true" accel:mod1="true" xlink:href=".uno:ResetTableProtection"/>
- <accel:item accel:code="KEY_F7" accel:mod1="true" xlink:href=".uno:ThesaurusDialog"/>
- <accel:item accel:code="KEY_ADD" accel:mod1="true" xlink:href=".uno:CalculateSel"/>
- <accel:item accel:code="KEY_F3" accel:mod1="true" xlink:href=".uno:EditGlossary"/>
- <accel:item accel:code="KEY_F7" xlink:href=".uno:SpellingAndGrammarDialog"/>
- <accel:item accel:code="KEY_F3" xlink:href=".uno:ExpandGlossary"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" accel:mod1="true" xlink:href=".uno:GotoPage"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" xlink:href=".uno:CharLeftSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" xlink:href=".uno:CharRightSel"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" xlink:href=".uno:LineUpSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" xlink:href=".uno:LineDownSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" xlink:href=".uno:StartOfLineSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" xlink:href=".uno:EndOfLineSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfDocumentSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfDocumentSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordRightSel"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordLeftSel"/>
- <accel:item accel:code="KEY_PAGEUP" accel:shift="true" xlink:href=".uno:PageUpSel"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" xlink:href=".uno:PageDownSel"/>
- <accel:item accel:code="KEY_LEFT" xlink:href=".uno:GoLeft"/>
- <accel:item accel:code="KEY_RIGHT" xlink:href=".uno:GoRight"/>
- <accel:item accel:code="KEY_UP" xlink:href=".uno:GoUp"/>
- <accel:item accel:code="KEY_DOWN" xlink:href=".uno:GoDown"/>
- <accel:item accel:code="KEY_HOME" xlink:href=".uno:GoToStartOfLine"/>
- <accel:item accel:code="KEY_END" xlink:href=".uno:GoToEndOfLine"/>
- <accel:item accel:code="KEY_HOME" accel:mod1="true" xlink:href=".uno:GoToStartOfDoc"/>
- <accel:item accel:code="KEY_END" accel:mod1="true" xlink:href=".uno:GoToEndOfDoc"/>
- <accel:item accel:code="KEY_RIGHT" accel:mod1="true" xlink:href=".uno:GoToNextWord"/>
- <accel:item accel:code="KEY_LEFT" accel:mod1="true" xlink:href=".uno:GoToPrevWord"/>
- <accel:item accel:code="KEY_BACKSPACE" xlink:href=".uno:SwBackspace"/>
- <accel:item accel:code="KEY_DELETE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToEndOfSentence"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToStartOfSentence"/>
- <accel:item accel:code="KEY_DELETE" accel:mod1="true" xlink:href=".uno:DelToEndOfWord"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod1="true" xlink:href=".uno:DelToStartOfWord"/>
- <accel:item accel:code="KEY_PAGEUP" xlink:href=".uno:PageUp"/>
- <accel:item accel:code="KEY_PAGEDOWN" xlink:href=".uno:PageDown"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" xlink:href=".uno:SetMultiSelection"/>
- <accel:item accel:code="KEY_F8" xlink:href=".uno:SetExtSelection"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod2="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_ESCAPE" xlink:href=".uno:Escape"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" xlink:href=".uno:ShiftBackspace"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfParaSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfParaSel"/>
- <accel:item accel:code="KEY_F4" accel:shift="true" xlink:href=".uno:JumpToNextFrame"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" xlink:href=".uno:RestoreEditingView"/>
- <accel:item accel:code="KEY_PAGEUP" accel:mod1="true" xlink:href=".uno:JumpToHeader"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:mod1="true" xlink:href=".uno:JumpToFooter"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:JumpToFootnoteArea"/>
- <accel:item accel:code="KEY_I" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectTextMode"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Text body&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" accel:shift="true" xlink:href=".uno:StyleApply?Style:string=Standard&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_1" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 1&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_2" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 2&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_3" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 3&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_4" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 4&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_5" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 5&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_M" accel:mod1="true" xlink:href=".uno:ResetAttributes"/>
- <accel:item accel:code="KEY_J" accel:shift="true" accel:mod1="true" xlink:href=".uno:FullScreen"/>
- <accel:item accel:code="KEY_DIVIDE" accel:mod1="true" xlink:href=".uno:InsertZWSP"/>
- <accel:item accel:code="KEY_N" accel:mod1="true" accel:mod2="true" xlink:href=".uno:InsertAnnotation"/>
-</accel:acceleratorlist>
diff --git a/sw/uiconfig/swreport/menubar/menubar.xml b/sw/uiconfig/swreport/menubar/menubar.xml
index 1f94b7ced1c3..69b65cfd3e59 100644
--- a/sw/uiconfig/swreport/menubar/menubar.xml
+++ b/sw/uiconfig/swreport/menubar/menubar.xml
@@ -1,452 +1,456 @@
<?xml version="1.0" encoding="UTF-8"?>
<menu:menubar xmlns:menu="http://openoffice.org/2001/menu" menu:id="menubar">
- <menu:menu menu:id=".uno:PickList">
+ <menu:menu menu:id=".uno:PickList">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:AddDirect"/>
+ <menu:menuitem menu:id=".uno:Open"/>
+ <menu:menuitem menu:id=".uno:RecentFileList"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:AutoPilotMenu"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:CloseDoc"/>
+ <menu:menuitem menu:id=".uno:Save"/>
+ <menu:menuitem menu:id=".uno:SaveAs"/>
+ <menu:menuitem menu:id=".uno:SaveAll"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Reload"/>
+ <menu:menuitem menu:id=".uno:VersionDialog"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ExportTo"/>
+ <menu:menuitem menu:id=".uno:ExportToPDF"/>
+ <menu:menu menu:id=".uno:SendToMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:AddDirect"/>
- <menu:menuitem menu:id=".uno:Open"/>
- <menu:menuitem menu:id=".uno:RecentFileList"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:AutoPilotMenu"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:CloseDoc"/>
- <menu:menuitem menu:id=".uno:Save"/>
- <menu:menuitem menu:id=".uno:SaveAs"/>
- <menu:menuitem menu:id=".uno:SaveAll"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:Reload"/>
- <menu:menuitem menu:id=".uno:VersionDialog"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ExportTo"/>
- <menu:menuitem menu:id=".uno:ExportToPDF"/>
- <menu:menu menu:id=".uno:SendToMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SendMail"/>
- <menu:menuitem menu:id=".uno:SendMailDocAsOOo"/>
- <menu:menuitem menu:id=".uno:SendMailDocAsMS"/>
- <menu:menuitem menu:id=".uno:SendMailDocAsPDF"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:NewGlobalDoc"/>
- <menu:menuitem menu:id=".uno:NewHtmlDoc"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:SendOutlineToStarImpress"/>
- <menu:menuitem menu:id=".uno:SendOutlineToClipboard"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:CreateAbstract"/>
- <menu:menuitem menu:id=".uno:SendAbstractToStarImpress"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:SetDocumentProperties"/>
- <menu:menu menu:id=".uno:TemplateMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:Organizer"/>
- <menu:menuitem menu:id=".uno:AddressBookSource"/>
- <menu:menuitem menu:id=".uno:SaveAsTemplate"/>
- <menu:menuitem menu:id=".uno:OpenTemplate"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:PrintPreview"/>
- <menu:menuitem menu:id=".uno:Print"/>
- <menu:menuitem menu:id=".uno:PrinterSetup"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:Quit"/>
+ <menu:menuitem menu:id=".uno:SendMail"/>
+ <menu:menuitem menu:id=".uno:SendMailDocAsOOo"/>
+ <menu:menuitem menu:id=".uno:SendMailDocAsMS"/>
+ <menu:menuitem menu:id=".uno:SendMailDocAsPDF"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:NewGlobalDoc"/>
+ <menu:menuitem menu:id=".uno:NewHtmlDoc"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:SendOutlineToStarImpress"/>
+ <menu:menuitem menu:id=".uno:SendOutlineToClipboard"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:CreateAbstract"/>
+ <menu:menuitem menu:id=".uno:SendAbstractToStarImpress"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:EditMenu">
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:SetDocumentProperties"/>
+ <menu:menu menu:id=".uno:TemplateMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:Undo"/>
- <menu:menuitem menu:id=".uno:Redo"/>
- <menu:menuitem menu:id=".uno:Repeat"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:Cut"/>
- <menu:menuitem menu:id=".uno:Copy"/>
- <menu:menuitem menu:id=".uno:Paste"/>
- <menu:menuitem menu:id=".uno:PasteSpecial"/>
- <menu:menuitem menu:id=".uno:SelectTextMode"/>
- <menu:menu menu:id=".uno:SelectionModeMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SelectionModeDefault"/>
- <menu:menuitem menu:id=".uno:SelectionModeBlock"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:SelectAll"/>
- <menu:menuseparator/>
- <menu:menu menu:id=".uno:ChangesMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:TrackChanges"/>
- <menu:menuitem menu:id=".uno:ProtectTraceChangeMode"/>
- <menu:menuitem menu:id=".uno:ShowTrackedChanges"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:AcceptTrackedChanges"/>
- <menu:menuitem menu:id=".uno:CommentChangeTracking"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:MergeDocuments"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:CompareDocuments"/>
- <menu:menuitem menu:id=".uno:SearchDialog"/>
- <menu:menuitem menu:id=".uno:EditGlossary"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ChangeDatabaseField"/>
- <menu:menuitem menu:id=".uno:FieldDialog"/>
- <menu:menuitem menu:id=".uno:EditFootnote"/>
- <menu:menuitem menu:id=".uno:IndexEntryDialog"/>
- <menu:menuitem menu:id=".uno:AuthoritiesEntryDialog"/>
- <menu:menuitem menu:id=".uno:EditHyperlink"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:LinkDialog"/>
- <menu:menuitem menu:id=".uno:PlugInsActive"/>
- <menu:menuitem menu:id=".uno:ImageMapDialog"/>
- <menu:menuitem menu:id=".uno:ObjectMenue"/>
+ <menu:menuitem menu:id=".uno:Organizer"/>
+ <menu:menuitem menu:id=".uno:AddressBookSource"/>
+ <menu:menuitem menu:id=".uno:SaveAsTemplate"/>
+ <menu:menuitem menu:id=".uno:OpenTemplate"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:ViewMenu">
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:PrintPreview"/>
+ <menu:menuitem menu:id=".uno:Print"/>
+ <menu:menuitem menu:id=".uno:PrinterSetup"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Quit"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:EditMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:Undo"/>
+ <menu:menuitem menu:id=".uno:Redo"/>
+ <menu:menuitem menu:id=".uno:Repeat"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Cut"/>
+ <menu:menuitem menu:id=".uno:Copy"/>
+ <menu:menuitem menu:id=".uno:Paste"/>
+ <menu:menuitem menu:id=".uno:PasteSpecial"/>
+ <menu:menuitem menu:id=".uno:SelectTextMode"/>
+ <menu:menu menu:id=".uno:SelectionModeMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:PrintLayout"/>
- <menu:menuitem menu:id=".uno:BrowseView"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:AvailableToolbars"/>
- <menu:menuitem menu:id=".uno:StatusBarVisible"/>
- <menu:menuitem menu:id=".uno:ShowImeStatusWindow"/>
- <menu:menuitem menu:id=".uno:Ruler"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ViewBounds"/>
- <menu:menuitem menu:id=".uno:Marks"/>
- <menu:menuitem menu:id=".uno:Fieldnames"/>
- <menu:menuitem menu:id=".uno:ControlCodes"/>
- <menu:menuitem menu:id=".uno:ShowHiddenParagraphs"/>
- <menu:menuitem menu:id=".uno:ShowAnnotations"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ViewDataSourceBrowser"/>
- <menu:menuitem menu:id=".uno:Navigator"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:FullScreen"/>
- <menu:menuitem menu:id=".uno:Zoom"/>
+ <menu:menuitem menu:id=".uno:SelectionModeDefault" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:SelectionModeBlock" menu:style="radio"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:InsertMenu">
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:SelectAll"/>
+ <menu:menuseparator/>
+ <menu:menu menu:id=".uno:ChangesMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertBreak"/>
- <menu:menu menu:id=".uno:FieldMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertDateField"/>
- <menu:menuitem menu:id=".uno:InsertTimeField"/>
- <menu:menuitem menu:id=".uno:InsertPageNumberField"/>
- <menu:menuitem menu:id=".uno:InsertPageCountField"/>
- <menu:menuitem menu:id=".uno:InsertTopicField"/>
- <menu:menuitem menu:id=".uno:InsertTitleField"/>
- <menu:menuitem menu:id=".uno:InsertAuthorField"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:InsertField"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:InsertSymbol"/>
- <menu:menu menu:id=".uno:FormattingMarkMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertNonBreakingSpace"/>
- <menu:menuitem menu:id=".uno:InsertHardHyphen"/>
- <menu:menuitem menu:id=".uno:InsertSoftHyphen"/>
- <menu:menuitem menu:id=".uno:InsertZWSP"/>
- <menu:menuitem menu:id=".uno:InsertZWNBSP"/>
- <menu:menuitem menu:id=".uno:InsertLRM"/>
- <menu:menuitem menu:id=".uno:InsertRLM"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:InsertSection"/>
- <menu:menuitem menu:id=".uno:HyperlinkDialog"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:InsertPageHeader"/>
- <menu:menuitem menu:id=".uno:InsertPageFooter"/>
- <menu:menuitem menu:id=".uno:InsertFootnoteDialog"/>
- <menu:menuitem menu:id=".uno:InsertCaptionDialog"/>
- <menu:menuitem menu:id=".uno:InsertBookmark"/>
- <menu:menuitem menu:id=".uno:InsertReferenceField"/>
- <menu:menuitem menu:id=".uno:InsertAnnotation"/>
- <menu:menuitem menu:id=".uno:InsertScript"/>
- <menu:menu menu:id=".uno:IndexesMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertIndexesEntry"/>
- <menu:menuitem menu:id=".uno:InsertMultiIndex"/>
- <menu:menuitem menu:id=".uno:InsertAuthoritiesEntry"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:InsertEnvelope"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:InsertFrame"/>
- <menu:menuitem menu:id=".uno:InsertTable"/>
- <menu:menuitem menu:id=".uno:InsertGraphicRuler"/>
- <menu:menu menu:id=".uno:GraphicMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertGraphic"/>
- <menu:menu menu:id=".uno:Scan">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:TwainSelect"/>
- <menu:menuitem menu:id=".uno:TwainTransfer"/>
- </menu:menupopup>
- </menu:menu>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:InsertAVMedia"/>
- <menu:menu menu:id=".uno:ObjectMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertObject"/>
- <menu:menuitem menu:id=".uno:InsertPlugin"/>
- <menu:menuitem menu:id=".uno:InsertSound"/>
- <menu:menuitem menu:id=".uno:InsertVideo"/>
- <menu:menuitem menu:id=".uno:InsertObjectStarMath"/>
- <menu:menuitem menu:id=".uno:InsertObjectChart"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:InsertObjectFloatingFrame"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:InsertDoc"/>
+ <menu:menuitem menu:id=".uno:TrackChanges"/>
+ <menu:menuitem menu:id=".uno:ProtectTraceChangeMode"/>
+ <menu:menuitem menu:id=".uno:ShowTrackedChanges"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:AcceptTrackedChanges"/>
+ <menu:menuitem menu:id=".uno:CommentChangeTracking"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:MergeDocuments"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:FormatMenu">
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:CompareDocuments"/>
+ <menu:menuitem menu:id=".uno:SearchDialog"/>
+ <menu:menuitem menu:id=".uno:EditGlossary"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ChangeDatabaseField"/>
+ <menu:menuitem menu:id=".uno:FieldDialog"/>
+ <menu:menuitem menu:id=".uno:EditFootnote"/>
+ <menu:menuitem menu:id=".uno:IndexEntryDialog"/>
+ <menu:menuitem menu:id=".uno:AuthoritiesEntryDialog"/>
+ <menu:menuitem menu:id=".uno:EditHyperlink"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:LinkDialog"/>
+ <menu:menuitem menu:id=".uno:PlugInsActive"/>
+ <menu:menuitem menu:id=".uno:ImageMapDialog"/>
+ <menu:menuitem menu:id=".uno:ObjectMenue"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:ViewMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:PrintLayout"/>
+ <menu:menuitem menu:id=".uno:BrowseView"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:AvailableToolbars"/>
+ <menu:menuitem menu:id=".uno:StatusBarVisible"/>
+ <menu:menuitem menu:id=".uno:ShowImeStatusWindow"/>
+ <menu:menuitem menu:id=".uno:Ruler"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ViewBounds"/>
+ <menu:menuitem menu:id=".uno:Marks"/>
+ <menu:menuitem menu:id=".uno:Fieldnames"/>
+ <menu:menuitem menu:id=".uno:ControlCodes"/>
+ <menu:menuitem menu:id=".uno:ShowHiddenParagraphs"/>
+ <menu:menuitem menu:id=".uno:ShowAnnotations"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ViewDataSourceBrowser"/>
+ <menu:menuitem menu:id=".uno:Navigator"/>
+ <menu:menuitem menu:id=".uno:TaskPane"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:FullScreen"/>
+ <menu:menuitem menu:id=".uno:Zoom"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:InsertMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:InsertBreak"/>
+ <menu:menu menu:id=".uno:FieldMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:ResetAttributes"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:FontDialog"/>
- <menu:menuitem menu:id=".uno:ParagraphDialog"/>
- <menu:menuitem menu:id=".uno:BulletsAndNumberingDialog"/>
- <menu:menuitem menu:id=".uno:PageDialog"/>
- <menu:menuseparator/>
- <menu:menu menu:id=".uno:TransliterateMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:ChangeCaseToUpper"/>
- <menu:menuitem menu:id=".uno:ChangeCaseToLower"/>
- <menu:menuitem menu:id=".uno:ChangeCaseToHalfWidth"/>
- <menu:menuitem menu:id=".uno:ChangeCaseToFullWidth"/>
- <menu:menuitem menu:id=".uno:ChangeCaseToHiragana"/>
- <menu:menuitem menu:id=".uno:ChangeCaseToKatakana"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:RubyDialog"/>
- <menu:menuitem menu:id=".uno:FormatColumns"/>
- <menu:menuitem menu:id=".uno:EditRegion"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:DesignerDialog"/>
- <menu:menu menu:id=".uno:AutoFormatMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:OnlineAutoFormat"/>
- <menu:menuitem menu:id=".uno:AutoFormatApply"/>
- <menu:menuitem menu:id=".uno:AutoFormatRedlineApply"/>
- <menu:menuitem menu:id=".uno:AutoCorrectDlg"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menu menu:id=".uno:AnchorMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SetAnchorToPage"/>
- <menu:menuitem menu:id=".uno:SetAnchorToPara"/>
- <menu:menuitem menu:id=".uno:SetAnchorAtChar"/>
- <menu:menuitem menu:id=".uno:SetAnchorToChar"/>
- <menu:menuitem menu:id=".uno:SetAnchorToFrame"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:WrapMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:WrapOff"/>
- <menu:menuitem menu:id=".uno:WrapOn"/>
- <menu:menuitem menu:id=".uno:WrapIdeal"/>
- <menu:menuitem menu:id=".uno:WrapThrough"/>
- <menu:menuitem menu:id=".uno:WrapThroughTransparent"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:WrapContour"/>
- <menu:menuitem menu:id=".uno:ContourDialog"/>
- <menu:menuitem menu:id=".uno:WrapAnchorOnly"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:TextWrap"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:ObjectAlign">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:CommonAlignLeft"/>
- <menu:menuitem menu:id=".uno:CommonAlignHorizontalCenter"/>
- <menu:menuitem menu:id=".uno:CommonAlignRight"/>
- <menu:menuitem menu:id=".uno:CommonAlignJustified"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:CommonAlignTop"/>
- <menu:menuitem menu:id=".uno:CommonAlignVerticalCenter"/>
- <menu:menuitem menu:id=".uno:CommonAlignBottom"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:ArrangeMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:BringToFront"/>
- <menu:menuitem menu:id=".uno:ObjectForwardOne"/>
- <menu:menuitem menu:id=".uno:ObjectBackOne"/>
- <menu:menuitem menu:id=".uno:SendToBack"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:SetObjectToForeground"/>
- <menu:menuitem menu:id=".uno:SetObjectToBackground"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:FlipMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:FlipHorizontal"/>
- <menu:menuitem menu:id=".uno:FlipVertical"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:GroupMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:FormatGroup"/>
- <menu:menuitem menu:id=".uno:FormatUngroup"/>
- <menu:menuitem menu:id=".uno:EnterGroup"/>
- <menu:menuitem menu:id=".uno:LeaveGroup"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menu menu:id=".uno:ObjectMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:TransformDialog"/>
- <menu:menuitem menu:id=".uno:FormatLine"/>
- <menu:menuitem menu:id=".uno:FormatArea"/>
- <menu:menuitem menu:id=".uno:TextAttributes"/>
- <menu:menuitem menu:id=".uno:FontWork"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ObjectTitleDescription"/>
- <menu:menuitem menu:id=".uno:NameGroup"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:FrameDialog"/>
- <menu:menuitem menu:id=".uno:GraphicDialog"/>
+ <menu:menuitem menu:id=".uno:InsertDateField"/>
+ <menu:menuitem menu:id=".uno:InsertTimeField"/>
+ <menu:menuitem menu:id=".uno:InsertPageNumberField"/>
+ <menu:menuitem menu:id=".uno:InsertPageCountField"/>
+ <menu:menuitem menu:id=".uno:InsertTopicField"/>
+ <menu:menuitem menu:id=".uno:InsertTitleField"/>
+ <menu:menuitem menu:id=".uno:InsertAuthorField"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertField"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:TableMenu">
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:InsertSymbol"/>
+ <menu:menu menu:id=".uno:FormattingMarkMenu">
<menu:menupopup>
- <menu:menu menu:id=".uno:TableInsertMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertTable"/>
- <menu:menuitem menu:id=".uno:InsertRowDialog"/>
- <menu:menuitem menu:id=".uno:InsertColumnDialog"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:TableDeleteMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:DeleteTable"/>
- <menu:menuitem menu:id=".uno:DeleteRows"/>
- <menu:menuitem menu:id=".uno:DeleteColumns"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:TableSelectMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SelectTable"/>
- <menu:menuitem menu:id=".uno:EntireRow"/>
- <menu:menuitem menu:id=".uno:EntireColumn"/>
- <menu:menuitem menu:id=".uno:EntireCell"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:MergeCells"/>
- <menu:menuitem menu:id=".uno:SplitCell"/>
- <menu:menuitem menu:id=".uno:Protect"/>
- <menu:menuitem menu:id=".uno:MergeTable"/>
- <menu:menuitem menu:id=".uno:SplitTable"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:AutoFormat"/>
- <menu:menu menu:id=".uno:TableAutoFitMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SetColumnWidth"/>
- <menu:menuitem menu:id=".uno:SetOptimalColumnWidth"/>
- <menu:menuitem menu:id=".uno:DistributeColumns"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:SetRowHeight"/>
- <menu:menuitem menu:id=".uno:SetOptimalRowHeight"/>
- <menu:menuitem menu:id=".uno:DistributeRows"/>
- <menu:menuitem menu:id=".uno:RowSplit"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:HeadingRowsRepeat"/>
- <menu:menu menu:id=".uno:TableConvertMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:ConvertTextToTable"/>
- <menu:menuitem menu:id=".uno:ConvertTableToText"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:TableSort"/>
- <menu:menuitem menu:id=".uno:InsertFormula"/>
- <menu:menuitem menu:id=".uno:TableNumberFormatDialog"/>
- <menu:menuitem menu:id=".uno:TableBoundaries"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:TableDialog"/>
+ <menu:menuitem menu:id=".uno:InsertNonBreakingSpace"/>
+ <menu:menuitem menu:id=".uno:InsertHardHyphen"/>
+ <menu:menuitem menu:id=".uno:InsertSoftHyphen"/>
+ <menu:menuitem menu:id=".uno:InsertZWSP"/>
+ <menu:menuitem menu:id=".uno:InsertZWNBSP"/>
+ <menu:menuitem menu:id=".uno:InsertLRM"/>
+ <menu:menuitem menu:id=".uno:InsertRLM"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:ToolsMenu">
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertSection"/>
+ <menu:menuitem menu:id=".uno:HyperlinkDialog"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertPageHeader"/>
+ <menu:menuitem menu:id=".uno:InsertPageFooter"/>
+ <menu:menuitem menu:id=".uno:InsertFootnoteDialog"/>
+ <menu:menuitem menu:id=".uno:InsertCaptionDialog"/>
+ <menu:menuitem menu:id=".uno:InsertBookmark"/>
+ <menu:menuitem menu:id=".uno:InsertReferenceField"/>
+ <menu:menuitem menu:id=".uno:InsertAnnotation"/>
+ <menu:menuitem menu:id=".uno:InsertScript"/>
+ <menu:menu menu:id=".uno:IndexesMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:SpellingAndGrammarDialog"/>
- <menu:menu menu:id=".uno:LanguageMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:HangulHanjaConversion"/>
- <menu:menuitem menu:id=".uno:ChineseConversion"/>
- <menu:menuitem menu:id=".uno:ThesaurusDialog"/>
- <menu:menuitem menu:id=".uno:Hyphenate"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:MoreDictionaries"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:WordCountDialog"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ChapterNumberingDialog"/>
- <menu:menuitem menu:id=".uno:LineNumberingDialog"/>
- <menu:menuitem menu:id=".uno:FootnoteDialog"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:Gallery"/>
- <menu:menuitem menu:id=".uno:AVMediaPlayer"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:BibliographyComponent"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:MailMergeWizard"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:SortDialog"/>
- <menu:menuitem menu:id=".uno:CalculateSel"/>
- <menu:menu menu:id=".uno:UpdateMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:UpdateAll"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:UpdateFields"/>
- <menu:menuitem menu:id=".uno:UpdateAllLinks"/>
- <menu:menuitem menu:id=".uno:UpdateCharts"/>
- <menu:menuitem menu:id=".uno:UpdateCurIndex"/>
- <menu:menuitem menu:id=".uno:UpdateAllIndexes"/>
- <menu:menuitem menu:id=".uno:Repaginate"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menu menu:id=".uno:MacrosMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:MacroRecorder"/>
- <menu:menuitem menu:id=".uno:RunMacro"/>
- <menu:menu menu:id=".uno:ScriptOrganizer"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:MacroOrganizer?TabId:short=1"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id="service:com.sun.star.deployment.ui.PackageManagerDialog"/>
- <menu:menuitem menu:id=".uno:OpenXMLFilterSettings"/>
- <menu:menuitem menu:id=".uno:AutoCorrectDlg"/>
- <menu:menuitem menu:id=".uno:ConfigureDialog"/>
- <menu:menuitem menu:id=".uno:OptionsTreeDialog"/>
+ <menu:menuitem menu:id=".uno:InsertIndexesEntry"/>
+ <menu:menuitem menu:id=".uno:InsertMultiIndex"/>
+ <menu:menuitem menu:id=".uno:InsertAuthoritiesEntry"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertEnvelope"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertFrame"/>
+ <menu:menuitem menu:id=".uno:InsertTable"/>
+ <menu:menuitem menu:id=".uno:InsertGraphicRuler"/>
+ <menu:menu menu:id=".uno:GraphicMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:InsertGraphic"/>
+ <menu:menu menu:id=".uno:Scan">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:TwainSelect"/>
+ <menu:menuitem menu:id=".uno:TwainTransfer"/>
+ </menu:menupopup>
+ </menu:menu>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:InsertAVMedia"/>
+ <menu:menu menu:id=".uno:ObjectMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:InsertObject"/>
+ <menu:menuitem menu:id=".uno:InsertPlugin"/>
+ <menu:menuitem menu:id=".uno:InsertSound"/>
+ <menu:menuitem menu:id=".uno:InsertVideo"/>
+ <menu:menuitem menu:id=".uno:InsertObjectStarMath"/>
+ <menu:menuitem menu:id=".uno:InsertObjectChart"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:InsertObjectFloatingFrame"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertDoc"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:FormatMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:ResetAttributes"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:FontDialog"/>
+ <menu:menuitem menu:id=".uno:ParagraphDialog"/>
+ <menu:menuitem menu:id=".uno:BulletsAndNumberingDialog"/>
+ <menu:menuitem menu:id=".uno:PageDialog"/>
+ <menu:menuseparator/>
+ <menu:menu menu:id=".uno:TransliterateMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:ChangeCaseToSentenceCase"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToLower"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToUpper"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToTitleCase"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToToggleCase"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToHalfWidth"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToFullWidth"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToHiragana"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToKatakana"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:RubyDialog"/>
+ <menu:menuitem menu:id=".uno:FormatColumns"/>
+ <menu:menuitem menu:id=".uno:EditRegion"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:DesignerDialog"/>
+ <menu:menu menu:id=".uno:AutoFormatMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:OnlineAutoFormat"/>
+ <menu:menuitem menu:id=".uno:AutoFormatApply"/>
+ <menu:menuitem menu:id=".uno:AutoFormatRedlineApply"/>
+ <menu:menuitem menu:id=".uno:AutoCorrectDlg"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menu menu:id=".uno:AnchorMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:SetAnchorToPage" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:SetAnchorToPara" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:SetAnchorAtChar" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:SetAnchorToChar" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:SetAnchorToFrame" menu:style="radio"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:WrapMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:WrapOff"/>
+ <menu:menuitem menu:id=".uno:WrapOn"/>
+ <menu:menuitem menu:id=".uno:WrapIdeal"/>
+ <menu:menuitem menu:id=".uno:WrapThrough"/>
+ <menu:menuitem menu:id=".uno:WrapThroughTransparent"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:WrapContour"/>
+ <menu:menuitem menu:id=".uno:ContourDialog"/>
+ <menu:menuitem menu:id=".uno:WrapAnchorOnly"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:TextWrap"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:ObjectAlign">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:CommonAlignLeft" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:CommonAlignHorizontalCenter" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:CommonAlignRight" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:CommonAlignJustified" menu:style="radio"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:CommonAlignTop"/>
+ <menu:menuitem menu:id=".uno:CommonAlignVerticalCenter"/>
+ <menu:menuitem menu:id=".uno:CommonAlignBottom"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:ArrangeMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:BringToFront"/>
+ <menu:menuitem menu:id=".uno:ObjectForwardOne"/>
+ <menu:menuitem menu:id=".uno:ObjectBackOne"/>
+ <menu:menuitem menu:id=".uno:SendToBack"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:SetObjectToForeground"/>
+ <menu:menuitem menu:id=".uno:SetObjectToBackground"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:FlipMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:FlipHorizontal"/>
+ <menu:menuitem menu:id=".uno:FlipVertical"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:GroupMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:FormatGroup"/>
+ <menu:menuitem menu:id=".uno:FormatUngroup"/>
+ <menu:menuitem menu:id=".uno:EnterGroup"/>
+ <menu:menuitem menu:id=".uno:LeaveGroup"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menu menu:id=".uno:ObjectMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:TransformDialog"/>
+ <menu:menuitem menu:id=".uno:FormatLine"/>
+ <menu:menuitem menu:id=".uno:FormatArea"/>
+ <menu:menuitem menu:id=".uno:TextAttributes"/>
+ <menu:menuitem menu:id=".uno:FontWork"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ObjectTitleDescription"/>
+ <menu:menuitem menu:id=".uno:NameGroup"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:FrameDialog"/>
+ <menu:menuitem menu:id=".uno:GraphicDialog"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:TableMenu">
+ <menu:menupopup>
+ <menu:menu menu:id=".uno:TableInsertMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:InsertTable"/>
+ <menu:menuitem menu:id=".uno:InsertRowDialog"/>
+ <menu:menuitem menu:id=".uno:InsertColumnDialog"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:TableDeleteMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:DeleteTable"/>
+ <menu:menuitem menu:id=".uno:DeleteRows"/>
+ <menu:menuitem menu:id=".uno:DeleteColumns"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:TableSelectMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:SelectTable"/>
+ <menu:menuitem menu:id=".uno:EntireRow"/>
+ <menu:menuitem menu:id=".uno:EntireColumn"/>
+ <menu:menuitem menu:id=".uno:EntireCell"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:WindowList">
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:MergeCells"/>
+ <menu:menuitem menu:id=".uno:SplitCell"/>
+ <menu:menuitem menu:id=".uno:Protect"/>
+ <menu:menuitem menu:id=".uno:MergeTable"/>
+ <menu:menuitem menu:id=".uno:SplitTable"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:AutoFormat"/>
+ <menu:menu menu:id=".uno:TableAutoFitMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:SetColumnWidth"/>
+ <menu:menuitem menu:id=".uno:SetOptimalColumnWidth"/>
+ <menu:menuitem menu:id=".uno:DistributeColumns"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:SetRowHeight"/>
+ <menu:menuitem menu:id=".uno:SetOptimalRowHeight"/>
+ <menu:menuitem menu:id=".uno:DistributeRows"/>
+ <menu:menuitem menu:id=".uno:RowSplit"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:HeadingRowsRepeat"/>
+ <menu:menu menu:id=".uno:TableConvertMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:ConvertTextToTable"/>
+ <menu:menuitem menu:id=".uno:ConvertTableToText"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:TableSort"/>
+ <menu:menuitem menu:id=".uno:InsertFormula"/>
+ <menu:menuitem menu:id=".uno:TableNumberFormatDialog"/>
+ <menu:menuitem menu:id=".uno:TableBoundaries"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:TableDialog"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:ToolsMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:SpellingAndGrammarDialog"/>
+ <menu:menu menu:id=".uno:LanguageMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:HangulHanjaConversion"/>
+ <menu:menuitem menu:id=".uno:ChineseConversion"/>
+ <menu:menuitem menu:id=".uno:ThesaurusDialog"/>
+ <menu:menuitem menu:id=".uno:Hyphenate"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:MoreDictionaries"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:WordCountDialog"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ChapterNumberingDialog"/>
+ <menu:menuitem menu:id=".uno:LineNumberingDialog"/>
+ <menu:menuitem menu:id=".uno:FootnoteDialog"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Gallery"/>
+ <menu:menuitem menu:id=".uno:AVMediaPlayer"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:BibliographyComponent"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:MailMergeWizard"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:SortDialog"/>
+ <menu:menuitem menu:id=".uno:CalculateSel"/>
+ <menu:menu menu:id=".uno:UpdateMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:NewWindow"/>
- <menu:menuitem menu:id=".uno:CloseWin"/>
- <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:UpdateAll"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:UpdateFields"/>
+ <menu:menuitem menu:id=".uno:UpdateAllLinks"/>
+ <menu:menuitem menu:id=".uno:UpdateCharts"/>
+ <menu:menuitem menu:id=".uno:UpdateCurIndex"/>
+ <menu:menuitem menu:id=".uno:UpdateAllIndexes"/>
+ <menu:menuitem menu:id=".uno:Repaginate"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:HelpMenu">
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menu menu:id=".uno:MacrosMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:HelpIndex"/>
- <menu:menuitem menu:id=".uno:ExtendedHelp"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:HelpSupport"/>
- <menu:menuitem menu:id=".uno:OnlineRegistrationDlg"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:About"/>
+ <menu:menuitem menu:id=".uno:MacroRecorder"/>
+ <menu:menuitem menu:id=".uno:RunMacro"/>
+ <menu:menu menu:id=".uno:ScriptOrganizer"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:MacroOrganizer?TabId:short=1"/>
</menu:menupopup>
- </menu:menu>
+ </menu:menu>
+ <menu:menuitem menu:id="service:com.sun.star.deployment.ui.PackageManagerDialog"/>
+ <menu:menuitem menu:id=".uno:OpenXMLFilterSettings"/>
+ <menu:menuitem menu:id=".uno:AutoCorrectDlg"/>
+ <menu:menuitem menu:id=".uno:ConfigureDialog"/>
+ <menu:menuitem menu:id=".uno:OptionsTreeDialog"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:WindowList">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:NewWindow"/>
+ <menu:menuitem menu:id=".uno:CloseWin"/>
+ <menu:menuseparator/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:HelpMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:HelpIndex"/>
+ <menu:menuitem menu:id=".uno:ExtendedHelp"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:HelpSupport"/>
+ <menu:menuitem menu:id=".uno:OnlineRegistrationDlg"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:About"/>
+ </menu:menupopup>
+ </menu:menu>
</menu:menubar>
diff --git a/sw/uiconfig/swreport/toolbar/extrusionobjectbar.xml b/sw/uiconfig/swreport/toolbar/extrusionobjectbar.xml
index 1f212226cf52..148849db6ee7 100644
--- a/sw/uiconfig/swreport/toolbar/extrusionobjectbar.xml
+++ b/sw/uiconfig/swreport/toolbar/extrusionobjectbar.xml
@@ -8,9 +8,9 @@
<toolbar:toolbaritem xlink:href=".uno:ExtrusionTiltLeft" toolbar:helpid="10963"/>
<toolbar:toolbaritem xlink:href=".uno:ExtrusionTiltRight" toolbar:helpid="10964"/>
<toolbar:toolbarseparator/>
- <toolbar:toolbaritem xlink:href=".uno:ExtrusionDepthFloater" toolbar:helpid="10965"/>
- <toolbar:toolbaritem xlink:href=".uno:ExtrusionDirectionFloater" toolbar:helpid="10966"/>
- <toolbar:toolbaritem xlink:href=".uno:ExtrusionLightingFloater" toolbar:helpid="10967"/>
- <toolbar:toolbaritem xlink:href=".uno:ExtrusionSurfaceFloater" toolbar:helpid="10968"/>
- <toolbar:toolbaritem xlink:href=".uno:Extrusion3DColor" toolbar:helpid="10969"/>
+ <toolbar:toolbaritem xlink:href=".uno:ExtrusionDepthFloater" toolbar:helpid="10965" toolbar:style="dropdownonly"/>
+ <toolbar:toolbaritem xlink:href=".uno:ExtrusionDirectionFloater" toolbar:helpid="10966" toolbar:style="dropdownonly"/>
+ <toolbar:toolbaritem xlink:href=".uno:ExtrusionLightingFloater" toolbar:helpid="10967" toolbar:style="dropdownonly"/>
+ <toolbar:toolbaritem xlink:href=".uno:ExtrusionSurfaceFloater" toolbar:helpid="10968" toolbar:style="dropdownonly"/>
+ <toolbar:toolbaritem xlink:href=".uno:Extrusion3DColor" toolbar:helpid="10969" toolbar:style="dropdownonly"/>
</toolbar:toolbar> \ No newline at end of file
diff --git a/sw/uiconfig/swreport/toolbar/fontworkobjectbar.xml b/sw/uiconfig/swreport/toolbar/fontworkobjectbar.xml
index 3ac334e0e920..5219a1e235e9 100644
--- a/sw/uiconfig/swreport/toolbar/fontworkobjectbar.xml
+++ b/sw/uiconfig/swreport/toolbar/fontworkobjectbar.xml
@@ -3,9 +3,9 @@
<toolbar:toolbar xmlns:toolbar="http://openoffice.org/2001/toolbar" xmlns:xlink="http://www.w3.org/1999/xlink" toolbar:id="toolbar">
<toolbar:toolbaritem xlink:href=".uno:FontworkGalleryFloater" toolbar:helpid="helpid:10977" />
<toolbar:toolbarseparator/>
- <toolbar:toolbaritem xlink:href=".uno:FontworkShapeType" toolbar:helpid="helpid:10978" toolbar:style="radio dropdown" />
+ <toolbar:toolbaritem xlink:href=".uno:FontworkShapeType" toolbar:helpid="helpid:10978" toolbar:style="dropdownonly" />
<toolbar:toolbaritem xlink:href=".uno:FontworkSameLetterHeights" toolbar:helpid="helpid:10979" />
<toolbar:toolbarseparator/>
- <toolbar:toolbaritem xlink:href=".uno:FontworkAlignmentFloater" toolbar:helpid="helpid:10981" toolbar:style="dropdown" />
- <toolbar:toolbaritem xlink:href=".uno:FontworkCharacterSpacingFloater" toolbar:helpid="helpid:10982" toolbar:style="dropdown" />
+ <toolbar:toolbaritem xlink:href=".uno:FontworkAlignmentFloater" toolbar:helpid="helpid:10981" toolbar:style="dropdownonly" />
+ <toolbar:toolbaritem xlink:href=".uno:FontworkCharacterSpacingFloater" toolbar:helpid="helpid:10982" toolbar:style="dropdownonly" />
</toolbar:toolbar> \ No newline at end of file
diff --git a/sw/uiconfig/swriter/accelerator/de/default.xml b/sw/uiconfig/swriter/accelerator/de/default.xml
deleted file mode 100644
index 1c8b4553329d..000000000000
--- a/sw/uiconfig/swriter/accelerator/de/default.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
- <accel:item accel:code="KEY_F11" xlink:href=".uno:DesignerDialog"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" xlink:href=".uno:StyleNewByExample"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" accel:mod1="true" xlink:href=".uno:StyleUpdateByExample"/>
- <accel:item accel:code="KEY_F11" accel:mod1="true" xlink:href=".uno:ActivateStyleApply"/>
- <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href=".uno:Redo"/>
- <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_UNDO" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_REPEAT" xlink:href=".uno:Repeat"/>
- <accel:item accel:code="KEY_K" accel:shift="true" accel:mod1="true" xlink:href=".uno:Italic"/>
- <accel:item accel:code="KEY_F" accel:shift="true" accel:mod1="true" xlink:href=".uno:Bold"/>
- <accel:item accel:code="KEY_U" accel:shift="true" accel:mod1="true" xlink:href=".uno:Underline"/>
- <accel:item accel:code="KEY_L" accel:mod1="true" xlink:href=".uno:LeftPara"/>
- <accel:item accel:code="KEY_R" accel:mod1="true" xlink:href=".uno:RightPara"/>
- <accel:item accel:code="KEY_E" accel:mod1="true" xlink:href=".uno:CenterPara"/>
- <accel:item accel:code="KEY_B" accel:mod1="true" xlink:href=".uno:JustifyPara"/>
- <accel:item accel:code="KEY_INSERT" xlink:href=".uno:InsertMode"/>
- <accel:item accel:code="KEY_F5" xlink:href=".uno:Navigator"/>
- <accel:item accel:code="KEY_A" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaLeftToRight"/>
- <accel:item accel:code="KEY_D" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaRightToLeft"/>
- <accel:item accel:code="KEY_V" accel:shift="true" accel:mod1="true" xlink:href=".uno:PasteSpecial"/>
- <accel:item accel:code="KEY_F9" xlink:href=".uno:UpdateFields"/>
- <accel:item accel:code="KEY_MULTIPLY" accel:mod1="true" xlink:href=".uno:ExecuteMacroField"/>
- <accel:item accel:code="KEY_F2" xlink:href=".uno:InsertFormula"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" xlink:href=".uno:Calc"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveUp"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" xlink:href=".uno:GoToPrevPara"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveDown"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" xlink:href=".uno:GoToNextPara"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveBullets"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" xlink:href=".uno:DefaultBullet"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" accel:mod1="true" xlink:href=".uno:UpdateInputFields"/>
- <accel:item accel:code="KEY_F12" xlink:href=".uno:DefaultNumbering"/>
- <accel:item accel:code="KEY_G" accel:mod1="true" xlink:href=".uno:RepeatSearch"/>
- <accel:item accel:code="KEY_R" accel:shift="true" accel:mod1="true" xlink:href=".uno:RefreshView"/>
- <accel:item accel:code="KEY_F10" accel:mod1="true" xlink:href=".uno:ControlCodes"/>
- <accel:item accel:code="KEY_F8" accel:mod1="true" xlink:href=".uno:Marks"/>
- <accel:item accel:code="KEY_F9" accel:mod1="true" xlink:href=".uno:Fieldnames"/>
- <accel:item accel:code="KEY_RETURN" xlink:href=".uno:InsertPara"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertColumnBreak"/>
- <accel:item accel:code="KEY_F2" accel:mod1="true" xlink:href=".uno:InsertField"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" xlink:href=".uno:InsertLinebreak"/>
- <accel:item accel:code="KEY_RETURN" accel:mod1="true" xlink:href=".uno:InsertPagebreak"/>
- <accel:item accel:code="KEY_F12" accel:mod1="true" xlink:href=".uno:InsertTable"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:mod1="true" xlink:href=".uno:InsertSoftHyphen"/>
- <accel:item accel:code="KEY_SPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertNonBreakingSpace"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertHardHyphen"/>
- <accel:item accel:code="KEY_D" accel:mod1="true" xlink:href=".uno:UnderlineDouble"/>
- <accel:item accel:code="KEY_H" accel:mod1="true" xlink:href=".uno:SuperScript"/>
- <accel:item accel:code="KEY_T" accel:mod1="true" xlink:href=".uno:SubScript"/>
- <accel:item accel:code="KEY_T" accel:shift="true" accel:mod1="true" xlink:href=".uno:ResetTableProtection"/>
- <accel:item accel:code="KEY_F7" accel:mod1="true" xlink:href=".uno:ThesaurusDialog"/>
- <accel:item accel:code="KEY_ADD" accel:mod1="true" xlink:href=".uno:CalculateSel"/>
- <accel:item accel:code="KEY_F3" accel:mod1="true" xlink:href=".uno:EditGlossary"/>
- <accel:item accel:code="KEY_F7" xlink:href=".uno:SpellingAndGrammarDialog"/>
- <accel:item accel:code="KEY_F3" xlink:href=".uno:ExpandGlossary"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" accel:mod1="true" xlink:href=".uno:GotoPage"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" xlink:href=".uno:CharLeftSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" xlink:href=".uno:CharRightSel"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" xlink:href=".uno:LineUpSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" xlink:href=".uno:LineDownSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" xlink:href=".uno:StartOfLineSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" xlink:href=".uno:EndOfLineSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfDocumentSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfDocumentSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordRightSel"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordLeftSel"/>
- <accel:item accel:code="KEY_PAGEUP" accel:shift="true" xlink:href=".uno:PageUpSel"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" xlink:href=".uno:PageDownSel"/>
- <accel:item accel:code="KEY_LEFT" xlink:href=".uno:GoLeft"/>
- <accel:item accel:code="KEY_RIGHT" xlink:href=".uno:GoRight"/>
- <accel:item accel:code="KEY_UP" xlink:href=".uno:GoUp"/>
- <accel:item accel:code="KEY_DOWN" xlink:href=".uno:GoDown"/>
- <accel:item accel:code="KEY_HOME" xlink:href=".uno:GoToStartOfLine"/>
- <accel:item accel:code="KEY_END" xlink:href=".uno:GoToEndOfLine"/>
- <accel:item accel:code="KEY_HOME" accel:mod1="true" xlink:href=".uno:GoToStartOfDoc"/>
- <accel:item accel:code="KEY_END" accel:mod1="true" xlink:href=".uno:GoToEndOfDoc"/>
- <accel:item accel:code="KEY_RIGHT" accel:mod1="true" xlink:href=".uno:GoToNextWord"/>
- <accel:item accel:code="KEY_LEFT" accel:mod1="true" xlink:href=".uno:GoToPrevWord"/>
- <accel:item accel:code="KEY_BACKSPACE" xlink:href=".uno:SwBackspace"/>
- <accel:item accel:code="KEY_DELETE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToEndOfSentence"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToStartOfSentence"/>
- <accel:item accel:code="KEY_DELETE" accel:mod1="true" xlink:href=".uno:DelToEndOfWord"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod1="true" xlink:href=".uno:DelToStartOfWord"/>
- <accel:item accel:code="KEY_PAGEUP" xlink:href=".uno:PageUp"/>
- <accel:item accel:code="KEY_PAGEDOWN" xlink:href=".uno:PageDown"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" xlink:href=".uno:SetMultiSelection"/>
- <accel:item accel:code="KEY_F8" xlink:href=".uno:SetExtSelection"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod2="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_ESCAPE" xlink:href=".uno:Escape"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" xlink:href=".uno:ShiftBackspace"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfParaSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfParaSel"/>
- <accel:item accel:code="KEY_F4" accel:shift="true" xlink:href=".uno:JumpToNextFrame"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" xlink:href=".uno:RestoreEditingView"/>
- <accel:item accel:code="KEY_PAGEUP" accel:mod1="true" xlink:href=".uno:JumpToHeader"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:mod1="true" xlink:href=".uno:JumpToFooter"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:JumpToFootnoteArea"/>
- <accel:item accel:code="KEY_I" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectTextMode"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Text body&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" accel:shift="true" xlink:href=".uno:StyleApply?Style:string=Standard&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_1" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 1&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_2" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 2&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_3" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 3&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_4" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 4&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_5" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 5&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_M" accel:mod1="true" xlink:href=".uno:ResetAttributes"/>
- <accel:item accel:code="KEY_J" accel:shift="true" accel:mod1="true" xlink:href=".uno:FullScreen"/>
- <accel:item accel:code="KEY_DIVIDE" accel:mod1="true" xlink:href=".uno:InsertZWSP"/>
- <accel:item accel:code="KEY_N" accel:mod1="true" accel:mod2="true" xlink:href=".uno:InsertAnnotation"/>
-</accel:acceleratorlist>
diff --git a/sw/uiconfig/swriter/accelerator/en-GB/default.xml b/sw/uiconfig/swriter/accelerator/en-GB/default.xml
deleted file mode 100644
index cb04b7f52a07..000000000000
--- a/sw/uiconfig/swriter/accelerator/en-GB/default.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
- <accel:item accel:code="KEY_F11" xlink:href=".uno:DesignerDialog"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" xlink:href=".uno:StyleNewByExample"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" accel:mod1="true" xlink:href=".uno:StyleUpdateByExample"/>
- <accel:item accel:code="KEY_F11" accel:mod1="true" xlink:href=".uno:ActivateStyleApply"/>
- <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href=".uno:Redo"/>
- <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_UNDO" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_REPEAT" xlink:href=".uno:Repeat"/>
- <accel:item accel:code="KEY_I" accel:mod1="true" xlink:href=".uno:Italic"/>
- <accel:item accel:code="KEY_B" accel:mod1="true" xlink:href=".uno:Bold"/>
- <accel:item accel:code="KEY_U" accel:mod1="true" xlink:href=".uno:Underline"/>
- <accel:item accel:code="KEY_L" accel:mod1="true" xlink:href=".uno:LeftPara"/>
- <accel:item accel:code="KEY_R" accel:mod1="true" xlink:href=".uno:RightPara"/>
- <accel:item accel:code="KEY_E" accel:mod1="true" xlink:href=".uno:CenterPara"/>
- <accel:item accel:code="KEY_J" accel:mod1="true" xlink:href=".uno:JustifyPara"/>
- <accel:item accel:code="KEY_INSERT" xlink:href=".uno:InsertMode"/>
- <accel:item accel:code="KEY_F5" xlink:href=".uno:Navigator"/>
- <accel:item accel:code="KEY_A" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaLeftToRight"/>
- <accel:item accel:code="KEY_D" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaRightToLeft"/>
- <accel:item accel:code="KEY_V" accel:shift="true" accel:mod1="true" xlink:href=".uno:PasteSpecial"/>
- <accel:item accel:code="KEY_F9" xlink:href=".uno:UpdateFields"/>
- <accel:item accel:code="KEY_MULTIPLY" accel:mod1="true" xlink:href=".uno:ExecuteMacroField"/>
- <accel:item accel:code="KEY_F2" xlink:href=".uno:InsertFormula"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" xlink:href=".uno:Calc"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveUp"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" xlink:href=".uno:GoToPrevPara"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveDown"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" xlink:href=".uno:GoToNextPara"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveBullets"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" xlink:href=".uno:DefaultBullet"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" accel:mod1="true" xlink:href=".uno:UpdateInputFields"/>
- <accel:item accel:code="KEY_F12" xlink:href=".uno:DefaultNumbering"/>
- <accel:item accel:code="KEY_F" accel:shift="true" accel:mod1="true" xlink:href=".uno:RepeatSearch"/>
- <accel:item accel:code="KEY_R" accel:shift="true" accel:mod1="true" xlink:href=".uno:RefreshView"/>
- <accel:item accel:code="KEY_F10" accel:mod1="true" xlink:href=".uno:ControlCodes"/>
- <accel:item accel:code="KEY_F8" accel:mod1="true" xlink:href=".uno:Marks"/>
- <accel:item accel:code="KEY_F9" accel:mod1="true" xlink:href=".uno:Fieldnames"/>
- <accel:item accel:code="KEY_RETURN" xlink:href=".uno:InsertPara"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertColumnBreak"/>
- <accel:item accel:code="KEY_F2" accel:mod1="true" xlink:href=".uno:InsertField"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" xlink:href=".uno:InsertLinebreak"/>
- <accel:item accel:code="KEY_RETURN" accel:mod1="true" xlink:href=".uno:InsertPagebreak"/>
- <accel:item accel:code="KEY_F12" accel:mod1="true" xlink:href=".uno:InsertTable"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:mod1="true" xlink:href=".uno:InsertSoftHyphen"/>
- <accel:item accel:code="KEY_SPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertNonBreakingSpace"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertHardHyphen"/>
- <accel:item accel:code="KEY_D" accel:mod1="true" xlink:href=".uno:UnderlineDouble"/>
- <accel:item accel:code="KEY_P" accel:shift="true" accel:mod1="true" xlink:href=".uno:SuperScript"/>
- <accel:item accel:code="KEY_B" accel:shift="true" accel:mod1="true" xlink:href=".uno:SubScript"/>
- <accel:item accel:code="KEY_T" accel:shift="true" accel:mod1="true" xlink:href=".uno:ResetTableProtection"/>
- <accel:item accel:code="KEY_F7" accel:mod1="true" xlink:href=".uno:ThesaurusDialog"/>
- <accel:item accel:code="KEY_ADD" accel:mod1="true" xlink:href=".uno:CalculateSel"/>
- <accel:item accel:code="KEY_F3" accel:mod1="true" xlink:href=".uno:EditGlossary"/>
- <accel:item accel:code="KEY_F7" xlink:href=".uno:SpellingAndGrammarDialog"/>
- <accel:item accel:code="KEY_F3" xlink:href=".uno:ExpandGlossary"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" accel:mod1="true" xlink:href=".uno:GotoPage"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" xlink:href=".uno:CharLeftSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" xlink:href=".uno:CharRightSel"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" xlink:href=".uno:LineUpSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" xlink:href=".uno:LineDownSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" xlink:href=".uno:StartOfLineSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" xlink:href=".uno:EndOfLineSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfDocumentSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfDocumentSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordRightSel"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordLeftSel"/>
- <accel:item accel:code="KEY_PAGEUP" accel:shift="true" xlink:href=".uno:PageUpSel"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" xlink:href=".uno:PageDownSel"/>
- <accel:item accel:code="KEY_LEFT" xlink:href=".uno:GoLeft"/>
- <accel:item accel:code="KEY_RIGHT" xlink:href=".uno:GoRight"/>
- <accel:item accel:code="KEY_UP" xlink:href=".uno:GoUp"/>
- <accel:item accel:code="KEY_DOWN" xlink:href=".uno:GoDown"/>
- <accel:item accel:code="KEY_HOME" xlink:href=".uno:GoToStartOfLine"/>
- <accel:item accel:code="KEY_END" xlink:href=".uno:GoToEndOfLine"/>
- <accel:item accel:code="KEY_HOME" accel:mod1="true" xlink:href=".uno:GoToStartOfDoc"/>
- <accel:item accel:code="KEY_END" accel:mod1="true" xlink:href=".uno:GoToEndOfDoc"/>
- <accel:item accel:code="KEY_RIGHT" accel:mod1="true" xlink:href=".uno:GoToNextWord"/>
- <accel:item accel:code="KEY_LEFT" accel:mod1="true" xlink:href=".uno:GoToPrevWord"/>
- <accel:item accel:code="KEY_BACKSPACE" xlink:href=".uno:SwBackspace"/>
- <accel:item accel:code="KEY_DELETE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToEndOfSentence"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToStartOfSentence"/>
- <accel:item accel:code="KEY_DELETE" accel:mod1="true" xlink:href=".uno:DelToEndOfWord"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod1="true" xlink:href=".uno:DelToStartOfWord"/>
- <accel:item accel:code="KEY_PAGEUP" xlink:href=".uno:PageUp"/>
- <accel:item accel:code="KEY_PAGEDOWN" xlink:href=".uno:PageDown"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" xlink:href=".uno:SetMultiSelection"/>
- <accel:item accel:code="KEY_F8" xlink:href=".uno:SetExtSelection"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod2="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_ESCAPE" xlink:href=".uno:Escape"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" xlink:href=".uno:ShiftBackspace"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfParaSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfParaSel"/>
- <accel:item accel:code="KEY_F4" accel:shift="true" xlink:href=".uno:JumpToNextFrame"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" xlink:href=".uno:RestoreEditingView"/>
- <accel:item accel:code="KEY_PAGEUP" accel:mod1="true" xlink:href=".uno:JumpToHeader"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:mod1="true" xlink:href=".uno:JumpToFooter"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:JumpToFootnoteArea"/>
- <accel:item accel:code="KEY_I" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectTextMode"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Text body&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" accel:shift="true" xlink:href=".uno:StyleApply?Style:string=Standard&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_1" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 1&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_2" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 2&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_3" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 3&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_4" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 4&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_5" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 5&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_M" accel:mod1="true" xlink:href=".uno:ResetAttributes"/>
- <accel:item accel:code="KEY_J" accel:shift="true" accel:mod1="true" xlink:href=".uno:FullScreen"/>
- <accel:item accel:code="KEY_X" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveDirectCharFormats"/>
- <accel:item accel:code="KEY_DIVIDE" accel:mod1="true" xlink:href=".uno:InsertZWSP"/>
- <accel:item accel:code="KEY_C" accel:mod1="true" accel:mod2="true" xlink:href=".uno:InsertAnnotation"/>
-</accel:acceleratorlist>
diff --git a/sw/uiconfig/swriter/accelerator/en-US/default.xml b/sw/uiconfig/swriter/accelerator/en-US/default.xml
deleted file mode 100644
index cb04b7f52a07..000000000000
--- a/sw/uiconfig/swriter/accelerator/en-US/default.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
- <accel:item accel:code="KEY_F11" xlink:href=".uno:DesignerDialog"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" xlink:href=".uno:StyleNewByExample"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" accel:mod1="true" xlink:href=".uno:StyleUpdateByExample"/>
- <accel:item accel:code="KEY_F11" accel:mod1="true" xlink:href=".uno:ActivateStyleApply"/>
- <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href=".uno:Redo"/>
- <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_UNDO" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_REPEAT" xlink:href=".uno:Repeat"/>
- <accel:item accel:code="KEY_I" accel:mod1="true" xlink:href=".uno:Italic"/>
- <accel:item accel:code="KEY_B" accel:mod1="true" xlink:href=".uno:Bold"/>
- <accel:item accel:code="KEY_U" accel:mod1="true" xlink:href=".uno:Underline"/>
- <accel:item accel:code="KEY_L" accel:mod1="true" xlink:href=".uno:LeftPara"/>
- <accel:item accel:code="KEY_R" accel:mod1="true" xlink:href=".uno:RightPara"/>
- <accel:item accel:code="KEY_E" accel:mod1="true" xlink:href=".uno:CenterPara"/>
- <accel:item accel:code="KEY_J" accel:mod1="true" xlink:href=".uno:JustifyPara"/>
- <accel:item accel:code="KEY_INSERT" xlink:href=".uno:InsertMode"/>
- <accel:item accel:code="KEY_F5" xlink:href=".uno:Navigator"/>
- <accel:item accel:code="KEY_A" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaLeftToRight"/>
- <accel:item accel:code="KEY_D" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaRightToLeft"/>
- <accel:item accel:code="KEY_V" accel:shift="true" accel:mod1="true" xlink:href=".uno:PasteSpecial"/>
- <accel:item accel:code="KEY_F9" xlink:href=".uno:UpdateFields"/>
- <accel:item accel:code="KEY_MULTIPLY" accel:mod1="true" xlink:href=".uno:ExecuteMacroField"/>
- <accel:item accel:code="KEY_F2" xlink:href=".uno:InsertFormula"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" xlink:href=".uno:Calc"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveUp"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" xlink:href=".uno:GoToPrevPara"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveDown"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" xlink:href=".uno:GoToNextPara"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveBullets"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" xlink:href=".uno:DefaultBullet"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" accel:mod1="true" xlink:href=".uno:UpdateInputFields"/>
- <accel:item accel:code="KEY_F12" xlink:href=".uno:DefaultNumbering"/>
- <accel:item accel:code="KEY_F" accel:shift="true" accel:mod1="true" xlink:href=".uno:RepeatSearch"/>
- <accel:item accel:code="KEY_R" accel:shift="true" accel:mod1="true" xlink:href=".uno:RefreshView"/>
- <accel:item accel:code="KEY_F10" accel:mod1="true" xlink:href=".uno:ControlCodes"/>
- <accel:item accel:code="KEY_F8" accel:mod1="true" xlink:href=".uno:Marks"/>
- <accel:item accel:code="KEY_F9" accel:mod1="true" xlink:href=".uno:Fieldnames"/>
- <accel:item accel:code="KEY_RETURN" xlink:href=".uno:InsertPara"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertColumnBreak"/>
- <accel:item accel:code="KEY_F2" accel:mod1="true" xlink:href=".uno:InsertField"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" xlink:href=".uno:InsertLinebreak"/>
- <accel:item accel:code="KEY_RETURN" accel:mod1="true" xlink:href=".uno:InsertPagebreak"/>
- <accel:item accel:code="KEY_F12" accel:mod1="true" xlink:href=".uno:InsertTable"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:mod1="true" xlink:href=".uno:InsertSoftHyphen"/>
- <accel:item accel:code="KEY_SPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertNonBreakingSpace"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertHardHyphen"/>
- <accel:item accel:code="KEY_D" accel:mod1="true" xlink:href=".uno:UnderlineDouble"/>
- <accel:item accel:code="KEY_P" accel:shift="true" accel:mod1="true" xlink:href=".uno:SuperScript"/>
- <accel:item accel:code="KEY_B" accel:shift="true" accel:mod1="true" xlink:href=".uno:SubScript"/>
- <accel:item accel:code="KEY_T" accel:shift="true" accel:mod1="true" xlink:href=".uno:ResetTableProtection"/>
- <accel:item accel:code="KEY_F7" accel:mod1="true" xlink:href=".uno:ThesaurusDialog"/>
- <accel:item accel:code="KEY_ADD" accel:mod1="true" xlink:href=".uno:CalculateSel"/>
- <accel:item accel:code="KEY_F3" accel:mod1="true" xlink:href=".uno:EditGlossary"/>
- <accel:item accel:code="KEY_F7" xlink:href=".uno:SpellingAndGrammarDialog"/>
- <accel:item accel:code="KEY_F3" xlink:href=".uno:ExpandGlossary"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" accel:mod1="true" xlink:href=".uno:GotoPage"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" xlink:href=".uno:CharLeftSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" xlink:href=".uno:CharRightSel"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" xlink:href=".uno:LineUpSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" xlink:href=".uno:LineDownSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" xlink:href=".uno:StartOfLineSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" xlink:href=".uno:EndOfLineSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfDocumentSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfDocumentSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordRightSel"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordLeftSel"/>
- <accel:item accel:code="KEY_PAGEUP" accel:shift="true" xlink:href=".uno:PageUpSel"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" xlink:href=".uno:PageDownSel"/>
- <accel:item accel:code="KEY_LEFT" xlink:href=".uno:GoLeft"/>
- <accel:item accel:code="KEY_RIGHT" xlink:href=".uno:GoRight"/>
- <accel:item accel:code="KEY_UP" xlink:href=".uno:GoUp"/>
- <accel:item accel:code="KEY_DOWN" xlink:href=".uno:GoDown"/>
- <accel:item accel:code="KEY_HOME" xlink:href=".uno:GoToStartOfLine"/>
- <accel:item accel:code="KEY_END" xlink:href=".uno:GoToEndOfLine"/>
- <accel:item accel:code="KEY_HOME" accel:mod1="true" xlink:href=".uno:GoToStartOfDoc"/>
- <accel:item accel:code="KEY_END" accel:mod1="true" xlink:href=".uno:GoToEndOfDoc"/>
- <accel:item accel:code="KEY_RIGHT" accel:mod1="true" xlink:href=".uno:GoToNextWord"/>
- <accel:item accel:code="KEY_LEFT" accel:mod1="true" xlink:href=".uno:GoToPrevWord"/>
- <accel:item accel:code="KEY_BACKSPACE" xlink:href=".uno:SwBackspace"/>
- <accel:item accel:code="KEY_DELETE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToEndOfSentence"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToStartOfSentence"/>
- <accel:item accel:code="KEY_DELETE" accel:mod1="true" xlink:href=".uno:DelToEndOfWord"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod1="true" xlink:href=".uno:DelToStartOfWord"/>
- <accel:item accel:code="KEY_PAGEUP" xlink:href=".uno:PageUp"/>
- <accel:item accel:code="KEY_PAGEDOWN" xlink:href=".uno:PageDown"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" xlink:href=".uno:SetMultiSelection"/>
- <accel:item accel:code="KEY_F8" xlink:href=".uno:SetExtSelection"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod2="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_ESCAPE" xlink:href=".uno:Escape"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" xlink:href=".uno:ShiftBackspace"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfParaSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfParaSel"/>
- <accel:item accel:code="KEY_F4" accel:shift="true" xlink:href=".uno:JumpToNextFrame"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" xlink:href=".uno:RestoreEditingView"/>
- <accel:item accel:code="KEY_PAGEUP" accel:mod1="true" xlink:href=".uno:JumpToHeader"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:mod1="true" xlink:href=".uno:JumpToFooter"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:JumpToFootnoteArea"/>
- <accel:item accel:code="KEY_I" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectTextMode"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Text body&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" accel:shift="true" xlink:href=".uno:StyleApply?Style:string=Standard&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_1" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 1&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_2" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 2&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_3" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 3&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_4" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 4&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_5" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 5&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_M" accel:mod1="true" xlink:href=".uno:ResetAttributes"/>
- <accel:item accel:code="KEY_J" accel:shift="true" accel:mod1="true" xlink:href=".uno:FullScreen"/>
- <accel:item accel:code="KEY_X" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveDirectCharFormats"/>
- <accel:item accel:code="KEY_DIVIDE" accel:mod1="true" xlink:href=".uno:InsertZWSP"/>
- <accel:item accel:code="KEY_C" accel:mod1="true" accel:mod2="true" xlink:href=".uno:InsertAnnotation"/>
-</accel:acceleratorlist>
diff --git a/sw/uiconfig/swriter/accelerator/es/default.xml b/sw/uiconfig/swriter/accelerator/es/default.xml
deleted file mode 100644
index 464cc3a29577..000000000000
--- a/sw/uiconfig/swriter/accelerator/es/default.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
- <accel:item accel:code="KEY_F11" xlink:href=".uno:DesignerDialog"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" xlink:href=".uno:StyleNewByExample"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" accel:mod1="true" xlink:href=".uno:StyleUpdateByExample"/>
- <accel:item accel:code="KEY_F11" accel:mod1="true" xlink:href=".uno:ActivateStyleApply"/>
- <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href=".uno:Redo"/>
- <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_UNDO" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_REPEAT" xlink:href=".uno:Repeat"/>
- <accel:item accel:code="KEY_K" accel:mod1="true" xlink:href=".uno:Italic"/>
- <accel:item accel:code="KEY_N" accel:mod1="true" xlink:href=".uno:Bold"/>
- <accel:item accel:code="KEY_S" accel:mod1="true" xlink:href=".uno:Underline"/>
- <accel:item accel:code="KEY_L" accel:mod1="true" xlink:href=".uno:LeftPara"/>
- <accel:item accel:code="KEY_R" accel:mod1="true" xlink:href=".uno:RightPara"/>
- <accel:item accel:code="KEY_T" accel:mod1="true" xlink:href=".uno:CenterPara"/>
- <accel:item accel:code="KEY_J" accel:mod1="true" xlink:href=".uno:JustifyPara"/>
- <accel:item accel:code="KEY_INSERT" xlink:href=".uno:InsertMode"/>
- <accel:item accel:code="KEY_F5" xlink:href=".uno:Navigator"/>
- <accel:item accel:code="KEY_A" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaLeftToRight"/>
- <accel:item accel:code="KEY_D" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaRightToLeft"/>
- <accel:item accel:code="KEY_V" accel:shift="true" accel:mod1="true" xlink:href=".uno:PasteSpecial"/>
- <accel:item accel:code="KEY_F9" xlink:href=".uno:UpdateFields"/>
- <accel:item accel:code="KEY_MULTIPLY" accel:mod1="true" xlink:href=".uno:ExecuteMacroField"/>
- <accel:item accel:code="KEY_F2" xlink:href=".uno:InsertFormula"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" xlink:href=".uno:Calc"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveUp"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" xlink:href=".uno:GoToPrevPara"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveDown"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" xlink:href=".uno:GoToNextPara"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveBullets"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" xlink:href=".uno:DefaultBullet"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" accel:mod1="true" xlink:href=".uno:UpdateInputFields"/>
- <accel:item accel:code="KEY_F12" xlink:href=".uno:DefaultNumbering"/>
- <accel:item accel:code="KEY_F" accel:shift="true" accel:mod1="true" xlink:href=".uno:RepeatSearch"/>
- <accel:item accel:code="KEY_R" accel:shift="true" accel:mod1="true" xlink:href=".uno:RefreshView"/>
- <accel:item accel:code="KEY_F10" accel:mod1="true" xlink:href=".uno:ControlCodes"/>
- <accel:item accel:code="KEY_F8" accel:mod1="true" xlink:href=".uno:Marks"/>
- <accel:item accel:code="KEY_F9" accel:mod1="true" xlink:href=".uno:Fieldnames"/>
- <accel:item accel:code="KEY_RETURN" xlink:href=".uno:InsertPara"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertColumnBreak"/>
- <accel:item accel:code="KEY_F2" accel:mod1="true" xlink:href=".uno:InsertField"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" xlink:href=".uno:InsertLinebreak"/>
- <accel:item accel:code="KEY_RETURN" accel:mod1="true" xlink:href=".uno:InsertPagebreak"/>
- <accel:item accel:code="KEY_F12" accel:mod1="true" xlink:href=".uno:InsertTable"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:mod1="true" xlink:href=".uno:InsertSoftHyphen"/>
- <accel:item accel:code="KEY_SPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertNonBreakingSpace"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertHardHyphen"/>
- <accel:item accel:code="KEY_D" accel:mod1="true" xlink:href=".uno:UnderlineDouble"/>
- <accel:item accel:code="KEY_P" accel:shift="true" accel:mod1="true" xlink:href=".uno:SuperScript"/>
- <accel:item accel:code="KEY_B" accel:shift="true" accel:mod1="true" xlink:href=".uno:SubScript"/>
- <accel:item accel:code="KEY_T" accel:shift="true" accel:mod1="true" xlink:href=".uno:ResetTableProtection"/>
- <accel:item accel:code="KEY_F7" accel:mod1="true" xlink:href=".uno:ThesaurusDialog"/>
- <accel:item accel:code="KEY_ADD" accel:mod1="true" xlink:href=".uno:CalculateSel"/>
- <accel:item accel:code="KEY_F3" accel:mod1="true" xlink:href=".uno:EditGlossary"/>
- <accel:item accel:code="KEY_F7" xlink:href=".uno:SpellingAndGrammarDialog"/>
- <accel:item accel:code="KEY_F3" xlink:href=".uno:ExpandGlossary"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" accel:mod1="true" xlink:href=".uno:GotoPage"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" xlink:href=".uno:CharLeftSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" xlink:href=".uno:CharRightSel"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" xlink:href=".uno:LineUpSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" xlink:href=".uno:LineDownSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" xlink:href=".uno:StartOfLineSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" xlink:href=".uno:EndOfLineSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfDocumentSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfDocumentSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordRightSel"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordLeftSel"/>
- <accel:item accel:code="KEY_PAGEUP" accel:shift="true" xlink:href=".uno:PageUpSel"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" xlink:href=".uno:PageDownSel"/>
- <accel:item accel:code="KEY_LEFT" xlink:href=".uno:GoLeft"/>
- <accel:item accel:code="KEY_RIGHT" xlink:href=".uno:GoRight"/>
- <accel:item accel:code="KEY_UP" xlink:href=".uno:GoUp"/>
- <accel:item accel:code="KEY_DOWN" xlink:href=".uno:GoDown"/>
- <accel:item accel:code="KEY_HOME" xlink:href=".uno:GoToStartOfLine"/>
- <accel:item accel:code="KEY_END" xlink:href=".uno:GoToEndOfLine"/>
- <accel:item accel:code="KEY_HOME" accel:mod1="true" xlink:href=".uno:GoToStartOfDoc"/>
- <accel:item accel:code="KEY_END" accel:mod1="true" xlink:href=".uno:GoToEndOfDoc"/>
- <accel:item accel:code="KEY_RIGHT" accel:mod1="true" xlink:href=".uno:GoToNextWord"/>
- <accel:item accel:code="KEY_LEFT" accel:mod1="true" xlink:href=".uno:GoToPrevWord"/>
- <accel:item accel:code="KEY_BACKSPACE" xlink:href=".uno:SwBackspace"/>
- <accel:item accel:code="KEY_DELETE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToEndOfSentence"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToStartOfSentence"/>
- <accel:item accel:code="KEY_DELETE" accel:mod1="true" xlink:href=".uno:DelToEndOfWord"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod1="true" xlink:href=".uno:DelToStartOfWord"/>
- <accel:item accel:code="KEY_PAGEUP" xlink:href=".uno:PageUp"/>
- <accel:item accel:code="KEY_PAGEDOWN" xlink:href=".uno:PageDown"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" xlink:href=".uno:SetMultiSelection"/>
- <accel:item accel:code="KEY_F8" xlink:href=".uno:SetExtSelection"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod2="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_ESCAPE" xlink:href=".uno:Escape"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" xlink:href=".uno:ShiftBackspace"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfParaSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfParaSel"/>
- <accel:item accel:code="KEY_F4" accel:shift="true" xlink:href=".uno:JumpToNextFrame"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" xlink:href=".uno:RestoreEditingView"/>
- <accel:item accel:code="KEY_PAGEUP" accel:mod1="true" xlink:href=".uno:JumpToHeader"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:mod1="true" xlink:href=".uno:JumpToFooter"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:JumpToFootnoteArea"/>
- <accel:item accel:code="KEY_I" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectTextMode"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Text body&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" accel:shift="true" xlink:href=".uno:StyleApply?Style:string=Standard&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_1" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 1&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_2" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 2&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_3" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 3&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_4" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 4&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_5" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 5&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_M" accel:mod1="true" xlink:href=".uno:ResetAttributes"/>
- <accel:item accel:code="KEY_J" accel:shift="true" accel:mod1="true" xlink:href=".uno:FullScreen"/>
- <accel:item accel:code="KEY_DIVIDE" accel:mod1="true" xlink:href=".uno:InsertZWSP"/>
- <accel:item accel:code="KEY_N" accel:mod1="true" accel:mod2="true" xlink:href=".uno:InsertAnnotation"/>
-</accel:acceleratorlist>
diff --git a/sw/uiconfig/swriter/accelerator/fr/default.xml b/sw/uiconfig/swriter/accelerator/fr/default.xml
deleted file mode 100644
index ae29581b2b66..000000000000
--- a/sw/uiconfig/swriter/accelerator/fr/default.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
- <accel:item accel:code="KEY_F11" xlink:href=".uno:DesignerDialog"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" xlink:href=".uno:StyleNewByExample"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" accel:mod1="true" xlink:href=".uno:StyleUpdateByExample"/>
- <accel:item accel:code="KEY_F11" accel:mod1="true" xlink:href=".uno:ActivateStyleApply"/>
- <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href=".uno:Redo"/>
- <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_UNDO" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_REPEAT" xlink:href=".uno:Repeat"/>
- <accel:item accel:code="KEY_I" accel:mod1="true" xlink:href=".uno:Italic"/>
- <accel:item accel:code="KEY_G" accel:mod1="true" xlink:href=".uno:Bold"/>
- <accel:item accel:code="KEY_U" accel:mod1="true" xlink:href=".uno:Underline"/>
- <accel:item accel:code="KEY_L" accel:mod1="true" xlink:href=".uno:LeftPara"/>
- <accel:item accel:code="KEY_R" accel:mod1="true" xlink:href=".uno:RightPara"/>
- <accel:item accel:code="KEY_E" accel:mod1="true" xlink:href=".uno:CenterPara"/>
- <accel:item accel:code="KEY_J" accel:mod1="true" xlink:href=".uno:JustifyPara"/>
- <accel:item accel:code="KEY_INSERT" xlink:href=".uno:InsertMode"/>
- <accel:item accel:code="KEY_F5" xlink:href=".uno:Navigator"/>
- <accel:item accel:code="KEY_A" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaLeftToRight"/>
- <accel:item accel:code="KEY_D" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaRightToLeft"/>
- <accel:item accel:code="KEY_V" accel:shift="true" accel:mod1="true" xlink:href=".uno:PasteSpecial"/>
- <accel:item accel:code="KEY_F9" xlink:href=".uno:UpdateFields"/>
- <accel:item accel:code="KEY_MULTIPLY" accel:mod1="true" xlink:href=".uno:ExecuteMacroField"/>
- <accel:item accel:code="KEY_F2" xlink:href=".uno:InsertFormula"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" xlink:href=".uno:Calc"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveUp"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" xlink:href=".uno:GoToPrevPara"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveDown"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" xlink:href=".uno:GoToNextPara"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveBullets"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" xlink:href=".uno:DefaultBullet"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" accel:mod1="true" xlink:href=".uno:UpdateInputFields"/>
- <accel:item accel:code="KEY_F12" xlink:href=".uno:DefaultNumbering"/>
- <accel:item accel:code="KEY_F" accel:shift="true" accel:mod1="true" xlink:href=".uno:RepeatSearch"/>
- <accel:item accel:code="KEY_R" accel:shift="true" accel:mod1="true" xlink:href=".uno:RefreshView"/>
- <accel:item accel:code="KEY_F10" accel:mod1="true" xlink:href=".uno:ControlCodes"/>
- <accel:item accel:code="KEY_F8" accel:mod1="true" xlink:href=".uno:Marks"/>
- <accel:item accel:code="KEY_F9" accel:mod1="true" xlink:href=".uno:Fieldnames"/>
- <accel:item accel:code="KEY_RETURN" xlink:href=".uno:InsertPara"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertColumnBreak"/>
- <accel:item accel:code="KEY_F2" accel:mod1="true" xlink:href=".uno:InsertField"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" xlink:href=".uno:InsertLinebreak"/>
- <accel:item accel:code="KEY_RETURN" accel:mod1="true" xlink:href=".uno:InsertPagebreak"/>
- <accel:item accel:code="KEY_F12" accel:mod1="true" xlink:href=".uno:InsertTable"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:mod1="true" xlink:href=".uno:InsertSoftHyphen"/>
- <accel:item accel:code="KEY_SPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertNonBreakingSpace"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertHardHyphen"/>
- <accel:item accel:code="KEY_D" accel:mod1="true" xlink:href=".uno:UnderlineDouble"/>
- <accel:item accel:code="KEY_P" accel:shift="true" accel:mod1="true" xlink:href=".uno:SuperScript"/>
- <accel:item accel:code="KEY_B" accel:shift="true" accel:mod1="true" xlink:href=".uno:SubScript"/>
- <accel:item accel:code="KEY_T" accel:shift="true" accel:mod1="true" xlink:href=".uno:ResetTableProtection"/>
- <accel:item accel:code="KEY_F7" accel:mod1="true" xlink:href=".uno:ThesaurusDialog"/>
- <accel:item accel:code="KEY_ADD" accel:mod1="true" xlink:href=".uno:CalculateSel"/>
- <accel:item accel:code="KEY_F3" accel:mod1="true" xlink:href=".uno:EditGlossary"/>
- <accel:item accel:code="KEY_F7" xlink:href=".uno:SpellingAndGrammarDialog"/>
- <accel:item accel:code="KEY_F3" xlink:href=".uno:ExpandGlossary"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" accel:mod1="true" xlink:href=".uno:GotoPage"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" xlink:href=".uno:CharLeftSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" xlink:href=".uno:CharRightSel"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" xlink:href=".uno:LineUpSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" xlink:href=".uno:LineDownSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" xlink:href=".uno:StartOfLineSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" xlink:href=".uno:EndOfLineSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfDocumentSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfDocumentSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordRightSel"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordLeftSel"/>
- <accel:item accel:code="KEY_PAGEUP" accel:shift="true" xlink:href=".uno:PageUpSel"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" xlink:href=".uno:PageDownSel"/>
- <accel:item accel:code="KEY_LEFT" xlink:href=".uno:GoLeft"/>
- <accel:item accel:code="KEY_RIGHT" xlink:href=".uno:GoRight"/>
- <accel:item accel:code="KEY_UP" xlink:href=".uno:GoUp"/>
- <accel:item accel:code="KEY_DOWN" xlink:href=".uno:GoDown"/>
- <accel:item accel:code="KEY_HOME" xlink:href=".uno:GoToStartOfLine"/>
- <accel:item accel:code="KEY_END" xlink:href=".uno:GoToEndOfLine"/>
- <accel:item accel:code="KEY_HOME" accel:mod1="true" xlink:href=".uno:GoToStartOfDoc"/>
- <accel:item accel:code="KEY_END" accel:mod1="true" xlink:href=".uno:GoToEndOfDoc"/>
- <accel:item accel:code="KEY_RIGHT" accel:mod1="true" xlink:href=".uno:GoToNextWord"/>
- <accel:item accel:code="KEY_LEFT" accel:mod1="true" xlink:href=".uno:GoToPrevWord"/>
- <accel:item accel:code="KEY_BACKSPACE" xlink:href=".uno:SwBackspace"/>
- <accel:item accel:code="KEY_DELETE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToEndOfSentence"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToStartOfSentence"/>
- <accel:item accel:code="KEY_DELETE" accel:mod1="true" xlink:href=".uno:DelToEndOfWord"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod1="true" xlink:href=".uno:DelToStartOfWord"/>
- <accel:item accel:code="KEY_PAGEUP" xlink:href=".uno:PageUp"/>
- <accel:item accel:code="KEY_PAGEDOWN" xlink:href=".uno:PageDown"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" xlink:href=".uno:SetMultiSelection"/>
- <accel:item accel:code="KEY_F8" xlink:href=".uno:SetExtSelection"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod2="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_ESCAPE" xlink:href=".uno:Escape"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" xlink:href=".uno:ShiftBackspace"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfParaSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfParaSel"/>
- <accel:item accel:code="KEY_F4" accel:shift="true" xlink:href=".uno:JumpToNextFrame"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" xlink:href=".uno:RestoreEditingView"/>
- <accel:item accel:code="KEY_PAGEUP" accel:mod1="true" xlink:href=".uno:JumpToHeader"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:mod1="true" xlink:href=".uno:JumpToFooter"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:JumpToFootnoteArea"/>
- <accel:item accel:code="KEY_I" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectTextMode"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Text body&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" accel:shift="true" xlink:href=".uno:StyleApply?Style:string=Standard&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_1" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 1&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_2" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 2&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_3" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 3&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_4" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 4&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_5" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 5&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_M" accel:mod1="true" xlink:href=".uno:ResetAttributes"/>
- <accel:item accel:code="KEY_J" accel:shift="true" accel:mod1="true" xlink:href=".uno:FullScreen"/>
- <accel:item accel:code="KEY_DIVIDE" accel:mod1="true" xlink:href=".uno:InsertZWSP"/>
- <accel:item accel:code="KEY_N" accel:mod1="true" accel:mod2="true" xlink:href=".uno:InsertAnnotation"/>
-</accel:acceleratorlist>
diff --git a/sw/uiconfig/swriter/menubar/menubar.xml b/sw/uiconfig/swriter/menubar/menubar.xml
index 7c44f84982a9..fb10ca615b50 100644
--- a/sw/uiconfig/swriter/menubar/menubar.xml
+++ b/sw/uiconfig/swriter/menubar/menubar.xml
@@ -1,460 +1,464 @@
<?xml version="1.0" encoding="UTF-8"?>
<menu:menubar xmlns:menu="http://openoffice.org/2001/menu" menu:id="menubar">
- <menu:menu menu:id=".uno:PickList">
+ <menu:menu menu:id=".uno:PickList">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:AddDirect"/>
+ <menu:menuitem menu:id=".uno:Open"/>
+ <menu:menuitem menu:id=".uno:RecentFileList"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:AutoPilotMenu"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:CloseDoc"/>
+ <menu:menuitem menu:id=".uno:Save"/>
+ <menu:menuitem menu:id=".uno:SaveAs"/>
+ <menu:menuitem menu:id=".uno:SaveAll"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Reload"/>
+ <menu:menuitem menu:id=".uno:VersionDialog"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ExportTo"/>
+ <menu:menuitem menu:id=".uno:ExportToPDF"/>
+ <menu:menu menu:id=".uno:SendToMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:AddDirect"/>
- <menu:menuitem menu:id=".uno:Open"/>
- <menu:menuitem menu:id=".uno:RecentFileList"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:AutoPilotMenu"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:CloseDoc"/>
- <menu:menuitem menu:id=".uno:Save"/>
- <menu:menuitem menu:id=".uno:SaveAs"/>
- <menu:menuitem menu:id=".uno:SaveAll"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:Reload"/>
- <menu:menuitem menu:id=".uno:VersionDialog"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ExportTo"/>
- <menu:menuitem menu:id=".uno:ExportToPDF"/>
- <menu:menu menu:id=".uno:SendToMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SendMail"/>
- <menu:menuitem menu:id=".uno:SendMailDocAsOOo"/>
- <menu:menuitem menu:id=".uno:SendMailDocAsMS"/>
- <menu:menuitem menu:id=".uno:SendMailDocAsPDF"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:NewGlobalDoc"/>
- <menu:menuitem menu:id=".uno:NewHtmlDoc"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:SendOutlineToStarImpress"/>
- <menu:menuitem menu:id=".uno:SendOutlineToClipboard"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:CreateAbstract"/>
- <menu:menuitem menu:id=".uno:SendAbstractToStarImpress"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:SetDocumentProperties"/>
- <menu:menuitem menu:id=".uno:Signature"/>
- <menu:menu menu:id=".uno:TemplateMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:Organizer"/>
- <menu:menuitem menu:id=".uno:AddressBookSource"/>
- <menu:menuitem menu:id=".uno:SaveAsTemplate"/>
- <menu:menuitem menu:id=".uno:OpenTemplate"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:WebHtml"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:PrintPreview"/>
- <menu:menuitem menu:id=".uno:Print"/>
- <menu:menuitem menu:id=".uno:PrinterSetup"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:Quit"/>
+ <menu:menuitem menu:id=".uno:SendMail"/>
+ <menu:menuitem menu:id=".uno:SendMailDocAsOOo"/>
+ <menu:menuitem menu:id=".uno:SendMailDocAsMS"/>
+ <menu:menuitem menu:id=".uno:SendMailDocAsPDF"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:NewGlobalDoc"/>
+ <menu:menuitem menu:id=".uno:NewHtmlDoc"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:SendOutlineToStarImpress"/>
+ <menu:menuitem menu:id=".uno:SendOutlineToClipboard"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:CreateAbstract"/>
+ <menu:menuitem menu:id=".uno:SendAbstractToStarImpress"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:EditMenu">
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:SetDocumentProperties"/>
+ <menu:menuitem menu:id=".uno:Signature"/>
+ <menu:menu menu:id=".uno:TemplateMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:Undo"/>
- <menu:menuitem menu:id=".uno:Redo"/>
- <menu:menuitem menu:id=".uno:Repeat"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:Cut"/>
- <menu:menuitem menu:id=".uno:Copy"/>
- <menu:menuitem menu:id=".uno:Paste"/>
- <menu:menuitem menu:id=".uno:PasteSpecial"/>
- <menu:menuitem menu:id=".uno:SelectTextMode"/>
- <menu:menu menu:id=".uno:SelectionModeMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SelectionModeDefault"/>
- <menu:menuitem menu:id=".uno:SelectionModeBlock"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:SelectAll"/>
- <menu:menuseparator/>
- <menu:menu menu:id=".uno:ChangesMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:TrackChanges"/>
- <menu:menuitem menu:id=".uno:ProtectTraceChangeMode"/>
- <menu:menuitem menu:id=".uno:ShowTrackedChanges"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:AcceptTrackedChanges"/>
- <menu:menuitem menu:id=".uno:CommentChangeTracking"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:MergeDocuments"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:CompareDocuments"/>
- <menu:menuitem menu:id=".uno:SearchDialog"/>
- <menu:menuitem menu:id=".uno:EditGlossary"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ChangeDatabaseField"/>
- <menu:menuitem menu:id=".uno:FieldDialog"/>
- <menu:menuitem menu:id=".uno:EditFootnote"/>
- <menu:menuitem menu:id=".uno:IndexEntryDialog"/>
- <menu:menuitem menu:id=".uno:AuthoritiesEntryDialog"/>
- <menu:menuitem menu:id=".uno:EditHyperlink"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:LinkDialog"/>
- <menu:menuitem menu:id=".uno:PlugInsActive"/>
- <menu:menuitem menu:id=".uno:ImageMapDialog"/>
- <menu:menuitem menu:id=".uno:ObjectMenue"/>
+ <menu:menuitem menu:id=".uno:Organizer"/>
+ <menu:menuitem menu:id=".uno:AddressBookSource"/>
+ <menu:menuitem menu:id=".uno:SaveAsTemplate"/>
+ <menu:menuitem menu:id=".uno:OpenTemplate"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:ViewMenu">
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:WebHtml"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:PrintPreview"/>
+ <menu:menuitem menu:id=".uno:Print"/>
+ <menu:menuitem menu:id=".uno:PrinterSetup"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Quit"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:EditMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:Undo"/>
+ <menu:menuitem menu:id=".uno:Redo"/>
+ <menu:menuitem menu:id=".uno:Repeat"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Cut"/>
+ <menu:menuitem menu:id=".uno:Copy"/>
+ <menu:menuitem menu:id=".uno:Paste"/>
+ <menu:menuitem menu:id=".uno:PasteSpecial"/>
+ <menu:menuitem menu:id=".uno:SelectTextMode"/>
+ <menu:menu menu:id=".uno:SelectionModeMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:PrintLayout"/>
- <menu:menuitem menu:id=".uno:BrowseView"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:AvailableToolbars"/>
- <menu:menuitem menu:id=".uno:StatusBarVisible"/>
- <menu:menuitem menu:id=".uno:ShowImeStatusWindow"/>
- <menu:menuitem menu:id=".uno:Ruler"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ViewBounds"/>
- <menu:menuitem menu:id=".uno:Marks"/>
- <menu:menuitem menu:id=".uno:Fieldnames"/>
- <menu:menuitem menu:id=".uno:ControlCodes"/>
- <menu:menuitem menu:id=".uno:ShowHiddenParagraphs"/>
- <menu:menuitem menu:id=".uno:ShowAnnotations"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ViewDataSourceBrowser"/>
- <menu:menuitem menu:id=".uno:Navigator"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:FullScreen"/>
- <menu:menuitem menu:id=".uno:Zoom"/>
+ <menu:menuitem menu:id=".uno:SelectionModeDefault" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:SelectionModeBlock" menu:style="radio"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:InsertMenu">
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:SelectAll"/>
+ <menu:menuseparator/>
+ <menu:menu menu:id=".uno:ChangesMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertBreak"/>
- <menu:menu menu:id=".uno:FieldMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertDateField"/>
- <menu:menuitem menu:id=".uno:InsertTimeField"/>
- <menu:menuitem menu:id=".uno:InsertPageNumberField"/>
- <menu:menuitem menu:id=".uno:InsertPageCountField"/>
- <menu:menuitem menu:id=".uno:InsertTopicField"/>
- <menu:menuitem menu:id=".uno:InsertTitleField"/>
- <menu:menuitem menu:id=".uno:InsertAuthorField"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:InsertField"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:InsertSymbol"/>
- <menu:menu menu:id=".uno:FormattingMarkMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertNonBreakingSpace"/>
- <menu:menuitem menu:id=".uno:InsertHardHyphen"/>
- <menu:menuitem menu:id=".uno:InsertSoftHyphen"/>
- <menu:menuitem menu:id=".uno:InsertZWSP"/>
- <menu:menuitem menu:id=".uno:InsertZWNBSP"/>
- <menu:menuitem menu:id=".uno:InsertLRM"/>
- <menu:menuitem menu:id=".uno:InsertRLM"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:InsertSection"/>
- <menu:menuitem menu:id=".uno:HyperlinkDialog"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:InsertPageHeader"/>
- <menu:menuitem menu:id=".uno:InsertPageFooter"/>
- <menu:menuitem menu:id=".uno:InsertFootnoteDialog"/>
- <menu:menuitem menu:id=".uno:InsertCaptionDialog"/>
- <menu:menuitem menu:id=".uno:InsertBookmark"/>
- <menu:menuitem menu:id=".uno:InsertReferenceField"/>
- <menu:menuitem menu:id=".uno:InsertAnnotation"/>
- <menu:menuitem menu:id=".uno:InsertScript"/>
- <menu:menu menu:id=".uno:IndexesMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertIndexesEntry"/>
- <menu:menuitem menu:id=".uno:InsertMultiIndex"/>
- <menu:menuitem menu:id=".uno:InsertAuthoritiesEntry"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:InsertEnvelope"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:InsertFrame"/>
- <menu:menuitem menu:id=".uno:InsertTable"/>
- <menu:menuitem menu:id=".uno:InsertGraphicRuler"/>
- <menu:menu menu:id=".uno:GraphicMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertGraphic"/>
- <menu:menu menu:id=".uno:Scan">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:TwainSelect"/>
- <menu:menuitem menu:id=".uno:TwainTransfer"/>
- </menu:menupopup>
- </menu:menu>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:InsertAVMedia"/>
- <menu:menu menu:id=".uno:ObjectMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertObject"/>
- <menu:menuitem menu:id=".uno:InsertPlugin"/>
- <menu:menuitem menu:id=".uno:InsertSound"/>
- <menu:menuitem menu:id=".uno:InsertVideo"/>
- <menu:menuitem menu:id=".uno:InsertObjectStarMath"/>
- <menu:menuitem menu:id=".uno:InsertObjectChart"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:InsertObjectFloatingFrame"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:InsertDoc"/>
+ <menu:menuitem menu:id=".uno:TrackChanges"/>
+ <menu:menuitem menu:id=".uno:ProtectTraceChangeMode"/>
+ <menu:menuitem menu:id=".uno:ShowTrackedChanges"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:AcceptTrackedChanges"/>
+ <menu:menuitem menu:id=".uno:CommentChangeTracking"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:MergeDocuments"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:FormatMenu">
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:CompareDocuments"/>
+ <menu:menuitem menu:id=".uno:SearchDialog"/>
+ <menu:menuitem menu:id=".uno:EditGlossary"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ChangeDatabaseField"/>
+ <menu:menuitem menu:id=".uno:FieldDialog"/>
+ <menu:menuitem menu:id=".uno:EditFootnote"/>
+ <menu:menuitem menu:id=".uno:IndexEntryDialog"/>
+ <menu:menuitem menu:id=".uno:AuthoritiesEntryDialog"/>
+ <menu:menuitem menu:id=".uno:EditHyperlink"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:LinkDialog"/>
+ <menu:menuitem menu:id=".uno:PlugInsActive"/>
+ <menu:menuitem menu:id=".uno:ImageMapDialog"/>
+ <menu:menuitem menu:id=".uno:ObjectMenue"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:ViewMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:PrintLayout"/>
+ <menu:menuitem menu:id=".uno:BrowseView"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:AvailableToolbars"/>
+ <menu:menuitem menu:id=".uno:StatusBarVisible"/>
+ <menu:menuitem menu:id=".uno:ShowImeStatusWindow"/>
+ <menu:menuitem menu:id=".uno:Ruler"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ViewBounds"/>
+ <menu:menuitem menu:id=".uno:Marks"/>
+ <menu:menuitem menu:id=".uno:Fieldnames"/>
+ <menu:menuitem menu:id=".uno:ControlCodes"/>
+ <menu:menuitem menu:id=".uno:ShowHiddenParagraphs"/>
+ <menu:menuitem menu:id=".uno:ShowAnnotations"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ViewDataSourceBrowser"/>
+ <menu:menuitem menu:id=".uno:Navigator"/>
+ <menu:menuitem menu:id=".uno:TaskPane"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:FullScreen"/>
+ <menu:menuitem menu:id=".uno:Zoom"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:InsertMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:InsertBreak"/>
+ <menu:menu menu:id=".uno:FieldMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:ResetAttributes"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:FontDialog"/>
- <menu:menuitem menu:id=".uno:ParagraphDialog"/>
- <menu:menuitem menu:id=".uno:BulletsAndNumberingDialog"/>
- <menu:menuitem menu:id=".uno:PageDialog"/>
- <menu:menuseparator/>
- <menu:menu menu:id=".uno:TransliterateMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:ChangeCaseToUpper"/>
- <menu:menuitem menu:id=".uno:ChangeCaseToLower"/>
- <menu:menuitem menu:id=".uno:ChangeCaseToHalfWidth"/>
- <menu:menuitem menu:id=".uno:ChangeCaseToFullWidth"/>
- <menu:menuitem menu:id=".uno:ChangeCaseToHiragana"/>
- <menu:menuitem menu:id=".uno:ChangeCaseToKatakana"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:RubyDialog"/>
- <menu:menuitem menu:id=".uno:FormatColumns"/>
- <menu:menuitem menu:id=".uno:EditRegion"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:DesignerDialog"/>
- <menu:menu menu:id=".uno:AutoFormatMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:OnlineAutoFormat"/>
- <menu:menuitem menu:id=".uno:AutoFormatApply"/>
- <menu:menuitem menu:id=".uno:AutoFormatRedlineApply"/>
- <menu:menuitem menu:id=".uno:AutoCorrectDlg"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menu menu:id=".uno:AnchorMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SetAnchorToPage"/>
- <menu:menuitem menu:id=".uno:SetAnchorToPara"/>
- <menu:menuitem menu:id=".uno:SetAnchorAtChar"/>
- <menu:menuitem menu:id=".uno:SetAnchorToChar"/>
- <menu:menuitem menu:id=".uno:SetAnchorToFrame"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:WrapMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:WrapOff"/>
- <menu:menuitem menu:id=".uno:WrapOn"/>
- <menu:menuitem menu:id=".uno:WrapIdeal"/>
- <menu:menuitem menu:id=".uno:WrapThrough"/>
- <menu:menuitem menu:id=".uno:WrapThroughTransparent"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:WrapContour"/>
- <menu:menuitem menu:id=".uno:ContourDialog"/>
- <menu:menuitem menu:id=".uno:WrapAnchorOnly"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:TextWrap"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:ObjectAlign">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:CommonAlignLeft"/>
- <menu:menuitem menu:id=".uno:CommonAlignHorizontalCenter"/>
- <menu:menuitem menu:id=".uno:CommonAlignRight"/>
- <menu:menuitem menu:id=".uno:CommonAlignJustified"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:CommonAlignTop"/>
- <menu:menuitem menu:id=".uno:CommonAlignVerticalCenter"/>
- <menu:menuitem menu:id=".uno:CommonAlignBottom"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:ArrangeMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:BringToFront"/>
- <menu:menuitem menu:id=".uno:ObjectForwardOne"/>
- <menu:menuitem menu:id=".uno:ObjectBackOne"/>
- <menu:menuitem menu:id=".uno:SendToBack"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:SetObjectToForeground"/>
- <menu:menuitem menu:id=".uno:SetObjectToBackground"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:FlipMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:FlipHorizontal"/>
- <menu:menuitem menu:id=".uno:FlipVertical"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:GroupMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:FormatGroup"/>
- <menu:menuitem menu:id=".uno:FormatUngroup"/>
- <menu:menuitem menu:id=".uno:EnterGroup"/>
- <menu:menuitem menu:id=".uno:LeaveGroup"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menu menu:id=".uno:ObjectMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:TransformDialog"/>
- <menu:menuitem menu:id=".uno:FormatLine"/>
- <menu:menuitem menu:id=".uno:FormatArea"/>
- <menu:menuitem menu:id=".uno:TextAttributes"/>
- <menu:menuitem menu:id=".uno:FontWork"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ObjectTitleDescription"/>
- <menu:menuitem menu:id=".uno:NameGroup"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:FrameDialog"/>
- <menu:menuitem menu:id=".uno:GraphicDialog"/>
+ <menu:menuitem menu:id=".uno:InsertDateField"/>
+ <menu:menuitem menu:id=".uno:InsertTimeField"/>
+ <menu:menuitem menu:id=".uno:InsertPageNumberField"/>
+ <menu:menuitem menu:id=".uno:InsertPageCountField"/>
+ <menu:menuitem menu:id=".uno:InsertTopicField"/>
+ <menu:menuitem menu:id=".uno:InsertTitleField"/>
+ <menu:menuitem menu:id=".uno:InsertAuthorField"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertField"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:TableMenu">
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:InsertSymbol"/>
+ <menu:menu menu:id=".uno:FormattingMarkMenu">
<menu:menupopup>
- <menu:menu menu:id=".uno:TableInsertMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertTable"/>
- <menu:menuitem menu:id=".uno:InsertRowDialog"/>
- <menu:menuitem menu:id=".uno:InsertColumnDialog"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:TableDeleteMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:DeleteTable"/>
- <menu:menuitem menu:id=".uno:DeleteRows"/>
- <menu:menuitem menu:id=".uno:DeleteColumns"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:TableSelectMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SelectTable"/>
- <menu:menuitem menu:id=".uno:EntireRow"/>
- <menu:menuitem menu:id=".uno:EntireColumn"/>
- <menu:menuitem menu:id=".uno:EntireCell"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:MergeCells"/>
- <menu:menuitem menu:id=".uno:SplitCell"/>
- <menu:menuitem menu:id=".uno:Protect"/>
- <menu:menuitem menu:id=".uno:MergeTable"/>
- <menu:menuitem menu:id=".uno:SplitTable"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:AutoFormat"/>
- <menu:menu menu:id=".uno:TableAutoFitMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SetColumnWidth"/>
- <menu:menuitem menu:id=".uno:SetOptimalColumnWidth"/>
- <menu:menuitem menu:id=".uno:DistributeColumns"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:SetRowHeight"/>
- <menu:menuitem menu:id=".uno:SetOptimalRowHeight"/>
- <menu:menuitem menu:id=".uno:DistributeRows"/>
- <menu:menuitem menu:id=".uno:RowSplit"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:HeadingRowsRepeat"/>
- <menu:menu menu:id=".uno:TableConvertMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:ConvertTextToTable"/>
- <menu:menuitem menu:id=".uno:ConvertTableToText"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:TableSort"/>
- <menu:menuitem menu:id=".uno:InsertFormula"/>
- <menu:menuitem menu:id=".uno:TableNumberFormatDialog"/>
- <menu:menuitem menu:id=".uno:TableBoundaries"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:TableDialog"/>
+ <menu:menuitem menu:id=".uno:InsertNonBreakingSpace"/>
+ <menu:menuitem menu:id=".uno:InsertHardHyphen"/>
+ <menu:menuitem menu:id=".uno:InsertSoftHyphen"/>
+ <menu:menuitem menu:id=".uno:InsertZWSP"/>
+ <menu:menuitem menu:id=".uno:InsertZWNBSP"/>
+ <menu:menuitem menu:id=".uno:InsertLRM"/>
+ <menu:menuitem menu:id=".uno:InsertRLM"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:ToolsMenu">
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertSection"/>
+ <menu:menuitem menu:id=".uno:HyperlinkDialog"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertPageHeader"/>
+ <menu:menuitem menu:id=".uno:InsertPageFooter"/>
+ <menu:menuitem menu:id=".uno:InsertFootnoteDialog"/>
+ <menu:menuitem menu:id=".uno:InsertCaptionDialog"/>
+ <menu:menuitem menu:id=".uno:InsertBookmark"/>
+ <menu:menuitem menu:id=".uno:InsertReferenceField"/>
+ <menu:menuitem menu:id=".uno:InsertAnnotation"/>
+ <menu:menuitem menu:id=".uno:InsertScript"/>
+ <menu:menu menu:id=".uno:IndexesMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:SpellingAndGrammarDialog"/>
- <menu:menu menu:id=".uno:LanguageMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SetLanguageSelectionMenu"/>
- <menu:menuitem menu:id=".uno:SetLanguageParagraphMenu"/>
- <menu:menuitem menu:id=".uno:SetLanguageAllTextMenu"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:HangulHanjaConversion"/>
- <menu:menuitem menu:id=".uno:ChineseConversion"/>
- <menu:menuitem menu:id=".uno:ThesaurusDialog"/>
- <menu:menuitem menu:id=".uno:Hyphenate"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:MoreDictionaries"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:WordCountDialog"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ChapterNumberingDialog"/>
- <menu:menuitem menu:id=".uno:LineNumberingDialog"/>
- <menu:menuitem menu:id=".uno:FootnoteDialog"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:Gallery"/>
- <menu:menuitem menu:id=".uno:AVMediaPlayer"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:BibliographyComponent"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:MailMergeWizard"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:SortDialog"/>
- <menu:menuitem menu:id=".uno:CalculateSel"/>
- <menu:menu menu:id=".uno:UpdateMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:UpdateAll"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:UpdateFields"/>
- <menu:menuitem menu:id=".uno:UpdateAllLinks"/>
- <menu:menuitem menu:id=".uno:UpdateCharts"/>
- <menu:menuitem menu:id=".uno:UpdateCurIndex"/>
- <menu:menuitem menu:id=".uno:UpdateAllIndexes"/>
- <menu:menuitem menu:id=".uno:Repaginate"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menu menu:id=".uno:MacrosMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:MacroRecorder"/>
- <menu:menuitem menu:id=".uno:RunMacro"/>
- <menu:menu menu:id=".uno:ScriptOrganizer"/>
- <menu:menuitem menu:id=".uno:MacroSignature"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:MacroOrganizer?TabId:short=1"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id="service:com.sun.star.deployment.ui.PackageManagerDialog"/>
- <menu:menuitem menu:id=".uno:OpenXMLFilterSettings"/>
- <menu:menuitem menu:id=".uno:AutoCorrectDlg"/>
- <menu:menuitem menu:id=".uno:ConfigureDialog"/>
- <menu:menuitem menu:id=".uno:OptionsTreeDialog"/>
+ <menu:menuitem menu:id=".uno:InsertIndexesEntry"/>
+ <menu:menuitem menu:id=".uno:InsertMultiIndex"/>
+ <menu:menuitem menu:id=".uno:InsertAuthoritiesEntry"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:WindowList">
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertEnvelope"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertFrame"/>
+ <menu:menuitem menu:id=".uno:InsertTable"/>
+ <menu:menuitem menu:id=".uno:InsertGraphicRuler"/>
+ <menu:menu menu:id=".uno:GraphicMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:NewWindow"/>
- <menu:menuitem menu:id=".uno:CloseWin"/>
- <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertGraphic"/>
+ <menu:menu menu:id=".uno:Scan">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:TwainSelect"/>
+ <menu:menuitem menu:id=".uno:TwainTransfer"/>
+ </menu:menupopup>
+ </menu:menu>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:HelpMenu">
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:InsertAVMedia"/>
+ <menu:menu menu:id=".uno:ObjectMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:HelpIndex"/>
- <menu:menuitem menu:id=".uno:ExtendedHelp"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:HelpSupport"/>
- <menu:menuitem menu:id=".uno:OnlineRegistrationDlg"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:About"/>
+ <menu:menuitem menu:id=".uno:InsertObject"/>
+ <menu:menuitem menu:id=".uno:InsertPlugin"/>
+ <menu:menuitem menu:id=".uno:InsertSound"/>
+ <menu:menuitem menu:id=".uno:InsertVideo"/>
+ <menu:menuitem menu:id=".uno:InsertObjectStarMath"/>
+ <menu:menuitem menu:id=".uno:InsertObjectChart"/>
</menu:menupopup>
- </menu:menu>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:InsertObjectFloatingFrame"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertDoc"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:FormatMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:ResetAttributes"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:FontDialog"/>
+ <menu:menuitem menu:id=".uno:ParagraphDialog"/>
+ <menu:menuitem menu:id=".uno:BulletsAndNumberingDialog"/>
+ <menu:menuitem menu:id=".uno:PageDialog"/>
+ <menu:menuseparator/>
+ <menu:menu menu:id=".uno:TransliterateMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:ChangeCaseToSentenceCase"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToLower"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToUpper"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToTitleCase"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToToggleCase"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToHalfWidth"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToFullWidth"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToHiragana"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToKatakana"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:RubyDialog"/>
+ <menu:menuitem menu:id=".uno:FormatColumns"/>
+ <menu:menuitem menu:id=".uno:EditRegion"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:DesignerDialog"/>
+ <menu:menu menu:id=".uno:AutoFormatMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:OnlineAutoFormat"/>
+ <menu:menuitem menu:id=".uno:AutoFormatApply"/>
+ <menu:menuitem menu:id=".uno:AutoFormatRedlineApply"/>
+ <menu:menuitem menu:id=".uno:AutoCorrectDlg"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menu menu:id=".uno:AnchorMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:SetAnchorToPage" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:SetAnchorToPara" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:SetAnchorAtChar" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:SetAnchorToChar" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:SetAnchorToFrame" menu:style="radio"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:WrapMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:WrapOff"/>
+ <menu:menuitem menu:id=".uno:WrapOn"/>
+ <menu:menuitem menu:id=".uno:WrapIdeal"/>
+ <menu:menuitem menu:id=".uno:WrapThrough"/>
+ <menu:menuitem menu:id=".uno:WrapThroughTransparent"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:WrapContour"/>
+ <menu:menuitem menu:id=".uno:ContourDialog"/>
+ <menu:menuitem menu:id=".uno:WrapAnchorOnly"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:TextWrap"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:ObjectAlign">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:CommonAlignLeft" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:CommonAlignHorizontalCenter" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:CommonAlignRight" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:CommonAlignJustified" menu:style="radio"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:CommonAlignTop"/>
+ <menu:menuitem menu:id=".uno:CommonAlignVerticalCenter"/>
+ <menu:menuitem menu:id=".uno:CommonAlignBottom"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:ArrangeMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:BringToFront"/>
+ <menu:menuitem menu:id=".uno:ObjectForwardOne"/>
+ <menu:menuitem menu:id=".uno:ObjectBackOne"/>
+ <menu:menuitem menu:id=".uno:SendToBack"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:SetObjectToForeground"/>
+ <menu:menuitem menu:id=".uno:SetObjectToBackground"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:FlipMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:FlipHorizontal"/>
+ <menu:menuitem menu:id=".uno:FlipVertical"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:GroupMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:FormatGroup"/>
+ <menu:menuitem menu:id=".uno:FormatUngroup"/>
+ <menu:menuitem menu:id=".uno:EnterGroup"/>
+ <menu:menuitem menu:id=".uno:LeaveGroup"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menu menu:id=".uno:ObjectMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:TransformDialog"/>
+ <menu:menuitem menu:id=".uno:FormatLine"/>
+ <menu:menuitem menu:id=".uno:FormatArea"/>
+ <menu:menuitem menu:id=".uno:TextAttributes"/>
+ <menu:menuitem menu:id=".uno:FontWork"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ObjectTitleDescription"/>
+ <menu:menuitem menu:id=".uno:NameGroup"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:FrameDialog"/>
+ <menu:menuitem menu:id=".uno:GraphicDialog"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:TableMenu">
+ <menu:menupopup>
+ <menu:menu menu:id=".uno:TableInsertMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:InsertTable"/>
+ <menu:menuitem menu:id=".uno:InsertRowDialog"/>
+ <menu:menuitem menu:id=".uno:InsertColumnDialog"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:TableDeleteMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:DeleteTable"/>
+ <menu:menuitem menu:id=".uno:DeleteRows"/>
+ <menu:menuitem menu:id=".uno:DeleteColumns"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:TableSelectMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:SelectTable"/>
+ <menu:menuitem menu:id=".uno:EntireRow"/>
+ <menu:menuitem menu:id=".uno:EntireColumn"/>
+ <menu:menuitem menu:id=".uno:EntireCell"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:MergeCells"/>
+ <menu:menuitem menu:id=".uno:SplitCell"/>
+ <menu:menuitem menu:id=".uno:Protect"/>
+ <menu:menuitem menu:id=".uno:MergeTable"/>
+ <menu:menuitem menu:id=".uno:SplitTable"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:AutoFormat"/>
+ <menu:menu menu:id=".uno:TableAutoFitMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:SetColumnWidth"/>
+ <menu:menuitem menu:id=".uno:SetOptimalColumnWidth"/>
+ <menu:menuitem menu:id=".uno:DistributeColumns"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:SetRowHeight"/>
+ <menu:menuitem menu:id=".uno:SetOptimalRowHeight"/>
+ <menu:menuitem menu:id=".uno:DistributeRows"/>
+ <menu:menuitem menu:id=".uno:RowSplit"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:HeadingRowsRepeat"/>
+ <menu:menu menu:id=".uno:TableConvertMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:ConvertTextToTable"/>
+ <menu:menuitem menu:id=".uno:ConvertTableToText"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:TableSort"/>
+ <menu:menuitem menu:id=".uno:InsertFormula"/>
+ <menu:menuitem menu:id=".uno:TableNumberFormatDialog"/>
+ <menu:menuitem menu:id=".uno:TableBoundaries"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:TableDialog"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:ToolsMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:SpellingAndGrammarDialog"/>
+ <menu:menu menu:id=".uno:LanguageMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:SetLanguageSelectionMenu"/>
+ <menu:menuitem menu:id=".uno:SetLanguageParagraphMenu"/>
+ <menu:menuitem menu:id=".uno:SetLanguageAllTextMenu"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:HangulHanjaConversion"/>
+ <menu:menuitem menu:id=".uno:ChineseConversion"/>
+ <menu:menuitem menu:id=".uno:ThesaurusDialog"/>
+ <menu:menuitem menu:id=".uno:Hyphenate"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:MoreDictionaries"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:WordCountDialog"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ChapterNumberingDialog"/>
+ <menu:menuitem menu:id=".uno:LineNumberingDialog"/>
+ <menu:menuitem menu:id=".uno:FootnoteDialog"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Gallery"/>
+ <menu:menuitem menu:id=".uno:AVMediaPlayer"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:BibliographyComponent"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:MailMergeWizard"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:SortDialog"/>
+ <menu:menuitem menu:id=".uno:CalculateSel"/>
+ <menu:menu menu:id=".uno:UpdateMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:UpdateAll"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:UpdateFields"/>
+ <menu:menuitem menu:id=".uno:UpdateAllLinks"/>
+ <menu:menuitem menu:id=".uno:UpdateCharts"/>
+ <menu:menuitem menu:id=".uno:UpdateCurIndex"/>
+ <menu:menuitem menu:id=".uno:UpdateAllIndexes"/>
+ <menu:menuitem menu:id=".uno:Repaginate"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menu menu:id=".uno:MacrosMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:MacroRecorder"/>
+ <menu:menuitem menu:id=".uno:RunMacro"/>
+ <menu:menu menu:id=".uno:ScriptOrganizer"/>
+ <menu:menuitem menu:id=".uno:MacroSignature"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:MacroOrganizer?TabId:short=1"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="service:com.sun.star.deployment.ui.PackageManagerDialog"/>
+ <menu:menuitem menu:id=".uno:OpenXMLFilterSettings"/>
+ <menu:menuitem menu:id=".uno:AutoCorrectDlg"/>
+ <menu:menuitem menu:id=".uno:ConfigureDialog"/>
+ <menu:menuitem menu:id=".uno:OptionsTreeDialog"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:WindowList">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:NewWindow"/>
+ <menu:menuitem menu:id=".uno:CloseWin"/>
+ <menu:menuseparator/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:HelpMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:HelpIndex"/>
+ <menu:menuitem menu:id=".uno:ExtendedHelp"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:HelpSupport"/>
+ <menu:menuitem menu:id=".uno:OnlineRegistrationDlg"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:About"/>
+ </menu:menupopup>
+ </menu:menu>
</menu:menubar>
diff --git a/sw/uiconfig/swriter/toolbar/extrusionobjectbar.xml b/sw/uiconfig/swriter/toolbar/extrusionobjectbar.xml
index 1f212226cf52..148849db6ee7 100644
--- a/sw/uiconfig/swriter/toolbar/extrusionobjectbar.xml
+++ b/sw/uiconfig/swriter/toolbar/extrusionobjectbar.xml
@@ -8,9 +8,9 @@
<toolbar:toolbaritem xlink:href=".uno:ExtrusionTiltLeft" toolbar:helpid="10963"/>
<toolbar:toolbaritem xlink:href=".uno:ExtrusionTiltRight" toolbar:helpid="10964"/>
<toolbar:toolbarseparator/>
- <toolbar:toolbaritem xlink:href=".uno:ExtrusionDepthFloater" toolbar:helpid="10965"/>
- <toolbar:toolbaritem xlink:href=".uno:ExtrusionDirectionFloater" toolbar:helpid="10966"/>
- <toolbar:toolbaritem xlink:href=".uno:ExtrusionLightingFloater" toolbar:helpid="10967"/>
- <toolbar:toolbaritem xlink:href=".uno:ExtrusionSurfaceFloater" toolbar:helpid="10968"/>
- <toolbar:toolbaritem xlink:href=".uno:Extrusion3DColor" toolbar:helpid="10969"/>
+ <toolbar:toolbaritem xlink:href=".uno:ExtrusionDepthFloater" toolbar:helpid="10965" toolbar:style="dropdownonly"/>
+ <toolbar:toolbaritem xlink:href=".uno:ExtrusionDirectionFloater" toolbar:helpid="10966" toolbar:style="dropdownonly"/>
+ <toolbar:toolbaritem xlink:href=".uno:ExtrusionLightingFloater" toolbar:helpid="10967" toolbar:style="dropdownonly"/>
+ <toolbar:toolbaritem xlink:href=".uno:ExtrusionSurfaceFloater" toolbar:helpid="10968" toolbar:style="dropdownonly"/>
+ <toolbar:toolbaritem xlink:href=".uno:Extrusion3DColor" toolbar:helpid="10969" toolbar:style="dropdownonly"/>
</toolbar:toolbar> \ No newline at end of file
diff --git a/sw/uiconfig/swriter/toolbar/findbar.xml b/sw/uiconfig/swriter/toolbar/findbar.xml
new file mode 100644
index 000000000000..9ef9d8a1a78f
--- /dev/null
+++ b/sw/uiconfig/swriter/toolbar/findbar.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE toolbar:toolbar PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "toolbar.dtd">
+<toolbar:toolbar xmlns:toolbar="http://openoffice.org/2001/toolbar" xmlns:xlink="http://www.w3.org/1999/xlink" toolbar:id="toolbar">
+ <toolbar:toolbaritem xlink:href=".uno:FindText" toolbar:helpid="helpid:100105" />
+ <toolbar:toolbaritem xlink:href=".uno:DownSearch" toolbar:helpid="helpid:100105" />
+ <toolbar:toolbaritem xlink:href=".uno:UpSearch" toolbar:helpid="helpid:100105" />
+ <toolbar:toolbaritem xlink:href=".uno:SearchDialog" toolbar:text="Find &amp; Replace" toolbar:visible="false" toolbar:helpid="helpid:100105"/>
+</toolbar:toolbar>
diff --git a/sw/uiconfig/swriter/toolbar/fontworkobjectbar.xml b/sw/uiconfig/swriter/toolbar/fontworkobjectbar.xml
index 3ac334e0e920..5219a1e235e9 100644
--- a/sw/uiconfig/swriter/toolbar/fontworkobjectbar.xml
+++ b/sw/uiconfig/swriter/toolbar/fontworkobjectbar.xml
@@ -3,9 +3,9 @@
<toolbar:toolbar xmlns:toolbar="http://openoffice.org/2001/toolbar" xmlns:xlink="http://www.w3.org/1999/xlink" toolbar:id="toolbar">
<toolbar:toolbaritem xlink:href=".uno:FontworkGalleryFloater" toolbar:helpid="helpid:10977" />
<toolbar:toolbarseparator/>
- <toolbar:toolbaritem xlink:href=".uno:FontworkShapeType" toolbar:helpid="helpid:10978" toolbar:style="radio dropdown" />
+ <toolbar:toolbaritem xlink:href=".uno:FontworkShapeType" toolbar:helpid="helpid:10978" toolbar:style="dropdownonly" />
<toolbar:toolbaritem xlink:href=".uno:FontworkSameLetterHeights" toolbar:helpid="helpid:10979" />
<toolbar:toolbarseparator/>
- <toolbar:toolbaritem xlink:href=".uno:FontworkAlignmentFloater" toolbar:helpid="helpid:10981" toolbar:style="dropdown" />
- <toolbar:toolbaritem xlink:href=".uno:FontworkCharacterSpacingFloater" toolbar:helpid="helpid:10982" toolbar:style="dropdown" />
+ <toolbar:toolbaritem xlink:href=".uno:FontworkAlignmentFloater" toolbar:helpid="helpid:10981" toolbar:style="dropdownonly" />
+ <toolbar:toolbaritem xlink:href=".uno:FontworkCharacterSpacingFloater" toolbar:helpid="helpid:10982" toolbar:style="dropdownonly" />
</toolbar:toolbar> \ No newline at end of file
diff --git a/sw/uiconfig/swxform/accelerator/de/default.xml b/sw/uiconfig/swxform/accelerator/de/default.xml
deleted file mode 100644
index 875c95ef26d2..000000000000
--- a/sw/uiconfig/swxform/accelerator/de/default.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
- <accel:item accel:code="KEY_F11" xlink:href=".uno:DesignerDialog"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" xlink:href=".uno:StyleNewByExample"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" accel:mod1="true" xlink:href=".uno:StyleUpdateByExample"/>
- <accel:item accel:code="KEY_F11" accel:mod1="true" xlink:href=".uno:ActivateStyleApply"/>
- <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href=".uno:Redo"/>
- <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_UNDO" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_REPEAT" xlink:href=".uno:Repeat"/>
- <accel:item accel:code="KEY_K" accel:shift="true" accel:mod1="true" xlink:href=".uno:Italic"/>
- <accel:item accel:code="KEY_F" accel:shift="true" accel:mod1="true" xlink:href=".uno:Bold"/>
- <accel:item accel:code="KEY_U" accel:shift="true" accel:mod1="true" xlink:href=".uno:Underline"/>
- <accel:item accel:code="KEY_L" accel:mod1="true" xlink:href=".uno:LeftPara"/>
- <accel:item accel:code="KEY_R" accel:mod1="true" xlink:href=".uno:RightPara"/>
- <accel:item accel:code="KEY_E" accel:mod1="true" xlink:href=".uno:CenterPara"/>
- <accel:item accel:code="KEY_B" accel:mod1="true" xlink:href=".uno:JustifyPara"/>
- <accel:item accel:code="KEY_INSERT" xlink:href=".uno:InsertMode"/>
- <accel:item accel:code="KEY_F5" xlink:href=".uno:Navigator"/>
- <accel:item accel:code="KEY_A" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaLeftToRight"/>
- <accel:item accel:code="KEY_D" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaRightToLeft"/>
- <accel:item accel:code="KEY_V" accel:shift="true" accel:mod1="true" xlink:href=".uno:PasteSpecial"/>
- <accel:item accel:code="KEY_F9" xlink:href=".uno:UpdateFields"/>
- <accel:item accel:code="KEY_MULTIPLY" accel:mod1="true" xlink:href=".uno:ExecuteMacroField"/>
- <accel:item accel:code="KEY_F2" xlink:href=".uno:InsertFormula"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" xlink:href=".uno:Calc"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveUp"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" xlink:href=".uno:GoToPrevPara"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveDown"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" xlink:href=".uno:GoToNextPara"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveBullets"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" xlink:href=".uno:DefaultBullet"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" accel:mod1="true" xlink:href=".uno:UpdateInputFields"/>
- <accel:item accel:code="KEY_F12" xlink:href=".uno:DefaultNumbering"/>
- <accel:item accel:code="KEY_G" accel:mod1="true" xlink:href=".uno:RepeatSearch"/>
- <accel:item accel:code="KEY_R" accel:shift="true" accel:mod1="true" xlink:href=".uno:RefreshView"/>
- <accel:item accel:code="KEY_F10" accel:mod1="true" xlink:href=".uno:ControlCodes"/>
- <accel:item accel:code="KEY_F8" accel:mod1="true" xlink:href=".uno:Marks"/>
- <accel:item accel:code="KEY_F9" accel:mod1="true" xlink:href=".uno:Fieldnames"/>
- <accel:item accel:code="KEY_RETURN" xlink:href=".uno:InsertPara"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertColumnBreak"/>
- <accel:item accel:code="KEY_F2" accel:mod1="true" xlink:href=".uno:InsertField"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" xlink:href=".uno:InsertLinebreak"/>
- <accel:item accel:code="KEY_RETURN" accel:mod1="true" xlink:href=".uno:InsertPagebreak"/>
- <accel:item accel:code="KEY_F12" accel:mod1="true" xlink:href=".uno:InsertTable"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:mod1="true" xlink:href=".uno:InsertSoftHyphen"/>
- <accel:item accel:code="KEY_SPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertNonBreakingSpace"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertHardHyphen"/>
- <accel:item accel:code="KEY_D" accel:mod1="true" xlink:href=".uno:UnderlineDouble"/>
- <accel:item accel:code="KEY_H" accel:mod1="true" xlink:href=".uno:SuperScript"/>
- <accel:item accel:code="KEY_T" accel:mod1="true" xlink:href=".uno:SubScript"/>
- <accel:item accel:code="KEY_T" accel:shift="true" accel:mod1="true" xlink:href=".uno:ResetTableProtection"/>
- <accel:item accel:code="KEY_F7" accel:mod1="true" xlink:href=".uno:ThesaurusDialog"/>
- <accel:item accel:code="KEY_ADD" accel:mod1="true" xlink:href=".uno:CalculateSel"/>
- <accel:item accel:code="KEY_F3" accel:mod1="true" xlink:href=".uno:EditGlossary"/>
- <accel:item accel:code="KEY_F7" xlink:href=".uno:SpellingAndGrammarDialog"/>
- <accel:item accel:code="KEY_F3" xlink:href=".uno:ExpandGlossary"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" accel:mod1="true" xlink:href=".uno:GotoPage"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" xlink:href=".uno:CharLeftSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" xlink:href=".uno:CharRightSel"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" xlink:href=".uno:LineUpSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" xlink:href=".uno:LineDownSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" xlink:href=".uno:StartOfLineSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" xlink:href=".uno:EndOfLineSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfDocumentSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfDocumentSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordRightSel"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordLeftSel"/>
- <accel:item accel:code="KEY_PAGEUP" accel:shift="true" xlink:href=".uno:PageUpSel"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" xlink:href=".uno:PageDownSel"/>
- <accel:item accel:code="KEY_LEFT" xlink:href=".uno:GoLeft"/>
- <accel:item accel:code="KEY_RIGHT" xlink:href=".uno:GoRight"/>
- <accel:item accel:code="KEY_UP" xlink:href=".uno:GoUp"/>
- <accel:item accel:code="KEY_DOWN" xlink:href=".uno:GoDown"/>
- <accel:item accel:code="KEY_HOME" xlink:href=".uno:GoToStartOfLine"/>
- <accel:item accel:code="KEY_END" xlink:href=".uno:GoToEndOfLine"/>
- <accel:item accel:code="KEY_HOME" accel:mod1="true" xlink:href=".uno:GoToStartOfDoc"/>
- <accel:item accel:code="KEY_END" accel:mod1="true" xlink:href=".uno:GoToEndOfDoc"/>
- <accel:item accel:code="KEY_RIGHT" accel:mod1="true" xlink:href=".uno:GoToNextWord"/>
- <accel:item accel:code="KEY_LEFT" accel:mod1="true" xlink:href=".uno:GoToPrevWord"/>
- <accel:item accel:code="KEY_BACKSPACE" xlink:href=".uno:SwBackspace"/>
- <accel:item accel:code="KEY_DELETE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToEndOfSentence"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToStartOfSentence"/>
- <accel:item accel:code="KEY_DELETE" accel:mod1="true" xlink:href=".uno:DelToEndOfWord"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod1="true" xlink:href=".uno:DelToStartOfWord"/>
- <accel:item accel:code="KEY_PAGEUP" xlink:href=".uno:PageUp"/>
- <accel:item accel:code="KEY_PAGEDOWN" xlink:href=".uno:PageDown"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" xlink:href=".uno:SetMultiSelection"/>
- <accel:item accel:code="KEY_F8" xlink:href=".uno:SetExtSelection"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod2="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_ESCAPE" xlink:href=".uno:Escape"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" xlink:href=".uno:ShiftBackspace"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfParaSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfParaSel"/>
- <accel:item accel:code="KEY_F4" accel:shift="true" xlink:href=".uno:JumpToNextFrame"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" xlink:href=".uno:RestoreEditingView"/>
- <accel:item accel:code="KEY_PAGEUP" accel:mod1="true" xlink:href=".uno:JumpToHeader"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:mod1="true" xlink:href=".uno:JumpToFooter"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:JumpToFootnoteArea"/>
- <accel:item accel:code="KEY_I" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectTextMode"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Text body&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" accel:shift="true" xlink:href=".uno:StyleApply?Style:string=Standard&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_1" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 1&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_2" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 2&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_3" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 3&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_4" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 4&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_5" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 5&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_M" accel:mod1="true" xlink:href=".uno:ResetAttributes"/>
- <accel:item accel:code="KEY_J" accel:shift="true" accel:mod1="true" xlink:href=".uno:FullScreen"/>
- <accel:item accel:code="KEY_DIVIDE" accel:mod1="true" xlink:href=".uno:InsertZWSP"/>
- <accel:item accel:code="KEY_N" accel:mod1="true" accel:mod2="true" xlink:href=".uno:InsertAnnotation"/>
-</accel:acceleratorlist>
diff --git a/sw/uiconfig/swxform/accelerator/en-GB/default.xml b/sw/uiconfig/swxform/accelerator/en-GB/default.xml
deleted file mode 100644
index 83f88ade9dc1..000000000000
--- a/sw/uiconfig/swxform/accelerator/en-GB/default.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
- <accel:item accel:code="KEY_F11" xlink:href=".uno:DesignerDialog"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" xlink:href=".uno:StyleNewByExample"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" accel:mod1="true" xlink:href=".uno:StyleUpdateByExample"/>
- <accel:item accel:code="KEY_F11" accel:mod1="true" xlink:href=".uno:ActivateStyleApply"/>
- <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href=".uno:Redo"/>
- <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_UNDO" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_REPEAT" xlink:href=".uno:Repeat"/>
- <accel:item accel:code="KEY_I" accel:mod1="true" xlink:href=".uno:Italic"/>
- <accel:item accel:code="KEY_B" accel:mod1="true" xlink:href=".uno:Bold"/>
- <accel:item accel:code="KEY_U" accel:mod1="true" xlink:href=".uno:Underline"/>
- <accel:item accel:code="KEY_L" accel:mod1="true" xlink:href=".uno:LeftPara"/>
- <accel:item accel:code="KEY_R" accel:mod1="true" xlink:href=".uno:RightPara"/>
- <accel:item accel:code="KEY_E" accel:mod1="true" xlink:href=".uno:CenterPara"/>
- <accel:item accel:code="KEY_J" accel:mod1="true" xlink:href=".uno:JustifyPara"/>
- <accel:item accel:code="KEY_INSERT" xlink:href=".uno:InsertMode"/>
- <accel:item accel:code="KEY_F5" xlink:href=".uno:Navigator"/>
- <accel:item accel:code="KEY_A" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaLeftToRight"/>
- <accel:item accel:code="KEY_D" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaRightToLeft"/>
- <accel:item accel:code="KEY_V" accel:shift="true" accel:mod1="true" xlink:href=".uno:PasteSpecial"/>
- <accel:item accel:code="KEY_F9" xlink:href=".uno:UpdateFields"/>
- <accel:item accel:code="KEY_MULTIPLY" accel:mod1="true" xlink:href=".uno:ExecuteMacroField"/>
- <accel:item accel:code="KEY_F2" xlink:href=".uno:InsertFormula"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" xlink:href=".uno:Calc"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveUp"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" xlink:href=".uno:GoToPrevPara"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveDown"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" xlink:href=".uno:GoToNextPara"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveBullets"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" xlink:href=".uno:DefaultBullet"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" accel:mod1="true" xlink:href=".uno:UpdateInputFields"/>
- <accel:item accel:code="KEY_F12" xlink:href=".uno:DefaultNumbering"/>
- <accel:item accel:code="KEY_F" accel:shift="true" accel:mod1="true" xlink:href=".uno:RepeatSearch"/>
- <accel:item accel:code="KEY_R" accel:shift="true" accel:mod1="true" xlink:href=".uno:RefreshView"/>
- <accel:item accel:code="KEY_F10" accel:mod1="true" xlink:href=".uno:ControlCodes"/>
- <accel:item accel:code="KEY_F8" accel:mod1="true" xlink:href=".uno:Marks"/>
- <accel:item accel:code="KEY_F9" accel:mod1="true" xlink:href=".uno:Fieldnames"/>
- <accel:item accel:code="KEY_RETURN" xlink:href=".uno:InsertPara"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertColumnBreak"/>
- <accel:item accel:code="KEY_F2" accel:mod1="true" xlink:href=".uno:InsertField"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" xlink:href=".uno:InsertLinebreak"/>
- <accel:item accel:code="KEY_RETURN" accel:mod1="true" xlink:href=".uno:InsertPagebreak"/>
- <accel:item accel:code="KEY_F12" accel:mod1="true" xlink:href=".uno:InsertTable"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:mod1="true" xlink:href=".uno:InsertSoftHyphen"/>
- <accel:item accel:code="KEY_SPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertNonBreakingSpace"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertHardHyphen"/>
- <accel:item accel:code="KEY_D" accel:mod1="true" xlink:href=".uno:UnderlineDouble"/>
- <accel:item accel:code="KEY_P" accel:shift="true" accel:mod1="true" xlink:href=".uno:SuperScript"/>
- <accel:item accel:code="KEY_B" accel:shift="true" accel:mod1="true" xlink:href=".uno:SubScript"/>
- <accel:item accel:code="KEY_T" accel:shift="true" accel:mod1="true" xlink:href=".uno:ResetTableProtection"/>
- <accel:item accel:code="KEY_F7" accel:mod1="true" xlink:href=".uno:ThesaurusDialog"/>
- <accel:item accel:code="KEY_ADD" accel:mod1="true" xlink:href=".uno:CalculateSel"/>
- <accel:item accel:code="KEY_F3" accel:mod1="true" xlink:href=".uno:EditGlossary"/>
- <accel:item accel:code="KEY_F7" xlink:href=".uno:SpellingAndGrammarDialog"/>
- <accel:item accel:code="KEY_F3" xlink:href=".uno:ExpandGlossary"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" accel:mod1="true" xlink:href=".uno:GotoPage"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" xlink:href=".uno:CharLeftSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" xlink:href=".uno:CharRightSel"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" xlink:href=".uno:LineUpSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" xlink:href=".uno:LineDownSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" xlink:href=".uno:StartOfLineSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" xlink:href=".uno:EndOfLineSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfDocumentSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfDocumentSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordRightSel"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordLeftSel"/>
- <accel:item accel:code="KEY_PAGEUP" accel:shift="true" xlink:href=".uno:PageUpSel"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" xlink:href=".uno:PageDownSel"/>
- <accel:item accel:code="KEY_LEFT" xlink:href=".uno:GoLeft"/>
- <accel:item accel:code="KEY_RIGHT" xlink:href=".uno:GoRight"/>
- <accel:item accel:code="KEY_UP" xlink:href=".uno:GoUp"/>
- <accel:item accel:code="KEY_DOWN" xlink:href=".uno:GoDown"/>
- <accel:item accel:code="KEY_HOME" xlink:href=".uno:GoToStartOfLine"/>
- <accel:item accel:code="KEY_END" xlink:href=".uno:GoToEndOfLine"/>
- <accel:item accel:code="KEY_HOME" accel:mod1="true" xlink:href=".uno:GoToStartOfDoc"/>
- <accel:item accel:code="KEY_END" accel:mod1="true" xlink:href=".uno:GoToEndOfDoc"/>
- <accel:item accel:code="KEY_RIGHT" accel:mod1="true" xlink:href=".uno:GoToNextWord"/>
- <accel:item accel:code="KEY_LEFT" accel:mod1="true" xlink:href=".uno:GoToPrevWord"/>
- <accel:item accel:code="KEY_BACKSPACE" xlink:href=".uno:SwBackspace"/>
- <accel:item accel:code="KEY_DELETE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToEndOfSentence"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToStartOfSentence"/>
- <accel:item accel:code="KEY_DELETE" accel:mod1="true" xlink:href=".uno:DelToEndOfWord"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod1="true" xlink:href=".uno:DelToStartOfWord"/>
- <accel:item accel:code="KEY_PAGEUP" xlink:href=".uno:PageUp"/>
- <accel:item accel:code="KEY_PAGEDOWN" xlink:href=".uno:PageDown"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" xlink:href=".uno:SetMultiSelection"/>
- <accel:item accel:code="KEY_F8" xlink:href=".uno:SetExtSelection"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod2="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_ESCAPE" xlink:href=".uno:Escape"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" xlink:href=".uno:ShiftBackspace"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfParaSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfParaSel"/>
- <accel:item accel:code="KEY_F4" accel:shift="true" xlink:href=".uno:JumpToNextFrame"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" xlink:href=".uno:RestoreEditingView"/>
- <accel:item accel:code="KEY_PAGEUP" accel:mod1="true" xlink:href=".uno:JumpToHeader"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:mod1="true" xlink:href=".uno:JumpToFooter"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:JumpToFootnoteArea"/>
- <accel:item accel:code="KEY_I" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectTextMode"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Text body&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" accel:shift="true" xlink:href=".uno:StyleApply?Style:string=Standard&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_1" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 1&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_2" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 2&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_3" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 3&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_4" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 4&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_5" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 5&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_M" accel:mod1="true" xlink:href=".uno:ResetAttributes"/>
- <accel:item accel:code="KEY_J" accel:shift="true" accel:mod1="true" xlink:href=".uno:FullScreen"/>
- <accel:item accel:code="KEY_X" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveDirectCharFormats"/>
- <accel:item accel:code="KEY_DIVIDE" accel:mod1="true" xlink:href=".uno:InsertZWSP"/>
- <accel:item accel:code="KEY_C" accel:mod1="true" accel:mod2="true" xlink:href=".uno:InsertAnnotation"/>
-</accel:acceleratorlist>
diff --git a/sw/uiconfig/swxform/accelerator/en-US/default.xml b/sw/uiconfig/swxform/accelerator/en-US/default.xml
deleted file mode 100644
index 83f88ade9dc1..000000000000
--- a/sw/uiconfig/swxform/accelerator/en-US/default.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
- <accel:item accel:code="KEY_F11" xlink:href=".uno:DesignerDialog"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" xlink:href=".uno:StyleNewByExample"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" accel:mod1="true" xlink:href=".uno:StyleUpdateByExample"/>
- <accel:item accel:code="KEY_F11" accel:mod1="true" xlink:href=".uno:ActivateStyleApply"/>
- <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href=".uno:Redo"/>
- <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_UNDO" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_REPEAT" xlink:href=".uno:Repeat"/>
- <accel:item accel:code="KEY_I" accel:mod1="true" xlink:href=".uno:Italic"/>
- <accel:item accel:code="KEY_B" accel:mod1="true" xlink:href=".uno:Bold"/>
- <accel:item accel:code="KEY_U" accel:mod1="true" xlink:href=".uno:Underline"/>
- <accel:item accel:code="KEY_L" accel:mod1="true" xlink:href=".uno:LeftPara"/>
- <accel:item accel:code="KEY_R" accel:mod1="true" xlink:href=".uno:RightPara"/>
- <accel:item accel:code="KEY_E" accel:mod1="true" xlink:href=".uno:CenterPara"/>
- <accel:item accel:code="KEY_J" accel:mod1="true" xlink:href=".uno:JustifyPara"/>
- <accel:item accel:code="KEY_INSERT" xlink:href=".uno:InsertMode"/>
- <accel:item accel:code="KEY_F5" xlink:href=".uno:Navigator"/>
- <accel:item accel:code="KEY_A" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaLeftToRight"/>
- <accel:item accel:code="KEY_D" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaRightToLeft"/>
- <accel:item accel:code="KEY_V" accel:shift="true" accel:mod1="true" xlink:href=".uno:PasteSpecial"/>
- <accel:item accel:code="KEY_F9" xlink:href=".uno:UpdateFields"/>
- <accel:item accel:code="KEY_MULTIPLY" accel:mod1="true" xlink:href=".uno:ExecuteMacroField"/>
- <accel:item accel:code="KEY_F2" xlink:href=".uno:InsertFormula"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" xlink:href=".uno:Calc"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveUp"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" xlink:href=".uno:GoToPrevPara"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveDown"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" xlink:href=".uno:GoToNextPara"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveBullets"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" xlink:href=".uno:DefaultBullet"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" accel:mod1="true" xlink:href=".uno:UpdateInputFields"/>
- <accel:item accel:code="KEY_F12" xlink:href=".uno:DefaultNumbering"/>
- <accel:item accel:code="KEY_F" accel:shift="true" accel:mod1="true" xlink:href=".uno:RepeatSearch"/>
- <accel:item accel:code="KEY_R" accel:shift="true" accel:mod1="true" xlink:href=".uno:RefreshView"/>
- <accel:item accel:code="KEY_F10" accel:mod1="true" xlink:href=".uno:ControlCodes"/>
- <accel:item accel:code="KEY_F8" accel:mod1="true" xlink:href=".uno:Marks"/>
- <accel:item accel:code="KEY_F9" accel:mod1="true" xlink:href=".uno:Fieldnames"/>
- <accel:item accel:code="KEY_RETURN" xlink:href=".uno:InsertPara"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertColumnBreak"/>
- <accel:item accel:code="KEY_F2" accel:mod1="true" xlink:href=".uno:InsertField"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" xlink:href=".uno:InsertLinebreak"/>
- <accel:item accel:code="KEY_RETURN" accel:mod1="true" xlink:href=".uno:InsertPagebreak"/>
- <accel:item accel:code="KEY_F12" accel:mod1="true" xlink:href=".uno:InsertTable"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:mod1="true" xlink:href=".uno:InsertSoftHyphen"/>
- <accel:item accel:code="KEY_SPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertNonBreakingSpace"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertHardHyphen"/>
- <accel:item accel:code="KEY_D" accel:mod1="true" xlink:href=".uno:UnderlineDouble"/>
- <accel:item accel:code="KEY_P" accel:shift="true" accel:mod1="true" xlink:href=".uno:SuperScript"/>
- <accel:item accel:code="KEY_B" accel:shift="true" accel:mod1="true" xlink:href=".uno:SubScript"/>
- <accel:item accel:code="KEY_T" accel:shift="true" accel:mod1="true" xlink:href=".uno:ResetTableProtection"/>
- <accel:item accel:code="KEY_F7" accel:mod1="true" xlink:href=".uno:ThesaurusDialog"/>
- <accel:item accel:code="KEY_ADD" accel:mod1="true" xlink:href=".uno:CalculateSel"/>
- <accel:item accel:code="KEY_F3" accel:mod1="true" xlink:href=".uno:EditGlossary"/>
- <accel:item accel:code="KEY_F7" xlink:href=".uno:SpellingAndGrammarDialog"/>
- <accel:item accel:code="KEY_F3" xlink:href=".uno:ExpandGlossary"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" accel:mod1="true" xlink:href=".uno:GotoPage"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" xlink:href=".uno:CharLeftSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" xlink:href=".uno:CharRightSel"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" xlink:href=".uno:LineUpSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" xlink:href=".uno:LineDownSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" xlink:href=".uno:StartOfLineSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" xlink:href=".uno:EndOfLineSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfDocumentSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfDocumentSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordRightSel"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordLeftSel"/>
- <accel:item accel:code="KEY_PAGEUP" accel:shift="true" xlink:href=".uno:PageUpSel"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" xlink:href=".uno:PageDownSel"/>
- <accel:item accel:code="KEY_LEFT" xlink:href=".uno:GoLeft"/>
- <accel:item accel:code="KEY_RIGHT" xlink:href=".uno:GoRight"/>
- <accel:item accel:code="KEY_UP" xlink:href=".uno:GoUp"/>
- <accel:item accel:code="KEY_DOWN" xlink:href=".uno:GoDown"/>
- <accel:item accel:code="KEY_HOME" xlink:href=".uno:GoToStartOfLine"/>
- <accel:item accel:code="KEY_END" xlink:href=".uno:GoToEndOfLine"/>
- <accel:item accel:code="KEY_HOME" accel:mod1="true" xlink:href=".uno:GoToStartOfDoc"/>
- <accel:item accel:code="KEY_END" accel:mod1="true" xlink:href=".uno:GoToEndOfDoc"/>
- <accel:item accel:code="KEY_RIGHT" accel:mod1="true" xlink:href=".uno:GoToNextWord"/>
- <accel:item accel:code="KEY_LEFT" accel:mod1="true" xlink:href=".uno:GoToPrevWord"/>
- <accel:item accel:code="KEY_BACKSPACE" xlink:href=".uno:SwBackspace"/>
- <accel:item accel:code="KEY_DELETE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToEndOfSentence"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToStartOfSentence"/>
- <accel:item accel:code="KEY_DELETE" accel:mod1="true" xlink:href=".uno:DelToEndOfWord"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod1="true" xlink:href=".uno:DelToStartOfWord"/>
- <accel:item accel:code="KEY_PAGEUP" xlink:href=".uno:PageUp"/>
- <accel:item accel:code="KEY_PAGEDOWN" xlink:href=".uno:PageDown"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" xlink:href=".uno:SetMultiSelection"/>
- <accel:item accel:code="KEY_F8" xlink:href=".uno:SetExtSelection"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod2="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_ESCAPE" xlink:href=".uno:Escape"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" xlink:href=".uno:ShiftBackspace"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfParaSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfParaSel"/>
- <accel:item accel:code="KEY_F4" accel:shift="true" xlink:href=".uno:JumpToNextFrame"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" xlink:href=".uno:RestoreEditingView"/>
- <accel:item accel:code="KEY_PAGEUP" accel:mod1="true" xlink:href=".uno:JumpToHeader"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:mod1="true" xlink:href=".uno:JumpToFooter"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:JumpToFootnoteArea"/>
- <accel:item accel:code="KEY_I" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectTextMode"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Text body&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" accel:shift="true" xlink:href=".uno:StyleApply?Style:string=Standard&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_1" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 1&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_2" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 2&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_3" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 3&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_4" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 4&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_5" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 5&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_M" accel:mod1="true" xlink:href=".uno:ResetAttributes"/>
- <accel:item accel:code="KEY_J" accel:shift="true" accel:mod1="true" xlink:href=".uno:FullScreen"/>
- <accel:item accel:code="KEY_X" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveDirectCharFormats"/>
- <accel:item accel:code="KEY_DIVIDE" accel:mod1="true" xlink:href=".uno:InsertZWSP"/>
- <accel:item accel:code="KEY_C" accel:mod1="true" accel:mod2="true" xlink:href=".uno:InsertAnnotation"/>
-</accel:acceleratorlist>
diff --git a/sw/uiconfig/swxform/accelerator/es/default.xml b/sw/uiconfig/swxform/accelerator/es/default.xml
deleted file mode 100644
index 12f1aa3ab8cf..000000000000
--- a/sw/uiconfig/swxform/accelerator/es/default.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
- <accel:item accel:code="KEY_F11" xlink:href=".uno:DesignerDialog"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" xlink:href=".uno:StyleNewByExample"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" accel:mod1="true" xlink:href=".uno:StyleUpdateByExample"/>
- <accel:item accel:code="KEY_F11" accel:mod1="true" xlink:href=".uno:ActivateStyleApply"/>
- <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href=".uno:Redo"/>
- <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_UNDO" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_REPEAT" xlink:href=".uno:Repeat"/>
- <accel:item accel:code="KEY_K" accel:mod1="true" xlink:href=".uno:Italic"/>
- <accel:item accel:code="KEY_N" accel:mod1="true" xlink:href=".uno:Bold"/>
- <accel:item accel:code="KEY_S" accel:mod1="true" xlink:href=".uno:Underline"/>
- <accel:item accel:code="KEY_L" accel:mod1="true" xlink:href=".uno:LeftPara"/>
- <accel:item accel:code="KEY_R" accel:mod1="true" xlink:href=".uno:RightPara"/>
- <accel:item accel:code="KEY_T" accel:mod1="true" xlink:href=".uno:CenterPara"/>
- <accel:item accel:code="KEY_J" accel:mod1="true" xlink:href=".uno:JustifyPara"/>
- <accel:item accel:code="KEY_INSERT" xlink:href=".uno:InsertMode"/>
- <accel:item accel:code="KEY_F5" xlink:href=".uno:Navigator"/>
- <accel:item accel:code="KEY_A" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaLeftToRight"/>
- <accel:item accel:code="KEY_D" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaRightToLeft"/>
- <accel:item accel:code="KEY_V" accel:shift="true" accel:mod1="true" xlink:href=".uno:PasteSpecial"/>
- <accel:item accel:code="KEY_F9" xlink:href=".uno:UpdateFields"/>
- <accel:item accel:code="KEY_MULTIPLY" accel:mod1="true" xlink:href=".uno:ExecuteMacroField"/>
- <accel:item accel:code="KEY_F2" xlink:href=".uno:InsertFormula"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" xlink:href=".uno:Calc"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveUp"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" xlink:href=".uno:GoToPrevPara"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveDown"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" xlink:href=".uno:GoToNextPara"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveBullets"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" xlink:href=".uno:DefaultBullet"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" accel:mod1="true" xlink:href=".uno:UpdateInputFields"/>
- <accel:item accel:code="KEY_F12" xlink:href=".uno:DefaultNumbering"/>
- <accel:item accel:code="KEY_F" accel:shift="true" accel:mod1="true" xlink:href=".uno:RepeatSearch"/>
- <accel:item accel:code="KEY_R" accel:shift="true" accel:mod1="true" xlink:href=".uno:RefreshView"/>
- <accel:item accel:code="KEY_F10" accel:mod1="true" xlink:href=".uno:ControlCodes"/>
- <accel:item accel:code="KEY_F8" accel:mod1="true" xlink:href=".uno:Marks"/>
- <accel:item accel:code="KEY_F9" accel:mod1="true" xlink:href=".uno:Fieldnames"/>
- <accel:item accel:code="KEY_RETURN" xlink:href=".uno:InsertPara"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertColumnBreak"/>
- <accel:item accel:code="KEY_F2" accel:mod1="true" xlink:href=".uno:InsertField"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" xlink:href=".uno:InsertLinebreak"/>
- <accel:item accel:code="KEY_RETURN" accel:mod1="true" xlink:href=".uno:InsertPagebreak"/>
- <accel:item accel:code="KEY_F12" accel:mod1="true" xlink:href=".uno:InsertTable"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:mod1="true" xlink:href=".uno:InsertSoftHyphen"/>
- <accel:item accel:code="KEY_SPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertNonBreakingSpace"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertHardHyphen"/>
- <accel:item accel:code="KEY_D" accel:mod1="true" xlink:href=".uno:UnderlineDouble"/>
- <accel:item accel:code="KEY_P" accel:shift="true" accel:mod1="true" xlink:href=".uno:SuperScript"/>
- <accel:item accel:code="KEY_B" accel:shift="true" accel:mod1="true" xlink:href=".uno:SubScript"/>
- <accel:item accel:code="KEY_T" accel:shift="true" accel:mod1="true" xlink:href=".uno:ResetTableProtection"/>
- <accel:item accel:code="KEY_F7" accel:mod1="true" xlink:href=".uno:ThesaurusDialog"/>
- <accel:item accel:code="KEY_ADD" accel:mod1="true" xlink:href=".uno:CalculateSel"/>
- <accel:item accel:code="KEY_F3" accel:mod1="true" xlink:href=".uno:EditGlossary"/>
- <accel:item accel:code="KEY_F7" xlink:href=".uno:SpellingAndGrammarDialog"/>
- <accel:item accel:code="KEY_F3" xlink:href=".uno:ExpandGlossary"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" accel:mod1="true" xlink:href=".uno:GotoPage"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" xlink:href=".uno:CharLeftSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" xlink:href=".uno:CharRightSel"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" xlink:href=".uno:LineUpSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" xlink:href=".uno:LineDownSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" xlink:href=".uno:StartOfLineSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" xlink:href=".uno:EndOfLineSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfDocumentSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfDocumentSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordRightSel"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordLeftSel"/>
- <accel:item accel:code="KEY_PAGEUP" accel:shift="true" xlink:href=".uno:PageUpSel"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" xlink:href=".uno:PageDownSel"/>
- <accel:item accel:code="KEY_LEFT" xlink:href=".uno:GoLeft"/>
- <accel:item accel:code="KEY_RIGHT" xlink:href=".uno:GoRight"/>
- <accel:item accel:code="KEY_UP" xlink:href=".uno:GoUp"/>
- <accel:item accel:code="KEY_DOWN" xlink:href=".uno:GoDown"/>
- <accel:item accel:code="KEY_HOME" xlink:href=".uno:GoToStartOfLine"/>
- <accel:item accel:code="KEY_END" xlink:href=".uno:GoToEndOfLine"/>
- <accel:item accel:code="KEY_HOME" accel:mod1="true" xlink:href=".uno:GoToStartOfDoc"/>
- <accel:item accel:code="KEY_END" accel:mod1="true" xlink:href=".uno:GoToEndOfDoc"/>
- <accel:item accel:code="KEY_RIGHT" accel:mod1="true" xlink:href=".uno:GoToNextWord"/>
- <accel:item accel:code="KEY_LEFT" accel:mod1="true" xlink:href=".uno:GoToPrevWord"/>
- <accel:item accel:code="KEY_BACKSPACE" xlink:href=".uno:SwBackspace"/>
- <accel:item accel:code="KEY_DELETE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToEndOfSentence"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToStartOfSentence"/>
- <accel:item accel:code="KEY_DELETE" accel:mod1="true" xlink:href=".uno:DelToEndOfWord"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod1="true" xlink:href=".uno:DelToStartOfWord"/>
- <accel:item accel:code="KEY_PAGEUP" xlink:href=".uno:PageUp"/>
- <accel:item accel:code="KEY_PAGEDOWN" xlink:href=".uno:PageDown"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" xlink:href=".uno:SetMultiSelection"/>
- <accel:item accel:code="KEY_F8" xlink:href=".uno:SetExtSelection"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod2="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_ESCAPE" xlink:href=".uno:Escape"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" xlink:href=".uno:ShiftBackspace"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfParaSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfParaSel"/>
- <accel:item accel:code="KEY_F4" accel:shift="true" xlink:href=".uno:JumpToNextFrame"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" xlink:href=".uno:RestoreEditingView"/>
- <accel:item accel:code="KEY_PAGEUP" accel:mod1="true" xlink:href=".uno:JumpToHeader"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:mod1="true" xlink:href=".uno:JumpToFooter"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:JumpToFootnoteArea"/>
- <accel:item accel:code="KEY_I" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectTextMode"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Text body&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" accel:shift="true" xlink:href=".uno:StyleApply?Style:string=Standard&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_1" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 1&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_2" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 2&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_3" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 3&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_4" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 4&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_5" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 5&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_M" accel:mod1="true" xlink:href=".uno:ResetAttributes"/>
- <accel:item accel:code="KEY_J" accel:shift="true" accel:mod1="true" xlink:href=".uno:FullScreen"/>
- <accel:item accel:code="KEY_DIVIDE" accel:mod1="true" xlink:href=".uno:InsertZWSP"/>
- <accel:item accel:code="KEY_N" accel:mod1="true" accel:mod2="true" xlink:href=".uno:InsertAnnotation"/>
-</accel:acceleratorlist>
diff --git a/sw/uiconfig/swxform/accelerator/fr/default.xml b/sw/uiconfig/swxform/accelerator/fr/default.xml
deleted file mode 100644
index ac445d4a5a57..000000000000
--- a/sw/uiconfig/swxform/accelerator/fr/default.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
- <accel:item accel:code="KEY_F11" xlink:href=".uno:DesignerDialog"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" xlink:href=".uno:StyleNewByExample"/>
- <accel:item accel:code="KEY_F11" accel:shift="true" accel:mod1="true" xlink:href=".uno:StyleUpdateByExample"/>
- <accel:item accel:code="KEY_F11" accel:mod1="true" xlink:href=".uno:ActivateStyleApply"/>
- <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href=".uno:Redo"/>
- <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_UNDO" xlink:href=".uno:Undo"/>
- <accel:item accel:code="KEY_REPEAT" xlink:href=".uno:Repeat"/>
- <accel:item accel:code="KEY_I" accel:mod1="true" xlink:href=".uno:Italic"/>
- <accel:item accel:code="KEY_G" accel:mod1="true" xlink:href=".uno:Bold"/>
- <accel:item accel:code="KEY_U" accel:mod1="true" xlink:href=".uno:Underline"/>
- <accel:item accel:code="KEY_L" accel:mod1="true" xlink:href=".uno:LeftPara"/>
- <accel:item accel:code="KEY_R" accel:mod1="true" xlink:href=".uno:RightPara"/>
- <accel:item accel:code="KEY_E" accel:mod1="true" xlink:href=".uno:CenterPara"/>
- <accel:item accel:code="KEY_J" accel:mod1="true" xlink:href=".uno:JustifyPara"/>
- <accel:item accel:code="KEY_INSERT" xlink:href=".uno:InsertMode"/>
- <accel:item accel:code="KEY_F5" xlink:href=".uno:Navigator"/>
- <accel:item accel:code="KEY_A" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaLeftToRight"/>
- <accel:item accel:code="KEY_D" accel:shift="true" accel:mod1="true" xlink:href=".uno:ParaRightToLeft"/>
- <accel:item accel:code="KEY_V" accel:shift="true" accel:mod1="true" xlink:href=".uno:PasteSpecial"/>
- <accel:item accel:code="KEY_F9" xlink:href=".uno:UpdateFields"/>
- <accel:item accel:code="KEY_MULTIPLY" accel:mod1="true" xlink:href=".uno:ExecuteMacroField"/>
- <accel:item accel:code="KEY_F2" xlink:href=".uno:InsertFormula"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" xlink:href=".uno:Calc"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveUp"/>
- <accel:item accel:code="KEY_UP" accel:mod1="true" xlink:href=".uno:GoToPrevPara"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" accel:mod2="true" xlink:href=".uno:MoveDown"/>
- <accel:item accel:code="KEY_DOWN" accel:mod1="true" xlink:href=".uno:GoToNextPara"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" accel:mod1="true" xlink:href=".uno:RemoveBullets"/>
- <accel:item accel:code="KEY_F12" accel:shift="true" xlink:href=".uno:DefaultBullet"/>
- <accel:item accel:code="KEY_F9" accel:shift="true" accel:mod1="true" xlink:href=".uno:UpdateInputFields"/>
- <accel:item accel:code="KEY_F12" xlink:href=".uno:DefaultNumbering"/>
- <accel:item accel:code="KEY_F" accel:shift="true" accel:mod1="true" xlink:href=".uno:RepeatSearch"/>
- <accel:item accel:code="KEY_R" accel:shift="true" accel:mod1="true" xlink:href=".uno:RefreshView"/>
- <accel:item accel:code="KEY_F10" accel:mod1="true" xlink:href=".uno:ControlCodes"/>
- <accel:item accel:code="KEY_F8" accel:mod1="true" xlink:href=".uno:Marks"/>
- <accel:item accel:code="KEY_F9" accel:mod1="true" xlink:href=".uno:Fieldnames"/>
- <accel:item accel:code="KEY_RETURN" xlink:href=".uno:InsertPara"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertColumnBreak"/>
- <accel:item accel:code="KEY_F2" accel:mod1="true" xlink:href=".uno:InsertField"/>
- <accel:item accel:code="KEY_RETURN" accel:shift="true" xlink:href=".uno:InsertLinebreak"/>
- <accel:item accel:code="KEY_RETURN" accel:mod1="true" xlink:href=".uno:InsertPagebreak"/>
- <accel:item accel:code="KEY_F12" accel:mod1="true" xlink:href=".uno:InsertTable"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:mod1="true" xlink:href=".uno:InsertSoftHyphen"/>
- <accel:item accel:code="KEY_SPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertNonBreakingSpace"/>
- <accel:item accel:code="KEY_SUBTRACT" accel:shift="true" accel:mod1="true" xlink:href=".uno:InsertHardHyphen"/>
- <accel:item accel:code="KEY_D" accel:mod1="true" xlink:href=".uno:UnderlineDouble"/>
- <accel:item accel:code="KEY_P" accel:shift="true" accel:mod1="true" xlink:href=".uno:SuperScript"/>
- <accel:item accel:code="KEY_B" accel:shift="true" accel:mod1="true" xlink:href=".uno:SubScript"/>
- <accel:item accel:code="KEY_T" accel:shift="true" accel:mod1="true" xlink:href=".uno:ResetTableProtection"/>
- <accel:item accel:code="KEY_F7" accel:mod1="true" xlink:href=".uno:ThesaurusDialog"/>
- <accel:item accel:code="KEY_ADD" accel:mod1="true" xlink:href=".uno:CalculateSel"/>
- <accel:item accel:code="KEY_F3" accel:mod1="true" xlink:href=".uno:EditGlossary"/>
- <accel:item accel:code="KEY_F7" xlink:href=".uno:SpellingAndGrammarDialog"/>
- <accel:item accel:code="KEY_F3" xlink:href=".uno:ExpandGlossary"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" accel:mod1="true" xlink:href=".uno:GotoPage"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" xlink:href=".uno:CharLeftSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" xlink:href=".uno:CharRightSel"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" xlink:href=".uno:LineUpSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" xlink:href=".uno:LineDownSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" xlink:href=".uno:StartOfLineSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" xlink:href=".uno:EndOfLineSel"/>
- <accel:item accel:code="KEY_HOME" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfDocumentSel"/>
- <accel:item accel:code="KEY_END" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfDocumentSel"/>
- <accel:item accel:code="KEY_RIGHT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordRightSel"/>
- <accel:item accel:code="KEY_LEFT" accel:shift="true" accel:mod1="true" xlink:href=".uno:WordLeftSel"/>
- <accel:item accel:code="KEY_PAGEUP" accel:shift="true" xlink:href=".uno:PageUpSel"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" xlink:href=".uno:PageDownSel"/>
- <accel:item accel:code="KEY_LEFT" xlink:href=".uno:GoLeft"/>
- <accel:item accel:code="KEY_RIGHT" xlink:href=".uno:GoRight"/>
- <accel:item accel:code="KEY_UP" xlink:href=".uno:GoUp"/>
- <accel:item accel:code="KEY_DOWN" xlink:href=".uno:GoDown"/>
- <accel:item accel:code="KEY_HOME" xlink:href=".uno:GoToStartOfLine"/>
- <accel:item accel:code="KEY_END" xlink:href=".uno:GoToEndOfLine"/>
- <accel:item accel:code="KEY_HOME" accel:mod1="true" xlink:href=".uno:GoToStartOfDoc"/>
- <accel:item accel:code="KEY_END" accel:mod1="true" xlink:href=".uno:GoToEndOfDoc"/>
- <accel:item accel:code="KEY_RIGHT" accel:mod1="true" xlink:href=".uno:GoToNextWord"/>
- <accel:item accel:code="KEY_LEFT" accel:mod1="true" xlink:href=".uno:GoToPrevWord"/>
- <accel:item accel:code="KEY_BACKSPACE" xlink:href=".uno:SwBackspace"/>
- <accel:item accel:code="KEY_DELETE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToEndOfSentence"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" accel:mod1="true" xlink:href=".uno:DelToStartOfSentence"/>
- <accel:item accel:code="KEY_DELETE" accel:mod1="true" xlink:href=".uno:DelToEndOfWord"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:mod1="true" xlink:href=".uno:DelToStartOfWord"/>
- <accel:item accel:code="KEY_PAGEUP" xlink:href=".uno:PageUp"/>
- <accel:item accel:code="KEY_PAGEDOWN" xlink:href=".uno:PageDown"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" xlink:href=".uno:SetMultiSelection"/>
- <accel:item accel:code="KEY_F8" xlink:href=".uno:SetExtSelection"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod2="true" xlink:href=".uno:SelectionModeBlock"/>
- <accel:item accel:code="KEY_ESCAPE" xlink:href=".uno:Escape"/>
- <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" xlink:href=".uno:ShiftBackspace"/>
- <accel:item accel:code="KEY_UP" accel:shift="true" accel:mod1="true" xlink:href=".uno:StartOfParaSel"/>
- <accel:item accel:code="KEY_DOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:EndOfParaSel"/>
- <accel:item accel:code="KEY_F4" accel:shift="true" xlink:href=".uno:JumpToNextFrame"/>
- <accel:item accel:code="KEY_F5" accel:shift="true" xlink:href=".uno:RestoreEditingView"/>
- <accel:item accel:code="KEY_PAGEUP" accel:mod1="true" xlink:href=".uno:JumpToHeader"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:mod1="true" xlink:href=".uno:JumpToFooter"/>
- <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" accel:mod1="true" xlink:href=".uno:JumpToFootnoteArea"/>
- <accel:item accel:code="KEY_I" accel:shift="true" accel:mod1="true" xlink:href=".uno:SelectTextMode"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Text body&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_0" accel:mod1="true" accel:shift="true" xlink:href=".uno:StyleApply?Style:string=Standard&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_1" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 1&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_2" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 2&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_3" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 3&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_4" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 4&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_5" accel:mod1="true" xlink:href=".uno:StyleApply?Style:string=Heading 5&amp;FamilyName:string=ParagraphStyles"/>
- <accel:item accel:code="KEY_M" accel:mod1="true" xlink:href=".uno:ResetAttributes"/>
- <accel:item accel:code="KEY_J" accel:shift="true" accel:mod1="true" xlink:href=".uno:FullScreen"/>
- <accel:item accel:code="KEY_DIVIDE" accel:mod1="true" xlink:href=".uno:InsertZWSP"/>
- <accel:item accel:code="KEY_N" accel:mod1="true" accel:mod2="true" xlink:href=".uno:InsertAnnotation"/>
-</accel:acceleratorlist>
diff --git a/sw/uiconfig/swxform/menubar/menubar.xml b/sw/uiconfig/swxform/menubar/menubar.xml
index b37a8e14d232..ae0df22748fe 100644
--- a/sw/uiconfig/swxform/menubar/menubar.xml
+++ b/sw/uiconfig/swxform/menubar/menubar.xml
@@ -1,453 +1,457 @@
<?xml version="1.0" encoding="UTF-8"?>
<menu:menubar xmlns:menu="http://openoffice.org/2001/menu" menu:id="menubar">
- <menu:menu menu:id=".uno:PickList">
+ <menu:menu menu:id=".uno:PickList">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:AddDirect"/>
+ <menu:menuitem menu:id=".uno:Open"/>
+ <menu:menuitem menu:id=".uno:RecentFileList"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:AutoPilotMenu"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:CloseDoc"/>
+ <menu:menuitem menu:id=".uno:Save"/>
+ <menu:menuitem menu:id=".uno:SaveAs"/>
+ <menu:menuitem menu:id=".uno:SaveAll"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Reload"/>
+ <menu:menuitem menu:id=".uno:VersionDialog"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ExportTo"/>
+ <menu:menuitem menu:id=".uno:ExportToPDF"/>
+ <menu:menu menu:id=".uno:SendToMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:SendMail"/>
+ <menu:menuitem menu:id=".uno:SendMailDocAsOOo"/>
+ <menu:menuitem menu:id=".uno:SendMailDocAsMS"/>
+ <menu:menuitem menu:id=".uno:SendMailDocAsPDF"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:NewGlobalDoc"/>
+ <menu:menuitem menu:id=".uno:NewHtmlDoc"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:SendOutlineToStarImpress"/>
+ <menu:menuitem menu:id=".uno:SendOutlineToClipboard"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:CreateAbstract"/>
+ <menu:menuitem menu:id=".uno:SendAbstractToStarImpress"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:SetDocumentProperties"/>
+ <menu:menuitem menu:id=".uno:Signature"/>
+ <menu:menu menu:id=".uno:TemplateMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:Organizer"/>
+ <menu:menuitem menu:id=".uno:AddressBookSource"/>
+ <menu:menuitem menu:id=".uno:SaveAsTemplate"/>
+ <menu:menuitem menu:id=".uno:OpenTemplate"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:PrintPreview"/>
+ <menu:menuitem menu:id=".uno:Print"/>
+ <menu:menuitem menu:id=".uno:PrinterSetup"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Quit"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:EditMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:Undo"/>
+ <menu:menuitem menu:id=".uno:Redo"/>
+ <menu:menuitem menu:id=".uno:Repeat"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Cut"/>
+ <menu:menuitem menu:id=".uno:Copy"/>
+ <menu:menuitem menu:id=".uno:Paste"/>
+ <menu:menuitem menu:id=".uno:PasteSpecial"/>
+ <menu:menuitem menu:id=".uno:SelectTextMode"/>
+ <menu:menu menu:id=".uno:SelectionModeMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:SelectionModeDefault" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:SelectionModeBlock" menu:style="radio"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:SelectAll"/>
+ <menu:menuseparator/>
+ <menu:menu menu:id=".uno:ChangesMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:TrackChanges"/>
+ <menu:menuitem menu:id=".uno:ProtectTraceChangeMode"/>
+ <menu:menuitem menu:id=".uno:ShowTrackedChanges"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:AcceptTrackedChanges"/>
+ <menu:menuitem menu:id=".uno:CommentChangeTracking"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:MergeDocuments"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:CompareDocuments"/>
+ <menu:menuitem menu:id=".uno:SearchDialog"/>
+ <menu:menuitem menu:id=".uno:EditGlossary"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ChangeDatabaseField"/>
+ <menu:menuitem menu:id=".uno:FieldDialog"/>
+ <menu:menuitem menu:id=".uno:EditFootnote"/>
+ <menu:menuitem menu:id=".uno:IndexEntryDialog"/>
+ <menu:menuitem menu:id=".uno:AuthoritiesEntryDialog"/>
+ <menu:menuitem menu:id=".uno:EditHyperlink"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:LinkDialog"/>
+ <menu:menuitem menu:id=".uno:PlugInsActive"/>
+ <menu:menuitem menu:id=".uno:ImageMapDialog"/>
+ <menu:menuitem menu:id=".uno:ObjectMenue"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:ViewMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:PrintLayout"/>
+ <menu:menuitem menu:id=".uno:BrowseView"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:AvailableToolbars"/>
+ <menu:menuitem menu:id=".uno:StatusBarVisible"/>
+ <menu:menuitem menu:id=".uno:ShowImeStatusWindow"/>
+ <menu:menuitem menu:id=".uno:Ruler"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ViewBounds"/>
+ <menu:menuitem menu:id=".uno:Marks"/>
+ <menu:menuitem menu:id=".uno:Fieldnames"/>
+ <menu:menuitem menu:id=".uno:ControlCodes"/>
+ <menu:menuitem menu:id=".uno:ShowHiddenParagraphs"/>
+ <menu:menuitem menu:id=".uno:ShowAnnotations"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ViewDataSourceBrowser"/>
+ <menu:menuitem menu:id=".uno:Navigator"/>
+ <menu:menuitem menu:id=".uno:TaskPane"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:FullScreen"/>
+ <menu:menuitem menu:id=".uno:Zoom"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:InsertMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:InsertBreak"/>
+ <menu:menu menu:id=".uno:FieldMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:InsertDateField"/>
+ <menu:menuitem menu:id=".uno:InsertTimeField"/>
+ <menu:menuitem menu:id=".uno:InsertPageNumberField"/>
+ <menu:menuitem menu:id=".uno:InsertPageCountField"/>
+ <menu:menuitem menu:id=".uno:InsertTopicField"/>
+ <menu:menuitem menu:id=".uno:InsertTitleField"/>
+ <menu:menuitem menu:id=".uno:InsertAuthorField"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertField"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:InsertSymbol"/>
+ <menu:menu menu:id=".uno:FormattingMarkMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:InsertNonBreakingSpace"/>
+ <menu:menuitem menu:id=".uno:InsertHardHyphen"/>
+ <menu:menuitem menu:id=".uno:InsertSoftHyphen"/>
+ <menu:menuitem menu:id=".uno:InsertZWSP"/>
+ <menu:menuitem menu:id=".uno:InsertZWNBSP"/>
+ <menu:menuitem menu:id=".uno:InsertLRM"/>
+ <menu:menuitem menu:id=".uno:InsertRLM"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertSection"/>
+ <menu:menuitem menu:id=".uno:HyperlinkDialog"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertPageHeader"/>
+ <menu:menuitem menu:id=".uno:InsertPageFooter"/>
+ <menu:menuitem menu:id=".uno:InsertFootnoteDialog"/>
+ <menu:menuitem menu:id=".uno:InsertCaptionDialog"/>
+ <menu:menuitem menu:id=".uno:InsertBookmark"/>
+ <menu:menuitem menu:id=".uno:InsertReferenceField"/>
+ <menu:menuitem menu:id=".uno:InsertAnnotation"/>
+ <menu:menuitem menu:id=".uno:InsertScript"/>
+ <menu:menu menu:id=".uno:IndexesMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:InsertIndexesEntry"/>
+ <menu:menuitem menu:id=".uno:InsertMultiIndex"/>
+ <menu:menuitem menu:id=".uno:InsertAuthoritiesEntry"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertEnvelope"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertFrame"/>
+ <menu:menuitem menu:id=".uno:InsertTable"/>
+ <menu:menuitem menu:id=".uno:InsertGraphicRuler"/>
+ <menu:menu menu:id=".uno:GraphicMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:InsertGraphic"/>
+ <menu:menu menu:id=".uno:Scan">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:TwainSelect"/>
+ <menu:menuitem menu:id=".uno:TwainTransfer"/>
+ </menu:menupopup>
+ </menu:menu>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:InsertAVMedia"/>
+ <menu:menu menu:id=".uno:ObjectMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:AddDirect"/>
- <menu:menuitem menu:id=".uno:Open"/>
- <menu:menuitem menu:id=".uno:RecentFileList"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:AutoPilotMenu"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:CloseDoc"/>
- <menu:menuitem menu:id=".uno:Save"/>
- <menu:menuitem menu:id=".uno:SaveAs"/>
- <menu:menuitem menu:id=".uno:SaveAll"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:Reload"/>
- <menu:menuitem menu:id=".uno:VersionDialog"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ExportTo"/>
- <menu:menuitem menu:id=".uno:ExportToPDF"/>
- <menu:menu menu:id=".uno:SendToMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SendMail"/>
- <menu:menuitem menu:id=".uno:SendMailDocAsOOo"/>
- <menu:menuitem menu:id=".uno:SendMailDocAsMS"/>
- <menu:menuitem menu:id=".uno:SendMailDocAsPDF"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:NewGlobalDoc"/>
- <menu:menuitem menu:id=".uno:NewHtmlDoc"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:SendOutlineToStarImpress"/>
- <menu:menuitem menu:id=".uno:SendOutlineToClipboard"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:CreateAbstract"/>
- <menu:menuitem menu:id=".uno:SendAbstractToStarImpress"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:SetDocumentProperties"/>
- <menu:menuitem menu:id=".uno:Signature"/>
- <menu:menu menu:id=".uno:TemplateMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:Organizer"/>
- <menu:menuitem menu:id=".uno:AddressBookSource"/>
- <menu:menuitem menu:id=".uno:SaveAsTemplate"/>
- <menu:menuitem menu:id=".uno:OpenTemplate"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:PrintPreview"/>
- <menu:menuitem menu:id=".uno:Print"/>
- <menu:menuitem menu:id=".uno:PrinterSetup"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:Quit"/>
+ <menu:menuitem menu:id=".uno:InsertObject"/>
+ <menu:menuitem menu:id=".uno:InsertPlugin"/>
+ <menu:menuitem menu:id=".uno:InsertSound"/>
+ <menu:menuitem menu:id=".uno:InsertVideo"/>
+ <menu:menuitem menu:id=".uno:InsertObjectStarMath"/>
+ <menu:menuitem menu:id=".uno:InsertObjectChart"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:EditMenu">
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:InsertObjectFloatingFrame"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:InsertDoc"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:FormatMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:ResetAttributes"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:FontDialog"/>
+ <menu:menuitem menu:id=".uno:ParagraphDialog"/>
+ <menu:menuitem menu:id=".uno:BulletsAndNumberingDialog"/>
+ <menu:menuitem menu:id=".uno:PageDialog"/>
+ <menu:menuseparator/>
+ <menu:menu menu:id=".uno:TransliterateMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:ChangeCaseToSentenceCase"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToLower"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToUpper"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToTitleCase"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToToggleCase"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToHalfWidth"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToFullWidth"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToHiragana"/>
+ <menu:menuitem menu:id=".uno:ChangeCaseToKatakana"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:RubyDialog"/>
+ <menu:menuitem menu:id=".uno:FormatColumns"/>
+ <menu:menuitem menu:id=".uno:EditRegion"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:DesignerDialog"/>
+ <menu:menu menu:id=".uno:AutoFormatMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:OnlineAutoFormat"/>
+ <menu:menuitem menu:id=".uno:AutoFormatApply"/>
+ <menu:menuitem menu:id=".uno:AutoFormatRedlineApply"/>
+ <menu:menuitem menu:id=".uno:AutoCorrectDlg"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menu menu:id=".uno:AnchorMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:Undo"/>
- <menu:menuitem menu:id=".uno:Redo"/>
- <menu:menuitem menu:id=".uno:Repeat"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:Cut"/>
- <menu:menuitem menu:id=".uno:Copy"/>
- <menu:menuitem menu:id=".uno:Paste"/>
- <menu:menuitem menu:id=".uno:PasteSpecial"/>
- <menu:menuitem menu:id=".uno:SelectTextMode"/>
- <menu:menu menu:id=".uno:SelectionModeMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SelectionModeDefault"/>
- <menu:menuitem menu:id=".uno:SelectionModeBlock"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:SelectAll"/>
- <menu:menuseparator/>
- <menu:menu menu:id=".uno:ChangesMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:TrackChanges"/>
- <menu:menuitem menu:id=".uno:ProtectTraceChangeMode"/>
- <menu:menuitem menu:id=".uno:ShowTrackedChanges"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:AcceptTrackedChanges"/>
- <menu:menuitem menu:id=".uno:CommentChangeTracking"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:MergeDocuments"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:CompareDocuments"/>
- <menu:menuitem menu:id=".uno:SearchDialog"/>
- <menu:menuitem menu:id=".uno:EditGlossary"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ChangeDatabaseField"/>
- <menu:menuitem menu:id=".uno:FieldDialog"/>
- <menu:menuitem menu:id=".uno:EditFootnote"/>
- <menu:menuitem menu:id=".uno:IndexEntryDialog"/>
- <menu:menuitem menu:id=".uno:AuthoritiesEntryDialog"/>
- <menu:menuitem menu:id=".uno:EditHyperlink"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:LinkDialog"/>
- <menu:menuitem menu:id=".uno:PlugInsActive"/>
- <menu:menuitem menu:id=".uno:ImageMapDialog"/>
- <menu:menuitem menu:id=".uno:ObjectMenue"/>
+ <menu:menuitem menu:id=".uno:SetAnchorToPage" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:SetAnchorToPara" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:SetAnchorAtChar" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:SetAnchorToChar" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:SetAnchorToFrame" menu:style="radio"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:ViewMenu">
+ </menu:menu>
+ <menu:menu menu:id=".uno:WrapMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:PrintLayout"/>
- <menu:menuitem menu:id=".uno:BrowseView"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:AvailableToolbars"/>
- <menu:menuitem menu:id=".uno:StatusBarVisible"/>
- <menu:menuitem menu:id=".uno:ShowImeStatusWindow"/>
- <menu:menuitem menu:id=".uno:Ruler"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ViewBounds"/>
- <menu:menuitem menu:id=".uno:Marks"/>
- <menu:menuitem menu:id=".uno:Fieldnames"/>
- <menu:menuitem menu:id=".uno:ControlCodes"/>
- <menu:menuitem menu:id=".uno:ShowHiddenParagraphs"/>
- <menu:menuitem menu:id=".uno:ShowAnnotations"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ViewDataSourceBrowser"/>
- <menu:menuitem menu:id=".uno:Navigator"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:FullScreen"/>
- <menu:menuitem menu:id=".uno:Zoom"/>
+ <menu:menuitem menu:id=".uno:WrapOff"/>
+ <menu:menuitem menu:id=".uno:WrapOn"/>
+ <menu:menuitem menu:id=".uno:WrapIdeal"/>
+ <menu:menuitem menu:id=".uno:WrapThrough"/>
+ <menu:menuitem menu:id=".uno:WrapThroughTransparent"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:WrapContour"/>
+ <menu:menuitem menu:id=".uno:ContourDialog"/>
+ <menu:menuitem menu:id=".uno:WrapAnchorOnly"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:TextWrap"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:InsertMenu">
+ </menu:menu>
+ <menu:menu menu:id=".uno:ObjectAlign">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertBreak"/>
- <menu:menu menu:id=".uno:FieldMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertDateField"/>
- <menu:menuitem menu:id=".uno:InsertTimeField"/>
- <menu:menuitem menu:id=".uno:InsertPageNumberField"/>
- <menu:menuitem menu:id=".uno:InsertPageCountField"/>
- <menu:menuitem menu:id=".uno:InsertTopicField"/>
- <menu:menuitem menu:id=".uno:InsertTitleField"/>
- <menu:menuitem menu:id=".uno:InsertAuthorField"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:InsertField"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:InsertSymbol"/>
- <menu:menu menu:id=".uno:FormattingMarkMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertNonBreakingSpace"/>
- <menu:menuitem menu:id=".uno:InsertHardHyphen"/>
- <menu:menuitem menu:id=".uno:InsertSoftHyphen"/>
- <menu:menuitem menu:id=".uno:InsertZWSP"/>
- <menu:menuitem menu:id=".uno:InsertZWNBSP"/>
- <menu:menuitem menu:id=".uno:InsertLRM"/>
- <menu:menuitem menu:id=".uno:InsertRLM"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:InsertSection"/>
- <menu:menuitem menu:id=".uno:HyperlinkDialog"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:InsertPageHeader"/>
- <menu:menuitem menu:id=".uno:InsertPageFooter"/>
- <menu:menuitem menu:id=".uno:InsertFootnoteDialog"/>
- <menu:menuitem menu:id=".uno:InsertCaptionDialog"/>
- <menu:menuitem menu:id=".uno:InsertBookmark"/>
- <menu:menuitem menu:id=".uno:InsertReferenceField"/>
- <menu:menuitem menu:id=".uno:InsertAnnotation"/>
- <menu:menuitem menu:id=".uno:InsertScript"/>
- <menu:menu menu:id=".uno:IndexesMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertIndexesEntry"/>
- <menu:menuitem menu:id=".uno:InsertMultiIndex"/>
- <menu:menuitem menu:id=".uno:InsertAuthoritiesEntry"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:InsertEnvelope"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:InsertFrame"/>
- <menu:menuitem menu:id=".uno:InsertTable"/>
- <menu:menuitem menu:id=".uno:InsertGraphicRuler"/>
- <menu:menu menu:id=".uno:GraphicMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertGraphic"/>
- <menu:menu menu:id=".uno:Scan">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:TwainSelect"/>
- <menu:menuitem menu:id=".uno:TwainTransfer"/>
- </menu:menupopup>
- </menu:menu>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:InsertAVMedia"/>
- <menu:menu menu:id=".uno:ObjectMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertObject"/>
- <menu:menuitem menu:id=".uno:InsertPlugin"/>
- <menu:menuitem menu:id=".uno:InsertSound"/>
- <menu:menuitem menu:id=".uno:InsertVideo"/>
- <menu:menuitem menu:id=".uno:InsertObjectStarMath"/>
- <menu:menuitem menu:id=".uno:InsertObjectChart"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:InsertObjectFloatingFrame"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:InsertDoc"/>
+ <menu:menuitem menu:id=".uno:CommonAlignLeft" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:CommonAlignHorizontalCenter" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:CommonAlignRight" menu:style="radio"/>
+ <menu:menuitem menu:id=".uno:CommonAlignJustified" menu:style="radio"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:CommonAlignTop"/>
+ <menu:menuitem menu:id=".uno:CommonAlignVerticalCenter"/>
+ <menu:menuitem menu:id=".uno:CommonAlignBottom"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:FormatMenu">
+ </menu:menu>
+ <menu:menu menu:id=".uno:ArrangeMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:ResetAttributes"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:FontDialog"/>
- <menu:menuitem menu:id=".uno:ParagraphDialog"/>
- <menu:menuitem menu:id=".uno:BulletsAndNumberingDialog"/>
- <menu:menuitem menu:id=".uno:PageDialog"/>
- <menu:menuseparator/>
- <menu:menu menu:id=".uno:TransliterateMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:ChangeCaseToUpper"/>
- <menu:menuitem menu:id=".uno:ChangeCaseToLower"/>
- <menu:menuitem menu:id=".uno:ChangeCaseToHalfWidth"/>
- <menu:menuitem menu:id=".uno:ChangeCaseToFullWidth"/>
- <menu:menuitem menu:id=".uno:ChangeCaseToHiragana"/>
- <menu:menuitem menu:id=".uno:ChangeCaseToKatakana"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:RubyDialog"/>
- <menu:menuitem menu:id=".uno:FormatColumns"/>
- <menu:menuitem menu:id=".uno:EditRegion"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:DesignerDialog"/>
- <menu:menu menu:id=".uno:AutoFormatMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:OnlineAutoFormat"/>
- <menu:menuitem menu:id=".uno:AutoFormatApply"/>
- <menu:menuitem menu:id=".uno:AutoFormatRedlineApply"/>
- <menu:menuitem menu:id=".uno:AutoCorrectDlg"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menu menu:id=".uno:AnchorMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SetAnchorToPage"/>
- <menu:menuitem menu:id=".uno:SetAnchorToPara"/>
- <menu:menuitem menu:id=".uno:SetAnchorAtChar"/>
- <menu:menuitem menu:id=".uno:SetAnchorToChar"/>
- <menu:menuitem menu:id=".uno:SetAnchorToFrame"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:WrapMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:WrapOff"/>
- <menu:menuitem menu:id=".uno:WrapOn"/>
- <menu:menuitem menu:id=".uno:WrapIdeal"/>
- <menu:menuitem menu:id=".uno:WrapThrough"/>
- <menu:menuitem menu:id=".uno:WrapThroughTransparent"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:WrapContour"/>
- <menu:menuitem menu:id=".uno:ContourDialog"/>
- <menu:menuitem menu:id=".uno:WrapAnchorOnly"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:TextWrap"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:ObjectAlign">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:CommonAlignLeft"/>
- <menu:menuitem menu:id=".uno:CommonAlignHorizontalCenter"/>
- <menu:menuitem menu:id=".uno:CommonAlignRight"/>
- <menu:menuitem menu:id=".uno:CommonAlignJustified"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:CommonAlignTop"/>
- <menu:menuitem menu:id=".uno:CommonAlignVerticalCenter"/>
- <menu:menuitem menu:id=".uno:CommonAlignBottom"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:ArrangeMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:BringToFront"/>
- <menu:menuitem menu:id=".uno:ObjectForwardOne"/>
- <menu:menuitem menu:id=".uno:ObjectBackOne"/>
- <menu:menuitem menu:id=".uno:SendToBack"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:SetObjectToForeground"/>
- <menu:menuitem menu:id=".uno:SetObjectToBackground"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:FlipMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:FlipHorizontal"/>
- <menu:menuitem menu:id=".uno:FlipVertical"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:GroupMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:FormatGroup"/>
- <menu:menuitem menu:id=".uno:FormatUngroup"/>
- <menu:menuitem menu:id=".uno:EnterGroup"/>
- <menu:menuitem menu:id=".uno:LeaveGroup"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menu menu:id=".uno:ObjectMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:TransformDialog"/>
- <menu:menuitem menu:id=".uno:FormatLine"/>
- <menu:menuitem menu:id=".uno:FormatArea"/>
- <menu:menuitem menu:id=".uno:TextAttributes"/>
- <menu:menuitem menu:id=".uno:FontWork"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ObjectTitleDescription"/>
- <menu:menuitem menu:id=".uno:NameGroup"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:FrameDialog"/>
- <menu:menuitem menu:id=".uno:GraphicDialog"/>
+ <menu:menuitem menu:id=".uno:BringToFront"/>
+ <menu:menuitem menu:id=".uno:ObjectForwardOne"/>
+ <menu:menuitem menu:id=".uno:ObjectBackOne"/>
+ <menu:menuitem menu:id=".uno:SendToBack"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:SetObjectToForeground"/>
+ <menu:menuitem menu:id=".uno:SetObjectToBackground"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:TableMenu">
+ </menu:menu>
+ <menu:menu menu:id=".uno:FlipMenu">
<menu:menupopup>
- <menu:menu menu:id=".uno:TableInsertMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:InsertTable"/>
- <menu:menuitem menu:id=".uno:InsertRowDialog"/>
- <menu:menuitem menu:id=".uno:InsertColumnDialog"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:TableDeleteMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:DeleteTable"/>
- <menu:menuitem menu:id=".uno:DeleteRows"/>
- <menu:menuitem menu:id=".uno:DeleteColumns"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:TableSelectMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SelectTable"/>
- <menu:menuitem menu:id=".uno:EntireRow"/>
- <menu:menuitem menu:id=".uno:EntireColumn"/>
- <menu:menuitem menu:id=".uno:EntireCell"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:MergeCells"/>
- <menu:menuitem menu:id=".uno:SplitCell"/>
- <menu:menuitem menu:id=".uno:Protect"/>
- <menu:menuitem menu:id=".uno:MergeTable"/>
- <menu:menuitem menu:id=".uno:SplitTable"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:AutoFormat"/>
- <menu:menu menu:id=".uno:TableAutoFitMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:SetColumnWidth"/>
- <menu:menuitem menu:id=".uno:SetOptimalColumnWidth"/>
- <menu:menuitem menu:id=".uno:DistributeColumns"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:SetRowHeight"/>
- <menu:menuitem menu:id=".uno:SetOptimalRowHeight"/>
- <menu:menuitem menu:id=".uno:DistributeRows"/>
- <menu:menuitem menu:id=".uno:RowSplit"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:HeadingRowsRepeat"/>
- <menu:menu menu:id=".uno:TableConvertMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:ConvertTextToTable"/>
- <menu:menuitem menu:id=".uno:ConvertTableToText"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:TableSort"/>
- <menu:menuitem menu:id=".uno:InsertFormula"/>
- <menu:menuitem menu:id=".uno:TableNumberFormatDialog"/>
- <menu:menuitem menu:id=".uno:TableBoundaries"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:TableDialog"/>
+ <menu:menuitem menu:id=".uno:FlipHorizontal"/>
+ <menu:menuitem menu:id=".uno:FlipVertical"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:ToolsMenu">
+ </menu:menu>
+ <menu:menu menu:id=".uno:GroupMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:SpellingAndGrammarDialog"/>
- <menu:menu menu:id=".uno:LanguageMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:HangulHanjaConversion"/>
- <menu:menuitem menu:id=".uno:ChineseConversion"/>
- <menu:menuitem menu:id=".uno:ThesaurusDialog"/>
- <menu:menuitem menu:id=".uno:Hyphenate"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:MoreDictionaries"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id=".uno:WordCountDialog"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:ChapterNumberingDialog"/>
- <menu:menuitem menu:id=".uno:LineNumberingDialog"/>
- <menu:menuitem menu:id=".uno:FootnoteDialog"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:Gallery"/>
- <menu:menuitem menu:id=".uno:AVMediaPlayer"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:BibliographyComponent"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:MailMergeWizard"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:SortDialog"/>
- <menu:menuitem menu:id=".uno:CalculateSel"/>
- <menu:menu menu:id=".uno:UpdateMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:UpdateAll"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:UpdateFields"/>
- <menu:menuitem menu:id=".uno:UpdateAllLinks"/>
- <menu:menuitem menu:id=".uno:UpdateCharts"/>
- <menu:menuitem menu:id=".uno:UpdateCurIndex"/>
- <menu:menuitem menu:id=".uno:UpdateAllIndexes"/>
- <menu:menuitem menu:id=".uno:Repaginate"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuseparator/>
- <menu:menu menu:id=".uno:MacrosMenu">
- <menu:menupopup>
- <menu:menuitem menu:id=".uno:MacroRecorder"/>
- <menu:menuitem menu:id=".uno:RunMacro"/>
- <menu:menu menu:id=".uno:ScriptOrganizer"/>
- <menu:menuitem menu:id=".uno:MacroSignature"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:MacroOrganizer?TabId:short=1"/>
- </menu:menupopup>
- </menu:menu>
- <menu:menuitem menu:id="service:com.sun.star.deployment.ui.PackageManagerDialog"/>
- <menu:menuitem menu:id=".uno:OpenXMLFilterSettings"/>
- <menu:menuitem menu:id=".uno:ConfigureDialog"/>
- <menu:menuitem menu:id=".uno:OptionsTreeDialog"/>
+ <menu:menuitem menu:id=".uno:FormatGroup"/>
+ <menu:menuitem menu:id=".uno:FormatUngroup"/>
+ <menu:menuitem menu:id=".uno:EnterGroup"/>
+ <menu:menuitem menu:id=".uno:LeaveGroup"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:WindowList">
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menu menu:id=".uno:ObjectMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:TransformDialog"/>
+ <menu:menuitem menu:id=".uno:FormatLine"/>
+ <menu:menuitem menu:id=".uno:FormatArea"/>
+ <menu:menuitem menu:id=".uno:TextAttributes"/>
+ <menu:menuitem menu:id=".uno:FontWork"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ObjectTitleDescription"/>
+ <menu:menuitem menu:id=".uno:NameGroup"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:FrameDialog"/>
+ <menu:menuitem menu:id=".uno:GraphicDialog"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:TableMenu">
+ <menu:menupopup>
+ <menu:menu menu:id=".uno:TableInsertMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:InsertTable"/>
+ <menu:menuitem menu:id=".uno:InsertRowDialog"/>
+ <menu:menuitem menu:id=".uno:InsertColumnDialog"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:TableDeleteMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:NewWindow"/>
- <menu:menuitem menu:id=".uno:CloseWin"/>
- <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:DeleteTable"/>
+ <menu:menuitem menu:id=".uno:DeleteRows"/>
+ <menu:menuitem menu:id=".uno:DeleteColumns"/>
</menu:menupopup>
- </menu:menu>
- <menu:menu menu:id=".uno:HelpMenu">
+ </menu:menu>
+ <menu:menu menu:id=".uno:TableSelectMenu">
<menu:menupopup>
- <menu:menuitem menu:id=".uno:HelpIndex"/>
- <menu:menuitem menu:id=".uno:ExtendedHelp"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:HelpSupport"/>
- <menu:menuitem menu:id=".uno:OnlineRegistrationDlg"/>
- <menu:menuseparator/>
- <menu:menuitem menu:id=".uno:About"/>
+ <menu:menuitem menu:id=".uno:SelectTable"/>
+ <menu:menuitem menu:id=".uno:EntireRow"/>
+ <menu:menuitem menu:id=".uno:EntireColumn"/>
+ <menu:menuitem menu:id=".uno:EntireCell"/>
</menu:menupopup>
- </menu:menu>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:MergeCells"/>
+ <menu:menuitem menu:id=".uno:SplitCell"/>
+ <menu:menuitem menu:id=".uno:Protect"/>
+ <menu:menuitem menu:id=".uno:MergeTable"/>
+ <menu:menuitem menu:id=".uno:SplitTable"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:AutoFormat"/>
+ <menu:menu menu:id=".uno:TableAutoFitMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:SetColumnWidth"/>
+ <menu:menuitem menu:id=".uno:SetOptimalColumnWidth"/>
+ <menu:menuitem menu:id=".uno:DistributeColumns"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:SetRowHeight"/>
+ <menu:menuitem menu:id=".uno:SetOptimalRowHeight"/>
+ <menu:menuitem menu:id=".uno:DistributeRows"/>
+ <menu:menuitem menu:id=".uno:RowSplit"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:HeadingRowsRepeat"/>
+ <menu:menu menu:id=".uno:TableConvertMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:ConvertTextToTable"/>
+ <menu:menuitem menu:id=".uno:ConvertTableToText"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:TableSort"/>
+ <menu:menuitem menu:id=".uno:InsertFormula"/>
+ <menu:menuitem menu:id=".uno:TableNumberFormatDialog"/>
+ <menu:menuitem menu:id=".uno:TableBoundaries"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:TableDialog"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:ToolsMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:SpellingAndGrammarDialog"/>
+ <menu:menu menu:id=".uno:LanguageMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:HangulHanjaConversion"/>
+ <menu:menuitem menu:id=".uno:ChineseConversion"/>
+ <menu:menuitem menu:id=".uno:ThesaurusDialog"/>
+ <menu:menuitem menu:id=".uno:Hyphenate"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:MoreDictionaries"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id=".uno:WordCountDialog"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:ChapterNumberingDialog"/>
+ <menu:menuitem menu:id=".uno:LineNumberingDialog"/>
+ <menu:menuitem menu:id=".uno:FootnoteDialog"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:Gallery"/>
+ <menu:menuitem menu:id=".uno:AVMediaPlayer"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:BibliographyComponent"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:MailMergeWizard"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:SortDialog"/>
+ <menu:menuitem menu:id=".uno:CalculateSel"/>
+ <menu:menu menu:id=".uno:UpdateMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:UpdateAll"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:UpdateFields"/>
+ <menu:menuitem menu:id=".uno:UpdateAllLinks"/>
+ <menu:menuitem menu:id=".uno:UpdateCharts"/>
+ <menu:menuitem menu:id=".uno:UpdateCurIndex"/>
+ <menu:menuitem menu:id=".uno:UpdateAllIndexes"/>
+ <menu:menuitem menu:id=".uno:Repaginate"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menu menu:id=".uno:MacrosMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:MacroRecorder"/>
+ <menu:menuitem menu:id=".uno:RunMacro"/>
+ <menu:menu menu:id=".uno:ScriptOrganizer"/>
+ <menu:menuitem menu:id=".uno:MacroSignature"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:MacroOrganizer?TabId:short=1"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="service:com.sun.star.deployment.ui.PackageManagerDialog"/>
+ <menu:menuitem menu:id=".uno:OpenXMLFilterSettings"/>
+ <menu:menuitem menu:id=".uno:ConfigureDialog"/>
+ <menu:menuitem menu:id=".uno:OptionsTreeDialog"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:WindowList">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:NewWindow"/>
+ <menu:menuitem menu:id=".uno:CloseWin"/>
+ <menu:menuseparator/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id=".uno:HelpMenu">
+ <menu:menupopup>
+ <menu:menuitem menu:id=".uno:HelpIndex"/>
+ <menu:menuitem menu:id=".uno:ExtendedHelp"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:HelpSupport"/>
+ <menu:menuitem menu:id=".uno:OnlineRegistrationDlg"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id=".uno:About"/>
+ </menu:menupopup>
+ </menu:menu>
</menu:menubar>
diff --git a/sw/uiconfig/swxform/toolbar/extrusionobjectbar.xml b/sw/uiconfig/swxform/toolbar/extrusionobjectbar.xml
index 1f212226cf52..148849db6ee7 100644
--- a/sw/uiconfig/swxform/toolbar/extrusionobjectbar.xml
+++ b/sw/uiconfig/swxform/toolbar/extrusionobjectbar.xml
@@ -8,9 +8,9 @@
<toolbar:toolbaritem xlink:href=".uno:ExtrusionTiltLeft" toolbar:helpid="10963"/>
<toolbar:toolbaritem xlink:href=".uno:ExtrusionTiltRight" toolbar:helpid="10964"/>
<toolbar:toolbarseparator/>
- <toolbar:toolbaritem xlink:href=".uno:ExtrusionDepthFloater" toolbar:helpid="10965"/>
- <toolbar:toolbaritem xlink:href=".uno:ExtrusionDirectionFloater" toolbar:helpid="10966"/>
- <toolbar:toolbaritem xlink:href=".uno:ExtrusionLightingFloater" toolbar:helpid="10967"/>
- <toolbar:toolbaritem xlink:href=".uno:ExtrusionSurfaceFloater" toolbar:helpid="10968"/>
- <toolbar:toolbaritem xlink:href=".uno:Extrusion3DColor" toolbar:helpid="10969"/>
+ <toolbar:toolbaritem xlink:href=".uno:ExtrusionDepthFloater" toolbar:helpid="10965" toolbar:style="dropdownonly"/>
+ <toolbar:toolbaritem xlink:href=".uno:ExtrusionDirectionFloater" toolbar:helpid="10966" toolbar:style="dropdownonly"/>
+ <toolbar:toolbaritem xlink:href=".uno:ExtrusionLightingFloater" toolbar:helpid="10967" toolbar:style="dropdownonly"/>
+ <toolbar:toolbaritem xlink:href=".uno:ExtrusionSurfaceFloater" toolbar:helpid="10968" toolbar:style="dropdownonly"/>
+ <toolbar:toolbaritem xlink:href=".uno:Extrusion3DColor" toolbar:helpid="10969" toolbar:style="dropdownonly"/>
</toolbar:toolbar> \ No newline at end of file
diff --git a/sw/uiconfig/swxform/toolbar/findbar.xml b/sw/uiconfig/swxform/toolbar/findbar.xml
new file mode 100644
index 000000000000..9ef9d8a1a78f
--- /dev/null
+++ b/sw/uiconfig/swxform/toolbar/findbar.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE toolbar:toolbar PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "toolbar.dtd">
+<toolbar:toolbar xmlns:toolbar="http://openoffice.org/2001/toolbar" xmlns:xlink="http://www.w3.org/1999/xlink" toolbar:id="toolbar">
+ <toolbar:toolbaritem xlink:href=".uno:FindText" toolbar:helpid="helpid:100105" />
+ <toolbar:toolbaritem xlink:href=".uno:DownSearch" toolbar:helpid="helpid:100105" />
+ <toolbar:toolbaritem xlink:href=".uno:UpSearch" toolbar:helpid="helpid:100105" />
+ <toolbar:toolbaritem xlink:href=".uno:SearchDialog" toolbar:text="Find &amp; Replace" toolbar:visible="false" toolbar:helpid="helpid:100105"/>
+</toolbar:toolbar>
diff --git a/sw/uiconfig/swxform/toolbar/fontworkobjectbar.xml b/sw/uiconfig/swxform/toolbar/fontworkobjectbar.xml
index 3ac334e0e920..5219a1e235e9 100644
--- a/sw/uiconfig/swxform/toolbar/fontworkobjectbar.xml
+++ b/sw/uiconfig/swxform/toolbar/fontworkobjectbar.xml
@@ -3,9 +3,9 @@
<toolbar:toolbar xmlns:toolbar="http://openoffice.org/2001/toolbar" xmlns:xlink="http://www.w3.org/1999/xlink" toolbar:id="toolbar">
<toolbar:toolbaritem xlink:href=".uno:FontworkGalleryFloater" toolbar:helpid="helpid:10977" />
<toolbar:toolbarseparator/>
- <toolbar:toolbaritem xlink:href=".uno:FontworkShapeType" toolbar:helpid="helpid:10978" toolbar:style="radio dropdown" />
+ <toolbar:toolbaritem xlink:href=".uno:FontworkShapeType" toolbar:helpid="helpid:10978" toolbar:style="dropdownonly" />
<toolbar:toolbaritem xlink:href=".uno:FontworkSameLetterHeights" toolbar:helpid="helpid:10979" />
<toolbar:toolbarseparator/>
- <toolbar:toolbaritem xlink:href=".uno:FontworkAlignmentFloater" toolbar:helpid="helpid:10981" toolbar:style="dropdown" />
- <toolbar:toolbaritem xlink:href=".uno:FontworkCharacterSpacingFloater" toolbar:helpid="helpid:10982" toolbar:style="dropdown" />
+ <toolbar:toolbaritem xlink:href=".uno:FontworkAlignmentFloater" toolbar:helpid="helpid:10981" toolbar:style="dropdownonly" />
+ <toolbar:toolbaritem xlink:href=".uno:FontworkCharacterSpacingFloater" toolbar:helpid="helpid:10982" toolbar:style="dropdownonly" />
</toolbar:toolbar> \ No newline at end of file
diff --git a/sw/util/makefile.mk b/sw/util/makefile.mk
index 3018f0ad2835..e2d7fb838643 100644
--- a/sw/util/makefile.mk
+++ b/sw/util/makefile.mk
@@ -118,7 +118,6 @@ SHL1STDLIBS+= \
$(SALHELPERLIB) \
$(ICUUCLIB) \
$(I18NUTILLIB) \
- $(VBAHELPERLIB) \
$(AVMEDIALIB)
.IF "$(GUI)"=="WNT"
@@ -133,7 +132,7 @@ DEFLIB1NAME=swall $(SWLIBFILES:b)
SHL2TARGET= swd$(DLLPOSTFIX)
SHL2IMPLIB= swdimp
-SHL2VERSIONMAP= swd.map
+SHL2VERSIONMAP=$(SOLARENV)/src/component.map
SHL2DEF=$(MISC)$/$(SHL2TARGET).def
DEF2NAME= $(SHL2TARGET)
@@ -336,12 +335,13 @@ SHL4STDLIBS= \
$(BASICLIB) \
$(I18NUTILLIB)
+.IF "$(ENABLE_VBA)" == "YES"
#target vba
TARGET_VBA=vbaswobj
-SHL5TARGET=$(TARGET_VBA).uno
+SHL5TARGET=$(TARGET_VBA)$(DLLPOSTFIX).uno
SHL5IMPLIB= i$(TARGET_VBA)
-SHL5DLLPRE=
-SHL5VERSIONMAP=$(TARGET_VBA).map
+
+SHL5VERSIONMAP=$(SOLARENV)/src/component.map
SHL5DEF=$(MISC)$/$(SHL5TARGET).def
DEF5NAME=$(SHL5TARGET)
SHL5STDLIBS= \
@@ -369,5 +369,6 @@ SHL5STDLIBS= \
SHL5DEPN=$(SHL1TARGETN)
SHL5LIBS=$(SLB)$/$(TARGET_VBA).lib
+.ENDIF # .IF "$(ENABLE_VBA)" == "YES"
.INCLUDE : target.mk
diff --git a/sw/util/msword.map b/sw/util/msword.map
index db60fc5ce8c8..16b9d25b0b78 100755
--- a/sw/util/msword.map
+++ b/sw/util/msword.map
@@ -1,4 +1,4 @@
-MSWORD_1_0 {
+UDK_3_0_0 {
global:
ImportRTF;
ExportRTF;
diff --git a/sw/util/sw.map b/sw/util/sw.map
deleted file mode 100644
index 272fab31a03d..000000000000
--- a/sw/util/sw.map
+++ /dev/null
@@ -1,8 +0,0 @@
-SW_1_0 {
- global:
- component_getImplementationEnvironment;
- component_writeInfo;
- component_getFactory;
- local:
- *;
-};
diff --git a/sw/util/swd.map b/sw/util/swd.map
deleted file mode 100644
index 272fab31a03d..000000000000
--- a/sw/util/swd.map
+++ /dev/null
@@ -1,8 +0,0 @@
-SW_1_0 {
- global:
- component_getImplementationEnvironment;
- component_writeInfo;
- component_getFactory;
- local:
- *;
-};
diff --git a/sw/util/swui.map b/sw/util/swui.map
index f40bd255fe1d..ad5e33836c7c 100644
--- a/sw/util/swui.map
+++ b/sw/util/swui.map
@@ -1,4 +1,4 @@
-SWUI_1_0 {
+UDK_3_0_0 {
global:
CreateDialogFactory;
local:
diff --git a/sw/util/vbaswobj.map b/sw/util/vbaswobj.map
deleted file mode 100644
index 737cddbfe3df..000000000000
--- a/sw/util/vbaswobj.map
+++ /dev/null
@@ -1,9 +0,0 @@
-OOO_1.1 {
- global:
- component_getImplementationEnvironment;
- component_getFactory;
- component_writeInfo;
-
- local:
- *;
-};