summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--brand/cib/Image.svg78
-rw-r--r--brand/cib/banner.svg86
-rw-r--r--brand/cib/flat_logo.svg504
-rw-r--r--brand/cib/intro-highres.pngbin18421 -> 17064 bytes
-rw-r--r--brand/cib/intro-highres.svg264
-rw-r--r--brand/cib/intro.pngbin13854 -> 10827 bytes
-rw-r--r--brand/cib/intro.svg255
-rw-r--r--brand/cib/logo.pngbin4714 -> 731 bytes
-rw-r--r--brand/cib/logo.svg105
-rw-r--r--configmgr/source/data.hxx2
-rw-r--r--configure.ac2
-rw-r--r--desktop/source/app/cmdlineargs.cxx10
-rw-r--r--desktop/source/migration/migration.cxx107
-rw-r--r--download.lst14
-rw-r--r--external/harfbuzz/62e803b36173fd096d7ad460dd1d1db9be542593.patch.129
-rw-r--r--external/harfbuzz/UnpackedTarball_harfbuzz.mk1
-rw-r--r--external/libnumbertext/EmptyString.patch113
-rw-r--r--external/libnumbertext/UnpackedTarball_libnumbertext.mk1
-rw-r--r--external/liborcus/UnpackedTarball_liborcus.mk1
-rw-r--r--external/liborcus/overrun.patch.063
-rw-r--r--external/libxml2/ExternalPackage_libxml2.mk2
-rw-r--r--external/libxml2/UnpackedTarball_libxml2.mk3
-rw-r--r--external/libxml2/libxml2-android.patch6
-rw-r--r--external/libxml2/libxml2-config.patch.143
-rw-r--r--external/libxml2/xml2-config.in28
-rw-r--r--external/poppler/StaticLibrary_poppler.mk5
-rw-r--r--external/poppler/UnpackedTarball_poppler.mk2
-rw-r--r--external/poppler/disable-freetype.patch.141
-rw-r--r--external/poppler/gcc7-EntityInfo.patch.148
-rw-r--r--external/poppler/poppler-config.patch.127
-rw-r--r--external/zlib/1eb7682f845ac9e9bf9ae35bbfb3bad5dacbd91d.patch29
-rw-r--r--external/zlib/UnpackedTarball_zlib.mk7
-rw-r--r--external/zlib/eff308af425b67093bab25f80f1ae950166bece1.patch32
-rw-r--r--filter/source/xsltfilter/LibXSLTTransformer.hxx2
-rw-r--r--formula/source/core/api/token.cxx8
-rw-r--r--framework/source/helper/titlebarupdate.cxx2
-rwxr-xr-xicon-themes/breeze/sfx2/res/logo.pngbin4714 -> 5381 bytes
-rw-r--r--icon-themes/cib/sfx2/res/logo.pngbin4714 -> 731 bytes
-rw-r--r--icon-themes/colibre/sfx2/res/logo.pngbin4714 -> 5381 bytes
-rwxr-xr-xicon-themes/elementary/sfx2/res/logo.pngbin4714 -> 5381 bytes
-rw-r--r--icon-themes/karasa_jaga/sfx2/res/logo.pngbin4714 -> 5381 bytes
-rwxr-xr-xicon-themes/sifr/sfx2/res/logo.pngbin4714 -> 5381 bytes
-rw-r--r--icon-themes/tango/sfx2/res/logo.pngbin4714 -> 5381 bytes
-rw-r--r--include/default.rc2
-rw-r--r--include/vcl/svtabbx.hxx1
-rw-r--r--include/vcl/treelistbox.hxx2
-rw-r--r--include/vcl/weld.hxx5
-rw-r--r--instsetoo_native/inc_common/windows/msi_templates/Binary/Banner.bmpbin115906 -> 119082 bytes
-rw-r--r--instsetoo_native/inc_common/windows/msi_templates/Binary/Image.bmpbin202314 -> 206778 bytes
-rw-r--r--instsetoo_native/inc_ooohelppack/windows/msi_templates/Property.idt6
-rw-r--r--instsetoo_native/util/openoffice.lst.in72
-rw-r--r--offapi/com/sun/star/view/PrintOptions.idl8
-rw-r--r--officecfg/registry/data/org/openoffice/Setup.xcu11
-rw-r--r--oox/source/ole/vbacontrol.cxx6
-rw-r--r--sc/inc/document.hxx5
-rw-r--r--sc/qa/extras/scpdfexport.cxx16
-rw-r--r--sc/qa/extras/testdocuments/forcepoint97.xlsxbin0 -> 21127 bytes
-rw-r--r--sc/qa/uitest/calc_tests7/tdf150044.py85
-rw-r--r--sc/qa/unit/data/xlsx/forcepoint107.xlsxbin0 -> 398436 bytes
-rw-r--r--sc/qa/unit/filters-test.cxx9
-rw-r--r--sc/source/core/data/colorscale.cxx6
-rw-r--r--sc/source/core/data/documen2.cxx1
-rw-r--r--sc/source/core/data/documentimport.cxx8
-rw-r--r--sc/source/core/data/dpobject.cxx11
-rw-r--r--sc/source/core/data/dptabres.cxx12
-rw-r--r--sc/source/core/data/formulacell.cxx6
-rw-r--r--sc/source/core/tool/interpr7.cxx3
-rw-r--r--sc/source/filter/oox/workbookhelper.cxx2
-rw-r--r--sc/source/filter/orcus/filterdetect.cxx8
-rw-r--r--sc/source/filter/xml/XMLCalculationSettingsContext.cxx14
-rw-r--r--sc/source/filter/xml/xmlexprt.cxx26
-rw-r--r--sc/source/ui/docshell/docsh.cxx8
-rw-r--r--sc/source/ui/unoobj/chart2uno.cxx3
-rw-r--r--sc/source/ui/view/output2.cxx7
-rw-r--r--sc/source/ui/view/tabview3.cxx1
-rw-r--r--scp2/inc/macros.inc2
-rw-r--r--scp2/source/base/folderitem_base.scp2
-rw-r--r--scp2/source/base/registryitem_base.scp2
-rw-r--r--scp2/source/calc/folderitem_calc.scp2
-rw-r--r--scp2/source/calc/registryitem_calc.scp8
-rw-r--r--scp2/source/draw/folderitem_draw.scp2
-rw-r--r--scp2/source/draw/registryitem_draw.scp8
-rw-r--r--scp2/source/impress/folderitem_impress.scp2
-rw-r--r--scp2/source/impress/registryitem_impress.scp8
-rw-r--r--scp2/source/math/folderitem_math.scp2
-rw-r--r--scp2/source/math/registryitem_math.scp4
-rw-r--r--scp2/source/ooo/folderitem_ooo.scp6
-rw-r--r--scp2/source/ooo/folderitem_ooo.ulf2
-rw-r--r--scp2/source/writer/folderitem_writer.scp2
-rw-r--r--scp2/source/writer/registryitem_writer.scp14
-rw-r--r--sdext/Executable_xpdfimport.mk4
-rw-r--r--sdext/source/pdfimport/wrapper/wrapper.cxx52
-rw-r--r--sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx57
-rw-r--r--sdext/source/pdfimport/xpdfwrapper/wrapper_gpl.cxx10
-rw-r--r--setup_native/source/packinfo/packinfo_brand.txt56
-rw-r--r--setup_native/source/packinfo/packinfo_extensions.txt30
-rw-r--r--setup_native/source/packinfo/packinfo_office.txt311
-rw-r--r--setup_native/source/packinfo/packinfo_office_help.txt7
-rw-r--r--setup_native/source/packinfo/packinfo_office_lang.txt44
-rw-r--r--setup_native/source/packinfo/packinfo_sdkoo.txt6
-rw-r--r--setup_native/source/packinfo/packinfo_ure.txt16
-rw-r--r--sfx2/source/appl/appserv.cxx8
-rw-r--r--sfx2/source/appl/macroloader.cxx9
-rw-r--r--sfx2/source/doc/docfile.cxx13
-rw-r--r--sfx2/source/doc/iframe.cxx20
-rw-r--r--sfx2/source/doc/printhelper.cxx9
-rw-r--r--sfx2/source/inc/macroloader.hxx2
-rw-r--r--sfx2/source/view/viewprn.cxx12
-rw-r--r--shell/source/win32/simplemail/senddoc.cxx38
-rw-r--r--shell/source/win32/simplemail/smplmailclient.cxx12
-rw-r--r--shell/source/win32/simplemail/smplmailclient.hxx2
-rw-r--r--svx/source/dialog/SafeModeDialog.cxx2
-rw-r--r--sw/CppunitTest_sw_core_edit.mk74
-rw-r--r--sw/CppunitTest_sw_core_text.mk2
-rw-r--r--sw/Module_sw.mk1
-rw-r--r--sw/inc/IDocumentContentOperations.hxx11
-rw-r--r--sw/inc/IDocumentMarkAccess.hxx2
-rw-r--r--sw/inc/cmdid.h2
-rw-r--r--sw/inc/crsrsh.hxx15
-rw-r--r--sw/inc/editsh.hxx4
-rw-r--r--sw/inc/index.hxx17
-rw-r--r--sw/inc/ndarr.hxx8
-rw-r--r--sw/inc/ndtxt.hxx5
-rw-r--r--sw/inc/pam.hxx2
-rw-r--r--sw/inc/swabstdlg.hxx2
-rw-r--r--sw/inc/unobaseclass.hxx19
-rw-r--r--sw/inc/unosett.hxx5
-rw-r--r--sw/inc/unotextcursor.hxx4
-rw-r--r--sw/inc/unotextrange.hxx2
-rw-r--r--sw/qa/core/data/rtf/pass/forcepoint110.rtfbin0 -> 7776 bytes
-rw-r--r--sw/qa/core/edit/data/redline-hidden.fodt32
-rw-r--r--sw/qa/core/edit/edit.cxx57
-rw-r--r--sw/qa/core/text/text.cxx51
-rw-r--r--sw/qa/core/uwriter.cxx2
-rw-r--r--sw/qa/extras/odfexport/data/tdf137199.docxbin0 -> 13281 bytes
-rw-r--r--sw/qa/extras/odfexport/odfexport.cxx11
-rw-r--r--sw/qa/extras/odfimport/data/forcepoint108.fodt67
-rw-r--r--sw/qa/extras/odfimport/odfimport.cxx12
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport13.cxx4
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport5.cxx4
-rw-r--r--sw/qa/extras/uiwriter/data/tdf133982.docxbin0 -> 11705 bytes
-rw-r--r--sw/qa/extras/uiwriter/data/tdf134021.docxbin0 -> 23096 bytes
-rw-r--r--sw/qa/extras/uiwriter/data/tdf139843.odtbin0 -> 38984 bytes
-rw-r--r--sw/qa/extras/uiwriter/data/tdf148868.odtbin0 -> 11112 bytes
-rw-r--r--sw/qa/extras/uiwriter/data2/tdf135061.odtbin0 -> 10767 bytes
-rw-r--r--sw/qa/extras/uiwriter/data2/tdf136452.fodt80
-rw-r--r--sw/qa/extras/uiwriter/data2/tdf141175.odtbin0 -> 9574 bytes
-rw-r--r--sw/qa/extras/uiwriter/data2/try2.fodt66
-rw-r--r--sw/qa/extras/uiwriter/uiwriter.cxx262
-rw-r--r--sw/qa/extras/uiwriter/uiwriter2.cxx681
-rw-r--r--sw/qa/extras/unowriter/unowriter.cxx33
-rw-r--r--sw/qa/extras/ww8export/data/tdf138302_restartNumbering.odtbin0 -> 14081 bytes
-rw-r--r--sw/qa/extras/ww8export/ww8export3.cxx6
-rw-r--r--sw/qa/inc/swmodeltestbase.hxx8
-rw-r--r--sw/qa/uitest/data/tdf39721.fodt42
-rw-r--r--sw/qa/uitest/writer_tests2/bookmark.py39
-rw-r--r--sw/qa/uitest/writer_tests7/tdf145093.py34
-rw-r--r--sw/sdi/_textsh.sdi6
-rw-r--r--sw/sdi/swriter.sdi18
-rw-r--r--sw/source/core/bastyp/index.cxx5
-rw-r--r--sw/source/core/crsr/callnk.cxx42
-rw-r--r--sw/source/core/crsr/crbm.cxx15
-rw-r--r--sw/source/core/crsr/crsrsh.cxx17
-rw-r--r--sw/source/core/crsr/crstrvl.cxx41
-rw-r--r--sw/source/core/crsr/pam.cxx4
-rw-r--r--sw/source/core/doc/DocumentContentOperationsManager.cxx110
-rw-r--r--sw/source/core/doc/DocumentRedlineManager.cxx6
-rw-r--r--sw/source/core/doc/docbm.cxx9
-rw-r--r--sw/source/core/doc/docedt.cxx11
-rw-r--r--sw/source/core/doc/doclay.cxx11
-rw-r--r--sw/source/core/doc/docnew.cxx27
-rw-r--r--sw/source/core/doc/textboxhelper.cxx3
-rw-r--r--sw/source/core/docnode/ndsect.cxx2
-rw-r--r--sw/source/core/docnode/ndtbl.cxx2
-rw-r--r--sw/source/core/docnode/node.cxx6
-rw-r--r--sw/source/core/docnode/nodes.cxx182
-rw-r--r--sw/source/core/edit/acorrect.cxx5
-rw-r--r--sw/source/core/edit/autofmt.cxx29
-rw-r--r--sw/source/core/edit/edatmisc.cxx2
-rw-r--r--sw/source/core/edit/eddel.cxx11
-rw-r--r--sw/source/core/edit/edfcol.cxx3
-rw-r--r--sw/source/core/edit/edglbldc.cxx2
-rw-r--r--sw/source/core/edit/editsh.cxx4
-rw-r--r--sw/source/core/edit/edlingu.cxx19
-rw-r--r--sw/source/core/edit/edws.cxx6
-rw-r--r--sw/source/core/fields/reffld.cxx4
-rw-r--r--sw/source/core/frmedt/fecopy.cxx2
-rw-r--r--sw/source/core/inc/DocumentContentOperationsManager.hxx9
-rw-r--r--sw/source/core/inc/MarkManager.hxx2
-rw-r--r--sw/source/core/inc/UndoDelete.hxx3
-rw-r--r--sw/source/core/inc/UndoRedline.hxx8
-rw-r--r--sw/source/core/inc/UndoTable.hxx8
-rw-r--r--sw/source/core/inc/mvsave.hxx5
-rw-r--r--sw/source/core/inc/rootfrm.hxx2
-rw-r--r--sw/source/core/layout/atrfrm.cxx2
-rw-r--r--sw/source/core/layout/frmtool.cxx13
-rw-r--r--sw/source/core/layout/tabfrm.cxx7
-rwxr-xr-xsw/source/core/text/frmform.cxx18
-rw-r--r--sw/source/core/text/porfld.cxx3
-rw-r--r--sw/source/core/text/porfld.hxx2
-rw-r--r--sw/source/core/text/txtfrm.cxx1
-rw-r--r--sw/source/core/txtnode/ndtxt.cxx98
-rw-r--r--sw/source/core/txtnode/thints.cxx4
-rw-r--r--sw/source/core/txtnode/txtedt.cxx6
-rw-r--r--sw/source/core/undo/undel.cxx27
-rw-r--r--sw/source/core/undo/undobj.cxx19
-rw-r--r--sw/source/core/undo/unins.cxx7
-rw-r--r--sw/source/core/undo/unredln.cxx38
-rw-r--r--sw/source/core/undo/untbl.cxx16
-rw-r--r--sw/source/core/undo/untblk.cxx2
-rw-r--r--sw/source/core/unocore/unobkm.cxx2
-rw-r--r--sw/source/core/unocore/unoframe.cxx9
-rw-r--r--sw/source/core/unocore/unoobj.cxx10
-rw-r--r--sw/source/core/unocore/unoobj2.cxx9
-rw-r--r--sw/source/core/unocore/unosett.cxx20
-rw-r--r--sw/source/core/unocore/unotext.cxx43
-rw-r--r--sw/source/filter/html/htmlplug.cxx7
-rw-r--r--sw/source/filter/ww8/wrtw8num.cxx11
-rw-r--r--sw/source/filter/ww8/wrtww8.hxx1
-rw-r--r--sw/source/filter/ww8/ww8atr.cxx7
-rw-r--r--sw/source/filter/xml/XMLRedlineImportHelper.cxx81
-rw-r--r--sw/source/filter/xml/xmlexp.hxx5
-rw-r--r--sw/source/filter/xml/xmlfmte.cxx12
-rw-r--r--sw/source/filter/xml/xmliteme.cxx2
-rw-r--r--sw/source/filter/xml/xmltble.cxx149
-rw-r--r--sw/source/filter/xml/xmltexte.hxx12
-rw-r--r--sw/source/filter/xml/xmltexti.cxx9
-rw-r--r--sw/source/ui/dialog/swdlgfact.cxx4
-rw-r--r--sw/source/ui/dialog/swdlgfact.hxx2
-rw-r--r--sw/source/ui/misc/bookmark.cxx123
-rw-r--r--sw/source/uibase/config/StoredChapterNumbering.cxx2
-rw-r--r--sw/source/uibase/dochdl/swdtflvr.cxx2
-rw-r--r--sw/source/uibase/docvw/edtwin.cxx29
-rw-r--r--sw/source/uibase/inc/bookmark.hxx17
-rw-r--r--sw/source/uibase/inc/wrtsh.hxx3
-rw-r--r--sw/source/uibase/lingu/hhcwrp.cxx4
-rw-r--r--sw/source/uibase/ribbar/inputwin.cxx4
-rw-r--r--sw/source/uibase/shells/textfld.cxx2
-rw-r--r--sw/source/uibase/shells/textsh1.cxx13
-rw-r--r--sw/source/uibase/uitest/uiobject.cxx25
-rw-r--r--sw/source/uibase/utlui/content.cxx16
-rw-r--r--sw/source/uibase/wrtsh/delete.cxx28
-rw-r--r--sw/source/uibase/wrtsh/select.cxx4
-rw-r--r--sw/source/uibase/wrtsh/wrtsh1.cxx20
-rw-r--r--sw/uiconfig/swriter/ui/insertbookmark.ui20
-rw-r--r--sysui/desktop/debian/control4
-rw-r--r--sysui/desktop/freedesktop/freedesktop-menus.spec5
-rw-r--r--sysui/desktop/icons/hicolor/1024x1024/apps/main.pngbin19491 -> 51860 bytes
-rw-r--r--sysui/desktop/icons/hicolor/1024x1024/apps/main.svg98
-rw-r--r--sysui/desktop/icons/hicolor/1024x1024/apps/startcenter.pngbin19491 -> 51860 bytes
-rw-r--r--sysui/desktop/icons/hicolor/1024x1024/apps/startcenter.svg98
-rw-r--r--sysui/desktop/icons/hicolor/128x128/apps/main.pngbin2092 -> 3539 bytes
-rw-r--r--sysui/desktop/icons/hicolor/128x128/apps/main.svg98
-rw-r--r--sysui/desktop/icons/hicolor/128x128/apps/startcenter.pngbin2092 -> 3539 bytes
-rw-r--r--sysui/desktop/icons/hicolor/128x128/apps/startcenter.svg98
-rw-r--r--sysui/desktop/icons/hicolor/16x16/apps/main.pngbin385 -> 841 bytes
-rw-r--r--sysui/desktop/icons/hicolor/16x16/apps/main.svg98
-rw-r--r--sysui/desktop/icons/hicolor/16x16/apps/startcenter.pngbin385 -> 841 bytes
-rw-r--r--sysui/desktop/icons/hicolor/16x16/apps/startcenter.svg98
-rw-r--r--sysui/desktop/icons/hicolor/22x22/apps/main.pngbin503 -> 987 bytes
-rw-r--r--sysui/desktop/icons/hicolor/22x22/apps/main.svg98
-rw-r--r--sysui/desktop/icons/hicolor/22x22/apps/startcenter.pngbin503 -> 987 bytes
-rw-r--r--sysui/desktop/icons/hicolor/22x22/apps/startcenter.svg98
-rw-r--r--sysui/desktop/icons/hicolor/24x24/apps/main.pngbin533 -> 1040 bytes
-rw-r--r--sysui/desktop/icons/hicolor/24x24/apps/main.svg98
-rw-r--r--sysui/desktop/icons/hicolor/24x24/apps/startcenter.pngbin533 -> 1040 bytes
-rw-r--r--sysui/desktop/icons/hicolor/24x24/apps/startcenter.svg98
-rw-r--r--sysui/desktop/icons/hicolor/256x256/apps/main.pngbin4172 -> 2913 bytes
-rw-r--r--sysui/desktop/icons/hicolor/256x256/apps/main.svg98
-rw-r--r--sysui/desktop/icons/hicolor/256x256/apps/startcenter.pngbin4172 -> 2913 bytes
-rw-r--r--sysui/desktop/icons/hicolor/256x256/apps/startcenter.svg98
-rw-r--r--sysui/desktop/icons/hicolor/32x32/apps/main.pngbin649 -> 1147 bytes
-rw-r--r--sysui/desktop/icons/hicolor/32x32/apps/main.svg98
-rw-r--r--sysui/desktop/icons/hicolor/32x32/apps/startcenter.pngbin649 -> 1147 bytes
-rw-r--r--sysui/desktop/icons/hicolor/32x32/apps/startcenter.svg98
-rw-r--r--sysui/desktop/icons/hicolor/48x48/apps/main.pngbin912 -> 1419 bytes
-rw-r--r--sysui/desktop/icons/hicolor/48x48/apps/main.svg98
-rw-r--r--sysui/desktop/icons/hicolor/48x48/apps/startcenter.pngbin912 -> 1419 bytes
-rw-r--r--sysui/desktop/icons/hicolor/48x48/apps/startcenter.svg98
-rw-r--r--sysui/desktop/icons/hicolor/512x512/apps/main.pngbin8799 -> 18371 bytes
-rw-r--r--sysui/desktop/icons/hicolor/512x512/apps/main.svg98
-rw-r--r--sysui/desktop/icons/hicolor/512x512/apps/startcenter.pngbin8799 -> 18371 bytes
-rw-r--r--sysui/desktop/icons/hicolor/512x512/apps/startcenter.svg98
-rw-r--r--sysui/desktop/icons/hicolor/64x64/apps/main.pngbin1148 -> 1574 bytes
-rw-r--r--sysui/desktop/icons/hicolor/64x64/apps/main.svg98
-rw-r--r--sysui/desktop/icons/hicolor/64x64/apps/startcenter.pngbin1148 -> 1574 bytes
-rw-r--r--sysui/desktop/icons/hicolor/64x64/apps/startcenter.svg98
-rw-r--r--sysui/desktop/icons/hicolor/scalable/apps/main.pngbin2092 -> 4966 bytes
-rw-r--r--sysui/desktop/icons/hicolor/scalable/apps/main.svg84
-rw-r--r--sysui/desktop/icons/hicolor/scalable/apps/startcenter.svg418
-rw-r--r--sysui/desktop/icons/locolor/16x16/apps/main.pngbin385 -> 841 bytes
-rw-r--r--sysui/desktop/icons/locolor/16x16/apps/main.svg11
-rw-r--r--sysui/desktop/icons/locolor/16x16/apps/startcenter.pngbin385 -> 841 bytes
-rw-r--r--sysui/desktop/icons/locolor/16x16/apps/startcenter.svg11
-rw-r--r--sysui/desktop/icons/locolor/32x32/apps/main.pngbin649 -> 1147 bytes
-rw-r--r--sysui/desktop/icons/locolor/32x32/apps/main.svg17
-rw-r--r--sysui/desktop/icons/locolor/32x32/apps/startcenter.pngbin649 -> 1147 bytes
-rw-r--r--sysui/desktop/icons/locolor/32x32/apps/startcenter.svg17
-rw-r--r--sysui/desktop/menus/startcenter.desktop2
-rwxr-xr-xsysui/desktop/share/create_tree.sh8
-rw-r--r--sysui/desktop/share/launcher_comment.ulf2
-rw-r--r--sysui/productlist.mk6
-rw-r--r--test/source/xmltesttools.cxx2
-rw-r--r--tools/source/fsys/fileutil.cxx7
m---------translations0
-rw-r--r--ucb/CppunitTest_ucb_webdav_core.mk14
-rw-r--r--ucb/Library_ucpdav1.mk19
-rw-r--r--ucb/source/ucp/webdav-curl/CurlSession.cxx25
-rw-r--r--ucb/source/ucp/webdav-curl/CurlSession.hxx4
-rw-r--r--ucb/source/ucp/webdav-curl/ImportCookies.cxx243
-rw-r--r--unoxml/source/xpath/xpathobject.cxx2
-rw-r--r--vcl/source/app/salvtables.cxx13
-rw-r--r--vcl/source/outdev/text.cxx2
-rw-r--r--vcl/source/treelist/svtabbx.cxx25
-rw-r--r--vcl/source/treelist/treelistbox.cxx7
-rw-r--r--vcl/source/treelist/uiobject.cxx13
-rw-r--r--vcl/unx/gtk3/gtk3gtkinst.cxx151
-rw-r--r--vcl/win/app/salinst.cxx2
-rw-r--r--vcl/win/window/salframe.cxx21
-rw-r--r--wizards/source/access2base/DoCmd.xba2
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.cxx51
-rw-r--r--writerfilter/source/dmapper/GraphicImport.cxx11
-rw-r--r--xmloff/source/draw/ximpshap.cxx4
-rw-r--r--xmloff/source/style/xmlnume.cxx19
324 files changed, 5112 insertions, 4297 deletions
diff --git a/brand/cib/Image.svg b/brand/cib/Image.svg
index 369941585b61..b956bf05571f 100644
--- a/brand/cib/Image.svg
+++ b/brand/cib/Image.svg
@@ -2,30 +2,30 @@
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
x="0px"
y="0px"
viewBox="0 0 162 312"
xml:space="preserve"
id="svg3336"
- inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+ inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
sodipodi:docname="Image.svg"
width="162"
height="312"
inkscape:export-filename="C:\cygwin\home\Marina\lode\dev\FLOSS-194\instsetoo_native\inc_common\windows\msi_templates\Binary\ImageBanner.bmp.png"
inkscape:export-xdpi="96"
- inkscape:export-ydpi="96"><metadata
+ inkscape:export-ydpi="96"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata
id="metadata3474"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs3472"><clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath4978"><rect
@@ -61,22 +61,24 @@
guidetolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
- inkscape:window-width="2880"
- inkscape:window-height="1721"
+ inkscape:window-width="1920"
+ inkscape:window-height="1011"
id="namedview3470"
showgrid="false"
inkscape:zoom="2.02"
- inkscape:cx="263.66575"
- inkscape:cy="147.35983"
- inkscape:window-x="2869"
- inkscape:window-y="-11"
+ inkscape:cx="180.44554"
+ inkscape:cy="147.52475"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="doXigate_Arbeitsunterlagen"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
- inkscape:showpageshadow="false" />
+ inkscape:showpageshadow="false"
+ inkscape:pagecheckerboard="0"
+ inkscape:deskcolor="#d1d1d1" />
<style
type="text/css"
id="style3338">
@@ -292,15 +294,31 @@
class="cls-1"
x="-12.205721"
y="-40.636944"
- style="fill:#961e29;stroke-width:2.30338931" /><g
- id="g1001"><path
- d="m 23.59,4.5 a 0.7,0.7 0 0 0 -0.643,0.409 0.68,0.68 0 0 0 0.149,0.74 l 5.814,5.833 a 0.7,0.7 0 0 0 0.74,0.151 0.688,0.688 0 0 0 0.425,-0.617 V 5.172 A 0.7,0.7 0 0 0 29.393,4.5 Z"
- class="cls-2"
- id="path6084"
- inkscape:connector-curvature="0"
- style="fill:#ffffff" /><path
- d="M 7.6,4.5 A 0.689,0.689 0 0 0 6.921,5.19 V 31.81 A 0.688,0.688 0 0 0 7.6,32.5 l 15.3,-0.008 c 2.249,0.008 7.18,-4.832 7.18,-7.278 V 14.668 a 0.691,0.691 0 0 0 -0.2,-0.49 L 20.452,4.711 A 0.689,0.689 0 0 0 19.963,4.5 Z m 0.689,1.379 h 11.385 l 9.026,9.067 c 0,0 0,9.218 0,9.809 0,1.835 -4.229,6.366 -6.45,6.366 H 8.293 Z"
- class="cls-2"
- id="path6088"
- inkscape:connector-curvature="0"
- style="fill:#ffffff" /></g></g></svg> \ No newline at end of file
+ style="fill:#ffffff;stroke-width:2.30338931;fill-opacity:1" /><g
+ id="g25"
+ transform="matrix(1.3734481,0,0,1.3734481,2.7428059,-8.3812465)"><path
+ d="m 21.65,17.96 c -0.31,-0.32 -0.83,-0.32 -1.14,0 L 12.1,26.37 8.57,22.85 6.65,24.77 12.1,30.22 23.01,19.31 21.66,17.95 Z"
+ style="fill:#e11e19"
+ id="path15" /><path
+ d="m 15.74,28.28 -2.33,1.97 h 1.45 c 2.67,0 4.84,-2.17 4.84,-4.84 v -0.44 l -2.22,1.9 c -0.37,0.67 -0.99,1.18 -1.74,1.41 z"
+ style="fill:#e11e19"
+ id="path17" /><polygon
+ points="4.92,28.42 4.92,10.25 17.86,10.25 17.86,18.13 19.69,16.56 19.69,8.41 3.08,8.41 3.08,30.26 9.62,30.26 8.07,28.42 "
+ style="fill:#e11e19"
+ id="polygon19" /><rect
+ x="7.2600002"
+ y="11.82"
+ width="7.8899999"
+ height="2.24"
+ rx="1.05"
+ ry="1.05"
+ style="fill:#e11e19"
+ id="rect21" /><rect
+ x="7.3699999"
+ y="17.120001"
+ width="7.8899999"
+ height="2.1300001"
+ rx="1"
+ ry="1"
+ style="fill:#e11e19"
+ id="rect23" /></g></g></svg>
diff --git a/brand/cib/banner.svg b/brand/cib/banner.svg
index 9b03d38ea183..6024e93533ee 100644
--- a/brand/cib/banner.svg
+++ b/brand/cib/banner.svg
@@ -2,30 +2,30 @@
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
x="0px"
y="0px"
viewBox="0 0 499 58"
xml:space="preserve"
id="svg3336"
- inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+ inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
sodipodi:docname="banner.svg"
width="499"
height="58"
inkscape:export-filename="C:\cygwin\home\Marina\lode\dev\FLOSS-194\brand\cib\intro-highres.png"
inkscape:export-xdpi="96"
- inkscape:export-ydpi="96"><metadata
+ inkscape:export-ydpi="96"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata
id="metadata3474"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs3472"><clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath4978"><rect
@@ -62,21 +62,23 @@
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-width="1920"
- inkscape:window-height="1000"
+ inkscape:window-height="1011"
id="namedview3470"
showgrid="false"
- inkscape:zoom="2.16"
- inkscape:cx="263.66575"
- inkscape:cy="108.40609"
- inkscape:window-x="-11"
- inkscape:window-y="-11"
+ inkscape:zoom="5.2987922"
+ inkscape:cx="408.20623"
+ inkscape:cy="66.052788"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg3336"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
- inkscape:showpageshadow="false" />
+ inkscape:showpageshadow="false"
+ inkscape:pagecheckerboard="0"
+ inkscape:deskcolor="#d1d1d1" />
<style
type="text/css"
id="style3338">
@@ -283,24 +285,30 @@
</g>
<g
- data-name="doXigate Arbeitsunterlagen"
- id="doXigate_Arbeitsunterlagen"
- transform="matrix(1.5675676,0,0,1.5675676,441,-6e-7)"><rect
- id="rect997"
- height="37"
- width="37"
- class="cls-1"
- x="0"
- y="0"
- style="fill:#961e29" /><g
- id="g1001"><path
- d="m 23.59,4.5 a 0.7,0.7 0 0 0 -0.643,0.409 0.68,0.68 0 0 0 0.149,0.74 l 5.814,5.833 a 0.7,0.7 0 0 0 0.74,0.151 0.688,0.688 0 0 0 0.425,-0.617 V 5.172 A 0.7,0.7 0 0 0 29.393,4.5 Z"
- class="cls-2"
- id="path6084"
- inkscape:connector-curvature="0"
- style="fill:#ffffff" /><path
- d="M 7.6,4.5 A 0.689,0.689 0 0 0 6.921,5.19 V 31.81 A 0.688,0.688 0 0 0 7.6,32.5 l 15.3,-0.008 c 2.249,0.008 7.18,-4.832 7.18,-7.278 V 14.668 a 0.691,0.691 0 0 0 -0.2,-0.49 L 20.452,4.711 A 0.689,0.689 0 0 0 19.963,4.5 Z m 0.689,1.379 h 11.385 l 9.026,9.067 c 0,0 0,9.218 0,9.809 0,1.835 -4.229,6.366 -6.45,6.366 H 8.293 Z"
- class="cls-2"
- id="path6088"
- inkscape:connector-curvature="0"
- style="fill:#ffffff" /></g></g></svg> \ No newline at end of file
+ id="g25"
+ transform="matrix(2.5725516,0,0,2.5725516,438.56872,-20.558642)"><path
+ d="m 21.65,17.96 c -0.31,-0.32 -0.83,-0.32 -1.14,0 L 12.1,26.37 8.57,22.85 6.65,24.77 12.1,30.22 23.01,19.31 21.66,17.95 Z"
+ style="fill:#e11e19"
+ id="path15" /><path
+ d="m 15.74,28.28 -2.33,1.97 h 1.45 c 2.67,0 4.84,-2.17 4.84,-4.84 v -0.44 l -2.22,1.9 c -0.37,0.67 -0.99,1.18 -1.74,1.41 z"
+ style="fill:#e11e19"
+ id="path17" /><polygon
+ points="8.07,28.42 4.92,28.42 4.92,10.25 17.86,10.25 17.86,18.13 19.69,16.56 19.69,8.41 3.08,8.41 3.08,30.26 9.62,30.26 "
+ style="fill:#e11e19"
+ id="polygon19" /><rect
+ x="7.2600002"
+ y="11.82"
+ width="7.8899999"
+ height="2.24"
+ rx="1.05"
+ ry="1.05"
+ style="fill:#e11e19"
+ id="rect21" /><rect
+ x="7.3699999"
+ y="17.120001"
+ width="7.8899999"
+ height="2.1300001"
+ rx="1"
+ ry="1"
+ style="fill:#e11e19"
+ id="rect23" /></g></svg>
diff --git a/brand/cib/flat_logo.svg b/brand/cib/flat_logo.svg
index b9f52ca5d5d1..2ee6c3366d9e 100644
--- a/brand/cib/flat_logo.svg
+++ b/brand/cib/flat_logo.svg
@@ -1,417 +1,87 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.1"
- x="0px"
- y="0px"
- viewBox="0 0 491.5 85.5"
- xml:space="preserve"
- id="svg3336"
- inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
- sodipodi:docname="flat_logo.svg"
- width="491.5"
- height="85.5"><metadata
- id="metadata3474"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
- id="defs3472"><clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4978"><rect
- style="fill:#5fa243;fill-opacity:1"
- id="rect4980"
- width="113.625"
- height="79.875"
- x="72.875"
- y="50.125" /></clipPath><style
- id="style1078">
- .cls-1 {
- fill: #961e29;
- }
-
- .cls-2 {
- fill: #fff;
- }
- </style><style
- id="style943">
- .cls-1 {
- fill: #961e29;
- }
-
- .cls-2 {
- fill: #fff;
- }
- </style></defs><sodipodi:namedview
- pagecolor="#eff1f4"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="2880"
- inkscape:window-height="1721"
- id="namedview3470"
- showgrid="false"
- inkscape:zoom="2.8284271"
- inkscape:cx="226.99865"
- inkscape:cy="120.32247"
- inkscape:window-x="2869"
- inkscape:window-y="-11"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg3336"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0"
- inkscape:showpageshadow="false" />
-<style
- type="text/css"
- id="style3338">
- .st0{display:none;}
- .st1{display:inline;}
- .st2{fill:#5FA243;}
- .st3{fill:#FFFFFF;}
- .st4{fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;}
- .st5{fill:#C12521;}
- .st6{clip-path:url(#SVGID_2_);fill:#FFFFFF;}
- .st7{display:inline;fill:#5FA243;}
- .st8{display:inline;fill:#C12521;}
- .st9{display:inline;fill:#FFFFFF;}
- .st10{clip-path:url(#SVGID_4_);fill:#FFFFFF;}
- .st11{font-family:'CIBUnit';}
- .st12{font-size:17px;}
-</style>
-<g
- id="alte_version"
- class="st0"
- style="display:none"
- transform="translate(-52.877201,-98.441053)">
- <g
- class="st1"
- id="g3341"
- style="display:inline">
- <polygon
- class="st2"
- points="262,-250 262,-64 0,-64 0,-249.9 "
- id="polygon3343"
- style="fill:#5fa243" />
- </g>
- <g
- id="Libre_2_"
- class="st1"
- style="display:inline">
- <polyline
- class="st3"
- points="73.7,-207.5 73.7,-182.8 89.6,-182.8 89.6,-186.5 78.6,-186.5 78.6,-207.5 73.7,-207.5 "
- id="polyline3346"
- style="fill:#ffffff" />
- <path
- class="st3"
- d="m 92.6,-182.8 h 4.9 v -17.8 h -4.9 v 17.8 m 2.4,-19.3 c 1.5,0 2.8,-1.2 2.8,-2.8 0,-1.5 -1.3,-2.8 -2.8,-2.8 -1.6,0 -2.8,1.3 -2.8,2.8 0,1.6 1.3,2.8 2.8,2.8"
- id="path3348"
- inkscape:connector-curvature="0"
- style="fill:#ffffff" />
- <path
- class="st3"
- d="m 105.9,-198.5 v 0 L 105.8,-209 H 101 v 26.2 h 4.8 l 0.1,-2.1 h 0.1 c 1.5,1.7 3,2.4 5.6,2.4 4.7,0 7.8,-4.3 7.8,-9.6 0,-5.1 -2.8,-8.9 -7.6,-8.9 -2.7,0.1 -4.2,0.9 -5.9,2.5 m 0,6.4 c 0,-3.1 1.4,-5.1 4,-5.1 2.9,0 4.4,2.1 4.4,5.5 0,3.4 -1.4,5.5 -4.3,5.5 -2.5,0 -4.1,-2 -4.1,-5.1 v -0.8"
- id="path3350"
- inkscape:connector-curvature="0"
- style="fill:#ffffff" />
- <path
- class="st3"
- d="m 132.4,-200.9 c -2.3,0.1 -4.5,1.6 -5.6,3.5 h -0.1 l -0.1,-3.2 h -4.8 v 17.8 h 4.9 v -6.7 c 0,-3.6 0.7,-4.8 1.8,-5.7 1,-0.7 2.1,-1 3.7,-1.1 l 0.2,-4.6"
- id="path3352"
- inkscape:connector-curvature="0"
- style="fill:#ffffff" />
- <path
- class="st3"
- d="m 150.3,-192.7 c 0,-4.4 -2.7,-8.2 -7.3,-8.2 -5.6,0 -9.2,3.9 -9.2,9.7 0,5.7 3.7,8.8 9.2,8.8 2.6,0 4.4,-0.4 6.1,-1.2 l -0.5,-3.6 c -1.6,0.7 -3.2,1.1 -5,1.1 -2.9,0 -4.8,-1.3 -5,-4.1 h 11.5 c 0.1,-0.7 0.2,-1.7 0.2,-2.5 m -7.9,-4.5 c 2.1,0 3.1,1.7 3.2,3.5 h -6.9 c 0.4,-2 1.8,-3.5 3.7,-3.5"
- id="path3354"
- inkscape:connector-curvature="0"
- style="fill:#ffffff" />
- <path
- class="st3"
- d="m 165,-207.8 c -6.5,0 -11.9,4.8 -11.9,12.7 0,7.9 5.4,12.7 11.9,12.7 6.5,0 11.9,-4.8 11.9,-12.7 0.1,-8 -5.3,-12.7 -11.9,-12.7 m 0,2.4 c 4.9,0 8.6,3.6 8.6,10.2 0,6.6 -3.7,10.2 -8.6,10.2 -4.9,0 -8.6,-3.6 -8.6,-10.2 0.1,-6.5 3.8,-10.2 8.6,-10.2"
- id="path3356"
- inkscape:connector-curvature="0"
- style="fill:#ffffff" />
- <path
- class="st3"
- d="m 181.6,-201.5 v 1.1 h -2.9 v 2.3 h 2.9 v 15.3 h 3 v -15.3 h 4.5 v -2.3 h -4.5 v -1.6 c 0,-3.2 1.3,-5 3.8,-5 1.1,0 1.9,0.2 2.5,0.4 l 0.3,-2.3 c -0.7,-0.3 -1.9,-0.5 -2.9,-0.5 -4.2,0 -6.7,2.8 -6.7,7.9"
- id="path3358"
- inkscape:connector-curvature="0"
- style="fill:#ffffff" />
- <path
- class="st3"
- d="m 191.7,-201.5 v 1.1 h -2.9 v 2.3 h 2.9 v 15.3 h 3 v -15.3 h 4.5 v -2.3 h -4.5 v -1.6 c 0,-3.2 1.3,-5 3.8,-5 1.1,0 1.9,0.2 2.5,0.4 l 0.3,-2.3 c -0.7,-0.3 -1.9,-0.5 -2.9,-0.5 -4.2,0 -6.7,2.8 -6.7,7.9"
- id="path3360"
- inkscape:connector-curvature="0"
- style="fill:#ffffff" />
- <path
- class="st3"
- d="m 202.8,-182.8 h 3 v -17.6 h -3 v 17.6 m 1.5,-20.2 c 1.1,0 1.9,-0.8 1.9,-1.9 0,-1.1 -0.8,-1.9 -1.9,-1.9 -1.1,0 -1.9,0.8 -1.9,1.9 0.1,1.1 0.9,1.9 1.9,1.9"
- id="path3362"
- inkscape:connector-curvature="0"
- style="fill:#ffffff" />
- <path
- class="st3"
- d="m 212.2,-191.7 c 0,-4.4 2.7,-6.8 6.1,-6.8 1.8,0 3.4,0.4 4.7,1.1 l 0.3,-2.3 c -1.1,-0.5 -2.8,-1.1 -4.8,-1.1 -5.4,0 -9.5,3.3 -9.5,9.5 0,5.8 3.7,8.9 8.6,8.9 2.2,0 3.7,-0.3 5.5,-1 l -0.3,-2.3 c -1.5,0.7 -3.2,1 -4.7,1 -3.5,0 -5.9,-2.3 -5.9,-7"
- id="path3364"
- inkscape:connector-curvature="0"
- style="fill:#ffffff" />
- <path
- class="st3"
- d="m 240.5,-190.9 c 0.1,-0.7 0.1,-1.2 0.1,-1.8 0,-4.5 -2.4,-8.1 -6.9,-8.1 -4.9,0 -8.5,4.1 -8.5,9.5 0,6 3.6,8.9 8.5,8.9 2.2,0 3.8,-0.3 5.5,-1 l -0.3,-2.3 c -1.3,0.7 -3.3,1 -4.8,1 -3.5,0 -5.8,-2.2 -5.9,-6.2 h 12.3 m -7,-7.5 c 2.7,0 4.1,2.2 4.1,5.1 h -9.2 c 0.5,-3.1 2.2,-5.1 5.1,-5.1"
- id="path3366"
- inkscape:connector-curvature="0"
- style="fill:#ffffff" />
- <path
- class="st4"
- d="m 47.3,-224.2 c -0.4,0 -0.8,0.2 -1,0.6 -0.2,0.4 -0.1,0.8 0.2,1.1 l 8.7,8.8 c 0.3,0.3 0.7,0.4 1.1,0.2 0.4,-0.2 0.6,-0.5 0.6,-0.9 v -8.8 c 0,-0.5 -0.5,-1 -1,-1 z m 0,0"
- id="path3368"
- inkscape:connector-curvature="0"
- style="clip-rule:evenodd;fill:#ffffff;fill-rule:evenodd" />
- <path
- class="st4"
- d="m 23.4,-224.2 c -0.5,0 -1,0.5 -1,1 v 39.9 c 0,0.5 0.5,1 1,1 H 56 c 0.5,0 1,-0.5 1,-1 V -209 c 0,-0.3 -0.1,-0.5 -0.3,-0.7 l -14.1,-14.2 c -0.2,-0.2 -0.5,-0.3 -0.7,-0.3 z m 1,2.1 h 17.1 l 13.5,13.6 v 24.3 H 24.4 Z m 0,0"
- id="path3370"
- inkscape:connector-curvature="0"
- style="clip-rule:evenodd;fill:#ffffff;fill-rule:evenodd" />
- </g>
- <g
- class="st1"
- id="g3372"
- style="display:inline">
- <path
- class="st5"
- d="M 0,-103.5 0.1,-64 H 262 v -112 c -82,46.9 -180.2,-13.4 -262,72.5 z"
- id="path3374"
- inkscape:connector-curvature="0"
- style="fill:#c12521" />
- </g>
- <g
- class="st1"
- id="g3376"
- style="display:inline">
- <path
- class="st3"
- d="m 313.7,-253 c 0,0 -0.3,1.4 -1,4.1 -0.6,2.7 -1.7,6.6 -3.2,11.5 -1.6,4.9 -3.6,10.8 -6.6,17.4 -3,6.6 -6.9,13.8 -12.1,21 -0.7,0.9 -1.3,1.8 -2,2.7 -0.7,0.9 -1.5,1.8 -2.2,2.7 -0.4,0.4 -0.7,0.9 -1.1,1.4 -0.4,0.4 -0.8,0.9 -1.2,1.3 -0.8,0.9 -1.6,1.8 -2.4,2.6 -0.8,0.9 -1.7,1.7 -2.6,2.6 -0.4,0.4 -0.9,0.9 -1.3,1.3 -0.4,0.4 -0.9,0.8 -1.4,1.2 -0.9,0.8 -1.9,1.6 -2.9,2.5 -1,0.8 -2,1.5 -3,2.3 -4.1,3 -8.6,5.9 -13.4,8.3 -4.8,2.4 -9.9,4.6 -15.2,6.3 -10.6,3.5 -22,5.7 -33.5,7 -11.6,1.4 -23.3,1.8 -35.1,2.1 -11.7,0.2 -23.4,0.5 -35,0.7 -11.5,0.3 -22.8,0.9 -33.7,2.1 -10.9,1.1 -21.3,3 -31,5.4 -9.7,2.5 -18.6,5.6 -26.6,9.2 -8,3.6 -14.9,7.6 -20.8,11.6 -1.5,0.9 -2.9,2 -4.2,3 -0.7,0.5 -1.3,1 -2,1.4 -0.6,0.5 -1.2,1 -1.8,1.5 -1.2,0.9 -2.4,1.8 -3.5,2.7 -1.1,0.9 -2.1,1.8 -3.1,2.6 -2,1.6 -3.6,3.2 -5.1,4.6 -1.5,1.3 -2.7,2.5 -3.6,3.5 -2,1.9 -3,3 -3,3 0,0 1,-1.1 2.8,-3.2 0.9,-1 2,-2.3 3.4,-3.7 1.4,-1.4 3,-3.1 4.9,-4.8 3.7,-3.6 8.5,-7.6 14.4,-11.7 5.8,-4.2 12.8,-8.4 20.8,-12.1 8,-3.8 17,-7.1 26.8,-9.8 9.8,-2.6 20.3,-4.6 31.3,-6 11,-1.4 22.3,-2.1 33.9,-2.6 11.6,-0.5 23.3,-0.7 35,-1.1 11.7,-0.4 23.4,-1 34.7,-2.3 11.4,-1.3 22.4,-3.5 32.7,-6.8 10.2,-3.5 19.6,-8.2 27.6,-14 1,-0.7 2,-1.5 2.9,-2.2 0.9,-0.8 1.9,-1.6 2.8,-2.3 0.9,-0.8 1.8,-1.6 2.7,-2.4 0.9,-0.8 1.7,-1.6 2.6,-2.4 0.8,-0.8 1.6,-1.7 2.4,-2.5 0.4,-0.4 0.8,-0.8 1.2,-1.2 0.4,-0.4 0.7,-0.9 1.1,-1.3 0.7,-0.9 1.5,-1.7 2.2,-2.5 0.7,-0.8 1.4,-1.7 2,-2.6 5.3,-6.8 9.4,-13.8 12.6,-20 3.3,-6.3 5.6,-12 7.5,-16.8 0.9,-2.4 1.7,-4.5 2.4,-6.4 0.4,-0.9 0.6,-1.8 0.9,-2.6 0.3,-0.8 0.5,-1.5 0.7,-2.2 0.8,-2.7 1.3,-4.1 1.3,-4.1 z"
- id="path3378"
- inkscape:connector-curvature="0"
- style="fill:#ffffff" />
- </g>
- <g
- class="st1"
- id="g3380"
- style="display:inline">
- <path
- class="st3"
- d="m 185.1,-89.2 c 0,1.9 -2.3,4 -4.2,4 -1.2,0 -3.4,0 -3.4,0 v -33.6 h 7.6 z"
- id="path3382"
- inkscape:connector-curvature="0"
- style="fill:#ffffff" />
- <g
- id="g3384">
- <defs
- id="defs3386">
- <rect
- id="SVGID_1_"
- x="147.60001"
- y="-126.7"
- width="92.699997"
- height="42" />
- </defs>
- <clipPath
- id="SVGID_2_">
- <use
- xlink:href="#SVGID_1_"
- style="overflow:visible"
- id="use3390"
- x="0"
- y="0"
- width="100%"
- height="100%" />
- </clipPath>
- <path
- class="st6"
- d="m 207.1,-108.8 c 0,-1.3 -0.3,-2.3 -0.9,-2.8 -0.6,-0.5 -1.7,-0.8 -3.1,-0.8 H 197 v 7.3 h 6.3 c 1.3,0 2.3,-0.3 2.9,-0.9 0.6,-0.5 0.9,-1.5 0.9,-2.8 z m 0.8,13.3 c 0,-1.4 -0.3,-2.4 -1,-3.1 -0.7,-0.6 -1.8,-0.9 -3.5,-0.9 h -6.5 v 8.1 h 6.7 c 0,0 2.6,-0.3 3.3,-0.9 0.7,-0.5 1,-1.6 1,-3.2 z m -14.3,-23.3 c 0.8,0 9.7,0 9.7,0 3.7,0 6.4,0.8 8.2,2.3 1.8,1.5 2.7,3.6 2.7,6.3 0,1.9 -0.4,3.4 -1.2,4.6 -0.8,1.2 -1.9,2.1 -3.2,2.6 v 0.1 c 3.8,1 5.7,3.7 5.7,7.9 0,1.5 -0.2,2.9 -0.7,4.1 -0.5,1.2 -1.2,2.2 -2.1,3.1 -1,0.9 -2.2,1.5 -3.7,1.9 -1.5,0.4 -3.3,0.7 -5.4,0.7 h -13.8 c 0,0 0,-29.6 0,-29.6 -0.1,-1.5 2.2,-4 3.8,-4 z"
- id="path3392"
- clip-path="url(#SVGID_2_)"
- inkscape:connector-curvature="0"
- style="fill:#ffffff" />
- <path
- class="st6"
- d="m 167.1,-112.3 c -9.3,-1.4 -11.6,1.8 -11.6,10.3 0,8.2 2.3,11.3 12.4,10.3 3.2,-0.3 3.9,0.7 4.5,5.6 -1.1,0.6 -5.9,1.4 -9.3,1.3 -5.1,-0.2 -9.3,-1.4 -11.7,-4.3 -2.5,-2.8 -3.7,-7.2 -3.7,-13.2 0,-12 5.4,-17 15.9,-17 5.1,0 8.6,1.5 8.6,1.5 -1,5.6 -1.9,6 -5.1,5.5 z"
- id="path3394"
- clip-path="url(#SVGID_2_)"
- inkscape:connector-curvature="0"
- style="fill:#ffffff" />
- </g>
- <path
- class="st3"
- d="m 234.5,-99.5 c 2.5,0 6.2,-4 6.2,-6.1 0,0 0,-21 0,-21 h -19.3 v 27.2 h 13.1 z"
- id="path3396"
- inkscape:connector-curvature="0"
- style="fill:#ffffff" />
- </g>
- <text
- transform="translate(20.9652,-84.5756)"
- class="st9 st11 st12"
- id="text3398"
- style="font-size:17px;line-height:0%;font-family:CIBUnit;display:inline;fill:#ffffff">powered by</text>
-
-
-
-
-
-
-</g>
-
-<g
- data-name="doXigate Arbeitsunterlagen"
- id="doXigate_Arbeitsunterlagen"
- transform="matrix(2.1647413,0,0,2.1647413,66.690227,2.702286)"><g
- id="g995"><path
- id="path949"
- d="M 53.008,20.047 H 43 V 3.242 h 3.785 v 13.735 h 6.223 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path951"
- d="m 56.781,6.148 a 2.163,2.163 0 0 1 -1.535,-0.556 1.8,1.8 0 0 1 -0.6,-1.365 1.733,1.733 0 0 1 0.6,-1.36 2.508,2.508 0 0 1 3.076,0 1.737,1.737 0 0 1 0.592,1.36 1.783,1.783 0 0 1 -0.592,1.382 2.2,2.2 0 0 1 -1.541,0.539 z m 1.828,13.9 h -3.7 v -12 h 3.7 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path953"
- d="M 65.477,18.652 H 65.43 v 1.395 h -3.7 V 2.281 h 3.7 v 7.571 h 0.047 a 4.392,4.392 0 0 1 3.9,-2.1 4.28,4.28 0 0 1 3.574,1.594 6.87,6.87 0 0 1 1.254,4.359 7.437,7.437 0 0 1 -1.465,4.816 4.771,4.771 0 0 1 -3.914,1.817 3.78,3.78 0 0 1 -3.349,-1.686 z M 65.371,13.59 v 1.23 a 2.81,2.81 0 0 0 0.668,1.922 2.173,2.173 0 0 0 1.711,0.762 2.269,2.269 0 0 0 1.963,-0.979 4.722,4.722 0 0 0 0.7,-2.771 3.763,3.763 0 0 0 -0.638,-2.326 2.156,2.156 0 0 0 -1.823,-0.838 2.352,2.352 0 0 0 -1.845,0.832 3.157,3.157 0 0 0 -0.736,2.168 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path955"
- d="m 84.438,11.387 a 3.217,3.217 0 0 0 -1.559,-0.364 2.245,2.245 0 0 0 -1.887,0.885 3.861,3.861 0 0 0 -0.679,2.408 v 5.731 h -3.7 v -12 h 3.7 v 2.226 h 0.046 a 3.2,3.2 0 0 1 3.164,-2.437 2.384,2.384 0 0 1 0.915,0.141 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path957"
- d="M 96.848,15.1 H 89.02 q 0.188,2.613 3.293,2.613 a 6.428,6.428 0 0 0 3.48,-0.938 v 2.672 a 9.139,9.139 0 0 1 -4.324,0.891 6.087,6.087 0 0 1 -4.512,-1.611 6.092,6.092 0 0 1 -1.6,-4.495 6.422,6.422 0 0 1 1.729,-4.732 5.778,5.778 0 0 1 4.266,-1.746 5.24,5.24 0 0 1 4.06,1.559 6,6 0 0 1 1.436,4.23 z m -3.434,-2.274 q 0,-2.578 -2.086,-2.578 A 1.992,1.992 0 0 0 89.787,10.986 3.361,3.361 0 0 0 89,12.828 Z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path959"
- d="m 106.516,20.34 a 7.819,7.819 0 0 1 -5.883,-2.35 8.433,8.433 0 0 1 -2.274,-6.123 9.04,9.04 0 0 1 2.309,-6.445 7.991,7.991 0 0 1 6.117,-2.461 7.63,7.63 0 0 1 5.815,2.355 8.688,8.688 0 0 1 2.22,6.211 8.894,8.894 0 0 1 -2.3,6.387 7.907,7.907 0 0 1 -6.004,2.426 z M 106.68,6.219 a 3.81,3.81 0 0 0 -3.164,1.494 6.224,6.224 0 0 0 -1.172,3.955 6.111,6.111 0 0 0 1.172,3.949 4.044,4.044 0 0 0 6.175,0.041 6.045,6.045 0 0 0 1.149,-3.92 6.555,6.555 0 0 0 -1.113,-4.066 3.63,3.63 0 0 0 -3.047,-1.453 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path961"
- d="m 125.078,5.117 a 3.746,3.746 0 0 0 -1.371,-0.281 q -1.78,0 -1.781,1.934 v 1.277 h 2.742 v 2.73 h -2.742 v 9.27 h -3.692 v -9.27 h -2.015 v -2.73 h 2.015 V 6.559 a 4.322,4.322 0 0 1 1.336,-3.3 5.1,5.1 0 0 1 3.63,-1.259 6.389,6.389 0 0 1 1.875,0.234 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path963"
- d="m 134.277,5.117 a 3.746,3.746 0 0 0 -1.371,-0.281 q -1.781,0 -1.781,1.934 v 1.277 h 2.742 v 2.73 h -2.742 v 9.27 h -3.691 v -9.27 h -2.016 v -2.73 h 2.016 V 6.559 a 4.319,4.319 0 0 1 1.336,-3.3 5.092,5.092 0 0 1 3.63,-1.259 6.389,6.389 0 0 1 1.875,0.234 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path965"
- d="m 137.523,6.148 a 2.163,2.163 0 0 1 -1.535,-0.556 1.794,1.794 0 0 1 -0.6,-1.365 1.732,1.732 0 0 1 0.6,-1.36 2.509,2.509 0 0 1 3.077,0 1.74,1.74 0 0 1 0.591,1.36 1.786,1.786 0 0 1 -0.591,1.382 2.2,2.2 0 0 1 -1.542,0.539 z m 1.829,13.9 h -3.7 v -12 h 3.7 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path967"
- d="m 151.563,19.613 a 7.316,7.316 0 0 1 -3.622,0.727 6.124,6.124 0 0 1 -4.476,-1.676 5.785,5.785 0 0 1 -1.711,-4.324 6.373,6.373 0 0 1 1.834,-4.822 6.775,6.775 0 0 1 4.9,-1.764 6.3,6.3 0 0 1 3.071,0.562 v 3.141 a 4.224,4.224 0 0 0 -2.59,-0.867 3.41,3.41 0 0 0 -2.526,0.932 3.475,3.475 0 0 0 -0.931,2.572 3.424,3.424 0 0 0 0.89,2.5 3.275,3.275 0 0 0 2.449,0.908 4.891,4.891 0 0 0 2.708,-0.867 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path969"
- d="m 164.77,15.1 h -7.829 q 0.188,2.613 3.293,2.613 a 6.429,6.429 0 0 0 3.481,-0.938 v 2.672 a 9.142,9.142 0 0 1 -4.324,0.891 6.087,6.087 0 0 1 -4.512,-1.611 6.092,6.092 0 0 1 -1.606,-4.495 6.422,6.422 0 0 1 1.735,-4.732 5.777,5.777 0 0 1 4.265,-1.746 5.242,5.242 0 0 1 4.061,1.559 6,6 0 0 1 1.436,4.23 z m -3.434,-2.274 q 0,-2.578 -2.086,-2.578 a 1.992,1.992 0 0 0 -1.541,0.738 3.354,3.354 0 0 0 -0.791,1.84 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path971"
- d="m 44.62,32.412 v 3.555 H 43 v -9.8 h 2.974 a 3.938,3.938 0 0 1 2.618,0.786 2.743,2.743 0 0 1 0.93,2.215 3.061,3.061 0 0 1 -0.971,2.338 3.689,3.689 0 0 1 -2.625,0.909 z m 0,-4.908 v 3.582 h 1.053 a 2.333,2.333 0 0 0 1.593,-0.485 1.737,1.737 0 0 0 0.547,-1.368 q 0,-1.73 -2.01,-1.729 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path973"
- d="M 56.272,36.131 A 4.41,4.41 0 0 1 52.878,34.757 5.046,5.046 0 0 1 51.6,31.182 5.348,5.348 0 0 1 52.9,27.408 4.568,4.568 0 0 1 56.43,26 a 4.31,4.31 0 0 1 3.325,1.367 5.06,5.06 0 0 1 1.262,3.575 5.364,5.364 0 0 1 -1.292,3.794 4.481,4.481 0 0 1 -3.453,1.395 z m 0.076,-8.7 a 2.727,2.727 0 0 0 -2.191,1.005 3.973,3.973 0 0 0 -0.844,2.645 4.013,4.013 0 0 0 0.82,2.632 2.647,2.647 0 0 0 2.146,1 2.77,2.77 0 0 0 2.222,-0.95 3.967,3.967 0 0 0 0.814,-2.659 4.146,4.146 0 0 0 -0.791,-2.714 2.667,2.667 0 0 0 -2.176,-0.961 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path975"
- d="m 76.025,26.164 -2.686,9.8 H 71.5 L 69.634,29.11 A 4.77,4.77 0 0 1 69.49,28.153 h -0.027 a 4.639,4.639 0 0 1 -0.164,0.944 l -1.873,6.87 h -1.88 l -2.741,-9.8 h 1.784 l 1.777,7.178 a 5.2,5.2 0 0 1 0.137,0.943 h 0.034 a 5.373,5.373 0 0 1 0.192,-0.943 l 2.009,-7.178 h 1.675 l 1.859,7.233 a 5.635,5.635 0 0 1 0.144,0.875 h 0.027 a 5.445,5.445 0 0 1 0.158,-0.9 l 1.743,-7.2 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path977"
- d="m 83.94,35.967 h -5.5 v -9.8 h 5.285 v 1.381 h -3.661 v 2.772 h 3.37 v 1.374 h -3.37 v 2.9 h 3.876 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path979"
- d="m 94.307,35.967 h -1.9 l -1.565,-2.625 a 5.813,5.813 0 0 0 -0.414,-0.619 2.488,2.488 0 0 0 -0.41,-0.42 1.349,1.349 0 0 0 -0.454,-0.239 1.9,1.9 0 0 0 -0.554,-0.076 h -0.656 v 3.979 h -1.622 v -9.8 h 3.227 a 4.678,4.678 0 0 1 1.271,0.164 2.962,2.962 0 0 1 1.012,0.5 2.3,2.3 0 0 1 0.673,0.826 2.608,2.608 0 0 1 0.243,1.16 2.883,2.883 0 0 1 -0.153,0.954 2.492,2.492 0 0 1 -0.438,0.771 2.661,2.661 0 0 1 -0.683,0.578 3.4,3.4 0 0 1 -0.9,0.369 v 0.028 a 2.489,2.489 0 0 1 0.465,0.332 c 0.132,0.12 0.258,0.244 0.376,0.372 a 4.53,4.53 0 0 1 0.352,0.434 c 0.117,0.162 0.245,0.35 0.387,0.564 z m -5.954,-8.484 v 3.186 h 1.353 a 2,2 0 0 0 0.693,-0.116 1.587,1.587 0 0 0 0.551,-0.335 1.52,1.52 0 0 0 0.363,-0.533 1.843,1.843 0 0 0 0.129,-0.7 A 1.4,1.4 0 0 0 91,27.88 1.856,1.856 0 0 0 89.722,27.48 Z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path981"
- d="m 102,35.967 h -5.5 v -9.8 h 5.284 v 1.381 h -3.659 v 2.772 h 3.37 v 1.374 h -3.37 v 2.9 H 102 Z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path983"
- d="m 104.794,35.967 v -9.8 h 2.83 q 5.421,0 5.421,4.778 a 4.711,4.711 0 0 1 -1.5,3.648 5.741,5.741 0 0 1 -4.033,1.377 z m 1.62,-8.422 v 7.048 h 1.3 a 3.636,3.636 0 0 0 2.67,-0.944 3.583,3.583 0 0 0 0.953,-2.666 q 0,-3.438 -3.562,-3.438 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path985"
- d="m 120.785,35.967 v -9.8 h 3.115 a 3.665,3.665 0 0 1 2.251,0.622 1.932,1.932 0 0 1 0.832,1.62 2.32,2.32 0 0 1 -0.472,1.45 2.548,2.548 0 0 1 -1.306,0.875 v 0.027 a 2.552,2.552 0 0 1 1.616,0.748 2.275,2.275 0 0 1 0.606,1.644 2.47,2.47 0 0 1 -0.991,2.038 3.93,3.93 0 0 1 -2.5,0.779 z m 1.62,-8.5 v 2.789 h 1.053 a 2.028,2.028 0 0 0 1.33,-0.4 1.392,1.392 0 0 0 0.482,-1.131 q 0,-1.259 -1.682,-1.258 z m 0,4.1 v 3.1 h 1.388 a 2.119,2.119 0 0 0 1.4,-0.42 1.441,1.441 0 0 0 0.5,-1.159 q 0,-1.525 -2.112,-1.524 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path987"
- d="m 136.717,26.164 -3.217,6.241 v 3.562 h -1.627 V 32.44 l -3.131,-6.276 h 1.858 l 1.927,4.2 q 0.034,0.075 0.2,0.568 h 0.021 a 3.839,3.839 0 0 1 0.226,-0.568 l 2.016,-4.2 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path989"
- d="m 150.752,35.557 a 5.938,5.938 0 0 1 -2.755,0.574 4.5,4.5 0 0 1 -3.418,-1.347 4.909,4.909 0 0 1 -1.285,-3.534 5.15,5.15 0 0 1 1.445,-3.8 4.951,4.951 0 0 1 3.655,-1.45 6,6 0 0 1 2.358,0.4 v 1.614 a 4.208,4.208 0 0 0 -2.187,-0.588 3.442,3.442 0 0 0 -2.582,1.018 3.744,3.744 0 0 0 -0.983,2.724 3.567,3.567 0 0 0 0.923,2.58 3.209,3.209 0 0 0 2.427,0.961 4.348,4.348 0 0 0 2.406,-0.656 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path991"
- d="m 155.329,35.967 h -1.675 v -9.8 h 1.675 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path993"
- d="m 158.793,35.967 v -9.8 h 3.11 a 3.667,3.667 0 0 1 2.252,0.622 1.931,1.931 0 0 1 0.831,1.62 2.32,2.32 0 0 1 -0.471,1.45 2.548,2.548 0 0 1 -1.306,0.875 v 0.027 a 2.552,2.552 0 0 1 1.616,0.748 2.279,2.279 0 0 1 0.606,1.644 2.47,2.47 0 0 1 -0.991,2.038 3.932,3.932 0 0 1 -2.5,0.779 z m 1.62,-8.5 v 2.789 h 1.053 a 2.028,2.028 0 0 0 1.33,-0.4 1.392,1.392 0 0 0 0.481,-1.131 q 0,-1.259 -1.681,-1.258 z m 0,4.1 v 3.1 h 1.387 a 2.119,2.119 0 0 0 1.405,-0.42 1.441,1.441 0 0 0 0.5,-1.159 q 0,-1.525 -2.112,-1.524 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /></g><rect
- id="rect997"
- height="37"
- width="37"
- class="cls-1"
- x="0"
- y="0"
- style="fill:#961e29" /><g
- id="g1001"><path
- d="m 23.59,4.5 a 0.7,0.7 0 0 0 -0.643,0.409 0.68,0.68 0 0 0 0.149,0.74 l 5.814,5.833 a 0.7,0.7 0 0 0 0.74,0.151 0.688,0.688 0 0 0 0.425,-0.617 V 5.172 A 0.7,0.7 0 0 0 29.393,4.5 Z"
- class="cls-2"
- id="path6084"
- inkscape:connector-curvature="0"
- style="fill:#ffffff" /><path
- d="M 7.6,4.5 A 0.689,0.689 0 0 0 6.921,5.19 V 31.81 A 0.688,0.688 0 0 0 7.6,32.5 l 15.3,-0.008 c 2.249,0.008 7.18,-4.832 7.18,-7.278 V 14.668 a 0.691,0.691 0 0 0 -0.2,-0.49 L 20.452,4.711 A 0.689,0.689 0 0 0 19.963,4.5 Z m 0.689,1.379 h 11.385 l 9.026,9.067 c 0,0 0,9.218 0,9.809 0,1.835 -4.229,6.366 -6.45,6.366 H 8.293 Z"
- class="cls-2"
- id="path6088"
- inkscape:connector-curvature="0"
- style="fill:#ffffff" /></g></g></svg> \ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.2" width="46.5mm" height="10.3mm" viewBox="0 0 4650 1030" preserveAspectRatio="xMidYMid" fill-rule="evenodd" stroke-width="28.222" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" xmlns:ooo="http://xml.openoffice.org/svg/export" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:presentation="http://sun.com/xmlns/staroffice/presentation" xmlns:smil="http://www.w3.org/2001/SMIL20/" xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0" xml:space="preserve">
+ <defs class="ClipPathGroup">
+ <clipPath id="presentation_clip_path" clipPathUnits="userSpaceOnUse">
+ <rect x="0" y="0" width="4650" height="1030"/>
+ </clipPath>
+ <clipPath id="presentation_clip_path_shrink" clipPathUnits="userSpaceOnUse">
+ <rect x="4" y="1" width="4641" height="1028"/>
+ </clipPath>
+ </defs>
+ <defs class="TextShapeIndex">
+ <g ooo:slide="id1" ooo:id-list="id3"/>
+ </defs>
+ <defs class="EmbeddedBulletChars">
+ <g id="bullet-char-template-57356" transform="scale(0.00048828125,-0.00048828125)">
+ <path d="M 580,1141 L 1163,571 580,0 -4,571 580,1141 Z"/>
+ </g>
+ <g id="bullet-char-template-57354" transform="scale(0.00048828125,-0.00048828125)">
+ <path d="M 8,1128 L 1137,1128 1137,0 8,0 8,1128 Z"/>
+ </g>
+ <g id="bullet-char-template-10146" transform="scale(0.00048828125,-0.00048828125)">
+ <path d="M 174,0 L 602,739 174,1481 1456,739 174,0 Z M 1358,739 L 309,1346 659,739 1358,739 Z"/>
+ </g>
+ <g id="bullet-char-template-10132" transform="scale(0.00048828125,-0.00048828125)">
+ <path d="M 2015,739 L 1276,0 717,0 1260,543 174,543 174,936 1260,936 717,1481 1274,1481 2015,739 Z"/>
+ </g>
+ <g id="bullet-char-template-10007" transform="scale(0.00048828125,-0.00048828125)">
+ <path d="M 0,-2 C -7,14 -16,27 -25,37 L 356,567 C 262,823 215,952 215,954 215,979 228,992 255,992 264,992 276,990 289,987 310,991 331,999 354,1012 L 381,999 492,748 772,1049 836,1024 860,1049 C 881,1039 901,1025 922,1006 886,937 835,863 770,784 769,783 710,716 594,584 L 774,223 C 774,196 753,168 711,139 L 727,119 C 717,90 699,76 672,76 641,76 570,178 457,381 L 164,-76 C 142,-110 111,-127 72,-127 30,-127 9,-110 8,-76 1,-67 -2,-52 -2,-32 -2,-23 -1,-13 0,-2 Z"/>
+ </g>
+ <g id="bullet-char-template-10004" transform="scale(0.00048828125,-0.00048828125)">
+ <path d="M 285,-33 C 182,-33 111,30 74,156 52,228 41,333 41,471 41,549 55,616 82,672 116,743 169,778 240,778 293,778 328,747 346,684 L 369,508 C 377,444 397,411 428,410 L 1163,1116 C 1174,1127 1196,1133 1229,1133 1271,1133 1292,1118 1292,1087 L 1292,965 C 1292,929 1282,901 1262,881 L 442,47 C 390,-6 338,-33 285,-33 Z"/>
+ </g>
+ <g id="bullet-char-template-9679" transform="scale(0.00048828125,-0.00048828125)">
+ <path d="M 813,0 C 632,0 489,54 383,161 276,268 223,411 223,592 223,773 276,916 383,1023 489,1130 632,1184 813,1184 992,1184 1136,1130 1245,1023 1353,916 1407,772 1407,592 1407,412 1353,268 1245,161 1136,54 992,0 813,0 Z"/>
+ </g>
+ <g id="bullet-char-template-8226" transform="scale(0.00048828125,-0.00048828125)">
+ <path d="M 346,457 C 273,457 209,483 155,535 101,586 74,649 74,723 74,796 101,859 155,911 209,963 273,989 346,989 419,989 480,963 531,910 582,859 608,796 608,723 608,648 583,586 532,535 482,483 420,457 346,457 Z"/>
+ </g>
+ <g id="bullet-char-template-8211" transform="scale(0.00048828125,-0.00048828125)">
+ <path d="M -4,459 L 1135,459 1135,606 -4,606 -4,459 Z"/>
+ </g>
+ <g id="bullet-char-template-61548" transform="scale(0.00048828125,-0.00048828125)">
+ <path d="M 173,740 C 173,903 231,1043 346,1159 462,1274 601,1332 765,1332 928,1332 1067,1274 1183,1159 1299,1043 1357,903 1357,740 1357,577 1299,437 1183,322 1067,206 928,148 765,148 601,148 462,206 346,322 231,437 173,577 173,740 Z"/>
+ </g>
+ </defs>
+ <g>
+ <g id="id2" class="Master_Slide">
+ <g id="bg-id2" class="Background"/>
+ <g id="bo-id2" class="BackgroundObjects"/>
+ </g>
+ </g>
+ <g class="SlideGroup">
+ <g>
+ <g id="container-id1">
+ <g id="id1" class="Slide" clip-path="url(#presentation_clip_path)">
+ <g class="Page">
+ <defs class="SlideBackground">
+ <g id="bg-id1" class="Background">
+ <path fill="rgb(255,255,255)" stroke="none" d="M 2325,1029 L 0,1029 0,0 4649,0 4649,1029 2325,1029 Z"/>
+ </g>
+ </defs>
+ <g class="Graphic">
+ <g id="id3">
+ <rect class="BoundingBox" stroke="none" fill="none" x="0" y="0" width="4654" height="1032"/>
+ <path fill="rgb(33,41,52)" stroke="none" d="M 1275,778 C 1236,798 1187,809 1129,809 1053,809 993,785 947,736 902,687 879,624 879,545 879,460 904,391 956,339 1007,287 1071,260 1150,260 1200,260 1242,268 1275,282 L 1275,349 C 1237,328 1195,317 1149,317 1088,317 1039,337 1001,378 963,419 944,473 944,541 944,609 962,657 997,696 1033,734 1079,753 1136,753 1190,753 1236,741 1275,718 L 1275,778 1275,778 Z"/>
+ <path fill="rgb(33,41,52)" stroke="none" d="M 1464,800 L 1402,800 1402,269 1464,269 1464,800 1464,800 Z"/>
+ <path fill="rgb(33,41,52)" stroke="none" d="M 1623,800 L 1623,269 1774,269 C 1820,269 1856,280 1883,303 1910,325 1924,355 1924,391 1924,421 1916,447 1899,469 1883,491 1861,507 1832,517 L 1832,518 C 1868,522 1896,536 1918,559 1939,581 1950,611 1950,648 1950,693 1934,730 1901,758 1869,786 1827,800 1778,800 L 1623,800 1623,800 Z M 1685,325 L 1685,497 1749,497 C 1783,497 1810,489 1829,472 1849,456 1859,432 1859,403 1859,351 1825,325 1757,325 L 1685,325 1685,325 Z M 1685,553 L 1685,744 1770,744 C 1806,744 1834,735 1854,718 1875,701 1885,677 1885,647 1885,584 1842,553 1757,553 L 1685,553 1685,553 Z"/>
+ <path fill="rgb(225,30,25)" stroke="none" d="M 586,488 C 578,480 564,480 556,488 L 333,710 240,617 189,668 333,812 622,524 586,488 586,488 Z"/>
+ <path fill="rgb(225,30,25)" stroke="none" d="M 368,813 L 406,813 C 477,813 534,756 534,685 L 534,673 476,724 C 466,741 449,755 430,761 L 368,813 Z"/>
+ <path fill="rgb(225,30,25)" stroke="none" d="M 143,765 L 143,284 486,284 486,493 534,451 534,236 95,236 95,813 268,813 227,765 143,765 143,765 Z"/>
+ <path fill="rgb(225,30,25)" stroke="none" d="M 310,385 L 386,385 C 402,385 414,372 414,357 L 414,353 C 414,338 402,326 386,326 L 233,326 C 218,326 205,338 205,353 L 205,357 C 205,372 218,385 233,385 L 310,385 Z"/>
+ <path fill="rgb(225,30,25)" stroke="none" d="M 313,522 L 390,522 C 405,522 417,510 417,496 L 417,492 C 417,478 405,466 390,466 L 235,466 C 220,466 208,478 208,492 L 208,496 C 208,510 220,522 235,522 L 313,522 Z"/>
+ <path fill="rgb(33,41,52)" stroke="none" d="M 2464,811 C 2389,811 2328,786 2283,736 2238,687 2215,622 2215,543 2215,457 2238,389 2284,338 2331,288 2393,262 2473,262 2546,262 2605,287 2650,336 2695,386 2717,450 2717,530 2717,616 2694,685 2649,735 2603,785 2541,811 2464,811 L 2464,811 Z M 2468,318 C 2413,318 2367,338 2332,379 2298,419 2280,472 2280,537 2280,602 2297,655 2331,695 2365,735 2409,754 2464,754 2522,754 2568,735 2602,697 2635,659 2652,606 2652,538 2652,470 2636,414 2603,375 2571,337 2526,318 2468,318 L 2468,318 Z"/>
+ <path fill="rgb(33,41,52)" stroke="none" d="M 2979,284 C 2937,284 2915,311 2915,364 L 2915,423 3004,423 3004,475 2915,475 2915,802 2855,802 2855,475 2790,475 2790,423 2855,423 2855,361 C 2855,322 2867,290 2890,267 2913,244 2941,233 2976,233 2994,233 3009,235 3020,239 L 3020,294 C 3008,287 2994,284 2979,284 Z"/>
+ <path fill="rgb(33,41,52)" stroke="none" d="M 3236,284 C 3193,284 3172,311 3172,364 L 3172,423 3261,423 3261,475 3172,475 3172,802 3112,802 3112,475 3047,475 3047,423 3112,423 3112,361 C 3112,322 3123,290 3146,267 3169,244 3198,233 3232,233 3251,233 3265,235 3276,239 L 3276,294 C 3264,287 3251,284 3236,284 Z"/>
+ <path fill="rgb(33,41,52)" stroke="none" d="M 3376,326 C 3365,326 3356,323 3349,315 3341,308 3337,299 3337,287 3337,276 3341,266 3349,259 3356,251 3365,248 3376,248 3387,248 3397,251 3405,259 3412,266 3416,276 3416,287 3416,299 3412,307 3405,315 3397,323 3387,326 3376,326 L 3376,326 Z M 3406,802 L 3345,802 3345,423 3406,423 3406,802 3406,802 Z"/>
+ <path fill="rgb(33,41,52)" stroke="none" d="M 3806,784 C 3777,802 3742,811 3703,811 3649,811 3605,793 3572,758 3538,722 3522,677 3522,621 3522,559 3540,508 3576,471 3611,433 3659,414 3719,414 3752,414 3782,420 3807,432 L 3807,494 C 3779,475 3749,465 3717,465 3678,465 3646,479 3621,507 3596,534 3584,571 3584,616 3584,661 3595,696 3619,721 3642,747 3673,760 3713,760 3746,760 3777,749 3806,727 L 3806,784 3806,784 Z"/>
+ <path fill="rgb(33,41,52)" stroke="none" d="M 4222,627 L 3954,627 C 3955,670 3967,702 3988,725 4010,748 4040,760 4078,760 4121,760 4160,745 4196,717 L 4196,774 C 4162,799 4118,811 4063,811 4009,811 3968,793 3937,759 3907,725 3891,676 3891,614 3891,555 3908,507 3941,470 3975,432 4016,414 4066,414 4116,414 4154,430 4181,462 4208,494 4222,538 4222,595 L 4222,627 4222,627 Z M 4160,576 C 4160,541 4151,513 4134,494 4118,475 4095,465 4065,465 4035,465 4012,475 3992,495 3972,516 3960,543 3955,576 L 4160,576 4160,576 Z"/>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+</svg> \ No newline at end of file
diff --git a/brand/cib/intro-highres.png b/brand/cib/intro-highres.png
index 04471d8170a9..17560c7fe464 100644
--- a/brand/cib/intro-highres.png
+++ b/brand/cib/intro-highres.png
Binary files differ
diff --git a/brand/cib/intro-highres.svg b/brand/cib/intro-highres.svg
index 67e0159ce769..b3258b6c4c7e 100644
--- a/brand/cib/intro-highres.svg
+++ b/brand/cib/intro-highres.svg
@@ -2,30 +2,30 @@
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
x="0px"
y="0px"
viewBox="0 0 773 394"
xml:space="preserve"
id="svg3336"
- inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+ inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
sodipodi:docname="intro-highres.svg"
width="773"
height="394"
- inkscape:export-filename="C:\cygwin\home\Marina\lode\dev\FLOSS-194\brand\cib\intro.png"
+ inkscape:export-filename="intro-highres.png"
inkscape:export-xdpi="96"
- inkscape:export-ydpi="96"><metadata
+ inkscape:export-ydpi="96"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata
id="metadata3474"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
id="defs3472"><clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath4978"><rect
@@ -52,7 +52,14 @@
.cls-2 {
fill: #fff;
}
- </style></defs><sodipodi:namedview
+ </style><clipPath
+ id="b"><rect
+ x="0.13"
+ y="-0.15000001"
+ width="174"
+ height="38"
+ style="fill:none"
+ id="rect2" /></clipPath></defs><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
@@ -62,21 +69,23 @@
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-width="1920"
- inkscape:window-height="1000"
+ inkscape:window-height="1011"
id="namedview3470"
showgrid="false"
- inkscape:zoom="1"
- inkscape:cx="264.75405"
- inkscape:cy="108.40609"
- inkscape:window-x="-11"
- inkscape:window-y="-11"
+ inkscape:zoom="0.94451843"
+ inkscape:cx="93.698542"
+ inkscape:cy="265.74389"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg3336"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
- inkscape:showpageshadow="false" />
+ inkscape:showpageshadow="false"
+ inkscape:pagecheckerboard="0"
+ inkscape:deskcolor="#d1d1d1" />
<style
type="text/css"
id="style3338">
@@ -98,14 +107,14 @@
id="alte_version"
class="st0"
style="display:none"
- transform="translate(-52.877201,210.05895)">
+ transform="translate(-52.890201,77.058947)">
<g
class="st1"
id="g3341"
style="display:inline">
<polygon
class="st2"
- points="262,-250 262,-64 0,-64 0,-249.9 "
+ points="0,-64 0,-249.9 262,-250 262,-64 "
id="polygon3343"
style="fill:#5fa243" />
</g>
@@ -282,152 +291,65 @@
</g>
<g
- data-name="doXigate Arbeitsunterlagen"
- id="doXigate_Arbeitsunterlagen"
- transform="matrix(2.7510816,0,0,2.7510816,158.94022,146.10499)"><g
- id="g995"><path
- id="path949"
- d="M 53.008,20.047 H 43 V 3.242 h 3.785 v 13.735 h 6.223 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path951"
- d="m 56.781,6.148 a 2.163,2.163 0 0 1 -1.535,-0.556 1.8,1.8 0 0 1 -0.6,-1.365 1.733,1.733 0 0 1 0.6,-1.36 2.508,2.508 0 0 1 3.076,0 1.737,1.737 0 0 1 0.592,1.36 1.783,1.783 0 0 1 -0.592,1.382 2.2,2.2 0 0 1 -1.541,0.539 z m 1.828,13.9 h -3.7 v -12 h 3.7 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path953"
- d="M 65.477,18.652 H 65.43 v 1.395 h -3.7 V 2.281 h 3.7 v 7.571 h 0.047 a 4.392,4.392 0 0 1 3.9,-2.1 4.28,4.28 0 0 1 3.574,1.594 6.87,6.87 0 0 1 1.254,4.359 7.437,7.437 0 0 1 -1.465,4.816 4.771,4.771 0 0 1 -3.914,1.817 3.78,3.78 0 0 1 -3.349,-1.686 z M 65.371,13.59 v 1.23 a 2.81,2.81 0 0 0 0.668,1.922 2.173,2.173 0 0 0 1.711,0.762 2.269,2.269 0 0 0 1.963,-0.979 4.722,4.722 0 0 0 0.7,-2.771 3.763,3.763 0 0 0 -0.638,-2.326 2.156,2.156 0 0 0 -1.823,-0.838 2.352,2.352 0 0 0 -1.845,0.832 3.157,3.157 0 0 0 -0.736,2.168 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path955"
- d="m 84.438,11.387 a 3.217,3.217 0 0 0 -1.559,-0.364 2.245,2.245 0 0 0 -1.887,0.885 3.861,3.861 0 0 0 -0.679,2.408 v 5.731 h -3.7 v -12 h 3.7 v 2.226 h 0.046 a 3.2,3.2 0 0 1 3.164,-2.437 2.384,2.384 0 0 1 0.915,0.141 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path957"
- d="M 96.848,15.1 H 89.02 q 0.188,2.613 3.293,2.613 a 6.428,6.428 0 0 0 3.48,-0.938 v 2.672 a 9.139,9.139 0 0 1 -4.324,0.891 6.087,6.087 0 0 1 -4.512,-1.611 6.092,6.092 0 0 1 -1.6,-4.495 6.422,6.422 0 0 1 1.729,-4.732 5.778,5.778 0 0 1 4.266,-1.746 5.24,5.24 0 0 1 4.06,1.559 6,6 0 0 1 1.436,4.23 z m -3.434,-2.274 q 0,-2.578 -2.086,-2.578 A 1.992,1.992 0 0 0 89.787,10.986 3.361,3.361 0 0 0 89,12.828 Z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path959"
- d="m 106.516,20.34 a 7.819,7.819 0 0 1 -5.883,-2.35 8.433,8.433 0 0 1 -2.274,-6.123 9.04,9.04 0 0 1 2.309,-6.445 7.991,7.991 0 0 1 6.117,-2.461 7.63,7.63 0 0 1 5.815,2.355 8.688,8.688 0 0 1 2.22,6.211 8.894,8.894 0 0 1 -2.3,6.387 7.907,7.907 0 0 1 -6.004,2.426 z M 106.68,6.219 a 3.81,3.81 0 0 0 -3.164,1.494 6.224,6.224 0 0 0 -1.172,3.955 6.111,6.111 0 0 0 1.172,3.949 4.044,4.044 0 0 0 6.175,0.041 6.045,6.045 0 0 0 1.149,-3.92 6.555,6.555 0 0 0 -1.113,-4.066 3.63,3.63 0 0 0 -3.047,-1.453 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path961"
- d="m 125.078,5.117 a 3.746,3.746 0 0 0 -1.371,-0.281 q -1.78,0 -1.781,1.934 v 1.277 h 2.742 v 2.73 h -2.742 v 9.27 h -3.692 v -9.27 h -2.015 v -2.73 h 2.015 V 6.559 a 4.322,4.322 0 0 1 1.336,-3.3 5.1,5.1 0 0 1 3.63,-1.259 6.389,6.389 0 0 1 1.875,0.234 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path963"
- d="m 134.277,5.117 a 3.746,3.746 0 0 0 -1.371,-0.281 q -1.781,0 -1.781,1.934 v 1.277 h 2.742 v 2.73 h -2.742 v 9.27 h -3.691 v -9.27 h -2.016 v -2.73 h 2.016 V 6.559 a 4.319,4.319 0 0 1 1.336,-3.3 5.092,5.092 0 0 1 3.63,-1.259 6.389,6.389 0 0 1 1.875,0.234 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path965"
- d="m 137.523,6.148 a 2.163,2.163 0 0 1 -1.535,-0.556 1.794,1.794 0 0 1 -0.6,-1.365 1.732,1.732 0 0 1 0.6,-1.36 2.509,2.509 0 0 1 3.077,0 1.74,1.74 0 0 1 0.591,1.36 1.786,1.786 0 0 1 -0.591,1.382 2.2,2.2 0 0 1 -1.542,0.539 z m 1.829,13.9 h -3.7 v -12 h 3.7 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path967"
- d="m 151.563,19.613 a 7.316,7.316 0 0 1 -3.622,0.727 6.124,6.124 0 0 1 -4.476,-1.676 5.785,5.785 0 0 1 -1.711,-4.324 6.373,6.373 0 0 1 1.834,-4.822 6.775,6.775 0 0 1 4.9,-1.764 6.3,6.3 0 0 1 3.071,0.562 v 3.141 a 4.224,4.224 0 0 0 -2.59,-0.867 3.41,3.41 0 0 0 -2.526,0.932 3.475,3.475 0 0 0 -0.931,2.572 3.424,3.424 0 0 0 0.89,2.5 3.275,3.275 0 0 0 2.449,0.908 4.891,4.891 0 0 0 2.708,-0.867 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path969"
- d="m 164.77,15.1 h -7.829 q 0.188,2.613 3.293,2.613 a 6.429,6.429 0 0 0 3.481,-0.938 v 2.672 a 9.142,9.142 0 0 1 -4.324,0.891 6.087,6.087 0 0 1 -4.512,-1.611 6.092,6.092 0 0 1 -1.606,-4.495 6.422,6.422 0 0 1 1.735,-4.732 5.777,5.777 0 0 1 4.265,-1.746 5.242,5.242 0 0 1 4.061,1.559 6,6 0 0 1 1.436,4.23 z m -3.434,-2.274 q 0,-2.578 -2.086,-2.578 a 1.992,1.992 0 0 0 -1.541,0.738 3.354,3.354 0 0 0 -0.791,1.84 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path971"
- d="m 44.62,32.412 v 3.555 H 43 v -9.8 h 2.974 a 3.938,3.938 0 0 1 2.618,0.786 2.743,2.743 0 0 1 0.93,2.215 3.061,3.061 0 0 1 -0.971,2.338 3.689,3.689 0 0 1 -2.625,0.909 z m 0,-4.908 v 3.582 h 1.053 a 2.333,2.333 0 0 0 1.593,-0.485 1.737,1.737 0 0 0 0.547,-1.368 q 0,-1.73 -2.01,-1.729 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path973"
- d="M 56.272,36.131 A 4.41,4.41 0 0 1 52.878,34.757 5.046,5.046 0 0 1 51.6,31.182 5.348,5.348 0 0 1 52.9,27.408 4.568,4.568 0 0 1 56.43,26 a 4.31,4.31 0 0 1 3.325,1.367 5.06,5.06 0 0 1 1.262,3.575 5.364,5.364 0 0 1 -1.292,3.794 4.481,4.481 0 0 1 -3.453,1.395 z m 0.076,-8.7 a 2.727,2.727 0 0 0 -2.191,1.005 3.973,3.973 0 0 0 -0.844,2.645 4.013,4.013 0 0 0 0.82,2.632 2.647,2.647 0 0 0 2.146,1 2.77,2.77 0 0 0 2.222,-0.95 3.967,3.967 0 0 0 0.814,-2.659 4.146,4.146 0 0 0 -0.791,-2.714 2.667,2.667 0 0 0 -2.176,-0.961 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path975"
- d="m 76.025,26.164 -2.686,9.8 H 71.5 L 69.634,29.11 A 4.77,4.77 0 0 1 69.49,28.153 h -0.027 a 4.639,4.639 0 0 1 -0.164,0.944 l -1.873,6.87 h -1.88 l -2.741,-9.8 h 1.784 l 1.777,7.178 a 5.2,5.2 0 0 1 0.137,0.943 h 0.034 a 5.373,5.373 0 0 1 0.192,-0.943 l 2.009,-7.178 h 1.675 l 1.859,7.233 a 5.635,5.635 0 0 1 0.144,0.875 h 0.027 a 5.445,5.445 0 0 1 0.158,-0.9 l 1.743,-7.2 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path977"
- d="m 83.94,35.967 h -5.5 v -9.8 h 5.285 v 1.381 h -3.661 v 2.772 h 3.37 v 1.374 h -3.37 v 2.9 h 3.876 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path979"
- d="m 94.307,35.967 h -1.9 l -1.565,-2.625 a 5.813,5.813 0 0 0 -0.414,-0.619 2.488,2.488 0 0 0 -0.41,-0.42 1.349,1.349 0 0 0 -0.454,-0.239 1.9,1.9 0 0 0 -0.554,-0.076 h -0.656 v 3.979 h -1.622 v -9.8 h 3.227 a 4.678,4.678 0 0 1 1.271,0.164 2.962,2.962 0 0 1 1.012,0.5 2.3,2.3 0 0 1 0.673,0.826 2.608,2.608 0 0 1 0.243,1.16 2.883,2.883 0 0 1 -0.153,0.954 2.492,2.492 0 0 1 -0.438,0.771 2.661,2.661 0 0 1 -0.683,0.578 3.4,3.4 0 0 1 -0.9,0.369 v 0.028 a 2.489,2.489 0 0 1 0.465,0.332 c 0.132,0.12 0.258,0.244 0.376,0.372 a 4.53,4.53 0 0 1 0.352,0.434 c 0.117,0.162 0.245,0.35 0.387,0.564 z m -5.954,-8.484 v 3.186 h 1.353 a 2,2 0 0 0 0.693,-0.116 1.587,1.587 0 0 0 0.551,-0.335 1.52,1.52 0 0 0 0.363,-0.533 1.843,1.843 0 0 0 0.129,-0.7 A 1.4,1.4 0 0 0 91,27.88 1.856,1.856 0 0 0 89.722,27.48 Z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path981"
- d="m 102,35.967 h -5.5 v -9.8 h 5.284 v 1.381 h -3.659 v 2.772 h 3.37 v 1.374 h -3.37 v 2.9 H 102 Z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path983"
- d="m 104.794,35.967 v -9.8 h 2.83 q 5.421,0 5.421,4.778 a 4.711,4.711 0 0 1 -1.5,3.648 5.741,5.741 0 0 1 -4.033,1.377 z m 1.62,-8.422 v 7.048 h 1.3 a 3.636,3.636 0 0 0 2.67,-0.944 3.583,3.583 0 0 0 0.953,-2.666 q 0,-3.438 -3.562,-3.438 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path985"
- d="m 120.785,35.967 v -9.8 h 3.115 a 3.665,3.665 0 0 1 2.251,0.622 1.932,1.932 0 0 1 0.832,1.62 2.32,2.32 0 0 1 -0.472,1.45 2.548,2.548 0 0 1 -1.306,0.875 v 0.027 a 2.552,2.552 0 0 1 1.616,0.748 2.275,2.275 0 0 1 0.606,1.644 2.47,2.47 0 0 1 -0.991,2.038 3.93,3.93 0 0 1 -2.5,0.779 z m 1.62,-8.5 v 2.789 h 1.053 a 2.028,2.028 0 0 0 1.33,-0.4 1.392,1.392 0 0 0 0.482,-1.131 q 0,-1.259 -1.682,-1.258 z m 0,4.1 v 3.1 h 1.388 a 2.119,2.119 0 0 0 1.4,-0.42 1.441,1.441 0 0 0 0.5,-1.159 q 0,-1.525 -2.112,-1.524 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path987"
- d="m 136.717,26.164 -3.217,6.241 v 3.562 h -1.627 V 32.44 l -3.131,-6.276 h 1.858 l 1.927,4.2 q 0.034,0.075 0.2,0.568 h 0.021 a 3.839,3.839 0 0 1 0.226,-0.568 l 2.016,-4.2 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path989"
- d="m 150.752,35.557 a 5.938,5.938 0 0 1 -2.755,0.574 4.5,4.5 0 0 1 -3.418,-1.347 4.909,4.909 0 0 1 -1.285,-3.534 5.15,5.15 0 0 1 1.445,-3.8 4.951,4.951 0 0 1 3.655,-1.45 6,6 0 0 1 2.358,0.4 v 1.614 a 4.208,4.208 0 0 0 -2.187,-0.588 3.442,3.442 0 0 0 -2.582,1.018 3.744,3.744 0 0 0 -0.983,2.724 3.567,3.567 0 0 0 0.923,2.58 3.209,3.209 0 0 0 2.427,0.961 4.348,4.348 0 0 0 2.406,-0.656 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path991"
- d="m 155.329,35.967 h -1.675 v -9.8 h 1.675 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path993"
- d="m 158.793,35.967 v -9.8 h 3.11 a 3.667,3.667 0 0 1 2.252,0.622 1.931,1.931 0 0 1 0.831,1.62 2.32,2.32 0 0 1 -0.471,1.45 2.548,2.548 0 0 1 -1.306,0.875 v 0.027 a 2.552,2.552 0 0 1 1.616,0.748 2.279,2.279 0 0 1 0.606,1.644 2.47,2.47 0 0 1 -0.991,2.038 3.932,3.932 0 0 1 -2.5,0.779 z m 1.62,-8.5 v 2.789 h 1.053 a 2.028,2.028 0 0 0 1.33,-0.4 1.392,1.392 0 0 0 0.481,-1.131 q 0,-1.259 -1.681,-1.258 z m 0,4.1 v 3.1 h 1.387 a 2.119,2.119 0 0 0 1.405,-0.42 1.441,1.441 0 0 0 0.5,-1.159 q 0,-1.525 -2.112,-1.524 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /></g><rect
- id="rect997"
- height="37"
- width="37"
- class="cls-1"
- x="0"
- y="0"
- style="fill:#961e29" /><g
- id="g1001"><path
- d="m 23.59,4.5 a 0.7,0.7 0 0 0 -0.643,0.409 0.68,0.68 0 0 0 0.149,0.74 l 5.814,5.833 a 0.7,0.7 0 0 0 0.74,0.151 0.688,0.688 0 0 0 0.425,-0.617 V 5.172 A 0.7,0.7 0 0 0 29.393,4.5 Z"
- class="cls-2"
- id="path6084"
- inkscape:connector-curvature="0"
- style="fill:#ffffff" /><path
- d="M 7.6,4.5 A 0.689,0.689 0 0 0 6.921,5.19 V 31.81 A 0.688,0.688 0 0 0 7.6,32.5 l 15.3,-0.008 c 2.249,0.008 7.18,-4.832 7.18,-7.278 V 14.668 a 0.691,0.691 0 0 0 -0.2,-0.49 L 20.452,4.711 A 0.689,0.689 0 0 0 19.963,4.5 Z m 0.689,1.379 h 11.385 l 9.026,9.067 c 0,0 0,9.218 0,9.809 0,1.835 -4.229,6.366 -6.45,6.366 H 8.293 Z"
- class="cls-2"
- id="path6088"
- inkscape:connector-curvature="0"
- style="fill:#ffffff" /></g></g><rect
- style="fill:#961e29;fill-opacity:1;stroke:none;stroke-width:1.03947806;stroke-opacity:1"
- id="rect880"
- width="773"
- height="60"
- x="0.013000467"
- y="0" /><rect
- style="fill:#961e29;fill-opacity:1;stroke:none;stroke-width:1.03947806;stroke-opacity:1"
- id="rect880-0"
- width="773"
- height="60"
- x="0.013000488"
- y="334" /></svg> \ No newline at end of file
+ clip-path="url(#b)"
+ id="g43"
+ transform="matrix(3.8917487,0,0,3.8834687,68.064995,121.97128)"
+ inkscape:export-filename="intro-highres.png"
+ inkscape:export-xdpi="144.92"
+ inkscape:export-ydpi="144.92"><g
+ id="g41"><g
+ id="g13"><path
+ d="m 47.7,28.92 c -1.48,0.78 -3.33,1.18 -5.54,1.18 -2.86,0 -5.14,-0.92 -6.86,-2.76 -1.72,-1.84 -2.58,-4.25 -2.58,-7.24 0,-3.21 0.97,-5.8 2.9,-7.78 1.93,-1.98 4.38,-2.97 7.35,-2.97 1.9,0 3.48,0.28 4.73,0.83 v 2.51 c -1.44,-0.8 -3.02,-1.2 -4.76,-1.2 -2.3,0 -4.17,0.77 -5.61,2.31 -1.44,1.54 -2.15,3.6 -2.15,6.17 0,2.57 0.67,4.39 2.01,5.84 1.34,1.45 3.1,2.18 5.27,2.18 2.02,0 3.76,-0.45 5.24,-1.34 v 2.28 z"
+ style="fill:#212934"
+ id="path7" /><path
+ d="M 54.86,29.76 H 52.51 V 9.69 h 2.35 z"
+ style="fill:#212934"
+ id="path9" /><path
+ d="M 60.85,29.76 V 9.69 h 5.71 c 1.74,0 3.11,0.42 4.13,1.27 1.02,0.85 1.53,1.96 1.53,3.32 0,1.14 -0.31,2.13 -0.92,2.97 -0.62,0.84 -1.46,1.44 -2.55,1.79 v 0.06 c 1.35,0.16 2.44,0.67 3.25,1.53 0.81,0.86 1.22,1.99 1.22,3.37 0,1.72 -0.62,3.11 -1.85,4.17 -1.23,1.06 -2.79,1.6 -4.66,1.6 H 60.86 Z M 63.2,11.81 v 6.48 h 2.41 c 1.29,0 2.3,-0.31 3.04,-0.93 0.74,-0.62 1.11,-1.5 1.11,-2.62 0,-1.95 -1.28,-2.93 -3.85,-2.93 h -2.7 z m 0,8.6 v 7.22 h 3.19 c 1.38,0 2.45,-0.33 3.21,-0.98 0.76,-0.65 1.14,-1.55 1.14,-2.69 0,-2.37 -1.61,-3.56 -4.84,-3.56 h -2.7 z"
+ style="fill:#212934"
+ id="path11" /></g><g
+ id="g25"><path
+ d="m 21.65,17.96 c -0.31,-0.32 -0.83,-0.32 -1.14,0 L 12.1,26.37 8.57,22.85 6.65,24.77 12.1,30.22 23.01,19.31 21.66,17.95 Z"
+ style="fill:#e11e19"
+ id="path15" /><path
+ d="m 15.74,28.28 -2.33,1.97 h 1.45 c 2.67,0 4.84,-2.17 4.84,-4.84 v -0.44 l -2.22,1.9 c -0.37,0.67 -0.99,1.18 -1.74,1.41 z"
+ style="fill:#e11e19"
+ id="path17" /><polygon
+ points="19.69,8.41 3.08,8.41 3.08,30.26 9.62,30.26 8.07,28.42 4.92,28.42 4.92,10.25 17.86,10.25 17.86,18.13 19.69,16.56 "
+ style="fill:#e11e19"
+ id="polygon19" /><rect
+ x="7.2600002"
+ y="11.82"
+ width="7.8899999"
+ height="2.24"
+ rx="1.05"
+ ry="1.05"
+ style="fill:#e11e19"
+ id="rect21" /><rect
+ x="7.3699999"
+ y="17.120001"
+ width="7.8899999"
+ height="2.1300001"
+ rx="1"
+ ry="1"
+ style="fill:#e11e19"
+ id="rect23" /></g><g
+ id="g39"><path
+ d="m 92.64,30.16 c -2.85,0 -5.13,-0.94 -6.84,-2.81 -1.71,-1.87 -2.57,-4.32 -2.57,-7.32 0,-3.23 0.87,-5.81 2.62,-7.73 1.75,-1.92 4.12,-2.88 7.13,-2.88 2.77,0 5,0.93 6.7,2.8 1.69,1.87 2.54,4.31 2.54,7.32 0,3.28 -0.87,5.87 -2.6,7.77 -1.74,1.9 -4.06,2.86 -6.97,2.86 z m 0.17,-18.62 c -2.11,0 -3.82,0.76 -5.14,2.28 -1.32,1.52 -1.97,3.52 -1.97,5.99 0,2.47 0.64,4.46 1.92,5.97 1.28,1.51 2.96,2.26 5.02,2.26 2.2,0 3.94,-0.72 5.21,-2.16 1.27,-1.44 1.9,-3.45 1.9,-6.03 0,-2.58 -0.62,-4.7 -1.85,-6.15 -1.23,-1.45 -2.93,-2.17 -5.1,-2.17 z"
+ style="fill:#212934"
+ id="path27" /><path
+ d="m 113.65,10.62 c -0.45,-0.25 -0.96,-0.38 -1.53,-0.38 -1.61,0 -2.41,1.01 -2.41,3.04 v 2.21 h 3.36 v 1.96 h -3.36 v 12.38 h -2.28 V 17.45 h -2.45 v -1.96 h 2.45 v -2.32 c 0,-1.5 0.43,-2.69 1.3,-3.56 0.87,-0.87 1.95,-1.31 3.25,-1.31 0.7,0 1.25,0.08 1.67,0.25 z"
+ style="fill:#212934"
+ id="path29" /><path
+ d="m 123.35,10.62 c -0.45,-0.25 -0.96,-0.38 -1.53,-0.38 -1.61,0 -2.41,1.01 -2.41,3.04 v 2.21 h 3.36 v 1.96 h -3.36 v 12.38 h -2.28 V 17.45 h -2.45 v -1.96 h 2.45 v -2.32 c 0,-1.5 0.43,-2.69 1.3,-3.56 0.87,-0.87 1.95,-1.31 3.25,-1.31 0.7,0 1.25,0.08 1.67,0.25 z"
+ style="fill:#212934"
+ id="path31" /><path
+ d="m 127.13,11.85 c -0.41,0 -0.76,-0.14 -1.05,-0.42 -0.29,-0.28 -0.43,-0.63 -0.43,-1.06 0,-0.43 0.14,-0.79 0.43,-1.07 0.29,-0.29 0.64,-0.43 1.05,-0.43 0.41,0 0.78,0.14 1.07,0.43 0.29,0.28 0.44,0.64 0.44,1.07 0,0.43 -0.15,0.76 -0.44,1.05 -0.29,0.29 -0.65,0.43 -1.07,0.43 z m 1.12,17.98 h -2.3 V 15.49 h 2.3 z"
+ style="fill:#212934"
+ id="path33" /><path
+ d="m 143.38,29.17 c -1.1,0.66 -2.41,0.99 -3.92,0.99 -2.04,0 -3.69,-0.67 -4.95,-2 -1.25,-1.33 -1.88,-3.05 -1.88,-5.17 0,-2.36 0.68,-4.26 2.03,-5.69 1.35,-1.43 3.16,-2.15 5.42,-2.15 1.26,0 2.37,0.23 3.33,0.7 v 2.35 c -1.06,-0.75 -2.2,-1.12 -3.42,-1.12 -1.47,0 -2.67,0.53 -3.61,1.58 -0.94,1.05 -1.41,2.43 -1.41,4.14 0,1.71 0.44,3.01 1.32,3.98 0.88,0.97 2.07,1.46 3.55,1.46 1.25,0 2.43,-0.42 3.53,-1.25 v 2.18 z"
+ style="fill:#212934"
+ id="path35" /><path
+ d="m 159.09,23.23 h -10.12 c 0.04,1.6 0.47,2.83 1.29,3.7 0.82,0.87 1.95,1.3 3.39,1.3 1.62,0 3.1,-0.53 4.45,-1.6 v 2.16 c -1.26,0.92 -2.93,1.37 -5,1.37 -2.07,0 -3.62,-0.65 -4.77,-1.95 -1.15,-1.3 -1.74,-3.13 -1.74,-5.5 0,-2.23 0.63,-4.05 1.9,-5.45 1.26,-1.41 2.83,-2.11 4.71,-2.11 1.88,0 3.33,0.61 4.35,1.82 1.03,1.21 1.54,2.9 1.54,5.05 v 1.2 z m -2.35,-1.95 c 0,-1.33 -0.33,-2.36 -0.96,-3.09 -0.63,-0.73 -1.5,-1.11 -2.62,-1.11 -1.12,0 -2,0.39 -2.76,1.16 -0.76,0.78 -1.22,1.79 -1.4,3.04 z"
+ style="fill:#212934"
+ id="path37" /></g></g></g></svg>
diff --git a/brand/cib/intro.png b/brand/cib/intro.png
index 2300158f88cb..508ca511aa1f 100644
--- a/brand/cib/intro.png
+++ b/brand/cib/intro.png
Binary files differ
diff --git a/brand/cib/intro.svg b/brand/cib/intro.svg
index 3bf766aff886..505140a844c7 100644
--- a/brand/cib/intro.svg
+++ b/brand/cib/intro.svg
@@ -2,30 +2,30 @@
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
x="0px"
y="0px"
viewBox="0 0 511 261"
xml:space="preserve"
id="svg3336"
- inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+ inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
sodipodi:docname="intro.svg"
width="511"
height="261"
- inkscape:export-filename="C:\cygwin\home\Marina\lode\dev\FLOSS-194\brand\cib\intro.png"
+ inkscape:export-filename="intro.png"
inkscape:export-xdpi="96"
- inkscape:export-ydpi="96"><metadata
+ inkscape:export-ydpi="96"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata
id="metadata3474"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
id="defs3472"><clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath4978"><rect
@@ -52,7 +52,14 @@
.cls-2 {
fill: #fff;
}
- </style></defs><sodipodi:namedview
+ </style><clipPath
+ id="b"><rect
+ x="0.13"
+ y="-0.15000001"
+ width="174"
+ height="38"
+ style="fill:none"
+ id="rect2" /></clipPath></defs><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
@@ -62,21 +69,23 @@
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-width="1920"
- inkscape:window-height="1000"
+ inkscape:window-height="1011"
id="namedview3470"
showgrid="false"
inkscape:zoom="2.02"
- inkscape:cx="264.75405"
- inkscape:cy="108.40609"
- inkscape:window-x="-11"
- inkscape:window-y="-11"
+ inkscape:cx="181.93069"
+ inkscape:cy="108.91089"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg3336"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
- inkscape:showpageshadow="false" />
+ inkscape:showpageshadow="false"
+ inkscape:pagecheckerboard="0"
+ inkscape:deskcolor="#d1d1d1" />
<style
type="text/css"
id="style3338">
@@ -282,152 +291,62 @@
</g>
<g
- data-name="doXigate Arbeitsunterlagen"
- id="doXigate_Arbeitsunterlagen"
- transform="matrix(2.1647413,0,0,2.1647413,76.440227,90.452286)"><g
- id="g995"><path
- id="path949"
- d="M 53.008,20.047 H 43 V 3.242 h 3.785 v 13.735 h 6.223 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path951"
- d="m 56.781,6.148 a 2.163,2.163 0 0 1 -1.535,-0.556 1.8,1.8 0 0 1 -0.6,-1.365 1.733,1.733 0 0 1 0.6,-1.36 2.508,2.508 0 0 1 3.076,0 1.737,1.737 0 0 1 0.592,1.36 1.783,1.783 0 0 1 -0.592,1.382 2.2,2.2 0 0 1 -1.541,0.539 z m 1.828,13.9 h -3.7 v -12 h 3.7 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path953"
- d="M 65.477,18.652 H 65.43 v 1.395 h -3.7 V 2.281 h 3.7 v 7.571 h 0.047 a 4.392,4.392 0 0 1 3.9,-2.1 4.28,4.28 0 0 1 3.574,1.594 6.87,6.87 0 0 1 1.254,4.359 7.437,7.437 0 0 1 -1.465,4.816 4.771,4.771 0 0 1 -3.914,1.817 3.78,3.78 0 0 1 -3.349,-1.686 z M 65.371,13.59 v 1.23 a 2.81,2.81 0 0 0 0.668,1.922 2.173,2.173 0 0 0 1.711,0.762 2.269,2.269 0 0 0 1.963,-0.979 4.722,4.722 0 0 0 0.7,-2.771 3.763,3.763 0 0 0 -0.638,-2.326 2.156,2.156 0 0 0 -1.823,-0.838 2.352,2.352 0 0 0 -1.845,0.832 3.157,3.157 0 0 0 -0.736,2.168 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path955"
- d="m 84.438,11.387 a 3.217,3.217 0 0 0 -1.559,-0.364 2.245,2.245 0 0 0 -1.887,0.885 3.861,3.861 0 0 0 -0.679,2.408 v 5.731 h -3.7 v -12 h 3.7 v 2.226 h 0.046 a 3.2,3.2 0 0 1 3.164,-2.437 2.384,2.384 0 0 1 0.915,0.141 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path957"
- d="M 96.848,15.1 H 89.02 q 0.188,2.613 3.293,2.613 a 6.428,6.428 0 0 0 3.48,-0.938 v 2.672 a 9.139,9.139 0 0 1 -4.324,0.891 6.087,6.087 0 0 1 -4.512,-1.611 6.092,6.092 0 0 1 -1.6,-4.495 6.422,6.422 0 0 1 1.729,-4.732 5.778,5.778 0 0 1 4.266,-1.746 5.24,5.24 0 0 1 4.06,1.559 6,6 0 0 1 1.436,4.23 z m -3.434,-2.274 q 0,-2.578 -2.086,-2.578 A 1.992,1.992 0 0 0 89.787,10.986 3.361,3.361 0 0 0 89,12.828 Z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path959"
- d="m 106.516,20.34 a 7.819,7.819 0 0 1 -5.883,-2.35 8.433,8.433 0 0 1 -2.274,-6.123 9.04,9.04 0 0 1 2.309,-6.445 7.991,7.991 0 0 1 6.117,-2.461 7.63,7.63 0 0 1 5.815,2.355 8.688,8.688 0 0 1 2.22,6.211 8.894,8.894 0 0 1 -2.3,6.387 7.907,7.907 0 0 1 -6.004,2.426 z M 106.68,6.219 a 3.81,3.81 0 0 0 -3.164,1.494 6.224,6.224 0 0 0 -1.172,3.955 6.111,6.111 0 0 0 1.172,3.949 4.044,4.044 0 0 0 6.175,0.041 6.045,6.045 0 0 0 1.149,-3.92 6.555,6.555 0 0 0 -1.113,-4.066 3.63,3.63 0 0 0 -3.047,-1.453 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path961"
- d="m 125.078,5.117 a 3.746,3.746 0 0 0 -1.371,-0.281 q -1.78,0 -1.781,1.934 v 1.277 h 2.742 v 2.73 h -2.742 v 9.27 h -3.692 v -9.27 h -2.015 v -2.73 h 2.015 V 6.559 a 4.322,4.322 0 0 1 1.336,-3.3 5.1,5.1 0 0 1 3.63,-1.259 6.389,6.389 0 0 1 1.875,0.234 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path963"
- d="m 134.277,5.117 a 3.746,3.746 0 0 0 -1.371,-0.281 q -1.781,0 -1.781,1.934 v 1.277 h 2.742 v 2.73 h -2.742 v 9.27 h -3.691 v -9.27 h -2.016 v -2.73 h 2.016 V 6.559 a 4.319,4.319 0 0 1 1.336,-3.3 5.092,5.092 0 0 1 3.63,-1.259 6.389,6.389 0 0 1 1.875,0.234 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path965"
- d="m 137.523,6.148 a 2.163,2.163 0 0 1 -1.535,-0.556 1.794,1.794 0 0 1 -0.6,-1.365 1.732,1.732 0 0 1 0.6,-1.36 2.509,2.509 0 0 1 3.077,0 1.74,1.74 0 0 1 0.591,1.36 1.786,1.786 0 0 1 -0.591,1.382 2.2,2.2 0 0 1 -1.542,0.539 z m 1.829,13.9 h -3.7 v -12 h 3.7 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path967"
- d="m 151.563,19.613 a 7.316,7.316 0 0 1 -3.622,0.727 6.124,6.124 0 0 1 -4.476,-1.676 5.785,5.785 0 0 1 -1.711,-4.324 6.373,6.373 0 0 1 1.834,-4.822 6.775,6.775 0 0 1 4.9,-1.764 6.3,6.3 0 0 1 3.071,0.562 v 3.141 a 4.224,4.224 0 0 0 -2.59,-0.867 3.41,3.41 0 0 0 -2.526,0.932 3.475,3.475 0 0 0 -0.931,2.572 3.424,3.424 0 0 0 0.89,2.5 3.275,3.275 0 0 0 2.449,0.908 4.891,4.891 0 0 0 2.708,-0.867 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path969"
- d="m 164.77,15.1 h -7.829 q 0.188,2.613 3.293,2.613 a 6.429,6.429 0 0 0 3.481,-0.938 v 2.672 a 9.142,9.142 0 0 1 -4.324,0.891 6.087,6.087 0 0 1 -4.512,-1.611 6.092,6.092 0 0 1 -1.606,-4.495 6.422,6.422 0 0 1 1.735,-4.732 5.777,5.777 0 0 1 4.265,-1.746 5.242,5.242 0 0 1 4.061,1.559 6,6 0 0 1 1.436,4.23 z m -3.434,-2.274 q 0,-2.578 -2.086,-2.578 a 1.992,1.992 0 0 0 -1.541,0.738 3.354,3.354 0 0 0 -0.791,1.84 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path971"
- d="m 44.62,32.412 v 3.555 H 43 v -9.8 h 2.974 a 3.938,3.938 0 0 1 2.618,0.786 2.743,2.743 0 0 1 0.93,2.215 3.061,3.061 0 0 1 -0.971,2.338 3.689,3.689 0 0 1 -2.625,0.909 z m 0,-4.908 v 3.582 h 1.053 a 2.333,2.333 0 0 0 1.593,-0.485 1.737,1.737 0 0 0 0.547,-1.368 q 0,-1.73 -2.01,-1.729 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path973"
- d="M 56.272,36.131 A 4.41,4.41 0 0 1 52.878,34.757 5.046,5.046 0 0 1 51.6,31.182 5.348,5.348 0 0 1 52.9,27.408 4.568,4.568 0 0 1 56.43,26 a 4.31,4.31 0 0 1 3.325,1.367 5.06,5.06 0 0 1 1.262,3.575 5.364,5.364 0 0 1 -1.292,3.794 4.481,4.481 0 0 1 -3.453,1.395 z m 0.076,-8.7 a 2.727,2.727 0 0 0 -2.191,1.005 3.973,3.973 0 0 0 -0.844,2.645 4.013,4.013 0 0 0 0.82,2.632 2.647,2.647 0 0 0 2.146,1 2.77,2.77 0 0 0 2.222,-0.95 3.967,3.967 0 0 0 0.814,-2.659 4.146,4.146 0 0 0 -0.791,-2.714 2.667,2.667 0 0 0 -2.176,-0.961 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path975"
- d="m 76.025,26.164 -2.686,9.8 H 71.5 L 69.634,29.11 A 4.77,4.77 0 0 1 69.49,28.153 h -0.027 a 4.639,4.639 0 0 1 -0.164,0.944 l -1.873,6.87 h -1.88 l -2.741,-9.8 h 1.784 l 1.777,7.178 a 5.2,5.2 0 0 1 0.137,0.943 h 0.034 a 5.373,5.373 0 0 1 0.192,-0.943 l 2.009,-7.178 h 1.675 l 1.859,7.233 a 5.635,5.635 0 0 1 0.144,0.875 h 0.027 a 5.445,5.445 0 0 1 0.158,-0.9 l 1.743,-7.2 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path977"
- d="m 83.94,35.967 h -5.5 v -9.8 h 5.285 v 1.381 h -3.661 v 2.772 h 3.37 v 1.374 h -3.37 v 2.9 h 3.876 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path979"
- d="m 94.307,35.967 h -1.9 l -1.565,-2.625 a 5.813,5.813 0 0 0 -0.414,-0.619 2.488,2.488 0 0 0 -0.41,-0.42 1.349,1.349 0 0 0 -0.454,-0.239 1.9,1.9 0 0 0 -0.554,-0.076 h -0.656 v 3.979 h -1.622 v -9.8 h 3.227 a 4.678,4.678 0 0 1 1.271,0.164 2.962,2.962 0 0 1 1.012,0.5 2.3,2.3 0 0 1 0.673,0.826 2.608,2.608 0 0 1 0.243,1.16 2.883,2.883 0 0 1 -0.153,0.954 2.492,2.492 0 0 1 -0.438,0.771 2.661,2.661 0 0 1 -0.683,0.578 3.4,3.4 0 0 1 -0.9,0.369 v 0.028 a 2.489,2.489 0 0 1 0.465,0.332 c 0.132,0.12 0.258,0.244 0.376,0.372 a 4.53,4.53 0 0 1 0.352,0.434 c 0.117,0.162 0.245,0.35 0.387,0.564 z m -5.954,-8.484 v 3.186 h 1.353 a 2,2 0 0 0 0.693,-0.116 1.587,1.587 0 0 0 0.551,-0.335 1.52,1.52 0 0 0 0.363,-0.533 1.843,1.843 0 0 0 0.129,-0.7 A 1.4,1.4 0 0 0 91,27.88 1.856,1.856 0 0 0 89.722,27.48 Z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path981"
- d="m 102,35.967 h -5.5 v -9.8 h 5.284 v 1.381 h -3.659 v 2.772 h 3.37 v 1.374 h -3.37 v 2.9 H 102 Z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path983"
- d="m 104.794,35.967 v -9.8 h 2.83 q 5.421,0 5.421,4.778 a 4.711,4.711 0 0 1 -1.5,3.648 5.741,5.741 0 0 1 -4.033,1.377 z m 1.62,-8.422 v 7.048 h 1.3 a 3.636,3.636 0 0 0 2.67,-0.944 3.583,3.583 0 0 0 0.953,-2.666 q 0,-3.438 -3.562,-3.438 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path985"
- d="m 120.785,35.967 v -9.8 h 3.115 a 3.665,3.665 0 0 1 2.251,0.622 1.932,1.932 0 0 1 0.832,1.62 2.32,2.32 0 0 1 -0.472,1.45 2.548,2.548 0 0 1 -1.306,0.875 v 0.027 a 2.552,2.552 0 0 1 1.616,0.748 2.275,2.275 0 0 1 0.606,1.644 2.47,2.47 0 0 1 -0.991,2.038 3.93,3.93 0 0 1 -2.5,0.779 z m 1.62,-8.5 v 2.789 h 1.053 a 2.028,2.028 0 0 0 1.33,-0.4 1.392,1.392 0 0 0 0.482,-1.131 q 0,-1.259 -1.682,-1.258 z m 0,4.1 v 3.1 h 1.388 a 2.119,2.119 0 0 0 1.4,-0.42 1.441,1.441 0 0 0 0.5,-1.159 q 0,-1.525 -2.112,-1.524 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path987"
- d="m 136.717,26.164 -3.217,6.241 v 3.562 h -1.627 V 32.44 l -3.131,-6.276 h 1.858 l 1.927,4.2 q 0.034,0.075 0.2,0.568 h 0.021 a 3.839,3.839 0 0 1 0.226,-0.568 l 2.016,-4.2 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path989"
- d="m 150.752,35.557 a 5.938,5.938 0 0 1 -2.755,0.574 4.5,4.5 0 0 1 -3.418,-1.347 4.909,4.909 0 0 1 -1.285,-3.534 5.15,5.15 0 0 1 1.445,-3.8 4.951,4.951 0 0 1 3.655,-1.45 6,6 0 0 1 2.358,0.4 v 1.614 a 4.208,4.208 0 0 0 -2.187,-0.588 3.442,3.442 0 0 0 -2.582,1.018 3.744,3.744 0 0 0 -0.983,2.724 3.567,3.567 0 0 0 0.923,2.58 3.209,3.209 0 0 0 2.427,0.961 4.348,4.348 0 0 0 2.406,-0.656 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path991"
- d="m 155.329,35.967 h -1.675 v -9.8 h 1.675 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /><path
- id="path993"
- d="m 158.793,35.967 v -9.8 h 3.11 a 3.667,3.667 0 0 1 2.252,0.622 1.931,1.931 0 0 1 0.831,1.62 2.32,2.32 0 0 1 -0.471,1.45 2.548,2.548 0 0 1 -1.306,0.875 v 0.027 a 2.552,2.552 0 0 1 1.616,0.748 2.279,2.279 0 0 1 0.606,1.644 2.47,2.47 0 0 1 -0.991,2.038 3.932,3.932 0 0 1 -2.5,0.779 z m 1.62,-8.5 v 2.789 h 1.053 a 2.028,2.028 0 0 0 1.33,-0.4 1.392,1.392 0 0 0 0.481,-1.131 q 0,-1.259 -1.681,-1.258 z m 0,4.1 v 3.1 h 1.387 a 2.119,2.119 0 0 0 1.405,-0.42 1.441,1.441 0 0 0 0.5,-1.159 q 0,-1.525 -2.112,-1.524 z"
- class="cls-1"
- inkscape:connector-curvature="0"
- style="fill:#961e29" /></g><rect
- id="rect997"
- height="37"
- width="37"
- class="cls-1"
- x="0"
- y="0"
- style="fill:#961e29" /><g
- id="g1001"><path
- d="m 23.59,4.5 a 0.7,0.7 0 0 0 -0.643,0.409 0.68,0.68 0 0 0 0.149,0.74 l 5.814,5.833 a 0.7,0.7 0 0 0 0.74,0.151 0.688,0.688 0 0 0 0.425,-0.617 V 5.172 A 0.7,0.7 0 0 0 29.393,4.5 Z"
- class="cls-2"
- id="path6084"
- inkscape:connector-curvature="0"
- style="fill:#ffffff" /><path
- d="M 7.6,4.5 A 0.689,0.689 0 0 0 6.921,5.19 V 31.81 A 0.688,0.688 0 0 0 7.6,32.5 l 15.3,-0.008 c 2.249,0.008 7.18,-4.832 7.18,-7.278 V 14.668 a 0.691,0.691 0 0 0 -0.2,-0.49 L 20.452,4.711 A 0.689,0.689 0 0 0 19.963,4.5 Z m 0.689,1.379 h 11.385 l 9.026,9.067 c 0,0 0,9.218 0,9.809 0,1.835 -4.229,6.366 -6.45,6.366 H 8.293 Z"
- class="cls-2"
- id="path6088"
- inkscape:connector-curvature="0"
- style="fill:#ffffff" /></g></g><rect
- style="fill:#961e29;fill-opacity:1;stroke:none;stroke-width:0.73190653;stroke-opacity:1"
- id="rect880"
- width="510.974"
- height="45"
- x="0.013000467"
- y="0" /><rect
- style="fill:#961e29;fill-opacity:1;stroke:none;stroke-width:0.73190647;stroke-opacity:1"
- id="rect880-0"
- width="510.974"
- height="45"
- x="0.013000488"
- y="216" /></svg> \ No newline at end of file
+ clip-path="url(#b)"
+ id="g43"
+ transform="matrix(2.5725516,0,0,2.5725516,42.906241,80.798237)"><g
+ id="g41"><g
+ id="g13"><path
+ d="m 47.7,28.92 c -1.48,0.78 -3.33,1.18 -5.54,1.18 -2.86,0 -5.14,-0.92 -6.86,-2.76 -1.72,-1.84 -2.58,-4.25 -2.58,-7.24 0,-3.21 0.97,-5.8 2.9,-7.78 1.93,-1.98 4.38,-2.97 7.35,-2.97 1.9,0 3.48,0.28 4.73,0.83 v 2.51 c -1.44,-0.8 -3.02,-1.2 -4.76,-1.2 -2.3,0 -4.17,0.77 -5.61,2.31 -1.44,1.54 -2.15,3.6 -2.15,6.17 0,2.57 0.67,4.39 2.01,5.84 1.34,1.45 3.1,2.18 5.27,2.18 2.02,0 3.76,-0.45 5.24,-1.34 v 2.28 z"
+ style="fill:#212934"
+ id="path7" /><path
+ d="M 54.86,29.76 H 52.51 V 9.69 h 2.35 z"
+ style="fill:#212934"
+ id="path9" /><path
+ d="M 60.85,29.76 V 9.69 h 5.71 c 1.74,0 3.11,0.42 4.13,1.27 1.02,0.85 1.53,1.96 1.53,3.32 0,1.14 -0.31,2.13 -0.92,2.97 -0.62,0.84 -1.46,1.44 -2.55,1.79 v 0.06 c 1.35,0.16 2.44,0.67 3.25,1.53 0.81,0.86 1.22,1.99 1.22,3.37 0,1.72 -0.62,3.11 -1.85,4.17 -1.23,1.06 -2.79,1.6 -4.66,1.6 H 60.86 Z M 63.2,11.81 v 6.48 h 2.41 c 1.29,0 2.3,-0.31 3.04,-0.93 0.74,-0.62 1.11,-1.5 1.11,-2.62 0,-1.95 -1.28,-2.93 -3.85,-2.93 h -2.7 z m 0,8.6 v 7.22 h 3.19 c 1.38,0 2.45,-0.33 3.21,-0.98 0.76,-0.65 1.14,-1.55 1.14,-2.69 0,-2.37 -1.61,-3.56 -4.84,-3.56 h -2.7 z"
+ style="fill:#212934"
+ id="path11" /></g><g
+ id="g25"><path
+ d="m 21.65,17.96 c -0.31,-0.32 -0.83,-0.32 -1.14,0 L 12.1,26.37 8.57,22.85 6.65,24.77 12.1,30.22 23.01,19.31 21.66,17.95 Z"
+ style="fill:#e11e19"
+ id="path15" /><path
+ d="m 15.74,28.28 -2.33,1.97 h 1.45 c 2.67,0 4.84,-2.17 4.84,-4.84 v -0.44 l -2.22,1.9 c -0.37,0.67 -0.99,1.18 -1.74,1.41 z"
+ style="fill:#e11e19"
+ id="path17" /><polygon
+ points="9.62,30.26 8.07,28.42 4.92,28.42 4.92,10.25 17.86,10.25 17.86,18.13 19.69,16.56 19.69,8.41 3.08,8.41 3.08,30.26 "
+ style="fill:#e11e19"
+ id="polygon19" /><rect
+ x="7.2600002"
+ y="11.82"
+ width="7.8899999"
+ height="2.24"
+ rx="1.05"
+ ry="1.05"
+ style="fill:#e11e19"
+ id="rect21" /><rect
+ x="7.3699999"
+ y="17.120001"
+ width="7.8899999"
+ height="2.1300001"
+ rx="1"
+ ry="1"
+ style="fill:#e11e19"
+ id="rect23" /></g><g
+ id="g39"><path
+ d="m 92.64,30.16 c -2.85,0 -5.13,-0.94 -6.84,-2.81 -1.71,-1.87 -2.57,-4.32 -2.57,-7.32 0,-3.23 0.87,-5.81 2.62,-7.73 1.75,-1.92 4.12,-2.88 7.13,-2.88 2.77,0 5,0.93 6.7,2.8 1.69,1.87 2.54,4.31 2.54,7.32 0,3.28 -0.87,5.87 -2.6,7.77 -1.74,1.9 -4.06,2.86 -6.97,2.86 z m 0.17,-18.62 c -2.11,0 -3.82,0.76 -5.14,2.28 -1.32,1.52 -1.97,3.52 -1.97,5.99 0,2.47 0.64,4.46 1.92,5.97 1.28,1.51 2.96,2.26 5.02,2.26 2.2,0 3.94,-0.72 5.21,-2.16 1.27,-1.44 1.9,-3.45 1.9,-6.03 0,-2.58 -0.62,-4.7 -1.85,-6.15 -1.23,-1.45 -2.93,-2.17 -5.1,-2.17 z"
+ style="fill:#212934"
+ id="path27" /><path
+ d="m 113.65,10.62 c -0.45,-0.25 -0.96,-0.38 -1.53,-0.38 -1.61,0 -2.41,1.01 -2.41,3.04 v 2.21 h 3.36 v 1.96 h -3.36 v 12.38 h -2.28 V 17.45 h -2.45 v -1.96 h 2.45 v -2.32 c 0,-1.5 0.43,-2.69 1.3,-3.56 0.87,-0.87 1.95,-1.31 3.25,-1.31 0.7,0 1.25,0.08 1.67,0.25 z"
+ style="fill:#212934"
+ id="path29" /><path
+ d="m 123.35,10.62 c -0.45,-0.25 -0.96,-0.38 -1.53,-0.38 -1.61,0 -2.41,1.01 -2.41,3.04 v 2.21 h 3.36 v 1.96 h -3.36 v 12.38 h -2.28 V 17.45 h -2.45 v -1.96 h 2.45 v -2.32 c 0,-1.5 0.43,-2.69 1.3,-3.56 0.87,-0.87 1.95,-1.31 3.25,-1.31 0.7,0 1.25,0.08 1.67,0.25 z"
+ style="fill:#212934"
+ id="path31" /><path
+ d="m 127.13,11.85 c -0.41,0 -0.76,-0.14 -1.05,-0.42 -0.29,-0.28 -0.43,-0.63 -0.43,-1.06 0,-0.43 0.14,-0.79 0.43,-1.07 0.29,-0.29 0.64,-0.43 1.05,-0.43 0.41,0 0.78,0.14 1.07,0.43 0.29,0.28 0.44,0.64 0.44,1.07 0,0.43 -0.15,0.76 -0.44,1.05 -0.29,0.29 -0.65,0.43 -1.07,0.43 z m 1.12,17.98 h -2.3 V 15.49 h 2.3 z"
+ style="fill:#212934"
+ id="path33" /><path
+ d="m 143.38,29.17 c -1.1,0.66 -2.41,0.99 -3.92,0.99 -2.04,0 -3.69,-0.67 -4.95,-2 -1.25,-1.33 -1.88,-3.05 -1.88,-5.17 0,-2.36 0.68,-4.26 2.03,-5.69 1.35,-1.43 3.16,-2.15 5.42,-2.15 1.26,0 2.37,0.23 3.33,0.7 v 2.35 c -1.06,-0.75 -2.2,-1.12 -3.42,-1.12 -1.47,0 -2.67,0.53 -3.61,1.58 -0.94,1.05 -1.41,2.43 -1.41,4.14 0,1.71 0.44,3.01 1.32,3.98 0.88,0.97 2.07,1.46 3.55,1.46 1.25,0 2.43,-0.42 3.53,-1.25 v 2.18 z"
+ style="fill:#212934"
+ id="path35" /><path
+ d="m 159.09,23.23 h -10.12 c 0.04,1.6 0.47,2.83 1.29,3.7 0.82,0.87 1.95,1.3 3.39,1.3 1.62,0 3.1,-0.53 4.45,-1.6 v 2.16 c -1.26,0.92 -2.93,1.37 -5,1.37 -2.07,0 -3.62,-0.65 -4.77,-1.95 -1.15,-1.3 -1.74,-3.13 -1.74,-5.5 0,-2.23 0.63,-4.05 1.9,-5.45 1.26,-1.41 2.83,-2.11 4.71,-2.11 1.88,0 3.33,0.61 4.35,1.82 1.03,1.21 1.54,2.9 1.54,5.05 v 1.2 z m -2.35,-1.95 c 0,-1.33 -0.33,-2.36 -0.96,-3.09 -0.63,-0.73 -1.5,-1.11 -2.62,-1.11 -1.12,0 -2,0.39 -2.76,1.16 -0.76,0.78 -1.22,1.79 -1.4,3.04 z"
+ style="fill:#212934"
+ id="path37" /></g></g></g></svg>
diff --git a/brand/cib/logo.png b/brand/cib/logo.png
index ace737a89fd9..4ae4a19b1ccb 100644
--- a/brand/cib/logo.png
+++ b/brand/cib/logo.png
Binary files differ
diff --git a/brand/cib/logo.svg b/brand/cib/logo.svg
index 4e0efdbc9249..7cfdad3fd177 100644
--- a/brand/cib/logo.svg
+++ b/brand/cib/logo.svg
@@ -1,104 +1 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="300"
- preserveAspectRatio="xMidYMid"
- viewBox="0 0 7937.5004 7937.5005"
- width="300"
- version="1.1"
- id="svg1868"
- sodipodi:docname="logo.svg"
- inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
- style="fill-rule:evenodd;stroke-width:28.22200012;stroke-linejoin:round"
- inkscape:export-filename="C:\cygwin\home\Marina\lode\dev\FLOSS-194\icon-themes\cib\sfx2\res\logo.png"
- inkscape:export-xdpi="96"
- inkscape:export-ydpi="96">
- <metadata
- id="metadata1874">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs1872">
- <style
- id="style838">
- .cls-1 {
- fill: #961e29;
- }
-
- .cls-2 {
- fill: #fff;
- }
- </style>
- </defs>
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="2520"
- inkscape:window-height="1031"
- id="namedview1870"
- showgrid="false"
- inkscape:zoom="1.6857142"
- inkscape:cx="59.607026"
- inkscape:cy="150.4356"
- inkscape:window-x="2869"
- inkscape:window-y="50"
- inkscape:window-maximized="1"
- inkscape:current-layer="g6082"
- units="px" />
- <g
- data-name="Ebene 4"
- id="Ebene_4"
- transform="matrix(99.215593,0,0,99.215593,82.797858,562.35777)">
- <g
- id="g6082">
- <g
- data-name="Ebene 4"
- id="Ebene_4-3"
- transform="matrix(1.0090412,0,0,1.0090412,1.832226,-3.0012875)">
- <rect
- id="rect844"
- height="74"
- width="74"
- class="cls-1"
- x="0"
- y="0"
- style="fill:#961e29" />
- <g
- id="g848">
- <path
- d="m 47.181,9 a 1.4,1.4 0 0 0 -1.288,0.817 1.365,1.365 0 0 0 0.3,1.481 L 57.82,22.964 a 1.407,1.407 0 0 0 1.48,0.3 1.376,1.376 0 0 0 0.85,-1.234 V 10.345 A 1.4,1.4 0 0 0 58.787,9 Z"
- class="cls-2"
- id="path6084"
- inkscape:connector-curvature="0"
- style="fill:#ffffff" />
- <path
- d="M 15.207,9 A 1.377,1.377 0 0 0 13.85,10.38 V 63.621 A 1.377,1.377 0 0 0 15.207,65 L 45.791,64.984 C 50.291,65 60.15,55.319 60.15,50.428 c 0,-8.285 0,-21.092 0,-21.092 a 1.382,1.382 0 0 0 -0.4,-0.98 L 40.9,9.423 A 1.374,1.374 0 0 0 39.926,9 Z m 1.38,2.759 h 22.76 l 18.044,18.133 c 0,0 -0.011,18.437 -0.011,19.619 0,3.668 -8.458,12.73 -12.9,12.73 H 16.587 Z"
- class="cls-2"
- id="path6088"
- inkscape:connector-curvature="0"
- style="fill:#ffffff" />
- </g>
- </g>
- </g>
- </g>
-</svg>
+<?xml version="1.0" encoding="UTF-8"?><svg id="Logos_Material" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32"><defs><style>.cls-1{fill:#e11e19;}.cls-2{clip-path:url(#clippath);}.cls-3{fill:none;}</style><clipPath id="clippath"><rect class="cls-3" x="206.65" y="209.85" width="174" height="38"/></clipPath></defs><g class="cls-2"><g><path class="cls-1" d="M27.39,14.82c-.36-.36-.94-.36-1.3,0l-9.55,9.55-4.01-3.99-2.18,2.18,6.19,6.19,12.38-12.38-1.53-1.54Z"/><path class="cls-1" d="M20.68,26.54l-2.65,2.24h1.64c3.03,0,5.5-2.47,5.5-5.5v-.5l-2.52,2.16c-.42,.76-1.13,1.34-1.97,1.6Z"/><polygon class="cls-1" points="8.4 26.69 8.4 6.07 23.08 6.07 23.08 15.02 25.17 13.23 25.17 3.98 6.32 3.98 6.32 28.77 13.74 28.77 11.98 26.69 8.4 26.69"/><rect class="cls-1" x="11.05" y="7.86" width="8.95" height="2.54" rx="1.19" ry="1.19"/><rect class="cls-1" x="11.19" y="13.87" width="8.95" height="2.42" rx="1.14" ry="1.14"/></g></g><g><path class="cls-1" d="M26.82,14.24c-.36-.36-.94-.36-1.3,0l-9.55,9.55-4.01-3.99-2.18,2.18,6.19,6.19,12.38-12.38-1.53-1.54Z"/><path class="cls-1" d="M20.11,25.96l-2.65,2.24h1.64c3.03,0,5.5-2.47,5.5-5.5v-.5l-2.52,2.16c-.42,.76-1.13,1.34-1.97,1.6Z"/><polygon class="cls-1" points="7.83 26.11 7.83 5.49 22.51 5.49 22.51 14.44 24.6 12.65 24.6 3.4 5.75 3.4 5.75 28.2 13.17 28.2 11.41 26.11 7.83 26.11"/><rect class="cls-1" x="10.48" y="7.28" width="8.95" height="2.54" rx="1.19" ry="1.19"/><rect class="cls-1" x="10.62" y="13.29" width="8.95" height="2.42" rx="1.14" ry="1.14"/></g></svg> \ No newline at end of file
diff --git a/configmgr/source/data.hxx b/configmgr/source/data.hxx
index 315fe7b9bf47..3e4bbd73ff36 100644
--- a/configmgr/source/data.hxx
+++ b/configmgr/source/data.hxx
@@ -69,7 +69,7 @@ struct Data {
rtl::Reference< Node > resolvePathRepresentation(
OUString const & pathRepresentation,
- OUString * canonicRepresenation, std::vector<OUString> * path, int * finalizedLayer)
+ OUString * canonicRepresentation, std::vector<OUString> * path, int * finalizedLayer)
const;
rtl::Reference< Node > getTemplate(
diff --git a/configure.ac b/configure.ac
index 5243821494e3..db01622ac678 100644
--- a/configure.ac
+++ b/configure.ac
@@ -9,7 +9,7 @@ dnl in order to create a configure script.
# several non-alphanumeric characters, those are split off and used only for the
# ABOUTBOXPRODUCTVERSIONSUFFIX in openoffice.lst. Why that is necessary, no idea.
-AC_INIT([LibreOffice powered by CIB],[6.4.0.9],[],[],[https://www.cib.de/libreoffice-poweredbycib/])
+AC_INIT([CIB Office],[6.4.0.10],[],[],[https://www.cib.de/office/])
dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just fine if it is installed
dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails hard
diff --git a/desktop/source/app/cmdlineargs.cxx b/desktop/source/app/cmdlineargs.cxx
index 381147cd534e..846714158e25 100644
--- a/desktop/source/app/cmdlineargs.cxx
+++ b/desktop/source/app/cmdlineargs.cxx
@@ -29,6 +29,7 @@
#include <tools/stream.hxx>
#include <vcl/svapp.hxx>
#include <rtl/uri.hxx>
+#include <tools/urlobj.hxx>
#include <rtl/ustring.hxx>
#include <rtl/process.h>
#include <comphelper/lok.hxx>
@@ -169,7 +170,14 @@ CommandLineEvent CheckOfficeURI(/* in,out */ OUString& arg, CommandLineEvent cur
}
if (nURIlen < 0)
nURIlen = rest2.getLength();
- arg = rest2.copy(0, nURIlen);
+ auto const uri = rest2.copy(0, nURIlen);
+ if (INetURLObject(uri).GetProtocol() == INetProtocol::Macro) {
+ // Let the "Open" machinery process the full command URI (leading to failure, by intention,
+ // as the "Open" machinery does not know about those command URI schemes):
+ curEvt = CommandLineEvent::Open;
+ } else {
+ arg = uri;
+ }
return curEvt;
}
diff --git a/desktop/source/migration/migration.cxx b/desktop/source/migration/migration.cxx
index be21788c40d1..05baeddbb4c3 100644
--- a/desktop/source/migration/migration.cxx
+++ b/desktop/source/migration/migration.cxx
@@ -38,6 +38,7 @@
#include <i18nlangtag/lang.h>
#include <tools/diagnose_ex.h>
#include <tools/urlobj.hxx>
+#include <officecfg/Office/UI.hxx>
#include <osl/file.hxx>
#include <osl/security.hxx>
#include <unotools/configmgr.hxx>
@@ -45,6 +46,7 @@
#include <com/sun/star/configuration/Update.hpp>
#include <com/sun/star/configuration/theDefaultProvider.hpp>
#include <com/sun/star/lang/XInitialization.hpp>
+#include <com/sun/star/container/XNameContainer.hpp>
#include <com/sun/star/task/XJob.hpp>
#include <com/sun/star/beans/NamedValue.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
@@ -666,6 +668,55 @@ bool getComponent(OUString const & path, OUString * component)
return true;
}
+void renameMigratedSetElementTo(
+ css::uno::Reference<css::container::XNameContainer> const & set, OUString const & currentName,
+ OUString const & migratedName)
+{
+ // To avoid unexpected data loss, the code is careful to only rename from currentName to
+ // migratedName in the expected case where the currentName element exists and the migratedName
+ // element doesn't exist:
+ auto const hasCurrent = set->hasByName(currentName);
+ auto const hasMigrated = set->hasByName(migratedName);
+ if (hasCurrent && !hasMigrated) {
+ auto const elem = set->getByName(currentName);
+ set->removeByName(currentName);
+ set->insertByName(migratedName, elem);
+ } else {
+ SAL_INFO_IF(!hasCurrent, "desktop.migration", "unexpectedly missing " << currentName);
+ SAL_INFO_IF(hasMigrated, "desktop.migration", "unexpectedly present " << migratedName);
+ }
+}
+
+void renameMigratedSetElementBack(
+ css::uno::Reference<css::container::XNameContainer> const & set, OUString const & currentName,
+ OUString const & migratedName)
+{
+ // To avoid unexpected data loss, the code is careful to ensure that in the end a currentName
+ // element exists, creating it from a template if the migratedName element had unexpectedly gone
+ // missing:
+ auto const hasMigrated = set->hasByName(migratedName);
+ css::uno::Any elem;
+ if (hasMigrated) {
+ elem = set->getByName(migratedName);
+ set->removeByName(migratedName);
+ } else {
+ SAL_INFO("desktop.migration", "unexpected loss of " << migratedName);
+ elem <<= css::uno::Reference<css::lang::XSingleServiceFactory>(
+ set, css::uno::UNO_QUERY_THROW)->createInstance();
+ }
+ if (set->hasByName(currentName)) {
+ SAL_INFO("desktop.migration", "unexpected reappearance of " << currentName);
+ if (hasMigrated) {
+ SAL_INFO(
+ "desktop.migration",
+ "reappeared " << currentName << " overwritten with " << migratedName);
+ set->replaceByName(currentName, elem);
+ }
+ } else {
+ set->insertByName(currentName, elem);
+ }
+}
+
}
void MigrationImpl::copyConfig()
@@ -696,6 +747,30 @@ void MigrationImpl::copyConfig()
regFile.close();
}
+ // If the to-be-migrated data contains modifications of
+ // /org.openoffice.Office.UI/ColorScheme/ColorSchemes set elements named after the migrated
+ // product name, those modifications must instead be made to the corresponding set elements
+ // named after the current product name. However, if the current configuration data does not
+ // contain those old-named set elements at all, their modification data would silently be
+ // ignored by css.configuration.XUpdate::insertModificationXcuFile. So temporarily rename any
+ // new-named set elements to their old-named counterparts here, and rename them back again down
+ // below after importing the migrated data:
+ OUString sProductName = utl::ConfigManager::getProductName();
+ OUString sProductNameDark = sProductName + " Dark";
+ OUString sMigratedProductName = m_aInfo.productname;
+ // remove version number from the end of product name if there’s one
+ if (isdigit(sMigratedProductName[sMigratedProductName.getLength() - 1]))
+ sMigratedProductName = (sMigratedProductName.copy(0, m_aInfo.productname.getLength() - 1)).trim();
+ OUString sMigratedProductNameDark = sMigratedProductName + " Dark";
+ auto const tempRename = sMigratedProductName != sProductName;
+ if (tempRename) {
+ auto const batch = comphelper::ConfigurationChanges::create();
+ auto const schemes = officecfg::Office::UI::ColorScheme::ColorSchemes::get(batch);
+ renameMigratedSetElementTo(schemes, sProductName, sMigratedProductName);
+ renameMigratedSetElementTo(schemes, sProductNameDark, sMigratedProductNameDark);
+ batch->commit();
+ }
+
for (auto const& comp : comps)
{
if (!comp.second.includedPaths.empty()) {
@@ -728,12 +803,44 @@ void MigrationImpl::copyConfig()
regFilePath,
comphelper::containerToSequence(comp.second.includedPaths),
comphelper::containerToSequence(comp.second.excludedPaths));
+
} else {
SAL_INFO( "desktop.migration", "configuration migration component " << comp.first << " ignored (only excludes, no includes)" );
}
next:
;
}
+ if (tempRename) {
+ auto const batch = comphelper::ConfigurationChanges::create();
+ auto const schemes = officecfg::Office::UI::ColorScheme::ColorSchemes::get(batch);
+ renameMigratedSetElementBack(schemes, sProductName, sMigratedProductName);
+ renameMigratedSetElementBack(schemes, sProductNameDark, sMigratedProductNameDark);
+ batch->commit();
+ }
+ // checking the migrated (product name related) color scheme name, and replace it to the current version scheme name
+ try
+ {
+ OUString sMigratedColorScheme;
+ uno::Reference<XPropertySet> aPropertySet(
+ getConfigAccess("org.openoffice.Office.UI/ColorScheme", true), uno::UNO_QUERY_THROW);
+ if (aPropertySet->getPropertyValue("CurrentColorScheme") >>= sMigratedColorScheme)
+ {
+ if (sMigratedColorScheme.equals(sMigratedProductName))
+ {
+ aPropertySet->setPropertyValue("CurrentColorScheme",
+ uno::Any(sProductName));
+ uno::Reference<XChangesBatch>(aPropertySet, uno::UNO_QUERY_THROW)->commitChanges();
+ }
+ else if (sMigratedColorScheme.equals(sMigratedProductNameDark))
+ {
+ aPropertySet->setPropertyValue("CurrentColorScheme",
+ uno::Any(sProductNameDark));
+ uno::Reference<XChangesBatch>(aPropertySet, uno::UNO_QUERY_THROW)->commitChanges();
+ }
+ }
+ } catch (const Exception&) {
+ // fail silently...
+ }
}
uno::Reference< XNameAccess > MigrationImpl::getConfigAccess(const sal_Char* pPath, bool bUpdate)
diff --git a/download.lst b/download.lst
index 09168e9bde06..9746761adc8f 100644
--- a/download.lst
+++ b/download.lst
@@ -40,8 +40,8 @@ export EPUBGEN_TARBALL := libepubgen-0.1.1.tar.xz
export ETONYEK_SHA256SUM := e61677e8799ce6e55b25afc11aa5339113f6a49cff031f336e32fa58635b1a4a
export ETONYEK_VERSION_MICRO := 9
export ETONYEK_TARBALL := libetonyek-0.1.$(ETONYEK_VERSION_MICRO).tar.xz
-export EXPAT_SHA256SUM := de55794b7a9bc214852fdc075beaaecd854efe1361597e6268ee87946951289b
-export EXPAT_TARBALL := expat-2.4.6.tar.xz
+export EXPAT_SHA256SUM := 6e8c0728fe5c7cd3f93a6acce43046c5e4736c7b4b68e032e9350daa0efc0354
+export EXPAT_TARBALL := expat-2.4.9.tar.xz
export FIREBIRD_SHA256SUM := 6994be3555e23226630c587444be19d309b25b0fcf1f87df3b4e3f88943e5860
export FIREBIRD_TARBALL := Firebird-3.0.0.32483-0.tar.bz2
export FONTCONFIG_SHA256SUM := cf0c30807d08f6a28ab46c61b8dbd55c97d2f292cf88f3a07d3384687f31f017
@@ -156,9 +156,9 @@ export LIBTOMMATH_SHA256SUM := 083daa92d8ee6f4af96a6143b12d7fc8fe1a547e14f862304
export LIBTOMMATH_TARBALL := ltm-1.0.zip
export XMLSEC_SHA256SUM := 13eec4811ea30e3f0e16a734d1dbf7f9d246a71d540b48d143a07b489f6222d4
export XMLSEC_TARBALL := xmlsec1-1.2.28.tar.gz
-export LIBXML_SHA256SUM := 60d74a257d1ccec0475e749cba2f21559e48139efba6ff28224357c7c798dfee
-export LIBXML_VERSION_MICRO := 14
-export LIBXML_TARBALL := libxml2-2.9.$(LIBXML_VERSION_MICRO).tar.xz
+export LIBXML_SHA256SUM := d240abe6da9c65cb1900dd9bf3a3501ccf88b3c2a1cb98317d03f272dda5b265
+export LIBXML_VERSION_MICRO := 2
+export LIBXML_TARBALL := libxml2-2.10.$(LIBXML_VERSION_MICRO).tar.xz
export LIBXSLT_SHA256SUM := 8247f33e9a872c6ac859aa45018bc4c4d00b97e2feac9eebc10c93ce1f34dd79
export LIBXSLT_VERSION_MICRO := 35
export LIBXSLT_TARBALL := libxslt-1.1.$(LIBXSLT_VERSION_MICRO).tar.xz
@@ -206,8 +206,8 @@ export PIXMAN_SHA256SUM := 21b6b249b51c6800dc9553b65106e1e37d0e25df942c90531d4c3
export PIXMAN_TARBALL := e80ebae4da01e77f68744319f01d52a3-pixman-0.34.0.tar.gz
export LIBPNG_SHA256SUM := 505e70834d35383537b6491e7ae8641f1a4bed1876dbfe361201fc80868d88ca
export LIBPNG_TARBALL := libpng-1.6.37.tar.xz
-export POPPLER_SHA256SUM := 31b76b5cac0a48612fdd154c02d9eca01fd38fb8eaa77c1196840ecdeb53a584
-export POPPLER_TARBALL := poppler-21.11.0.tar.xz
+export POPPLER_SHA256SUM := d7a8f748211359cadb774ba3e18ecda6464b34027045c0648eb30d5852a41e2e
+export POPPLER_TARBALL := poppler-22.09.0.tar.xz
export POSTGRESQL_SHA256SUM := 9b81067a55edbaabc418aacef457dd8477642827499560b00615a6ea6c13f6b3
export POSTGRESQL_TARBALL := postgresql-13.5.tar.bz2
export PYTHON_SHA256SUM := f8d82e7572c86ec9d55c8627aae5040124fd2203af400c383c821b980306ee6b
diff --git a/external/harfbuzz/62e803b36173fd096d7ad460dd1d1db9be542593.patch.1 b/external/harfbuzz/62e803b36173fd096d7ad460dd1d1db9be542593.patch.1
new file mode 100644
index 000000000000..2aef204a26e1
--- /dev/null
+++ b/external/harfbuzz/62e803b36173fd096d7ad460dd1d1db9be542593.patch.1
@@ -0,0 +1,29 @@
+From 62e803b36173fd096d7ad460dd1d1db9be542593 Mon Sep 17 00:00:00 2001
+From: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed, 1 Jun 2022 07:38:21 -0600
+Subject: [PATCH] [sbix] Limit glyph extents
+
+Fixes https://github.com/harfbuzz/harfbuzz/issues/3557
+---
+ src/hb-ot-color-sbix-table.hh | 6 ++++++
+ test/fuzzing/fonts/sbix-extents.ttf | Bin 0 -> 582 bytes
+ 2 files changed, 6 insertions(+)
+ create mode 100644 test/fuzzing/fonts/sbix-extents.ttf
+
+diff --git a/src/hb-ot-color-sbix-table.hh b/src/hb-ot-color-sbix-table.hh
+index 9741ebd450..6efae43cda 100644
+--- a/src/hb-ot-color-sbix-table.hh
++++ b/src/hb-ot-color-sbix-table.hh
+@@ -298,6 +298,12 @@ struct sbix
+
+ const PNGHeader &png = *blob->as<PNGHeader>();
+
++ if (png.IHDR.height >= 65536 || png.IHDR.width >= 65536)
++ {
++ hb_blob_destroy (blob);
++ return false;
++ }
++
+ extents->x_bearing = x_offset;
+ extents->y_bearing = png.IHDR.height + y_offset;
+ extents->width = png.IHDR.width;
diff --git a/external/harfbuzz/UnpackedTarball_harfbuzz.mk b/external/harfbuzz/UnpackedTarball_harfbuzz.mk
index adec72ed0d57..9957f89e1b5c 100644
--- a/external/harfbuzz/UnpackedTarball_harfbuzz.mk
+++ b/external/harfbuzz/UnpackedTarball_harfbuzz.mk
@@ -20,6 +20,7 @@ $(eval $(call gb_UnpackedTarball_set_patchlevel,harfbuzz,0))
$(eval $(call gb_UnpackedTarball_add_patches,harfbuzz, \
external/harfbuzz/ubsan.patch \
external/harfbuzz/icu-65-api-macros-with-semicolon.patch.1 \
+ external/harfbuzz/62e803b36173fd096d7ad460dd1d1db9be542593.patch.1 \
))
# vim: set noet sw=4 ts=4:
diff --git a/external/libnumbertext/EmptyString.patch1 b/external/libnumbertext/EmptyString.patch1
new file mode 100644
index 000000000000..d6570117da09
--- /dev/null
+++ b/external/libnumbertext/EmptyString.patch1
@@ -0,0 +1,13 @@
+--- a/src/Soros.cxx 2022-06-27 09:36:46.486075920 +0100
++++ b/src/Soros.cxx 2022-06-27 09:37:52.594072196 +0100
+@@ -98,8 +98,8 @@
+ s = regex_replace(s, quoteEnd, L"");
+ s = translate(s, c.substr(1), m.substr(1), L"");
+ replace(s, slash, L"\\\\"); // -> \\, ", ;, #
+- begins.push_back(s[0] == L'^');
+- ends.push_back(s[s.length()-1] == L'$');
++ begins.push_back(!s.empty() && s[0] == L'^');
++ ends.push_back(!s.empty() && s[s.length()-1] == L'$');
+ s = L"^" + regex_replace(s, wregex(L"^\\^"), L"");
+ s = regex_replace(s, wregex(L"\\$$"), L"") + L"$";
+ try
diff --git a/external/libnumbertext/UnpackedTarball_libnumbertext.mk b/external/libnumbertext/UnpackedTarball_libnumbertext.mk
index 67b147393e31..5667b138bbb0 100644
--- a/external/libnumbertext/UnpackedTarball_libnumbertext.mk
+++ b/external/libnumbertext/UnpackedTarball_libnumbertext.mk
@@ -19,6 +19,7 @@ $(eval $(call gb_UnpackedTarball_set_patchlevel,libnumbertext,1))
# <https://github.com/Numbertext/libnumbertext/pull/43>:
$(eval $(call gb_UnpackedTarball_add_patches,libnumbertext, \
external/libnumbertext/0001-Don-t-depend-on-en_US.UTF-8-locale.patch \
+ external/libnumbertext/EmptyString.patch1 \
))
# vim: set noet sw=4 ts=4:
diff --git a/external/liborcus/UnpackedTarball_liborcus.mk b/external/liborcus/UnpackedTarball_liborcus.mk
index cf792f125f71..a6c36095f3ab 100644
--- a/external/liborcus/UnpackedTarball_liborcus.mk
+++ b/external/liborcus/UnpackedTarball_liborcus.mk
@@ -37,6 +37,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,liborcus,\
external/liborcus/forcepoint-84.patch.1 \
external/liborcus/forcepoint-87.patch.1 \
external/liborcus/forcepoint-95.patch.1 \
+ external/liborcus/overrun.patch.0 \
))
ifeq ($(OS),WNT)
diff --git a/external/liborcus/overrun.patch.0 b/external/liborcus/overrun.patch.0
new file mode 100644
index 000000000000..8b5bc5366da1
--- /dev/null
+++ b/external/liborcus/overrun.patch.0
@@ -0,0 +1,63 @@
+--- src/parser/sax_token_parser.cpp
++++ src/parser/sax_token_parser.cpp
+@@ -10,6 +10,7 @@
+
+ #include <mdds/sorted_string_map.hpp>
+ #include <cctype>
++#include <limits>
+
+ namespace orcus {
+
+@@ -329,6 +330,28 @@
+ m_elem.raw_name = elem.name;
+ }
+
++static uint8_t readUint8(char const * begin, char const * end, char const ** endptr) {
++ unsigned n = 0;
++ char const * p = begin;
++ for (; p != end; ++p) {
++ char const c = *p;
++ if (c < '0' || c > '9') {
++ break;
++ }
++ n = 10 * n + (c - '0');
++ if (n > std::numeric_limits<uint8_t>::max()) {
++ *endptr = nullptr;
++ return 0;
++ }
++ }
++ if (p == begin) {
++ *endptr = nullptr;
++ return 0;
++ }
++ *endptr = p;
++ return n;
++}
++
+ void sax_token_handler_wrapper_base::attribute(const pstring& name, const pstring& val)
+ {
+ decl_attr_type dat = decl_attr::get().find(name.data(), name.size());
+@@ -340,18 +362,18 @@
+ const char* p = val.data();
+ const char* p_end = p + val.size();
+
+- char* endptr = nullptr;
+- long v = std::strtol(p, &endptr, 10);
++ const char* endptr = nullptr;
++ uint8_t v = readUint8(p, p_end, &endptr);
+
+- if (!endptr || endptr >= p_end || *endptr != '.')
++ if (!endptr || endptr == p_end || *endptr != '.')
+ break;
+
+ m_declaration.version_major = v;
+ p = endptr + 1;
+
+- v = std::strtol(p, &endptr, 10);
++ v = readUint8(p, p_end, &endptr);
+
+- if (!endptr || endptr > p_end)
++ if (!endptr)
+ break;
+
+ m_declaration.version_minor = v;
diff --git a/external/libxml2/ExternalPackage_libxml2.mk b/external/libxml2/ExternalPackage_libxml2.mk
index d38eb68df0cb..6338fb20b9df 100644
--- a/external/libxml2/ExternalPackage_libxml2.mk
+++ b/external/libxml2/ExternalPackage_libxml2.mk
@@ -21,7 +21,7 @@ else # COM=MSC
$(eval $(call gb_ExternalPackage_add_file,libxml2,$(LIBO_URE_LIB_FOLDER)/libxml2.dll,win32/bin.msvc/libxml2.dll))
endif
else # OS!=WNT
-$(eval $(call gb_ExternalPackage_add_file,libxml2,$(LIBO_URE_LIB_FOLDER)/libxml2.so.2,.libs/libxml2.so.2.9.$(LIBXML_VERSION_MICRO)))
+$(eval $(call gb_ExternalPackage_add_file,libxml2,$(LIBO_URE_LIB_FOLDER)/libxml2.so.2,.libs/libxml2.so.2.10.$(LIBXML_VERSION_MICRO)))
endif
endif # DISABLE_DYNLOADING
diff --git a/external/libxml2/UnpackedTarball_libxml2.mk b/external/libxml2/UnpackedTarball_libxml2.mk
index 83df02849cb3..8c81c3d26e4c 100644
--- a/external/libxml2/UnpackedTarball_libxml2.mk
+++ b/external/libxml2/UnpackedTarball_libxml2.mk
@@ -14,7 +14,6 @@ $(eval $(call gb_UnpackedTarball_set_tarball,libxml2,$(LIBXML_TARBALL),,libxml2)
$(eval $(call gb_UnpackedTarball_update_autoconf_configs,libxml2))
$(eval $(call gb_UnpackedTarball_add_patches,libxml2,\
- external/libxml2/libxml2-config.patch.1 \
external/libxml2/libxml2-global-symbols.patch \
external/libxml2/libxml2-vc10.patch \
$(if $(filter ANDROID,$(OS)),external/libxml2/libxml2-android.patch) \
@@ -23,4 +22,6 @@ $(eval $(call gb_UnpackedTarball_add_patches,libxml2,\
external/libxml2/libxml2-icu.patch.0) \
))
+$(eval $(call gb_UnpackedTarball_add_file,libxml2,xml2-config.in,external/libxml2/xml2-config.in))
+
# vim: set noet sw=4 ts=4:
diff --git a/external/libxml2/libxml2-android.patch b/external/libxml2/libxml2-android.patch
index 42af83274026..acf9b17e02db 100644
--- a/external/libxml2/libxml2-android.patch
+++ b/external/libxml2/libxml2-android.patch
@@ -2,9 +2,9 @@
+++ misc/build/libxml2-2.7.6/Makefile.in
@@ -1635,7 +1635,7 @@
$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
- check: $(BUILT_SOURCES)
- $(MAKE) $(AM_MAKEFLAGS) check-recursive
--all-am: Makefile $(PROGRAMS) $(LTLIBRARIES) $(SCRIPTS) $(MANS) $(DATA) \
+ $(MAKE) $(AM_MAKEFLAGS) check-local
+ check: check-recursive
+-all-am: Makefile $(PROGRAMS) $(LTLIBRARIES) $(SCRIPTS) $(DATA) \
+all-am: Makefile $(LTLIBRARIES) \
config.h
install-binPROGRAMS: install-libLTLIBRARIES
diff --git a/external/libxml2/libxml2-config.patch.1 b/external/libxml2/libxml2-config.patch.1
deleted file mode 100644
index 5a2ef1485e92..000000000000
--- a/external/libxml2/libxml2-config.patch.1
+++ /dev/null
@@ -1,43 +0,0 @@
-Hack the xml2-config to return paths into WORKDIR.
-
---- a/xml2-config.in 2009-12-17 11:45:20.000000000 +0000
-+++ b/xml2-config.in 2009-12-17 11:45:36.000000000 +0000
-@@ -1,9 +1,14 @@
- #! /bin/sh
-
--prefix=@prefix@
--exec_prefix=@exec_prefix@
--includedir=@includedir@
--libdir=@libdir@
-+#prefix=@prefix@
-+#exec_prefix=@exec_prefix@
-+#includedir=@includedir@
-+#libdir=@libdir@
-+
-+prefix=${WORKDIR}/UnpackedTarball/libxml2
-+exec_prefix=${WORKDIR}/UnpackedTarball/libxml2
-+includedir=${WORKDIR}/UnpackedTarball/libxml2/include
-+libdir=${WORKDIR}/UnpackedTarball/libxml2/.libs
- cflags=
- libs=
-
-@@ -67,7 +72,8 @@
- ;;
-
- --cflags)
-- cflags="@XML_INCLUDEDIR@ @XML_CFLAGS@"
-+ #cflags="@XML_INCLUDEDIR@ @XML_CFLAGS@"
-+ cflags="-I${includedir}"
- ;;
-
- --libtool-libs)
-@@ -91,7 +96,8 @@
- libs="@XML_LIBDIR@ $libs"
- fi
-
-- libs="$libs @WIN32_EXTRA_LIBADD@"
-+ #libs="$libs @WIN32_EXTRA_LIBADD@"
-+ libs="-L${libdir} -lxml2 -lm"
- ;;
-
- *)
diff --git a/external/libxml2/xml2-config.in b/external/libxml2/xml2-config.in
new file mode 100644
index 000000000000..164508e47e67
--- /dev/null
+++ b/external/libxml2/xml2-config.in
@@ -0,0 +1,28 @@
+#! /bin/sh
+
+while test $# -gt 0; do
+ case "$1" in
+ -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+ *) optarg= ;;
+ esac
+
+ case "$1" in
+ --version)
+ echo @VERSION@
+ exit 0
+ ;;
+ --cflags)
+ cflags="$LIBXML_CFLAGS"
+ ;;
+ --libs)
+ libs="$LIBXML_LIBS"
+ ;;
+ esac
+ shift
+done
+
+if test -n "$cflags$libs"; then
+ echo $cflags $libs
+fi
+
+exit 0
diff --git a/external/poppler/StaticLibrary_poppler.mk b/external/poppler/StaticLibrary_poppler.mk
index bcb66b49299a..1f1adba6ee34 100644
--- a/external/poppler/StaticLibrary_poppler.mk
+++ b/external/poppler/StaticLibrary_poppler.mk
@@ -84,6 +84,8 @@ $(eval $(call gb_StaticLibrary_add_generated_exception_objects,poppler,\
UnpackedTarball/poppler/poppler/Decrypt \
UnpackedTarball/poppler/poppler/Dict \
UnpackedTarball/poppler/poppler/Error \
+ UnpackedTarball/poppler/poppler/FDPDFDocBuilder \
+ UnpackedTarball/poppler/poppler/FILECacheLoader \
UnpackedTarball/poppler/poppler/FileSpec \
UnpackedTarball/poppler/poppler/FontEncodingTables \
UnpackedTarball/poppler/poppler/Form \
@@ -94,6 +96,7 @@ $(eval $(call gb_StaticLibrary_add_generated_exception_objects,poppler,\
UnpackedTarball/poppler/poppler/GfxState \
UnpackedTarball/poppler/poppler/GlobalParams \
UnpackedTarball/poppler/poppler/Hints \
+ UnpackedTarball/poppler/poppler/ImageEmbeddingUtils \
UnpackedTarball/poppler/poppler/JArithmeticDecoder \
UnpackedTarball/poppler/poppler/JBIG2Stream \
UnpackedTarball/poppler/poppler/JSInfo \
@@ -130,8 +133,6 @@ $(eval $(call gb_StaticLibrary_add_generated_exception_objects,poppler,\
UnpackedTarball/poppler/poppler/TextOutputDev \
UnpackedTarball/poppler/poppler/PageLabelInfo \
UnpackedTarball/poppler/poppler/SecurityHandler \
- UnpackedTarball/poppler/poppler/StdinCachedFile \
- UnpackedTarball/poppler/poppler/StdinPDFDocBuilder \
UnpackedTarball/poppler/poppler/Sound \
UnpackedTarball/poppler/poppler/ViewerPreferences \
UnpackedTarball/poppler/poppler/Movie \
diff --git a/external/poppler/UnpackedTarball_poppler.mk b/external/poppler/UnpackedTarball_poppler.mk
index 68fd06d9403b..0ac3c8aa69c4 100644
--- a/external/poppler/UnpackedTarball_poppler.mk
+++ b/external/poppler/UnpackedTarball_poppler.mk
@@ -13,6 +13,8 @@ $(eval $(call gb_UnpackedTarball_set_tarball,poppler,$(POPPLER_TARBALL),,poppler
$(eval $(call gb_UnpackedTarball_add_patches,poppler,\
external/poppler/poppler-config.patch.1 \
+ external/poppler/disable-freetype.patch.1 \
+ external/poppler/gcc7-EntityInfo.patch.1 \
))
# vim: set noet sw=4 ts=4:
diff --git a/external/poppler/disable-freetype.patch.1 b/external/poppler/disable-freetype.patch.1
new file mode 100644
index 000000000000..d59006eba979
--- /dev/null
+++ b/external/poppler/disable-freetype.patch.1
@@ -0,0 +1,41 @@
+disable freetype dependent code
+
+--- poppler/poppler/Form.cc.orig 2022-09-14 15:46:48.588316681 +0200
++++ poppler/poppler/Form.cc 2022-09-14 15:48:01.468274551 +0200
+@@ -46,7 +46,7 @@
+ #include <cstdlib>
+ #include <cstring>
+ #include <cctype>
+-#include "goo/ft_utils.h"
++//#include "goo/ft_utils.h"
+ #include "goo/gmem.h"
+ #include "goo/gfile.h"
+ #include "goo/GooString.h"
+@@ -77,8 +77,8 @@
+ #include "fofi/FoFiTrueType.h"
+ #include "fofi/FoFiIdentifier.h"
+
+-#include <ft2build.h>
+-#include FT_FREETYPE_H
++//#include <ft2build.h>
++//#include FT_FREETYPE_H
+
+ // return a newly allocated char* containing an UTF16BE string of size length
+ char *pdfDocEncodingToUTF16(const std::string &orig, int *length)
+@@ -2730,6 +2730,8 @@
+
+ Form::AddFontResult Form::addFontToDefaultResources(const std::string &filepath, int faceIndex, const std::string &fontFamily, const std::string &fontStyle)
+ {
++ return {};
++#if 0
+ if (!GooString::endsWith(filepath, ".ttf") && !GooString::endsWith(filepath, ".ttc") && !GooString::endsWith(filepath, ".otf")) {
+ error(errIO, -1, "We only support embedding ttf/ttc/otf fonts for now. The font file for {0:s} {1:s} was {2:s}", fontFamily.c_str(), fontStyle.c_str(), filepath.c_str());
+ return {};
+@@ -2939,6 +2941,7 @@
+ }
+
+ return { dictFontName, fontDictRef };
++#endif
+ }
+
+ std::string Form::getFallbackFontForChar(Unicode uChar, const GfxFont &fontToEmulate) const
diff --git a/external/poppler/gcc7-EntityInfo.patch.1 b/external/poppler/gcc7-EntityInfo.patch.1
new file mode 100644
index 000000000000..b450bff93af9
--- /dev/null
+++ b/external/poppler/gcc7-EntityInfo.patch.1
@@ -0,0 +1,48 @@
+gcc 7.3.1 says:
+
+workdir/UnpackedTarball/poppler/poppler/CertificateInfo.cc:42:34: error: function ‘X509CertificateInfo::EntityInfo& X509CertificateInfo::EntityInfo::operator=(X509CertificateInfo::EntityInfo&&)’ defaulted on its redeclaration with an exception-specification that differs from the implicit exception-specification ‘’
+
+--- poppler/poppler/CertificateInfo.h.orig 2022-09-14 19:32:12.426351385 +0200
++++ poppler/poppler/CertificateInfo.h 2022-09-14 19:32:18.947347812 +0200
+@@ -70,7 +70,7 @@
+ ~EntityInfo();
+
+ EntityInfo(EntityInfo &&) noexcept;
+- EntityInfo &operator=(EntityInfo &&) noexcept;
++ EntityInfo &operator=(EntityInfo &&) /*noexcept*/;
+
+ EntityInfo(const EntityInfo &) = delete;
+ EntityInfo &operator=(const EntityInfo &) = delete;
+--- poppler/poppler/CertificateInfo.cc.orig 2022-09-14 19:31:10.225385467 +0200
++++ poppler/poppler/CertificateInfo.cc 2022-09-14 19:31:12.572384182 +0200
+@@ -39,7 +39,7 @@
+
+ X509CertificateInfo::EntityInfo::EntityInfo(X509CertificateInfo::EntityInfo &&other) noexcept = default;
+
+-X509CertificateInfo::EntityInfo &X509CertificateInfo::EntityInfo::operator=(X509CertificateInfo::EntityInfo &&other) noexcept = default;
++X509CertificateInfo::EntityInfo &X509CertificateInfo::EntityInfo::operator=(X509CertificateInfo::EntityInfo &&other) /*noexcept*/ = default;
+
+ X509CertificateInfo::X509CertificateInfo() : ku_extensions(KU_NONE), cert_version(-1), is_self_signed(false) { }
+
+--- poppler/poppler/GfxFont.cc.orig 2022-09-14 20:24:32.569607333 +0200
++++ poppler/poppler/GfxFont.cc 2022-09-14 20:24:52.323596186 +0200
+@@ -180,7 +180,7 @@
+
+ GfxFontLoc::GfxFontLoc(GfxFontLoc &&other) noexcept = default;
+
+-GfxFontLoc &GfxFontLoc::operator=(GfxFontLoc &&other) noexcept = default;
++GfxFontLoc &GfxFontLoc::operator=(GfxFontLoc &&other) /*noexcept*/ = default;
+
+ void GfxFontLoc::setPath(GooString *pathA)
+ {
+--- poppler/poppler/GfxFont.h.orig 2022-09-14 20:24:30.784608340 +0200
++++ poppler/poppler/GfxFont.h 2022-09-14 20:25:08.850586861 +0200
+@@ -124,7 +124,7 @@
+ GfxFontLoc(const GfxFontLoc &) = delete;
+ GfxFontLoc(GfxFontLoc &&) noexcept;
+ GfxFontLoc &operator=(const GfxFontLoc &) = delete;
+- GfxFontLoc &operator=(GfxFontLoc &&other) noexcept;
++ GfxFontLoc &operator=(GfxFontLoc &&other) /*noexcept*/;
+
+ // Set the 'path' string from a GooString on the heap.
+ // Ownership of the object is taken.
diff --git a/external/poppler/poppler-config.patch.1 b/external/poppler/poppler-config.patch.1
index 2a24d4510197..455a88e2afc4 100644
--- a/external/poppler/poppler-config.patch.1
+++ b/external/poppler/poppler-config.patch.1
@@ -16,7 +16,7 @@ new file mode 100644
index 0fbd336a..451213f8 100644
--- /dev/null
+++ b/config.h
-@@ -0,0 +1,223 @@
+@@ -0,0 +1,220 @@
+/* config.h. Generated from config.h.cmake by cmake. */
+
+/* Build against libcurl. */
@@ -105,9 +105,6 @@ index 0fbd336a..451213f8 100644
+#define HAVE_TIMEGM 1
+#endif
+
-+/* Define if you have the iconv() function and it works. */
-+/* #undef HAVE_ICONV */
-+
+/* Define to 1 if you have the `z' library (-lz). */
+/* #undef HAVE_LIBZ */
+
@@ -176,7 +173,7 @@ index 0fbd336a..451213f8 100644
+#define PACKAGE_NAME "poppler"
+
+/* Define to the full name and version of this package. */
-+#define PACKAGE_STRING "poppler 21.11.0"
++#define PACKAGE_STRING "poppler 22.09.0"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "poppler"
@@ -185,7 +182,7 @@ index 0fbd336a..451213f8 100644
+#define PACKAGE_URL ""
+
+/* Define to the version of this package. */
-+#define PACKAGE_VERSION "21.11.0"
++#define PACKAGE_VERSION "22.09.0"
+
+/* Poppler data dir */
+#define POPPLER_DATADIR "/usr/local/share/poppler"
@@ -203,7 +200,7 @@ index 0fbd336a..451213f8 100644
+/* #undef USE_FLOAT */
+
+/* Version number of package */
-+#define VERSION "21.11.0"
++#define VERSION "22.09.0"
+
+#if defined(__APPLE__)
+#elif defined (_WIN32)
@@ -229,7 +226,7 @@ index 0fbd336a..451213f8 100644
+#define popen _popen
+#define pclose _pclose
+#define strncasecmp _strnicmp
-+// error C4005: "strcasecmp": macro redefinition #define strcasecmp _stricmp
++#define strcasecmp _stricmp
+#endif
+
+/* Number of bits in a file offset, on hosts where this is settable. */
@@ -250,7 +247,7 @@ index 0fbd336a..451213f8 100644
+//
+// poppler-config.h
+//
-+// Copyright 1996-2011 Glyph & Cog, LLC
++// Copyright 1996-2011, 2022 Glyph & Cog, LLC
+//
+//========================================================================
+
@@ -284,7 +281,7 @@ index 0fbd336a..451213f8 100644
+
+/* Defines the poppler version. */
+#ifndef POPPLER_VERSION
-+#define POPPLER_VERSION "21.11.0"
++#define POPPLER_VERSION "22.09.0"
+#endif
+
+/* Use single precision arithmetic in the Splash backend */
@@ -376,8 +373,8 @@ index 0fbd336a..451213f8 100644
+//------------------------------------------------------------------------
+
+// copyright notice
-+#define popplerCopyright "Copyright 2005-2021 The Poppler Developers - http://poppler.freedesktop.org"
-+#define xpdfCopyright "Copyright 1996-2011 Glyph & Cog, LLC"
++#define popplerCopyright "Copyright 2005-2022 The Poppler Developers - http://poppler.freedesktop.org"
++#define xpdfCopyright "Copyright 1996-2011, 2022 Glyph & Cog, LLC"
+
+//------------------------------------------------------------------------
+// Win32 stuff
@@ -436,9 +433,9 @@ index 0fbd336a..451213f8 100644
+
+#include "poppler-global.h"
+
-+#define POPPLER_VERSION "21.11.0"
-+#define POPPLER_VERSION_MAJOR 21
-+#define POPPLER_VERSION_MINOR 11
++#define POPPLER_VERSION "22.09.0"
++#define POPPLER_VERSION_MAJOR 22
++#define POPPLER_VERSION_MINOR 9
+#define POPPLER_VERSION_MICRO 0
+
+namespace poppler
diff --git a/external/zlib/1eb7682f845ac9e9bf9ae35bbfb3bad5dacbd91d.patch b/external/zlib/1eb7682f845ac9e9bf9ae35bbfb3bad5dacbd91d.patch
new file mode 100644
index 000000000000..c5c95a92b28a
--- /dev/null
+++ b/external/zlib/1eb7682f845ac9e9bf9ae35bbfb3bad5dacbd91d.patch
@@ -0,0 +1,29 @@
+From 1eb7682f845ac9e9bf9ae35bbfb3bad5dacbd91d Mon Sep 17 00:00:00 2001
+From: Mark Adler <fork@madler.net>
+Date: Mon, 8 Aug 2022 10:50:09 -0700
+Subject: [PATCH] Fix extra field processing bug that dereferences NULL
+ state->head.
+
+The recent commit to fix a gzip header extra field processing bug
+introduced the new bug fixed here.
+---
+ inflate.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/inflate.c b/inflate.c
+index 7a7289749..2a3c4fe98 100644
+--- a/inflate.c
++++ b/inflate.c
+@@ -763,10 +763,10 @@ int flush;
+ copy = state->length;
+ if (copy > have) copy = have;
+ if (copy) {
+- len = state->head->extra_len - state->length;
+ if (state->head != Z_NULL &&
+ state->head->extra != Z_NULL &&
+- len < state->head->extra_max) {
++ (len = state->head->extra_len - state->length) <
++ state->head->extra_max) {
+ zmemcpy(state->head->extra + len, next,
+ len + copy > state->head->extra_max ?
+ state->head->extra_max - len : copy);
diff --git a/external/zlib/UnpackedTarball_zlib.mk b/external/zlib/UnpackedTarball_zlib.mk
index dd9fc1c31445..10ee74b9568a 100644
--- a/external/zlib/UnpackedTarball_zlib.mk
+++ b/external/zlib/UnpackedTarball_zlib.mk
@@ -16,6 +16,11 @@ $(eval $(call gb_UnpackedTarball_set_post_action,zlib,\
cp $(addsuffix .c,adler32 compress crc32 deflate inffast inflate inftrees trees zutil) x64 \
))
-$(eval $(call gb_UnpackedTarball_set_patchlevel,zlib,0))
+$(eval $(call gb_UnpackedTarball_set_patchlevel,zlib,1))
+
+$(eval $(call gb_UnpackedTarball_add_patches,zlib,\
+ external/zlib/eff308af425b67093bab25f80f1ae950166bece1.patch \
+ external/zlib/1eb7682f845ac9e9bf9ae35bbfb3bad5dacbd91d.patch \
+))
# vim: set noet sw=4 ts=4:
diff --git a/external/zlib/eff308af425b67093bab25f80f1ae950166bece1.patch b/external/zlib/eff308af425b67093bab25f80f1ae950166bece1.patch
new file mode 100644
index 000000000000..dc84d3a1d385
--- /dev/null
+++ b/external/zlib/eff308af425b67093bab25f80f1ae950166bece1.patch
@@ -0,0 +1,32 @@
+From eff308af425b67093bab25f80f1ae950166bece1 Mon Sep 17 00:00:00 2001
+From: Mark Adler <fork@madler.net>
+Date: Sat, 30 Jul 2022 15:51:11 -0700
+Subject: [PATCH] Fix a bug when getting a gzip header extra field with
+ inflate().
+
+If the extra field was larger than the space the user provided with
+inflateGetHeader(), and if multiple calls of inflate() delivered
+the extra header data, then there could be a buffer overflow of the
+provided space. This commit assures that provided space is not
+exceeded.
+---
+ inflate.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/inflate.c b/inflate.c
+index 7be8c6366..7a7289749 100644
+--- a/inflate.c
++++ b/inflate.c
+@@ -763,9 +763,10 @@ int flush;
+ copy = state->length;
+ if (copy > have) copy = have;
+ if (copy) {
++ len = state->head->extra_len - state->length;
+ if (state->head != Z_NULL &&
+- state->head->extra != Z_NULL) {
+- len = state->head->extra_len - state->length;
++ state->head->extra != Z_NULL &&
++ len < state->head->extra_max) {
+ zmemcpy(state->head->extra + len, next,
+ len + copy > state->head->extra_max ?
+ state->head->extra_max - len : copy);
diff --git a/filter/source/xsltfilter/LibXSLTTransformer.hxx b/filter/source/xsltfilter/LibXSLTTransformer.hxx
index d646d5dbfc43..1de16c81e60c 100644
--- a/filter/source/xsltfilter/LibXSLTTransformer.hxx
+++ b/filter/source/xsltfilter/LibXSLTTransformer.hxx
@@ -68,7 +68,7 @@ namespace XSLT
static const sal_Int32 OUTPUT_BUFFER_SIZE;
static const sal_Int32 INPUT_BUFFER_SIZE;
- LibXSLTTransformer* m_transformer;
+ rtl::Reference<LibXSLTTransformer> m_transformer;
Sequence<sal_Int8> m_readBuf;
Sequence<sal_Int8> m_writeBuf;
diff --git a/formula/source/core/api/token.cxx b/formula/source/core/api/token.cxx
index 17594207234f..cc5fb5426a70 100644
--- a/formula/source/core/api/token.cxx
+++ b/formula/source/core/api/token.cxx
@@ -1193,8 +1193,12 @@ bool FormulaMissingContext::AddMissingExternal( FormulaTokenArray *pNewArr ) con
const OUString &rName = mpFunc->GetExternal();
- // initial (fast) check:
- sal_Unicode nLastChar = rName[ rName.getLength() - 1];
+ // initial (fast) checks:
+ sal_Int32 nLength = rName.getLength();
+ if (!nLength)
+ return false;
+
+ sal_Unicode nLastChar = rName[ nLength - 1];
if ( nLastChar != 't' && nLastChar != 'm' )
return false;
diff --git a/framework/source/helper/titlebarupdate.cxx b/framework/source/helper/titlebarupdate.cxx
index 9536485f66d5..b9d699fa3bd8 100644
--- a/framework/source/helper/titlebarupdate.cxx
+++ b/framework/source/helper/titlebarupdate.cxx
@@ -148,7 +148,7 @@ void TitleBarUpdate::impl_updateApplicationID(const css::uno::Reference< css::fr
sDesktopName = "Startcenter";
#if defined(_WIN32)
// We use a hardcoded product name matching the registry keys so applications can be associated with file types
- sApplicationID = "TheDocumentFoundation.LibreOffice." + sDesktopName;
+ sApplicationID = "CIB.CIBOffice." + sDesktopName;
#else
sApplicationID = utl::ConfigManager::getProductName().toAsciiLowerCase() + "-" + sDesktopName.toAsciiLowerCase();
#endif
diff --git a/icon-themes/breeze/sfx2/res/logo.png b/icon-themes/breeze/sfx2/res/logo.png
index ace737a89fd9..e2cd4aaa3aea 100755
--- a/icon-themes/breeze/sfx2/res/logo.png
+++ b/icon-themes/breeze/sfx2/res/logo.png
Binary files differ
diff --git a/icon-themes/cib/sfx2/res/logo.png b/icon-themes/cib/sfx2/res/logo.png
index ace737a89fd9..4ae4a19b1ccb 100644
--- a/icon-themes/cib/sfx2/res/logo.png
+++ b/icon-themes/cib/sfx2/res/logo.png
Binary files differ
diff --git a/icon-themes/colibre/sfx2/res/logo.png b/icon-themes/colibre/sfx2/res/logo.png
index ace737a89fd9..e2cd4aaa3aea 100644
--- a/icon-themes/colibre/sfx2/res/logo.png
+++ b/icon-themes/colibre/sfx2/res/logo.png
Binary files differ
diff --git a/icon-themes/elementary/sfx2/res/logo.png b/icon-themes/elementary/sfx2/res/logo.png
index ace737a89fd9..e2cd4aaa3aea 100755
--- a/icon-themes/elementary/sfx2/res/logo.png
+++ b/icon-themes/elementary/sfx2/res/logo.png
Binary files differ
diff --git a/icon-themes/karasa_jaga/sfx2/res/logo.png b/icon-themes/karasa_jaga/sfx2/res/logo.png
index ace737a89fd9..e2cd4aaa3aea 100644
--- a/icon-themes/karasa_jaga/sfx2/res/logo.png
+++ b/icon-themes/karasa_jaga/sfx2/res/logo.png
Binary files differ
diff --git a/icon-themes/sifr/sfx2/res/logo.png b/icon-themes/sifr/sfx2/res/logo.png
index ace737a89fd9..e2cd4aaa3aea 100755
--- a/icon-themes/sifr/sfx2/res/logo.png
+++ b/icon-themes/sifr/sfx2/res/logo.png
Binary files differ
diff --git a/icon-themes/tango/sfx2/res/logo.png b/icon-themes/tango/sfx2/res/logo.png
index ace737a89fd9..e2cd4aaa3aea 100644
--- a/icon-themes/tango/sfx2/res/logo.png
+++ b/icon-themes/tango/sfx2/res/logo.png
Binary files differ
diff --git a/include/default.rc b/include/default.rc
index 5474d55c4c0a..40bcb28d2b57 100644
--- a/include/default.rc
+++ b/include/default.rc
@@ -45,7 +45,7 @@ VS_VERSION_INFO VERSIONINFO
{
// International StringTable
VALUE "CompanyName", PPS(RES_APP_VENDOR) "\0"
- VALUE "ProductName", "LibreOffice\0"
+ VALUE "ProductName", "CIB Office\0"
VALUE "ProductVersion", PPS(VER_LEVEL) "\0"
VALUE "FileVersion", PPS(VER_LEVEL) "\0"
VALUE "OriginalFilename", PPS(ORG_NAME) "\0"
diff --git a/include/vcl/svtabbx.hxx b/include/vcl/svtabbx.hxx
index fda6c2a28c35..209c506a0ea2 100644
--- a/include/vcl/svtabbx.hxx
+++ b/include/vcl/svtabbx.hxx
@@ -96,6 +96,7 @@ public:
sal_uLong GetEntryPos( const SvTreeListEntry* pEntry ) const;
void SetTabJustify( sal_uInt16 nTab, SvTabJustify );
+ void SetTabEditable( sal_uInt16 nTab, bool bEditable );
};
// class SvHeaderTabListBox ---------------------------------------------------
diff --git a/include/vcl/treelistbox.hxx b/include/vcl/treelistbox.hxx
index 0f47b402dc91..e61a81a40797 100644
--- a/include/vcl/treelistbox.hxx
+++ b/include/vcl/treelistbox.hxx
@@ -380,6 +380,7 @@ public:
SvViewDataItem* GetViewDataItem(SvTreeListEntry const *, SvLBoxItem const *);
const SvViewDataItem* GetViewDataItem(const SvTreeListEntry*, const SvLBoxItem*) const;
+ VclPtr<Edit> GetEditWidget() const; // for UITest
bool IsInplaceEditingEnabled() const { return bool(nImpFlags & SvTreeListBoxFlags::EDT_ENABLED); }
bool IsEditingActive() const { return bool(nImpFlags & SvTreeListBoxFlags::IN_EDT); }
void EndEditing( bool bCancel = false );
@@ -757,6 +758,7 @@ public:
OUString const & GetSavedValue() const;
void StopEditing( bool bCancel );
void Hide();
+ VclPtr<Edit> GetEditWidget() const;
};
#endif
diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx
index 5a9ee5a92f39..cc5e6b9d03a2 100644
--- a/include/vcl/weld.hxx
+++ b/include/vcl/weld.hxx
@@ -947,8 +947,8 @@ public:
virtual void set_sort_order(bool bAscending) = 0;
// TRUE ascending, FALSE, descending, INDET, neither (off)
- virtual void set_sort_indicator(TriState eState, int nColumn = -1) = 0;
- virtual TriState get_sort_indicator(int nColumn = -1) const = 0;
+ virtual void set_sort_indicator(TriState eState, int nColumn) = 0;
+ virtual TriState get_sort_indicator(int nColumn) const = 0;
virtual int get_sort_column() const = 0;
virtual void set_sort_column(int nColumn) = 0;
@@ -964,6 +964,7 @@ public:
virtual void columns_autosize() = 0;
virtual void set_column_fixed_widths(const std::vector<int>& rWidths) = 0;
+ virtual void set_column_editables(const std::vector<bool>& rEditables) = 0;
virtual int get_column_width(int nCol) const = 0;
virtual void set_centered_column(int nCol) = 0;
virtual OUString get_column_title(int nColumn) const = 0;
diff --git a/instsetoo_native/inc_common/windows/msi_templates/Binary/Banner.bmp b/instsetoo_native/inc_common/windows/msi_templates/Binary/Banner.bmp
index f734f3a2eeaf..8f9ce2d0ba44 100644
--- a/instsetoo_native/inc_common/windows/msi_templates/Binary/Banner.bmp
+++ b/instsetoo_native/inc_common/windows/msi_templates/Binary/Banner.bmp
Binary files differ
diff --git a/instsetoo_native/inc_common/windows/msi_templates/Binary/Image.bmp b/instsetoo_native/inc_common/windows/msi_templates/Binary/Image.bmp
index f1aa5699dff7..a6cf9c7a816c 100644
--- a/instsetoo_native/inc_common/windows/msi_templates/Binary/Image.bmp
+++ b/instsetoo_native/inc_common/windows/msi_templates/Binary/Image.bmp
Binary files differ
diff --git a/instsetoo_native/inc_ooohelppack/windows/msi_templates/Property.idt b/instsetoo_native/inc_ooohelppack/windows/msi_templates/Property.idt
index 6f92cc4a621e..3b3a2b351b07 100644
--- a/instsetoo_native/inc_ooohelppack/windows/msi_templates/Property.idt
+++ b/instsetoo_native/inc_ooohelppack/windows/msi_templates/Property.idt
@@ -8,9 +8,9 @@ ApplicationUsers AllUsers
ALLUSERS 1
ARPCOMMENTS ARPCOMMENTSTEMPLATE
ARPCONTACT CIB software GmbH
-ARPHELPLINK https://www.cib.de/libreoffice-poweredbycib
-ARPURLINFOABOUT https://www.cib.de/libreoffice-poweredbycib
-ARPURLUPDATEINFO https://www.cib.de/libreoffice-poweredbycib
+ARPHELPLINK https://www.cib.de/office
+ARPURLINFOABOUT https://www.cib.de/office
+ARPURLUPDATEINFO https://www.cib.de/office
DefaultUIFont Tahoma8
DialogCaption Windows Installer
DiskPrompt [1]
diff --git a/instsetoo_native/util/openoffice.lst.in b/instsetoo_native/util/openoffice.lst.in
index 4c8092e8b099..5c71e5fc84b9 100644
--- a/instsetoo_native/util/openoffice.lst.in
+++ b/instsetoo_native/util/openoffice.lst.in
@@ -8,21 +8,21 @@ Globals
UREPACKAGEVERSION @LIBO_VERSION_MAJOR@.@LIBO_VERSION_MINOR@.@LIBO_VERSION_MICRO@.@LIBO_VERSION_PATCH@@LIBO_VERSION_SUFFIX@
URELAYERVERSION 1
REFERENCEOOOMAJORMINOR 4.1
- WINDOWSBASISROOTNAME LibreOffice powered by CIB
- UNIXBASISROOTNAME libreofficepoweredbycib@LIBO_VERSION_MAJOR@.@LIBO_VERSION_MINOR@
+ WINDOWSBASISROOTNAME CIB Office
+ UNIXBASISROOTNAME ciboffice@LIBO_VERSION_MAJOR@.@LIBO_VERSION_MINOR@
HIDELICENSEDIALOG 1
PACKAGEPREFIX
- BASISPACKAGEPREFIX libreofficepoweredbycibbasis
- UREPACKAGEPREFIX libreofficepoweredbycib
+ BASISPACKAGEPREFIX cibofficebasis
+ UREPACKAGEPREFIX ciboffice
SOLSUREPACKAGEPREFIX libreoffice
- PROGRESSBARCOLOR 255,255,255
+ PROGRESSBARCOLOR 85,90,95
PROGRESSSIZE 460,6
PROGRESSSIZEHIGH 617,12
PROGRESSPOSITION 26,235
PROGRESSPOSITIONHIGH 46,212
- PROGRESSFRAMECOLOR 255,255,255
+ PROGRESSFRAMECOLOR 85,90,95
PROGRESSTEXTBASELINE 230
- PROGRESSTEXTCOLOR 255,255,255
+ PROGRESSTEXTCOLOR 85,90,95
NATIVEPROGRESS false
REGISTRYLAYERNAME Layers
SERVICEPACK 1
@@ -40,13 +40,13 @@ Globals
}
}
-LibreOfficePoweredByCIB
+CIBOffice
{
Settings
{
variables
{
- PRODUCTNAME LibreOffice powered by CIB
+ PRODUCTNAME CIB Office
PRODUCTVERSION @LIBO_VERSION_MAJOR@.@LIBO_VERSION_MINOR@
PRODUCTEXTENSION -@LIBO_VERSION_PATCH@
POSTVERSIONEXTENSION
@@ -70,7 +70,7 @@ LibreOfficePoweredByCIB
CHANGETARGETDIR 1
PATCHCODEFILE ooo_patchcodes.txt
STARTCENTER_ADDFEATURE_URL http://extensions.libreoffice.org/
- STARTCENTER_INFO_URL https://www.cib.de/libreoffice-poweredbycib
+ STARTCENTER_INFO_URL https://www.cib.de/office
STARTCENTER_TEMPLREP_URL http://templates.libreoffice.org/
DICT_REPO_URL http://extensions.libreoffice.org/dictionaries/
STARTCENTER_HIDE_EXTERNAL_LINKS 0
@@ -78,24 +78,24 @@ LibreOfficePoweredByCIB
active 1
compression 5
script setup_osl
- downloadname LibreOfficePoweredByCIB_{productversion}_{os}_install_{languages}
- langpackdownloadname LibreOfficePoweredByCIB_{productversion}_languagepack_{os}_install_{languages}
- helppackdownloadname LibreOfficePoweredByCIB_{productversion}_helppack_{os}_install_{languages}
+ downloadname CIBOffice_{productversion}_{os}_install_{languages}
+ langpackdownloadname CIBOffice_{productversion}_languagepack_{os}_install_{languages}
+ helppackdownloadname CIBOffice_{productversion}_helppack_{os}_install_{languages}
include {installscriptdir},{customtargetpath}/readlicense_oo/readme,{customtargetpath}/sysui/{pkgtype},{customtargetpath}/setup_native,{filelistpath}/PackageSet,{filelistpath}/GeneratedPackage,{filelistpath}/Package,{filelistpath}/ExtensionPackage,{filelistpath}/CustomTarget/helpcontent2/help3xsl/filelists,{extensionsdir},{licensepath},{packinfopath}
}
}
-LibreOfficePoweredByCIBDev
+CIBOfficeDev
{
Settings
{
variables
{
- PRODUCTNAME LibreOffice Powered By CIB Dev
+ PRODUCTNAME CIB Office Dev
PRODUCTVERSION @LIBO_VERSION_MAJOR@.@LIBO_VERSION_MINOR@
PRODUCTEXTENSION .@LIBO_VERSION_MICRO@.@LIBO_VERSION_PATCH@@LIBO_VERSION_SUFFIX@
- WINDOWSBASISROOTNAME LibreOfficeDev @LIBO_VERSION_MAJOR@
- UNIXBASISROOTNAME libreofficedev@LIBO_VERSION_MAJOR@.@LIBO_VERSION_MINOR@
+ WINDOWSBASISROOTNAME CIBOfficeDev @LIBO_VERSION_MAJOR@
+ UNIXBASISROOTNAME cibofficedev@LIBO_VERSION_MAJOR@.@LIBO_VERSION_MINOR@
POSTVERSIONEXTENSION
BUNDLEIDENTIFIER @MACOSX_BUNDLE_IDENTIFIER@
BRANDPACKAGEVERSION @LIBO_VERSION_MAJOR@.@LIBO_VERSION_MINOR@
@@ -104,9 +104,9 @@ LibreOfficePoweredByCIBDev
ABOUTBOXPRODUCTVERSIONSUFFIX @LIBO_VERSION_SUFFIX_SUFFIX@
BASEPRODUCTVERSION @LIBO_VERSION_MAJOR@.@LIBO_VERSION_MINOR@
DEVELOPMENTPRODUCT 1
- BASISPACKAGEPREFIX libreofficepoweredbycibdevbasis
- UREPACKAGEPREFIX libreofficepoweredbycibdev
- SOLSUREPACKAGEPREFIX libreofficepoweredbycibdev
+ BASISPACKAGEPREFIX cibofficedevbasis
+ UREPACKAGEPREFIX cibofficedev
+ SOLSUREPACKAGEPREFIX cibofficedev
REGISTRYLAYERNAME LayerDev
UPDATEURL https://update.libreoffice.org/check.php
ADD_INCLUDE_FILES cli_ure/version/version.txt,unoil/climaker/version.txt
@@ -123,28 +123,28 @@ LibreOfficePoweredByCIBDev
CODEFILENAME codes_ooodev.txt
LOCALUSERDIR $ORIGIN/..
STARTCENTER_ADDFEATURE_URL https://extensions.libreoffice.org/
- STARTCENTER_INFO_URL https://www.cib.de/libreoffice-poweredbycib
+ STARTCENTER_INFO_URL https://www.cib.de/office
STARTCENTER_TEMPLREP_URL https://templates.libreoffice.org/
DICT_REPO_URL https://extensions.libreoffice.org/dictionaries/
}
active 1
compression 5
script setup_osl
- downloadname LibreOfficePoweredByCIBDev_{productversion}_{os}_install_{languages}
- langpackdownloadname LibreOfficePoweredByCIBDev_{productversion}_languagepack_{os}_install_{languages}
- helppackdownloadname LibreOfficePoweredByCIBDev_{productversion}_helppack_{os}_install_{languages}
+ downloadname CIBOfficeDev_{productversion}_{os}_install_{languages}
+ langpackdownloadname CIBOfficeDev_{productversion}_languagepack_{os}_install_{languages}
+ helppackdownloadname CIBOfficeDev_{productversion}_helppack_{os}_install_{languages}
include {installscriptdir},{customtargetpath}/readlicense_oo/readme,{customtargetpath}/sysui/{pkgtype},{customtargetpath}/setup_native,{filelistpath}/PackageSet,{filelistpath}/GeneratedPackage,{filelistpath}/Package,{filelistpath}/ExtensionPackage,{filelistpath}/CustomTarget/helpcontent2/help3xsl/filelists,{extensionsdir},{licensepath},{packinfopath}
}
}
-LibreOfficePoweredByCIB_SDK
+CIBOffice_SDK
{
Settings
{
- downloadname LibreOfficePoweredByCIB-SDK_{packageversion}_{os}_install_{languages}
+ downloadname CIBOffice-SDK_{packageversion}_{os}_install_{languages}
variables
{
- PRODUCTNAME LibreOffice Powered By CIB
+ PRODUCTNAME CIB Office
PRODUCTVERSION @LIBO_VERSION_MAJOR@.@LIBO_VERSION_MINOR@
PRODUCTEXTENSION .@LIBO_VERSION_MICRO@.@LIBO_VERSION_PATCH@@LIBO_VERSION_SUFFIX@
POSTVERSIONEXTENSION SDK
@@ -164,7 +164,7 @@ LibreOfficePoweredByCIB_SDK
CHANGETARGETDIR 1
DONTUSESTARTMENUFOLDER 1
STARTCENTER_ADDFEATURE_URL https://extensions.libreoffice.org/
- STARTCENTER_INFO_URL https://www.cib.de/libreoffice-poweredbycib
+ STARTCENTER_INFO_URL https://www.cib.de/office
STARTCENTER_TEMPLREP_URL https://templates.libreoffice.org/
DICT_REPO_URL https://extensions.libreoffice.org/dictionaries/
}
@@ -175,26 +175,26 @@ LibreOfficePoweredByCIB_SDK
}
}
-LibreOfficePoweredByCIBDev_SDK
+CIBOfficeDev_SDK
{
Settings
{
- downloadname LibreOfficePoweredByCIBDev-SDK_{packageversion}_{os}_install_{languages}
+ downloadname CIBOfficeDev-SDK_{packageversion}_{os}_install_{languages}
variables
{
- PRODUCTNAME LibreOfficePoweredByCIBDev
+ PRODUCTNAME CIBOfficeDev
PRODUCTVERSION @LIBO_VERSION_MAJOR@.@LIBO_VERSION_MINOR@
PRODUCTEXTENSION .@LIBO_VERSION_MICRO@.@LIBO_VERSION_PATCH@@LIBO_VERSION_SUFFIX@
- WINDOWSBASISROOTNAME LibreOfficeDev @LIBO_VERSION_MAJOR@
- UNIXBASISROOTNAME libreofficedev@LIBO_VERSION_MAJOR@.@LIBO_VERSION_MINOR@
+ WINDOWSBASISROOTNAME CIBOfficeDev @LIBO_VERSION_MAJOR@
+ UNIXBASISROOTNAME cibofficedev@LIBO_VERSION_MAJOR@.@LIBO_VERSION_MINOR@
POSTVERSIONEXTENSION SDK
BUNDLEIDENTIFIER @MACOSX_BUNDLE_IDENTIFIER@.SDK
BRANDPACKAGEVERSION @LIBO_VERSION_MAJOR@.@LIBO_VERSION_MINOR@
PACKAGEVERSION @LIBO_VERSION_MAJOR@.@LIBO_VERSION_MINOR@.@LIBO_VERSION_MICRO@.@LIBO_VERSION_PATCH@@LIBO_VERSION_SUFFIX@
PACKAGEREVISION {buildid}
BASISPACKAGEPREFIX lodevbasis
- UREPACKAGEPREFIX libreofficedev
- SOLSUREPACKAGEPREFIX libreofficedev
+ UREPACKAGEPREFIX cibofficedev
+ SOLSUREPACKAGEPREFIX cibofficedev
REGISTRYLAYERNAME LayerDev
DEVELOPMENTPRODUCT 1
PACK_INSTALLED 1
@@ -209,7 +209,7 @@ LibreOfficePoweredByCIBDev_SDK
CHANGETARGETDIR 1
DONTUSESTARTMENUFOLDER 1
STARTCENTER_ADDFEATURE_URL https://extensions.libreoffice.org/
- STARTCENTER_INFO_URL https://www.cib.de/libreoffice-poweredbycib
+ STARTCENTER_INFO_URL https://www.cib.de/office
STARTCENTER_TEMPLREP_URL https://templates.libreoffice.org/
DICT_REPO_URL https://extensions.libreoffice.org/dictionaries/
}
diff --git a/offapi/com/sun/star/view/PrintOptions.idl b/offapi/com/sun/star/view/PrintOptions.idl
index 4ed8b23baaf0..4bef0fec5288 100644
--- a/offapi/com/sun/star/view/PrintOptions.idl
+++ b/offapi/com/sun/star/view/PrintOptions.idl
@@ -80,6 +80,14 @@ published service PrintOptions
/** advises the printer to create a single print job for each copy.
*/
[optional, property] boolean SinglePrintJobs;
+
+ /** The job name which is sent to the printer (can be seen in the Printer job queue).
+ *
+ * If omitted, the document title will be used as default.
+ *
+ * @since LibreOffice 7.5
+ */
+ [optional, property] boolean JobName;
};
diff --git a/officecfg/registry/data/org/openoffice/Setup.xcu b/officecfg/registry/data/org/openoffice/Setup.xcu
index 0472de91f20e..2a958ddbcda9 100644
--- a/officecfg/registry/data/org/openoffice/Setup.xcu
+++ b/officecfg/registry/data/org/openoffice/Setup.xcu
@@ -781,7 +781,7 @@
<value>10</value>
</prop>
<prop oor:name="VersionIdentifiers">
- <value oor:separator=",">Libreoffice 3=libreoffice/3,Openoffice.org 3=openoffice.org/3,OpenOffice.org 2=openoffice.org2,StarOffice 8=staroffice8,StarSuite 8=starsuite8</value>
+ <value oor:separator=",">LibreOffice=libreoffice/4,LibreOffice powered by CIB=libreofficepoweredbycib/4,Libreoffice 3=libreoffice/3,Openoffice.org 3=openoffice.org/3,OpenOffice.org 2=openoffice.org2,StarOffice 8=staroffice8,StarSuite 8=starsuite8</value>
</prop>
<node oor:name="MigrationSteps">
<node oor:name="Datasources" oor:op="replace">
@@ -881,9 +881,13 @@
<it>/org.openoffice.Office.Common/Misc/DisableUICustomization</it>
<it>/org.openoffice.Office.Common/Misc/ExperimentalMode</it>
<it>/org.openoffice.Office.Common/Misc/FormControlPilotsEnabled</it>
+ <it>/org.openoffice.Office.Common/Misc/LastTipOfTheDayID</it>
+ <it>/org.openoffice.Office.Common/Misc/LastTipOfTheDayShown</it>
<it>/org.openoffice.Office.Common/Misc/MacroRecorderMode</it>
+ <it>/org.openoffice.Office.Common/Misc/PersonaSettings</it>
<it>/org.openoffice.Office.Common/Misc/PluginsEnabled</it>
<it>/org.openoffice.Office.Common/Misc/ShowLinkWarningDialog</it>
+ <it>/org.openoffice.Office.Common/Misc/ShowTipOfTheDay</it>
<it>/org.openoffice.Office.Common/Misc/SymbolSet</it>
<it>/org.openoffice.Office.Common/Misc/SymbolStyle</it>
<it>/org.openoffice.Office.Common/Misc/ToolboxStyle</it>
@@ -962,7 +966,10 @@
</node>
<node oor:name="Setup" oor:op="replace">
<prop oor:name="IncludedNodes">
- <value>/org.openoffice.Setup/Office/Factories</value>
+ <value>
+ <it>/org.openoffice.Setup/Office/Factories</it>
+ <it>/org.openoffice.Setup/L10N</it>
+ </value>
</prop>
</node>
<node oor:name="UI" oor:op="replace">
diff --git a/oox/source/ole/vbacontrol.cxx b/oox/source/ole/vbacontrol.cxx
index da61e818c149..cc4969e8251c 100644
--- a/oox/source/ole/vbacontrol.cxx
+++ b/oox/source/ole/vbacontrol.cxx
@@ -441,13 +441,17 @@ void VbaFormControl::importStorage( StorageBase& rStrg, const AxClassTable& rCla
if ( xPageSiteRef.get() )
idToPage[ xPageSiteRef->getId() ] = control;
}
- else
+ else if (elem->getControlType() == API_CONTROL_TABSTRIP)
{
AxTabStripModel* pTabStrip = static_cast<AxTabStripModel*>(elem.get());
sCaptions = pTabStrip->maItems;
pMultiPage->mnActiveTab = pTabStrip->mnListIndex;
pMultiPage->mnTabStyle = pTabStrip->mnTabStyle;
}
+ else
+ {
+ SAL_WARN("oox", "unexpected control type " << elem->getControlType());
+ }
}
// apply caption/titles to pages
diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx
index 8091f7e2ffb9..4cc98b01096e 100644
--- a/sc/inc/document.hxx
+++ b/sc/inc/document.hxx
@@ -558,6 +558,8 @@ private:
bool mbFinalTrackFormulas : 1;
// This indicates if a ScDocShell::DoRecalc() or ScDocShell::DoHardRecalc() is in progress.
bool mbDocShellRecalc : 1;
+ // This indicates if a ScOutputData::LayoutStrings() is in progress.
+ bool mbLayoutStrings : 1;
size_t mnMutationGuardFlags;
@@ -2502,6 +2504,9 @@ public:
bool IsInDocShellRecalc() const { return mbDocShellRecalc; }
void SetDocShellRecalc(bool bSet) { mbDocShellRecalc = bSet; }
+ bool IsInLayoutStrings() const { return mbLayoutStrings; }
+ void SetLayoutStrings(bool bSet) { mbLayoutStrings = bSet; }
+
private:
/**
diff --git a/sc/qa/extras/scpdfexport.cxx b/sc/qa/extras/scpdfexport.cxx
index f6a7ea8bfbd0..ec789fe0fdeb 100644
--- a/sc/qa/extras/scpdfexport.cxx
+++ b/sc/qa/extras/scpdfexport.cxx
@@ -55,13 +55,17 @@ private:
public:
void testExportRange_Tdf120161();
void testExportFitToPage_Tdf103516();
+ void testForcepoint97();
CPPUNIT_TEST_SUITE(ScPDFExportTest);
CPPUNIT_TEST(testExportRange_Tdf120161);
CPPUNIT_TEST(testExportFitToPage_Tdf103516);
+ CPPUNIT_TEST(testForcepoint97);
CPPUNIT_TEST_SUITE_END();
};
+char const DATA_DIRECTORY[] = "/sc/qa/extras/testdocuments/";
+
void ScPDFExportTest::setUp()
{
test::BootstrapFixture::setUp();
@@ -358,6 +362,18 @@ void ScPDFExportTest::testExportFitToPage_Tdf103516()
}
}
+// just needs to not crash on export to pdf
+void ScPDFExportTest::testForcepoint97()
+{
+ mxComponent = loadFromDesktop(m_directories.getURLFromSrc(DATA_DIRECTORY) + "forcepoint97.xlsx",
+ "com.sun.star.sheet.SpreadsheetDocument");
+ uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
+
+ // A1:H81
+ ScRange range1(0, 0, 0, 7, 81, 0);
+ std::shared_ptr<utl::TempFile> pPDFFile = exportToPDF(xModel, range1);
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(ScPDFExportTest);
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sc/qa/extras/testdocuments/forcepoint97.xlsx b/sc/qa/extras/testdocuments/forcepoint97.xlsx
new file mode 100644
index 000000000000..152fbbc45a9f
--- /dev/null
+++ b/sc/qa/extras/testdocuments/forcepoint97.xlsx
Binary files differ
diff --git a/sc/qa/uitest/calc_tests7/tdf150044.py b/sc/qa/uitest/calc_tests7/tdf150044.py
new file mode 100644
index 000000000000..e3a400f617da
--- /dev/null
+++ b/sc/qa/uitest/calc_tests7/tdf150044.py
@@ -0,0 +1,85 @@
+# -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+from uitest.framework import UITestCase
+from libreoffice.uno.propertyvalue import mkPropertyValues
+from org.libreoffice.unotest import systemPathToFileUrl
+from tempfile import TemporaryDirectory
+import os.path
+
+class save_shared_readonly_with_password(UITestCase):
+
+ def test_save_to_shared_ods(self):
+
+ return # FIXME the test deadlocks after saving the file
+ with TemporaryDirectory() as tempdir:
+ xFilePath = os.path.join(tempdir, "shared_readonly_with_password_tmp.ods")
+
+ self.ui_test.create_doc_in_start_center("calc")
+
+ self.ui_test.execute_dialog_through_command(".uno:ShareDocument")
+ xShareDocumentDialog = self.xUITest.getTopFocusWindow()
+ xShareCheckButton = xShareDocumentDialog.getChild("share")
+ xShareCheckButton.executeAction("CLICK", tuple())
+ xOk = xShareDocumentDialog.getChild("ok")
+
+ # Save the document
+ self.ui_test.execute_dialog_through_action(xOk, "CLICK")
+ xSaveDialog = self.xUITest.getTopFocusWindow()
+ xFileName = xSaveDialog.getChild("file_name")
+ xFileName.executeAction("TYPE", mkPropertyValues({"KEYCODE":"CTRL+A"}))
+ xFileName.executeAction("TYPE", mkPropertyValues({"KEYCODE":"BACKSPACE"}))
+ xFileName.executeAction("TYPE", mkPropertyValues({"TEXT": xFilePath}))
+ xPasswordCheckButton = xSaveDialog.getChild("password")
+ xPasswordCheckButton.executeAction("CLICK", tuple())
+ xOpen = xSaveDialog.getChild("open")
+
+ self.ui_test.execute_dialog_through_action(xOpen, "CLICK")
+ xPasswordDialog = self.xUITest.getTopFocusWindow()
+ xReadonly = xPasswordDialog.getChild("readonly")
+ xReadonly.executeAction("CLICK", tuple())
+ xNewPassword = xPasswordDialog.getChild("newpassroEntry")
+ xNewPassword.executeAction("TYPE", mkPropertyValues({"TEXT": "password"}))
+ xConfirmPassword = xPasswordDialog.getChild("confirmropassEntry")
+ xConfirmPassword.executeAction("TYPE", mkPropertyValues({"TEXT": "password"}))
+
+ xOKButton = xPasswordDialog.getChild("ok")
+ xOKButton.executeAction("CLICK", tuple())
+
+ while True:
+ if not os.path.isfile(xFilePath):
+ time.sleep(DEFAULT_SLEEP)
+
+ self.ui_test.close_doc()
+
+ self.ui_test.execute_dialog_through_command(".uno:Open")
+ xOpenDialog = self.xUITest.getTopFocusWindow()
+ # Open document
+ xFileName = xOpenDialog.getChild("file_name")
+ xFileName.executeAction("TYPE", mkPropertyValues({"TEXT": xFilePath}))
+ xOpenBtn = xOpenDialog.getChild("open")
+ xOpenBtn.executeAction("CLICK", tuple())
+
+ xDialog = self.ui_test.wait_for_top_focus_window('SharedWarningDialog')
+ xOk = xDialog.getChild("ok")
+ xOk.executeAction("CLICK", tuple())
+
+ document = self.ui_test.get_component()
+ self.assertTrue(document.isReadonly())
+
+ self.ui_test.execute_dialog_through_command(".uno:EditDoc")
+ xDialog = self.xUITest.getTopFocusWindow()
+ # check that we have a password dialog for editing the shared document
+ xPassword = xDialog.getChild("newpassEntry")
+ xPassword.executeAction("TYPE", mkPropertyValues({"TEXT": "password"}))
+ xOKButton = xDialog.getChild("ok")
+ xOKButton.executeAction("CLICK", tuple())
+
+ self.assertFalse(document.isReadonly())
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sc/qa/unit/data/xlsx/forcepoint107.xlsx b/sc/qa/unit/data/xlsx/forcepoint107.xlsx
new file mode 100644
index 000000000000..f5238dcb5c3e
--- /dev/null
+++ b/sc/qa/unit/data/xlsx/forcepoint107.xlsx
Binary files differ
diff --git a/sc/qa/unit/filters-test.cxx b/sc/qa/unit/filters-test.cxx
index 43c3483bb281..33887536e681 100644
--- a/sc/qa/unit/filters-test.cxx
+++ b/sc/qa/unit/filters-test.cxx
@@ -79,6 +79,7 @@ public:
void testSortWithSheetExternalReferencesODS_Impl( ScDocShellRef const & xDocShRef, SCROW nRow1, SCROW nRow2,
bool bCheckRelativeInSheet );
void testSortWithFormattingXLS();
+ void testForcepoint107();
CPPUNIT_TEST_SUITE(ScFiltersTest);
CPPUNIT_TEST(testCVEs);
@@ -104,6 +105,7 @@ public:
CPPUNIT_TEST(testSortWithSharedFormulasODS);
CPPUNIT_TEST(testSortWithSheetExternalReferencesODS);
CPPUNIT_TEST(testSortWithFormattingXLS);
+ CPPUNIT_TEST(testForcepoint107);
CPPUNIT_TEST_SUITE_END();
@@ -845,6 +847,13 @@ void ScFiltersTest::testSortWithFormattingXLS()
xDocSh->DoClose();
}
+// just needs to not crash on recalc
+void ScFiltersTest::testForcepoint107()
+{
+ ScDocShellRef xDocSh = loadDoc(u"forcepoint107.", FORMAT_XLSX, true);
+ xDocSh->DoHardRecalc();
+}
+
ScFiltersTest::ScFiltersTest()
: ScBootstrapFixture( "sc/qa/unit/data" )
, mbUpdateReferenceOnSort(false)
diff --git a/sc/source/core/data/colorscale.cxx b/sc/source/core/data/colorscale.cxx
index 64c0d990c147..674ee87f2edf 100644
--- a/sc/source/core/data/colorscale.cxx
+++ b/sc/source/core/data/colorscale.cxx
@@ -541,8 +541,10 @@ Color CalcColor( double nVal, double nVal1, const Color& rCol1, double nVal2, co
double GetPercentile( const std::vector<double>& rArray, double fPercentile )
{
size_t nSize = rArray.size();
- size_t nIndex = static_cast<size_t>(::rtl::math::approxFloor( fPercentile * (nSize-1)));
- double fDiff = fPercentile * (nSize-1) - ::rtl::math::approxFloor( fPercentile * (nSize-1));
+ double fFloor = ::rtl::math::approxFloor(fPercentile * (nSize-1));
+ SAL_WARN_IF(fFloor < 0, "sc", "negative percentile");
+ size_t nIndex = fFloor >= 0 ? static_cast<size_t>(fFloor) : 0;
+ double fDiff = fPercentile * (nSize-1) - fFloor;
std::vector<double>::const_iterator iter = rArray.begin() + nIndex;
if (fDiff == 0.0)
return *iter;
diff --git a/sc/source/core/data/documen2.cxx b/sc/source/core/data/documen2.cxx
index 7271fdef0d43..dd76b6cc2dc3 100644
--- a/sc/source/core/data/documen2.cxx
+++ b/sc/source/core/data/documen2.cxx
@@ -166,6 +166,7 @@ ScDocument::ScDocument( ScDocumentMode eMode, SfxObjectShell* pDocShell ) :
mbTrackFormulasPending(false),
mbFinalTrackFormulas(false),
mbDocShellRecalc(false),
+ mbLayoutStrings(false),
mnMutationGuardFlags(0)
{
SetStorageGrammar( formula::FormulaGrammar::GRAM_STORAGE_DEFAULT);
diff --git a/sc/source/core/data/documentimport.cxx b/sc/source/core/data/documentimport.cxx
index 739a62d553ca..948784c7157e 100644
--- a/sc/source/core/data/documentimport.cxx
+++ b/sc/source/core/data/documentimport.cxx
@@ -380,6 +380,14 @@ void ScDocumentImport::setFormulaCell(const ScAddress& rPos, ScFormulaCell* pCel
mpImpl->mrDoc.CheckLinkFormulaNeedingCheck( *pCell->GetCode());
sc::CellStoreType& rCells = pTab->aCol[rPos.Col()].maCells;
+
+ sc::CellStoreType::position_type aPos = rCells.position(rPos.Row());
+ if (aPos.first != rCells.end() && aPos.first->type == sc::element_type_formula)
+ {
+ ScFormulaCell* p = sc::formula_block::at(*aPos.first->data, aPos.second);
+ sc::SharedFormulaUtil::unshareFormulaCell(aPos, *p);
+ }
+
pBlockPos->miCellPos =
rCells.set(pBlockPos->miCellPos, rPos.Row(), pCell);
}
diff --git a/sc/source/core/data/dpobject.cxx b/sc/source/core/data/dpobject.cxx
index 73762cc70c54..33f923d4a26e 100644
--- a/sc/source/core/data/dpobject.cxx
+++ b/sc/source/core/data/dpobject.cxx
@@ -1022,7 +1022,16 @@ bool ScDPObject::GetMembers( sal_Int32 nDim, sal_Int32 nHier, vector<ScDPLabelDa
for (sal_Int32 i = 0; i < nCount; ++i)
{
- Reference<container::XNamed> xMember(xMembersIA->getByIndex(i), UNO_QUERY);
+ Reference<container::XNamed> xMember;
+ try
+ {
+ xMember = Reference<container::XNamed>(xMembersIA->getByIndex(i), UNO_QUERY);
+ }
+ catch (const container::NoSuchElementException&)
+ {
+ TOOLS_WARN_EXCEPTION("sc", "ScNameToIndexAccess getByIndex failed");
+ }
+
ScDPLabelData::Member aMem;
if (xMember.is())
diff --git a/sc/source/core/data/dptabres.cxx b/sc/source/core/data/dptabres.cxx
index 67f742dece8b..f9b132c1ca4f 100644
--- a/sc/source/core/data/dptabres.cxx
+++ b/sc/source/core/data/dptabres.cxx
@@ -2762,7 +2762,10 @@ ScDPResultDimension::~ScDPResultDimension()
ScDPResultMember *ScDPResultDimension::FindMember( SCROW iData ) const
{
if( bIsDataLayout )
- return maMemberArray[0].get();
+ {
+ SAL_WARN_IF(maMemberArray.empty(), "sc.core", "MemberArray is empty");
+ return !maMemberArray.empty() ? maMemberArray[0].get() : nullptr;
+ }
MemberHash::const_iterator aRes = maMemberHash.find( iData );
if( aRes != maMemberHash.end()) {
@@ -2969,8 +2972,11 @@ void ScDPResultDimension::LateInitFrom(
long ScDPResultDimension::GetSize(long nMeasure) const
{
- long nTotal = 0;
long nMemberCount = maMemberArray.size();
+ if (!nMemberCount)
+ return 0;
+
+ long nTotal = 0;
if (bIsDataLayout)
{
OSL_ENSURE(nMeasure == SC_DPMEASURE_ALL || pResultData->GetMeasureCount() == 1,
@@ -3123,7 +3129,7 @@ void ScDPResultDimension::SortMembers( ScDPResultMember* pRefMember )
// handle children
// for data layout, call only once - sorting measure is always taken from settings
- long nLoopCount = bIsDataLayout ? 1 : nCount;
+ long nLoopCount = bIsDataLayout ? std::min<long>(1, nCount) : nCount;
for (long i=0; i<nLoopCount; i++)
{
ScDPResultMember* pMember = maMemberArray[i].get();
diff --git a/sc/source/core/data/formulacell.cxx b/sc/source/core/data/formulacell.cxx
index dff86ec3682e..656ad813093c 100644
--- a/sc/source/core/data/formulacell.cxx
+++ b/sc/source/core/data/formulacell.cxx
@@ -939,6 +939,9 @@ ScFormulaCell::~ScFormulaCell()
if (!mxGroup || !mxGroup->mpCode)
// Formula token is not shared.
delete pCode;
+
+ if (mxGroup && mxGroup->mpTopCell == this)
+ mxGroup->mpTopCell = nullptr;
}
ScFormulaCell* ScFormulaCell::Clone() const
@@ -2140,7 +2143,8 @@ void ScFormulaCell::InterpretTail( ScInterpreterContext& rContext, ScInterpretTa
// XXX if mbNeedsNumberFormat was set even if the current format
// was not General then we'd have to obtain the current format here
// and check at least the types.
- if (bSetFormat && (bForceNumberFormat || ((nFormatIndex % SV_COUNTRY_LANGUAGE_OFFSET) != 0)))
+ const bool bSetNumberFormat = bSetFormat && (bForceNumberFormat || ((nFormatIndex % SV_COUNTRY_LANGUAGE_OFFSET) != 0));
+ if (bSetNumberFormat && !pDocument->IsInLayoutStrings())
{
// set number format explicitly
if (!pDocument->IsThreadedGroupCalcInProgress())
diff --git a/sc/source/core/tool/interpr7.cxx b/sc/source/core/tool/interpr7.cxx
index 8b58519bcda2..a255d22232d2 100644
--- a/sc/source/core/tool/interpr7.cxx
+++ b/sc/source/core/tool/interpr7.cxx
@@ -222,6 +222,7 @@ void ScInterpreter::ScFilterXML()
case XPATH_STRING:
PushString(OUString::createFromAscii(reinterpret_cast<char*>(pXPathObj->stringval)));
break;
+#if LIBXML_VERSION < 21000 || defined(LIBXML_XPTR_LOCS_ENABLED)
case XPATH_POINT:
PushNoValue();
break;
@@ -231,13 +232,13 @@ void ScInterpreter::ScFilterXML()
case XPATH_LOCATIONSET:
PushNoValue();
break;
+#endif
case XPATH_USERS:
PushNoValue();
break;
case XPATH_XSLT_TREE:
PushNoValue();
break;
-
}
}
}
diff --git a/sc/source/filter/oox/workbookhelper.cxx b/sc/source/filter/oox/workbookhelper.cxx
index dd74d30523bc..bf8ef340995a 100644
--- a/sc/source/filter/oox/workbookhelper.cxx
+++ b/sc/source/filter/oox/workbookhelper.cxx
@@ -548,7 +548,7 @@ void WorkbookGlobals::initialize()
aCalcConfig.SetStringRefSyntax( formula::FormulaGrammar::CONV_XL_A1 ) ;
mpDoc->SetCalcConfig(aCalcConfig);
}
- else if (aGenerator.startsWithIgnoreAsciiCase("LibreOffice"))
+ else if (aGenerator.startsWithIgnoreAsciiCase("LibreOffice") || aGenerator.startsWithIgnoreAsciiCase("Collabora") || aGenerator.startsWithIgnoreAsciiCase("CIB"))
{
mbGeneratorKnownGood = true;
}
diff --git a/sc/source/filter/orcus/filterdetect.cxx b/sc/source/filter/orcus/filterdetect.cxx
index 106248854b1d..c0a3f922de46 100644
--- a/sc/source/filter/orcus/filterdetect.cxx
+++ b/sc/source/filter/orcus/filterdetect.cxx
@@ -14,7 +14,7 @@
#include <unotools/mediadescriptor.hxx>
-#include <rtl/strbuf.hxx>
+#include <tools/stream.hxx>
#include <orcus/format_detection.hpp>
@@ -68,7 +68,7 @@ OUString OrcusFormatDetect::detect(css::uno::Sequence<css::beans::PropertyValue>
return OUString();
css::uno::Reference<css::io::XInputStream> xInputStream(aMediaDescriptor[utl::MediaDescriptor::PROP_INPUTSTREAM()], css::uno::UNO_QUERY );
- OStringBuffer aContent(xInputStream->available());
+ SvMemoryStream aContent(xInputStream->available());
static const sal_Int32 nBytes = 4096;
css::uno::Sequence<sal_Int8> aSeq(nBytes);
@@ -77,10 +77,10 @@ OUString OrcusFormatDetect::detect(css::uno::Sequence<css::beans::PropertyValue>
{
sal_Int32 nReadBytes = xInputStream->readBytes(aSeq, nBytes);
bEnd = (nReadBytes != nBytes);
- aContent.append(reinterpret_cast<const char*>(aSeq.getConstArray()), nReadBytes);
+ aContent.WriteBytes(aSeq.getConstArray(), nReadBytes);
}
- orcus::format_t eFormat = orcus::detect(reinterpret_cast<const unsigned char*>(aContent.getStr()), aContent.getLength());
+ orcus::format_t eFormat = orcus::detect(static_cast<const unsigned char*>(aContent.GetData()), aContent.GetSize());
switch (eFormat)
{
diff --git a/sc/source/filter/xml/XMLCalculationSettingsContext.cxx b/sc/source/filter/xml/XMLCalculationSettingsContext.cxx
index 90c59096e300..01257cf56a6f 100644
--- a/sc/source/filter/xml/XMLCalculationSettingsContext.cxx
+++ b/sc/source/filter/xml/XMLCalculationSettingsContext.cxx
@@ -151,12 +151,14 @@ ScXMLNullDateContext::ScXMLNullDateContext( ScXMLImport& rImport,
if (aIter != rAttrList->end())
{
util::DateTime aDateTime;
- ::sax::Converter::parseDateTime(aDateTime, aIter.toString());
- util::Date aDate;
- aDate.Day = aDateTime.Day;
- aDate.Month = aDateTime.Month;
- aDate.Year = aDateTime.Year;
- pCalcSet->SetNullDate(aDate);
+ if (::sax::Converter::parseDateTime(aDateTime, aIter.toString()))
+ {
+ util::Date aDate;
+ aDate.Day = aDateTime.Day;
+ aDate.Month = aDateTime.Month;
+ aDate.Year = aDateTime.Year;
+ pCalcSet->SetNullDate(aDate);
+ }
}
}
}
diff --git a/sc/source/filter/xml/xmlexprt.cxx b/sc/source/filter/xml/xmlexprt.cxx
index 2d16318bac7e..b9988c508556 100644
--- a/sc/source/filter/xml/xmlexprt.cxx
+++ b/sc/source/filter/xml/xmlexprt.cxx
@@ -109,6 +109,7 @@
#include <rtl/ustring.hxx>
#include <tools/color.hxx>
+#include <tools/diagnose_ex.h>
#include <rtl/math.hxx>
#include <svl/zforlist.hxx>
#include <svx/unoshape.hxx>
@@ -3404,16 +3405,23 @@ void ScXMLExport::ExportShape(const uno::Reference < drawing::XShape >& xShape,
uno::Sequence< OUString > aRepresentations(
xReceiver->getUsedRangeRepresentations());
SvXMLAttributeList* pAttrList = nullptr;
- if(aRepresentations.hasElements())
+ try
{
- // add the ranges used by the chart to the shape
- // element to be able to start listening after
- // load (when the chart is not yet loaded)
- uno::Reference< chart2::data::XRangeXMLConversion > xRangeConverter( xChartDoc->getDataProvider(), uno::UNO_QUERY );
- sRanges = lcl_RangeSequenceToString( aRepresentations, xRangeConverter );
- pAttrList = new SvXMLAttributeList();
- pAttrList->AddAttribute(
- GetNamespaceMap().GetQNameByKey( XML_NAMESPACE_DRAW, GetXMLToken(XML_NOTIFY_ON_UPDATE_OF_RANGES) ), sRanges );
+ if (aRepresentations.hasElements())
+ {
+ // add the ranges used by the chart to the shape
+ // element to be able to start listening after
+ // load (when the chart is not yet loaded)
+ uno::Reference< chart2::data::XRangeXMLConversion > xRangeConverter( xChartDoc->getDataProvider(), uno::UNO_QUERY );
+ sRanges = lcl_RangeSequenceToString( aRepresentations, xRangeConverter );
+ pAttrList = new SvXMLAttributeList();
+ pAttrList->AddAttribute(
+ GetNamespaceMap().GetQNameByKey( XML_NAMESPACE_DRAW, GetXMLToken(XML_NOTIFY_ON_UPDATE_OF_RANGES) ), sRanges );
+ }
+ }
+ catch (const lang::IllegalArgumentException&)
+ {
+ TOOLS_WARN_EXCEPTION("sc", "Exception in lcl_RangeSequenceToString - invalid range?");
}
GetShapeExport()->exportShape(xShape, SEF_DEFAULT, pPoint, pAttrList);
}
diff --git a/sc/source/ui/docshell/docsh.cxx b/sc/source/ui/docshell/docsh.cxx
index bd7402231333..2203ca42725c 100644
--- a/sc/source/ui/docshell/docsh.cxx
+++ b/sc/source/ui/docshell/docsh.cxx
@@ -915,6 +915,14 @@ void ScDocShell::Notify( SfxBroadcaster&, const SfxHint& rHint )
aValues[1].Name = "Password";
aValues[1].Value <<= pPasswordItem->GetValue();
}
+ const SfxUnoAnyItem* pEncryptionItem = SfxItemSet::GetItem<SfxUnoAnyItem>(GetMedium()->GetItemSet(), SID_ENCRYPTIONDATA, false);
+ if (pEncryptionItem)
+ {
+ aValues.realloc(aValues.getLength() + 1);
+ auto pValues = aValues.getArray();
+ pValues[aValues.getLength() - 1].Name = "EncryptionData";
+ pValues[aValues.getLength() - 1].Value = pEncryptionItem->GetValue();
+ }
SC_MOD()->SetInSharedDocSaving( true );
xStor->storeToURL( GetSharedFileURL(), aValues );
diff --git a/sc/source/ui/unoobj/chart2uno.cxx b/sc/source/ui/unoobj/chart2uno.cxx
index 8916ee2cf09d..1db8aa750063 100644
--- a/sc/source/ui/unoobj/chart2uno.cxx
+++ b/sc/source/ui/unoobj/chart2uno.cxx
@@ -2165,7 +2165,10 @@ OUString SAL_CALL ScChart2DataProvider::convertRangeToXML( const OUString& sRang
ScRefTokenHelper::compileRangeRepresentation(
aRefTokens, sRangeRepresentation, m_pDocument, cSep, m_pDocument->GetGrammar(), true);
if (aRefTokens.empty())
+ {
+ SAL_WARN("sc", "convertRangeToXML throw IllegalArgumentException from input of: " << sRangeRepresentation);
throw lang::IllegalArgumentException();
+ }
Tokens2RangeStringXML converter(m_pDocument);
converter = ::std::for_each(aRefTokens.begin(), aRefTokens.end(), converter);
diff --git a/sc/source/ui/view/output2.cxx b/sc/source/ui/view/output2.cxx
index 41a9760cc450..1dd9bc063aac 100644
--- a/sc/source/ui/view/output2.cxx
+++ b/sc/source/ui/view/output2.cxx
@@ -70,6 +70,7 @@
#include <scopetools.hxx>
#include <com/sun/star/i18n/DirectionProperty.hpp>
+#include <comphelper/scopeguard.hxx>
#include <comphelper/string.hxx>
#include <memory>
@@ -1441,6 +1442,12 @@ void ScOutputData::DrawStrings( bool bPixelToLogic )
tools::Rectangle ScOutputData::LayoutStrings(bool bPixelToLogic, bool bPaint, const ScAddress &rAddress)
{
+ bool bOrigIsInLayoutStrings = mpDoc->IsInLayoutStrings();
+ mpDoc->SetLayoutStrings(true);
+ comphelper::ScopeGuard g([this, bOrigIsInLayoutStrings] {
+ mpDoc->SetLayoutStrings(bOrigIsInLayoutStrings);
+ });
+
OSL_ENSURE( mpDev == mpRefDevice ||
mpDev->GetMapMode().GetMapUnit() == mpRefDevice->GetMapMode().GetMapUnit(),
"LayoutStrings: different MapUnits ?!?!" );
diff --git a/sc/source/ui/view/tabview3.cxx b/sc/source/ui/view/tabview3.cxx
index f512e8dd9127..bc9504b79642 100644
--- a/sc/source/ui/view/tabview3.cxx
+++ b/sc/source/ui/view/tabview3.cxx
@@ -1853,6 +1853,7 @@ void ScTabView::SetTabNo( SCTAB nTab, bool bNew, bool bExtendSelection, bool bSa
// UpdateShow before SetCursor, so that UpdateAutoFillMark finds the correct
// window (is called from SetCursor)
UpdateShow();
+ aViewData.GetView()->TestHintWindow();
SfxBindings& rBindings = aViewData.GetBindings();
ScMarkData& rMark = aViewData.GetMarkData();
diff --git a/scp2/inc/macros.inc b/scp2/inc/macros.inc
index e801253df1f0..2dded2763dde 100644
--- a/scp2/inc/macros.inc
+++ b/scp2/inc/macros.inc
@@ -286,7 +286,7 @@ End
ModuleID = modid; \
Subkey = STRING(CONCAT2(LibreOffice.,name)); \
Name = STRING(AppUserModelID); \
- Value = STRING(CONCAT2(TheDocumentFoundation.LibreOffice.,doc_type)); \
+ Value = STRING(CONCAT2(CIB.CIBOffice.,doc_type)); \
End
#define REGISTRY_ENTRY_ICON(name,modid,icon_id) \
diff --git a/scp2/source/base/folderitem_base.scp b/scp2/source/base/folderitem_base.scp
index 75e1d5d05b01..622353b92aad 100644
--- a/scp2/source/base/folderitem_base.scp
+++ b/scp2/source/base/folderitem_base.scp
@@ -35,6 +35,6 @@ End
FolderItemProperty gid_Fip_Sbase_AppID
ShortcutID = gid_Folderitem_Sbase;
Key = "System.AppUserModel.ID";
- Value = "TheDocumentFoundation.LibreOffice.Base";
+ Value = "CIB.CIBOffice.Base";
End
#endif
diff --git a/scp2/source/base/registryitem_base.scp b/scp2/source/base/registryitem_base.scp
index ee7932ccd451..adc31d6df10f 100644
--- a/scp2/source/base/registryitem_base.scp
+++ b/scp2/source/base/registryitem_base.scp
@@ -83,7 +83,7 @@ RegistryItem gid_Regitem_Openoffice_Databasedocument_1_AppUserModelID
ModuleID = gid_Module_Prg_Base_Bin;
Subkey = "LibreOffice.DatabaseDocument.1";
Name = "AppUserModelID";
- Value = "TheDocumentFoundation.LibreOffice.Base";
+ Value = "CIB.CIBOffice.Base";
End
RegistryItem gid_Regitem_Openoffice_Databasedocument_1_FriendlyTypeName
diff --git a/scp2/source/calc/folderitem_calc.scp b/scp2/source/calc/folderitem_calc.scp
index a41ade695864..098ca42d993a 100644
--- a/scp2/source/calc/folderitem_calc.scp
+++ b/scp2/source/calc/folderitem_calc.scp
@@ -35,6 +35,6 @@ End
FolderItemProperty gid_Fip_Scalc_AppID
ShortcutID = gid_Folderitem_Scalc;
Key = "System.AppUserModel.ID";
- Value = "TheDocumentFoundation.LibreOffice.Calc";
+ Value = "CIB.CIBOffice.Calc";
End
#endif
diff --git a/scp2/source/calc/registryitem_calc.scp b/scp2/source/calc/registryitem_calc.scp
index ca0fc58921cd..2ef401e2b0f2 100644
--- a/scp2/source/calc/registryitem_calc.scp
+++ b/scp2/source/calc/registryitem_calc.scp
@@ -282,7 +282,7 @@ RegistryItem gid_Regitem_Soffice_Starcalcdocument_6_AppUserModelID
ModuleID = gid_Module_Prg_Calc_Bin;
Subkey = "soffice.StarCalcDocument.6";
Name = "AppUserModelID";
- Value = "TheDocumentFoundation.LibreOffice.Calc";
+ Value = "CIB.CIBOffice.Calc";
End
RegistryItem gid_Regitem_Soffice_Starcalcdocument_6_FriendlyTypeName
@@ -395,7 +395,7 @@ RegistryItem gid_Regitem_Soffice_Starcalctemplate_6_AppUserModelID
ModuleID = gid_Module_Prg_Calc_Bin;
Subkey = "soffice.StarCalcTemplate.6";
Name = "AppUserModelID";
- Value = "TheDocumentFoundation.LibreOffice.Calc";
+ Value = "CIB.CIBOffice.Calc";
End
RegistryItem gid_Regitem_Soffice_Starcalctemplate_6_FriendlyTypeName
@@ -700,7 +700,7 @@ RegistryItem gid_Regitem_Openoffice_Calcdocument_1_AppUserModelID
ModuleID = gid_Module_Prg_Calc_Bin;
Subkey = "LibreOffice.CalcDocument.1";
Name = "AppUserModelID";
- Value = "TheDocumentFoundation.LibreOffice.Calc";
+ Value = "CIB.CIBOffice.Calc";
End
RegistryItem gid_Regitem_Openoffice_Calcdocument_1_FriendlyTypeName
@@ -918,7 +918,7 @@ RegistryItem gid_Regitem_Openoffice_Calctemplate_1_AppUserModelID
ModuleID = gid_Module_Prg_Calc_Bin;
Subkey = "LibreOffice.CalcTemplate.1";
Name = "AppUserModelID";
- Value = "TheDocumentFoundation.LibreOffice.Calc";
+ Value = "CIB.CIBOffice.Calc";
End
RegistryItem gid_Regitem_Openoffice_Calctemplate_1_FriendlyTypeName
diff --git a/scp2/source/draw/folderitem_draw.scp b/scp2/source/draw/folderitem_draw.scp
index 5dc8757e96f3..648e61b624a8 100644
--- a/scp2/source/draw/folderitem_draw.scp
+++ b/scp2/source/draw/folderitem_draw.scp
@@ -35,6 +35,6 @@ End
FolderItemProperty gid_Fip_Sdraw_AppID
ShortcutID = gid_Folderitem_Sdraw;
Key = "System.AppUserModel.ID";
- Value = "TheDocumentFoundation.LibreOffice.Draw";
+ Value = "CIB.CIBOffice.Draw";
End
#endif
diff --git a/scp2/source/draw/registryitem_draw.scp b/scp2/source/draw/registryitem_draw.scp
index 93cadcaa1ca5..5155f5c1583d 100644
--- a/scp2/source/draw/registryitem_draw.scp
+++ b/scp2/source/draw/registryitem_draw.scp
@@ -282,7 +282,7 @@ RegistryItem gid_Regitem_Soffice_Stardrawdocument_6_AppUserModelID
ModuleID = gid_Module_Prg_Draw_Bin;
Subkey = "soffice.StarDrawDocument.6";
Name = "AppUserModelID";
- Value = "TheDocumentFoundation.LibreOffice.Draw";
+ Value = "CIB.CIBOffice.Draw";
End
RegistryItem gid_Regitem_Soffice_Stardrawdocument_6_FriendlyTypeName
@@ -395,7 +395,7 @@ RegistryItem gid_Regitem_Soffice_Stardrawtemplate_6_AppUserModelID
ModuleID = gid_Module_Prg_Draw_Bin;
Subkey = "soffice.StarDrawTemplate.6";
Name = "AppUserModelID";
- Value = "TheDocumentFoundation.LibreOffice.Draw";
+ Value = "CIB.CIBOffice.Draw";
End
RegistryItem gid_Regitem_Soffice_Stardrawtemplate_6_FriendlyTypeName
@@ -699,7 +699,7 @@ RegistryItem gid_Regitem_Openoffice_Drawdocument_1_AppUserModelID
ModuleID = gid_Module_Prg_Draw_Bin;
Subkey = "LibreOffice.DrawDocument.1";
Name = "AppUserModelID";
- Value = "TheDocumentFoundation.LibreOffice.Draw";
+ Value = "CIB.CIBOffice.Draw";
End
RegistryItem gid_Regitem_Openoffice_Drawdocument_1_FriendlyTypeName
@@ -902,7 +902,7 @@ RegistryItem gid_Regitem_Openoffice_Drawtemplate_1_AppUserModelID
ModuleID = gid_Module_Prg_Draw_Bin;
Subkey = "LibreOffice.DrawTemplate.1";
Name = "AppUserModelID";
- Value = "TheDocumentFoundation.LibreOffice.Draw";
+ Value = "CIB.CIBOffice.Draw";
End
RegistryItem gid_Regitem_Openoffice_Drawtemplate_1_FriendlyTypeName
diff --git a/scp2/source/impress/folderitem_impress.scp b/scp2/source/impress/folderitem_impress.scp
index c35221b533b4..c92768cdc00c 100644
--- a/scp2/source/impress/folderitem_impress.scp
+++ b/scp2/source/impress/folderitem_impress.scp
@@ -35,6 +35,6 @@ End
FolderItemProperty gid_Fip_Simpress_AppID
ShortcutID = gid_Folderitem_Simpress;
Key = "System.AppUserModel.ID";
- Value = "TheDocumentFoundation.LibreOffice.Impress";
+ Value = "CIB.CIBOffice.Impress";
End
#endif
diff --git a/scp2/source/impress/registryitem_impress.scp b/scp2/source/impress/registryitem_impress.scp
index be9ba5fea5b9..defd97360007 100644
--- a/scp2/source/impress/registryitem_impress.scp
+++ b/scp2/source/impress/registryitem_impress.scp
@@ -282,7 +282,7 @@ RegistryItem gid_Regitem_Soffice_Starimpressdocument_6_AppUserModelID
ModuleID = gid_Module_Prg_Impress_Bin;
Subkey = "soffice.StarImpressDocument.6";
Name = "AppUserModelID";
- Value = "TheDocumentFoundation.LibreOffice.Impress";
+ Value = "CIB.CIBOffice.Impress";
End
RegistryItem gid_Regitem_Soffice_Starimpressdocument_6_FriendlyTypeName
@@ -409,7 +409,7 @@ RegistryItem gid_Regitem_Soffice_Starimpresstemplate_6_AppUserModelID
ModuleID = gid_Module_Prg_Impress_Bin;
Subkey = "soffice.StarImpressTemplate.6";
Name = "AppUserModelID";
- Value = "TheDocumentFoundation.LibreOffice.Impress";
+ Value = "CIB.CIBOffice.Impress";
End
RegistryItem gid_Regitem_Soffice_Starimpresstemplate_6_FriendlyTypeName
@@ -714,7 +714,7 @@ RegistryItem gid_Regitem_Openoffice_Impressdocument_1_AppUserModelID
ModuleID = gid_Module_Prg_Impress_Bin;
Subkey = "LibreOffice.ImpressDocument.1";
Name = "AppUserModelID";
- Value = "TheDocumentFoundation.LibreOffice.Impress";
+ Value = "CIB.CIBOffice.Impress";
End
RegistryItem gid_Regitem_Openoffice_Impressdocument_1_FriendlyTypeName
@@ -931,7 +931,7 @@ RegistryItem gid_Regitem_Openoffice_Impresstemplate_1_AppUserModelID
ModuleID = gid_Module_Prg_Impress_Bin;
Subkey = "LibreOffice.ImpressTemplate.1";
Name = "AppUserModelID";
- Value = "TheDocumentFoundation.LibreOffice.Impress";
+ Value = "CIB.CIBOffice.Impress";
End
RegistryItem gid_Regitem_Openoffice_Impresstemplate_1_FriendlyTypeName
diff --git a/scp2/source/math/folderitem_math.scp b/scp2/source/math/folderitem_math.scp
index 44ddc078e47b..1c5b4615b209 100644
--- a/scp2/source/math/folderitem_math.scp
+++ b/scp2/source/math/folderitem_math.scp
@@ -35,6 +35,6 @@ End
FolderItemProperty gid_Fip_Smath_AppID
ShortcutID = gid_Folderitem_Smath;
Key = "System.AppUserModel.ID";
- Value = "TheDocumentFoundation.LibreOffice.Math";
+ Value = "CIB.CIBOffice.Math";
End
#endif
diff --git a/scp2/source/math/registryitem_math.scp b/scp2/source/math/registryitem_math.scp
index bf59735883d9..063f348e63fe 100644
--- a/scp2/source/math/registryitem_math.scp
+++ b/scp2/source/math/registryitem_math.scp
@@ -281,7 +281,7 @@ RegistryItem gid_Regitem_Soffice_Starmathdocument_6_AppUserModelID
ModuleID = gid_Module_Prg_Math_Bin;
Subkey = "soffice.StarMathDocument.6";
Name = "AppUserModelID";
- Value = "TheDocumentFoundation.LibreOffice.Math";
+ Value = "CIB.CIBOffice.Math";
End
RegistryItem gid_Regitem_Soffice_Starmathdocument_6_FriendlyTypeName
@@ -557,7 +557,7 @@ RegistryItem gid_Regitem_Openoffice_Mathdocument_1_AppUserModelID
ModuleID = gid_Module_Prg_Math_Bin;
Subkey = "LibreOffice.MathDocument.1";
Name = "AppUserModelID";
- Value = "TheDocumentFoundation.LibreOffice.Math";
+ Value = "CIB.CIBOffice.Math";
End
RegistryItem gid_Regitem_Openoffice_Mathdocument_1_FriendlyTypeName
diff --git a/scp2/source/ooo/folderitem_ooo.scp b/scp2/source/ooo/folderitem_ooo.scp
index a9f68ffd3dea..e683fd7b37d2 100644
--- a/scp2/source/ooo/folderitem_ooo.scp
+++ b/scp2/source/ooo/folderitem_ooo.scp
@@ -38,7 +38,7 @@ End
FolderItemProperty gid_Fip_LibreOffice_AppID
ShortcutID = gid_Folderitem_LibreOffice;
Key = "System.AppUserModel.ID";
- Value = "TheDocumentFoundation.LibreOffice.Startcenter";
+ Value = "CIB.CIBOffice.Startcenter";
End
FolderItem gid_Folderitem_Soffice_Desktop
@@ -63,7 +63,7 @@ End
FolderItemProperty gid_Fip_Soffice_Desktop_AppID
ShortcutID = gid_Folderitem_Soffice_Desktop;
Key = "System.AppUserModel.ID";
- Value = "TheDocumentFoundation.LibreOffice.Startcenter";
+ Value = "CIB.CIBOffice.Startcenter";
End
FolderItem gid_Folderitem_LibreOffice_SafeMode
@@ -86,5 +86,5 @@ End
FolderItemProperty gid_Fip_LibreOffice_SafeMode
ShortcutID = gid_Folderitem_LibreOffice_SafeMode;
Key = "System.AppUserModel.ID";
- Value = "TheDocumentFoundation.LibreOffice.SafeMode";
+ Value = "CIB.CIBOffice.SafeMode";
End
diff --git a/scp2/source/ooo/folderitem_ooo.ulf b/scp2/source/ooo/folderitem_ooo.ulf
index 22f8a37f7981..b5b06cd82c6a 100644
--- a/scp2/source/ooo/folderitem_ooo.ulf
+++ b/scp2/source/ooo/folderitem_ooo.ulf
@@ -26,4 +26,4 @@ en-US = "Open Document"
en-US = "%PRODUCTNAME (Safe Mode)"
[STR_FI_TOOLTIP_SOFFICE]
-en-US = "LibreOffice, the office productivity suite provided by The Document Foundation. See https://www.documentfoundation.org"
+en-US = "CIB Office, the office productivity suite provided by CIB software GmbH."
diff --git a/scp2/source/writer/folderitem_writer.scp b/scp2/source/writer/folderitem_writer.scp
index 306fc888d230..16d6475d39dc 100644
--- a/scp2/source/writer/folderitem_writer.scp
+++ b/scp2/source/writer/folderitem_writer.scp
@@ -35,6 +35,6 @@ End
FolderItemProperty gid_Fip_Swriter_AppID
ShortcutID = gid_Folderitem_Swriter;
Key = "System.AppUserModel.ID";
- Value = "TheDocumentFoundation.LibreOffice.Writer";
+ Value = "CIB.CIBOffice.Writer";
End
#endif
diff --git a/scp2/source/writer/registryitem_writer.scp b/scp2/source/writer/registryitem_writer.scp
index 98859a881836..8150f5bd6572 100644
--- a/scp2/source/writer/registryitem_writer.scp
+++ b/scp2/source/writer/registryitem_writer.scp
@@ -282,7 +282,7 @@ RegistryItem gid_Regitem_Soffice_Starwriterdocument_6_AppUserModelID
ModuleID = gid_Module_Prg_Wrt_Bin;
Subkey = "soffice.StarWriterDocument.6";
Name = "AppUserModelID";
- Value = "TheDocumentFoundation.LibreOffice.Writer";
+ Value = "CIB.CIBOffice.Writer";
End
RegistryItem gid_Regitem_Soffice_Starwriterdocument_6_FriendlyTypeName
@@ -402,7 +402,7 @@ RegistryItem gid_Regitem_Soffice_Starwriterglobaldocument_6_AppUserModelID
ModuleID = gid_Module_Prg_Wrt_Bin;
Subkey = "soffice.StarWriterGlobalDocument.6";
Name = "AppUserModelID";
- Value = "TheDocumentFoundation.LibreOffice.Writer";
+ Value = "CIB.CIBOffice.Writer";
End
RegistryItem gid_Regitem_Soffice_Starwriterglobaldocument_6_FriendlyTypeName
@@ -488,7 +488,7 @@ RegistryItem gid_Regitem_Soffice_Starwritertemplate_6_AppUserModelID
ModuleID = gid_Module_Prg_Wrt_Bin;
Subkey = "soffice.StarWriterTemplate.6";
Name = "AppUserModelID";
- Value = "TheDocumentFoundation.LibreOffice.Writer";
+ Value = "CIB.CIBOffice.Writer";
End
RegistryItem gid_Regitem_Soffice_Starwritertemplate_6_FriendlyTypeName
@@ -847,7 +847,7 @@ RegistryItem gid_Regitem_Openoffice_Writerdocument_1_AppUserModelID
ModuleID = gid_Module_Prg_Wrt_Bin;
Subkey = "LibreOffice.WriterDocument.1";
Name = "AppUserModelID";
- Value = "TheDocumentFoundation.LibreOffice.Writer";
+ Value = "CIB.CIBOffice.Writer";
End
RegistryItem gid_Regitem_Openoffice_Writerdocument_1_FriendlyTypeName
@@ -1096,7 +1096,7 @@ RegistryItem gid_Regitem_Openoffice_Writertemplate_1_AppUserModelID
ModuleID = gid_Module_Prg_Wrt_Bin;
Subkey = "LibreOffice.WriterTemplate.1";
Name = "AppUserModelID";
- Value = "TheDocumentFoundation.LibreOffice.Writer";
+ Value = "CIB.CIBOffice.Writer";
End
RegistryItem gid_Regitem_Openoffice_Writertemplate_1_FriendlyTypeName
@@ -1246,7 +1246,7 @@ RegistryItem gid_Regitem_Openoffice_Writerglobaldocument_1_AppUserModelID
ModuleID = gid_Module_Prg_Wrt_Bin;
Subkey = "LibreOffice.WriterGlobalDocument.1";
Name = "AppUserModelID";
- Value = "TheDocumentFoundation.LibreOffice.Writer";
+ Value = "CIB.CIBOffice.Writer";
End
RegistryItem gid_Regitem_Openoffice_Writerglobaldocument_1_FriendlyTypeName
@@ -1396,7 +1396,7 @@ RegistryItem gid_Regitem_Openoffice_WriterWebTemplate_1_AppUserModelID
ModuleID = gid_Module_Prg_Wrt_Bin;
Subkey = "LibreOffice.WriterWebTemplate.1";
Name = "AppUserModelID";
- Value = "TheDocumentFoundation.LibreOffice.Writer";
+ Value = "CIB.CIBOffice.Writer";
End
RegistryItem gid_Regitem_Openoffice_WriterWebTemplate_1_FriendlyTypeName
diff --git a/sdext/Executable_xpdfimport.mk b/sdext/Executable_xpdfimport.mk
index 360358d450d2..7b951a2cd0c6 100644
--- a/sdext/Executable_xpdfimport.mk
+++ b/sdext/Executable_xpdfimport.mk
@@ -22,6 +22,10 @@ $(eval $(call gb_Executable_add_exception_objects,xpdfimport,\
sdext/source/pdfimport/xpdfwrapper/wrapper_gpl \
))
+$(eval $(call gb_Executable_use_system_win32_libs,xpdfimport,\
+ shell32 \
+))
+
$(eval $(call gb_Executable_add_default_nativeres,xpdfimport))
# vim:set noet sw=4 ts=4:
diff --git a/sdext/source/pdfimport/wrapper/wrapper.cxx b/sdext/source/pdfimport/wrapper/wrapper.cxx
index 3d36e77110be..ad25b2edd85b 100644
--- a/sdext/source/pdfimport/wrapper/wrapper.cxx
+++ b/sdext/source/pdfimport/wrapper/wrapper.cxx
@@ -486,12 +486,6 @@ void Parser::parseFontFamilyName( FontAttributes& rResult )
const sal_Unicode* pCopy = rResult.familyName.getStr();
sal_Int32 nLen = rResult.familyName.getLength();
- // parse out truetype subsets (e.g. BAAAAA+Thorndale)
- if( nLen > 8 && pCopy[6] == '+' )
- {
- pCopy += 7;
- nLen -= 7;
- }
// TODO: Looks like this block needs to be refactored
while( nLen )
@@ -613,52 +607,6 @@ void Parser::readFont()
// extract textual attributes (bold, italic in the name, etc.)
parseFontFamilyName(aResult);
- // need to read font file?
- if( nFileLen )
- {
- uno::Sequence<sal_Int8> aFontFile(nFileLen);
- readBinaryData( aFontFile );
-
- awt::FontDescriptor aFD;
- uno::Sequence< uno::Any > aArgs(1);
- aArgs[0] <<= aFontFile;
-
- try
- {
- uno::Reference< beans::XMaterialHolder > xMat(
- m_xContext->getServiceManager()->createInstanceWithArgumentsAndContext(
- "com.sun.star.awt.FontIdentificator", aArgs, m_xContext ),
- uno::UNO_QUERY );
- if( xMat.is() )
- {
- uno::Any aRes( xMat->getMaterial() );
- if( aRes >>= aFD )
- {
- if (!aFD.Name.isEmpty())
- {
- aResult.familyName = aFD.Name;
- parseFontFamilyName(aResult);
- }
- aResult.isBold = (aFD.Weight > 100.0);
- aResult.isItalic = (aFD.Slant == awt::FontSlant_OBLIQUE ||
- aFD.Slant == awt::FontSlant_ITALIC );
- aResult.isUnderline = false;
- aResult.size = 0;
- }
- }
- }
- catch( uno::Exception& )
- {
- }
-
- if( aResult.familyName.isEmpty() )
- {
- // last fallback
- aResult.familyName = "Arial";
- aResult.isUnderline = false;
- }
-
- }
if (!m_xDev)
m_xDev.disposeAndReset(VclPtr<VirtualDevice>::Create());
diff --git a/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx b/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx
index 16ad04bf660a..676aefe91859 100644
--- a/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx
+++ b/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx
@@ -432,14 +432,19 @@ int PDFOutDev::parseFont( long long nNewId, GfxFont* gfxFont, GfxState* state )
FontAttributes aNewFont;
int nSize = 0;
-#if POPPLER_CHECK_VERSION(0, 64, 0)
- const
+#if POPPLER_CHECK_VERSION(20, 12, 0)
+ std::string familyName = gfxFont->getNameWithoutSubsetTag();
+#else
+ std::string familyName = gfxFont->getName()->toStr();
+ if (familyName.length() > 7 && familyName.at(6) == '+')
+ {
+ familyName = familyName.substr(7);
+ }
#endif
- GooString* pFamily = gfxFont->getName();
- if( pFamily )
+ if( familyName != "" )
{
aNewFont.familyName.clear();
- aNewFont.familyName.append( gfxFont->getName() );
+ aNewFont.familyName.append( familyName );
}
else
{
@@ -456,12 +461,21 @@ int PDFOutDev::parseFont( long long nNewId, GfxFont* gfxFont, GfxState* state )
{
// TODO(P3): Unfortunately, need to read stream twice, since
// we must write byte count to stdout before
+#if POPPLER_CHECK_VERSION(22, 6, 0)
+ std::optional<std::vector<unsigned char>> pBuf = gfxFont->readEmbFontFile( m_pDoc->getXRef() );
+ if ( pBuf )
+ {
+ aNewFont.isEmbedded = true;
+ nSize = pBuf->size();
+ }
+#else
char* pBuf = gfxFont->readEmbFontFile( m_pDoc->getXRef(), &nSize );
if( pBuf )
{
aNewFont.isEmbedded = true;
gfree(pBuf);
}
+#endif
}
m_aFontMap[ nNewId ] = aNewFont;
@@ -474,13 +488,29 @@ void PDFOutDev::writeFontFile( GfxFont* gfxFont ) const
return;
int nSize = 0;
+#if POPPLER_CHECK_VERSION(22, 6, 0)
+ std::optional<std::vector<unsigned char>> pBuf = gfxFont->readEmbFontFile( m_pDoc->getXRef() );
+ if ( pBuf )
+ nSize = pBuf->size();
+ if ( nSize == 0 )
+ return;
+#else
char* pBuf = gfxFont->readEmbFontFile( m_pDoc->getXRef(), &nSize );
if( !pBuf )
return;
+#endif
// ---sync point--- see SYNC STREAMS above
fflush(stdout);
+#if POPPLER_CHECK_VERSION(22, 6, 0)
+ if( fwrite(pBuf->data(), sizeof(*pBuf->data()), nSize, g_binary_out) != static_cast<size_t>(nSize) )
+ {
+ exit(1); // error
+ }
+ // ---sync point--- see SYNC STREAMS above
+ fflush(g_binary_out);
+#else
if( fwrite(pBuf, sizeof(char), nSize, g_binary_out) != static_cast<size_t>(nSize) )
{
gfree(pBuf);
@@ -489,6 +519,7 @@ void PDFOutDev::writeFontFile( GfxFont* gfxFont ) const
// ---sync point--- see SYNC STREAMS above
fflush(g_binary_out);
gfree(pBuf);
+#endif
}
#if POPPLER_CHECK_VERSION(0, 83, 0)
@@ -635,8 +666,15 @@ void PDFOutDev::updateLineDash(GfxState *state)
return;
assert(state);
- double* dashArray; int arrayLen; double startOffset;
+ int arrayLen; double startOffset;
+#if POPPLER_CHECK_VERSION(22, 9, 0)
+ const std::vector<double> &dash = state->getLineDash(&startOffset);
+ const double* dashArray = dash.data();
+ arrayLen = dash.size();
+#else
+ double* dashArray;
state->getLineDash(&dashArray, &arrayLen, &startOffset);
+#endif
printf( "updateLineDash" );
if( arrayLen && dashArray )
@@ -742,7 +780,11 @@ void PDFOutDev::updateFont(GfxState *state)
{
assert(state);
+#if POPPLER_CHECK_VERSION(22, 6, 0)
+ GfxFont *gfxFont = state->getFont().get();
+#else
GfxFont *gfxFont = state->getFont();
+#endif
if( !gfxFont )
return;
@@ -786,9 +828,6 @@ void PDFOutDev::updateFont(GfxState *state)
aEsc.data() );
}
printf( "\n" );
-
- if( nEmbedSize )
- writeFontFile(gfxFont);
}
void PDFOutDev::updateRender(GfxState *state)
diff --git a/sdext/source/pdfimport/xpdfwrapper/wrapper_gpl.cxx b/sdext/source/pdfimport/xpdfwrapper/wrapper_gpl.cxx
index b1a54bd09c5f..3ab3381652cd 100644
--- a/sdext/source/pdfimport/xpdfwrapper/wrapper_gpl.cxx
+++ b/sdext/source/pdfimport/xpdfwrapper/wrapper_gpl.cxx
@@ -119,6 +119,15 @@ int main(int argc, char **argv)
_setmode( _fileno( g_binary_out ), _O_BINARY );
#endif
+#if POPPLER_CHECK_VERSION(22, 6, 0)
+ PDFDoc aDoc( std::make_unique<GooString>(pFileName),
+ std::optional<GooString>(pOwnerPasswordStr),
+ std::optional<GooString>(pUserPasswordStr) );
+
+ PDFDoc aErrDoc( std::make_unique<GooString>(pErrFileName),
+ std::optional<GooString>(pOwnerPasswordStr),
+ std::optional<GooString>(pUserPasswordStr) );
+#else
PDFDoc aDoc( pFileName,
pOwnerPasswordStr,
pUserPasswordStr );
@@ -126,6 +135,7 @@ int main(int argc, char **argv)
PDFDoc aErrDoc( pErrFileName,
pOwnerPasswordStr,
pUserPasswordStr );
+#endif
// Check various permissions for aDoc.
PDFDoc &rDoc = aDoc.isOk()? aDoc: aErrDoc;
diff --git a/setup_native/source/packinfo/packinfo_brand.txt b/setup_native/source/packinfo/packinfo_brand.txt
index 97b5d8cc4fca..b4909fc6c266 100644
--- a/setup_native/source/packinfo/packinfo_brand.txt
+++ b/setup_native/source/packinfo/packinfo_brand.txt
@@ -22,12 +22,15 @@ solarispackagename = "%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION"
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-images %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure (Name="UNO Runtime Environment"), %BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-core (Name="Core module for %PRODUCTNAME %PRODUCTVERSION"), %BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-images (Name="Images module for %PRODUCTNAME %PRODUCTVERSION")"
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycib6.4"
+linuxincompat = "libreofficepoweredbycib6.4"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Brand module for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
+provides = "libreofficepoweredbycib6.4"
End
Start
@@ -36,12 +39,15 @@ solarispackagename = "%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION-writer"
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-writer"
requires = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-writer %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
solarisrequires = "%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION,%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-writer"
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycib6.4-writer"
+linuxincompat = "libreofficepoweredbycib6.4-writer"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Writer brand module for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
+provides = "libreofficepoweredbycib6.4-writer"
End
Start
@@ -50,12 +56,15 @@ solarispackagename = "%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION-calc"
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-calc"
requires = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-calc %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
solarisrequires = "%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION,%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-calc"
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycib6.4-calc"
+linuxincompat = "libreofficepoweredbycib6.4-calc"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Calc brand module for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
+provides = "libreofficepoweredbycib6.4-calc"
End
Start
@@ -64,12 +73,15 @@ solarispackagename = "%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION-impress"
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-impress"
requires = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-impress %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
solarisrequires = "%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION,%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-impress"
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycib6.4-impress"
+linuxincompat = "libreofficepoweredbycib6.4-impress"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Impress brand module for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
+provides = "libreofficepoweredbycib6.4-impress"
End
Start
@@ -78,12 +90,15 @@ solarispackagename = "%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION-draw"
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-draw"
requires = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-draw %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
solarisrequires = "%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION,%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-draw"
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycib6.4-draw"
+linuxincompat = "libreofficepoweredbycib6.4-draw"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Draw brand module for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
+provides = "libreofficepoweredbycib6.4-draw"
End
Start
@@ -92,12 +107,15 @@ solarispackagename = "%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION-math"
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-math"
requires = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-math %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
solarisrequires = "%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION,%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-math"
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycib6.4-math"
+linuxincompat = "libreofficepoweredbycib6.4-math"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Math brand module for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
+provides = "libreofficepoweredbycib6.4-math"
End
Start
@@ -106,12 +124,15 @@ solarispackagename = "%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION-base"
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-base"
requires = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-base %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
solarisrequires = "%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION,%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-base"
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycib6.4-base"
+linuxincompat = "libreofficepoweredbycib6.4-base"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Base brand module for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
+provides = "libreofficepoweredbycib6.4-base"
End
Start
@@ -120,10 +141,13 @@ solarispackagename = "%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION-%LANGUAGEST
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-%LANGUAGESTRING"
requires = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-%LANGUAGESTRING %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
solarisrequires = "%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION,%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-%LANGUAGESTRING (Name="Language module for %PRODUCTNAME %PRODUCTVERSION\, language %LANGUAGESTRING")"
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycib6.4-%LANGUAGESTRING"
+linuxincompat = "libreofficepoweredbycib6.4-%LANGUAGESTRING"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Brand language module for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
+provides = "libreofficepoweredbycib6.4-%LANGUAGESTRING"
End
diff --git a/setup_native/source/packinfo/packinfo_extensions.txt b/setup_native/source/packinfo/packinfo_extensions.txt
index 4bd5b97c0cda..bb50dec0f3a6 100644
--- a/setup_native/source/packinfo/packinfo_extensions.txt
+++ b/setup_native/source/packinfo/packinfo_extensions.txt
@@ -41,9 +41,11 @@ solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-core (Name="Cor
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-extension-mediawiki-publisher"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycibbasis6.4-extension-mediawiki-publisher"
+linuxincompat = "libreofficepoweredbycibbasis6.4-extension-mediawiki-publisher"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "MediaWiki publisher extension for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -58,7 +60,7 @@ requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERS
linuxpatchrequires = ""
copyright = "2009 by FSF.hu"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Numbertext extension for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -73,7 +75,7 @@ requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERS
linuxpatchrequires = ""
copyright = "Copyright (c) 2008 Cor Nouws"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "ConvertTextToNumber extension for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -86,9 +88,11 @@ solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-core (Name="Cor
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-extension-nlpsolver"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycibbasis6.4-extension-nlpsolver"
+linuxincompat = "libreofficepoweredbycibbasis6.4-extension-nlpsolver"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "NLPSolver extension for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -103,7 +107,7 @@ requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERS
linuxpatchrequires = ""
copyright = "2005-2009 by Daniel Naber"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "LanguageTool extension for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -116,9 +120,11 @@ solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-core (Name="Cor
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-extension-beanshell-script-provider"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycibbasis6.4-extension-beanshell-script-provider"
+linuxincompat = "libreofficepoweredbycibbasis6.4-extension-beanshell-script-provider"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Script provider for BeanShell extension for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -131,9 +137,11 @@ solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-core (Name="Cor
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-extension-javascript-script-provider"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycibbasis6.4-extension-javascript-script-provider"
+linuxincompat = "libreofficepoweredbycibbasis6.4-extension-javascript-script-provider"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Script provider for JavaScript extension for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
diff --git a/setup_native/source/packinfo/packinfo_office.txt b/setup_native/source/packinfo/packinfo_office.txt
index 956a55ef6b9a..48a1b1be91ae 100644
--- a/setup_native/source/packinfo/packinfo_office.txt
+++ b/setup_native/source/packinfo/packinfo_office.txt
@@ -47,9 +47,11 @@ packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-gnome-integration"
freebsdrequires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
findrequires = ""
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycibbasis6.4-gnome-integration"
+linuxincompat = "libreofficepoweredbycibbasis6.4-gnome-integration"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "GNOME integration module for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -62,9 +64,9 @@ solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-core"
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-tde-integration"
freebsdrequires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "TDE integration module for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -77,30 +79,35 @@ solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-core"
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-kde-integration"
freebsdrequires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycibbasis6.4-kde-integration"
+linuxincompat = "libreofficepoweredbycibbasis6.4-kde-integration"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "KDE integration module for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
+provides = "libreofficepoweredbycibbasis6.4-kde-integration"
End
Start
module = "gid_Module_Root"
solarispackagename = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-core"
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core"
-linuxreplaces = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core01, %BASISPACKAGEPREFIX%PRODUCTVERSION-core02, %BASISPACKAGEPREFIX%PRODUCTVERSION-core03, %BASISPACKAGEPREFIX%PRODUCTVERSION-core04, %BASISPACKAGEPREFIX%PRODUCTVERSION-core05, %BASISPACKAGEPREFIX%PRODUCTVERSION-core06, %BASISPACKAGEPREFIX%PRODUCTVERSION-core07"
+linuxreplaces = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core01, %BASISPACKAGEPREFIX%PRODUCTVERSION-core02, %BASISPACKAGEPREFIX%PRODUCTVERSION-core03, %BASISPACKAGEPREFIX%PRODUCTVERSION-core04, %BASISPACKAGEPREFIX%PRODUCTVERSION-core05, %BASISPACKAGEPREFIX%PRODUCTVERSION-core06, %BASISPACKAGEPREFIX%PRODUCTVERSION-core07, libreofficepoweredbycibbasis6.4-core"
+linuxincompat = "libreofficepoweredbycibbasis6.4-core"
requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION, %BASISPACKAGEPREFIX%PRODUCTVERSION-ooofonts %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
solarisrequires = "SUNWcar, SUNWkvm, SUNWcsr, SUNWcsu, SUNWcsd, SUNWcsl,
SUNWxwrtl, SUNWxwplt, SUNWlibC, %SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-ooofonts"
freebsdrequires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-ooofonts"
findrequires = "find-requires-x11.sh"
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Core module for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
+provides = "libreofficepoweredbycibbasis6.4-core"
End
Start
@@ -110,9 +117,11 @@ packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-writer"
solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-core, SUNWlibC"
freebsdrequires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycibbasis6.4-writer"
+linuxincompat = "libreofficepoweredbycibbasis6.4-writer"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Writer module for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -125,9 +134,11 @@ solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-core, SUNWlibC"
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-calc"
freebsdrequires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycibbasis6.4-calc"
+linuxincompat = "libreofficepoweredbycibbasis6.4-calc"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Calc module for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -140,9 +151,11 @@ solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-core, SUNWlibC"
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-draw"
freebsdrequires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycibbasis6.4-draw"
+linuxincompat = "libreofficepoweredbycibbasis6.4-draw"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Draw module for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -155,9 +168,11 @@ solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-core, SUNWlibC"
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-impress"
freebsdrequires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycibbasis6.4-impress"
+linuxincompat = "libreofficepoweredbycibbasis6.4-impress"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Impress module for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -170,9 +185,11 @@ solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-core, SUNWlibC"
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-base"
freebsdrequires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycibbasis6.4-base"
+linuxincompat = "libreofficepoweredbycibbasis6.4-base"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Base module for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -185,9 +202,11 @@ solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-core, SUNWlibC"
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-math"
freebsdrequires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycibbasis6.4-math"
+linuxincompat = "libreofficepoweredbycibbasis6.4-math"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Math module for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -200,9 +219,11 @@ solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-core"
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-firebird"
freebsdrequires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core"
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycibbasis6.4-firebird"
+linuxincompat = "libreofficepoweredbycibbasis6.4-firebird"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Firebird module for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -215,9 +236,11 @@ solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-core"
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-graphicfilter"
freebsdrequires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycibbasis6.4-graphicfilter"
+linuxincompat = "libreofficepoweredbycibbasis6.4-graphicfilter"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Graphic filter module for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -230,9 +253,11 @@ solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-core"
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-xsltfilter"
freebsdrequires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycibbasis6.4-xsltfilter"
+linuxincompat = "libreofficepoweredbycibbasis6.4-xsltfilter"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "XSLT filter samples module for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -245,9 +270,9 @@ solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-core"
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-activex"
freebsdrequires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "ActiveX control for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -259,9 +284,9 @@ solarispackagename = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-onlineupdate"
solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-core, SUNWlibC, SUNWgzip"
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-onlineupdate"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Online update module for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -272,13 +297,13 @@ module = "gid_Module_Pyuno"
solarispackagename = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-pyuno"
solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-core, SUNWPython"
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-pyuno"
-linuxreplaces = "%BASISPACKAGEPREFIX%PRODUCTVERSION-librelogo"
-linuxincompat = "%BASISPACKAGEPREFIX%PRODUCTVERSION-librelogo"
+linuxreplaces = "%BASISPACKAGEPREFIX%PRODUCTVERSION-librelogo, libreofficepoweredbycibbasis6.4-pyuno"
+linuxincompat = "%BASISPACKAGEPREFIX%PRODUCTVERSION-librelogo, libreofficepoweredbycibbasis6.4-pyuno"
freebsdrequires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Pyuno module for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -291,9 +316,11 @@ solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-core (Name="Cor
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-python-script-provider"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
freebsdrequires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core"
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycibbasis6.4-python-script-provider"
+linuxincompat = "libreofficepoweredbycibbasis6.4-python-script-provider"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Script provider for Python for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -306,9 +333,11 @@ solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-core"
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-images"
freebsdrequires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycibbasis6.4-images"
+linuxincompat = "libreofficepoweredbycibbasis6.4-images"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Images module for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -321,9 +350,11 @@ solarisrequires = ""
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-ooofonts"
freebsdrequires = ""
requires = ""
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycibbasis6.4-ooofonts"
+linuxincompat = "libreofficepoweredbycibbasis6.4-ooofonts"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "3rd party free fonts for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -336,9 +367,11 @@ solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-core"
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-ooolinguistic"
freebsdrequires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycibbasis6.4-ooolinguistic"
+linuxincompat = "libreofficepoweredbycibbasis6.4-ooolinguistic"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Linguistic module for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -351,9 +384,9 @@ solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEP
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-af"
requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Af dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -368,7 +401,7 @@ requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVE
linuxpatchrequires = ""
copyright = "2011 Santiago Paricio, Juan Pablo Martinez"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "An dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -428,7 +461,7 @@ requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVE
linuxpatchrequires = ""
copyright = "2002 Dr Abhijit Das, 2002 Taneem Ahmed, 2008 Jamil Ahmed"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Bn dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -443,7 +476,7 @@ requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVE
linuxpatchrequires = ""
copyright = "2016 Elie Roux"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Bo dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -486,9 +519,9 @@ solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEP
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-ca"
requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Ca dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -501,9 +534,9 @@ solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEP
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-cs"
requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Cs dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -516,9 +549,9 @@ solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEP
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-da"
requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Da dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -531,9 +564,11 @@ solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEP
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-de"
requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycib6.4-dict-de"
+linuxincompat = "libreofficepoweredbycib6.4-dict-de"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "De dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -546,9 +581,11 @@ solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEP
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-en"
requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycib6.4-dict-en"
+linuxincompat = "libreofficepoweredbycib6.4-dict-en"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "En dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -563,7 +600,7 @@ requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVE
linuxpatchrequires = ""
copyright = "2002 by Evripidis Papakostas, 2006 by Steve Stavropoulos"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "El dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -576,9 +613,11 @@ solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEP
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-es"
requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycib6.4-dict-es"
+linuxincompat = "libreofficepoweredbycib6.4-dict-es"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Es dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -591,9 +630,9 @@ solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEP
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-et"
requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Et dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -606,9 +645,11 @@ solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEP
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-fr"
requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycib6.4-dict-fr"
+linuxincompat = "libreofficepoweredbycib6.4-dict-fr"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Fr dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -636,9 +677,9 @@ solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEP
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-gl"
requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Gl dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -653,7 +694,7 @@ requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVE
linuxpatchrequires = ""
copyright = "2009 by Kartik Mistry"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Gu dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -666,9 +707,9 @@ solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEP
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-he"
requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "He dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -683,7 +724,7 @@ requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVE
linuxpatchrequires = ""
copyright = "2005 Swapnil {Hajare, Sant}"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Hi dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -696,9 +737,9 @@ solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEP
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-hu"
requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Hu dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -713,7 +754,7 @@ requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVE
linuxpatchrequires = ""
copyright = "2003-2010 by Denis Lackovic"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Hr dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -726,9 +767,9 @@ solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEP
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-id"
requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Indonesian dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -741,7 +782,7 @@ solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEP
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-is"
requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
vendor = "The hunspell-is project"
description = "Is dictionary for %PRODUCTNAME %PRODUCTVERSION"
@@ -756,9 +797,11 @@ solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEP
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-it"
requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycib6.4-dict-it"
+linuxincompat = "libreofficepoweredbycib6.4-dict-it"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "It dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -771,9 +814,9 @@ solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEP
packagename = "%UNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-kmr-Latn"
requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%UNIXPRODUCTNAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Kmr-Latn dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -788,7 +831,7 @@ requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVE
linuxpatchrequires = ""
copyright = "2013 by Brian Eugene Wilson, Robert Martin Campbell"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Lo dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -801,9 +844,9 @@ solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEP
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-lt"
requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Lt dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -831,9 +874,9 @@ solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEP
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-ne"
requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Ne dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -846,9 +889,9 @@ solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEP
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-nl"
requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Nl dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -861,9 +904,9 @@ solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEP
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-no"
requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "No dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -891,9 +934,9 @@ solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEP
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-pl"
requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Pl dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -906,9 +949,9 @@ solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEP
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-pt-BR"
requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Pt-BR dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -921,9 +964,9 @@ solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEP
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-pt-PT"
requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Pt-PT dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -936,9 +979,9 @@ solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEP
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-ro"
requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Ro dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -951,9 +994,11 @@ solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEP
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-ru"
requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycib6.4-dict-ru"
+linuxincompat = "libreofficepoweredbycib6.4-dict-ru"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Ru dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -968,7 +1013,7 @@ requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVE
linuxpatchrequires = ""
copyright = "2010 by Laknath Semage"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Si dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -981,9 +1026,9 @@ solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEP
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-sk"
requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Sk dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -996,9 +1041,9 @@ solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEP
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-sl"
requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Sl dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -1013,7 +1058,7 @@ requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVE
linuxpatchrequires = ""
copyright = "2011 by Luan Kelmendi"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Sq dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -1026,9 +1071,9 @@ solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEP
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-sr"
requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Sr dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -1041,9 +1086,9 @@ solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEP
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-sv"
requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Sv dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -1056,9 +1101,9 @@ solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEP
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-sw"
requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Sw dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -1086,9 +1131,9 @@ solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEP
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-th"
requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Th dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -1116,9 +1161,9 @@ solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEP
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-vi"
requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Vietnamese dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -1131,9 +1176,9 @@ solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEP
packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-zu"
requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION,%UNIXPACKAGENAME%BRANDPACKAGEVERSION %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Zu dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -1147,9 +1192,11 @@ solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-impress"
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-ogltrans"
freebsdrequires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-impress"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-impress %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycibbasis6.4-ogltrans"
+linuxincompat = "libreofficepoweredbycibbasis6.4-ogltrans"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "OpenGL slide transitions module for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -1162,9 +1209,11 @@ solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-base"
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-postgresql-sdbc"
freebsdrequires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-base"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-base %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycibbasis6.4-postgresql-sdbc"
+linuxincompat = "libreofficepoweredbycibbasis6.4-postgresql-sdbc"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "PostgreSQL Connector driver for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -1177,9 +1226,11 @@ solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-core (Name="Core
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-extension-pdf-import"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycibbasis6.4-extension-pdf-import"
+linuxincompat = "libreofficepoweredbycibbasis6.4-extension-pdf-import"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "PDF import extension for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -1192,9 +1243,11 @@ solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-core (Name="Core
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-extension-report-builder"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycibbasis6.4-extension-report-builder"
+linuxincompat = "libreofficepoweredbycibbasis6.4-extension-report-builder"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Report Builder extension for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -1207,9 +1260,11 @@ solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-core (Name="Core
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-libreofficekit-data"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
linuxpatchrequires = ""
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycibbasis6.4-libreofficekit-data"
+linuxincompat = "libreofficepoweredbycibbasis6.4-libreofficekit-data"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Libreofficekit data files for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
diff --git a/setup_native/source/packinfo/packinfo_office_help.txt b/setup_native/source/packinfo/packinfo_office_help.txt
index 12acde8a4a9b..970aabd59cc5 100644
--- a/setup_native/source/packinfo/packinfo_office_help.txt
+++ b/setup_native/source/packinfo/packinfo_office_help.txt
@@ -39,11 +39,12 @@ module = "gid_Module_Helppack_Help"
solarispackagename = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-%LANGUAGESTRING-help"
solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-%LANGUAGESTRING"
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-%LANGUAGESTRING-help"
-provides = "%BASISPACKAGEPREFIX%PRODUCTVERSION-%LANGUAGESTRING-help"
+provides = "%BASISPACKAGEPREFIX%PRODUCTVERSION-%LANGUAGESTRING-help, libreofficepoweredbycibbasis6.4-%LANGUAGESTRING-help"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-%LANGUAGESTRING %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycibbasis6.4-%LANGUAGESTRING-help"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Help module for %PRODUCTNAME %PRODUCTVERSION, language %LANGUAGESTRING"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
diff --git a/setup_native/source/packinfo/packinfo_office_lang.txt b/setup_native/source/packinfo/packinfo_office_lang.txt
index a23e4695e88d..a084d4b14b71 100644
--- a/setup_native/source/packinfo/packinfo_office_lang.txt
+++ b/setup_native/source/packinfo/packinfo_office_lang.txt
@@ -39,11 +39,13 @@ module = "gid_Module_Langpack_Basis"
solarispackagename = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-%LANGUAGESTRING"
solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-core"
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-%LANGUAGESTRING"
-provides = "%BASISPACKAGEPREFIX%PRODUCTVERSION-%LANGUAGESTRING"
+provides = "%BASISPACKAGEPREFIX%PRODUCTVERSION-%LANGUAGESTRING,libreofficepoweredbycibbasis6.4-%LANGUAGESTRING"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycibbasis6.4-%LANGUAGESTRING"
+linuxincompat = "libreofficepoweredbycibbasis6.4-%LANGUAGESTRING"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Language module for %PRODUCTNAME %PRODUCTVERSION, language %LANGUAGESTRING"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -57,9 +59,9 @@ solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-%LANGUAGESTRING"
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-%LANGUAGESTRING-fonts"
provides = "%BASISPACKAGEPREFIX%PRODUCTVERSION-%LANGUAGESTRING-fonts"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-%LANGUAGESTRING %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Language fonts module for %PRODUCTNAME %PRODUCTVERSION, language %LANGUAGESTRING"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -73,9 +75,9 @@ solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-%LANGUAGESTRING"
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-%LANGUAGESTRING-res"
provides = "%BASISPACKAGEPREFIX%PRODUCTVERSION-%LANGUAGESTRING-res"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-%LANGUAGESTRING %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Language resource module for %PRODUCTNAME %PRODUCTVERSION, language %LANGUAGESTRING"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -89,9 +91,9 @@ solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-%LANGUAGESTRING"
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-%LANGUAGESTRING-writer"
provides = "%BASISPACKAGEPREFIX%PRODUCTVERSION-%LANGUAGESTRING-writer"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-%LANGUAGESTRING %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Writer language module for %PRODUCTNAME %PRODUCTVERSION, language %LANGUAGESTRING"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -105,9 +107,9 @@ solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-%LANGUAGESTRING"
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-%LANGUAGESTRING-calc"
provides = "%BASISPACKAGEPREFIX%PRODUCTVERSION-%LANGUAGESTRING-calc"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-%LANGUAGESTRING %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Calc language module for %PRODUCTNAME %PRODUCTVERSION, language %LANGUAGESTRING"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -121,9 +123,9 @@ solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-%LANGUAGESTRING"
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-%LANGUAGESTRING-impress"
provides = "%BASISPACKAGEPREFIX%PRODUCTVERSION-%LANGUAGESTRING-impress"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-%LANGUAGESTRING %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Impress language module for %PRODUCTNAME %PRODUCTVERSION, language %LANGUAGESTRING"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -137,9 +139,9 @@ solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-%LANGUAGESTRING"
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-%LANGUAGESTRING-draw"
provides = "%BASISPACKAGEPREFIX%PRODUCTVERSION-%LANGUAGESTRING-draw"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-%LANGUAGESTRING %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Draw language module for %PRODUCTNAME %PRODUCTVERSION, language %LANGUAGESTRING"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -153,9 +155,9 @@ solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-%LANGUAGESTRING"
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-%LANGUAGESTRING-math"
provides = "%BASISPACKAGEPREFIX%PRODUCTVERSION-%LANGUAGESTRING-math"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-%LANGUAGESTRING %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Math language module for %PRODUCTNAME %PRODUCTVERSION, language %LANGUAGESTRING"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -169,9 +171,9 @@ solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-%LANGUAGESTRING"
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-%LANGUAGESTRING-base"
provides = "%BASISPACKAGEPREFIX%PRODUCTVERSION-%LANGUAGESTRING-base"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-%LANGUAGESTRING %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Base language module for %PRODUCTNAME %PRODUCTVERSION, language %LANGUAGESTRING"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -185,9 +187,9 @@ solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-%LANGUAGESTRING"
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-%LANGUAGESTRING-onlineupd"
provides = "%BASISPACKAGEPREFIX%PRODUCTVERSION-%LANGUAGESTRING-onlineupd"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-%LANGUAGESTRING %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Online update language module for %PRODUCTNAME %PRODUCTVERSION, language %LANGUAGESTRING"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
diff --git a/setup_native/source/packinfo/packinfo_sdkoo.txt b/setup_native/source/packinfo/packinfo_sdkoo.txt
index 4d148fb11c4d..d193b238c361 100644
--- a/setup_native/source/packinfo/packinfo_sdkoo.txt
+++ b/setup_native/source/packinfo/packinfo_sdkoo.txt
@@ -23,9 +23,11 @@ solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-core, SUNWbtool
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-sdk"
freebsdrequires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core %PACKAGEVERSION %PACKAGEVERSION-%PACKAGEREVISION"
-copyright = "2020 The Document Foundation"
+linuxreplaces = "libreofficepoweredbycibbasis6.4-sdk"
+linuxincompat = "libreofficepoweredbycibbasis6.4-sdk"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "Software Development Kit for LibreOffice %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
diff --git a/setup_native/source/packinfo/packinfo_ure.txt b/setup_native/source/packinfo/packinfo_ure.txt
index 66e8c66f3326..4fccbb70754c 100644
--- a/setup_native/source/packinfo/packinfo_ure.txt
+++ b/setup_native/source/packinfo/packinfo_ure.txt
@@ -21,12 +21,12 @@ module = "gid_Module_Root"
solarispackagename = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure"
solarisrequires = "SUNWzlibr"
solarisprovides = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-stdlibs"
-linuxreplaces = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-stdlibs"
-linuxincompat = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-stdlibs"
+linuxreplaces = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-stdlibs, libreofficepoweredbycib6.4-ure"
+linuxincompat = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-stdlibs, libreofficepoweredbycib6.4-ure"
packagename = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure"
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "UNO Runtime Environment"
destpath = "/opt"
packageversion = "%UREPACKAGEVERSION"
@@ -37,12 +37,12 @@ module = "gid_Module_Root_Ure_Hidden"
solarispackagename = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure"
solarisrequires = "SUNWzlibr"
solarisprovides = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-stdlibs"
-linuxreplaces = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-stdlibs"
-linuxincompat = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-stdlibs"
+linuxreplaces = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-stdlibs, libreofficepoweredbycib6.4-ure"
+linuxincompat = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-stdlibs, libreofficepoweredbycib6.4-ure"
packagename = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure"
-copyright = "2020 The Document Foundation"
+copyright = "2022 CIB software GmbH"
solariscopyright = "solariscopyrightfile"
-vendor = "The Document Foundation"
+vendor = "CIB software GmbH"
description = "UNO Runtime Environment"
destpath = "/opt"
packageversion = "%UREPACKAGEVERSION"
diff --git a/sfx2/source/appl/appserv.cxx b/sfx2/source/appl/appserv.cxx
index 9df5f4232445..96577e81f72d 100644
--- a/sfx2/source/appl/appserv.cxx
+++ b/sfx2/source/appl/appserv.cxx
@@ -228,8 +228,10 @@ namespace
SfxStringItem aURL(SID_FILE_NAME, ".component:Bibliography/View1");
SfxStringItem aRef(SID_REFERER, "private:user");
SfxStringItem aTarget(SID_TARGETNAME, "_blank");
- SfxViewFrame::Current()->GetDispatcher()->ExecuteList(SID_OPENDOC,
- SfxCallMode::ASYNCHRON, { &aURL, &aRef, &aTarget });
+ const SfxViewFrame* pViewFrame = SfxViewFrame::Current();
+ if ( pViewFrame )
+ pViewFrame->GetDispatcher()->ExecuteList(SID_OPENDOC,
+ SfxCallMode::ASYNCHRON, { &aURL, &aRef, &aTarget });
}
catch (const Exception &)
{
@@ -549,7 +551,7 @@ void SfxApplication::MiscExec_Impl( SfxRequest& rReq )
case SID_SEND_FEEDBACK:
{
- sfx2::openUriExternally("https://www.cib.de/libreoffice-poweredbycib", false);
+ sfx2::openUriExternally("https://www.cib.de/office", false);
break;
}
case SID_DOCUMENTATION:
diff --git a/sfx2/source/appl/macroloader.cxx b/sfx2/source/appl/macroloader.cxx
index 98e036e0a7ea..b50d1e63c789 100644
--- a/sfx2/source/appl/macroloader.cxx
+++ b/sfx2/source/appl/macroloader.cxx
@@ -76,10 +76,10 @@ css::uno::Sequence<OUString> SAL_CALL SfxMacroLoader::getSupportedServiceNames()
return aSeq;
}
-SfxObjectShell* SfxMacroLoader::GetObjectShell_Impl()
+SfxObjectShell* SfxMacroLoader::GetObjectShell(const Reference <XFrame>& xFrame)
{
SfxObjectShell* pDocShell = nullptr;
- Reference < XFrame > xFrame( m_xFrame.get(), UNO_QUERY );
+
if ( xFrame.is() )
{
SfxFrame* pFrame=nullptr;
@@ -96,6 +96,11 @@ SfxObjectShell* SfxMacroLoader::GetObjectShell_Impl()
return pDocShell;
}
+SfxObjectShell* SfxMacroLoader::GetObjectShell_Impl()
+{
+ Reference < XFrame > xFrame( m_xFrame.get(), UNO_QUERY );
+ return SfxMacroLoader::GetObjectShell(xFrame);
+}
uno::Reference<frame::XDispatch> SAL_CALL SfxMacroLoader::queryDispatch(
const util::URL& aURL ,
diff --git a/sfx2/source/doc/docfile.cxx b/sfx2/source/doc/docfile.cxx
index 5d00d39bd837..95e0af044f2a 100644
--- a/sfx2/source/doc/docfile.cxx
+++ b/sfx2/source/doc/docfile.cxx
@@ -4215,17 +4215,18 @@ OUString SfxMedium::SwitchDocumentToTempFile()
{}
}
+ if (bWasReadonly)
+ {
+ // set the readonly state back
+ pImpl->m_nStorOpenMode = SFX_STREAM_READONLY;
+ GetItemSet()->Put(SfxBoolItem(SID_DOC_READONLY, true));
+ }
+
if ( aResult.isEmpty() )
{
Close();
SetPhysicalName_Impl( OUString() );
SetName( aOrigURL );
- if ( bWasReadonly )
- {
- // set the readonly state back
- pImpl->m_nStorOpenMode = SFX_STREAM_READONLY;
- GetItemSet()->Put( SfxBoolItem(SID_DOC_READONLY, true));
- }
GetMedium_Impl();
pImpl->xStorage = xStorage;
}
diff --git a/sfx2/source/doc/iframe.cxx b/sfx2/source/doc/iframe.cxx
index 8b1271545dfb..aea851894286 100644
--- a/sfx2/source/doc/iframe.cxx
+++ b/sfx2/source/doc/iframe.cxx
@@ -39,11 +39,13 @@
#include <svl/ownlist.hxx>
#include <svl/itemprop.hxx>
#include <sfx2/frmdescr.hxx>
+#include <sfx2/objsh.hxx>
#include <sfx2/sfxdlg.hxx>
#include <sfx2/sfxsids.hrc>
#include <toolkit/helper/vclunohelper.hxx>
#include <vcl/window.hxx>
#include <tools/debug.hxx>
+#include <macroloader.hxx>
using namespace ::com::sun::star;
@@ -159,6 +161,19 @@ sal_Bool SAL_CALL IFrameObject::load(
{
if ( SvtMiscOptions().IsPluginsEnabled() )
{
+ util::URL aTargetURL;
+ aTargetURL.Complete = maFrmDescr.GetURL().GetMainURL( INetURLObject::DecodeMechanism::NONE );
+ uno::Reference < util::XURLTransformer > xTrans( util::URLTransformer::create( mxContext ) );
+ xTrans->parseStrict( aTargetURL );
+
+ if (INetURLObject(aTargetURL.Complete).GetProtocol() == INetProtocol::Macro)
+ {
+ uno::Reference<frame::XFramesSupplier> xParentFrame = xFrame->getCreator();
+ SfxObjectShell* pDoc = SfxMacroLoader::GetObjectShell(xParentFrame);
+ if (pDoc && !pDoc->AdjustMacroMode())
+ return false;
+ }
+
DBG_ASSERT( !mxFrame.is(), "Frame already existing!" );
VclPtr<vcl::Window> pParent = VCLUnoHelper::GetWindow( xFrame->getContainerWindow() );
VclPtr<IFrameWindow_Impl> pWin = VclPtr<IFrameWindow_Impl>::Create( pParent, maFrmDescr.IsFrameBorderOn() );
@@ -181,11 +196,6 @@ sal_Bool SAL_CALL IFrameObject::load(
if ( xFramesSupplier.is() )
mxFrame->setCreator( xFramesSupplier );
- util::URL aTargetURL;
- aTargetURL.Complete = maFrmDescr.GetURL().GetMainURL( INetURLObject::DecodeMechanism::NONE );
- uno::Reference < util::XURLTransformer > xTrans( util::URLTransformer::create( mxContext ) );
- xTrans->parseStrict( aTargetURL );
-
uno::Sequence < beans::PropertyValue > aProps(2);
aProps[0].Name = "PluginMode";
aProps[0].Value <<= sal_Int16(2);
diff --git a/sfx2/source/doc/printhelper.cxx b/sfx2/source/doc/printhelper.cxx
index 42936e53fe99..263c20b58e26 100644
--- a/sfx2/source/doc/printhelper.cxx
+++ b/sfx2/source/doc/printhelper.cxx
@@ -711,6 +711,15 @@ void SAL_CALL SfxPrintHelper::print(const uno::Sequence< beans::PropertyValue >&
aCheckedArgs[nProps++].Value <<= bTemp;
}
+ else if ( rProp.Name == "JobName" )
+ {
+ OUString sTemp;
+ if( !(rProp.Value >>= sTemp) )
+ throw css::lang::IllegalArgumentException();
+ aCheckedArgs[nProps].Name = rProp.Name;
+ aCheckedArgs[nProps++].Value <<= sTemp;
+ }
+
// Pages-Property
else if ( rProp.Name == "Pages" )
{
diff --git a/sfx2/source/inc/macroloader.hxx b/sfx2/source/inc/macroloader.hxx
index 9e1dfba18ed0..b3e7a5ec1abc 100644
--- a/sfx2/source/inc/macroloader.hxx
+++ b/sfx2/source/inc/macroloader.hxx
@@ -82,6 +82,8 @@ public:
virtual void SAL_CALL addStatusListener( const css::uno::Reference< css::frame::XStatusListener >& xControl, const css::util::URL& aURL ) override;
virtual void SAL_CALL removeStatusListener( const css::uno::Reference< css::frame::XStatusListener >& xControl, const css::util::URL& aURL ) override;
+
+ static SfxObjectShell* GetObjectShell(const css::uno::Reference<css::frame::XFrame>& xFrame);
};
#endif
diff --git a/sfx2/source/view/viewprn.cxx b/sfx2/source/view/viewprn.cxx
index b67267a61b53..f9cd9c005c39 100644
--- a/sfx2/source/view/viewprn.cxx
+++ b/sfx2/source/view/viewprn.cxx
@@ -616,10 +616,14 @@ void SfxViewShell::StartPrint( const uno::Sequence < beans::PropertyValue >& rPr
));
pImpl->m_xPrinterController = xNewController;
- SfxObjectShell *pObjShell = GetObjectShell();
- xNewController->setValue( "JobName",
- makeAny( pObjShell->GetTitle(1) ) );
- xNewController->setPrinterModified( mbPrinterSettingsModified );
+ // When no JobName was specified via com::sun::star::view::PrintOptions::JobName ,
+ // use the document title as default job name
+ css::beans::PropertyValue* pJobNameVal = xNewController->getValue("JobName");
+ if (!pJobNameVal)
+ {
+ xNewController->setValue("JobName", Any(GetObjectShell()->GetTitle(1)));
+ xNewController->setPrinterModified(mbPrinterSettingsModified);
+ }
}
void SfxViewShell::ExecPrint( const uno::Sequence < beans::PropertyValue >& rProps, bool bIsAPI, bool bIsDirect )
diff --git a/shell/source/win32/simplemail/senddoc.cxx b/shell/source/win32/simplemail/senddoc.cxx
index 3b57684fe821..e34412cbfae1 100644
--- a/shell/source/win32/simplemail/senddoc.cxx
+++ b/shell/source/win32/simplemail/senddoc.cxx
@@ -58,8 +58,8 @@ namespace /* private */
std::vector<std::wstring> gTo;
std::vector<std::wstring> gCc;
std::vector<std::wstring> gBcc;
- // Keep temp filepath and displayed name
- std::vector<std::pair<std::wstring, std::wstring>> gAttachments;
+ // Keep temp filepath, displayed name, and "do not delete" flag
+ std::vector<std::tuple<std::wstring, std::wstring, bool>> gAttachments;
int gMapiFlags = 0;
}
@@ -121,11 +121,12 @@ static void initAttachmentList(MapiAttachmentList_t* pMapiAttachmentList)
{
OSL_ASSERT(pMapiAttachmentList->empty());
- for (const auto& attachment : gAttachments)
+ for (const auto& [filepath, attachname, nodelete] : gAttachments)
{
+ (void)nodelete;
MapiFileDescW mfd;
ZeroMemory(&mfd, sizeof(mfd));
- mfd.lpszPathName = const_cast<wchar_t*>(attachment.first.c_str());
+ mfd.lpszPathName = const_cast<wchar_t*>(filepath.c_str());
// MapiFileDesc documentation (https://msdn.microsoft.com/en-us/library/hh707272)
// allows using here either nullptr, or a pointer to empty string. However,
// for Outlook 2013, we cannot use nullptr here, and must point to a (possibly
@@ -134,7 +135,7 @@ static void initAttachmentList(MapiAttachmentList_t* pMapiAttachmentList)
// Since C++11, c_str() must return a pointer to single null character when the
// string is empty, so we are OK here in case when there's no explicit file name
// passed
- mfd.lpszFileName = const_cast<wchar_t*>(attachment.second.c_str());
+ mfd.lpszFileName = const_cast<wchar_t*>(attachname.c_str());
mfd.nPosition = sal::static_int_cast<ULONG>(-1);
pMapiAttachmentList->push_back(mfd);
}
@@ -239,7 +240,14 @@ static void initParameter(int argc, wchar_t* argv[])
sName = argv[i+3];
i += 2;
}
- gAttachments.emplace_back(sPath, sName);
+ // Also there may be --nodelete to keep the attachment on exit
+ bool nodelete = false;
+ if ((i + 2) < argc && _wcsicmp(argv[i+2], L"--nodelete") == 0)
+ {
+ nodelete = true;
+ ++i;
+ }
+ gAttachments.emplace_back(sPath, sName, nodelete);
}
else if (_wcsicmp(argv[i], L"--langtag") == 0)
gLangTag = o3tl::toU(argv[i+1]);
@@ -401,8 +409,12 @@ int wmain(int argc, wchar_t* argv[])
}
// Now cleanup the temporary attachment files
- for (const auto& rAttachment : gAttachments)
- DeleteFileW(rAttachment.first.c_str());
+ for (const auto& [filepath, attachname, nodelete] : gAttachments)
+ {
+ (void)attachname;
+ if (!nodelete)
+ DeleteFileW(filepath.c_str());
+ }
// Only show the error message if UI was requested
if ((ulRet != SUCCESS_SUCCESS) && (gMapiFlags & (MAPI_DIALOG | MAPI_LOGON_UI)))
@@ -434,11 +446,13 @@ int wmain(int argc, wchar_t* argv[])
for (const auto& address : gBcc)
oss << "--bcc " << address << std::endl;
- for (const auto& attachment : gAttachments)
+ for (const auto& [filepath, attachname, nodelete] : gAttachments)
{
- oss << "--attach " << attachment.first << std::endl;
- if (!attachment.second.empty())
- oss << "--attach-name " << attachment.second << std::endl;
+ oss << "--attach " << filepath << std::endl;
+ if (!attachname.empty())
+ oss << "--attach-name " << attachname << std::endl;
+ if (nodelete)
+ oss << "--nodelete" << std::endl;
}
if (gMapiFlags & MAPI_DIALOG)
diff --git a/shell/source/win32/simplemail/smplmailclient.cxx b/shell/source/win32/simplemail/smplmailclient.cxx
index 4919ded7f889..254de4bb49a0 100644
--- a/shell/source/win32/simplemail/smplmailclient.cxx
+++ b/shell/source/win32/simplemail/smplmailclient.cxx
@@ -193,7 +193,8 @@ const OUString& GetBaseTempDirURL()
}
}
-OUString CSmplMailClient::CopyAttachment(const OUString& sOrigAttachURL, OUString& sUserVisibleName)
+OUString CSmplMailClient::CopyAttachment(const OUString& sOrigAttachURL, OUString& sUserVisibleName,
+ bool& nodelete)
{
// We do two things here:
// 1. Make the attachment temporary filename to not contain any fancy characters possible in
@@ -213,9 +214,10 @@ OUString CSmplMailClient::CopyAttachment(const OUString& sOrigAttachURL, OUStrin
osl::FileBase::getFileURLFromSystemPath(sCorrectedOrigAttachURL, sCorrectedOrigAttachURL);
if (osl::File::copy(sCorrectedOrigAttachURL, sNewAttachmentURL) == osl::FileBase::RC::E_None)
{
- INetURLObject url(sOrigAttachURL, INetURLObject::EncodeMechanism::WasEncoded);
+ INetURLObject url(sCorrectedOrigAttachURL, INetURLObject::EncodeMechanism::WasEncoded);
sUserVisibleName = url.getName(INetURLObject::LAST_SEGMENT, true,
INetURLObject::DecodeMechanism::WithCharset);
+ nodelete = false;
}
else
{
@@ -224,6 +226,7 @@ OUString CSmplMailClient::CopyAttachment(const OUString& sOrigAttachURL, OUStrin
// is the absent attachment file anyway.
sNewAttachmentURL = sOrigAttachURL;
maAttachmentFiles.pop_back();
+ nodelete = true; // Do not delete a non-temporary in senddoc
}
return sNewAttachmentURL;
}
@@ -311,7 +314,8 @@ void CSmplMailClient::assembleCommandLine(
for (const auto& attachment : attachments)
{
OUString sDisplayName;
- OUString sTempFileURL(CopyAttachment(attachment, sDisplayName));
+ bool nodelete = false;
+ OUString sTempFileURL(CopyAttachment(attachment, sDisplayName, nodelete));
OUString sysPath;
osl::FileBase::RC err = osl::FileBase::getSystemPathFromFileURL(sTempFileURL, sysPath);
if (err != osl::FileBase::E_None)
@@ -327,6 +331,8 @@ void CSmplMailClient::assembleCommandLine(
rCommandArgs.push_back(ATTACH_NAME);
rCommandArgs.push_back(sDisplayName);
}
+ if (nodelete)
+ rCommandArgs.push_back("--nodelete");
}
if (!(aFlag & NO_USER_INTERFACE))
diff --git a/shell/source/win32/simplemail/smplmailclient.hxx b/shell/source/win32/simplemail/smplmailclient.hxx
index 5844e99147e5..6f71a1a2a715 100644
--- a/shell/source/win32/simplemail/smplmailclient.hxx
+++ b/shell/source/win32/simplemail/smplmailclient.hxx
@@ -38,7 +38,7 @@ public:
private:
void validateParameter(const css::uno::Reference<css::system::XSimpleMailMessage>& xSimpleMailMessage, sal_Int32 aFlag);
void assembleCommandLine(const css::uno::Reference<css::system::XSimpleMailMessage>& xSimpleMailMessage, sal_Int32 aFlag, std::vector<OUString>& rCommandArgs);
- OUString CopyAttachment(const OUString& sOrigAttachURL, OUString& sUserVisibleName);
+ OUString CopyAttachment(const OUString& sOrigAttachURL, OUString& sUserVisibleName, bool& nodelete);
// Don't try to delete the copied attachment files; let the spawned process cleanup them
void ReleaseAttachments();
diff --git a/svx/source/dialog/SafeModeDialog.cxx b/svx/source/dialog/SafeModeDialog.cxx
index 3d2e0e659b83..5303ed99973d 100644
--- a/svx/source/dialog/SafeModeDialog.cxx
+++ b/svx/source/dialog/SafeModeDialog.cxx
@@ -91,7 +91,7 @@ SafeModeDialog::SafeModeDialog(weld::Window* pParent)
RadioBtnHdl(*mxRadioRestore);
// Set URL for help button (module=safemode)
- mxBugLink->set_uri("https://www.cib.de/libreoffice-poweredbycib");
+ mxBugLink->set_uri("https://www.cib.de/office");
mxUserProfileLink->set_uri(comphelper::BackupFileHelper::getUserProfileURL());
}
diff --git a/sw/CppunitTest_sw_core_edit.mk b/sw/CppunitTest_sw_core_edit.mk
new file mode 100644
index 000000000000..2c04606a75f9
--- /dev/null
+++ b/sw/CppunitTest_sw_core_edit.mk
@@ -0,0 +1,74 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#*************************************************************************
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+#*************************************************************************
+
+$(eval $(call gb_CppunitTest_CppunitTest,sw_core_edit))
+
+$(eval $(call gb_CppunitTest_use_common_precompiled_header,sw_core_edit))
+
+$(eval $(call gb_CppunitTest_add_exception_objects,sw_core_edit, \
+ sw/qa/core/edit/edit \
+))
+
+$(eval $(call gb_CppunitTest_use_libraries,sw_core_edit, \
+ editeng \
+ comphelper \
+ cppu \
+ cppuhelper \
+ sal \
+ sfx \
+ svxcore \
+ sw \
+ test \
+ unotest \
+ utl \
+ vcl \
+ svt \
+ tl \
+ svl \
+))
+
+$(eval $(call gb_CppunitTest_use_externals,sw_core_edit,\
+ boost_headers \
+ libxml2 \
+))
+
+$(eval $(call gb_CppunitTest_set_include,sw_core_edit,\
+ -I$(SRCDIR)/sw/inc \
+ -I$(SRCDIR)/sw/source/core/inc \
+ -I$(SRCDIR)/sw/source/uibase/inc \
+ -I$(SRCDIR)/sw/qa/inc \
+ $$(INCLUDE) \
+))
+
+$(eval $(call gb_CppunitTest_use_api,sw_core_edit,\
+ udkapi \
+ offapi \
+ oovbaapi \
+))
+
+$(eval $(call gb_CppunitTest_use_ure,sw_core_edit))
+$(eval $(call gb_CppunitTest_use_vcl,sw_core_edit))
+
+$(eval $(call gb_CppunitTest_use_rdb,sw_core_edit,services))
+
+$(eval $(call gb_CppunitTest_use_custom_headers,sw_core_edit,\
+ officecfg/registry \
+))
+
+$(eval $(call gb_CppunitTest_use_configuration,sw_core_edit))
+
+$(eval $(call gb_CppunitTest_use_uiconfigs,sw_core_edit, \
+ modules/swriter \
+))
+
+$(eval $(call gb_CppunitTest_use_more_fonts,sw_core_edit))
+
+# vim: set noet sw=4 ts=4:
diff --git a/sw/CppunitTest_sw_core_text.mk b/sw/CppunitTest_sw_core_text.mk
index 9fe4fadbf357..6f8e7e46c0fc 100644
--- a/sw/CppunitTest_sw_core_text.mk
+++ b/sw/CppunitTest_sw_core_text.mk
@@ -21,9 +21,11 @@ $(eval $(call gb_CppunitTest_use_libraries,sw_core_text, \
comphelper \
cppu \
cppuhelper \
+ editeng \
sal \
sfx \
sw \
+ svl \
test \
unotest \
utl \
diff --git a/sw/Module_sw.mk b/sw/Module_sw.mk
index 7ef692352874..0a2f2876736e 100644
--- a/sw/Module_sw.mk
+++ b/sw/Module_sw.mk
@@ -114,6 +114,7 @@ $(eval $(call gb_Module_add_slowcheck_targets,sw,\
CppunitTest_sw_core_layout \
CppunitTest_sw_core_unocore \
CppunitTest_sw_core_crsr \
+ CppunitTest_sw_core_edit \
))
ifneq ($(DISABLE_GUI),TRUE)
diff --git a/sw/inc/IDocumentContentOperations.hxx b/sw/inc/IDocumentContentOperations.hxx
index b6857c346a33..6e6b3c1bad3e 100644
--- a/sw/inc/IDocumentContentOperations.hxx
+++ b/sw/inc/IDocumentContentOperations.hxx
@@ -69,6 +69,16 @@ namespace o3tl
template<> struct typed_flags<SwInsertFlags> : is_typed_flags<SwInsertFlags, 0x07> {};
}
+enum class SwDeleteFlags
+{
+ Default = 0,
+ ArtificialSelection = (1<<0), ///< keyboard delete, artificial selection, avoid deleting flys
+};
+namespace o3tl
+{
+ template<> struct typed_flags<SwDeleteFlags> : is_typed_flags<SwDeleteFlags, 0x01> {};
+}
+
/** Text operation/manipulation interface
*/
class IDocumentContentOperations
@@ -130,6 +140,7 @@ public:
Needed for hiding of deletion redlines
*/
virtual bool DeleteAndJoin( SwPaM&,
+ SwDeleteFlags flags = SwDeleteFlags::Default,
const bool bForceJoinNext = false ) = 0;
virtual bool MoveRange(SwPaM&, SwPosition&, SwMoveFlags) = 0;
diff --git a/sw/inc/IDocumentMarkAccess.hxx b/sw/inc/IDocumentMarkAccess.hxx
index 3a13761672ef..c88e51077005 100644
--- a/sw/inc/IDocumentMarkAccess.hxx
+++ b/sw/inc/IDocumentMarkAccess.hxx
@@ -282,7 +282,7 @@ class IDocumentMarkAccess
// interface IBookmarks (BOOKMARK, CROSSREF_NUMITEM_BOOKMARK, CROSSREF_HEADING_BOOKMARK )
/** check if the selection would delete a BOOKMARK */
- virtual bool isBookmarkDeleted(SwPaM const& rPaM) const =0;
+ virtual bool isBookmarkDeleted(SwPaM const& rPaM, bool isReplace) const =0;
/** returns a STL-like random access iterator to the begin of the sequence the IBookmarks.
*/
diff --git a/sw/inc/cmdid.h b/sw/inc/cmdid.h
index 34fc28b713a8..8ca02d42b950 100644
--- a/sw/inc/cmdid.h
+++ b/sw/inc/cmdid.h
@@ -289,6 +289,8 @@
#define FN_TABLE_PASTE_ROW_BEFORE (FN_INSERT2 + 31) /* paste table as new table rows */
#define FN_TABLE_PASTE_COL_BEFORE (FN_INSERT2 + 32) /* paste table as new table columns */
+#define FN_EDIT_BOOKMARK (FN_INSERT2 + 33 ) /* Bookmark */
+
// Region: Format
#define FN_AUTOFORMAT_APPLY (FN_FORMAT + 1 ) /* apply autoformat options */
#define FN_AUTOFORMAT_AUTO (FN_FORMAT + 2 ) /* apply autoformat during user input */
diff --git a/sw/inc/crsrsh.hxx b/sw/inc/crsrsh.hxx
index 23b3753dd938..3a5d395733e8 100644
--- a/sw/inc/crsrsh.hxx
+++ b/sw/inc/crsrsh.hxx
@@ -26,6 +26,9 @@
#include <vcl/keycod.hxx>
#include <o3tl/typed_flags_set.hxx>
+#ifdef SW_DLLIMPLEMENTATION
+#include <TextFrameIndex.hxx>
+#endif
#include "IShellCursorSupplier.hxx"
#include "swdllapi.h"
#include "docary.hxx"
@@ -42,6 +45,7 @@
class SfxItemSet;
class SfxPoolItem;
+class SwCallLink;
class SwContentFrame;
class SwUnoCursor;
class SwFormatField;
@@ -434,6 +438,7 @@ public:
* stack
* @return <true> if there was one on the stack, <false> otherwise
*/
+ bool Pop(PopMode, ::std::unique_ptr<SwCallLink> pLink);
bool Pop(PopMode);
/*
* Combine 2 Cursors.
@@ -472,7 +477,7 @@ public:
// Cursor is placed in something that is protected or selection contains
// something that is protected.
- bool HasReadonlySel() const;
+ bool HasReadonlySel(bool isReplace = false) const;
// Can the cursor be set to read only ranges?
bool IsReadOnlyAvailable() const { return m_bSetCursorInReadOnly; }
@@ -792,8 +797,12 @@ public:
bool GotoINetAttr( const SwTextINetFormat& rAttr );
const SwFormatINetFormat* FindINetAttr( const OUString& rName ) const;
- bool SelectText( const sal_Int32 nStart,
- const sal_Int32 nEnd );
+ bool SelectTextModel(sal_Int32 nStart, sal_Int32 nEnd);
+#ifdef SW_DLLIMPLEMENTATION
+ bool SelectTextView(TextFrameIndex nStart, TextFrameIndex nEnd);
+ // result is only valid while cursor isn't moved!
+ TextFrameIndex GetCursorPointAsViewIndex() const;
+#endif
bool CheckTableBoxContent( const SwPosition* pPos = nullptr );
void SaveTableBoxContent( const SwPosition* pPos = nullptr );
diff --git a/sw/inc/editsh.hxx b/sw/inc/editsh.hxx
index 53b91f44db98..3f2d34d66c2e 100644
--- a/sw/inc/editsh.hxx
+++ b/sw/inc/editsh.hxx
@@ -152,7 +152,7 @@ class SW_DLLPUBLIC SwEditShell : public SwCursorShell
that will be used by GetGraphic() and GetGraphicSize(). */
SAL_DLLPRIVATE SwGrfNode *GetGrfNode_() const ;
- SAL_DLLPRIVATE void DeleteSel( SwPaM& rPam, bool* pUndo = nullptr );
+ SAL_DLLPRIVATE void DeleteSel(SwPaM& rPam, bool isArtificialSelection, bool* pUndo = nullptr);
SAL_DLLPRIVATE void SetSectionAttr_( SwSectionFormat& rSectFormat, const SfxItemSet& rSet );
@@ -174,7 +174,7 @@ public:
/** Delete content of all ranges.
If whole nodes are selected, these nodes get deleted. */
- bool Delete();
+ bool Delete(bool isArtificialSelection = false);
/// Remove a complete paragraph.
bool DelFullPara();
diff --git a/sw/inc/index.hxx b/sw/inc/index.hxx
index 10256ad1f53f..b967b45c1bf0 100644
--- a/sw/inc/index.hxx
+++ b/sw/inc/index.hxx
@@ -22,6 +22,8 @@
#include <sal/types.h>
#include "swdllapi.h"
+#include <o3tl/typed_flags_set.hxx>
+
#include <iostream>
class SwIndexReg;
@@ -115,9 +117,17 @@ class SAL_WARN_UNUSED SwIndexReg
const SwIndex * m_pFirst;
const SwIndex * m_pLast;
+public:
+ enum class UpdateMode {
+ Default = 0,
+ Negative = (1<<0),
+ Delete = (1<<1),
+ Replace = (1<<2),
+ };
+
protected:
virtual void Update( SwIndex const & rPos, const sal_Int32 nChangeLen,
- const bool bNegative = false, const bool bDelete = false );
+ UpdateMode eMode);
bool HasAnyIndex() const { return nullptr != m_pFirst; }
@@ -129,6 +139,11 @@ public:
const SwIndex* GetFirstIndex() const { return m_pFirst; }
};
+namespace o3tl
+{
+ template<> struct typed_flags<SwIndexReg::UpdateMode> : is_typed_flags<SwIndexReg::UpdateMode, 0x07> {};
+}
+
#ifndef DBG_UTIL
inline sal_Int32 SwIndex::operator++()
diff --git a/sw/inc/ndarr.hxx b/sw/inc/ndarr.hxx
index 2f2958c977bc..7504a283fdf3 100644
--- a/sw/inc/ndarr.hxx
+++ b/sw/inc/ndarr.hxx
@@ -44,6 +44,7 @@ class SwNodeIndex;
class SwNodeRange;
class SwOLENode;
class SwPaM;
+class SwRootFrame;
class SwSectionData;
class SwSectionFormat;
class SwTOXBase;
@@ -306,11 +307,12 @@ public:
const SwDoc* GetDoc() const { return m_pMyDoc; }
/** Search previous / next content node or table node with frames.
- If no end is given begin with the FrameIndex, else start search
- with that before rFrameIdx and pEnd at the back.
+ Search is started backward with the one before rFrameIdx and
+ forward after pEnd.
If no valid node is found, return 0. rFrameIdx points to the node with frames. **/
SwNode* FindPrvNxtFrameNode( SwNodeIndex& rFrameIdx,
- const SwNode* pEnd ) const;
+ const SwNode* pEnd,
+ SwRootFrame const* pLayout = nullptr) const;
SwNode * DocumentSectionStartNode(SwNode * pNode) const;
SwNode * DocumentSectionEndNode(SwNode * pNode) const;
diff --git a/sw/inc/ndtxt.hxx b/sw/inc/ndtxt.hxx
index acef43b0010e..436349cc9653 100644
--- a/sw/inc/ndtxt.hxx
+++ b/sw/inc/ndtxt.hxx
@@ -504,7 +504,7 @@ public:
@retval true This text node has a number.
@retval false else
*/
- bool HasNumber() const;
+ bool HasNumber(SwRootFrame const* pLayout = nullptr) const;
/** Returns if this text node has a bullet.
@@ -739,8 +739,7 @@ public:
virtual void Update(
SwIndex const & rPos,
const sal_Int32 nChangeLen,
- const bool bNegative = false,
- const bool bDelete = false ) override;
+ UpdateMode eMode) override;
/// change text to Upper/Lower/Hiragana/Katakana/...
void TransliterateText( utl::TransliterationWrapper& rTrans,
diff --git a/sw/inc/pam.hxx b/sw/inc/pam.hxx
index 07ca7ff949a2..b8fafe762040 100644
--- a/sw/inc/pam.hxx
+++ b/sw/inc/pam.hxx
@@ -252,7 +252,7 @@ public:
/** Is in something protected (readonly) or selection contains
something protected. */
- bool HasReadonlySel( bool bFormView ) const;
+ bool HasReadonlySel(bool bFormView, bool isReplace) const;
bool ContainsPosition(const SwPosition & rPos) const
{
diff --git a/sw/inc/swabstdlg.hxx b/sw/inc/swabstdlg.hxx
index 3d4dd0d7ff29..c972618b3d80 100644
--- a/sw/inc/swabstdlg.hxx
+++ b/sw/inc/swabstdlg.hxx
@@ -373,7 +373,7 @@ public:
virtual VclPtr<SfxAbstractDialog> CreateSwAddressAbstractDlg(weld::Window* pParent, const SfxItemSet& rSet) = 0;
virtual VclPtr<AbstractSwAsciiFilterDlg> CreateSwAsciiFilterDlg(weld::Window* pParent, SwDocShell& rDocSh,
SvStream* pStream) = 0;
- virtual VclPtr<VclAbstractDialog> CreateSwInsertBookmarkDlg(weld::Window *pParent, SwWrtShell &rSh, SfxRequest& rReq) = 0;
+ virtual VclPtr<VclAbstractDialog> CreateSwInsertBookmarkDlg(weld::Window *pParent, SwWrtShell &rSh, SfxRequest& rReq, OUString const* pSelected) = 0;
virtual VclPtr<AbstractSwBreakDlg> CreateSwBreakDlg(weld::Window *pParent, SwWrtShell &rSh) = 0;
virtual VclPtr<VclAbstractDialog> CreateSwChangeDBDlg(SwView& rVw) = 0;
diff --git a/sw/inc/unobaseclass.hxx b/sw/inc/unobaseclass.hxx
index 289d5f0b7ee1..9f7db995de53 100644
--- a/sw/inc/unobaseclass.hxx
+++ b/sw/inc/unobaseclass.hxx
@@ -26,6 +26,9 @@
#include <comphelper/servicehelper.hxx>
#include <cppuhelper/implbase.hxx>
+
+#include <o3tl/typed_flags_set.hxx>
+
#include <vcl/svapp.hxx>
class SfxPoolItem;
@@ -54,6 +57,22 @@ enum class CursorType
Meta, // meta/meta-field
};
+namespace sw {
+
+enum class DeleteAndInsertMode
+{
+ Default = 0,
+ ForceExpandHints = (1<<0),
+ ForceReplace = (1<<1),
+};
+
+} // namespace sw
+
+namespace o3tl
+{
+ template<> struct typed_flags<::sw::DeleteAndInsertMode> : is_typed_flags<::sw::DeleteAndInsertMode, 0x03> {};
+}
+
/*
Start/EndAction or Start/EndAllAction
*/
diff --git a/sw/inc/unosett.hxx b/sw/inc/unosett.hxx
index ac7e7b8d9690..a3b64bc1966e 100644
--- a/sw/inc/unosett.hxx
+++ b/sw/inc/unosett.hxx
@@ -147,16 +147,16 @@ private:
OUString m_sNewCharStyleNames[MAXLEVEL];
OUString m_sNewBulletFontNames[MAXLEVEL];
OUString m_sCreatedNumRuleName; //connects to a numbering in SwDoc
- SwDoc* m_pDoc;
+ SwDoc* m_pDoc; // Only if *not* used as chapter numbering.
SwDocShell* m_pDocShell; // Only if used as chapter numbering.
SwNumRule* m_pNumRule;
const SfxItemPropertySet* m_pPropertySet;
bool const m_bOwnNumRuleCreated;
protected:
+ SwXNumberingRules(SwDocShell& rDocSh); // chapter numbering
virtual ~SwXNumberingRules() override;
public:
- SwXNumberingRules(SwDocShell& rDocSh); // chapter numbering
SwXNumberingRules(const SwNumRule& rRule, SwDoc* doc = nullptr); // NumRule for paragraphs, numbering styles
SwXNumberingRules(SwDoc& rDoc); //create a new instance
@@ -218,6 +218,7 @@ public:
OUString *const pHeadingStyleName,
OUString *const pParagraphStyleName,
SwDoc *const pDoc,
+ SwDocShell *const pDocShell,
css::uno::Sequence<css::beans::PropertyValue> const& rProperties);
};
diff --git a/sw/inc/unotextcursor.hxx b/sw/inc/unotextcursor.hxx
index 25cdb7d102d7..4585e79e72ab 100644
--- a/sw/inc/unotextcursor.hxx
+++ b/sw/inc/unotextcursor.hxx
@@ -91,9 +91,7 @@ public:
SwUnoCursor& GetCursor();
bool IsAtEndOfMeta() const;
- void DeleteAndInsert(OUString const& rText,
- const bool bForceExpandHints);
-
+ void DeleteAndInsert(OUString const& rText, ::sw::DeleteAndInsertMode eMode);
// OTextCursorHelper
virtual const SwPaM* GetPaM() const override;
virtual SwPaM* GetPaM() override;
diff --git a/sw/inc/unotextrange.hxx b/sw/inc/unotextrange.hxx
index 41a69049fc5e..36dc36e643db 100644
--- a/sw/inc/unotextrange.hxx
+++ b/sw/inc/unotextrange.hxx
@@ -101,7 +101,7 @@ private:
//TODO: new exception type for protected content
/// @throws css::uno::RuntimeException
void DeleteAndInsert(
- const OUString& rText, const bool bForceExpandHints);
+ const OUString& rText, ::sw::DeleteAndInsertMode eMode);
void Invalidate();
virtual ~SwXTextRange() override;
diff --git a/sw/qa/core/data/rtf/pass/forcepoint110.rtf b/sw/qa/core/data/rtf/pass/forcepoint110.rtf
new file mode 100644
index 000000000000..b7594ff6b622
--- /dev/null
+++ b/sw/qa/core/data/rtf/pass/forcepoint110.rtf
Binary files differ
diff --git a/sw/qa/core/edit/data/redline-hidden.fodt b/sw/qa/core/edit/data/redline-hidden.fodt
new file mode 100644
index 000000000000..10355e3ac485
--- /dev/null
+++ b/sw/qa/core/edit/data/redline-hidden.fodt
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<office:document xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" office:version="1.3" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:settings>
+ <config:config-item-set config:name="ooo:view-settings">
+ <config:config-item config:name="ShowRedlineChanges" config:type="boolean">false</config:config-item>
+ </config:config-item-set>
+ </office:settings>
+ <office:automatic-styles>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="21.001cm" fo:page-height="29.7cm" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm"/>
+ </style:page-layout>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1">
+ </style:master-page>
+ </office:master-styles>
+ <office:body>
+ <office:text>
+ <text:tracked-changes text:track-changes="false">
+ <text:changed-region xml:id="ct51730224" text:id="ct51730224">
+ <text:insertion>
+ <office:change-info>
+ <dc:creator>Creator</dc:creator>
+ <dc:date>2017-04-27T17:12:10</dc:date>
+ </office:change-info>
+ </text:insertion>
+ </text:changed-region>
+ </text:tracked-changes>
+ <text:p><text:change-start text:change-id="ct51730224"/>test<text:change-end text:change-id="ct51730224"/></text:p>
+ </office:text>
+ </office:body>
+</office:document>
diff --git a/sw/qa/core/edit/edit.cxx b/sw/qa/core/edit/edit.cxx
new file mode 100644
index 000000000000..5f6dff479e73
--- /dev/null
+++ b/sw/qa/core/edit/edit.cxx
@@ -0,0 +1,57 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <swmodeltestbase.hxx>
+
+#include <docsh.hxx>
+#include <view.hxx>
+#include <wrtsh.hxx>
+
+#include <editeng/adjustitem.hxx>
+
+char const DATA_DIRECTORY[] = "/sw/qa/core/edit/data/";
+
+namespace
+{
+/// Covers sw/source/core/edit/ fixes.
+class Test : public SwModelTestBase
+{
+public:
+ SwDoc* createSwDoc(const char* pName)
+ {
+ if (!pName)
+ loadURL("private:factory/swriter", nullptr);
+ else
+ load(DATA_DIRECTORY, pName);
+
+ SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get());
+ CPPUNIT_ASSERT(pTextDoc);
+ return pTextDoc->GetDocShell()->GetDoc();
+ }
+};
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testRedlineHidden)
+{
+ // Given a document with ShowRedlineChanges=false:
+ SwDoc* pDoc = createSwDoc("redline-hidden.fodt");
+
+ // When formatting a paragraph by setting the para adjust to center, then make sure setting the
+ // new item set on the paragraph doesn't crash:
+ SwView* pView = pDoc->GetDocShell()->GetView();
+ SfxItemSet aSet(pView->GetPool(), svl::Items<RES_PARATR_ADJUST, RES_PARATR_ADJUST>{});
+ SvxAdjustItem aItem(SvxAdjust::Center, RES_PARATR_ADJUST);
+ aSet.Put(aItem);
+ SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell();
+ pWrtShell->SetAttrSet(aSet, SetAttrMode::DEFAULT, nullptr, true);
+}
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/qa/core/text/text.cxx b/sw/qa/core/text/text.cxx
index 8074cbc9f45e..e6fe75d6c4ad 100644
--- a/sw/qa/core/text/text.cxx
+++ b/sw/qa/core/text/text.cxx
@@ -8,7 +8,12 @@
*/
#include <swmodeltestbase.hxx>
+
+#include <rootfrm.hxx>
+#include <unotxdoc.hxx>
#include <wrtsh.hxx>
+#include <fmtfsize.hxx>
+#include <IDocumentRedlineAccess.hxx>
static char const DATA_DIRECTORY[] = "/sw/qa/core/text/data/";
@@ -21,7 +26,10 @@ public:
SwDoc* SwCoreTextTest::createDoc(const char* pName)
{
- load(DATA_DIRECTORY, pName);
+ if (!pName)
+ loadURL("private:factory/swriter", nullptr);
+ else
+ load(DATA_DIRECTORY, pName);
SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get());
CPPUNIT_ASSERT(pTextDoc);
@@ -46,6 +54,47 @@ CPPUNIT_TEST_FIXTURE(SwCoreTextTest, testFootnoteConnect)
pWrtShell->DelLeft();
}
+CPPUNIT_TEST_FIXTURE(SwCoreTextTest, testRedlineDelete)
+{
+ // Given a document with A4 paper size, some text, redlining on, but hidden:
+ SwDoc* pDoc = createDoc();
+ SwDocShell* pDocShell = pDoc->GetDocShell();
+ SwWrtShell* pWrtShell = pDocShell->GetWrtShell();
+ {
+ // Set page size to A4.
+ size_t nCurIdx = pWrtShell->GetCurPageDesc();
+ SwPageDesc aPageDesc(pWrtShell->GetPageDesc(nCurIdx));
+ SwFrameFormat& rMaster = aPageDesc.GetMaster();
+ SwFormatFrameSize aSize(ATT_FIX_SIZE);
+ aSize.SetSize(Size(11906, 16838));
+ rMaster.SetFormatAttr(aSize);
+ pWrtShell->ChgPageDesc(nCurIdx, aPageDesc);
+ }
+ OUString aBefore("aaaaaaaaa aaaaaaaaaa aa aa aa ");
+ OUString aDelete("delete eeeeeeeeeee ee eeeeeeeeeee ee eeeeee");
+ pWrtShell->Insert(aBefore + " " + aDelete
+ + " zz zzz zzzzzzzzz zzz zzzz zzzz zzzzzzzzz zzzzzz zzz zzzzzzzzzzz zzz");
+ // Enable redlining.
+ pDocShell->SetChangeRecording(/*bActivate=*/true);
+ // Hide redlining.
+ pWrtShell->StartAllAction();
+ pWrtShell->GetLayout()->SetHideRedlines(true);
+ pWrtShell->EndAllAction();
+
+ // When deleting content in the middle of the paragraph:
+ pWrtShell->SttEndDoc(/*bStt=*/true);
+ pWrtShell->Right(CRSR_SKIP_CHARS, /*bSelect=*/false, /*nCount=*/aBefore.getLength(),
+ /*bBasicCall=*/false);
+ pWrtShell->Right(CRSR_SKIP_CHARS, /*bSelect=*/true, /*nCount=*/aDelete.getLength(),
+ /*bBasicCall=*/false);
+ // Without the accompanying fix in place, this test would have crashed:
+ pWrtShell->Delete();
+
+ // Then make sure that the redline is created:
+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1),
+ pDoc->getIDocumentRedlineAccess().GetRedlineTable().size());
+}
+
CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/qa/core/uwriter.cxx b/sw/qa/core/uwriter.cxx
index 22cd289c7f27..ec18a86241bf 100644
--- a/sw/qa/core/uwriter.cxx
+++ b/sw/qa/core/uwriter.cxx
@@ -1149,7 +1149,7 @@ void SwDocTest::randomTest()
break;
case 2:
*pCrs->GetMark() = getRandomPosition(m_pDoc, 42);
- m_pDoc->getIDocumentContentOperations().DeleteAndJoin(*pCrs, !!getRand(1));
+ m_pDoc->getIDocumentContentOperations().DeleteAndJoin(*pCrs, SwDeleteFlags::Default, !!getRand(1));
break;
case 3:
default:
diff --git a/sw/qa/extras/odfexport/data/tdf137199.docx b/sw/qa/extras/odfexport/data/tdf137199.docx
new file mode 100644
index 000000000000..25b52977beca
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/tdf137199.docx
Binary files differ
diff --git a/sw/qa/extras/odfexport/odfexport.cxx b/sw/qa/extras/odfexport/odfexport.cxx
index 6a216a1b5e92..0be421765b51 100644
--- a/sw/qa/extras/odfexport/odfexport.cxx
+++ b/sw/qa/extras/odfexport/odfexport.cxx
@@ -112,6 +112,17 @@ DECLARE_ODFEXPORT_TEST(testMathObjectFlatExport, "2_MathType3.docx")
CPPUNIT_ASSERT_EQUAL(OUString(" size 12{2+2=4} {}"), formula2);
}
+DECLARE_ODFEXPORT_TEST(testTdf137199, "tdf137199.docx")
+{
+ CPPUNIT_ASSERT_EQUAL(OUString(">1<"), getProperty<OUString>(getParagraph(1), "ListLabelString"));
+
+ CPPUNIT_ASSERT_EQUAL(OUString("1)"), getProperty<OUString>(getParagraph(2), "ListLabelString"));
+
+ CPPUNIT_ASSERT_EQUAL(OUString("HELLO1WORLD!"), getProperty<OUString>(getParagraph(3), "ListLabelString"));
+
+ CPPUNIT_ASSERT_EQUAL(OUString("HELLO2WORLD!"), getProperty<OUString>(getParagraph(4), "ListLabelString"));
+}
+
static void testTdf43569_CheckIfFieldParse()
{
{
diff --git a/sw/qa/extras/odfimport/data/forcepoint108.fodt b/sw/qa/extras/odfimport/data/forcepoint108.fodt
new file mode 100644
index 000000000000..4328ea65f61d
--- /dev/null
+++ b/sw/qa/extras/odfimport/data/forcepoint108.fodt
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:meta><meta:initial-creator>ms </meta:initial-creator><meta:creation-date>2015-08-24T21:49:45.305718699</meta:creation-date><meta:document-statistic meta:table-count="0" meta:image-count="0" meta:object-count="0" meta:page-count="1" meta:paragraph-count="0" meta:word-count="0" meta:character-count="0" meta:non-whitespace-character-count="0"/><meta:generator>LibreOfficeDev/4.3.7.2$Linux_X86_64 LibreOffice_project/8a35821d8636a03b8bf4e15b48f59794652c68ba</meta:generator></office:meta>
+ <office:font-face-decls>
+ <style:font-face style:name="Lohit Devanagari1" svg:font-family="&apos;Lohit Devanagari&apos;"/>
+ <style:font-face style:name="Liberation Serif" svg:font-family="&apos;Liberation Serif&apos;" style:font-family-generic="roman" style:font-pitch="variable"/>
+ <style:font-face style:name="Liberation Sans" svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable"/>
+ <style:font-face style:name="Lohit Devanagari" svg:font-family="&apos;Lohit Devanagari&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Source Han Sans CN Regular" svg:font-family="&apos;Source Han Sans CN Regular&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:flow-with-text="false"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" style:writing-mode="lr-tb" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties style:use-window-font-color="true" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="de" fo:country="DE" style:letter-kerning="true" style:font-name-asian="Source Han Sans CN Regular" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/>
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="page"/>
+ <style:text-properties style:use-window-font-color="true" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="de" fo:country="DE" style:letter-kerning="true" style:font-name-asian="Source Han Sans CN Regular" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="collapsing"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text"/>
+ </office:styles>
+ <office:automatic-styles>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="21.001cm" fo:page-height="29.7cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:footnote-max-height="0cm">
+ <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+
+ <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Standard">
+ <style:text-properties officeooo:rsid="000b01fe" officeooo:paragraph-rsid="000b01fe"/>
+ </style:style>
+ <style:style style:name="P2" style:family="paragraph" style:parent-style-name="Standard">
+ <style:text-properties officeooo:rsid="000b01fe" officeooo:paragraph-rsid="000b01fe"/>
+ </style:style>
+ <style:style style:name="fr1" style:family="graphic" style:parent-style-name="Frame">
+ <style:graphic-properties style:vertical-pos="top" style:vertical-rel="paragraph-content" style:horizontal-pos="center" style:horizontal-rel="paragraph"/>
+ </style:style>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1"/>
+ </office:master-styles>
+ <office:body>
+ <office:text>
+
+ <text:tracked-changes>
+ <text:changed-region xml:id="ct58510944" text:id="ct58510944">
+ <text:deletion>
+ <office:change-info>
+ <dc:creator>ms </dc:creator>
+ <dc:date>2015-09-10T15:36:00</dc:date>
+ </office:change-info>
+ <text:p text:style-name="P1"><draw:frame draw:style-name="fr1" draw:name="Frame1" text:anchor-type="char" svg:width="2cm" draw:z-index="-0"><draw:text-box fo:min-height="1.158cm"><text:p text:style-name="P1">foo<text:change text:change-id="ct58510944"/></text:p>
+
+ </office:text>
+ </office:body>
diff --git a/sw/qa/extras/odfimport/odfimport.cxx b/sw/qa/extras/odfimport/odfimport.cxx
index 27e1809eaeff..c14a4ac60c87 100644
--- a/sw/qa/extras/odfimport/odfimport.cxx
+++ b/sw/qa/extras/odfimport/odfimport.cxx
@@ -39,10 +39,12 @@
typedef std::map<OUString, css::uno::Sequence< css::table::BorderLine> > AllBordersMap;
typedef std::pair<OUString, css::uno::Sequence< css::table::BorderLine> > StringSequencePair;
+char const DATA_DIRECTORY[] = "/sw/qa/extras/odfimport/data/";
+
class Test : public SwModelTestBase
{
public:
- Test() : SwModelTestBase("/sw/qa/extras/odfimport/data/", "writer8") {}
+ Test() : SwModelTestBase(DATA_DIRECTORY, "writer8") {}
};
DECLARE_ODFIMPORT_TEST(testEmptySvgFamilyName, "empty-svg-family-name.odt")
@@ -1000,5 +1002,13 @@ DECLARE_ODFIMPORT_TEST(testTdf133459, "tdf133459.odt")
CPPUNIT_ASSERT_EQUAL(OUString("QQ YYYY"), getProperty<OUString>(xFormat, "FormatString"));
}
+// just care that it doesn't crash/assert
+CPPUNIT_TEST_FIXTURE(Test, testForcepoint108)
+{
+ //load would assert because it fails to load entirely, like testMathMalformedXml
+ OUString aURL = m_directories.getURLFromSrc(DATA_DIRECTORY) + "forcepoint108.fodt";
+ mxComponent = mxDesktop->loadComponentFromURL(aURL, "_default", 0, {});
+}
+
CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx
index 8f457f89bc16..62ad331a8c64 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx
@@ -44,11 +44,11 @@ DECLARE_SW_EXPORT_TEST(testFlyInFly, "ooo39250-1-min.rtf", nullptr, Test)
// check that anchor of text frame is in other text frame
uno::Reference<text::XTextContent> const xAnchored(getShape(3), uno::UNO_QUERY);
CPPUNIT_ASSERT(xAnchored.is());
- CPPUNIT_ASSERT_EQUAL(OUString(""), uno::Reference<container::XNamed>(xAnchored, uno::UNO_QUERY_THROW)->getName());
+ CPPUNIT_ASSERT_EQUAL(OUString("Frame1")/*generated name*/, uno::Reference<container::XNamed>(xAnchored, uno::UNO_QUERY_THROW)->getName());
uno::Reference<text::XText> const xAnchorText(xAnchored->getAnchor()->getText());
uno::Reference<text::XTextFrame> const xAnchorFrame(xAnchorText, uno::UNO_QUERY);
CPPUNIT_ASSERT(xAnchorFrame.is());
- CPPUNIT_ASSERT_EQUAL(OUString("Frame2"), uno::Reference<container::XNamed>(xAnchorFrame, uno::UNO_QUERY_THROW)->getName());
+ CPPUNIT_ASSERT_EQUAL(OUString("Frame3"), uno::Reference<container::XNamed>(xAnchorFrame, uno::UNO_QUERY_THROW)->getName());
}
DECLARE_OOXMLEXPORT_TEST(testTdf125778_lostPageBreakTOX, "tdf125778_lostPageBreakTOX.docx")
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx
index 87795d6ba6c6..696e9c4ee3bd 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx
@@ -1140,11 +1140,11 @@ DECLARE_OOXMLEXPORT_TEST(tdf122201_editUnprotectedText, "tdf122201_editUnprotect
// check protected area
SwPaM aPaMPortected(aDocStart);
- CPPUNIT_ASSERT(aPaMPortected.HasReadonlySel(false));
+ CPPUNIT_ASSERT(aPaMPortected.HasReadonlySel(false, false));
// check unprotected area
SwPaM aPaMUnprotected(aDocEnd);
- CPPUNIT_ASSERT(!aPaMUnprotected.HasReadonlySel(false));
+ CPPUNIT_ASSERT(!aPaMUnprotected.HasReadonlySel(false, false));
}
DECLARE_OOXMLEXPORT_TEST(testSectionHeader, "sectionprot.odt")
diff --git a/sw/qa/extras/uiwriter/data/tdf133982.docx b/sw/qa/extras/uiwriter/data/tdf133982.docx
new file mode 100644
index 000000000000..d2e8573d15ac
--- /dev/null
+++ b/sw/qa/extras/uiwriter/data/tdf133982.docx
Binary files differ
diff --git a/sw/qa/extras/uiwriter/data/tdf134021.docx b/sw/qa/extras/uiwriter/data/tdf134021.docx
new file mode 100644
index 000000000000..cda11fbdf3ef
--- /dev/null
+++ b/sw/qa/extras/uiwriter/data/tdf134021.docx
Binary files differ
diff --git a/sw/qa/extras/uiwriter/data/tdf139843.odt b/sw/qa/extras/uiwriter/data/tdf139843.odt
new file mode 100644
index 000000000000..67a555799006
--- /dev/null
+++ b/sw/qa/extras/uiwriter/data/tdf139843.odt
Binary files differ
diff --git a/sw/qa/extras/uiwriter/data/tdf148868.odt b/sw/qa/extras/uiwriter/data/tdf148868.odt
new file mode 100644
index 000000000000..7ebf68a82ea3
--- /dev/null
+++ b/sw/qa/extras/uiwriter/data/tdf148868.odt
Binary files differ
diff --git a/sw/qa/extras/uiwriter/data2/tdf135061.odt b/sw/qa/extras/uiwriter/data2/tdf135061.odt
new file mode 100644
index 000000000000..19b3afa31e47
--- /dev/null
+++ b/sw/qa/extras/uiwriter/data2/tdf135061.odt
Binary files differ
diff --git a/sw/qa/extras/uiwriter/data2/tdf136452.fodt b/sw/qa/extras/uiwriter/data2/tdf136452.fodt
new file mode 100644
index 000000000000..74c3102aa781
--- /dev/null
+++ b/sw/qa/extras/uiwriter/data2/tdf136452.fodt
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:officeooo="http://openoffice.org/2009/office" xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rpt="http://openoffice.org/2005/report" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:xforms="http://www.w3.org/2002/xforms" office:version="1.3" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:font-face-decls>
+ <style:font-face style:name="Liberation Serif" svg:font-family="&apos;Liberation Serif&apos;" style:font-family-generic="roman" style:font-pitch="variable"/>
+ <style:font-face style:name="Lohit Devanagari1" svg:font-family="&apos;Lohit Devanagari&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Source Han Serif CN" svg:font-family="&apos;Source Han Serif CN&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:flow-with-text="false"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="de" fo:country="DE" style:letter-kerning="true" style:font-name-asian="Source Han Serif CN" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari1" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/>
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:orphans="2" fo:widows="2" fo:hyphenation-ladder-count="no-limit" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="page"/>
+ <style:text-properties style:use-window-font-color="true" loext:opacity="0%" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="de" fo:country="DE" style:letter-kerning="true" style:font-name-asian="Source Han Serif CN" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari1" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" loext:hyphenation-no-caps="false"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="collapsing"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text"/>
+ </office:styles>
+ <office:automatic-styles>
+ <style:style style:name="Sect1" style:family="section">
+ <style:section-properties fo:background-color="#3465a4" style:editable="false">
+ <style:columns fo:column-count="1" fo:column-gap="0cm"/>
+ <style:background-image/>
+ </style:section-properties>
+ </style:style>
+ <style:style style:name="Sect2" style:family="section">
+ <style:section-properties fo:background-color="#729fcf" style:editable="false">
+ <style:columns fo:column-count="1" fo:column-gap="0cm"/>
+ <style:background-image/>
+ </style:section-properties>
+ </style:style>
+ <style:style style:name="Sect3" style:family="section">
+ <style:section-properties fo:background-color="#3465a4" style:editable="false">
+ <style:columns fo:column-count="1" fo:column-gap="0cm"/>
+ <style:background-image/>
+ </style:section-properties>
+ </style:style>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="21.001cm" fo:page-height="29.7cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="20" style:layout-grid-base-height="0.706cm" style:layout-grid-ruby-height="0.353cm" style:layout-grid-mode="none" style:layout-grid-ruby-below="false" style:layout-grid-print="false" style:layout-grid-display="false" style:footnote-max-height="0cm" loext:margin-gutter="0cm">
+ <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+ <style:style style:name="dp1" style:family="drawing-page">
+ <style:drawing-page-properties draw:background-size="full"/>
+ </style:style>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1" draw:style-name="dp1"/>
+ </office:master-styles>
+ <office:body>
+ <office:text>
+ <text:p text:style-name="Standard">A</text:p>
+ <text:section text:style-name="Sect1" text:name="Section1">
+ <text:p text:style-name="Standard">B</text:p>
+ <text:p text:style-name="Standard">C</text:p>
+ </text:section>
+ <text:p text:style-name="Standard">D</text:p>
+ <text:section text:style-name="Sect2" text:name="Section2">
+ <text:p text:style-name="Standard">E</text:p>
+ <text:p text:style-name="Standard">F</text:p>
+ </text:section>
+ <text:p text:style-name="Standard">G</text:p>
+ <text:section text:style-name="Sect3" text:name="Section3">
+ <text:p text:style-name="Standard">H</text:p>
+ </text:section>
+ </office:text>
+ </office:body>
+</office:document>
diff --git a/sw/qa/extras/uiwriter/data2/tdf141175.odt b/sw/qa/extras/uiwriter/data2/tdf141175.odt
new file mode 100644
index 000000000000..3ccfa6b1a326
--- /dev/null
+++ b/sw/qa/extras/uiwriter/data2/tdf141175.odt
Binary files differ
diff --git a/sw/qa/extras/uiwriter/data2/try2.fodt b/sw/qa/extras/uiwriter/data2/try2.fodt
new file mode 100644
index 000000000000..624a75a85ea9
--- /dev/null
+++ b/sw/qa/extras/uiwriter/data2/try2.fodt
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rpt="http://openoffice.org/2005/report" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" office:version="1.3" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:font-face-decls>
+ <style:font-face style:name="Liberation Serif" svg:font-family="&apos;Liberation Serif&apos;" style:font-family-generic="roman" style:font-pitch="variable"/>
+ <style:font-face style:name="Lohit Devanagari" svg:font-family="&apos;Lohit Devanagari&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Source Han Serif CN" svg:font-family="&apos;Source Han Serif CN&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:flow-with-text="false"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties style:use-window-font-color="true" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="de" fo:country="DE" style:letter-kerning="true" style:font-name-asian="Source Han Serif CN" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/>
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:orphans="2" fo:widows="2" fo:hyphenation-ladder-count="no-limit" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="page"/>
+ <style:text-properties style:use-window-font-color="true" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="de" fo:country="DE" style:letter-kerning="true" style:font-name-asian="Source Han Serif CN" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="collapsing"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text"/>
+ </office:styles>
+ <office:automatic-styles>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="21.001cm" fo:page-height="29.7cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="20" style:layout-grid-base-height="0.706cm" style:layout-grid-ruby-height="0.353cm" style:layout-grid-mode="none" style:layout-grid-ruby-below="false" style:layout-grid-print="false" style:layout-grid-display="false" style:footnote-max-height="0cm">
+ <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1"/>
+ </office:master-styles>
+ <office:body>
+ <office:text>
+ <text:tracked-changes text:track-changes="false">
+ <text:changed-region xml:id="ct110725936" text:id="ct110725936">
+ <text:deletion>
+ <office:change-info>
+ <dc:creator>Unknown Author</dc:creator>
+ <dc:date>2020-10-12T19:26:19</dc:date>
+ </office:change-info>
+ </text:deletion>
+ </text:changed-region>
+ <text:changed-region xml:id="ct110726576" text:id="ct110726576">
+ <text:deletion>
+ <office:change-info>
+ <dc:creator>Unknown Author</dc:creator>
+ <dc:date>2020-10-12T19:26:26</dc:date>
+ </office:change-info>
+ </text:deletion>
+ </text:changed-region>
+ </text:tracked-changes>
+ <text:p text:style-name="Standard">A<text:change-start text:change-id="ct110725936"/></text:p>
+ <text:p text:style-name="Standard"><text:change-end text:change-id="ct110725936"/>xxxxxxxxxxxxxxxxxx<text:change-start text:change-id="ct110726576"/>x</text:p>
+ <text:p text:style-name="Standard">y<text:change-end text:change-id="ct110726576"/>y</text:p>
+ </office:text>
+ </office:body>
+</office:document>
diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx b/sw/qa/extras/uiwriter/uiwriter.cxx
index 180b9b29d137..761be1217244 100644
--- a/sw/qa/extras/uiwriter/uiwriter.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter.cxx
@@ -129,6 +129,7 @@
#include <iodetect.hxx>
#include <wrthtml.hxx>
#include <dbmgr.hxx>
+#include <txtfrm.hxx>
namespace
{
@@ -260,6 +261,7 @@ public:
void testUnicodeNotationToggle();
void testTextTableCellNames();
void testShapeAnchorUndo();
+ void testTdf127635();
void testDde();
void testDocModState();
void testTdf94804();
@@ -291,6 +293,7 @@ public:
void testTdf84695Tab();
void testTableStyleUndo();
void testRedlineCopyPaste();
+ void testTdf135260();
void testRedlineParam();
void testRedlineViewAuthor();
void testTdf91292();
@@ -469,6 +472,7 @@ public:
CPPUNIT_TEST(testUnicodeNotationToggle);
CPPUNIT_TEST(testTextTableCellNames);
CPPUNIT_TEST(testShapeAnchorUndo);
+ CPPUNIT_TEST(testTdf127635);
CPPUNIT_TEST(testDde);
CPPUNIT_TEST(testDocModState);
CPPUNIT_TEST(testTdf94804);
@@ -500,6 +504,7 @@ public:
CPPUNIT_TEST(testTdf84695Tab);
CPPUNIT_TEST(testTableStyleUndo);
CPPUNIT_TEST(testRedlineCopyPaste);
+ CPPUNIT_TEST(testTdf135260);
CPPUNIT_TEST(testRedlineParam);
CPPUNIT_TEST(testRedlineViewAuthor);
CPPUNIT_TEST(testTdf91292);
@@ -579,7 +584,7 @@ public:
CPPUNIT_TEST(testTdf59666);
CPPUNIT_TEST_SUITE_END();
-private:
+protected:
SwDoc* createDoc(const char* pName = nullptr);
std::unique_ptr<SwTextBlocks> readDOCXAutotext(const OUString& sFileName, bool bEmpty = false);
};
@@ -3820,7 +3825,7 @@ void SwUiWriterTest::testUndoDelAsCharTdf107512()
CPPUNIT_ASSERT(rIDCO.InsertGraphicObject(*pShell->GetCursor(), grf, &frameSet, &grfSet));
CPPUNIT_ASSERT_EQUAL(size_t(2), pDoc->GetFlyCount(FLYCNTTYPE_GRF));
SvxCharHiddenItem hidden(true, RES_CHRATR_HIDDEN);
- pShell->SelectText(1, 4);
+ pShell->SelectTextModel(1, 4);
rIDCO.InsertPoolItem(*pShell->GetCursor(), hidden);
// now we have "\1foo\1" with the "foo" hidden
CPPUNIT_ASSERT(pShell->GetCursor()->GetNode().GetTextNode()->GetTextAttrForCharAt(0, RES_TXTATR_FLYCNT));
@@ -3834,7 +3839,7 @@ void SwUiWriterTest::testUndoDelAsCharTdf107512()
query.ClearItem(RES_CHRATR_HIDDEN);
// delete from the start
- pShell->SelectText(0, 4);
+ pShell->SelectTextModel(0, 4);
rIDCO.DeleteAndJoin(*pShell->GetCursor());
CPPUNIT_ASSERT(pShell->GetCursor()->GetNode().GetTextNode()->GetTextAttrForCharAt(0, RES_TXTATR_FLYCNT));
CPPUNIT_ASSERT_EQUAL(size_t(1), pDoc->GetFlyCount(FLYCNTTYPE_GRF));
@@ -3877,7 +3882,7 @@ void SwUiWriterTest::testUndoDelAsCharTdf107512()
query.ClearItem(RES_CHRATR_HIDDEN);
// delete from the end
- pShell->SelectText(1, 5);
+ pShell->SelectTextModel(1, 5);
rIDCO.DeleteAndJoin(*pShell->GetCursor());
CPPUNIT_ASSERT(pShell->GetCursor()->GetNode().GetTextNode()->GetTextAttrForCharAt(0, RES_TXTATR_FLYCNT));
CPPUNIT_ASSERT_EQUAL(size_t(1), pDoc->GetFlyCount(FLYCNTTYPE_GRF));
@@ -4136,6 +4141,115 @@ static void lcl_dispatchCommand(const uno::Reference<lang::XComponent>& xCompone
xDispatchHelper->executeDispatch(xFrame, rCommand, OUString(), 0, rPropertyValues);
}
+CPPUNIT_TEST_FIXTURE(SwUiWriterTest, testTdf147220)
+{
+ SwDoc* pDoc = createDoc();
+ SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell();
+
+ pWrtShell->Insert(u"él");
+
+ // hide and enable
+ lcl_dispatchCommand(mxComponent, ".uno:ShowTrackedChanges", {});
+ lcl_dispatchCommand(mxComponent, ".uno:TrackChanges", {});
+ CPPUNIT_ASSERT(pDoc->getIDocumentRedlineAccess().IsRedlineOn());
+ CPPUNIT_ASSERT(
+ IDocumentRedlineAccess::IsShowChanges(pDoc->getIDocumentRedlineAccess().GetRedlineFlags()));
+ CPPUNIT_ASSERT(pWrtShell->GetLayout()->IsHideRedlines());
+
+ pWrtShell->GoStartSentence();
+ pWrtShell->SetMark();
+ pWrtShell->GoEndSentence();
+
+ // this did not remove the original text from the layout
+ pWrtShell->Replace(u"Él", false);
+
+ // currently the deleted text is before the replacement text, not sure if
+ // that is really required
+ CPPUNIT_ASSERT_EQUAL(OUString(u"élÉl"),
+ pWrtShell->GetCursor()->GetPoint()->nNode.GetNode().GetTextNode()->GetText());
+ CPPUNIT_ASSERT_EQUAL(OUString(u"Él"),
+ static_cast<SwTextFrame const*>(pWrtShell->GetCursor()->GetPoint()->nNode.GetNode().GetTextNode()->getLayoutFrame(nullptr))->GetText());
+
+ SwRedlineTable const& rRedlines(pDoc->getIDocumentRedlineAccess().GetRedlineTable());
+ CPPUNIT_ASSERT_EQUAL(SwRedlineTable::size_type(2), rRedlines.size());
+ CPPUNIT_ASSERT_EQUAL(RedlineType::Delete, rRedlines[0]->GetType());
+ CPPUNIT_ASSERT_EQUAL(OUString(u"él"), rRedlines[0]->GetText());
+ CPPUNIT_ASSERT_EQUAL(RedlineType::Insert, rRedlines[1]->GetType());
+ CPPUNIT_ASSERT_EQUAL(OUString(u"Él"), rRedlines[1]->GetText());
+}
+
+CPPUNIT_TEST_FIXTURE(SwUiWriterTest, testTdf135978)
+{
+ SwDoc* pDoc = createDoc();
+ SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell();
+
+ pWrtShell->Insert("foobar");
+ pWrtShell->SplitNode();
+ pWrtShell->Insert("bazquux");
+
+ CPPUNIT_ASSERT(pWrtShell->IsEndOfDoc());
+
+ SwFormatAnchor anchor(RndStdIds::FLY_AT_CHAR);
+ anchor.SetAnchor(pWrtShell->GetCursor()->GetPoint());
+ SfxItemSet flySet(pDoc->GetAttrPool(), svl::Items<RES_ANCHOR, RES_ANCHOR>{});
+ flySet.Put(anchor);
+ SwFlyFrameFormat const* pFly = dynamic_cast<SwFlyFrameFormat const*>(
+ pWrtShell->NewFlyFrame(flySet, /*bAnchValid=*/true));
+ CPPUNIT_ASSERT(pFly != nullptr);
+ CPPUNIT_ASSERT(pFly->GetFrame() != nullptr);
+ // move cursor back to body
+ pWrtShell->SttEndDoc(/*bStt=*/false);
+
+ // hide and enable
+ lcl_dispatchCommand(mxComponent, ".uno:ShowTrackedChanges", {});
+ lcl_dispatchCommand(mxComponent, ".uno:TrackChanges", {});
+
+ CPPUNIT_ASSERT(pDoc->getIDocumentRedlineAccess().IsRedlineOn());
+ CPPUNIT_ASSERT(
+ IDocumentRedlineAccess::IsShowChanges(pDoc->getIDocumentRedlineAccess().GetRedlineFlags()));
+ CPPUNIT_ASSERT(pWrtShell->GetLayout()->IsHideRedlines());
+
+ pWrtShell->Left(CRSR_SKIP_CHARS, /*bSelect=*/false, 4, /*bBasicCall=*/false);
+ pWrtShell->Left(CRSR_SKIP_CHARS, /*bSelect=*/true, 6, /*bBasicCall=*/false);
+ pWrtShell->Delete();
+
+ // now split
+ pWrtShell->SttEndDoc(/*bStt=*/true);
+ pWrtShell->SplitNode();
+ CPPUNIT_ASSERT(pFly->GetFrame() != nullptr);
+
+ // the problem was that undo removed the fly frame from the layout
+ pWrtShell->Undo();
+ CPPUNIT_ASSERT(pFly->GetFrame() != nullptr);
+
+ pWrtShell->Redo();
+ CPPUNIT_ASSERT(pFly->GetFrame() != nullptr);
+
+ pWrtShell->Undo();
+ CPPUNIT_ASSERT(pFly->GetFrame() != nullptr);
+}
+
+CPPUNIT_TEST_FIXTURE(SwUiWriterTest, testTdf139843)
+{
+ load(DATA_DIRECTORY, "tdf139843.odt");
+
+// int nPages = getPages();
+
+ lcl_dispatchCommand(mxComponent, ".uno:SelectAll", {});
+ Scheduler::ProcessEventsToIdle();
+
+ lcl_dispatchCommand(mxComponent, ".uno:Cut", {});
+ Scheduler::ProcessEventsToIdle();
+
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+
+ // Without the fix in place, this test would have crashed here
+ lcl_dispatchCommand(mxComponent, ".uno:Paste", {});
+ Scheduler::ProcessEventsToIdle();
+
+//FIXME? CPPUNIT_ASSERT_EQUAL(nPages, getPages());
+}
+
CPPUNIT_TEST_FIXTURE(SwUiWriterTest, testTdf134252)
{
load(DATA_DIRECTORY, "tdf134252.fodt");
@@ -4282,6 +4396,48 @@ void SwUiWriterTest::testDde()
#endif
}
+void SwUiWriterTest::testTdf127635()
+{
+ SwDoc* pDoc = createDoc();
+
+ SwXTextDocument* pXTextDocument = dynamic_cast<SwXTextDocument *>(mxComponent.get());
+ CPPUNIT_ASSERT(pXTextDocument);
+ pXTextDocument->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 'a', 0);
+ pXTextDocument->postKeyEvent(LOK_KEYEVENT_KEYINPUT, ' ', 0);
+ pXTextDocument->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 'b', 0);
+ Scheduler::ProcessEventsToIdle();
+
+ SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell();
+ pWrtShell->Left(CRSR_SKIP_CHARS, /*bSelect=*/false, 2, /*bBasicCall=*/false);
+
+ //Select 'a'
+ pWrtShell->Left(CRSR_SKIP_CHARS, /*bSelect=*/true, 1, /*bBasicCall=*/false);
+
+ // enable redlining
+ lcl_dispatchCommand(mxComponent, ".uno:TrackChanges", {});
+ // hide
+ lcl_dispatchCommand(mxComponent, ".uno:ShowTrackedChanges", {});
+
+ CPPUNIT_ASSERT_MESSAGE("redlining should be on",
+ pDoc->getIDocumentRedlineAccess().IsRedlineOn());
+ CPPUNIT_ASSERT(pWrtShell->GetLayout()->IsHideRedlines());
+
+ pXTextDocument->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 'c', 0);
+ pXTextDocument->postKeyEvent(LOK_KEYEVENT_KEYINPUT, ' ', 0);
+ pXTextDocument->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 'd', 0);
+ Scheduler::ProcessEventsToIdle();
+
+ SwEditShell* const pEditShell(pDoc->GetEditShell());
+ // accept all redlines
+ while(pEditShell->GetRedlineCount())
+ pEditShell->AcceptRedline(0);
+
+ // Without the fix in place, this test would have failed with
+ // - Expected: C d b
+ // - Actual : Cd b
+ CPPUNIT_ASSERT_EQUAL(OUString("C d b"), getParagraph(1)->getString());
+}
+
CPPUNIT_TEST_FIXTURE(SwUiWriterTest, testTdf132160)
{
load(DATA_DIRECTORY, "tdf132160.odt");
@@ -5682,6 +5838,32 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest, testTdf134436)
CPPUNIT_ASSERT_EQUAL(OUString(""), pWrtShell->GetCursor()->GetText());
}
+void SwUiWriterTest::testTdf135260()
+{
+ SwDoc* pDoc = createDoc();
+ SwDocShell* pDocShell = pDoc->GetDocShell();
+ SwWrtShell* pWrtShell = pDocShell->GetWrtShell();
+ pWrtShell->Insert("test");
+
+ // Turn on track changes
+ uno::Reference<beans::XPropertySet> xPropertySet(mxComponent, uno::UNO_QUERY);
+ xPropertySet->setPropertyValue("RecordChanges", uno::makeAny(true));
+
+ for(int i = 0; i < 4; i++) {
+ pWrtShell->DelLeft();
+ }
+
+ SwEditShell* const pEditShell(pDoc->GetEditShell());
+ // accept all redlines
+ while(pEditShell->GetRedlineCount())
+ pEditShell->AcceptRedline(0);
+
+ // Without the fix in place, this test would have failed with
+ // - Expected:
+ // - Actual : tes
+ CPPUNIT_ASSERT_EQUAL(OUString(""), getParagraph(1)->getString());
+}
+
void SwUiWriterTest::testRedlineParam()
{
// Create a document with minimal content.
@@ -7572,6 +7754,78 @@ void SwUiWriterTest::testTdf38394()
CPPUNIT_ASSERT_EQUAL(sReplaced, static_cast<SwTextNode*>(pDoc->GetNodes()[nIndex])->GetText());
}
+CPPUNIT_TEST_FIXTURE(SwUiWriterTest, testTdf148868)
+{
+ SwDoc* pDoc = createDoc("tdf148868.odt");
+ SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell();
+
+ CPPUNIT_ASSERT_EQUAL(1, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+
+ pWrtShell->EndPg(/*bSelect=*/false);
+ pWrtShell->Left(CRSR_SKIP_CHARS, /*bSelect=*/true, 5, /*bBasicCall=*/false);
+ pWrtShell->Insert("X");
+
+ // Without the fix in place, this test would have failed with
+ // - Expected: 1
+ // - Actual : 0
+ CPPUNIT_ASSERT_EQUAL(1, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+}
+
+CPPUNIT_TEST_FIXTURE(SwUiWriterTest, testTdf134021)
+{
+ load(DATA_DIRECTORY, "tdf134021.docx");
+
+ SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get());
+ CPPUNIT_ASSERT(pTextDoc);
+
+ uno::Reference<text::XTextTablesSupplier> xTextTablesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xIndexAccess(xTextTablesSupplier->getTextTables(),
+ uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
+ CPPUNIT_ASSERT_EQUAL(12, getPages());
+
+ lcl_dispatchCommand(mxComponent, ".uno:JumpToNextTable", {});
+
+ lcl_dispatchCommand(mxComponent, ".uno:DeleteTable", {});
+ Scheduler::ProcessEventsToIdle();
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), xIndexAccess->getCount());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+
+ // Without the fix in place, it would have crashed here
+ lcl_dispatchCommand(mxComponent, ".uno:Undo", {});
+ Scheduler::ProcessEventsToIdle();
+
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
+ CPPUNIT_ASSERT_EQUAL(12, getPages());
+}
+
+CPPUNIT_TEST_FIXTURE(SwUiWriterTest, testTdf133982)
+{
+ load(DATA_DIRECTORY, "tdf133982.docx");
+
+ SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get());
+ CPPUNIT_ASSERT(pTextDoc);
+
+ uno::Reference<text::XTextTablesSupplier> xTextTablesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xIndexAccess(xTextTablesSupplier->getTextTables(),
+ uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xIndexAccess->getCount());
+
+ //Use selectAll 3 times in a row
+ lcl_dispatchCommand(mxComponent, ".uno:SelectAll", {});
+ lcl_dispatchCommand(mxComponent, ".uno:SelectAll", {});
+ lcl_dispatchCommand(mxComponent, ".uno:SelectAll", {});
+
+ //Without the fix in place, it would have crashed here
+ lcl_dispatchCommand(mxComponent, ".uno:Cut", {});
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), xIndexAccess->getCount());
+
+ lcl_dispatchCommand(mxComponent, ".uno:Paste", {});
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xIndexAccess->getCount());
+}
+
void SwUiWriterTest::testTdf59666()
{
SwDoc* pDoc = createDoc();
diff --git a/sw/qa/extras/uiwriter/uiwriter2.cxx b/sw/qa/extras/uiwriter/uiwriter2.cxx
index 1825d3483148..f2a358d46b25 100644
--- a/sw/qa/extras/uiwriter/uiwriter2.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter2.cxx
@@ -28,6 +28,7 @@
#include <wrtsh.hxx>
#include <IDocumentRedlineAccess.hxx>
#include <flyfrm.hxx>
+#include <pagefrm.hxx>
#include <fmtanchr.hxx>
#include <UndoManager.hxx>
#include <sortedobjs.hxx>
@@ -40,6 +41,9 @@
#include <svl/stritem.hxx>
#include <svx/svxids.hrc>
#include <comphelper/lok.hxx>
+#include <comphelper/scopeguard.hxx>
+#include <editeng/acorrcfg.hxx>
+#include <swacorr.hxx>
#include <txtfrm.hxx>
#include <redline.hxx>
#include <view.hxx>
@@ -346,6 +350,305 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testRedlineInHiddenSection)
CPPUNIT_ASSERT(pNode->GetNodes()[pNode->GetIndex() + 4]->IsEndNode());
}
+CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testRedlineSplitContentNode)
+{
+ load(DATA_DIRECTORY, "try2.fodt");
+ SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get());
+ SwWrtShell* const pWrtShell = pTextDoc->GetDocShell()->GetWrtShell();
+
+ SwViewOption aViewOptions(*pWrtShell->GetViewOptions());
+ // these are required so that IsBlank() is true
+ aViewOptions.SetBlank(true);
+ aViewOptions.SetViewMetaChars(true);
+ pWrtShell->ApplyViewOptions(aViewOptions);
+
+ // enable redlining
+ lcl_dispatchCommand(mxComponent, ".uno:TrackChanges", {});
+ // hide
+ lcl_dispatchCommand(mxComponent, ".uno:ShowTrackedChanges", {});
+
+ SwDocShell* const pDocShell = pTextDoc->GetDocShell();
+ SwDoc* const pDoc = pDocShell->GetDoc();
+ CPPUNIT_ASSERT_MESSAGE("redlining should be on",
+ pDoc->getIDocumentRedlineAccess().IsRedlineOn());
+ CPPUNIT_ASSERT_MESSAGE(
+ "redlines should be visible",
+ IDocumentRedlineAccess::IsShowChanges(pDoc->getIDocumentRedlineAccess().GetRedlineFlags()));
+
+ sw::UndoManager& rUndoManager = pDoc->GetUndoManager();
+
+ pWrtShell->CalcLayout();
+ pWrtShell->Right(CRSR_SKIP_CHARS, /*bSelect=*/false, 18, /*bBasicCall=*/false);
+ pWrtShell->SplitNode(true);
+ rUndoManager.Undo();
+ // crashed
+ pWrtShell->SplitNode(true);
+ rUndoManager.Undo();
+ rUndoManager.Redo();
+ rUndoManager.Undo();
+ rUndoManager.Redo();
+ rUndoManager.Undo();
+ pWrtShell->SplitNode(true);
+ rUndoManager.Undo();
+}
+
+CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testTdf137318)
+{
+ SwDoc* const pDoc = createDoc();
+ SwWrtShell* const pWrtShell = pDoc->GetDocShell()->GetWrtShell();
+
+ pWrtShell->Insert("A");
+
+ // enable redlining
+ lcl_dispatchCommand(mxComponent, ".uno:TrackChanges", {});
+ // hide
+ lcl_dispatchCommand(mxComponent, ".uno:ShowTrackedChanges", {});
+
+ CPPUNIT_ASSERT_MESSAGE("redlining should be on",
+ pDoc->getIDocumentRedlineAccess().IsRedlineOn());
+ CPPUNIT_ASSERT_MESSAGE(
+ "redlines should be visible",
+ IDocumentRedlineAccess::IsShowChanges(pDoc->getIDocumentRedlineAccess().GetRedlineFlags()));
+ CPPUNIT_ASSERT(pWrtShell->GetLayout()->IsHideRedlines());
+
+ pWrtShell->DelLine();
+ pWrtShell->StartOfSection(false);
+ pWrtShell->SplitNode(true);
+ pWrtShell->SplitNode(true);
+
+ xmlDocPtr pXmlDoc = parseLayoutDump();
+
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt", 3);
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/Text", 0);
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[2]/Text", 0);
+ // not sure why there's an empty text portion here, but it's not a problem
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[3]/Text", 1);
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[3]/Text[1]", "nType", "PortionType::Para");
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[3]/Text[1][@Portion]", 0);
+
+ pWrtShell->Undo();
+
+ // the problem was that here the "A" showed up again
+ discardDumpedLayout();
+ pXmlDoc = parseLayoutDump();
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt", 2);
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/Text", 0);
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[2]/Text", 1);
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[2]/Text[1]", "nType", "PortionType::Para");
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[2]/Text[1][@Portion]", 0);
+
+ pWrtShell->Undo();
+
+ discardDumpedLayout();
+ pXmlDoc = parseLayoutDump();
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt", 1);
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/Text", 1);
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/Text[1]", "nType", "PortionType::Para");
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/Text[1][@Portion]", 0);
+
+ pWrtShell->Undo();
+
+ // now the "A" is no longer deleted
+ discardDumpedLayout();
+ pXmlDoc = parseLayoutDump();
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt", 1);
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/Text", 1);
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/Text[1]", "nType", "PortionType::Para");
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/Text[1][@Portion]", 1);
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/Text[1]", "nLength", "1");
+
+ assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/Text[1]", "Portion", "A");
+}
+
+CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testTdf136452)
+{
+ SwDoc* const pDoc(createDoc("tdf136452.fodt"));
+
+ auto const nNodes(pDoc->GetNodes().Count());
+
+ SwWrtShell* const pWrtShell(pDoc->GetDocShell()->GetWrtShell());
+
+ // first deletion spanning 2 sections
+ pWrtShell->SttEndDoc(false);
+ pWrtShell->SetMark();
+ pWrtShell->Up(true, 2);
+ pWrtShell->Delete();
+
+ // 2 paragraphs deleted, last section is gone
+ CPPUNIT_ASSERT_EQUAL(nNodes - 4, pDoc->GetNodes().Count());
+
+ // second deletion spanning 2 sections
+ pWrtShell->SetMark();
+ pWrtShell->Up(true, 3);
+ pWrtShell->Delete();
+
+ // 3 paragraphs deleted, 2nd section is gone
+ CPPUNIT_ASSERT_EQUAL(nNodes - 9, pDoc->GetNodes().Count());
+
+ pWrtShell->Undo();
+
+ // 2 paragraphs deleted, last section is gone
+ CPPUNIT_ASSERT_EQUAL(nNodes - 4, pDoc->GetNodes().Count());
+
+ // this crashed
+ pWrtShell->Undo();
+
+ CPPUNIT_ASSERT_EQUAL(nNodes, pDoc->GetNodes().Count());
+
+ pWrtShell->Redo();
+
+ // 2 paragraphs deleted, last section is gone
+ CPPUNIT_ASSERT_EQUAL(nNodes - 4, pDoc->GetNodes().Count());
+
+ pWrtShell->Redo();
+
+ // 3 paragraphs deleted, 2nd section is gone
+ CPPUNIT_ASSERT_EQUAL(nNodes - 9, pDoc->GetNodes().Count());
+}
+
+CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testTdf137245)
+{
+ SwDoc* const pDoc(createDoc());
+ SwWrtShell* const pWrtShell = pDoc->GetDocShell()->GetWrtShell();
+ SwAutoCorrect corr(*SvxAutoCorrCfg::Get().GetAutoCorrect());
+ corr.GetSwFlags().bSetBorder = true;
+ // sigh, it's a global... err i mean Singleton design pattern *eyeroll*
+ SvxSwAutoFormatFlags flags(*SwEditShell::GetAutoFormatFlags());
+ comphelper::ScopeGuard const g([=]() { SwEditShell::SetAutoFormatFlags(&flags); });
+ flags.bSetBorder = true;
+ SwEditShell::SetAutoFormatFlags(&flags);
+
+ {
+ SwFormatAnchor anchor(RndStdIds::FLY_AT_PARA);
+ anchor.SetAnchor(pWrtShell->GetCursor()->GetPoint());
+ SfxItemSet flySet(pDoc->GetAttrPool(),
+ svl::Items<RES_FRM_SIZE, RES_FRM_SIZE, RES_ANCHOR, RES_ANCHOR>{});
+ flySet.Put(anchor);
+ SwFormatFrameSize size(ATT_MIN_SIZE, 1000, 1000);
+ flySet.Put(size); // set a size, else we get 1 char per line...
+ SwFrameFormat const* pFly = pWrtShell->NewFlyFrame(flySet, /*bAnchValid=*/true);
+ CPPUNIT_ASSERT(pFly != nullptr);
+ }
+ {
+ SwFormatAnchor anchor(RndStdIds::FLY_AT_CHAR);
+ anchor.SetAnchor(pWrtShell->GetCursor()->GetPoint());
+ SfxItemSet flySet(pDoc->GetAttrPool(),
+ svl::Items<RES_FRM_SIZE, RES_FRM_SIZE, RES_ANCHOR, RES_ANCHOR>{});
+ flySet.Put(anchor);
+ SwFormatFrameSize size(ATT_MIN_SIZE, 1000, 1000);
+ flySet.Put(size); // set a size, else we get 1 char per line...
+ SwFrameFormat const* pFly = pWrtShell->NewFlyFrame(flySet, /*bAnchValid=*/true);
+ CPPUNIT_ASSERT(pFly != nullptr);
+ }
+ // move cursor back to body
+ pWrtShell->SttEndDoc(false);
+ // keep first paragraph empty so that its flys may be deleted too
+ //pWrtShell->Insert("abc");
+ pWrtShell->SplitNode(false);
+
+ {
+ SwFormatAnchor anchor(RndStdIds::FLY_AT_PARA);
+ anchor.SetAnchor(pWrtShell->GetCursor()->GetPoint());
+ SfxItemSet flySet(pDoc->GetAttrPool(),
+ svl::Items<RES_FRM_SIZE, RES_FRM_SIZE, RES_ANCHOR, RES_ANCHOR>{});
+ flySet.Put(anchor);
+ SwFormatFrameSize size(ATT_MIN_SIZE, 1000, 1000);
+ flySet.Put(size); // set a size, else we get 1 char per line...
+ SwFrameFormat const* pFly = pWrtShell->NewFlyFrame(flySet, /*bAnchValid=*/true);
+ CPPUNIT_ASSERT(pFly != nullptr);
+ }
+ {
+ SwFormatAnchor anchor(RndStdIds::FLY_AT_CHAR);
+ anchor.SetAnchor(pWrtShell->GetCursor()->GetPoint());
+ SfxItemSet flySet(pDoc->GetAttrPool(),
+ svl::Items<RES_FRM_SIZE, RES_FRM_SIZE, RES_ANCHOR, RES_ANCHOR>{});
+ flySet.Put(anchor);
+ SwFormatFrameSize size(ATT_MIN_SIZE, 1000, 1000);
+ flySet.Put(size); // set a size, else we get 1 char per line...
+ SwFrameFormat const* pFly = pWrtShell->NewFlyFrame(flySet, /*bAnchValid=*/true);
+ CPPUNIT_ASSERT(pFly != nullptr);
+ }
+
+ const SwFrameFormats& rFormats = *pDoc->GetSpzFrameFormats();
+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(4), rFormats.size());
+
+ // move cursor back to body
+ pWrtShell->SttEndDoc(false);
+ pWrtShell->Insert("---");
+ pWrtShell->SplitNode(true);
+
+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(4), rFormats.size());
+
+ // check that the AutoFormat did something
+ pWrtShell->SttEndDoc(true);
+ SfxItemSet set{ pDoc->GetAttrPool(), svl::Items<RES_BOX, RES_BOX>{} };
+ pWrtShell->GetCurParAttr(set);
+ CPPUNIT_ASSERT_EQUAL(SfxItemState::SET, set.GetItemState(RES_BOX, false));
+}
+
+CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testTdf139922)
+{
+ SwDoc* const pDoc = createDoc();
+ SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get());
+
+ pTextDoc->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_RETURN);
+ Scheduler::ProcessEventsToIdle();
+
+ SwWrtShell* const pWrtSh = pDoc->GetDocShell()->GetWrtShell();
+ CPPUNIT_ASSERT(pWrtSh);
+
+ pWrtSh->Insert("this _is_ a SEntence. this _is_ a SEntence.");
+
+ CPPUNIT_ASSERT_EQUAL(OUString("this _is_ a SEntence. this _is_ a SEntence."),
+ getParagraph(2)->getString());
+
+ //apply autocorrect StartAutoCorrect
+ lcl_dispatchCommand(mxComponent, ".uno:AutoFormatApply", {});
+ Scheduler::ProcessEventsToIdle();
+
+ // Without the fix in place, this test would have failed with
+ // - Expected: This is a Sentence. This is a Sentence.
+ // - Actual : this is a Sentence. This is a Sentence.
+ CPPUNIT_ASSERT_EQUAL(OUString("This is a Sentence. This is a Sentence."),
+ getParagraph(2)->getString());
+}
+
+CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testTdf135061)
+{
+ createDoc("tdf135061.odt");
+
+ uno::Reference<text::XTextTablesSupplier> xTextTablesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xIndexAccess(xTextTablesSupplier->getTextTables(),
+ uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
+ CPPUNIT_ASSERT_EQUAL(4, getShapes());
+
+ lcl_dispatchCommand(mxComponent, ".uno:SelectAll", {});
+ Scheduler::ProcessEventsToIdle();
+
+ lcl_dispatchCommand(mxComponent, ".uno:Copy", {});
+ Scheduler::ProcessEventsToIdle();
+
+ for (sal_Int32 i = 0; i < 5; ++i)
+ {
+ lcl_dispatchCommand(mxComponent, ".uno:Paste", {});
+ Scheduler::ProcessEventsToIdle();
+ }
+
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(6), xIndexAccess->getCount());
+ CPPUNIT_ASSERT_EQUAL(20, getShapes());
+
+ for (sal_Int32 i = 0; i < 5; ++i)
+ {
+ // Without the fix in place, this test would have crashed here
+ lcl_dispatchCommand(mxComponent, ".uno:Undo", {});
+ Scheduler::ProcessEventsToIdle();
+ }
+
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
+ CPPUNIT_ASSERT_EQUAL(4, getShapes());
+}
+
CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testTdf132236)
{
load(DATA_DIRECTORY, "tdf132236.odt");
@@ -518,6 +821,238 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testTdf131912)
CPPUNIT_ASSERT_EQUAL(OUString("foo"), pWrtShell->GetCursor()->GetText());
}
+CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testTdf140007)
+{
+ typedef sal_uLong SwNodeOffset;
+ SwDoc* const pDoc = createDoc();
+ SwWrtShell* const pWrtShell = pDoc->GetDocShell()->GetWrtShell();
+
+ pWrtShell->Insert("foo");
+ pWrtShell->SplitNode();
+ pWrtShell->Insert("bar");
+ pWrtShell->SplitNode();
+ pWrtShell->Insert("baz");
+ CPPUNIT_ASSERT_EQUAL(sal_uLong(13), pDoc->GetNodes().Count());
+ CPPUNIT_ASSERT_EQUAL(OUString("foo"),
+ pDoc->GetNodes()[SwNodeOffset(9)]->GetTextNode()->GetText());
+ CPPUNIT_ASSERT_EQUAL(OUString("bar"),
+ pDoc->GetNodes()[SwNodeOffset(10)]->GetTextNode()->GetText());
+ CPPUNIT_ASSERT_EQUAL(OUString("baz"),
+ pDoc->GetNodes()[SwNodeOffset(11)]->GetTextNode()->GetText());
+
+ pWrtShell->SttEndDoc(true);
+ pWrtShell->EndPara(false);
+ pWrtShell->Right(CRSR_SKIP_CHARS, /*bSelect=*/true, 1, /*bBasicCall=*/false);
+ pWrtShell->Replace(" ", true);
+ CPPUNIT_ASSERT_EQUAL(SwNodeOffset(12), pDoc->GetNodes().Count());
+ CPPUNIT_ASSERT_EQUAL(OUString("foo bar"),
+ pDoc->GetNodes()[SwNodeOffset(9)]->GetTextNode()->GetText());
+ CPPUNIT_ASSERT_EQUAL(OUString("baz"),
+ pDoc->GetNodes()[SwNodeOffset(10)]->GetTextNode()->GetText());
+
+ pWrtShell->SttEndDoc(true);
+ pWrtShell->EndPara(false);
+ pWrtShell->Right(CRSR_SKIP_CHARS, /*bSelect=*/true, 1, /*bBasicCall=*/false);
+ pWrtShell->Replace(" ", true);
+ CPPUNIT_ASSERT_EQUAL(OUString("foo bar baz"),
+ pDoc->GetNodes()[SwNodeOffset(9)]->GetTextNode()->GetText());
+ CPPUNIT_ASSERT_EQUAL(SwNodeOffset(11), pDoc->GetNodes().Count());
+
+ pWrtShell->Undo();
+
+ CPPUNIT_ASSERT_EQUAL(SwNodeOffset(12), pDoc->GetNodes().Count());
+ CPPUNIT_ASSERT_EQUAL(OUString("foo bar"),
+ pDoc->GetNodes()[SwNodeOffset(9)]->GetTextNode()->GetText());
+ CPPUNIT_ASSERT_EQUAL(OUString("baz"),
+ pDoc->GetNodes()[SwNodeOffset(10)]->GetTextNode()->GetText());
+
+ pWrtShell->Undo();
+
+ CPPUNIT_ASSERT_EQUAL(SwNodeOffset(13), pDoc->GetNodes().Count());
+ CPPUNIT_ASSERT_EQUAL(OUString("foo"),
+ pDoc->GetNodes()[SwNodeOffset(9)]->GetTextNode()->GetText());
+ CPPUNIT_ASSERT_EQUAL(OUString("bar"),
+ pDoc->GetNodes()[SwNodeOffset(10)]->GetTextNode()->GetText());
+ CPPUNIT_ASSERT_EQUAL(OUString("baz"),
+ pDoc->GetNodes()[SwNodeOffset(11)]->GetTextNode()->GetText());
+
+ pWrtShell->Redo();
+
+ CPPUNIT_ASSERT_EQUAL(SwNodeOffset(12), pDoc->GetNodes().Count());
+ CPPUNIT_ASSERT_EQUAL(OUString("foo bar"),
+ pDoc->GetNodes()[SwNodeOffset(9)]->GetTextNode()->GetText());
+ CPPUNIT_ASSERT_EQUAL(OUString("baz"),
+ pDoc->GetNodes()[SwNodeOffset(10)]->GetTextNode()->GetText());
+
+ pWrtShell->Redo();
+
+ CPPUNIT_ASSERT_EQUAL(OUString("foo bar baz"),
+ pDoc->GetNodes()[SwNodeOffset(9)]->GetTextNode()->GetText());
+ CPPUNIT_ASSERT_EQUAL(SwNodeOffset(11), pDoc->GetNodes().Count());
+
+ pWrtShell->Undo();
+
+ CPPUNIT_ASSERT_EQUAL(SwNodeOffset(12), pDoc->GetNodes().Count());
+ CPPUNIT_ASSERT_EQUAL(OUString("foo bar"),
+ pDoc->GetNodes()[SwNodeOffset(9)]->GetTextNode()->GetText());
+ CPPUNIT_ASSERT_EQUAL(OUString("baz"),
+ pDoc->GetNodes()[SwNodeOffset(10)]->GetTextNode()->GetText());
+
+ pWrtShell->Undo();
+
+ CPPUNIT_ASSERT_EQUAL(SwNodeOffset(13), pDoc->GetNodes().Count());
+ CPPUNIT_ASSERT_EQUAL(OUString("foo"),
+ pDoc->GetNodes()[SwNodeOffset(9)]->GetTextNode()->GetText());
+ CPPUNIT_ASSERT_EQUAL(OUString("bar"),
+ pDoc->GetNodes()[SwNodeOffset(10)]->GetTextNode()->GetText());
+ CPPUNIT_ASSERT_EQUAL(OUString("baz"),
+ pDoc->GetNodes()[SwNodeOffset(11)]->GetTextNode()->GetText());
+}
+
+CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testTdf139982)
+{
+ SwDoc* const pDoc = createDoc();
+ SwWrtShell* const pWrtShell = pDoc->GetDocShell()->GetWrtShell();
+
+ // turn on redlining and show changes
+ pDoc->getIDocumentRedlineAccess().SetRedlineFlags(RedlineFlags::On | RedlineFlags::ShowDelete
+ | RedlineFlags::ShowInsert);
+ CPPUNIT_ASSERT_MESSAGE("redlining should be on",
+ pDoc->getIDocumentRedlineAccess().IsRedlineOn());
+ CPPUNIT_ASSERT_MESSAGE(
+ "redlines should be visible",
+ IDocumentRedlineAccess::IsShowChanges(pDoc->getIDocumentRedlineAccess().GetRedlineFlags()));
+
+ pWrtShell->Insert("helloo");
+
+ pWrtShell->Left(CRSR_SKIP_CHARS, /*bSelect=*/false, 1, /*bBasicCall=*/false);
+ {
+ SwFormatAnchor anchor(RndStdIds::FLY_AT_CHAR);
+ anchor.SetAnchor(pWrtShell->GetCursor()->GetPoint());
+ SfxItemSet flySet(pDoc->GetAttrPool(), svl::Items<RES_ANCHOR, RES_ANCHOR>{});
+ flySet.Put(anchor);
+ SwFrameFormat const* pFly = pWrtShell->NewFlyFrame(flySet, /*bAnchValid=*/true);
+ CPPUNIT_ASSERT(pFly != nullptr);
+ }
+
+ pWrtShell->SttEndDoc(true);
+ pWrtShell->EndPara(/*bSelect=*/true);
+
+ CPPUNIT_ASSERT_EQUAL(size_t(1), pWrtShell->GetFlyCount(FLYCNTTYPE_FRM));
+
+ pWrtShell->Replace("hello", true);
+
+ // the problem was that a redline delete with the same author as redline
+ // insert has its text deleted immediately, including anchored flys.
+ CPPUNIT_ASSERT_EQUAL(size_t(1), pWrtShell->GetFlyCount(FLYCNTTYPE_FRM));
+
+ pWrtShell->Undo();
+
+ CPPUNIT_ASSERT_EQUAL(size_t(1), pWrtShell->GetFlyCount(FLYCNTTYPE_FRM));
+
+ pWrtShell->Redo();
+
+ CPPUNIT_ASSERT_EQUAL(size_t(1), pWrtShell->GetFlyCount(FLYCNTTYPE_FRM));
+
+ pWrtShell->Undo();
+
+ CPPUNIT_ASSERT_EQUAL(size_t(1), pWrtShell->GetFlyCount(FLYCNTTYPE_FRM));
+}
+
+CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testTdf135976)
+{
+ SwDoc* const pDoc = createDoc();
+ SwWrtShell* const pWrtShell = pDoc->GetDocShell()->GetWrtShell();
+
+ pWrtShell->Insert("foobar");
+
+ pWrtShell->Left(CRSR_SKIP_CHARS, /*bSelect=*/false, 2, /*bBasicCall=*/false);
+ SwFormatAnchor anchor(RndStdIds::FLY_AT_CHAR);
+ anchor.SetAnchor(pWrtShell->GetCursor()->GetPoint());
+ SfxItemSet flySet(pDoc->GetAttrPool(), svl::Items<RES_ANCHOR, RES_ANCHOR>{});
+ flySet.Put(anchor);
+ SwFrameFormat const* pFly = pWrtShell->NewFlyFrame(flySet, /*bAnchValid=*/true);
+ CPPUNIT_ASSERT(pFly != nullptr);
+
+ // turn on redlining and show changes
+ pDoc->getIDocumentRedlineAccess().SetRedlineFlags(RedlineFlags::On | RedlineFlags::ShowDelete
+ | RedlineFlags::ShowInsert);
+ lcl_dispatchCommand(mxComponent, ".uno:ShowTrackedChanges", {});
+ CPPUNIT_ASSERT_MESSAGE("redlining should be on",
+ pDoc->getIDocumentRedlineAccess().IsRedlineOn());
+ CPPUNIT_ASSERT_MESSAGE(
+ "redlines should be visible",
+ IDocumentRedlineAccess::IsShowChanges(pDoc->getIDocumentRedlineAccess().GetRedlineFlags()));
+ CPPUNIT_ASSERT(pWrtShell->GetLayout()->IsHideRedlines());
+
+ CPPUNIT_ASSERT_EQUAL(size_t(1), pWrtShell->GetFlyCount(FLYCNTTYPE_FRM));
+ CPPUNIT_ASSERT_EQUAL(size_t(1), pWrtShell->GetLayout()->GetLastPage()->GetSortedObjs()->size());
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(4), pFly->GetAnchor().GetContentAnchor()->nContent.GetIndex());
+
+ pWrtShell->UnSelectFrame();
+ pWrtShell->SttEndDoc(/*bStart=*/false);
+ pWrtShell->Left(CRSR_SKIP_CHARS, /*bSelect=*/false, 1, /*bBasicCall=*/false);
+
+ pWrtShell->DelLeft();
+ pWrtShell->DelLeft();
+
+ CPPUNIT_ASSERT_EQUAL(size_t(1), pWrtShell->GetFlyCount(FLYCNTTYPE_FRM));
+ // the problem was that the fly was deleted from the layout
+ CPPUNIT_ASSERT_EQUAL(size_t(1), pWrtShell->GetLayout()->GetLastPage()->GetSortedObjs()->size());
+ // check that the anchor was moved outside the redline
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(3), pFly->GetAnchor().GetContentAnchor()->nContent.GetIndex());
+
+ pWrtShell->Undo(2);
+
+ CPPUNIT_ASSERT_EQUAL(size_t(1), pWrtShell->GetFlyCount(FLYCNTTYPE_FRM));
+ CPPUNIT_ASSERT_EQUAL(size_t(1), pWrtShell->GetLayout()->GetLastPage()->GetSortedObjs()->size());
+ // check that the anchor was restored
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(4), pFly->GetAnchor().GetContentAnchor()->nContent.GetIndex());
+
+ pWrtShell->Redo(2);
+
+ CPPUNIT_ASSERT_EQUAL(size_t(1), pWrtShell->GetFlyCount(FLYCNTTYPE_FRM));
+ CPPUNIT_ASSERT_EQUAL(size_t(1), pWrtShell->GetLayout()->GetLastPage()->GetSortedObjs()->size());
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(3), pFly->GetAnchor().GetContentAnchor()->nContent.GetIndex());
+
+ pWrtShell->Undo(2);
+
+ CPPUNIT_ASSERT_EQUAL(size_t(1), pWrtShell->GetFlyCount(FLYCNTTYPE_FRM));
+ CPPUNIT_ASSERT_EQUAL(size_t(1), pWrtShell->GetLayout()->GetLastPage()->GetSortedObjs()->size());
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(4), pFly->GetAnchor().GetContentAnchor()->nContent.GetIndex());
+
+ // now again in the other direction:
+
+ pWrtShell->SttEndDoc(/*bStart=*/false);
+ pWrtShell->Left(CRSR_SKIP_CHARS, /*bSelect=*/false, 3, /*bBasicCall=*/false);
+
+ pWrtShell->DelRight();
+ pWrtShell->DelRight();
+
+ CPPUNIT_ASSERT_EQUAL(size_t(1), pWrtShell->GetFlyCount(FLYCNTTYPE_FRM));
+ // the problem was that the fly was deleted from the layout
+ CPPUNIT_ASSERT_EQUAL(size_t(1), pWrtShell->GetLayout()->GetLastPage()->GetSortedObjs()->size());
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(5), pFly->GetAnchor().GetContentAnchor()->nContent.GetIndex());
+
+ pWrtShell->Undo(2);
+
+ CPPUNIT_ASSERT_EQUAL(size_t(1), pWrtShell->GetFlyCount(FLYCNTTYPE_FRM));
+ CPPUNIT_ASSERT_EQUAL(size_t(1), pWrtShell->GetLayout()->GetLastPage()->GetSortedObjs()->size());
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(4), pFly->GetAnchor().GetContentAnchor()->nContent.GetIndex());
+
+ pWrtShell->Redo(2);
+
+ CPPUNIT_ASSERT_EQUAL(size_t(1), pWrtShell->GetFlyCount(FLYCNTTYPE_FRM));
+ CPPUNIT_ASSERT_EQUAL(size_t(1), pWrtShell->GetLayout()->GetLastPage()->GetSortedObjs()->size());
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(5), pFly->GetAnchor().GetContentAnchor()->nContent.GetIndex());
+
+ pWrtShell->Undo(2);
+
+ CPPUNIT_ASSERT_EQUAL(size_t(1), pWrtShell->GetFlyCount(FLYCNTTYPE_FRM));
+ CPPUNIT_ASSERT_EQUAL(size_t(1), pWrtShell->GetLayout()->GetLastPage()->GetSortedObjs()->size());
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(4), pFly->GetAnchor().GetContentAnchor()->nContent.GetIndex());
+}
+
CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testTdf54819)
{
load(DATA_DIRECTORY, "tdf54819.fodt");
@@ -638,6 +1173,36 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testTdf54819_keep_numbering_with_Undo)
CPPUNIT_ASSERT_MESSAGE("Not a bulleted list item", sNumName != "Outline");
}
+CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testTdf141175)
+{
+ createDoc("tdf141175.odt");
+
+ uno::Reference<text::XTextTablesSupplier> xTextTablesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xIndexAccess(xTextTablesSupplier->getTextTables(),
+ uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+
+ //Use selectAll 3 times in a row
+ lcl_dispatchCommand(mxComponent, ".uno:SelectAll", {});
+ lcl_dispatchCommand(mxComponent, ".uno:SelectAll", {});
+ lcl_dispatchCommand(mxComponent, ".uno:SelectAll", {});
+ Scheduler::ProcessEventsToIdle();
+
+ //Without the fix in place, this test would have crashed here
+ lcl_dispatchCommand(mxComponent, ".uno:Cut", {});
+ Scheduler::ProcessEventsToIdle();
+
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+
+ lcl_dispatchCommand(mxComponent, ".uno:Paste", {});
+ Scheduler::ProcessEventsToIdle();
+
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xIndexAccess->getCount());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+}
+
CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testTdf119571_keep_numbering_with_Undo)
{
// as the previous test, but with partial paragraph deletion:
@@ -838,6 +1403,44 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testTdf119571_keep_numbering_with_Reject)
CPPUNIT_ASSERT_MESSAGE("Bad numbering", sNumName.isEmpty());
}
+CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testTdf140077)
+{
+ SwDoc* const pDoc = createDoc();
+
+ SwWrtShell* const pWrtShell = pDoc->GetDocShell()->GetWrtShell();
+
+ // hide
+ lcl_dispatchCommand(mxComponent, ".uno:ShowTrackedChanges", {});
+
+ pWrtShell->Insert("a");
+ pWrtShell->SplitNode();
+ pWrtShell->Insert("b");
+ pWrtShell->Left(CRSR_SKIP_CHARS, /*bSelect=*/false, 1, /*bBasicCall=*/false);
+ pWrtShell->Left(CRSR_SKIP_CHARS, /*bSelect=*/true, 1, /*bBasicCall=*/false);
+ // enable
+ lcl_dispatchCommand(mxComponent, ".uno:TrackChanges", {});
+
+ CPPUNIT_ASSERT_MESSAGE("redlining should be on",
+ pDoc->getIDocumentRedlineAccess().IsRedlineOn());
+ CPPUNIT_ASSERT_MESSAGE(
+ "redlines should be visible",
+ IDocumentRedlineAccess::IsShowChanges(pDoc->getIDocumentRedlineAccess().GetRedlineFlags()));
+ CPPUNIT_ASSERT(pWrtShell->GetLayout()->IsHideRedlines());
+
+ pWrtShell->Delete();
+ pWrtShell->SttEndDoc(/*bStart=*/false);
+ pWrtShell->Left(CRSR_SKIP_CHARS, /*bSelect=*/false, 1, /*bBasicCall=*/false);
+ lcl_dispatchCommand(mxComponent, ".uno:TrackChanges", {});
+
+ // crashed in layout
+ pWrtShell->SplitNode();
+
+ pWrtShell->Undo();
+ pWrtShell->Redo();
+ pWrtShell->Undo();
+ pWrtShell->Redo();
+}
+
CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testTdf109376_redline)
{
SwDoc* pDoc = createDoc();
@@ -936,6 +1539,82 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testTdf109376)
CPPUNIT_ASSERT_EQUAL(size_t(1), pWrtShell->GetFlyCount(FLYCNTTYPE_FRM));
}
+CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testTdf147414)
+{
+ SwDoc* const pDoc(createDoc());
+ SwWrtShell* const pWrtShell = pDoc->GetDocShell()->GetWrtShell();
+ SwAutoCorrect corr(*SvxAutoCorrCfg::Get().GetAutoCorrect());
+
+ pWrtShell->Insert("Abc");
+
+ // hide and enable
+ lcl_dispatchCommand(mxComponent, ".uno:ShowTrackedChanges", {});
+ lcl_dispatchCommand(mxComponent, ".uno:TrackChanges", {});
+
+ CPPUNIT_ASSERT(pDoc->getIDocumentRedlineAccess().IsRedlineOn());
+ CPPUNIT_ASSERT(
+ IDocumentRedlineAccess::IsShowChanges(pDoc->getIDocumentRedlineAccess().GetRedlineFlags()));
+ CPPUNIT_ASSERT(pWrtShell->GetLayout()->IsHideRedlines());
+
+ pWrtShell->Left(CRSR_SKIP_CHARS, /*bSelect=*/false, 1, /*bBasicCall=*/false);
+ // backspace
+ pWrtShell->DelLeft();
+ pWrtShell->AutoCorrect(corr, u' ');
+
+ // problem was this was 1 i.e. before the deleted "b" while " " was inserted after
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(3),
+ pWrtShell->getShellCursor(false)->GetPoint()->nContent.GetIndex());
+ CPPUNIT_ASSERT_EQUAL(
+ OUString("Ab c"),
+ pWrtShell->getShellCursor(false)->GetPoint()->nNode.GetNode().GetTextNode()->GetText());
+}
+
+CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testTdf147310)
+{
+ SwDoc* pDoc = createDoc();
+ SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell();
+ CPPUNIT_ASSERT(pWrtShell);
+
+ // somehow bug happens only with 2 tables
+ SwInsertTableOptions tableOpt(SwInsertTableFlags::DefaultBorder, 0);
+ pWrtShell->InsertTable(tableOpt, 1, 1);
+ pWrtShell->InsertTable(tableOpt, 1, 1);
+
+ pWrtShell->SttEndDoc(/*bStart=*/true);
+
+ pWrtShell->DeleteRow(false);
+ pWrtShell->DeleteRow(false);
+
+ {
+ xmlDocPtr pXmlDoc = parseLayoutDump();
+ assertXPath(pXmlDoc, "/root/page/body/tab", 0);
+ discardDumpedLayout();
+ }
+ pWrtShell->Undo();
+ // this did not create frames for the table
+ pWrtShell->Undo();
+ {
+ xmlDocPtr pXmlDoc = parseLayoutDump();
+ // there are 2 tables
+ assertXPath(pXmlDoc, "/root/page/body/tab", 2);
+ discardDumpedLayout();
+ }
+ pWrtShell->Redo();
+ pWrtShell->Redo();
+ {
+ xmlDocPtr pXmlDoc = parseLayoutDump();
+ assertXPath(pXmlDoc, "/root/page/body/tab", 0);
+ discardDumpedLayout();
+ }
+ pWrtShell->Undo();
+ pWrtShell->Undo();
+ {
+ xmlDocPtr pXmlDoc = parseLayoutDump();
+ // there are 2 tables
+ assertXPath(pXmlDoc, "/root/page/body/tab", 2);
+ }
+}
+
CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testTdf64242_optimizeTable)
{
SwDoc* pDoc = createDoc("tdf64242_optimizeTable.odt");
@@ -1779,7 +2458,7 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testMixedFormFieldInsertion)
CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testTdf124261)
{
-#if !defined(WNT)
+#if !defined(WNT) && !defined(MACOSX)
// Make sure that pressing a key in a btlr cell frame causes an immediate, correct repaint.
SwDoc* pDoc = createDoc("tdf124261.docx");
SwRootFrame* pLayout = pDoc->getIDocumentLayoutAccess().GetCurrentLayout();
diff --git a/sw/qa/extras/unowriter/unowriter.cxx b/sw/qa/extras/unowriter/unowriter.cxx
index a265bb29e728..985d1171ac4d 100644
--- a/sw/qa/extras/unowriter/unowriter.cxx
+++ b/sw/qa/extras/unowriter/unowriter.cxx
@@ -737,6 +737,39 @@ CPPUNIT_TEST_FIXTURE(SwUnoWriter, testImageCommentAtChar)
}
}
+CPPUNIT_TEST_FIXTURE(SwUnoWriter, testChapterNumberingCharStyle)
+{
+ loadURL("private:factory/swriter", nullptr);
+
+ uno::Reference<lang::XMultiServiceFactory> xDoc(mxComponent, uno::UNO_QUERY);
+ uno::Reference<beans::XPropertySet> xStyle(
+ xDoc->createInstance("com.sun.star.style.CharacterStyle"), uno::UNO_QUERY);
+ uno::Reference<container::XNamed> xStyleN(xStyle, uno::UNO_QUERY);
+ xStyle->setPropertyValue("CharColor", uno::makeAny(sal_Int32(0x00FF0000)));
+ uno::Reference<style::XStyleFamiliesSupplier> xSFS(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XNameContainer> xStyles(
+ xSFS->getStyleFamilies()->getByName("CharacterStyles"), uno::UNO_QUERY);
+ xStyles->insertByName("red", uno::makeAny(xStyle));
+
+ uno::Reference<text::XChapterNumberingSupplier> xCNS(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexReplace> xOutline(xCNS->getChapterNumberingRules());
+ {
+ comphelper::SequenceAsHashMap hashMap(xOutline->getByIndex(0));
+ hashMap["CharStyleName"] <<= OUString("red");
+ uno::Sequence<beans::PropertyValue> props;
+ hashMap >> props;
+ xOutline->replaceByIndex(0, uno::makeAny(props));
+ }
+ // now rename the style
+ xStyleN->setName("reddishred");
+ {
+ comphelper::SequenceAsHashMap hashMap(xOutline->getByIndex(0));
+
+ // tdf#137810 this failed, was old value "red"
+ CPPUNIT_ASSERT_EQUAL(OUString("reddishred"), hashMap["CharStyleName"].get<OUString>());
+ }
+}
+
CPPUNIT_TEST_FIXTURE(SwUnoWriter, testViewCursorPageStyle)
{
// Load a document with 2 pages, but a single paragraph.
diff --git a/sw/qa/extras/ww8export/data/tdf138302_restartNumbering.odt b/sw/qa/extras/ww8export/data/tdf138302_restartNumbering.odt
new file mode 100644
index 000000000000..8c99963616a7
--- /dev/null
+++ b/sw/qa/extras/ww8export/data/tdf138302_restartNumbering.odt
Binary files differ
diff --git a/sw/qa/extras/ww8export/ww8export3.cxx b/sw/qa/extras/ww8export/ww8export3.cxx
index 9c83b6f62fa9..6b39ac200c3b 100644
--- a/sw/qa/extras/ww8export/ww8export3.cxx
+++ b/sw/qa/extras/ww8export/ww8export3.cxx
@@ -56,6 +56,12 @@ DECLARE_WW8EXPORT_TEST(testTdf37778_readonlySection, "tdf37778_readonlySection.d
CPPUNIT_ASSERT_EQUAL_MESSAGE("Last printed date", sal_Int16(2009), xDPS->getDocumentProperties()->getPrintDate().Year);
}
+DECLARE_WW8EXPORT_TEST(tesTdf138302_restartNumbering, "tdf138302_restartNumbering.odt")
+{
+ uno::Reference<beans::XPropertySet> xPara(getParagraph(8), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("1."), getProperty<OUString>(xPara, "ListLabelString"));
+}
+
DECLARE_WW8EXPORT_TEST(testTdf122429_header, "tdf122429_header.doc")
{
uno::Reference<container::XNameAccess> pageStyles = getStyles("PageStyles");
diff --git a/sw/qa/inc/swmodeltestbase.hxx b/sw/qa/inc/swmodeltestbase.hxx
index 38f8e95a4a40..6119365c6392 100644
--- a/sw/qa/inc/swmodeltestbase.hxx
+++ b/sw/qa/inc/swmodeltestbase.hxx
@@ -895,6 +895,14 @@ protected:
return xCursor->getPage();
}
+ /// Get shape count.
+ int getShapes() const
+ {
+ uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xDraws = xDrawPageSupplier->getDrawPage();
+ return xDraws->getCount();
+ }
+
/**
* Given that some problem doesn't affect the result in the importer, we
* test the resulting file directly, by opening the zip file, parsing an
diff --git a/sw/qa/uitest/data/tdf39721.fodt b/sw/qa/uitest/data/tdf39721.fodt
new file mode 100644
index 000000000000..1acf06c5e2a5
--- /dev/null
+++ b/sw/qa/uitest/data/tdf39721.fodt
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:officeooo="http://openoffice.org/2009/office" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <office:styles>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text"/>
+ <style:default-style style:family="paragraph">
+ <style:text-properties fo:language="en" fo:country="US"/>
+ </style:default-style>
+ </office:styles>
+ <office:body>
+ <office:text>
+ <text:tracked-changes text:track-changes="false">
+ <text:changed-region xml:id="ct94454449144064" text:id="ct94454449144064">
+ <text:deletion>
+ <office:change-info>
+ <dc:creator>Unknown Author</dc:creator>
+ <dc:date>2021-01-06T16:18:57</dc:date>
+ </office:change-info>
+ </text:deletion>
+ </text:changed-region>
+ <text:changed-region xml:id="ct94454455394000" text:id="ct94454455394000">
+ <text:deletion>
+ <office:change-info>
+ <dc:creator>Unknown Author</dc:creator>
+ <dc:date>2021-01-06T16:20:17</dc:date>
+ </office:change-info>
+ </text:deletion>
+ </text:changed-region>
+ </text:tracked-changes>
+ <text:list xml:id="list627175737" text:style-name="L3">
+ <text:list-item>
+ <text:p text:style-name="P1">Lorem<text:change-start text:change-id="ct94454449144064"/> ipsu<text:change-end text:change-id="ct94454449144064"/>m</text:p>
+ </text:list-item>
+ <text:list-item>
+ <text:p text:style-name="P1">dol<text:change-start text:change-id="ct94454455394000"/>or <text:change-end text:change-id="ct94454455394000"/>sit</text:p>
+ </text:list-item>
+ <text:list-item>
+ <text:p text:style-name="P1">amet.</text:p>
+ </text:list-item>
+ </text:list>
+ </office:text>
+ </office:body>
+</office:document>
diff --git a/sw/qa/uitest/writer_tests2/bookmark.py b/sw/qa/uitest/writer_tests2/bookmark.py
index 9cbf82c29b41..4cf88ff9ab3c 100644
--- a/sw/qa/uitest/writer_tests2/bookmark.py
+++ b/sw/qa/uitest/writer_tests2/bookmark.py
@@ -136,4 +136,43 @@ class bookmarkDialog(UITestCase):
self.ui_test.close_doc()
+ def test_bookmark_dialog_edittext(self):
+ self.ui_test.create_doc_in_start_center("writer")
+ xDoc = self.ui_test.get_component()
+
+ xDoc.Text.insertString(xDoc.Text.getStart(), "foo", False)
+ self.xUITest.executeCommand(".uno:SelectAll")
+
+ self.ui_test.execute_dialog_through_command(".uno:InsertBookmark")
+ xBookDlg = self.xUITest.getTopFocusWindow()
+ xButton = xBookDlg.getChild("insert")
+ self.ui_test.close_dialog_through_button(xButton)
+
+ self.ui_test.execute_dialog_through_command(".uno:InsertBookmark")
+ xBookDlg = self.xUITest.getTopFocusWindow()
+
+ xBmk = xBookDlg.getChild("bookmarks")
+ xFirstListEntry = xBmk.getChild("0") # select first bookmark
+ xFirstListEntry.executeAction("SELECT", tuple())
+ xEditBtn = xBookDlg.getChild("edittext")
+
+ xEditBtn.executeAction('CLICK', ())
+
+ # this does not work - the Edit widget has the focus but it's not forwarded
+# xBookDlg.executeAction("TYPE", mkPropertyValues({"TEXT":"fubar"}))
+# xBookDlg.executeAction("TYPE", mkPropertyValues({"KEYCODE": "RETURN"}))
+ # this did not work previously but now works due to explicit
+ # forwarding in TreeListUIObject::execute()
+ xBmk.executeAction("TYPE", mkPropertyValues({"TEXT":"fubar"}))
+ xBmk.executeAction("TYPE", mkPropertyValues({"KEYCODE": "RETURN"}))
+
+ x1stListEntry = xBmk.getChild("O") # select first bookmark
+ x1stListEntry.executeAction("SELECT", tuple())
+
+ self.assertEqual(xDoc.Text.String, "fubar")
+ self.assertEqual(get_state_as_dict(x1stListEntry)["Text"], "1\tBookmark 1\tfubar\tNo\t")
+
+ xButton = xBookDlg.getChild("close")
+ self.ui_test.close_dialog_through_button(xButton)
+
# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sw/qa/uitest/writer_tests7/tdf145093.py b/sw/qa/uitest/writer_tests7/tdf145093.py
new file mode 100644
index 000000000000..c22510a619cc
--- /dev/null
+++ b/sw/qa/uitest/writer_tests7/tdf145093.py
@@ -0,0 +1,34 @@
+# -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*-
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+from uitest.framework import UITestCase
+from libreoffice.uno.propertyvalue import mkPropertyValues
+from uitest.uihelper.common import select_pos
+from uitest.uihelper.common import type_text
+from uitest.uihelper.common import get_url_for_data_file
+
+class tdf145093(UITestCase):
+ def test_tdf145093(self):
+ # load the sample file
+ with self.ui_test.load_file(get_url_for_data_file("tdf39721.fodt")) as document:
+
+ # redlining should be on
+ self.xUITest.executeCommand(".uno:TrackChanges")
+
+ # Move Up/Down a list item over a tracked paragraph insertion resulted a crash
+ # (Note: not only at the end of the document, but check the original
+ # bug report temporarily, where the problem is triggered by an other problem).
+
+ self.xUITest.executeCommand(".uno:MoveDown")
+ self.xUITest.executeCommand(".uno:MoveDown")
+ # Note: Move list item from the end of the document creates an extra insertion.
+ # TODO: fix this other problem, and improve the test with an extra paragraph insertion
+ self.xUITest.executeCommand(".uno:MoveUp")
+
+ # This was a crash (using invalid pointer) both in Show Changes and Hide Changes modes
+ self.xUITest.executeCommand(".uno:MoveDown")
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sw/sdi/_textsh.sdi b/sw/sdi/_textsh.sdi
index a2bfa8e5bdf6..a1fdfda6e5da 100644
--- a/sw/sdi/_textsh.sdi
+++ b/sw/sdi/_textsh.sdi
@@ -140,6 +140,12 @@ interface BaseText
StateMethod = GetState ;
DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
]
+ FN_EDIT_BOOKMARK
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
+ ]
FN_DELETE_BOOKMARK // status(final|play)
[
ExecMethod = Execute ;
diff --git a/sw/sdi/swriter.sdi b/sw/sdi/swriter.sdi
index 5f8b5358309a..e2ed5432b8e3 100644
--- a/sw/sdi/swriter.sdi
+++ b/sw/sdi/swriter.sdi
@@ -2555,6 +2555,24 @@ SfxVoidItem InsertBookmark FN_INSERT_BOOKMARK
GroupId = SfxGroupId::Insert;
]
+SfxVoidItem EditBookmark FN_EDIT_BOOKMARK
+(SfxStringItem Bookmark FN_EDIT_BOOKMARK)
+[
+ AutoUpdate = FALSE,
+ FastCall = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ RecordAbsolute = FALSE,
+ RecordPerSet;
+ Asynchron;
+
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ ToolBoxConfig = TRUE,
+ GroupId = SfxGroupId::Insert;
+]
+
SfxVoidItem InsertBreak FN_INSERT_BREAK_DLG
(SfxInt16Item Kind FN_INSERT_BREAK_DLG,SfxStringItem TemplateName FN_PARAM_1,SfxUInt16Item PageNumber FN_PARAM_2,SfxBoolItem PageNumberFilled FN_PARAM_3)
[
diff --git a/sw/source/core/bastyp/index.cxx b/sw/source/core/bastyp/index.cxx
index 4f740948abff..cb7c05825274 100644
--- a/sw/source/core/bastyp/index.cxx
+++ b/sw/source/core/bastyp/index.cxx
@@ -229,12 +229,11 @@ SwIndexReg::~SwIndexReg()
void SwIndexReg::Update(
SwIndex const & rIdx,
const sal_Int32 nDiff,
- const bool bNeg,
- const bool /* argument is only used in derived class*/ )
+ UpdateMode const eMode)
{
SwIndex* pStt = const_cast<SwIndex*>(&rIdx);
const sal_Int32 nNewVal = rIdx.m_nIndex;
- if( bNeg )
+ if (eMode & UpdateMode::Negative)
{
const sal_Int32 nLast = rIdx.GetIndex() + nDiff;
while (pStt && pStt->m_nIndex == nNewVal)
diff --git a/sw/source/core/crsr/callnk.cxx b/sw/source/core/crsr/callnk.cxx
index 4d956e90e2c5..d2840ae5406d 100644
--- a/sw/source/core/crsr/callnk.cxx
+++ b/sw/source/core/crsr/callnk.cxx
@@ -30,6 +30,7 @@
#include <ndtxt.hxx>
#include <flyfrm.hxx>
#include <breakit.hxx>
+#include <UndoTable.hxx>
SwCallLink::SwCallLink( SwCursorShell & rSh )
: rShell( rSh )
@@ -59,24 +60,36 @@ SwCallLink::SwCallLink( SwCursorShell & rSh )
}
}
-static void lcl_notifyRow(const SwContentNode* pNode, SwCursorShell & rShell)
+namespace sw {
+
+/**
+ An empty paragraph inside a table with a nested table preceding it
+ should be hidden, unless the cursor is positioned in the paragraph.
+
+ If the cursor is now (or was previously) inside such a paragraph,
+ send a size change notification on the row frame to force reformatting.
+ */
+void NotifyTableCollapsedParagraph(const SwContentNode *const pNode, SwCursorShell *const pShell)
{
if ( !pNode )
return;
- SwFrame *const pMyFrame = pNode->getLayoutFrame( rShell.GetLayout() );
+ SwFrame *const pMyFrame = pNode->getLayoutFrame(pShell ? pShell->GetLayout() : nullptr);
if ( !pMyFrame )
return;
- // We need to emulated a change of the row height in order
- // to have the complete row redrawn
+ // important: only invalidate layout if something is actually hidden or
+ // shown! Otherwise performance is going to suffer with "difficult" tables.
+ if (!pMyFrame->IsCollapse())
+ return;
+
SwRowFrame *const pRow = pMyFrame->FindRowFrame();
if ( !pRow )
return;
const SwTableLine* pLine = pRow->GetTabLine( );
- if (rShell.IsTableMode() || (rShell.StartsWithTable() && rShell.ExtendedSelectedAll()))
+ if (pShell && (pShell->IsTableMode() || (pShell->StartsWithTable() && pShell->ExtendedSelectedAll())))
{
// If we have a table selection, then avoid the notification: it's not necessary (the text
// cursor needs no updating) and the notification may kill the selection overlay, leading to
@@ -85,10 +98,13 @@ static void lcl_notifyRow(const SwContentNode* pNode, SwCursorShell & rShell)
return;
}
+ // notify a change in frame size to force reformatting of the row
SwFormatFrameSize aSize = pLine->GetFrameFormat()->GetFrameSize();
pRow->ModifyNotification(nullptr, &aSize);
}
+} // namespace sw
+
SwCallLink::~SwCallLink() COVERITY_NOEXCEPT_FALSE
{
if( nNdTyp == SwNodeType::NONE || !rShell.m_bCallChgLnk ) // see ctor
@@ -101,15 +117,17 @@ SwCallLink::~SwCallLink() COVERITY_NOEXCEPT_FALSE
if( !pCNd )
return;
- lcl_notifyRow(pCNd, rShell);
-
- const SwDoc *pDoc=rShell.GetDoc();
- const SwContentNode *pNode = nullptr;
- if ( pDoc && nNode < pDoc->GetNodes( ).Count( ) )
+ if (pCNd->GetIndex() != nNode) // only if moved to different node
{
- pNode = pDoc->GetNodes()[nNode]->GetContentNode();
+ ::sw::NotifyTableCollapsedParagraph(pCNd, &rShell);
+
+ const SwDoc *pDoc=rShell.GetDoc();
+ if (nNode < pDoc->GetNodes().Count())
+ {
+ const SwContentNode *const pNode = pDoc->GetNodes()[nNode]->GetContentNode();
+ ::sw::NotifyTableCollapsedParagraph(pNode, &rShell);
+ }
}
- lcl_notifyRow(pNode, rShell);
sal_Int32 nCmp, nCurrentContent = pCurrentCursor->GetPoint()->nContent.GetIndex();
SwNodeType nNdWhich = pCNd->GetNodeType();
diff --git a/sw/source/core/crsr/crbm.cxx b/sw/source/core/crsr/crbm.cxx
index a9175808de85..b35b1329cbca 100644
--- a/sw/source/core/crsr/crbm.cxx
+++ b/sw/source/core/crsr/crbm.cxx
@@ -130,9 +130,14 @@ bool IsMarkHidden(SwRootFrame const& rLayout, ::sw::mark::IMark const& rMark)
{
return false;
}
- SwTextNode const& rNode(*rMark.GetMarkPos().nNode.GetNode().GetTextNode());
+ SwNode const& rNode(rMark.GetMarkPos().nNode.GetNode());
+ SwTextNode const*const pTextNode(rNode.GetTextNode());
+ if (pTextNode == nullptr)
+ { // UNO_BOOKMARK may point to table node
+ return rNode.GetRedlineMergeFlag() == SwNode::Merge::Hidden;
+ }
SwTextFrame const*const pFrame(static_cast<SwTextFrame const*>(
- rNode.getLayoutFrame(&rLayout)));
+ pTextNode->getLayoutFrame(&rLayout)));
if (!pFrame)
{
return true;
@@ -147,14 +152,14 @@ bool IsMarkHidden(SwRootFrame const& rLayout, ::sw::mark::IMark const& rMark)
}
else
{
- if (rMark.GetMarkPos().nContent.GetIndex() == rNode.Len())
+ if (rMark.GetMarkPos().nContent.GetIndex() == pTextNode->Len())
{ // at end of node: never deleted (except if node deleted)
- return rNode.GetRedlineMergeFlag() == SwNode::Merge::Hidden;
+ return pTextNode->GetRedlineMergeFlag() == SwNode::Merge::Hidden;
}
else
{ // check character following mark pos
return pFrame->MapModelToViewPos(rMark.GetMarkPos())
- == pFrame->MapModelToView(&rNode, rMark.GetMarkPos().nContent.GetIndex() + 1);
+ == pFrame->MapModelToView(pTextNode, rMark.GetMarkPos().nContent.GetIndex() + 1);
}
}
}
diff --git a/sw/source/core/crsr/crsrsh.cxx b/sw/source/core/crsr/crsrsh.cxx
index 7e0defb67ca0..f7ddd3a3f1d7 100644
--- a/sw/source/core/crsr/crsrsh.cxx
+++ b/sw/source/core/crsr/crsrsh.cxx
@@ -2243,7 +2243,14 @@ void SwCursorShell::Push()
*/
bool SwCursorShell::Pop(PopMode const eDelete)
{
- SwCallLink aLk( *this ); // watch Cursor-Moves; call Link if needed
+ ::std::unique_ptr<SwCallLink> pLink(::std::make_unique<SwCallLink>(*this)); // watch Cursor-Moves; call Link if needed
+ return Pop(eDelete, ::std::move(pLink));
+}
+
+bool SwCursorShell::Pop(PopMode const eDelete,
+ [[maybe_unused]] ::std::unique_ptr<SwCallLink> const pLink)
+{
+ assert(pLink); // parameter exists only to be deleted before return
// are there any left?
if (nullptr == m_pStackCursor)
@@ -2694,7 +2701,7 @@ bool SwCursorShell::IsOverReadOnlyPos( const Point& rPt ) const
SwPaM aPam( *m_pCurrentCursor->GetPoint() );
GetLayout()->GetCursorOfst( aPam.GetPoint(), aPt );
// form view
- return aPam.HasReadonlySel( GetViewOptions()->IsFormView() );
+ return aPam.HasReadonlySel(GetViewOptions()->IsFormView(), false);
}
/** Get the number of elements in the ring of cursors
@@ -3313,7 +3320,7 @@ void SwCursorShell::SetReadOnlyAvailable( bool bFlag )
}
}
-bool SwCursorShell::HasReadonlySel() const
+bool SwCursorShell::HasReadonlySel(bool const isReplace) const
{
bool bRet = false;
// If protected area is to be ignored, then selections are never read-only.
@@ -3324,13 +3331,13 @@ bool SwCursorShell::HasReadonlySel() const
if ( m_pTableCursor != nullptr )
{
bRet = m_pTableCursor->HasReadOnlyBoxSel()
- || m_pTableCursor->HasReadonlySel( GetViewOptions()->IsFormView() );
+ || m_pTableCursor->HasReadonlySel(GetViewOptions()->IsFormView(), isReplace);
}
else
{
for(const SwPaM& rCursor : m_pCurrentCursor->GetRingContainer())
{
- if( rCursor.HasReadonlySel( GetViewOptions()->IsFormView() ) )
+ if (rCursor.HasReadonlySel(GetViewOptions()->IsFormView(), isReplace))
{
bRet = true;
break;
diff --git a/sw/source/core/crsr/crstrvl.cxx b/sw/source/core/crsr/crstrvl.cxx
index 9153b8b34e85..11fb5db02df6 100644
--- a/sw/source/core/crsr/crstrvl.cxx
+++ b/sw/source/core/crsr/crstrvl.cxx
@@ -1930,7 +1930,7 @@ bool SwContentAtPos::IsInRTLText()const
return bRet;
}
-bool SwCursorShell::SelectText( const sal_Int32 nStart,
+bool SwCursorShell::SelectTextModel( const sal_Int32 nStart,
const sal_Int32 nEnd )
{
SET_CURR_SHELL( this );
@@ -1954,6 +1954,43 @@ bool SwCursorShell::SelectText( const sal_Int32 nStart,
return bRet;
}
+TextFrameIndex SwCursorShell::GetCursorPointAsViewIndex() const
+{
+ SwPosition const*const pPos(GetCursor()->GetPoint());
+ SwTextNode const*const pTextNode(pPos->nNode.GetNode().GetTextNode());
+ assert(pTextNode);
+ SwTextFrame const*const pFrame(static_cast<SwTextFrame const*>(pTextNode->getLayoutFrame(GetLayout())));
+ assert(pFrame);
+ return pFrame->MapModelToViewPos(*pPos);
+}
+
+bool SwCursorShell::SelectTextView(TextFrameIndex const nStart,
+ TextFrameIndex const nEnd)
+{
+ CurrShell aCurr( this );
+ bool bRet = false;
+
+ SwCallLink aLk( *this );
+ SwCursorSaveState aSaveState( *m_pCurrentCursor );
+
+ SwPosition& rPos = *m_pCurrentCursor->GetPoint();
+ m_pCurrentCursor->DeleteMark();
+ // indexes must correspond to cursor point!
+ SwTextFrame const*const pFrame(static_cast<SwTextFrame const*>(m_pCurrentCursor->GetPoint()->nNode.GetNode().GetTextNode()->getLayoutFrame(GetLayout())));
+ assert(pFrame);
+ rPos = pFrame->MapViewToModelPos(nStart);
+ m_pCurrentCursor->SetMark();
+ rPos = pFrame->MapViewToModelPos(nEnd);
+
+ if (!m_pCurrentCursor->IsSelOvr())
+ {
+ UpdateCursor();
+ bRet = true;
+ }
+
+ return bRet;
+}
+
bool SwCursorShell::SelectTextAttr( sal_uInt16 nWhich,
bool bExpand,
const SwTextAttr* pTextAttr )
@@ -1977,7 +2014,7 @@ bool SwCursorShell::SelectTextAttr( sal_uInt16 nWhich,
if( pTextAttr )
{
const sal_Int32* pEnd = pTextAttr->End();
- bRet = SelectText( pTextAttr->GetStart(), ( pEnd ? *pEnd : pTextAttr->GetStart() + 1 ) );
+ bRet = SelectTextModel(pTextAttr->GetStart(), (pEnd ? *pEnd : pTextAttr->GetStart() + 1));
}
}
return bRet;
diff --git a/sw/source/core/crsr/pam.cxx b/sw/source/core/crsr/pam.cxx
index b47b35b4bc30..6c9d4b899512 100644
--- a/sw/source/core/crsr/pam.cxx
+++ b/sw/source/core/crsr/pam.cxx
@@ -573,7 +573,7 @@ static const SwFrame* lcl_FindEditInReadonlyFrame( const SwFrame& rFrame )
}
/// is in protected section or selection surrounds something protected
-bool SwPaM::HasReadonlySel( bool bFormView ) const
+bool SwPaM::HasReadonlySel(bool bFormView, bool const isReplace) const
{
bool bRet = false;
@@ -748,7 +748,7 @@ bool SwPaM::HasReadonlySel( bool bFormView ) const
if (!bRet &&
pDoc->getIDocumentSettingAccess().get(DocumentSettingId::PROTECT_BOOKMARKS))
{
- if (pDoc->getIDocumentMarkAccess()->isBookmarkDeleted(*this))
+ if (pDoc->getIDocumentMarkAccess()->isBookmarkDeleted(*this, isReplace))
{
return true;
}
diff --git a/sw/source/core/doc/DocumentContentOperationsManager.cxx b/sw/source/core/doc/DocumentContentOperationsManager.cxx
index a2605673eefb..315cf5cdeefa 100644
--- a/sw/source/core/doc/DocumentContentOperationsManager.cxx
+++ b/sw/source/core/doc/DocumentContentOperationsManager.cxx
@@ -387,7 +387,8 @@ namespace
*pDelPam->GetPoint(), nDelCount );
}
- if (pDelPam->GetNext() && *pDelPam->GetNext()->End() == *pDelPam->Start())
+ if (pDelPam->GetNext() != pDelPam.get()
+ && *pDelPam->GetNext()->End() == *pDelPam->Start())
{
*pDelPam->GetNext()->End() = *pDelPam->End();
pDelPam.reset(pDelPam->GetNext());
@@ -617,8 +618,9 @@ namespace sw
namespace
{
- bool lcl_DoWithBreaks(::sw::DocumentContentOperationsManager & rDocumentContentOperations, SwPaM & rPam,
- bool (::sw::DocumentContentOperationsManager::*pFunc)(SwPaM&, bool), const bool bForceJoinNext = false)
+ bool lcl_DoWithBreaks(::sw::DocumentContentOperationsManager & rDocumentContentOperations,
+ SwPaM & rPam, SwDeleteFlags const flags,
+ bool (::sw::DocumentContentOperationsManager::*pFunc)(SwPaM&, SwDeleteFlags, bool), const bool bForceJoinNext = false)
{
std::vector<std::pair<sal_uLong, sal_Int32>> Breaks;
@@ -626,7 +628,7 @@ namespace
if (Breaks.empty())
{
- return (rDocumentContentOperations.*pFunc)(rPam, bForceJoinNext);
+ return (rDocumentContentOperations.*pFunc)(rPam, flags, bForceJoinNext);
}
// Deletion must be split into several parts if the text node
@@ -650,7 +652,7 @@ namespace
rStart = SwPosition(*rNodes[iter->first - nOffset]->GetTextNode(), iter->second + 1);
if (rStart < rEnd) // check if part is empty
{
- bRet &= (rDocumentContentOperations.*pFunc)(aPam, bForceJoinNext);
+ bRet &= (rDocumentContentOperations.*pFunc)(aPam, flags, bForceJoinNext);
nOffset = iter->first - rStart.nNode.GetIndex(); // deleted fly nodes...
}
rEnd = SwPosition(*rNodes[iter->first - nOffset]->GetTextNode(), iter->second);
@@ -660,7 +662,7 @@ namespace
rStart = *rPam.Start(); // set to original start
if (rStart < rEnd) // check if part is empty
{
- bRet &= (rDocumentContentOperations.*pFunc)(aPam, bForceJoinNext);
+ bRet &= (rDocumentContentOperations.*pFunc)(aPam, flags, bForceJoinNext);
}
return bRet;
@@ -935,8 +937,10 @@ namespace
for(SaveRedline & rSvRedLine : rArr)
{
rSvRedLine.SetPos( nInsPos );
- pDoc->getIDocumentRedlineAccess().AppendRedline( rSvRedLine.pRedl, true );
- if (rSvRedLine.pRedl->GetType() == RedlineType::Delete)
+ IDocumentRedlineAccess::AppendResult const result(
+ pDoc->getIDocumentRedlineAccess().AppendRedline( rSvRedLine.pRedl, true ));
+ if ( IDocumentRedlineAccess::AppendResult::APPENDED == result &&
+ rSvRedLine.pRedl->GetType() == RedlineType::Delete )
{
UpdateFramesForAddDeleteRedline(*pDoc, *rSvRedLine.pRedl);
}
@@ -1994,7 +1998,7 @@ void DocumentContentOperationsManager::DeleteDummyChar(
assert(aPam.GetText().getLength() == 1 && aPam.GetText()[0] == cDummy);
(void) cDummy;
- DeleteRangeImpl(aPam);
+ DeleteRangeImpl(aPam, SwDeleteFlags::Default);
if (!m_rDoc.getIDocumentRedlineAccess().IsIgnoreRedline()
&& !m_rDoc.getIDocumentRedlineAccess().GetRedlineTable().empty())
@@ -2005,12 +2009,7 @@ void DocumentContentOperationsManager::DeleteDummyChar(
void DocumentContentOperationsManager::DeleteRange( SwPaM & rPam )
{
- lcl_DoWithBreaks( *this, rPam, &DocumentContentOperationsManager::DeleteRangeImpl );
-
- if (m_rDoc.getIDocumentRedlineAccess().IsRedlineOn())
- {
- rPam.Normalize(false); // tdf#127635 put point at the end of deletion
- }
+ lcl_DoWithBreaks(*this, rPam, SwDeleteFlags::Default, &DocumentContentOperationsManager::DeleteRangeImpl);
if (!m_rDoc.getIDocumentRedlineAccess().IsIgnoreRedline()
&& !m_rDoc.getIDocumentRedlineAccess().GetRedlineTable().empty())
@@ -2113,7 +2112,7 @@ bool DocumentContentOperationsManager::DelFullPara( SwPaM& rPam )
::PaMCorrAbs( aDelPam, aTmpPos );
}
- std::unique_ptr<SwUndoDelete> pUndo(new SwUndoDelete( aDelPam, true ));
+ std::unique_ptr<SwUndoDelete> pUndo(new SwUndoDelete(aDelPam, SwDeleteFlags::Default, true));
*rPam.GetPoint() = *aDelPam.GetPoint();
pUndo->SetPgBrkFlags( bSavePageBreak, bSavePageDesc );
@@ -2208,22 +2207,17 @@ bool DocumentContentOperationsManager::DelFullPara( SwPaM& rPam )
}
// #i100466# Add handling of new optional parameter <bForceJoinNext>
-bool DocumentContentOperationsManager::DeleteAndJoin( SwPaM & rPam,
+bool DocumentContentOperationsManager::DeleteAndJoin(SwPaM & rPam, SwDeleteFlags const flags,
const bool bForceJoinNext )
{
if ( lcl_StrLenOverflow( rPam ) )
return false;
- bool const ret = lcl_DoWithBreaks( *this, rPam, (m_rDoc.getIDocumentRedlineAccess().IsRedlineOn())
+ bool const ret = lcl_DoWithBreaks( *this, rPam, flags, (m_rDoc.getIDocumentRedlineAccess().IsRedlineOn())
? &DocumentContentOperationsManager::DeleteAndJoinWithRedlineImpl
: &DocumentContentOperationsManager::DeleteAndJoinImpl,
bForceJoinNext );
- if (m_rDoc.getIDocumentRedlineAccess().IsRedlineOn())
- {
- rPam.Normalize(false); // tdf#127635 put point at the end of deletion
- }
-
return ret;
}
@@ -3352,8 +3346,8 @@ bool DocumentContentOperationsManager::ReplaceRange( SwPaM& rPam, const OUString
if (rStart < rEnd) // check if part is empty
{
bRet &= (m_rDoc.getIDocumentRedlineAccess().IsRedlineOn())
- ? DeleteAndJoinWithRedlineImpl(aPam)
- : DeleteAndJoinImpl(aPam, false);
+ ? DeleteAndJoinWithRedlineImpl(aPam, SwDeleteFlags::Default)
+ : DeleteAndJoinImpl(aPam, SwDeleteFlags::Default, false);
nOffset = iter->first - rStart.nNode.GetIndex(); // deleted fly nodes...
}
rEnd = SwPosition(*rNodes[iter->first - nOffset]->GetTextNode(), iter->second);
@@ -3488,21 +3482,28 @@ void DocumentContentOperationsManager::CopyWithFlyInFly(
aRedlRest.Restore();
if (bMakeNewFrames) // tdf#130685 only after aRedlRest
{ // recreate from previous node (could be merged now)
- if (SwTextNode *const pNode = aSavePos.GetNode().GetTextNode())
+ std::unordered_set<SwTextFrame*> frames;
+ SwTextNode * pNode = aSavePos.GetNode().GetTextNode();
+ SwTextNode *const pEndNode = rInsPos.GetNode().GetTextNode();
+ if (pEndNode)
{
- std::unordered_set<SwTextFrame*> frames;
- SwTextNode *const pEndNode = rInsPos.GetNode().GetTextNode();
- if (pEndNode)
+ SwIterator<SwTextFrame, SwTextNode, sw::IteratorMode::UnwrapMulti> aIter(*pEndNode);
+ for (SwTextFrame* pFrame = aIter.First(); pFrame; pFrame = aIter.Next())
{
- SwIterator<SwTextFrame, SwTextNode, sw::IteratorMode::UnwrapMulti> aIter(*pEndNode);
- for (SwTextFrame* pFrame = aIter.First(); pFrame; pFrame = aIter.Next())
+ if (pFrame->getRootFrame()->IsHideRedlines())
{
- if (pFrame->getRootFrame()->IsHideRedlines())
+ frames.insert(pFrame);
+ // tdf#135061 check if end node is merged to a preceding node
+ if (pNode == nullptr && pFrame->GetMergedPara()
+ && pFrame->GetMergedPara()->pFirstNode->GetIndex() < aSavePos.GetIndex())
{
- frames.insert(pFrame);
+ pNode = pFrame->GetMergedPara()->pFirstNode;
}
}
}
+ }
+ if (pNode != nullptr)
+ {
sw::RecreateStartTextFrames(*pNode);
if (!frames.empty())
{ // tdf#132187 check if the end node needs new frames
@@ -3914,7 +3915,7 @@ DocumentContentOperationsManager::~DocumentContentOperationsManager()
}
//Private methods
-bool DocumentContentOperationsManager::DeleteAndJoinWithRedlineImpl( SwPaM & rPam, const bool )
+bool DocumentContentOperationsManager::DeleteAndJoinWithRedlineImpl(SwPaM & rPam, SwDeleteFlags const flags, const bool)
{
assert(m_rDoc.getIDocumentRedlineAccess().IsRedlineOn());
@@ -3994,7 +3995,7 @@ bool DocumentContentOperationsManager::DeleteAndJoinWithRedlineImpl( SwPaM & rPa
{
assert(pRedline->HasValidRange());
undos.emplace_back(std::make_unique<SwUndoRedlineDelete>(
- *pRedline, SwUndoId::DELETE));
+ *pRedline, SwUndoId::DELETE, flags));
}
const SwRewriter aRewriter = undos.front()->GetRewriter();
// can only group a single undo action
@@ -4055,7 +4056,7 @@ bool DocumentContentOperationsManager::DeleteAndJoinWithRedlineImpl( SwPaM & rPa
return true;
}
-bool DocumentContentOperationsManager::DeleteAndJoinImpl( SwPaM & rPam,
+bool DocumentContentOperationsManager::DeleteAndJoinImpl(SwPaM & rPam, SwDeleteFlags const flags,
const bool bForceJoinNext )
{
bool bJoinText, bJoinPrev;
@@ -4067,7 +4068,7 @@ bool DocumentContentOperationsManager::DeleteAndJoinImpl( SwPaM & rPam,
}
{
- bool const bSuccess( DeleteRangeImpl( rPam ) );
+ bool const bSuccess( DeleteRangeImpl(rPam, flags) );
if (!bSuccess)
return false;
}
@@ -4086,14 +4087,14 @@ bool DocumentContentOperationsManager::DeleteAndJoinImpl( SwPaM & rPam,
return true;
}
-bool DocumentContentOperationsManager::DeleteRangeImpl(SwPaM & rPam, const bool)
+bool DocumentContentOperationsManager::DeleteRangeImpl(SwPaM & rPam, SwDeleteFlags const flags, const bool)
{
// Move all cursors out of the deleted range, but first copy the
// passed 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 ) );
+ bool const bSuccess( DeleteRangeImplImpl(aDelPam, flags) );
if (bSuccess)
{ // now copy position from temp copy to given PaM
*rPam.GetPoint() = *aDelPam.GetPoint();
@@ -4102,7 +4103,7 @@ bool DocumentContentOperationsManager::DeleteRangeImpl(SwPaM & rPam, const bool)
return bSuccess;
}
-bool DocumentContentOperationsManager::DeleteRangeImplImpl(SwPaM & rPam)
+bool DocumentContentOperationsManager::DeleteRangeImplImpl(SwPaM & rPam, SwDeleteFlags const flags)
{
SwPosition *pStt = rPam.Start(), *pEnd = rPam.End();
@@ -4167,7 +4168,7 @@ bool DocumentContentOperationsManager::DeleteRangeImplImpl(SwPaM & rPam)
}
if (!bMerged)
{
- m_rDoc.GetIDocumentUndoRedo().AppendUndo( std::make_unique<SwUndoDelete>( rPam ) );
+ m_rDoc.GetIDocumentUndoRedo().AppendUndo(std::make_unique<SwUndoDelete>(rPam, flags));
}
m_rDoc.getIDocumentState().SetModified();
@@ -4179,8 +4180,11 @@ bool DocumentContentOperationsManager::DeleteRangeImplImpl(SwPaM & rPam)
m_rDoc.getIDocumentRedlineAccess().DeleteRedline( rPam, true, RedlineType::Any );
// Delete and move all "Flys at the paragraph", which are within the Selection
- DelFlyInRange(rPam.GetMark()->nNode, rPam.GetPoint()->nNode,
- &rPam.GetMark()->nContent, &rPam.GetPoint()->nContent);
+ if (!(flags & SwDeleteFlags::ArtificialSelection))
+ {
+ DelFlyInRange(rPam.GetMark()->nNode, rPam.GetPoint()->nNode,
+ &rPam.GetMark()->nContent, &rPam.GetPoint()->nContent);
+ }
DelBookmarks(
pStt->nNode,
pEnd->nNode,
@@ -4302,7 +4306,7 @@ bool DocumentContentOperationsManager::DeleteRangeImplImpl(SwPaM & rPam)
bool DocumentContentOperationsManager::ReplaceRangeImpl( SwPaM& rPam, const OUString& rStr,
const bool bRegExReplace )
{
- if( !rPam.HasMark() || *rPam.GetPoint() == *rPam.GetMark() )
+ if (!rPam.HasMark())
return false;
bool bJoinText, bJoinPrev;
@@ -4417,12 +4421,26 @@ bool DocumentContentOperationsManager::ReplaceRangeImpl( SwPaM& rPam, const OUSt
InsertItemSet( aTmpRange, aSet );
}
+ // tdf#139982: Appending the redline may immediately delete flys
+ // anchored in the previous text if it's inside an insert redline.
+ // Also flys will be deleted if the redline is accepted. Move them
+ // to the position between the previous text and the new text,
+ // there the chance of surviving both accept and reject is best.
+ SaveFlyArr flys;
+ SaveFlyInRange(aDelPam, *aDelPam.End(), flys, false);
+
if (m_rDoc.GetIDocumentUndoRedo().DoesUndo())
{
m_rDoc.GetIDocumentUndoRedo().AppendUndo(
std::make_unique<SwUndoRedlineDelete>( aDelPam, SwUndoId::REPLACE ));
}
+ // add redline similar to DeleteAndJoinWithRedlineImpl()
+ std::shared_ptr<SwUnoCursor> const pCursor(m_rDoc.CreateUnoCursor(*aDelPam.GetMark()));
+ pCursor->SetMark();
+ *pCursor->GetPoint() = *aDelPam.GetPoint();
m_rDoc.getIDocumentRedlineAccess().AppendRedline( new SwRangeRedline( RedlineType::Delete, aDelPam ), true);
+ RestFlyInRange(flys, *aDelPam.End(), &aDelPam.End()->nNode, true);
+ sw::UpdateFramesForAddDeleteRedline(m_rDoc, *pCursor);
*rPam.GetMark() = *aDelPam.GetMark();
if (m_rDoc.GetIDocumentUndoRedo().DoesUndo())
@@ -4445,8 +4463,8 @@ bool DocumentContentOperationsManager::ReplaceRangeImpl( SwPaM& rPam, const OUSt
m_rDoc.getIDocumentRedlineAccess().SetRedlineFlags( eOld );
*rPam.GetPoint() = pBkmk->GetMarkPos();
- if(pBkmk->IsExpanded())
- *rPam.GetMark() = pBkmk->GetOtherMarkPos();
+ *rPam.GetMark() = pBkmk->IsExpanded() ? pBkmk->GetOtherMarkPos() : pBkmk->GetMarkPos();
+
m_rDoc.getIDocumentMarkAccess()->deleteMark(pBkmk);
}
bJoinText = false;
diff --git a/sw/source/core/doc/DocumentRedlineManager.cxx b/sw/source/core/doc/DocumentRedlineManager.cxx
index 8ae32f266bdb..e11c1c6f2c4b 100644
--- a/sw/source/core/doc/DocumentRedlineManager.cxx
+++ b/sw/source/core/doc/DocumentRedlineManager.cxx
@@ -283,6 +283,12 @@ void UpdateFramesForRemoveDeleteRedline(SwDoc & rDoc, SwPaM const& rPam)
break;
}
+ // no nodes can be unmerged by this - skip MakeFrames() etc.
+ if (rPam.GetPoint()->nNode == rPam.GetMark()->nNode)
+ {
+ break; // continue with AppendAllObjs()
+ }
+
// first, call CheckParaRedlineMerge on the first paragraph,
// to init flag on new merge range (if any) + 1st node post the merge
auto eMode(sw::FrameMode::Existing);
diff --git a/sw/source/core/doc/docbm.cxx b/sw/source/core/doc/docbm.cxx
index 7918e5db8dbe..347ed827694d 100644
--- a/sw/source/core/doc/docbm.cxx
+++ b/sw/source/core/doc/docbm.cxx
@@ -963,6 +963,7 @@ namespace sw { namespace mark
static bool isDeleteMark(
::sw::mark::MarkBase const*const pMark,
+ bool const isReplace,
SwNodeIndex const& rStt,
SwNodeIndex const& rEnd,
SwIndex const*const pSttIdx,
@@ -986,6 +987,8 @@ namespace sw { namespace mark
&& lcl_Lower(pMark->GetOtherMarkPos(), rEnd, pEndIdx);
// special case: completely in range, touching the end?
if ( pEndIdx != nullptr
+ && !(isReplace && IDocumentMarkAccess::GetType(*pMark)
+ == IDocumentMarkAccess::MarkType::BOOKMARK)
&& ( ( rbIsOtherPosInRange
&& pMark->GetMarkPos().nNode == rEnd
&& pMark->GetMarkPos().nContent == *pEndIdx )
@@ -1031,7 +1034,7 @@ namespace sw { namespace mark
return false;
}
- bool MarkManager::isBookmarkDeleted(SwPaM const& rPaM) const
+ bool MarkManager::isBookmarkDeleted(SwPaM const& rPaM, bool const isReplace) const
{
SwPosition const& rStart(*rPaM.Start());
SwPosition const& rEnd(*rPaM.End());
@@ -1046,7 +1049,7 @@ namespace sw { namespace mark
bool bIsPosInRange(false);
bool bIsOtherPosInRange(false);
- bool const bDeleteMark = isDeleteMark(pMark,
+ bool const bDeleteMark = isDeleteMark(pMark, isReplace,
rStart.nNode, rEnd.nNode, &rStart.nContent, &rEnd.nContent,
bIsPosInRange, bIsOtherPosInRange);
if (bDeleteMark
@@ -1086,7 +1089,7 @@ namespace sw { namespace mark
bool bIsPosInRange(false);
bool bIsOtherPosInRange(false);
- bool const bDeleteMark = isDeleteMark(pMark, rStt, rEnd, pSttIdx, pEndIdx, bIsPosInRange, bIsOtherPosInRange);
+ bool const bDeleteMark = isDeleteMark(pMark, false, rStt, rEnd, pSttIdx, pEndIdx, bIsPosInRange, bIsOtherPosInRange);
if ( bIsPosInRange
&& ( bIsOtherPosInRange
diff --git a/sw/source/core/doc/docedt.cxx b/sw/source/core/doc/docedt.cxx
index 1b93a7a56a78..d6072b4b3725 100644
--- a/sw/source/core/doc/docedt.cxx
+++ b/sw/source/core/doc/docedt.cxx
@@ -28,6 +28,7 @@
#include <mdiexp.hxx>
#include <mvsave.hxx>
#include <redline.hxx>
+#include <rolbck.hxx>
#include <rootfrm.hxx>
#include <splargs.hxx>
#include <swcrsr.hxx>
@@ -48,7 +49,7 @@ using namespace ::com::sun::star::i18n;
void RestFlyInRange( SaveFlyArr & rArr, const SwPosition& rStartPos,
- const SwNodeIndex* pInsertPos )
+ const SwNodeIndex* pInsertPos, bool const isForceToStartPos)
{
SwPosition aPos(rStartPos);
for(const SaveFly & rSave : rArr)
@@ -57,7 +58,7 @@ void RestFlyInRange( SaveFlyArr & rArr, const SwPosition& rStartPos,
SwFrameFormat* pFormat = rSave.pFrameFormat;
SwFormatAnchor aAnchor( pFormat->GetAnchor() );
- if (rSave.isAtInsertNode)
+ if (rSave.isAtInsertNode || isForceToStartPos)
{
if( pInsertPos != nullptr )
{
@@ -130,7 +131,7 @@ void SaveFlyInRange( const SwNodeRange& rRg, SaveFlyArr& rArr )
}
void SaveFlyInRange( const SwPaM& rPam, const SwPosition& rInsPos,
- SaveFlyArr& rArr, bool bMoveAllFlys )
+ SaveFlyArr& rArr, bool bMoveAllFlys, SwHistory *const pHistory)
{
SwFrameFormats& rFormats = *rPam.GetPoint()->nNode.GetNode().GetDoc()->GetSpzFrameFormats();
SwFrameFormat* pFormat;
@@ -176,6 +177,10 @@ void SaveFlyInRange( const SwPaM& rPam, const SwPosition& rInsPos,
|| (RndStdIds::FLY_AT_CHAR == pAnchor->GetAnchorId()
&& (bInsPos = (rInsPos == *pAPos))))
{
+ if (pHistory)
+ {
+ pHistory->AddChangeFlyAnchor(*pFormat);
+ }
SaveFly aSave( pAPos->nNode.GetIndex() - rSttNdIdx.GetIndex(),
(RndStdIds::FLY_AT_CHAR == pAnchor->GetAnchorId())
? (pAPos->nNode == rSttNdIdx)
diff --git a/sw/source/core/doc/doclay.cxx b/sw/source/core/doc/doclay.cxx
index ec4861fe39b2..5b3dc0ef3687 100644
--- a/sw/source/core/doc/doclay.cxx
+++ b/sw/source/core/doc/doclay.cxx
@@ -157,13 +157,12 @@ SwFlyFrameFormat* SwDoc::MakeFlySection_( const SwPosition& rAnchPos,
pFrameFormat = getIDocumentStylePoolAccess().GetFrameFormatFromPool( RES_POOLFRM_FRAME );
OUString sName;
- if( !mbInReading )
- switch( rNode.GetNodeType() )
- {
+ switch( rNode.GetNodeType() )
+ {
case SwNodeType::Grf: sName = GetUniqueGrfName(); break;
case SwNodeType::Ole: sName = GetUniqueOLEName(); break;
default: sName = GetUniqueFrameName(); break;
- }
+ }
SwFlyFrameFormat* pFormat = MakeFlyFrameFormat( sName, pFrameFormat );
// Create content and connect to the format.
@@ -1408,6 +1407,10 @@ const SwFlyFrameFormat* SwDoc::FindFlyByName( const OUString& rName, SwNodeType
void SwDoc::SetFlyName( SwFlyFrameFormat& rFormat, const OUString& rName )
{
+ if (rFormat.GetName() == rName)
+ {
+ return;
+ }
OUString sName( rName );
if( sName.isEmpty() || FindFlyByName( sName ) )
{
diff --git a/sw/source/core/doc/docnew.cxx b/sw/source/core/doc/docnew.cxx
index 984f2335bc45..6b041fa96c51 100644
--- a/sw/source/core/doc/docnew.cxx
+++ b/sw/source/core/doc/docnew.cxx
@@ -1054,19 +1054,19 @@ SwNodeIndex SwDoc::AppendDoc(const SwDoc& rSource, sal_uInt16 const nStartPageNu
{
SwNodeIndex aBreakIdx( GetNodes().GetEndOfContent(), -1 );
SwPosition aBreakPos( aBreakIdx );
- // InsertPageBreak just works on SwTextNode nodes, so make
- // sure the last node is one!
- bool bIsTextNode = aBreakIdx.GetNode().IsTextNode();
- if ( !bIsTextNode )
- getIDocumentContentOperations().AppendTextNode( aBreakPos );
- const OUString name = pTargetPageDesc->GetName();
- pTargetShell->InsertPageBreak( &name, nStartPageNumber );
- if ( !bIsTextNode )
- {
- pTargetShell->SttEndDoc( false );
- --aBreakIdx;
- GetNodes().Delete( aBreakIdx );
- }
+ // insert new node - will be removed at the end...
+ // (don't SplitNode() as it may move flys to the wrong node)
+ getIDocumentContentOperations().AppendTextNode(aBreakPos);
+ SwFormatPageDesc pageDesc(pTargetPageDesc);
+ pageDesc.SetNumOffset(nStartPageNumber);
+ // set break on the last paragraph
+ getIDocumentContentOperations().InsertPoolItem(SwPaM(aBreakPos),
+ pageDesc, SetAttrMode::DEFAULT, pTargetShell->GetLayout());
+ // tdf#148309 move to the last node - so that the "flush page break"
+ // code below will format the frame of the node with the page break,
+ // which is required for new page frames to be created! Else layout
+ // performance will be terrible.
+ pTargetShell->SttEndDoc(false);
// There is now a new empty text node on the new page. If it has
// any marks, those are from the previous page: move them back
@@ -1097,6 +1097,7 @@ SwNodeIndex SwDoc::AppendDoc(const SwDoc& rSource, sal_uInt16 const nStartPageNu
if ( !bDeletePrevious )
{
SAL_INFO( "sw.pageframe", "(Flush pagebreak AKA EndAllAction" );
+ assert(pTargetShell->GetCursor()->GetPoint()->nNode.GetNode().GetTextNode()->GetSwAttrSet().HasItem(RES_PAGEDESC));
pTargetShell->EndAllAction();
SAL_INFO( "sw.pageframe", "Flush changes AKA EndAllAction)" );
pTargetShell->StartAllAction();
diff --git a/sw/source/core/doc/textboxhelper.cxx b/sw/source/core/doc/textboxhelper.cxx
index ea57aa58319d..40d1bb607c1e 100644
--- a/sw/source/core/doc/textboxhelper.cxx
+++ b/sw/source/core/doc/textboxhelper.cxx
@@ -90,7 +90,8 @@ void SwTextBoxHelper::create(SwFrameFormat* pShape)
xPropertySet->setPropertyValue(UNO_NAME_SURROUND, uno::makeAny(text::WrapTextMode_THROUGH));
uno::Reference<container::XNamed> xNamed(xTextFrame, uno::UNO_QUERY);
- xNamed->setName(pShape->GetDoc()->GetUniqueFrameName());
+ assert(!xNamed->getName().isEmpty());
+ (void)xNamed;
// Link its text range to the original shape.
uno::Reference<text::XTextRange> xTextBox(xTextFrame, uno::UNO_QUERY_THROW);
diff --git a/sw/source/core/docnode/ndsect.cxx b/sw/source/core/docnode/ndsect.cxx
index 8c2efee0eb7e..6154cfc7d776 100644
--- a/sw/source/core/docnode/ndsect.cxx
+++ b/sw/source/core/docnode/ndsect.cxx
@@ -535,7 +535,7 @@ void SwDoc::DelSectionFormat( SwSectionFormat *pFormat, bool bDelNodes )
{
SwNodeIndex aUpdIdx( *pIdx );
SwPaM aPaM( *pSectNd->EndOfSectionNode(), *pSectNd );
- GetIDocumentUndoRedo().AppendUndo( std::make_unique<SwUndoDelete>( aPaM ));
+ GetIDocumentUndoRedo().AppendUndo(std::make_unique<SwUndoDelete>(aPaM, SwDeleteFlags::Default));
if( pFootnoteEndAtTextEnd )
GetFootnoteIdxs().UpdateFootnote( aUpdIdx );
getIDocumentState().SetModified();
diff --git a/sw/source/core/docnode/ndtbl.cxx b/sw/source/core/docnode/ndtbl.cxx
index 15a49729ce51..b12fc72228e2 100644
--- a/sw/source/core/docnode/ndtbl.cxx
+++ b/sw/source/core/docnode/ndtbl.cxx
@@ -2040,7 +2040,7 @@ bool SwDoc::DeleteRowCol( const SwSelBoxes& rBoxes, bool bColumn )
bSavePageBreak = true;
}
}
- std::unique_ptr<SwUndoDelete> pUndo(new SwUndoDelete( aPaM ));
+ std::unique_ptr<SwUndoDelete> pUndo(new SwUndoDelete(aPaM, SwDeleteFlags::Default));
if( bNewTextNd )
pUndo->SetTableDelLastNd();
pUndo->SetPgBrkFlags( bSavePageBreak, bSavePageDesc );
diff --git a/sw/source/core/docnode/node.cxx b/sw/source/core/docnode/node.cxx
index 955e113f2768..0bf2729cd02c 100644
--- a/sw/source/core/docnode/node.cxx
+++ b/sw/source/core/docnode/node.cxx
@@ -1384,6 +1384,12 @@ void SwContentNode::DelFrames(SwRootFrame const*const pLayout)
pMerged->pParaPropsNode = pNode->GetTextNode();
break;
}
+ else if (pMerged->pFirstNode->GetIndex() == i)
+ { // this can only happen when called from CheckParaRedlineMerge()
+ // and the pMerged will be deleted anyway
+ pMerged->pParaPropsNode = pMerged->pFirstNode;
+ break;
+ }
}
assert(pMerged->listener.IsListeningTo(pMerged->pParaPropsNode));
}
diff --git a/sw/source/core/docnode/nodes.cxx b/sw/source/core/docnode/nodes.cxx
index 2a2bef4f4488..28088536c7ba 100644
--- a/sw/source/core/docnode/nodes.cxx
+++ b/sw/source/core/docnode/nodes.cxx
@@ -43,6 +43,7 @@
#include <fmtftn.hxx>
#include <docsh.hxx>
+#include <rootfrm.hxx>
typedef std::vector<SwStartNode*> SwStartNodePointers;
@@ -2035,90 +2036,108 @@ SwContentNode* SwNodes::GoPrevSection( SwNodeIndex * pIdx,
return nullptr;
}
-//TODO: improve documentation
//TODO: The inventor of the "single responsibility principle" will be crying if you ever show this code to him!
-/** find the next/previous ContentNode or a table node with frames
+/** find the next/previous ContentNode or table node that should have layout
+ * frames that are siblings to the ones of the node at rFrameIdx.
*
- * If no pEnd is given, search is started with FrameIndex; otherwise
- * search is started with the one before rFrameIdx and after pEnd.
+ * Search is started backward with the one before rFrameIdx and
+ * forward after pEnd.
*
- * @param rFrameIdx node with frames to search in
- * @param pEnd ???
- * @return result node; 0 (!!!) if not found
+ * @param rFrameIdx in: node with frames to search in; out: found node
+ * @param pEnd last node after rFrameIdx that should be excluded from search
+ * @return result node; 0 if not found
*/
SwNode* SwNodes::FindPrvNxtFrameNode( SwNodeIndex& rFrameIdx,
- const SwNode* pEnd ) const
+ SwNode const*const pEnd,
+ SwRootFrame const*const pLayout) const
{
+ assert(pEnd != nullptr); // every caller currently
+
SwNode* pFrameNd = nullptr;
// no layout -> skip
if( GetDoc()->getIDocumentLayoutAccess().GetCurrentViewShell() )
{
- SwNode* pSttNd = &rFrameIdx.GetNode();
+ SwNode *const pSttNd = &rFrameIdx.GetNode();
- // move of a hidden section?
- SwSectionNode* pSectNd = pSttNd->IsSectionNode()
+ // inside a hidden section?
+ SwSectionNode *const pSectNd = pSttNd->IsSectionNode()
? pSttNd->StartOfSectionNode()->FindSectionNode()
: pSttNd->FindSectionNode();
if( !( pSectNd && pSectNd->GetSection().CalcHiddenFlag() ) )
{
// in a table in table situation we have to assure that we don't leave the
// outer table cell when the inner table is looking for a PrvNxt...
- SwTableNode* pTableNd = pSttNd->IsTableNode()
+ SwTableNode *const pTableNd = pSttNd->IsTableNode()
? pSttNd->StartOfSectionNode()->FindTableNode()
: pSttNd->FindTableNode();
SwNodeIndex aIdx( rFrameIdx );
- SwNode* pNd;
- if( pEnd )
- {
- --aIdx;
- pNd = &aIdx.GetNode();
- }
- else
- pNd = pSttNd;
-
- if( ( pFrameNd = pNd )->IsContentNode() )
- rFrameIdx = aIdx;
-
- // search forward or backward for a content node
- else if( nullptr != ( pFrameNd = GoPrevSection( &aIdx, true, false )) &&
- ::CheckNodesRange( aIdx, rFrameIdx, true ) &&
- // Never out of the table at the start
- pFrameNd->FindTableNode() == pTableNd &&
- // Bug 37652: Never out of the table at the end
- (!pFrameNd->FindTableNode() || pFrameNd->FindTableBoxStartNode()
- == pSttNd->FindTableBoxStartNode() ) &&
- (!pSectNd || pSttNd->IsSectionNode() ||
- pSectNd->GetIndex() < pFrameNd->GetIndex())
- )
+
+ // search backward for a content or table node
+
+ --aIdx;
+ pFrameNd = &aIdx.GetNode();
+
+ do
{
- rFrameIdx = aIdx;
+ if (pFrameNd->IsContentNode())
+ {
+ // TODO why does this not check for nested tables like forward direction
+ rFrameIdx = aIdx;
+ return pFrameNd;
+ }
+ else if (pFrameNd->IsEndNode() && pFrameNd->StartOfSectionNode()->IsTableNode())
+ {
+ if (pLayout == nullptr
+ || !pLayout->IsHideRedlines()
+ || pFrameNd->StartOfSectionNode()->GetRedlineMergeFlag() != SwNode::Merge::Hidden)
+ {
+ pFrameNd = pFrameNd->StartOfSectionNode();
+ rFrameIdx = *pFrameNd;
+ return pFrameNd;
+ }
+ else
+ {
+ aIdx = *pFrameNd->StartOfSectionNode();
+ --aIdx;
+ pFrameNd = &aIdx.GetNode();
+ }
+ }
+ else
+ {
+ pFrameNd = GoPrevSection( &aIdx, true, false );
+ if ( nullptr != pFrameNd && !(
+ ::CheckNodesRange( aIdx, rFrameIdx, true ) &&
+ // Never out of the table at the start
+ pFrameNd->FindTableNode() == pTableNd &&
+ // Bug 37652: Never out of the table at the end
+ (!pFrameNd->FindTableNode() || pFrameNd->FindTableBoxStartNode()
+ == pSttNd->FindTableBoxStartNode() ) &&
+ (!pSectNd || pSttNd->IsSectionNode() ||
+ pSectNd->GetIndex() < pFrameNd->GetIndex())
+ ))
+ {
+ pFrameNd = nullptr; // no preceding content node, stop search
+ }
+ }
}
- else
+ while (pFrameNd != nullptr);
+
+ // search forward for a content or table node
+
+ aIdx = pEnd->GetIndex() + 1;
+ pFrameNd = &aIdx.GetNode();
+
+ do
{
- if( pEnd )
- aIdx = pEnd->GetIndex() + 1;
- else
- aIdx = rFrameIdx;
-
- // NEVER leave the section when doing this!
- if( ( pEnd && ( pFrameNd = &aIdx.GetNode())->IsContentNode() ) ||
- ( nullptr != ( pFrameNd = GoNextSection( &aIdx, true, false )) &&
- ::CheckNodesRange( aIdx, rFrameIdx, true ) &&
- ( pFrameNd->FindTableNode() == pTableNd &&
- // NEVER go out of the table cell at the end
- (!pFrameNd->FindTableNode() || pFrameNd->FindTableBoxStartNode()
- == pSttNd->FindTableBoxStartNode() ) ) &&
- (!pSectNd || pSttNd->IsSectionNode() ||
- pSectNd->EndOfSectionIndex() > pFrameNd->GetIndex())
- ))
+ if (pFrameNd->IsContentNode())
{
// Undo when merging a table with one before, if there is also one after it.
// However, if the node is in a table, it needs to be returned if the
// SttNode is a section or a table!
- SwTableNode* pTableNode;
+ SwTableNode *const pTableNode = pFrameNd->FindTableNode();
if (pSttNd->IsTableNode() &&
- nullptr != (pTableNode = pFrameNd->FindTableNode()) &&
+ nullptr != pTableNode &&
// TABLE IN TABLE:
pTableNode != pSttNd->StartOfSectionNode()->FindTableNode())
{
@@ -2126,23 +2145,54 @@ SwNode* SwNodes::FindPrvNxtFrameNode( SwNodeIndex& rFrameIdx,
rFrameIdx = *pFrameNd;
}
else
+ {
rFrameIdx = aIdx;
+ }
+ return pFrameNd;
}
- else if( pNd->IsEndNode() && pNd->StartOfSectionNode()->IsTableNode() )
+ else if (pFrameNd->IsTableNode())
{
- pFrameNd = pNd->StartOfSectionNode();
- rFrameIdx = *pFrameNd;
+ if (pLayout == nullptr
+ || !pLayout->IsHideRedlines()
+ || pFrameNd->GetRedlineMergeFlag() != SwNode::Merge::Hidden)
+ {
+ rFrameIdx = *pFrameNd;
+ return pFrameNd;
+ }
+ else
+ {
+ aIdx = *pFrameNd->EndOfSectionNode();
+ ++aIdx;
+ pFrameNd = &aIdx.GetNode();
+ }
}
else
{
- if( pEnd )
- aIdx = pEnd->GetIndex() + 1;
- else
- aIdx = rFrameIdx.GetIndex() + 1;
+ pFrameNd = GoNextSection( &aIdx, true, false );
+ // NEVER leave the section when doing this!
+ if (pFrameNd
+ && !(::CheckNodesRange(aIdx, rFrameIdx, true)
+ && (pFrameNd->FindTableNode() == pTableNd &&
+ // NEVER go out of the table cell at the end
+ (!pFrameNd->FindTableNode() || pFrameNd->FindTableBoxStartNode()
+ == pSttNd->FindTableBoxStartNode()))
+ && (!pSectNd || pSttNd->IsSectionNode() ||
+ pSectNd->EndOfSectionIndex() > pFrameNd->GetIndex()))
+ )
+ {
+ pFrameNd = nullptr; // no following content node, stop search
+ }
+ }
+ }
+ while (pFrameNd != nullptr);
- if( (pFrameNd = &aIdx.GetNode())->IsTableNode() )
- rFrameIdx = aIdx;
- else
+ // probably this is dead code, because the GoNextSection()
+ // should have ended up in the first text node in the table and
+ // then checked it's in a table?
+ {
+ aIdx = pEnd->GetIndex() + 1;
+
+ pFrameNd = &aIdx.GetNode();
{
pFrameNd = nullptr;
@@ -2160,9 +2210,9 @@ SwNode* SwNodes::FindPrvNxtFrameNode( SwNodeIndex& rFrameIdx,
{
rFrameIdx = aIdx;
pFrameNd = &aIdx.GetNode();
+ assert(!"this isn't dead code?");
}
}
- }
}
}
}
diff --git a/sw/source/core/edit/acorrect.cxx b/sw/source/core/edit/acorrect.cxx
index 7304e6e7b702..286d4d078de5 100644
--- a/sw/source/core/edit/acorrect.cxx
+++ b/sw/source/core/edit/acorrect.cxx
@@ -346,8 +346,11 @@ OUString const* SwAutoCorrDoc::GetPrevPara(bool const bAtNormalPos)
}
sw::GotoPrevLayoutTextFrame(*pIdx, rEditSh.GetLayout());
}
- if (pFrame && 0 == pFrame->GetTextNodeForParaProps()->GetAttrOutlineLevel())
+ if (pFrame && !pFrame->GetText().isEmpty() &&
+ 0 == pFrame->GetTextNodeForParaProps()->GetAttrOutlineLevel())
+ {
pStr = & pFrame->GetText();
+ }
if( bUndoIdInitialized )
bUndoIdInitialized = true;
diff --git a/sw/source/core/edit/autofmt.cxx b/sw/source/core/edit/autofmt.cxx
index a3925246f32f..6e4bccb55bcc 100644
--- a/sw/source/core/edit/autofmt.cxx
+++ b/sw/source/core/edit/autofmt.cxx
@@ -1196,7 +1196,7 @@ void SwAutoFormat::DeleteSelImpl(SwPaM & rDelPam, SwPaM & rPamToCorrect)
SwPaM* pPrev = rPamToCorrect.GetPrev();
rPamToCorrect.GetRingContainer().merge( pShCursor->GetRingContainer() );
- m_pEditShell->DeleteSel( rDelPam );
+ m_pEditShell->DeleteSel(rDelPam, true);
// and remove Pam again:
SwPaM* p;
@@ -1212,7 +1212,7 @@ void SwAutoFormat::DeleteSelImpl(SwPaM & rDelPam, SwPaM & rPamToCorrect)
m_pCurTextFrame = GetFrame(*m_pCurTextNd); // keep it up to date
}
else
- m_pEditShell->DeleteSel( rDelPam );
+ m_pEditShell->DeleteSel(rDelPam, true);
}
bool SwAutoFormat::DeleteJoinCurNextPara(SwTextFrame const*const pNextFrame,
@@ -1256,7 +1256,7 @@ void SwAutoFormat::DelEmptyLine( bool bTstNextPara )
// delete blanks in empty paragraph
m_aDelPam.DeleteMark();
*m_aDelPam.GetPoint() = m_pCurTextFrame->MapViewToModelPos(
- TextFrameIndex(m_pCurTextFrame->GetText().getLength()));
+ TextFrameIndex(0));
m_aDelPam.SetMark();
m_aDelPam.GetMark()->nNode = m_pCurTextFrame->GetTextNodeFirst()->GetIndex() - 1;
@@ -1275,16 +1275,25 @@ void SwAutoFormat::DelEmptyLine( bool bTstNextPara )
if( pTNd )
{
m_aDelPam.GetMark()->nContent.Assign( pTNd, 0 );
- *m_aDelPam.GetPoint() = m_pCurTextFrame->MapViewToModelPos(TextFrameIndex(0));
+ *m_aDelPam.GetPoint() = m_pCurTextFrame->MapViewToModelPos(
+ TextFrameIndex(m_pCurTextFrame->GetText().getLength()));
}
}
- else
- {
- *m_aDelPam.GetMark() = m_pCurTextFrame->MapViewToModelPos(TextFrameIndex(0));
- pTNd = m_pCurTextNd;
- }
if( pTNd )
- DeleteSel( m_aDelPam );
+ { // join with previous or next paragraph
+ DeleteSel(m_aDelPam);
+ }
+ assert(m_aDelPam.GetNode().IsTextNode());
+ assert(!m_aDelPam.HasMark());
+ m_aDelPam.SetMark(); // mark remains at join position
+ m_pCurTextFrame = GetFrame(*m_aDelPam.GetNode().GetTextNode());
+ // replace until the end of the merged paragraph
+ *m_aDelPam.GetPoint() = m_pCurTextFrame->MapViewToModelPos(
+ TextFrameIndex(m_pCurTextFrame->GetText().getLength()));
+ if (*m_aDelPam.GetPoint() != *m_aDelPam.GetMark())
+ { // tdf#137245 replace (not delete) to preserve any flys
+ m_pDoc->getIDocumentContentOperations().ReplaceRange(m_aDelPam, "", false);
+ }
m_aDelPam.DeleteMark();
ClearRedlineText();
diff --git a/sw/source/core/edit/edatmisc.cxx b/sw/source/core/edit/edatmisc.cxx
index e8f82956106f..c70c90182a0b 100644
--- a/sw/source/core/edit/edatmisc.cxx
+++ b/sw/source/core/edit/edatmisc.cxx
@@ -184,8 +184,8 @@ void SwEditShell::SetAttrSet( const SfxItemSet& rSet, SetAttrMode nFlags, SwPaM*
GetDoc()->getIDocumentContentOperations().InsertItemSet(*pCursor, rSet, nFlags, GetLayout());
}
- EndAllAction();
GetDoc()->getIDocumentRedlineAccess().SetRedlineFlags( eOldMode );
+ EndAllAction();
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/core/edit/eddel.cxx b/sw/source/core/edit/eddel.cxx
index 74e845353566..ac60b7343ac4 100644
--- a/sw/source/core/edit/eddel.cxx
+++ b/sw/source/core/edit/eddel.cxx
@@ -38,7 +38,7 @@
#include <strings.hrc>
#include <vector>
-void SwEditShell::DeleteSel( SwPaM& rPam, bool* pUndo )
+void SwEditShell::DeleteSel(SwPaM& rPam, bool const isArtificialSelection, bool *const pUndo)
{
bool bSelectAll = StartsWithTable() && ExtendedSelectedAll();
// only for selections
@@ -121,7 +121,8 @@ void SwEditShell::DeleteSel( SwPaM& rPam, bool* pUndo )
pPam = pNewPam.get();
}
// delete everything
- GetDoc()->getIDocumentContentOperations().DeleteAndJoin(*pPam);
+ GetDoc()->getIDocumentContentOperations().DeleteAndJoin(*pPam,
+ isArtificialSelection ? SwDeleteFlags::ArtificialSelection : SwDeleteFlags::Default);
SaveTableBoxContent( pPam->GetPoint() );
}
@@ -129,7 +130,7 @@ void SwEditShell::DeleteSel( SwPaM& rPam, bool* pUndo )
rPam.DeleteMark();
}
-bool SwEditShell::Delete()
+bool SwEditShell::Delete(bool const isArtificialSelection)
{
SET_CURR_SHELL( this );
bool bRet = false;
@@ -148,7 +149,7 @@ bool SwEditShell::Delete()
for(SwPaM& rPaM : GetCursor()->GetRingContainer())
{
- DeleteSel( rPaM, &bUndo );
+ DeleteSel(rPaM, isArtificialSelection, &bUndo);
}
// If undo container then close here
@@ -326,7 +327,7 @@ bool SwEditShell::Replace( const OUString& rNewStr, bool bRegExpRplc )
SET_CURR_SHELL( this );
bool bRet = false;
- if( !HasReadonlySel() )
+ if (!HasReadonlySel(true))
{
StartAllAction();
GetDoc()->GetIDocumentUndoRedo().StartUndo(SwUndoId::EMPTY, nullptr);
diff --git a/sw/source/core/edit/edfcol.cxx b/sw/source/core/edit/edfcol.cxx
index abbed5e40e94..1d68caa68d4f 100644
--- a/sw/source/core/edit/edfcol.cxx
+++ b/sw/source/core/edit/edfcol.cxx
@@ -2202,8 +2202,7 @@ void SwEditShell::SetTextFormatColl(SwTextFormatColl *pFormat,
GetDoc()->GetIDocumentUndoRedo().StartUndo(SwUndoId::SETFMTCOLL, &aRewriter);
for(SwPaM& rPaM : GetCursor()->GetRingContainer())
{
-
- if ( !rPaM.HasReadonlySel( GetViewOptions()->IsFormView() ) )
+ if (!rPaM.HasReadonlySel( GetViewOptions()->IsFormView(), true))
{
// tdf#105413 turn off ShowChanges mode for the next loops to apply styles permanently with redlining,
// ie. in all directly preceding deleted paragraphs at the actual cursor positions
diff --git a/sw/source/core/edit/edglbldc.cxx b/sw/source/core/edit/edglbldc.cxx
index 3d916edc5fe0..c5ea9081d043 100644
--- a/sw/source/core/edit/edglbldc.cxx
+++ b/sw/source/core/edit/edglbldc.cxx
@@ -272,7 +272,7 @@ void SwEditShell::DeleteGlobalDocContent( const SwGlblDocContents& rArr ,
rPos.nNode = pMyDoc->GetNodes().GetEndOfContent();
--rPos.nNode;
if( !pMyDoc->getIDocumentContentOperations().DelFullPara( *pCursor ) )
- Delete();
+ Delete(false);
}
break;
diff --git a/sw/source/core/edit/editsh.cxx b/sw/source/core/edit/editsh.cxx
index 8f84ce42ed75..699997003daf 100644
--- a/sw/source/core/edit/editsh.cxx
+++ b/sw/source/core/edit/editsh.cxx
@@ -663,7 +663,7 @@ bool SwEditShell::InsertURL( const SwFormatINetFormat& rFormat, const OUString&
bDelText = bInsText = false;
if( bDelText )
- Delete();
+ Delete(true);
}
else if( pCursor->IsMultiSelection() && rFormat.GetValue() == rStr )
bInsText = false;
@@ -732,7 +732,7 @@ void SwEditShell::DelINetAttrWithText()
{
bool bRet = SelectTextAttr( RES_TXTATR_INETFMT, false );
if( bRet )
- DeleteSel( *GetCursor() );
+ DeleteSel(*GetCursor(), true);
}
/// Set the DontExpand flag at the text character attributes
diff --git a/sw/source/core/edit/edlingu.cxx b/sw/source/core/edit/edlingu.cxx
index 69446dd9b060..8c50eadd8740 100644
--- a/sw/source/core/edit/edlingu.cxx
+++ b/sw/source/core/edit/edlingu.cxx
@@ -823,11 +823,16 @@ void SwEditShell::HandleCorrectionError(const OUString& aText, SwPosition aPos,
SwRect& rSelectRect)
{
// save the start and end positions of the line and the starting point
+ SwNode const& rNode(GetCursor()->GetPoint()->nNode.GetNode());
Push();
LeftMargin();
- const sal_Int32 nLineStart = GetCursor()->GetPoint()->nContent.GetIndex();
+ const sal_Int32 nLineStart = &rNode == &GetCursor()->GetPoint()->nNode.GetNode()
+ ? GetCursor()->GetPoint()->nContent.GetIndex()
+ : 0;
RightMargin();
- const sal_Int32 nLineEnd = GetCursor()->GetPoint()->nContent.GetIndex();
+ const sal_Int32 nLineEnd = &rNode == &GetCursor()->GetPoint()->nNode.GetNode()
+ ? GetCursor()->GetPoint()->nContent.GetIndex()
+ : rNode.GetTextNode()->Len();
Pop(PopMode::DeleteCurrent);
// make sure the selection build later from the data below does
@@ -909,8 +914,14 @@ uno::Reference< XSpellAlternatives >
if (pWrong->InWrongWord(nBegin, nLen) && !pNode->IsSymbolAt(nBegin))
{
const OUString aText(pNode->GetText().copy(nBegin, nLen));
- OUString aWord = aText.replaceAll(OUStringChar(CH_TXTATR_BREAKWORD), "")
- .replaceAll(OUStringChar(CH_TXTATR_INWORD), "");
+ // TODO: this doesn't handle fieldmarks properly
+ ModelToViewHelper const aConversionMap(*pNode, GetLayout(),
+ ExpandMode::ExpandFields | ExpandMode::ExpandFootnote | ExpandMode::ReplaceMode
+ | (GetLayout()->IsHideRedlines() ? ExpandMode::HideDeletions : ExpandMode(0))
+ | (GetViewOptions()->IsShowHiddenChar() ? ExpandMode(0) : ExpandMode::HideInvisible));
+ auto const nBeginView(aConversionMap.ConvertToViewPosition(nBegin));
+ OUString const aWord(aConversionMap.getViewText().copy(nBeginView,
+ aConversionMap.ConvertToViewPosition(nBegin+nLen) - nBeginView));
uno::Reference< XSpellChecker1 > xSpell( ::GetSpellChecker() );
if( xSpell.is() )
diff --git a/sw/source/core/edit/edws.cxx b/sw/source/core/edit/edws.cxx
index dd5381cbb9eb..4991b9376a89 100644
--- a/sw/source/core/edit/edws.cxx
+++ b/sw/source/core/edit/edws.cxx
@@ -265,6 +265,12 @@ void SwEditShell::AutoCorrect( SvxAutoCorrect& rACorr, bool bInsert,
// FIXME: this _must_ be called with reference to the actual node text!
SwTextFrame const*const pFrame(static_cast<SwTextFrame const*>(pTNd->getLayoutFrame(GetLayout())));
TextFrameIndex const nPos(pFrame->MapModelToViewPos(*pCursor->GetPoint()));
+ // tdf#147414 sw_redlinehide: if cursor moved backward, it may be at the
+ // start of a delete redline - but MapViewToModelPos() always returns end
+ // of redline and it will be called when AutoCorrect actually inserts
+ // something - so first normalize cursor point to end of redline so that
+ // point will then be moved forward when something is inserted.
+ *pCursor->GetPoint() = pFrame->MapViewToModelPos(nPos);
OUString const& rMergedText(pFrame->GetText());
rACorr.DoAutoCorrect( aSwAutoCorrDoc,
rMergedText, sal_Int32(nPos),
diff --git a/sw/source/core/fields/reffld.cxx b/sw/source/core/fields/reffld.cxx
index c4825a9343df..9aaf9b2b9f34 100644
--- a/sw/source/core/fields/reffld.cxx
+++ b/sw/source/core/fields/reffld.cxx
@@ -771,7 +771,7 @@ static std::pair<OUString, bool> MakeRefNumStr(
SwTextNode const& rTextNodeOfReferencedItem(pLayout
? *sw::GetParaPropsNode(*pLayout, i_rTextNodeOfReferencedItem)
: i_rTextNodeOfReferencedItem);
- if ( rTextNodeOfReferencedItem.HasNumber() &&
+ if ( rTextNodeOfReferencedItem.HasNumber(pLayout) &&
rTextNodeOfReferencedItem.IsCountedInList() )
{
OSL_ENSURE( rTextNodeOfReferencedItem.GetNum(pLayout),
@@ -795,7 +795,7 @@ static std::pair<OUString, bool> MakeRefNumStr(
== rTextNodeOfReferencedItem.FindFooterStartNode() )
{
const SwNodeNum* pNodeNumForTextNodeOfField( nullptr );
- if ( rTextNodeOfField.HasNumber() &&
+ if ( rTextNodeOfField.HasNumber(pLayout) &&
rTextNodeOfField.GetNumRule() == rTextNodeOfReferencedItem.GetNumRule() )
{
pNodeNumForTextNodeOfField = rTextNodeOfField.GetNum(pLayout);
diff --git a/sw/source/core/frmedt/fecopy.cxx b/sw/source/core/frmedt/fecopy.cxx
index c2470b997a93..8589b8eed579 100644
--- a/sw/source/core/frmedt/fecopy.cxx
+++ b/sw/source/core/frmedt/fecopy.cxx
@@ -1021,7 +1021,7 @@ bool SwFEShell::Paste( SwDoc* pClpDoc, bool bNestedTable )
{
if( bDelTable && IsTableMode() )
{
- SwEditShell::Delete();
+ SwEditShell::Delete(false);
bDelTable = false;
}
diff --git a/sw/source/core/inc/DocumentContentOperationsManager.hxx b/sw/source/core/inc/DocumentContentOperationsManager.hxx
index 2d600b6ff8ba..994812dc14b4 100644
--- a/sw/source/core/inc/DocumentContentOperationsManager.hxx
+++ b/sw/source/core/inc/DocumentContentOperationsManager.hxx
@@ -48,6 +48,7 @@ public:
// Add optional parameter <bForceJoinNext>, default value <false>
// Needed for hiding of deletion redlines
bool DeleteAndJoin( SwPaM&,
+ SwDeleteFlags flags = SwDeleteFlags::Default,
const bool bForceJoinNext = false ) override;
bool MoveRange(SwPaM&, SwPosition&, SwMoveFlags) override;
@@ -159,10 +160,10 @@ public:
private:
SwDoc& m_rDoc;
- bool DeleteAndJoinImpl(SwPaM&, const bool);
- bool DeleteAndJoinWithRedlineImpl(SwPaM&, const bool unused = false);
- bool DeleteRangeImpl(SwPaM&, const bool unused = false);
- bool DeleteRangeImplImpl(SwPaM &);
+ bool DeleteAndJoinImpl(SwPaM&, SwDeleteFlags, const bool);
+ bool DeleteAndJoinWithRedlineImpl(SwPaM&, SwDeleteFlags, const bool unused = false);
+ bool DeleteRangeImpl(SwPaM&, SwDeleteFlags, const bool unused = false);
+ bool DeleteRangeImplImpl(SwPaM &, SwDeleteFlags);
bool ReplaceRangeImpl(SwPaM&, OUString const&, const bool);
SwFlyFrameFormat* InsNoTextNode( const SwPosition&rPos, SwNoTextNode*,
const SfxItemSet* pFlyAttrSet,
diff --git a/sw/source/core/inc/MarkManager.hxx b/sw/source/core/inc/MarkManager.hxx
index 762c21e59a85..1efb30f3e121 100644
--- a/sw/source/core/inc/MarkManager.hxx
+++ b/sw/source/core/inc/MarkManager.hxx
@@ -78,7 +78,7 @@ namespace sw {
virtual const_iterator_t findMark(const OUString& rName) const override;
// bookmarks
- virtual bool isBookmarkDeleted(SwPaM const& rPaM) const override;
+ virtual bool isBookmarkDeleted(SwPaM const& rPaM, bool isReplace) const override;
virtual const_iterator_t getBookmarksBegin() const override;
virtual const_iterator_t getBookmarksEnd() const override;
virtual sal_Int32 getBookmarksCount() const override;
diff --git a/sw/source/core/inc/UndoDelete.hxx b/sw/source/core/inc/UndoDelete.hxx
index a4eb066581c9..b4ae4544d669 100644
--- a/sw/source/core/inc/UndoDelete.hxx
+++ b/sw/source/core/inc/UndoDelete.hxx
@@ -27,6 +27,7 @@
class SwRedlineSaveDatas;
class SwTextNode;
+enum class SwDeleteFlags;
namespace sfx2 {
class MetadatableUndo;
@@ -59,6 +60,7 @@ class SwUndoDelete
bool m_bResetPgDesc : 1; // TRUE: reset PgDsc on following node
bool m_bResetPgBrk : 1; // TRUE: reset PgBreak on following node
bool const m_bFromTableCopy : 1; // TRUE: called by SwUndoTableCpyTable
+ SwDeleteFlags m_DeleteFlags;
bool SaveContent( const SwPosition* pStt, const SwPosition* pEnd,
SwTextNode* pSttTextNd, SwTextNode* pEndTextNd );
@@ -66,6 +68,7 @@ class SwUndoDelete
public:
SwUndoDelete(
SwPaM&,
+ SwDeleteFlags flags,
bool bFullPara = false,
bool bCalledByTableCpy = false );
virtual ~SwUndoDelete() override;
diff --git a/sw/source/core/inc/UndoRedline.hxx b/sw/source/core/inc/UndoRedline.hxx
index 38ecd86314cb..ada3c34fad7f 100644
--- a/sw/source/core/inc/UndoRedline.hxx
+++ b/sw/source/core/inc/UndoRedline.hxx
@@ -22,6 +22,7 @@
#include <memory>
#include <undobj.hxx>
+#include <IDocumentContentOperations.hxx>
struct SwSortOptions;
class SwRangeRedline;
@@ -52,17 +53,22 @@ public:
class SwUndoRedlineDelete : public SwUndoRedline
{
+private:
+ std::unique_ptr<SwHistory> m_pHistory; ///< for moved fly anchors
+ //
bool bCanGroup : 1;
bool bIsDelim : 1;
bool bIsBackspace : 1;
OUString m_sRedlineText;
+ void InitHistory(SwPaM const& rRange);
+
virtual void UndoRedlineImpl(SwDoc & rDoc, SwPaM & rPam) override;
virtual void RedoRedlineImpl(SwDoc & rDoc, SwPaM & rPam) override;
public:
- SwUndoRedlineDelete( const SwPaM& rRange, SwUndoId nUserId );
+ SwUndoRedlineDelete(const SwPaM& rRange, SwUndoId nUserId, SwDeleteFlags flags = SwDeleteFlags::Default);
virtual SwRewriter GetRewriter() const override;
bool CanGrouping( const SwUndoRedlineDelete& rPrev );
diff --git a/sw/source/core/inc/UndoTable.hxx b/sw/source/core/inc/UndoTable.hxx
index ecfa87745ef7..2b51dbdbb111 100644
--- a/sw/source/core/inc/UndoTable.hxx
+++ b/sw/source/core/inc/UndoTable.hxx
@@ -42,6 +42,14 @@ class SwStartNode;
class SwTableNode;
class SwTableAutoFormat;
class SwTableSortBoxes;
+class SwContentNode;
+class SwCursorShell;
+
+namespace sw {
+
+void NotifyTableCollapsedParagraph(const SwContentNode* pNode, SwCursorShell *const pShell);
+
+}
class SwUndoInsTable : public SwUndo
{
diff --git a/sw/source/core/inc/mvsave.hxx b/sw/source/core/inc/mvsave.hxx
index c472b6f7bc1a..5b84b5e10819 100644
--- a/sw/source/core/inc/mvsave.hxx
+++ b/sw/source/core/inc/mvsave.hxx
@@ -34,6 +34,7 @@ class SwDoc;
class SwFormatAnchor;
class SwFrameFormat;
class SwIndex;
+class SwHistory;
class SwNodeIndex;
class SwNodeRange;
class SwPaM;
@@ -116,10 +117,10 @@ struct SaveFly
typedef std::deque< SaveFly > SaveFlyArr;
void RestFlyInRange( SaveFlyArr& rArr, const SwPosition& rSttIdx,
- const SwNodeIndex* pInsPos );
+ const SwNodeIndex* pInsPos, bool isForceToStartPos = false);
void SaveFlyInRange( const SwNodeRange& rRg, SaveFlyArr& rArr );
void SaveFlyInRange( const SwPaM& rPam, const SwPosition& rInsPos,
- SaveFlyArr& rArr, bool bMoveAllFlys );
+ SaveFlyArr& rArr, bool bMoveAllFlys, SwHistory * pHistory = nullptr);
void DelFlyInRange( const SwNodeIndex& rMkNdIdx,
const SwNodeIndex& rPtNdIdx,
diff --git a/sw/source/core/inc/rootfrm.hxx b/sw/source/core/inc/rootfrm.hxx
index 484ff172e25d..44d7a5800032 100644
--- a/sw/source/core/inc/rootfrm.hxx
+++ b/sw/source/core/inc/rootfrm.hxx
@@ -76,7 +76,7 @@ using SwDestroyList = std::set<SwSectionFrame*>;
/// The root element of a Writer document layout. Lower frames are expected to
/// be SwPageFrame instances.
-class SAL_DLLPUBLIC_RTTI SwRootFrame: public SwLayoutFrame
+class SW_DLLPUBLIC SwRootFrame: public SwLayoutFrame
{
// Needs to disable the Superfluous temporarily
friend void AdjustSizeChgNotify( SwRootFrame *pRoot );
diff --git a/sw/source/core/layout/atrfrm.cxx b/sw/source/core/layout/atrfrm.cxx
index 79235781896d..884d791caebe 100644
--- a/sw/source/core/layout/atrfrm.cxx
+++ b/sw/source/core/layout/atrfrm.cxx
@@ -3363,7 +3363,7 @@ SwHandleAnchorNodeChg::~SwHandleAnchorNodeChg() COVERITY_NOEXCEPT_FALSE
mpWrtShell->SwEditShell::Copy(mpWrtShell);
mpWrtShell->DestroyCursor();
- mpWrtShell->Delete();
+ mpWrtShell->Delete(false);
mpWrtShell->Pop(SwCursorShell::PopMode::DeleteCurrent);
}
diff --git a/sw/source/core/layout/frmtool.cxx b/sw/source/core/layout/frmtool.cxx
index a861dd60013b..9b3386a9b4df 100644
--- a/sw/source/core/layout/frmtool.cxx
+++ b/sw/source/core/layout/frmtool.cxx
@@ -69,6 +69,7 @@
#include <undobj.hxx>
#include <DocumentSettingManager.hxx>
#include <IDocumentDrawModelAccess.hxx>
+#include <IDocumentLayoutAccess.hxx>
#include <IDocumentTimerAccess.hxx>
#include <IDocumentRedlineAccess.hxx>
#include <IDocumentFieldsAccess.hxx>
@@ -1161,8 +1162,7 @@ void RemoveHiddenObjsOfNode(SwTextNode const& rNode,
{
SwFormatAnchor const& rAnchor = pFrameFormat->GetAnchor();
if (rAnchor.GetAnchorId() == RndStdIds::FLY_AT_CHAR
- || (rAnchor.GetAnchorId() == RndStdIds::FLY_AS_CHAR
- && RES_DRAWFRMFMT == pFrameFormat->Which()))
+ || rAnchor.GetAnchorId() == RndStdIds::FLY_AS_CHAR)
{
assert(rAnchor.GetContentAnchor()->nNode.GetIndex() == rNode.GetIndex());
if (!IsShown(rNode.GetIndex(), rAnchor, pIter, pEnd, pFirstNode, pLastNode))
@@ -1719,7 +1719,10 @@ void InsertCnt_( SwLayoutFrame *pLay, SwDoc *pDoc,
static_cast<SwTextFrame*>(pPrv)->Prepare( PREP_QUOVADIS, nullptr, false );
}
}
- if (nIndex + 1 == nEndIndex)
+
+ if (nIndex + 1 == nEndIndex
+ // tdf#136452 may also be needed at end of section
+ || pNode->EndOfSectionIndex() - 1 == nEndIndex)
{ // tdf#131684 tdf#132236 fix upper of frame moved in
// SwUndoDelete; can't be done there unfortunately
// because empty section frames are deleted here
@@ -1941,8 +1944,10 @@ void MakeFrames( SwDoc *pDoc, const SwNodeIndex &rSttIdx,
SwNodeIndex aTmp( rSttIdx );
sal_uLong nEndIdx = rEndIdx.GetIndex();
+ // TODO for multiple layouts there should be a loop here
SwNode* pNd = pDoc->GetNodes().FindPrvNxtFrameNode( aTmp,
- pDoc->GetNodes()[ nEndIdx-1 ]);
+ pDoc->GetNodes()[ nEndIdx-1 ],
+ pDoc->getIDocumentLayoutAccess().GetCurrentLayout());
if ( pNd )
{
bool bApres = aTmp < rSttIdx;
diff --git a/sw/source/core/layout/tabfrm.cxx b/sw/source/core/layout/tabfrm.cxx
index 59ab746ae9ec..5eaef2612bd1 100644
--- a/sw/source/core/layout/tabfrm.cxx
+++ b/sw/source/core/layout/tabfrm.cxx
@@ -5524,9 +5524,12 @@ static SwTwips lcl_CalcHeightOfFirstContentLine( const SwRowFrame& rSourceLine )
const SwRowFrame* pTmpSourceRow = static_cast<const SwRowFrame*>(pCurrSourceCell->Lower());
nTmpHeight = lcl_CalcHeightOfFirstContentLine( *pTmpSourceRow );
}
- else if ( pTmp->IsTabFrame() )
+ else if (pTmp->IsTabFrame() || (pTmp->IsSctFrame() && pTmp->GetLower() && pTmp->GetLower()->IsTabFrame()))
{
- nTmpHeight = static_cast<const SwTabFrame*>(pTmp)->CalcHeightOfFirstContentLine();
+ SwTabFrame const*const pTabFrame(pTmp->IsTabFrame()
+ ? static_cast<SwTabFrame const*>(pTmp)
+ : static_cast<SwTabFrame const*>(pTmp->GetLower()));
+ nTmpHeight = pTabFrame->CalcHeightOfFirstContentLine();
}
else if (pTmp->IsTextFrame() || (pTmp->IsSctFrame() && pTmp->GetLower() && pTmp->GetLower()->IsTextFrame()))
{
diff --git a/sw/source/core/text/frmform.cxx b/sw/source/core/text/frmform.cxx
index 5ef68ca3010d..7a1b0ed7e3ff 100755
--- a/sw/source/core/text/frmform.cxx
+++ b/sw/source/core/text/frmform.cxx
@@ -1599,9 +1599,27 @@ void SwTextFrame::Format_( SwTextFormatter &rLine, SwTextFormatInfo &rInf,
// If we're finished formatting the text and we still
// have other line objects left, these are superfluous
// now because the text has gotten shorter.
+ bool bTruncLines = false;
if( rLine.GetStart() + rLine.GetLength() >= nStrLen &&
rLine.GetCurr()->GetNext() )
{
+ bTruncLines = true;
+ }
+ else if (GetMergedPara() && rLine.GetCurr()->GetNext())
+ {
+ // We can also have superfluous lines with redlining in case the current line is shorter
+ // than the text length, but the total length of lines is still more than expected.
+ // Truncate in this case as well.
+ TextFrameIndex nLen(0);
+ for (const SwLineLayout* pLine = pPara; pLine; pLine = pLine->GetNext())
+ {
+ nLen += pLine->GetLen();
+ }
+ bTruncLines = nLen > nStrLen;
+ }
+
+ if (bTruncLines)
+ {
rLine.TruncLines();
rLine.SetTruncLines( true );
}
diff --git a/sw/source/core/text/porfld.cxx b/sw/source/core/text/porfld.cxx
index 5872e5688ba1..ad3acbafefa4 100644
--- a/sw/source/core/text/porfld.cxx
+++ b/sw/source/core/text/porfld.cxx
@@ -1069,6 +1069,9 @@ void SwTextFrame::StopAnimation( OutputDevice* pOut )
*/
SwCombinedPortion::SwCombinedPortion( const OUString &rText )
: SwFieldPortion( rText )
+ , aWidth{ static_cast<sal_uInt16>(0),
+ static_cast<sal_uInt16>(0),
+ static_cast<sal_uInt16>(0) }
, nUpPos(0)
, nLowPos(0)
, nProportion(55)
diff --git a/sw/source/core/text/porfld.hxx b/sw/source/core/text/porfld.hxx
index c8d7b7942ac5..7678298495d7 100644
--- a/sw/source/core/text/porfld.hxx
+++ b/sw/source/core/text/porfld.hxx
@@ -199,7 +199,7 @@ public:
class SwCombinedPortion : public SwFieldPortion
{
sal_uInt16 aPos[6]; // up to six X positions
- o3tl::enumarray<SwFontScript,sal_uInt16> aWidth = {}; // one width for every scripttype
+ o3tl::enumarray<SwFontScript,sal_uInt16> aWidth; // one width for every scripttype
SwFontScript aScrType[6]; // scripttype of every character
sal_uInt16 nUpPos; // the Y position of the upper baseline
sal_uInt16 nLowPos; // the Y position of the lower baseline
diff --git a/sw/source/core/text/txtfrm.cxx b/sw/source/core/text/txtfrm.cxx
index b8d450779ee7..8d478867709e 100644
--- a/sw/source/core/text/txtfrm.cxx
+++ b/sw/source/core/text/txtfrm.cxx
@@ -1922,7 +1922,6 @@ void UpdateMergedParaForMove(sw::MergedPara & rMerged,
}
if (nLastEnd != rNode.Len()) // without nLen, string yet to be removed
{
- assert(rNode.Len() == 0 || nLastEnd < nSourceEnd);
if (nLastEnd < nSourceEnd)
{
deleted.emplace_back(std::max(nLastEnd, nSourceStart), nSourceEnd);
diff --git a/sw/source/core/txtnode/ndtxt.cxx b/sw/source/core/txtnode/ndtxt.cxx
index 3d721ebee00b..5fc15dd32863 100644
--- a/sw/source/core/txtnode/ndtxt.cxx
+++ b/sw/source/core/txtnode/ndtxt.cxx
@@ -456,9 +456,7 @@ SwTextNode *SwTextNode::SplitContentNode(const SwPosition & rPos,
{
// optimization for SplitNode: If a split is at the end of a node then
// move the frames from the current to the new one and create new ones
- // for the current one. As a result, no need for recreating the layout.
-
- LockModify(); // disable notifications
+ // for the current one.
// If fly frames are moved, they don't need to destroy their layout
// frames. Set a flag that is checked in SwTextFlyCnt::SetAnchor.
@@ -566,28 +564,6 @@ SwTextNode *SwTextNode::SplitContentNode(const SwPosition & rPos,
SetInCache( false );
}
- UnlockModify(); // enable notify again
-
- // If there is an accessible layout we must call modify even
- // with length zero, because we have to notify about the changed
- // text node.
- const SwRootFrame *pRootFrame;
- if ( (nTextLen != nSplitPos) ||
- ( (pRootFrame = pNode->GetDoc()->getIDocumentLayoutAccess().GetCurrentLayout()) != nullptr &&
- pRootFrame->IsAnyShellAccessible() ) )
- {
- // tell the frames that something was "deleted" at the end
- if( 1 == nTextLen - nSplitPos )
- {
- SwDelChr aHint( nSplitPos );
- pNode->NotifyClients( nullptr, &aHint );
- }
- else
- {
- SwDelText aHint( nSplitPos, nTextLen - nSplitPos );
- pNode->NotifyClients( nullptr, &aHint );
- }
- }
if ( HasHints() )
{
MoveTextAttr_To_AttrSet();
@@ -690,9 +666,9 @@ SwTextNode *SwTextNode::SplitContentNode(const SwPosition & rPos,
// Update the extents with new node; also inits merge flag,
// so the MakeFramesForAdjacentContentNode below respects it
pFrame->RegisterToNode(*pNode);
- if (pFrame->GetText().isEmpty())
+ if (nSplitPos == 0)
{
- // turns out it's empty - in this case, it was not
+ // in this case, it was not
// invalidated because Cut didn't sent it any hints,
// so we have to invalidate it here!
pFrame->Prepare(PREP_CLEAR, nullptr, false);
@@ -918,9 +894,18 @@ void CheckResetRedlineMergeFlag(SwTextNode & rNode, Recreate const eRecreateMerg
assert(rFirstNode.GetIndex() <= rNode.GetIndex());
pFrame->SetMergedPara(sw::CheckParaRedlineMerge(
*pFrame, rFirstNode, eMode));
- assert(pFrame->GetMergedPara());
- assert(pFrame->GetMergedPara()->listener.IsListeningTo(&rNode));
- assert(rNode.GetIndex() <= pFrame->GetMergedPara()->pLastNode->GetIndex());
+ // there is no merged para in case the deleted node had one but
+ // nothing was actually hidden
+ if (pFrame->GetMergedPara())
+ {
+ assert(pFrame->GetMergedPara()->listener.IsListeningTo(&rNode));
+ assert(rNode.GetIndex() <= pFrame->GetMergedPara()->pLastNode->GetIndex());
+ // tdf#135978 Join: recreate fly frames anchored to subsequent nodes
+ if (eRecreateMerged == sw::Recreate::ThisNode)
+ {
+ AddRemoveFlysAnchoredToFrameStartingAtNode(*pFrame, rNode, nullptr);
+ }
+ }
eMode = sw::FrameMode::New; // Existing is not idempotent!
}
}
@@ -1031,14 +1016,29 @@ SwContentNode *SwTextNode::JoinNext()
pDoc->CorrAbs( aIdx, SwPosition( *this ), nOldLen, true );
}
SwNode::Merge const eOldMergeFlag(pTextNode->GetRedlineMergeFlag());
+ auto eRecreateMerged(eOldMergeFlag == SwNode::Merge::First
+ ? sw::Recreate::ThisNode
+ : sw::Recreate::No);
+ if (eRecreateMerged == sw::Recreate::No)
+ {
+ // tdf#137318 if a delete is inside one node, flag is still None!
+ SwIterator<SwTextFrame, SwTextNode, sw::IteratorMode::UnwrapMulti> aIter(*pTextNode);
+ for (SwTextFrame* pFrame = aIter.First(); pFrame; pFrame = aIter.Next())
+ {
+ if (pFrame->GetMergedPara())
+ {
+ eRecreateMerged = sw::Recreate::ThisNode;
+ break;
+ }
+ }
+ }
+
rNds.Delete(aIdx);
SetWrong( pList, false );
SetGrammarCheck( pList3, false );
SetSmartTags( pList2, false );
InvalidateNumRule();
- CheckResetRedlineMergeFlag(*this, eOldMergeFlag == SwNode::Merge::First
- ? sw::Recreate::ThisNode
- : sw::Recreate::No);
+ CheckResetRedlineMergeFlag(*this, eRecreateMerged);
}
else {
OSL_FAIL( "No TextNode." );
@@ -1175,8 +1175,7 @@ void SwTextNode::NewAttrSet( SwAttrPool& rPool )
void SwTextNode::Update(
SwIndex const & rPos,
const sal_Int32 nChangeLen,
- const bool bNegative,
- const bool bDelete )
+ UpdateMode const eMode)
{
SetAutoCompleteWordDirty( true );
@@ -1185,7 +1184,7 @@ void SwTextNode::Update(
if ( HasHints() )
{
- if ( bNegative )
+ if (eMode & UpdateMode::Negative)
{
std::vector<SwTextInputField*> aTextInputFields;
@@ -1357,7 +1356,7 @@ void SwTextNode::Update(
bool bSortMarks = false;
SwIndexReg aTmpIdxReg;
- if ( !bNegative && !bDelete )
+ if (!(eMode & UpdateMode::Negative) && !(eMode & UpdateMode::Delete))
{
const SwRedlineTable& rTable = GetDoc()->getIDocumentRedlineAccess().GetRedlineTable();
for (SwRangeRedline* pRedl : rTable)
@@ -1392,6 +1391,7 @@ void SwTextNode::Update(
// Bookmarks must never grow to either side, when editing (directly)
// to the left or right (i#29942)! Exception: if the bookmark has
// 2 positions and start == end, then expand it (tdf#96479)
+ if (!(eMode & UpdateMode::Replace)) // Exception: Replace
{
bool bAtLeastOneBookmarkMoved = false;
bool bAtLeastOneExpandedBookmarkAtInsertionPosition = false;
@@ -1514,7 +1514,7 @@ void SwTextNode::Update(
}
// base class
- SwIndexReg::Update( rPos, nChangeLen, bNegative, bDelete );
+ SwIndexReg::Update(rPos, nChangeLen, eMode);
if (pCollector)
{
@@ -2311,7 +2311,7 @@ OUString SwTextNode::InsertText( const OUString & rStr, const SwIndex & rIdx,
SetIgnoreDontExpand( true );
}
- Update( rIdx, nLen ); // text content changed!
+ Update(rIdx, nLen, UpdateMode::Default); // text content changed!
if (nMode & SwInsertFlags::FORCEHINTEXPAND)
{
@@ -2447,7 +2447,7 @@ void SwTextNode::CutImpl( SwTextNode * const pDest, const SwIndex & rDestStart,
if (bUpdate)
{
// Update all SwIndex
- pDest->Update( rDestStart, nLen, false, false/*??? why was it true*/);
+ pDest->Update(rDestStart, nLen, UpdateMode::Default);
}
CHECK_SWPHINTS(pDest);
@@ -2640,7 +2640,7 @@ void SwTextNode::CutImpl( SwTextNode * const pDest, const SwIndex & rDestStart,
++nAttrCnt;
}
}
- Update( rStart, nLen, true, true );
+ Update(rStart, nLen, UpdateMode::Negative|UpdateMode::Delete);
for (SwTextAttr* pHt : aArr)
{
@@ -2651,7 +2651,7 @@ void SwTextNode::CutImpl( SwTextNode * const pDest, const SwIndex & rDestStart,
}
else
{
- Update( rStart, nLen, true, true );
+ Update(rStart, nLen, UpdateMode::Negative|UpdateMode::Delete);
}
// set after moving hints
@@ -2744,7 +2744,7 @@ void SwTextNode::EraseText(const SwIndex &rIdx, const sal_Int32 nCount,
TryDeleteSwpHints();
- Update( rIdx, nCnt, true );
+ Update(rIdx, nCnt, UpdateMode::Negative);
if( 1 == nCnt )
{
@@ -3094,11 +3094,11 @@ sal_uInt16 lcl_BoundListLevel(const int nActualLevel)
}
// -> #i29560#
-bool SwTextNode::HasNumber() const
+bool SwTextNode::HasNumber(SwRootFrame const*const pLayout) const
{
bool bResult = false;
- const SwNumRule* pRule = GetNum() ? GetNum()->GetNumRule() : nullptr;
+ const SwNumRule *const pRule = GetNum(pLayout) ? GetNum(pLayout)->GetNumRule() : nullptr;
if ( pRule )
{
const SwNumFormat& aFormat(pRule->Get(lcl_BoundListLevel(GetActualListLevel())));
@@ -3732,19 +3732,19 @@ void SwTextNode::ReplaceText( const SwIndex& rStart, const sal_Int32 nDelLen,
++const_cast<SwIndex&>(rStart);
m_Text = m_Text.replaceAt(rStart.GetIndex(), nLen - 1, "");
- Update( rStart, nLen - 1, true );
+ Update(rStart, nLen - 1, UpdateMode::Negative);
OUString aTmpText( sInserted.copy(1) );
m_Text = m_Text.replaceAt(rStart.GetIndex(), 0, aTmpText);
- Update( rStart, aTmpText.getLength() );
+ Update(rStart, aTmpText.getLength(), UpdateMode::Replace);
}
else
{
m_Text = m_Text.replaceAt(nStartPos, nLen, "");
- Update( rStart, nLen, true );
+ Update(rStart, nLen, UpdateMode::Negative);
m_Text = m_Text.replaceAt(nStartPos, 0, sInserted);
- Update( rStart, sInserted.getLength() );
+ Update(rStart, sInserted.getLength(), UpdateMode::Replace);
}
SetIgnoreDontExpand( bOldExpFlg );
diff --git a/sw/source/core/txtnode/thints.cxx b/sw/source/core/txtnode/thints.cxx
index 5b363f2d9119..784babd9a3a9 100644
--- a/sw/source/core/txtnode/thints.cxx
+++ b/sw/source/core/txtnode/thints.cxx
@@ -1378,7 +1378,7 @@ bool SwTextNode::InsertHint( SwTextAttr * const pAttr, const SetAttrMode nMode )
m_Text = m_Text.replaceAt(pAttr->GetStart(), 1, "");
// Update SwIndexes
SwIndex aTmpIdx( this, pAttr->GetStart() );
- Update( aTmpIdx, 1, true );
+ Update(aTmpIdx, 1, UpdateMode::Negative);
}
// do not record deletion of Format!
::sw::UndoGuard const ug(pDoc->GetIDocumentUndoRedo());
@@ -1409,7 +1409,7 @@ bool SwTextNode::InsertHint( SwTextAttr * const pAttr, const SetAttrMode nMode )
m_Text = m_Text.replaceAt(pAttr->GetStart(), 1, "");
// Update SwIndexes
SwIndex aTmpIdx( this, pAttr->GetStart() );
- Update( aTmpIdx, 1, true );
+ Update(aTmpIdx, 1, UpdateMode::Negative);
}
DestroyAttr( pAttr );
return false;
diff --git a/sw/source/core/txtnode/txtedt.cxx b/sw/source/core/txtnode/txtedt.cxx
index 5c599d78afab..00b6d9ab8d05 100644
--- a/sw/source/core/txtnode/txtedt.cxx
+++ b/sw/source/core/txtnode/txtedt.cxx
@@ -1947,7 +1947,7 @@ void SwTextNode::ReplaceTextOnly( sal_Int32 nPos, sal_Int32 nLen,
while( nI + nCnt < nTLen && nOff == pOffsets[ nI + nCnt ] )
++nCnt;
- Update( SwIndex( this, nMyOff ), nCnt );
+ Update(SwIndex( this, nMyOff ), nCnt, UpdateMode::Default);
nMyOff = nOff;
//nMyOff -= nCnt;
nI += nCnt - 1;
@@ -1955,14 +1955,14 @@ void SwTextNode::ReplaceTextOnly( sal_Int32 nPos, sal_Int32 nLen,
else if( nOff > nMyOff )
{
// something is deleted
- Update( SwIndex( this, nMyOff+1 ), nOff - nMyOff, true );
+ Update(SwIndex(this, nMyOff+1), nOff - nMyOff, UpdateMode::Negative);
nMyOff = nOff;
}
++nMyOff;
}
if( nMyOff < nLen )
// something is deleted at the end
- Update( SwIndex( this, nMyOff ), nLen - nMyOff, true );
+ Update(SwIndex(this, nMyOff), nLen - nMyOff, UpdateMode::Negative);
// notify the layout!
SwDelText aDelHint( nPos, nTLen );
diff --git a/sw/source/core/undo/undel.cxx b/sw/source/core/undo/undel.cxx
index 4e55a46196b4..bee925546d75 100644
--- a/sw/source/core/undo/undel.cxx
+++ b/sw/source/core/undo/undel.cxx
@@ -172,6 +172,7 @@ static void DelFullParaMoveFrames(SwDoc & rDoc, SwUndRng const& rRange,
// move the paragraph into this section and to record this in nSectDiff.
SwUndoDelete::SwUndoDelete(
SwPaM& rPam,
+ SwDeleteFlags const flags,
bool bFullPara,
bool bCalledByTableCpy )
: SwUndo(SwUndoId::DELETE, rPam.GetDoc()),
@@ -190,7 +191,9 @@ SwUndoDelete::SwUndoDelete(
m_bResetPgDesc( false ),
m_bResetPgBrk( false ),
m_bFromTableCopy( bCalledByTableCpy )
+ , m_DeleteFlags(flags)
{
+ assert(!m_bDelFullPara || !(m_DeleteFlags & SwDeleteFlags::ArtificialSelection));
m_bCacheComment = false;
@@ -226,7 +229,9 @@ SwUndoDelete::SwUndoDelete(
}
else
{
- DelContentIndex( *rPam.GetMark(), *rPam.GetPoint() );
+ DelContentIndex(*rPam.GetMark(), *rPam.GetPoint(),
+ DelContentType::AllMask
+ | ((m_DeleteFlags & SwDeleteFlags::ArtificialSelection) ? DelContentType::Replace : DelContentType(0)));
::sw::UndoGuard const undoGuard(pDoc->GetIDocumentUndoRedo());
if (m_nEndNode - m_nSttNode > 1) // check for fully selected nodes
{
@@ -1135,7 +1140,10 @@ void SwUndoDelete::UndoImpl(::sw::UndoRedoContext & rContext)
// don't include end node in the range: it may have been merged already
// by the start node, or it may be merged by one of the moved nodes,
// but if it isn't merged, its current frame(s) should be good...
- SwNodeIndex const end(rDoc.GetNodes(), m_bDelFullPara ? delFullParaEndNode : m_nEndNode);
+ SwNodeIndex const end(rDoc.GetNodes(), m_bDelFullPara
+ ? delFullParaEndNode
+ // tdf#147310 SwDoc::DeleteRowCol() may delete whole table - end must be node following table!
+ : (m_nEndNode + (rDoc.GetNodes()[m_nSttNode]->IsTableNode() && rDoc.GetNodes()[m_nEndNode]->IsEndNode() ? 1 : 0)));
::MakeFrames(&rDoc, start, end);
}
@@ -1197,7 +1205,11 @@ void SwUndoDelete::RedoImpl(::sw::UndoRedoContext & rContext)
DelBookmarks(rPam.GetMark()->nNode, rPam.GetPoint()->nNode);
}
else
- DelContentIndex( *rPam.GetMark(), *rPam.GetPoint() );
+ {
+ DelContentIndex(*rPam.GetMark(), *rPam.GetPoint(),
+ DelContentType::AllMask
+ | ((m_DeleteFlags & SwDeleteFlags::ArtificialSelection) ? DelContentType::Replace : DelContentType(0)));
+ }
m_nSetPos = m_pHistory ? m_pHistory->Count() : 0;
m_pHistory->Move( m_nSetPos, &aHstr );
@@ -1213,7 +1225,11 @@ void SwUndoDelete::RedoImpl(::sw::UndoRedoContext & rContext)
DelBookmarks( rPam.GetMark()->nNode, rPam.GetPoint()->nNode );
}
else
- DelContentIndex( *rPam.GetMark(), *rPam.GetPoint() );
+ {
+ DelContentIndex(*rPam.GetMark(), *rPam.GetPoint(),
+ DelContentType::AllMask
+ | ((m_DeleteFlags & SwDeleteFlags::ArtificialSelection) ? DelContentType::Replace : DelContentType(0)));
+ }
m_nSetPos = m_pHistory ? m_pHistory->Count() : 0;
}
@@ -1288,7 +1304,8 @@ void SwUndoDelete::RedoImpl(::sw::UndoRedoContext & rContext)
rDoc.getIDocumentContentOperations().DelFullPara( rPam );
}
else
- rDoc.getIDocumentContentOperations().DeleteAndJoin( rPam );
+ // FIXME: this ends up calling DeleteBookmarks() on the entire rPam which deletes too many!
+ rDoc.getIDocumentContentOperations().DeleteAndJoin(rPam, m_DeleteFlags);
}
void SwUndoDelete::RepeatImpl(::sw::RepeatContext & rContext)
diff --git a/sw/source/core/undo/undobj.cxx b/sw/source/core/undo/undobj.cxx
index 3fe7f107f052..098c277d9155 100644
--- a/sw/source/core/undo/undobj.cxx
+++ b/sw/source/core/undo/undobj.cxx
@@ -981,10 +981,14 @@ void SwUndoSaveContent::DelContentIndex( const SwPosition& rMark,
// Moving the anchor?
else if (!((DelContentType::CheckNoCntnt|DelContentType::ExcludeFlyAtStartEnd)
& nDelContentType) &&
- // at least for calls from SwUndoDelete,
- // this should work - other Undos don't
- // remember the order of the cursor
- (rPoint.nNode.GetIndex() == pAPos->nNode.GetIndex())
+ // for SwUndoDelete: rPoint is the node that
+ // will be Joined - so anchor should be moved
+ // off it - but UndoImpl() split will insert
+ // new node *before* existing one so a no-op
+ // may need to be done here to add it to
+ // history for Undo.
+ (rPoint.nNode.GetIndex() == pAPos->nNode.GetIndex()
+ || pStt->nNode.GetIndex() == pAPos->nNode.GetIndex())
// Do not try to move the anchor to a table!
&& rMark.nNode.GetNode().IsTextNode())
{
@@ -1108,7 +1112,12 @@ void SwUndoSaveContent::DelContentIndex( const SwPosition& rMark,
&& ( type == IDocumentMarkAccess::MarkType::TEXT_FIELDMARK
|| type == IDocumentMarkAccess::MarkType::CHECKBOX_FIELDMARK
|| type == IDocumentMarkAccess::MarkType::DROPDOWN_FIELDMARK
- || type == IDocumentMarkAccess::MarkType::DATE_FIELDMARK)))
+ || type == IDocumentMarkAccess::MarkType::DATE_FIELDMARK))
+ || (bMaybe
+ && !(nDelContentType & DelContentType::Replace)
+ && type == IDocumentMarkAccess::MarkType::BOOKMARK
+ && pStt->nContent == 0 // entire paragraph deleted?
+ && pEnd->nContent == pEnd->nNode.GetNode().GetTextNode()->Len()))
{
if( bMaybe )
bSavePos = true;
diff --git a/sw/source/core/undo/unins.cxx b/sw/source/core/undo/unins.cxx
index 85b20fae911b..f1f7f48188aa 100644
--- a/sw/source/core/undo/unins.cxx
+++ b/sw/source/core/undo/unins.cxx
@@ -689,7 +689,8 @@ void SwUndoReplace::Impl::UndoImpl(::sw::UndoRedoContext & rContext)
if( m_bSplitNext )
{
- SwPosition aPos(*pNd, pNd->Len());
+ assert(m_nSttCnt + m_sOld.getLength() <= pNd->Len());
+ SwPosition aPos(*pNd, m_nSttCnt + m_sOld.getLength());
pDoc->getIDocumentContentOperations().SplitNode( aPos, false );
pNd->RestoreMetadata(m_pMetadataUndoEnd);
pNd = pDoc->GetNodes()[ m_nSttNd - m_nOffset ]->GetTextNode();
@@ -723,7 +724,7 @@ void SwUndoReplace::Impl::UndoImpl(::sw::UndoRedoContext & rContext)
}
rPam.GetPoint()->nNode = m_nSttNd;
- rPam.GetPoint()->nContent = m_nSttCnt;
+ rPam.GetPoint()->nContent.Assign(rPam.GetPoint()->nNode.GetNode().GetTextNode(), m_nSttCnt);
}
void SwUndoReplace::Impl::RedoImpl(::sw::UndoRedoContext & rContext)
@@ -917,7 +918,7 @@ void SwUndoInsertLabel::UndoImpl(::sw::UndoRedoContext & rContext)
aPam.GetPoint()->nNode = NODE.nNode;
aPam.SetMark();
aPam.GetPoint()->nNode = NODE.nNode + 1;
- NODE.pUndoInsNd = new SwUndoDelete( aPam, true );
+ NODE.pUndoInsNd = new SwUndoDelete(aPam, SwDeleteFlags::Default, true);
}
}
diff --git a/sw/source/core/undo/unredln.cxx b/sw/source/core/undo/unredln.cxx
index 8aae3c055b63..c66d8eed133e 100644
--- a/sw/source/core/undo/unredln.cxx
+++ b/sw/source/core/undo/unredln.cxx
@@ -26,6 +26,8 @@
#include <pam.hxx>
#include <ndtxt.hxx>
#include <txtfrm.hxx>
+#include <mvsave.hxx>
+#include <rolbck.hxx>
#include <UndoCore.hxx>
#include <UndoDelete.hxx>
#include <strings.hrc>
@@ -153,7 +155,8 @@ void SwUndoRedline::RedoRedlineImpl(SwDoc & rDoc, SwPaM & rPam)
rDoc.getIDocumentRedlineAccess().DeleteRedline(rPam, true, RedlineType::Any);
}
-SwUndoRedlineDelete::SwUndoRedlineDelete( const SwPaM& rRange, SwUndoId nUsrId )
+SwUndoRedlineDelete::SwUndoRedlineDelete(
+ const SwPaM& rRange, SwUndoId const nUsrId, SwDeleteFlags const flags)
: SwUndoRedline( nUsrId != SwUndoId::EMPTY ? nUsrId : SwUndoId::DELETE, rRange ),
bCanGroup( false ), bIsDelim( false ), bIsBackspace( false )
{
@@ -174,6 +177,24 @@ SwUndoRedlineDelete::SwUndoRedlineDelete( const SwPaM& rRange, SwUndoId nUsrId )
}
m_bCacheComment = false;
+ if (flags & SwDeleteFlags::ArtificialSelection)
+ {
+ InitHistory(rRange);
+ }
+}
+
+void SwUndoRedlineDelete::InitHistory(SwPaM const& rRedline)
+{
+ m_pHistory.reset(new SwHistory);
+ // try to rely on direction of rPam here so it works for
+ // backspacing/deleting consecutive characters
+ SaveFlyArr flys;
+ SaveFlyInRange(rRedline, *rRedline.GetMark(), flys, false, m_pHistory.get());
+ RestFlyInRange(flys, *rRedline.GetPoint(), &rRedline.GetPoint()->nNode, true);
+ if (m_pHistory->Count())
+ {
+ bCanGroup = false; // how to group history?
+ }
}
// bit of a hack, replace everything...
@@ -197,12 +218,21 @@ void SwUndoRedlineDelete::SetRedlineText(const OUString & rText)
void SwUndoRedlineDelete::UndoRedlineImpl(SwDoc & rDoc, SwPaM & rPam)
{
rDoc.getIDocumentRedlineAccess().DeleteRedline(rPam, true, RedlineType::Any);
+ if (m_pHistory)
+ {
+ m_pHistory->TmpRollback(&rDoc, 0);
+ }
}
void SwUndoRedlineDelete::RedoRedlineImpl(SwDoc & rDoc, SwPaM & rPam)
{
if (rPam.GetPoint() != rPam.GetMark())
{
+ if (m_pHistory) // if it was created before, it must be recreated now
+ {
+ rPam.Normalize(bIsBackspace); // to check the correct edge
+ InitHistory(rPam);
+ }
rDoc.getIDocumentRedlineAccess().AppendRedline( new SwRangeRedline(*mpRedlData, rPam), false );
}
sw::UpdateFramesForAddDeleteRedline(rDoc, rPam);
@@ -212,7 +242,7 @@ bool SwUndoRedlineDelete::CanGrouping( const SwUndoRedlineDelete& rNext )
{
bool bRet = false;
if( SwUndoId::DELETE == mnUserId && mnUserId == rNext.mnUserId &&
- bCanGroup == rNext.bCanGroup &&
+ bCanGroup && rNext.bCanGroup &&
bIsDelim == rNext.bIsDelim &&
bIsBackspace == rNext.bIsBackspace &&
m_nSttNode == m_nEndNode &&
@@ -449,7 +479,7 @@ void SwUndoCompDoc::UndoImpl(::sw::UndoRedoContext & rContext)
bool bJoinText, bJoinPrev;
sw_GetJoinFlags(rPam, bJoinText, bJoinPrev);
- pUnDel.reset( new SwUndoDelete(rPam, false) );
+ pUnDel.reset( new SwUndoDelete(rPam, SwDeleteFlags::Default, false) );
if( bJoinText )
sw_JoinText(rPam, bJoinPrev);
@@ -466,7 +496,7 @@ void SwUndoCompDoc::UndoImpl(::sw::UndoRedoContext & rContext)
++rPam.GetPoint()->nNode;
rPam.GetBound().nContent.Assign( nullptr, 0 );
rPam.GetBound( false ).nContent.Assign( nullptr, 0 );
- pUnDel2.reset( new SwUndoDelete(rPam, true) );
+ pUnDel2.reset( new SwUndoDelete(rPam, SwDeleteFlags::Default, true) );
}
}
rPam.DeleteMark();
diff --git a/sw/source/core/undo/untbl.cxx b/sw/source/core/undo/untbl.cxx
index 9d1675c0f304..14cc8de03a84 100644
--- a/sw/source/core/undo/untbl.cxx
+++ b/sw/source/core/undo/untbl.cxx
@@ -277,6 +277,8 @@ void SwUndoInsTable::UndoImpl(::sw::UndoRedoContext & rContext)
if( SfxItemState::SET == pTableFormat->GetItemState( RES_BREAK,
false, &pItem ) )
pNextNd->SetAttr( *pItem );
+
+ ::sw::NotifyTableCollapsedParagraph(pNextNd, nullptr);
}
m_sTableName = pTableNd->GetTable().GetFrameFormat()->GetName();
@@ -2420,11 +2422,11 @@ void SwUndoTableCpyTable::UndoImpl(::sw::UndoRedoContext & rContext)
else
*aPam.GetPoint() = SwPosition( aTmpIdx );
}
- pUndo = std::make_unique<SwUndoDelete>( aPam, bDeleteCompleteParagraph, true );
+ pUndo = std::make_unique<SwUndoDelete>(aPam, SwDeleteFlags::Default, bDeleteCompleteParagraph, true);
}
else
{
- pUndo = std::make_unique<SwUndoDelete>( aPam, true );
+ pUndo = std::make_unique<SwUndoDelete>(aPam, SwDeleteFlags::Default, true);
if( pEntry->pUndo )
{
pEntry->pUndo->UndoImpl(rContext);
@@ -2501,7 +2503,9 @@ void SwUndoTableCpyTable::RedoImpl(::sw::UndoRedoContext & rContext)
// b62341295: Redline for copying tables - Start.
rDoc.GetNodes().MakeTextNode( aInsIdx, rDoc.GetDfltTextFormatColl() );
SwPaM aPam( aInsIdx.GetNode(), *rBox.GetSttNd()->EndOfSectionNode());
- std::unique_ptr<SwUndo> pUndo = IDocumentRedlineAccess::IsRedlineOn( GetRedlineFlags() ) ? nullptr : std::make_unique<SwUndoDelete>( aPam, true );
+ std::unique_ptr<SwUndo> pUndo(IDocumentRedlineAccess::IsRedlineOn(GetRedlineFlags())
+ ? nullptr
+ : std::make_unique<SwUndoDelete>(aPam, SwDeleteFlags::Default, true));
if( pEntry->pUndo )
{
pEntry->pUndo->UndoImpl(rContext);
@@ -2582,7 +2586,7 @@ void SwUndoTableCpyTable::AddBoxBefore( const SwTableBox& rBox, bool bDelContent
SwPaM aPam( aInsIdx.GetNode(), *rBox.GetSttNd()->EndOfSectionNode() );
if( !pDoc->getIDocumentRedlineAccess().IsRedlineOn() )
- pEntry->pUndo = std::make_unique<SwUndoDelete>( aPam, true );
+ pEntry->pUndo = std::make_unique<SwUndoDelete>(aPam, SwDeleteFlags::Default, true);
}
pEntry->pBoxNumAttr = std::make_unique<SfxItemSet>(
@@ -2682,7 +2686,7 @@ std::unique_ptr<SwUndo> SwUndoTableCpyTable::PrepareRedline( SwDoc* pDoc, const
aCellEnd = SwPosition(
SwNodeIndex( *rBox.GetSttNd()->EndOfSectionNode() ));
SwPaM aTmpPam( aDeleteStart, aCellEnd );
- pUndo = std::make_unique<SwUndoDelete>( aTmpPam, true );
+ pUndo = std::make_unique<SwUndoDelete>(aTmpPam, SwDeleteFlags::Default, true);
}
SwPosition aCellStart( SwNodeIndex( *rBox.GetSttNd(), 2 ) );
pText = aCellStart.nNode.GetNode().GetTextNode();
@@ -2754,7 +2758,7 @@ void SwUndoCpyTable::UndoImpl(::sw::UndoRedoContext & rContext)
}
SwPaM aPam( *pTNd, *pTNd->EndOfSectionNode(), 0 , 1 );
- pDel.reset( new SwUndoDelete( aPam, true ) );
+ pDel.reset( new SwUndoDelete( aPam, SwDeleteFlags::Default, true ) );
}
void SwUndoCpyTable::RedoImpl(::sw::UndoRedoContext & rContext)
diff --git a/sw/source/core/undo/untblk.cxx b/sw/source/core/undo/untblk.cxx
index 28f41f817061..449f41795697 100644
--- a/sw/source/core/undo/untblk.cxx
+++ b/sw/source/core/undo/untblk.cxx
@@ -125,11 +125,11 @@ void SwUndoInserts::SetInsertRange( const SwPaM& rPam, bool bScanFlys,
m_nSttNode = pTmpPos->nNode.GetIndex();
m_nSttContent = pTmpPos->nContent.GetIndex();
+ m_nDeleteTextNodes = nDeleteTextNodes;
if (m_nDeleteTextNodes == 0) // if a table selection is added...
{
++m_nSttNode; // ... then the CopyPam is not fully correct
}
- m_nDeleteTextNodes = nDeleteTextNodes;
}
// Fill m_FlyUndos with flys anchored to first and last paragraphs
diff --git a/sw/source/core/unocore/unobkm.cxx b/sw/source/core/unocore/unobkm.cxx
index ddeaccf1966b..a4d719016f68 100644
--- a/sw/source/core/unocore/unobkm.cxx
+++ b/sw/source/core/unocore/unobkm.cxx
@@ -410,6 +410,8 @@ void SAL_CALL
SwXBookmark::setPropertyValue(const OUString& PropertyName,
const uno::Any& rValue)
{
+ SolarMutexGuard g;
+
if (PropertyName == UNO_NAME_BOOKMARK_HIDDEN)
{
bool bNewValue = false;
diff --git a/sw/source/core/unocore/unoframe.cxx b/sw/source/core/unocore/unoframe.cxx
index e2e5c9411715..e5ced2a27fd0 100644
--- a/sw/source/core/unocore/unoframe.cxx
+++ b/sw/source/core/unocore/unoframe.cxx
@@ -2771,8 +2771,13 @@ void SwXFrame::attachToRange(uno::Reference<text::XTextRange> const& xTextRange,
aFrameSet.Put( SwFormatAnchor( RndStdIds::FLY_AT_PAGE, 1 ));
}
- aPam.DeleteMark(); // mark position node will be deleted!
- aIntPam.DeleteMark(); // mark position node will be deleted!
+ // park these no longer needed PaMs somewhere safe so MakeFlyAndMove
+ // can delete what it likes without any assert these are pointing to
+ // that content
+ aPam.DeleteMark();
+ aIntPam.DeleteMark();
+ *aPam.GetPoint() = *aIntPam.GetPoint() = SwPosition(pDoc->GetNodes());
+
pFormat = pDoc->MakeFlyAndMove( *pCopySource, aFrameSet,
nullptr,
pParentFrameFormat );
diff --git a/sw/source/core/unocore/unoobj.cxx b/sw/source/core/unocore/unoobj.cxx
index 1f8b4d02edfd..e3ac0563be12 100644
--- a/sw/source/core/unocore/unoobj.cxx
+++ b/sw/source/core/unocore/unoobj.cxx
@@ -765,7 +765,7 @@ SwXTextCursor::~SwXTextCursor()
}
void SwXTextCursor::DeleteAndInsert(const OUString& rText,
- const bool bForceExpandHints)
+ ::sw::DeleteAndInsertMode const eMode)
{
auto pUnoCursor = static_cast<SwCursor*>(m_pImpl->m_pUnoCursor.get());
if (pUnoCursor)
@@ -780,13 +780,15 @@ void SwXTextCursor::DeleteAndInsert(const OUString& rText,
{
if (pCurrent->HasMark())
{
- pDoc->getIDocumentContentOperations().DeleteAndJoin(*pCurrent);
+ pDoc->getIDocumentContentOperations().DeleteAndJoin(*pCurrent,
+ // is it "delete" or "replace"?
+ (nTextLen != 0 || eMode & ::sw::DeleteAndInsertMode::ForceReplace) ? SwDeleteFlags::ArtificialSelection : SwDeleteFlags::Default);
}
if(nTextLen)
{
const bool bSuccess(
SwUnoCursorHelper::DocInsertStringSplitCR(
- *pDoc, *pCurrent, rText, bForceExpandHints ) );
+ *pDoc, *pCurrent, rText, bool(eMode & ::sw::DeleteAndInsertMode::ForceExpandHints)) );
OSL_ENSURE( bSuccess, "Doc->Insert(Str) failed." );
SwUnoCursorHelper::SelectPam(*pUnoCursor, true);
@@ -1754,7 +1756,7 @@ SwXTextCursor::setString(const OUString& aString)
const bool bForceExpandHints( (CursorType::Meta == m_pImpl->m_eType)
&& dynamic_cast<SwXMeta*>(m_pImpl->m_xParentText.get())
->CheckForOwnMemberMeta(*GetPaM(), true) );
- DeleteAndInsert(aString, bForceExpandHints);
+ DeleteAndInsert(aString, bForceExpandHints ? ::sw::DeleteAndInsertMode::ForceExpandHints : ::sw::DeleteAndInsertMode::Default);
}
uno::Any SwUnoCursorHelper::GetPropertyValue(
diff --git a/sw/source/core/unocore/unoobj2.cxx b/sw/source/core/unocore/unoobj2.cxx
index 502e2e74c2dd..62180c0bc230 100644
--- a/sw/source/core/unocore/unoobj2.cxx
+++ b/sw/source/core/unocore/unoobj2.cxx
@@ -791,7 +791,7 @@ void SwXTextRange::SetPositions(const SwPaM& rPam)
}
void SwXTextRange::DeleteAndInsert(
- const OUString& rText, const bool bForceExpandHints)
+ const OUString& rText, ::sw::DeleteAndInsertMode const eMode)
{
if (RANGE_IS_TABLE == m_pImpl->m_eRangePosition)
{
@@ -807,13 +807,14 @@ void SwXTextRange::DeleteAndInsert(
m_pImpl->m_rDoc.GetIDocumentUndoRedo().StartUndo(SwUndoId::INSERT, nullptr);
if (aCursor.HasMark())
{
- m_pImpl->m_rDoc.getIDocumentContentOperations().DeleteAndJoin(aCursor);
+ m_pImpl->m_rDoc.getIDocumentContentOperations().DeleteAndJoin(aCursor,
+ (!rText.isEmpty() || eMode & ::sw::DeleteAndInsertMode::ForceReplace) ? SwDeleteFlags::ArtificialSelection : SwDeleteFlags::Default);
}
if (!rText.isEmpty())
{
SwUnoCursorHelper::DocInsertStringSplitCR(
- m_pImpl->m_rDoc, aCursor, rText, bForceExpandHints);
+ m_pImpl->m_rDoc, aCursor, rText, bool(eMode & ::sw::DeleteAndInsertMode::ForceExpandHints));
SwUnoCursorHelper::SelectPam(aCursor, true);
aCursor.Left(rText.getLength());
@@ -961,7 +962,7 @@ void SAL_CALL SwXTextRange::setString(const OUString& rString)
{
SolarMutexGuard aGuard;
- DeleteAndInsert(rString, false);
+ DeleteAndInsert(rString, ::sw::DeleteAndInsertMode::Default);
}
bool SwXTextRange::GetPositions(SwPaM& rToFill) const
diff --git a/sw/source/core/unocore/unosett.cxx b/sw/source/core/unocore/unosett.cxx
index 1f68135f7a4a..6d1752881418 100644
--- a/sw/source/core/unocore/unosett.cxx
+++ b/sw/source/core/unocore/unosett.cxx
@@ -1148,6 +1148,7 @@ void SwXNumberingRules::replaceByIndex(sal_Int32 nIndex, const uno::Any& rElemen
SwXNumberingRules::SetNumberingRuleByIndex( aNumRule,
*rProperties, nIndex);
// set character format if needed
+ // this code appears to be dead - except when a style is assigned for BITMAP numbering?
const SwCharFormats* pFormats = m_pDocShell->GetDoc()->GetCharFormats();
const size_t nChCount = pFormats->size();
for(sal_uInt16 i = 0; i < MAXLEVEL;i++)
@@ -1492,7 +1493,7 @@ void SwXNumberingRules::SetNumberingRuleByIndex(
SetPropertiesToNumFormat(aFormat, m_sNewCharStyleNames[nIndex],
&m_sNewBulletFontNames[nIndex],
&sHeadingStyleName, &sParagraphStyleName,
- m_pDoc, rProperties);
+ m_pDoc, m_pDocShell, rProperties);
if (m_pDoc && !sParagraphStyleName.isEmpty())
@@ -1539,8 +1540,11 @@ void SwXNumberingRules::SetPropertiesToNumFormat(
OUString *const pHeadingStyleName,
OUString *const pParagraphStyleName,
SwDoc *const pDoc,
+ SwDocShell *const pDocShell,
const uno::Sequence<beans::PropertyValue>& rProperties)
{
+ assert(pDoc == nullptr || pDocShell == nullptr); // can't be both ordinary and chapter numbering
+
bool bWrongArg = false;
std::unique_ptr<SvxBrushItem> pSetBrush;
std::unique_ptr<Size> pSetSize;
@@ -1588,14 +1592,15 @@ void SwXNumberingRules::SetPropertiesToNumFormat(
rProp.Value >>= uTmp;
OUString sCharFormatName;
SwStyleNameMapper::FillUIName( uTmp, sCharFormatName, SwGetPoolIdFromName::ChrFmt );
+ SwDoc *const pLocalDoc = pDocShell ? pDocShell->GetDoc() : pDoc;
if (sCharFormatName == UNO_NAME_CHARACTER_FORMAT_NONE)
{
rCharStyleName = aInvalidStyle;
aFormat.SetCharFormat(nullptr);
}
- else if(pDoc)
+ else if (pLocalDoc)
{
- const SwCharFormats* pFormats = pDoc->GetCharFormats();
+ const SwCharFormats* pFormats = pLocalDoc->GetCharFormats();
const size_t nChCount = pFormats->size();
SwCharFormat* pCharFormat = nullptr;
@@ -1614,7 +1619,7 @@ void SwXNumberingRules::SetPropertiesToNumFormat(
{
SfxStyleSheetBase* pBase;
- SfxStyleSheetBasePool* pPool = pDoc->GetDocShell()->GetStyleSheetPool();
+ SfxStyleSheetBasePool* pPool = pLocalDoc->GetDocShell()->GetStyleSheetPool();
pBase = pPool->Find(sCharFormatName, SfxStyleFamily::Char);
if(!pBase)
pBase = &pPool->Make(sCharFormatName, SfxStyleFamily::Char);
@@ -1626,7 +1631,7 @@ void SwXNumberingRules::SetPropertiesToNumFormat(
// If the character format has been found its name should not be in the
// char style names array
rCharStyleName.clear();
- }
+ }
else
rCharStyleName = sCharFormatName;
}
@@ -1779,7 +1784,7 @@ void SwXNumberingRules::SetPropertiesToNumFormat(
{
OUString sBulletFontName;
rProp.Value >>= sBulletFontName;
- SwDocShell* pLclDocShell = pDoc->GetDocShell();
+ SwDocShell *const pLclDocShell = pDocShell ? pDocShell : pDoc ? pDoc->GetDocShell() : nullptr;
if( !sBulletFontName.isEmpty() && pLclDocShell )
{
const SvxFontListItem* pFontListItem =
@@ -1878,7 +1883,8 @@ void SwXNumberingRules::SetPropertiesToNumFormat(
}
pSetVOrient->PutValue(rProp.Value, MID_VERTORIENT_ORIENT);
}
- else if (rProp.Name == UNO_NAME_HEADING_STYLE_NAME)
+ else if (rProp.Name == UNO_NAME_HEADING_STYLE_NAME
+ && pDocShell) // only on chapter numbering
{
if (pHeadingStyleName)
{
diff --git a/sw/source/core/unocore/unotext.cxx b/sw/source/core/unocore/unotext.cxx
index 3887a11191d7..a8f91620622c 100644
--- a/sw/source/core/unocore/unotext.cxx
+++ b/sw/source/core/unocore/unotext.cxx
@@ -364,7 +364,8 @@ SwXText::insertString(const uno::Reference< text::XTextRange >& xTextRange,
dynamic_cast<SwXTextCursor*>(pCursor) );
if (pTextCursor)
{
- pTextCursor->DeleteAndInsert(rString, bForceExpandHints);
+ pTextCursor->DeleteAndInsert(rString, ::sw::DeleteAndInsertMode::ForceReplace
+ | (bForceExpandHints ? ::sw::DeleteAndInsertMode::ForceExpandHints : ::sw::DeleteAndInsertMode::Default));
}
else
{
@@ -373,7 +374,8 @@ SwXText::insertString(const uno::Reference< text::XTextRange >& xTextRange,
}
else
{
- pRange->DeleteAndInsert(rString, bForceExpandHints);
+ pRange->DeleteAndInsert(rString, ::sw::DeleteAndInsertMode::ForceReplace
+ | (bForceExpandHints ? ::sw::DeleteAndInsertMode::ForceExpandHints : ::sw::DeleteAndInsertMode::Default));
}
}
else
@@ -605,7 +607,21 @@ SwXText::insertTextContent(
if (bAbsorb && !bAttribute)
{
- xRange->setString(OUString());
+ uno::Reference<lang::XUnoTunnel> const xRangeTunnel(xRange, uno::UNO_QUERY);
+ if (SwXTextRange *const pRange = ::sw::UnoTunnelGetImplementation<SwXTextRange>(xRangeTunnel))
+ {
+ pRange->DeleteAndInsert(OUString(), ::sw::DeleteAndInsertMode::ForceReplace
+ | (bForceExpandHints ? ::sw::DeleteAndInsertMode::ForceExpandHints : ::sw::DeleteAndInsertMode::Default));
+ }
+ else if (SwXTextCursor *const pCursor = dynamic_cast<SwXTextCursor*>(::sw::UnoTunnelGetImplementation<OTextCursorHelper>(xRangeTunnel)))
+ {
+ pCursor->DeleteAndInsert(OUString(), ::sw::DeleteAndInsertMode::ForceReplace
+ | (bForceExpandHints ? ::sw::DeleteAndInsertMode::ForceExpandHints : ::sw::DeleteAndInsertMode::Default));
+ }
+ else
+ {
+ xRange->setString(OUString());
+ }
}
uno::Reference< text::XTextRange > xTempRange =
(bAttribute && bAbsorb) ? xRange : xRange->getStart();
@@ -1566,6 +1582,8 @@ SwXText::convertToTextFrame(
}
bool bParaAfterInserted = false;
bool bParaBeforeInserted = false;
+ ::std::optional<SwPaM> oAnchorCheckPam;
+ oAnchorCheckPam.emplace(*pStartPam->Start(), *pEndPam->End());
if (
pStartStartNode && pEndStartNode &&
(pStartStartNode != pEndStartNode || pStartStartNode != GetStartNode())
@@ -1646,6 +1664,7 @@ SwXText::convertToTextFrame(
bParaAfterInserted = GetDoc()->getIDocumentContentOperations().AppendTextNode( aEnd );
pEndPam->DeleteMark();
*pEndPam->GetPoint() = aEnd;
+ *oAnchorCheckPam->End() = aEnd;
}
pStartPam->SetMark();
*pStartPam->End() = *pEndPam->End();
@@ -1660,10 +1679,17 @@ SwXText::convertToTextFrame(
{
const SwFrameFormat* pFrameFormat = (*m_pImpl->m_pDoc->GetSpzFrameFormats())[i];
const SwFormatAnchor& rAnchor = pFrameFormat->GetAnchor();
- if ( !isGraphicNode(pFrameFormat) &&
- (RndStdIds::FLY_AT_PARA == rAnchor.GetAnchorId() || RndStdIds::FLY_AT_CHAR == rAnchor.GetAnchorId()) &&
- pStartPam->Start()->nNode.GetIndex() <= rAnchor.GetContentAnchor()->nNode.GetIndex() &&
- pStartPam->End()->nNode.GetIndex() >= rAnchor.GetContentAnchor()->nNode.GetIndex())
+ // note: Word can do at-char anchors in text frames - sometimes!
+ // see testFlyInFly for why this checks only the edges of the selection,
+ // and testFloatingTablesAnchor for why it excludes pre/post table
+ // added nodes
+ if (!isGraphicNode(pFrameFormat)
+ && ( (RndStdIds::FLY_AT_PARA == rAnchor.GetAnchorId()
+ && ( oAnchorCheckPam->Start()->nNode.GetIndex() == rAnchor.GetContentAnchor()->nNode.GetIndex()
+ || oAnchorCheckPam->End()->nNode.GetIndex() == rAnchor.GetContentAnchor()->nNode.GetIndex()))
+ || (RndStdIds::FLY_AT_CHAR == rAnchor.GetAnchorId()
+ && ( *oAnchorCheckPam->Start() == *rAnchor.GetContentAnchor()
+ || *oAnchorCheckPam->End() == *rAnchor.GetContentAnchor()))))
{
if (pFrameFormat->GetName().isEmpty())
{
@@ -1675,6 +1701,7 @@ SwXText::convertToTextFrame(
}
}
}
+ oAnchorCheckPam.reset(); // clear SwIndex before deleting nodes
const uno::Reference<text::XTextFrame> xNewFrame(
SwXTextFrame::CreateXTextFrame(*m_pImpl->m_pDoc, nullptr));
@@ -1692,7 +1719,7 @@ SwXText::convertToTextFrame(
new SwXTextRange(*pStartPam, this);
assert(rNewFrame.IsDescriptor());
rNewFrame.attachToRange(xInsertTextRange, pStartPam.get());
- rNewFrame.setName(m_pImpl->m_pDoc->GetUniqueFrameName());
+ assert(!rNewFrame.getName().isEmpty());
}
SwTextNode *const pTextNode(pStartPam->GetNode().GetTextNode());
diff --git a/sw/source/filter/html/htmlplug.cxx b/sw/source/filter/html/htmlplug.cxx
index a0da671de733..eb707040adb2 100644
--- a/sw/source/filter/html/htmlplug.cxx
+++ b/sw/source/filter/html/htmlplug.cxx
@@ -1087,7 +1087,12 @@ void SwHTMLParser::InsertFloatingFrame()
bool bHasBorder = aFrameDesc.HasFrameBorder();
Size aMargin = aFrameDesc.GetMargin();
- xSet->setPropertyValue("FrameURL", uno::makeAny( aFrameDesc.GetURL().GetMainURL( INetURLObject::DecodeMechanism::NONE ) ) );
+ OUString sHRef = aFrameDesc.GetURL().GetMainURL( INetURLObject::DecodeMechanism::NONE );
+
+ if (INetURLObject(sHRef).GetProtocol() == INetProtocol::Macro)
+ NotifyMacroEventRead();
+
+ xSet->setPropertyValue("FrameURL", uno::makeAny( sHRef ) );
xSet->setPropertyValue("FrameName", uno::makeAny( aName ) );
if ( eScroll == ScrollingMode::Auto )
diff --git a/sw/source/filter/ww8/wrtw8num.cxx b/sw/source/filter/ww8/wrtw8num.cxx
index d0514482e5e1..05e860caec74 100644
--- a/sw/source/filter/ww8/wrtw8num.cxx
+++ b/sw/source/filter/ww8/wrtw8num.cxx
@@ -61,6 +61,17 @@ SwNumRule* MSWordExportBase::DuplicateNumRuleImpl(const SwNumRule *pRule)
return pMyNumRule;
}
+sal_uInt16 MSWordExportBase::DuplicateNumRule(const SwNumRule* pRule, sal_uInt8 nLevel, sal_uInt16 nVal)
+{
+ SwNumRule* const pMyNumRule = DuplicateNumRuleImpl(pRule);
+
+ SwNumFormat aNumFormat(pMyNumRule->Get(nLevel));
+ aNumFormat.SetStart(nVal);
+ pMyNumRule->Set(nLevel, aNumFormat);
+
+ return GetNumberingId(*pMyNumRule);
+}
+
// multiple SwList can be based on the same SwNumRule; ensure one w:abstractNum
// per SwList
sal_uInt16 MSWordExportBase::DuplicateAbsNum(OUString const& rListId,
diff --git a/sw/source/filter/ww8/wrtww8.hxx b/sw/source/filter/ww8/wrtww8.hxx
index a64f5627a2b4..0433332493ef 100644
--- a/sw/source/filter/ww8/wrtww8.hxx
+++ b/sw/source/filter/ww8/wrtww8.hxx
@@ -657,6 +657,7 @@ public:
/// List is set to restart at a particular value so for export make a
/// completely new list based on this one and export that instead,
/// which duplicates words behaviour in this respect.
+ sal_uInt16 DuplicateNumRule(const SwNumRule* pRule, sal_uInt8 nLevel, sal_uInt16 nVal);
SwNumRule * DuplicateNumRuleImpl(const SwNumRule *pRule);
/// check if a new abstractNum is needed for this list
diff --git a/sw/source/filter/ww8/ww8atr.cxx b/sw/source/filter/ww8/ww8atr.cxx
index 0b2c6527c0ea..5868928c5bf6 100644
--- a/sw/source/filter/ww8/ww8atr.cxx
+++ b/sw/source/filter/ww8/ww8atr.cxx
@@ -3649,6 +3649,13 @@ void AttributeOutputBase::ParaNumRule( const SwNumRuleItem& rNumRule )
}
}
}
+ else if (pTextNd->IsListRestart())
+ {
+ sal_uInt16 nStartWith = static_cast<sal_uInt16>(pTextNd->GetActualListStartValue());
+ nNumId = GetExport().DuplicateNumRule(pRule, nLvl, nStartWith);
+ if (USHRT_MAX != nNumId)
+ ++nNumId;
+ }
}
else
{
diff --git a/sw/source/filter/xml/XMLRedlineImportHelper.cxx b/sw/source/filter/xml/XMLRedlineImportHelper.cxx
index bfd4e488fcb8..0a0c75bc9816 100644
--- a/sw/source/filter/xml/XMLRedlineImportHelper.cxx
+++ b/sw/source/filter/xml/XMLRedlineImportHelper.cxx
@@ -33,6 +33,9 @@
#include <IDocumentStylePoolAccess.hxx>
#include <tools/datetime.hxx>
#include <poolfmt.hxx>
+#include <fmtanchr.hxx>
+#include <ftnidx.hxx>
+#include <txtftn.hxx>
#include <unoredline.hxx>
#include <DocumentRedlineManager.hxx>
#include "xmlimp.hxx"
@@ -571,6 +574,73 @@ inline bool XMLRedlineImportHelper::IsReady(const RedlineInfo* pRedline)
!pRedline->bNeedsAdjustment );
}
+/// recursively check if rPos or its anchor (if in fly or footnote) is in redline section
+static auto RecursiveContains(SwStartNode const& rRedlineSection, SwNode const& rPos) -> bool
+{
+ if (rRedlineSection.GetIndex() <= rPos.GetIndex()
+ && rPos.GetIndex() <= rRedlineSection.EndOfSectionIndex())
+ {
+ return true;
+ }
+ // loop to iterate "up" in the node tree and find an anchored XText
+ for (SwStartNode const* pStartNode = rPos.StartOfSectionNode();
+ pStartNode != nullptr && pStartNode->GetIndex() != 0;
+ pStartNode = pStartNode->StartOfSectionNode())
+ {
+ switch (pStartNode->GetStartNodeType())
+ {
+ case SwNormalStartNode:
+ case SwTableBoxStartNode:
+ continue;
+ break;
+ case SwFlyStartNode:
+ {
+ SwFrameFormat const*const pFormat(pStartNode->GetFlyFormat());
+ assert(pFormat);
+ SwFormatAnchor const& rAnchor(pFormat->GetAnchor());
+ if (rAnchor.GetAnchorId() == RndStdIds::FLY_AT_PAGE)
+ {
+ return false;
+ }
+ else if (rAnchor.GetAnchorId() == RndStdIds::FLY_AT_FLY)
+ { // anchor is on a start node, avoid skipping it:
+ pStartNode = rAnchor.GetContentAnchor()->nNode.GetNode().GetStartNode();
+ assert(pStartNode);
+ // pass the next node to recursive call - it will call
+ // call StartOfSectionNode on it and go back to pStartNode
+ SwNodeIndex const next(*pStartNode, +1);
+ return RecursiveContains(rRedlineSection, next.GetNode());
+ }
+ else
+ {
+ return RecursiveContains(rRedlineSection, rAnchor.GetContentAnchor()->nNode.GetNode());
+ }
+ }
+ break;
+ case SwFootnoteStartNode:
+ { // sigh ... need to search
+ for (SwTextFootnote const*const pFootnote : rRedlineSection.GetDoc()->GetFootnoteIdxs())
+ {
+ if (pStartNode == pFootnote->GetStartNode()->GetNode().GetStartNode())
+ {
+ return RecursiveContains(rRedlineSection, pFootnote->GetTextNode());
+ }
+ }
+ assert(false);
+ }
+ break;
+ case SwHeaderStartNode:
+ case SwFooterStartNode:
+ return false; // headers aren't anchored
+ break;
+ default:
+ assert(false);
+ break;
+ }
+ }
+ return false;
+}
+
void XMLRedlineImportHelper::InsertIntoDocument(RedlineInfo* pRedlineInfo)
{
OSL_ENSURE(nullptr != pRedlineInfo, "need redline info");
@@ -649,6 +719,17 @@ void XMLRedlineImportHelper::InsertIntoDocument(RedlineInfo* pRedlineInfo)
}
}
}
+ else if (pRedlineInfo->pContentIndex != nullptr
+ // should be enough to check 1 position of aPaM bc CheckNodesRange() above
+ && RecursiveContains(*pRedlineInfo->pContentIndex->GetNode().GetStartNode(), aPaM.GetPoint()->nNode.GetNode()))
+ {
+ SAL_WARN("sw.xml", "Recursive change tracking, removing");
+ // reuse aPaM to remove it from nodes that will be deleted
+ *aPaM.GetPoint() = SwPosition(pRedlineInfo->pContentIndex->GetNode());
+ aPaM.SetMark();
+ *aPaM.GetMark() = SwPosition(*pRedlineInfo->pContentIndex->GetNode().EndOfSectionNode());
+ pDoc->getIDocumentContentOperations().DeleteRange(aPaM);
+ }
else
{
// regular file loading: insert redline
diff --git a/sw/source/filter/xml/xmlexp.hxx b/sw/source/filter/xml/xmlexp.hxx
index 22e6a42368a7..a5abc5baf15f 100644
--- a/sw/source/filter/xml/xmlexp.hxx
+++ b/sw/source/filter/xml/xmlexp.hxx
@@ -23,6 +23,8 @@
#include <xmloff/xmlexp.hxx>
#include "xmlitmap.hxx"
#include <xmloff/xmltoken.hxx>
+
+#include <optional>
#include <vector>
class SwDoc;
@@ -73,7 +75,8 @@ class SwXMLExport : public SvXMLExport
SwXMLTableInfo_Impl& rTableInfo,
bool bTop=false );
- void ExportFormat( const SwFormat& rFormat, enum ::xmloff::token::XMLTokenEnum eClass );
+ void ExportFormat(const SwFormat& rFormat, enum ::xmloff::token::XMLTokenEnum eClass,
+ ::std::optional<OUString> const oStyleName);
void ExportTableFormat( const SwFrameFormat& rFormat, sal_uInt32 nAbsWidth );
void ExportTableColumnStyle( const SwXMLTableColumn_Impl& rCol );
diff --git a/sw/source/filter/xml/xmlfmte.cxx b/sw/source/filter/xml/xmlfmte.cxx
index 209cdd5a3904..b7aa337eede3 100644
--- a/sw/source/filter/xml/xmlfmte.cxx
+++ b/sw/source/filter/xml/xmlfmte.cxx
@@ -46,7 +46,8 @@ using namespace ::com::sun::star::drawing;
using namespace ::com::sun::star::lang;
using namespace ::xmloff::token;
-void SwXMLExport::ExportFormat( const SwFormat& rFormat, enum XMLTokenEnum eFamily )
+void SwXMLExport::ExportFormat(const SwFormat& rFormat, enum XMLTokenEnum eFamily,
+ ::std::optional<OUString> const oStyleName)
{
// <style:style ...>
CheckAttrList();
@@ -57,11 +58,14 @@ void SwXMLExport::ExportFormat( const SwFormat& rFormat, enum XMLTokenEnum eFami
return;
OSL_ENSURE( eFamily != XML_TOKEN_INVALID, "family must be specified" );
// style:name="..."
+ assert(oStyleName || (eFamily != XML_TABLE_ROW && eFamily != XML_TABLE_CELL));
bool bEncoded = false;
- AddAttribute( XML_NAMESPACE_STYLE, XML_NAME, EncodeStyleName(
- rFormat.GetName(), &bEncoded ) );
+ OUString const name(oStyleName ? *oStyleName : rFormat.GetName());
+ AddAttribute(XML_NAMESPACE_STYLE, XML_NAME, EncodeStyleName(name, &bEncoded));
if( bEncoded )
- AddAttribute( XML_NAMESPACE_STYLE, XML_DISPLAY_NAME, rFormat.GetName() );
+ {
+ AddAttribute(XML_NAMESPACE_STYLE, XML_DISPLAY_NAME, name);
+ }
if( eFamily != XML_TOKEN_INVALID )
AddAttribute( XML_NAMESPACE_STYLE, XML_FAMILY, eFamily );
diff --git a/sw/source/filter/xml/xmliteme.cxx b/sw/source/filter/xml/xmliteme.cxx
index b307a5c10872..8972bd14a51e 100644
--- a/sw/source/filter/xml/xmliteme.cxx
+++ b/sw/source/filter/xml/xmliteme.cxx
@@ -219,7 +219,7 @@ void SwXMLExport::ExportTableFormat( const SwFrameFormat& rFormat, sal_uInt32 nA
{
static_cast<SwXMLTableItemMapper_Impl *>(m_pTableItemMapper.get())
->SetAbsWidth( nAbsWidth );
- ExportFormat( rFormat, XML_TABLE );
+ ExportFormat(rFormat, XML_TABLE, {});
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/filter/xml/xmltble.cxx b/sw/source/filter/xml/xmltble.cxx
index 6a4fa1c9902b..d840509ecdc0 100644
--- a/sw/source/filter/xml/xmltble.cxx
+++ b/sw/source/filter/xml/xmltble.cxx
@@ -179,13 +179,18 @@ class SwXMLTableFrameFormatsSort_Impl
{
private:
SwXMLFrameFormats_Impl aFormatList;
+ SwXMLTextParagraphExport::FormatMap & m_rFormatMap;
+
public:
- bool AddRow( SwFrameFormat& rFrameFormat, const OUString& rNamePrefix, sal_uInt32 nLine );
- bool AddCell( SwFrameFormat& rFrameFormat, const OUString& rNamePrefix,
+ SwXMLTableFrameFormatsSort_Impl(SwXMLTextParagraphExport::FormatMap & rFormatMap)
+ : m_rFormatMap(rFormatMap)
+ {}
+ ::std::optional<OUString> AddRow(SwFrameFormat& rFrameFormat, const OUString& rNamePrefix, sal_uInt32 nLine );
+ ::std::optional<OUString> AddCell(SwFrameFormat& rFrameFormat, const OUString& rNamePrefix,
sal_uInt32 nCol, sal_uInt32 nRow, bool bTop );
};
-bool SwXMLTableFrameFormatsSort_Impl::AddRow( SwFrameFormat& rFrameFormat,
+::std::optional<OUString> SwXMLTableFrameFormatsSort_Impl::AddRow(SwFrameFormat& rFrameFormat,
const OUString& rNamePrefix,
sal_uInt32 nLine )
{
@@ -206,10 +211,12 @@ bool SwXMLTableFrameFormatsSort_Impl::AddRow( SwFrameFormat& rFrameFormat,
// empty styles have not to be exported
if( !pFrameSize && !pBrush && !pRowSplit )
- return false;
+ {
+ m_rFormatMap.emplace(&rFrameFormat, ::std::optional<OUString>()); // empty just to enable assert
+ return {};
+ }
// order is: -/brush, size/-, size/brush
- bool bInsert = true;
SwXMLFrameFormats_Impl::iterator i;
for( i = aFormatList.begin(); i < aFormatList.end(); ++i )
{
@@ -272,19 +279,19 @@ bool SwXMLTableFrameFormatsSort_Impl::AddRow( SwFrameFormat& rFrameFormat,
continue;
// found!
- rFrameFormat.SetName( pTestFormat->GetName() );
- bInsert = false;
- break;
+ auto const oName(m_rFormatMap.find(pTestFormat)->second);
+ assert(oName);
+ m_rFormatMap.emplace(&rFrameFormat, oName);
+ return {};
}
- if( bInsert )
{
- rFrameFormat.SetName( rNamePrefix + "." + OUString::number(nLine+1) );
+ OUString const name(rNamePrefix + "." + OUString::number(nLine+1));
+ m_rFormatMap.emplace(&rFrameFormat, ::std::optional<OUString>(name));
if ( i != aFormatList.end() ) ++i;
aFormatList.insert( i, &rFrameFormat );
+ return ::std::optional<OUString>(name);
}
-
- return bInsert;
}
static OUString lcl_xmltble_appendBoxPrefix(const OUString& rNamePrefix,
@@ -301,7 +308,7 @@ static OUString lcl_xmltble_appendBoxPrefix(const OUString& rNamePrefix,
+ "." + OUString::number(nRow + 1);
}
-bool SwXMLTableFrameFormatsSort_Impl::AddCell( SwFrameFormat& rFrameFormat,
+::std::optional<OUString> SwXMLTableFrameFormatsSort_Impl::AddCell(SwFrameFormat& rFrameFormat,
const OUString& rNamePrefix,
sal_uInt32 nCol, sal_uInt32 nRow, bool bTop )
{
@@ -336,7 +343,10 @@ bool SwXMLTableFrameFormatsSort_Impl::AddCell( SwFrameFormat& rFrameFormat,
// empty styles have not to be exported
if( !pVertOrient && !pBrush && !pBox && !pNumFormat && !pFrameDir && !pAttCnt )
- return false;
+ {
+ m_rFormatMap.emplace(&rFrameFormat, ::std::optional<OUString>()); // empty just to enable assert
+ return {};
+ }
// order is: -/-/-/num,
// -/-/box/-, -/-/box/num,
@@ -344,7 +354,6 @@ bool SwXMLTableFrameFormatsSort_Impl::AddCell( SwFrameFormat& rFrameFormat,
// vert/-/-/-, vert/-/-/num, vert/-/box/-, ver/-/box/num,
// vert/brush/-/-, vert/brush/-/num, vert/brush/box/-,
// vert/brush/box/num
- bool bInsert = true;
SwXMLFrameFormats_Impl::iterator i;
for( i = aFormatList.begin(); i < aFormatList.end(); ++i )
{
@@ -462,19 +471,19 @@ bool SwXMLTableFrameFormatsSort_Impl::AddCell( SwFrameFormat& rFrameFormat,
continue;
// found!
- rFrameFormat.SetName( pTestFormat->GetName() );
- bInsert = false;
- break;
+ auto const oName(m_rFormatMap.find(pTestFormat)->second);
+ assert(oName);
+ m_rFormatMap.emplace(&rFrameFormat, oName);
+ return {};
}
- if( bInsert )
{
- rFrameFormat.SetName( lcl_xmltble_appendBoxPrefix( rNamePrefix, nCol, nRow, bTop ) );
+ OUString const name(lcl_xmltble_appendBoxPrefix(rNamePrefix, nCol, nRow, bTop));
+ m_rFormatMap.emplace(&rFrameFormat, ::std::optional<OUString>(name));
if ( i != aFormatList.end() ) ++i;
aFormatList.insert( i, &rFrameFormat );
+ return ::std::optional<OUString>(name);
}
-
- return bInsert;
}
class SwXMLTableInfo_Impl
@@ -483,10 +492,21 @@ class SwXMLTableInfo_Impl
Reference<XTextSection> m_xBaseSection;
bool m_bBaseSectionValid;
sal_uInt32 const m_nPrefix;
+ SwXMLTextParagraphExport::FormatMap const& m_rLineFormats;
+ SwXMLTextParagraphExport::FormatMap const& m_rBoxFormats;
public:
- inline SwXMLTableInfo_Impl( const SwTable *pTable, sal_uInt16 nPrefix );
+ inline SwXMLTableInfo_Impl( const SwTable *pTable, sal_uInt16 nPrefix,
+ SwXMLTextParagraphExport::FormatMap const& rLineFormats,
+ SwXMLTextParagraphExport::FormatMap const& rBoxFormats)
+ : m_pTable(pTable)
+ , m_bBaseSectionValid(false)
+ , m_nPrefix(nPrefix)
+ , m_rLineFormats(rLineFormats)
+ , m_rBoxFormats(rBoxFormats)
+ {
+ }
const SwTable *GetTable() const { return m_pTable; }
const SwFrameFormat *GetTableFormat() const { return m_pTable->GetFrameFormat(); }
@@ -496,15 +516,10 @@ public:
inline void SetBaseSection( const Reference < XTextSection >& rBase );
/// The namespace (table or loext) that should be used for the elements.
sal_uInt16 GetPrefix() const { return m_nPrefix; }
+ SwXMLTextParagraphExport::FormatMap const& GetLineFormats() const { return m_rLineFormats; }
+ SwXMLTextParagraphExport::FormatMap const& GetBoxFormats() const { return m_rBoxFormats; }
};
-inline SwXMLTableInfo_Impl::SwXMLTableInfo_Impl(const SwTable *pTable, sal_uInt16 nPrefix) :
- m_pTable(pTable),
- m_bBaseSectionValid(false),
- m_nPrefix(nPrefix)
-{
-}
-
inline void SwXMLTableInfo_Impl::SetBaseSection(
const Reference < XTextSection >& rBaseSection )
{
@@ -638,8 +653,10 @@ void SwXMLExport::ExportTableLinesAutoStyles( const SwTableLines& rLines,
SwTableLine *pLine = rLines[nLine];
SwFrameFormat *pFrameFormat = pLine->GetFrameFormat();
- if( rExpRows.AddRow( *pFrameFormat, rNamePrefix, nLine ) )
- ExportFormat( *pFrameFormat, XML_TABLE_ROW );
+ if (auto oNew = rExpRows.AddRow(*pFrameFormat, rNamePrefix, nLine))
+ {
+ ExportFormat(*pFrameFormat, XML_TABLE_ROW, oNew);
+ }
const SwTableBoxes& rBoxes = pLine->GetTabBoxes();
const size_t nBoxes = rBoxes.size();
@@ -666,9 +683,11 @@ void SwXMLExport::ExportTableLinesAutoStyles( const SwTableLines& rLines,
if( pBoxSttNd )
{
SwFrameFormat *pFrameFormat2 = pBox->GetFrameFormat();
- if( rExpCells.AddCell( *pFrameFormat2, rNamePrefix, nOldCol, nLine,
+ if (auto oNew = rExpCells.AddCell(*pFrameFormat2, rNamePrefix, nOldCol, nLine,
bTop) )
- ExportFormat( *pFrameFormat2, XML_TABLE_CELL );
+ {
+ ExportFormat(*pFrameFormat2, XML_TABLE_CELL, oNew);
+ }
Reference < XCell > xCell = SwXCell::CreateXCell(
const_cast<SwFrameFormat *>(rTableInfo.GetTableFormat()),
@@ -714,8 +733,13 @@ void SwXMLExport::ExportTableLinesAutoStyles( const SwTableLines& rLines,
}
}
-void SwXMLExport::ExportTableAutoStyles( const SwTableNode& rTableNd )
+void SwXMLExport::ExportTableAutoStyles(const SwTableNode& rTableNd)
{
+ auto & rFormats(static_cast<SwXMLTextParagraphExport *>(GetTextParagraphExport().get())->GetTableFormats());
+ auto const it(rFormats.find(&rTableNd));
+ assert(it != rFormats.end());
+ SwXMLTextParagraphExport::FormatMap & rRowFormats(it->second.first);
+ SwXMLTextParagraphExport::FormatMap & rBoxFormats(it->second.second);
const SwTable& rTable = rTableNd.GetTable();
const SwFrameFormat *pTableFormat = rTable.GetFrameFormat();
@@ -743,9 +767,9 @@ void SwXMLExport::ExportTableAutoStyles( const SwTableNode& rTableNd )
ExportTableFormat( *pTableFormat, nAbsWidth );
SwXMLTableColumnsSortByWidth_Impl aExpCols;
- SwXMLTableFrameFormatsSort_Impl aExpRows;
- SwXMLTableFrameFormatsSort_Impl aExpCells;
- SwXMLTableInfo_Impl aTableInfo( &rTable, XML_NAMESPACE_TABLE );
+ SwXMLTableFrameFormatsSort_Impl aExpRows(rRowFormats);
+ SwXMLTableFrameFormatsSort_Impl aExpCells(rBoxFormats);
+ SwXMLTableInfo_Impl aTableInfo(&rTable, XML_NAMESPACE_TABLE, rRowFormats, rBoxFormats);
ExportTableLinesAutoStyles( rTable.GetTabLines(), nAbsWidth, nBaseWidth,
pTableFormat->GetName(), aExpCols, aExpRows, aExpCells,
aTableInfo, true);
@@ -763,10 +787,12 @@ void SwXMLExport::ExportTableBox( const SwTableBox& rBox,
const SwFrameFormat *pFrameFormat = rBox.GetFrameFormat();
if( pFrameFormat )
{
- const OUString& sName = pFrameFormat->GetName();
- if( !sName.isEmpty() )
+ auto const it(rTableInfo.GetBoxFormats().find(pFrameFormat));
+ assert(it != rTableInfo.GetBoxFormats().end());
+ if (it->second)
{
- AddAttribute( XML_NAMESPACE_TABLE, XML_STYLE_NAME, EncodeStyleName(sName) );
+ assert(!it->second->isEmpty());
+ AddAttribute(XML_NAMESPACE_TABLE, XML_STYLE_NAME, EncodeStyleName(*it->second));
}
}
}
@@ -896,10 +922,12 @@ void SwXMLExport::ExportTableLine( const SwTableLine& rLine,
const SwFrameFormat *pFrameFormat = rLine.GetFrameFormat();
if( pFrameFormat )
{
- const OUString& sName = pFrameFormat->GetName();
- if( !sName.isEmpty() )
+ auto const it(rTableInfo.GetLineFormats().find(pFrameFormat));
+ assert(it != rTableInfo.GetLineFormats().end());
+ if (it->second)
{
- AddAttribute( XML_NAMESPACE_TABLE, XML_STYLE_NAME, EncodeStyleName(sName) );
+ assert(!it->second->isEmpty());
+ AddAttribute(XML_NAMESPACE_TABLE, XML_STYLE_NAME, EncodeStyleName(*it->second));
}
}
@@ -1051,29 +1079,6 @@ void SwXMLExport::ExportTableLines( const SwTableLines& rLines,
delete pLines;
}
-static void lcl_xmltble_ClearName_Line( SwTableLine* pLine );
-
-static void lcl_xmltble_ClearName_Box( SwTableBox* pBox )
-{
- if( !pBox->GetSttNd() )
- {
- for( SwTableLine* pLine : pBox->GetTabLines() )
- lcl_xmltble_ClearName_Line( pLine );
- }
- else
- {
- SwFrameFormat *pFrameFormat = pBox->GetFrameFormat();
- if( pFrameFormat && !pFrameFormat->GetName().isEmpty() )
- pFrameFormat->SetName( OUString() );
- }
-}
-
-void lcl_xmltble_ClearName_Line( SwTableLine* pLine )
-{
- for( SwTableBox* pBox : pLine->GetTabBoxes() )
- lcl_xmltble_ClearName_Box( pBox );
-}
-
void SwXMLExport::ExportTable( const SwTableNode& rTableNd )
{
const SwTable& rTable = rTableNd.GetTable();
@@ -1132,15 +1137,16 @@ void SwXMLExport::ExportTable( const SwTableNode& rTableNd )
XML_DDE_SOURCE, true, false);
}
- SwXMLTableInfo_Impl aTableInfo( &rTable, nPrefix );
+ auto const& rFormats(static_cast<SwXMLTextParagraphExport const*>(GetTextParagraphExport().get())->GetTableFormats());
+ auto const it(rFormats.find(&rTableNd));
+ assert(it != rFormats.end());
+ SwXMLTableInfo_Impl aTableInfo(&rTable, nPrefix, it->second.first, it->second.second);
ExportTableLines( rTable.GetTabLines(), aTableInfo, rTable.GetRowsToRepeat() );
-
- for( SwTableLine *pLine : const_cast<SwTable &>(rTable).GetTabLines() )
- lcl_xmltble_ClearName_Line( pLine );
}
}
void SwXMLTextParagraphExport::exportTableAutoStyles() {
+ // note: maTableNodes is used here only to keep the iteration order as before
for (const auto* pTableNode : maTableNodes)
{
static_cast<SwXMLExport&>(GetExport()).ExportTableAutoStyles(*pTableNode);
@@ -1187,6 +1193,7 @@ void SwXMLTextParagraphExport::exportTable(
&& (bExportStyles || !pFormat->GetDoc()->IsInHeaderFooter(aIdx)))
{
maTableNodes.push_back(pTableNd);
+ m_TableFormats.emplace(pTableNd, ::std::make_pair(SwXMLTextParagraphExport::FormatMap(), SwXMLTextParagraphExport::FormatMap()));
// Collect all tables inside cells of this table, too
const auto aCellNames = pXTable->getCellNames();
for (const OUString& rCellName : aCellNames)
diff --git a/sw/source/filter/xml/xmltexte.hxx b/sw/source/filter/xml/xmltexte.hxx
index 4432e4ce0166..78e0271384c3 100644
--- a/sw/source/filter/xml/xmltexte.hxx
+++ b/sw/source/filter/xml/xmltexte.hxx
@@ -23,6 +23,9 @@
#include <xmloff/txtparae.hxx>
#include <tools/globname.hxx>
+#include <optional>
+#include <unordered_map>
+
#define XML_EMBEDDEDOBJECTGRAPHIC_URL_BASE "vnd.sun.star.GraphicObject:"
class SwXMLExport;
@@ -41,6 +44,10 @@ class SwXMLTextParagraphExport : public XMLTextParagraphExport
// Collected autostyles for use in exportTextAutoStyles
std::vector<const SwTableNode*> maTableNodes;
+public:
+ typedef ::std::unordered_map<SwFrameFormat const*, ::std::optional<OUString>> FormatMap;