summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--Makefile.in5
-rw-r--r--binaryurp/source/binaryurp.component2
-rw-r--r--chart2/Library_chartcore.mk2
-rw-r--r--chart2/qa/extras/chart2export.cxx3
-rw-r--r--chart2/source/chartcore.component7
-rw-r--r--chart2/source/controller/main/ChartController.cxx4
-rw-r--r--chart2/source/controller/sidebar/ChartColorWrapper.cxx4
-rw-r--r--chart2/source/controller/sidebar/ChartColorWrapper.hxx2
-rw-r--r--chart2/source/inc/DataTable.hxx90
-rw-r--r--chart2/source/model/inc/Diagram.hxx17
-rw-r--r--chart2/source/model/main/DataTable.cxx248
-rw-r--r--chart2/source/model/main/Diagram.cxx55
-rw-r--r--chart2/source/view/axes/VAxisBase.cxx8
-rw-r--r--chart2/source/view/axes/VAxisBase.hxx11
-rw-r--r--chart2/source/view/axes/VAxisProperties.cxx10
-rw-r--r--chart2/source/view/axes/VAxisProperties.hxx10
-rw-r--r--chart2/source/view/axes/VCartesianAxis.cxx40
-rw-r--r--chart2/source/view/axes/VCartesianAxis.hxx2
-rw-r--r--chart2/source/view/axes/VCartesianCoordinateSystem.cxx10
-rw-r--r--chart2/source/view/axes/VCartesianCoordinateSystem.hxx3
-rw-r--r--chart2/source/view/axes/VCoordinateSystem.cxx2
-rw-r--r--chart2/source/view/axes/VPolarCoordinateSystem.cxx11
-rw-r--r--chart2/source/view/axes/VPolarCoordinateSystem.hxx3
-rw-r--r--chart2/source/view/charttypes/VSeriesPlotter.cxx62
-rw-r--r--chart2/source/view/inc/DataTableView.hxx39
-rw-r--r--chart2/source/view/inc/ShapeFactory.hxx3
-rw-r--r--chart2/source/view/inc/VCoordinateSystem.hxx5
-rw-r--r--chart2/source/view/inc/VSeriesPlotter.hxx18
-rw-r--r--chart2/source/view/main/ChartView.cxx2
-rw-r--r--chart2/source/view/main/DataTableView.cxx217
-rw-r--r--chart2/source/view/main/ShapeFactory.cxx14
-rw-r--r--config_host.mk.in3
-rw-r--r--configure.ac82
-rw-r--r--connectivity/source/drivers/macab/MacabAddressBook.cxx7
-rw-r--r--cui/Library_cui.mk1
-rw-r--r--cui/Module_cui.mk1
-rw-r--r--cui/UIConfig_cui.mk1
-rw-r--r--cui/UITest_cui_tabpages.mk16
-rw-r--r--cui/qa/uitest/dialogs/chardlg.py75
-rw-r--r--cui/qa/uitest/tabpages/themepage.py87
-rw-r--r--cui/qa/uitest/tabpages/tpcolor.py69
-rw-r--r--cui/source/factory/dlgfact.cxx5
-rw-r--r--cui/source/inc/cuitabarea.hxx4
-rw-r--r--cui/source/inc/themepage.hxx53
-rw-r--r--cui/source/options/optlanguagetool.cxx4
-rw-r--r--cui/source/options/optlanguagetool.hxx1
-rw-r--r--cui/source/tabpages/chardlg.cxx24
-rw-r--r--cui/source/tabpages/themepage.cxx178
-rw-r--r--cui/source/tabpages/tpcolor.cxx92
-rw-r--r--cui/uiconfig/ui/langtoolconfigpage.ui227
-rw-r--r--cui/uiconfig/ui/themetabpage.ui555
-rw-r--r--cui/uiconfig/ui/toolbarmodedialog.ui2
-rw-r--r--cui/uiconfig/ui/widgettestdialog.ui1
-rw-r--r--desktop/inc/lib/init.hxx4
-rw-r--r--desktop/qa/desktop_lib/test_desktop_lib.cxx2
-rw-r--r--desktop/source/app/app.cxx6
-rw-r--r--desktop/source/deployment/misc/dp_misc.cxx4
-rw-r--r--desktop/source/lib/init.cxx109
m---------dictionaries0
-rw-r--r--download.lst8
-rw-r--r--drawinglayer/source/processor2d/vclhelperbufferdevice.cxx11
-rw-r--r--drawinglayer/source/processor2d/vclhelperbufferdevice.hxx2
-rw-r--r--drawinglayer/source/processor2d/vclpixelprocessor2d.cxx52
-rw-r--r--editeng/source/items/frmitems.cxx12
-rw-r--r--editeng/source/items/textitem.cxx59
-rw-r--r--editeng/source/uno/unotext.cxx29
-rw-r--r--external/epm/UnpackedTarball_epm.mk1
-rw-r--r--external/epm/ppc64el.patch.011
-rw-r--r--external/libnumbertext/EmptyString.patch113
-rw-r--r--external/libnumbertext/UnpackedTarball_libnumbertext.mk1
-rw-r--r--external/more_fonts/ExternalPackage_reem.mk1
-rw-r--r--filter/source/storagefilterdetect/filterdetect.cxx7
-rw-r--r--framework/source/uielement/subtoolbarcontroller.cxx28
m---------helpcontent20
-rw-r--r--hwpfilter/source/hwpread.cxx6
-rw-r--r--i18npool/source/defaultnumberingprovider/defaultnumberingprovider.cxx6
-rw-r--r--i18npool/source/localedata/data/hr_HR.xml8
-rw-r--r--icon-themes/breeze/res/lx03249.pngbin279 -> 397 bytes
-rw-r--r--icon-themes/breeze/res/lx03249_32.pngbin312 -> 319 bytes
-rw-r--r--icon-themes/breeze/res/lx03253.pngbin312 -> 342 bytes
-rw-r--r--icon-themes/breeze/res/odp_16_8.pngbin241 -> 259 bytes
-rw-r--r--icon-themes/breeze/res/odp_32_8.pngbin579 -> 617 bytes
-rw-r--r--icon-themes/breeze/res/odp_48_8.pngbin555 -> 622 bytes
-rw-r--r--icon-themes/breeze/res/odp_96_8.pngbin772 -> 866 bytes
-rw-r--r--icon-themes/breeze/res/otp_16_8.pngbin241 -> 275 bytes
-rw-r--r--icon-themes/breeze/res/otp_32_8.pngbin459 -> 483 bytes
-rw-r--r--icon-themes/breeze/res/otp_48_8.pngbin570 -> 679 bytes
-rw-r--r--icon-themes/breeze/res/otp_96_8.pngbin968 -> 1058 bytes
-rw-r--r--icon-themes/breeze/res/sx03249.pngbin241 -> 259 bytes
-rw-r--r--icon-themes/breeze_dark/res/lx03249.pngbin279 -> 397 bytes
-rw-r--r--icon-themes/breeze_dark/res/lx03249_32.pngbin312 -> 319 bytes
-rw-r--r--icon-themes/breeze_dark/res/lx03253.pngbin312 -> 342 bytes
-rw-r--r--icon-themes/breeze_dark/res/odp_16_8.pngbin241 -> 259 bytes
-rw-r--r--icon-themes/breeze_dark/res/odp_32_8.pngbin579 -> 617 bytes
-rw-r--r--icon-themes/breeze_dark/res/odp_48_8.pngbin555 -> 622 bytes
-rw-r--r--icon-themes/breeze_dark/res/odp_96_8.pngbin772 -> 866 bytes
-rw-r--r--icon-themes/breeze_dark/res/otp_16_8.pngbin241 -> 275 bytes
-rw-r--r--icon-themes/breeze_dark/res/otp_32_8.pngbin459 -> 483 bytes
-rw-r--r--icon-themes/breeze_dark/res/otp_48_8.pngbin570 -> 679 bytes
-rw-r--r--icon-themes/breeze_dark/res/otp_96_8.pngbin968 -> 1058 bytes
-rw-r--r--icon-themes/breeze_dark/res/sx03249.pngbin241 -> 259 bytes
-rw-r--r--icon-themes/breeze_dark_svg/res/lx03249.svg2
-rw-r--r--icon-themes/breeze_dark_svg/res/lx03249_32.svg2
-rw-r--r--icon-themes/breeze_dark_svg/res/lx03253.svg2
-rw-r--r--icon-themes/breeze_dark_svg/res/odp_16_8.svg2
-rw-r--r--icon-themes/breeze_dark_svg/res/odp_32_8.svg2
-rw-r--r--icon-themes/breeze_dark_svg/res/odp_48_8.svg2
-rw-r--r--icon-themes/breeze_dark_svg/res/odp_96_8.svg2
-rw-r--r--icon-themes/breeze_dark_svg/res/otp_16_8.svg2
-rw-r--r--icon-themes/breeze_dark_svg/res/otp_32_8.svg2
-rw-r--r--icon-themes/breeze_dark_svg/res/otp_48_8.svg2
-rw-r--r--icon-themes/breeze_dark_svg/res/otp_96_8.svg2
-rw-r--r--icon-themes/breeze_dark_svg/res/sx03249.svg2
-rw-r--r--icon-themes/breeze_svg/res/lx03249.svg2
-rw-r--r--icon-themes/breeze_svg/res/lx03249_32.svg2
-rw-r--r--icon-themes/breeze_svg/res/lx03253.svg2
-rw-r--r--icon-themes/breeze_svg/res/odp_16_8.svg2
-rw-r--r--icon-themes/breeze_svg/res/odp_32_8.svg2
-rw-r--r--icon-themes/breeze_svg/res/odp_48_8.svg2
-rw-r--r--icon-themes/breeze_svg/res/odp_96_8.svg2
-rw-r--r--icon-themes/breeze_svg/res/otp_16_8.svg2
-rw-r--r--icon-themes/breeze_svg/res/otp_32_8.svg2
-rw-r--r--icon-themes/breeze_svg/res/otp_48_8.svg2
-rw-r--r--icon-themes/breeze_svg/res/otp_96_8.svg2
-rw-r--r--icon-themes/breeze_svg/res/sx03249.svg2
-rw-r--r--idl/source/objects/types.cxx1
-rw-r--r--include/LibreOfficeKit/LibreOfficeKit.h4
-rw-r--r--include/LibreOfficeKit/LibreOfficeKit.hxx15
-rw-r--r--include/editeng/brushitem.hxx5
-rw-r--r--include/editeng/colritem.hxx54
-rw-r--r--include/editeng/unoprnms.hxx3
-rw-r--r--include/oox/drawingml/clrscheme.hxx10
-rw-r--r--include/oox/drawingml/color.hxx6
-rw-r--r--include/oox/export/drawingml.hxx1
-rw-r--r--include/sfx2/dinfdlg.hxx19
-rw-r--r--include/sfx2/lokcallback.hxx5
-rw-r--r--include/sfx2/lokcomponenthelpers.hxx (renamed from include/sfx2/lokcharthelper.hxx)30
-rw-r--r--include/sfx2/lokhelper.hxx4
-rw-r--r--include/sfx2/objsh.hxx1
-rw-r--r--include/sfx2/sfxbasecontroller.hxx4
-rw-r--r--include/sfx2/sidebar/SidebarController.hxx7
-rw-r--r--include/sfx2/viewsh.hxx7
-rw-r--r--include/svtools/languagetoolcfg.hxx3
-rw-r--r--include/svx/ColorSets.hxx21
-rw-r--r--include/svx/Palette.hxx22
-rw-r--r--include/svx/PaletteManager.hxx7
-rw-r--r--include/svx/colorbox.hxx11
-rw-r--r--include/svx/dialogs.hrc1
-rw-r--r--include/svx/strings.hrc18
-rw-r--r--include/svx/svdpntv.hxx4
-rw-r--r--include/svx/svxids.hrc4
-rw-r--r--include/svx/tbcontrl.hxx2
-rw-r--r--include/svx/unodraw/SvxTableShape.hxx44
-rw-r--r--include/svx/unoshprp.hxx3
-rw-r--r--include/svx/xcolit.hxx8
-rw-r--r--include/test/lokcallback.hxx2
-rw-r--r--include/vcl/ITiledRenderable.hxx5
-rw-r--r--include/vcl/filter/PDFiumLibrary.hxx4
-rw-r--r--include/vcl/filter/pdfdocument.hxx2
-rw-r--r--include/vcl/filter/pdfobjectcontainer.hxx4
-rw-r--r--include/vcl/lok.hxx3
-rw-r--r--include/vcl/toolkit/treelistbox.hxx6
-rw-r--r--include/vcl/window.hxx1
-rw-r--r--include/xmloff/xmltoken.hxx20
-rw-r--r--include/xmloff/xmltypes.hxx2
-rw-r--r--lingucomponent/source/spellcheck/languagetool/languagetoolimp.cxx16
-rw-r--r--lo.xcent.in (renamed from lo.xcent)12
-rw-r--r--offapi/UnoApi_offapi.mk2
-rw-r--r--offapi/com/sun/star/chart2/DataTable.idl48
-rw-r--r--offapi/com/sun/star/chart2/Diagram.idl6
-rw-r--r--offapi/com/sun/star/chart2/XDataTable.idl28
-rw-r--r--offapi/com/sun/star/chart2/XDiagram.idl9
-rw-r--r--officecfg/Configuration_officecfg.mk1
-rw-r--r--officecfg/registry/data/org/openoffice/Office/Calc.xcu11
-rw-r--r--officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu2
-rw-r--r--officecfg/registry/data/org/openoffice/Office/UI/Infobar.xcu17
-rw-r--r--officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu8
-rw-r--r--officecfg/registry/schema/org/openoffice/Office/Linguistic.xcs7
-rw-r--r--oox/inc/drawingml/fillproperties.hxx1
-rw-r--r--oox/qa/unit/data/refer-to-theme-shape-fill.odpbin0 -> 14638 bytes
-rw-r--r--oox/qa/unit/data/refer-to-theme.pptxbin32686 -> 33853 bytes
-rw-r--r--oox/qa/unit/data/theme-tint.pptxbin0 -> 16742 bytes
-rw-r--r--oox/qa/unit/drawingml.cxx32
-rw-r--r--oox/qa/unit/export.cxx49
-rw-r--r--oox/source/drawingml/chart/datatableconverter.cxx30
-rw-r--r--oox/source/drawingml/chart/plotareaconverter.cxx7
-rw-r--r--oox/source/drawingml/color.cxx6
-rw-r--r--oox/source/drawingml/fillproperties.cxx118
-rw-r--r--oox/source/drawingml/shape.cxx4
-rw-r--r--oox/source/export/drawingml.cxx68
-rw-r--r--oox/source/ole/vbacontrol.cxx6
-rw-r--r--oox/source/token/properties.txt10
-rw-r--r--postprocess/CustomTarget_registry.mk4
-rw-r--r--postprocess/signing/signing.pl3
-rw-r--r--readlicense_oo/license/CREDITS.fodt4683
-rw-r--r--reportdesign/source/ui/dlg/Condition.cxx4
-rw-r--r--reportdesign/source/ui/dlg/Condition.hxx2
-rw-r--r--sal/osl/unx/thread.cxx12
-rw-r--r--sc/inc/SparklineCell.hxx1
-rw-r--r--sc/inc/SparklineData.hxx2
-rw-r--r--sc/inc/document.hxx8
-rw-r--r--sc/qa/extras/anchor.cxx1
-rw-r--r--sc/qa/extras/scpdfexport.cxx6
-rw-r--r--sc/qa/unit/SparklineImportExportTest.cxx1
-rw-r--r--sc/qa/unit/SparklineTest.cxx2
-rw-r--r--sc/qa/unit/copy_paste_test.cxx1
-rw-r--r--sc/qa/unit/data/xlsx/tdf148820.xlsxbin0 -> 14103 bytes
-rw-r--r--sc/qa/unit/filters-test.cxx1
-rw-r--r--sc/qa/unit/subsequent_export_test2.cxx32
-rw-r--r--sc/qa/unit/subsequent_filters_test.cxx1
-rw-r--r--sc/qa/unit/tiledrendering/tiledrendering.cxx249
-rw-r--r--sc/qa/unit/ucalc.cxx1
-rw-r--r--sc/qa/unit/ucalc_condformat.cxx1
-rw-r--r--sc/qa/unit/ucalc_formula.cxx1
-rw-r--r--sc/qa/unit/ucalc_sharedformula.cxx1
-rw-r--r--sc/qa/unit/ucalc_sort.cxx1
-rw-r--r--sc/source/core/data/document.cxx5
-rw-r--r--sc/source/core/tool/interpr2.cxx3
-rw-r--r--sc/source/filter/inc/SparklineFragment.hxx3
-rw-r--r--sc/source/filter/inc/export/SparklineExt.hxx2
-rw-r--r--sc/source/filter/inc/pivotcachebuffer.hxx2
-rw-r--r--sc/source/filter/inc/richstring.hxx44
-rw-r--r--sc/source/filter/inc/richstringcontext.hxx2
-rw-r--r--sc/source/filter/inc/sheetdatabuffer.hxx20
-rw-r--r--sc/source/filter/inc/stylesbuffer.hxx2
-rw-r--r--sc/source/filter/inc/worksheethelper.hxx5
-rw-r--r--sc/source/filter/oox/autofilterbuffer.cxx2
-rw-r--r--sc/source/filter/oox/commentsbuffer.cxx4
-rw-r--r--sc/source/filter/oox/commentsfragment.cxx2
-rw-r--r--sc/source/filter/oox/pivotcachebuffer.cxx7
-rw-r--r--sc/source/filter/oox/revisionfragment.cxx2
-rw-r--r--sc/source/filter/oox/richstring.cxx80
-rw-r--r--sc/source/filter/oox/richstringcontext.cxx14
-rw-r--r--sc/source/filter/oox/sharedstringsbuffer.cxx5
-rw-r--r--sc/source/filter/oox/sharedstringsfragment.cxx2
-rw-r--r--sc/source/filter/oox/sheetdatabuffer.cxx23
-rw-r--r--sc/source/filter/oox/sheetdatacontext.cxx23
-rw-r--r--sc/source/filter/oox/stylesbuffer.cxx17
-rw-r--r--sc/source/filter/oox/worksheethelper.cxx10
-rw-r--r--sc/source/filter/xml/SparklineGroupsExport.hxx1
-rw-r--r--sc/source/filter/xml/SparklineGroupsImportContext.hxx2
-rw-r--r--sc/source/ui/app/inputhdl.cxx10
-rw-r--r--sc/source/ui/app/inputwin.cxx45
-rw-r--r--sc/source/ui/dbgui/csvgrid.cxx3
-rw-r--r--sc/source/ui/dialogs/SparklineDialog.cxx133
-rw-r--r--sc/source/ui/docshell/docsh.cxx1
-rw-r--r--sc/source/ui/drawfunc/chartsh.cxx12
-rw-r--r--sc/source/ui/inc/SparklineDataRangeDialog.hxx1
-rw-r--r--sc/source/ui/inc/SparklineDialog.hxx11
-rw-r--r--sc/source/ui/inc/SparklineShell.hxx1
-rw-r--r--sc/source/ui/inc/dbfunc.hxx5
-rw-r--r--sc/source/ui/inc/reffact.hxx3
-rw-r--r--sc/source/ui/inc/undo/UndoGroupSparklines.hxx3
-rw-r--r--sc/source/ui/inc/undo/UndoUngroupSparklines.hxx1
-rw-r--r--sc/source/ui/inc/undobase.hxx5
-rw-r--r--sc/source/ui/inc/undocell.hxx10
-rw-r--r--sc/source/ui/inc/undomanager.hxx47
-rw-r--r--sc/source/ui/sparklines/SparklineAttributes.cxx20
-rw-r--r--sc/source/ui/undo/undobase.cxx97
-rw-r--r--sc/source/ui/unoobj/docuno.cxx2
-rw-r--r--sc/source/ui/view/dbfunc.cxx89
-rw-r--r--sc/source/ui/view/gridwin4.cxx18
-rw-r--r--sc/source/ui/view/tabview3.cxx44
-rw-r--r--sc/source/ui/view/tabvwsh4.cxx9
-rw-r--r--sc/source/ui/view/tabvwshb.cxx71
-rw-r--r--sc/source/ui/view/viewfun2.cxx2
-rw-r--r--sc/uiconfig/scalc/menubar/menubar.xml20
-rw-r--r--sc/uiconfig/scalc/ui/sparklinedialog.ui1026
-rw-r--r--schema/libreoffice/OpenDocument-v1.3+libreoffice-schema.rng158
-rw-r--r--sd/CppunitTest_sd_filter_eppt.mk1
-rw-r--r--sd/inc/sdabstdlg.hxx2
-rw-r--r--sd/qa/filter/eppt/eppt.cxx51
-rw-r--r--sd/qa/unit/SdrPdfImportTest.cxx5
-rw-r--r--sd/qa/unit/data/pptx/croppedTo0.pptxbin0 -> 12974 bytes
-rw-r--r--sd/qa/unit/dialogs-test.cxx2
-rw-r--r--sd/qa/unit/import-tests2.cxx11
-rw-r--r--sd/qa/unit/uiimpress.cxx163
-rw-r--r--sd/source/core/stlsheet.cxx28
-rw-r--r--sd/source/filter/eppt/pptx-epptooxml.cxx26
-rw-r--r--sd/source/ui/dlg/RemoteDialog.cxx2
-rw-r--r--sd/source/ui/dlg/dlgpage.cxx9
-rw-r--r--sd/source/ui/dlg/sddlgfact.cxx4
-rw-r--r--sd/source/ui/dlg/sddlgfact.hxx2
-rw-r--r--sd/source/ui/dlg/tpoption.cxx2
-rw-r--r--sd/source/ui/docshell/docshell.cxx25
-rw-r--r--sd/source/ui/func/fuarea.cxx8
-rw-r--r--sd/source/ui/func/fuconstr.cxx39
-rw-r--r--sd/source/ui/func/fupage.cxx31
-rw-r--r--sd/source/ui/inc/DrawDocShell.hxx2
-rw-r--r--sd/source/ui/inc/dlgpage.hxx2
-rw-r--r--sd/source/ui/inc/unomodel.hxx4
-rw-r--r--sd/source/ui/slidesorter/shell/SlideSorterViewShell.cxx8
-rw-r--r--sd/source/ui/unoidl/unomodel.cxx15
-rw-r--r--sd/source/ui/view/drtxtob1.cxx28
-rw-r--r--sd/source/ui/view/drviews2.cxx26
-rw-r--r--sd/source/ui/view/drviewse.cxx5
-rw-r--r--sd/uiconfig/sdraw/ui/drawpagedialog.ui48
-rw-r--r--sdext/source/pdfimport/test/tests.cxx6
-rw-r--r--sfx2/Library_sfx.mk1
-rw-r--r--sfx2/source/appl/appserv.cxx6
-rw-r--r--sfx2/source/appl/sfxhelp.cxx16
-rw-r--r--sfx2/source/control/unoctitm.cxx8
-rw-r--r--sfx2/source/dialog/dinfdlg.cxx130
-rw-r--r--sfx2/source/dialog/recfloat.cxx15
-rw-r--r--sfx2/source/doc/objcont.cxx2
-rw-r--r--sfx2/source/inc/recfloat.hxx4
-rw-r--r--sfx2/source/sidebar/SidebarController.cxx54
-rw-r--r--sfx2/source/view/lokcharthelper.cxx2
-rw-r--r--sfx2/source/view/lokhelper.cxx25
-rw-r--r--sfx2/source/view/lokstarmathhelper.cxx181
-rw-r--r--sfx2/source/view/sfxbasecontroller.cxx12
-rw-r--r--sfx2/source/view/viewfrm.cxx11
-rw-r--r--sfx2/source/view/viewsh.cxx14
-rw-r--r--shell/source/win32/simplemail/senddoc.cxx38
-rw-r--r--shell/source/win32/simplemail/smplmailclient.cxx16
-rw-r--r--shell/source/win32/simplemail/smplmailclient.hxx2
-rwxr-xr-xsolenv/bin/macosx-codesign-app-bundle3
-rwxr-xr-xsolenv/bin/native-code.py1
-rwxr-xr-xsolenv/bin/ooinstall5
-rw-r--r--solenv/clang-format/excludelist2
-rw-r--r--solenv/sanitizers/ui/modules/scalc.suppr2
-rw-r--r--starmath/inc/view.hxx19
-rw-r--r--starmath/source/utility.cxx12
-rw-r--r--starmath/source/view.cxx401
-rw-r--r--svgio/inc/svgstyleattributes.hxx2
-rw-r--r--svgio/inc/svgstylenode.hxx4
-rw-r--r--svgio/inc/svgtoken.hxx1
-rw-r--r--svgio/inc/svgtools.hxx6
-rw-r--r--svgio/qa/cppunit/SvgImportTest.cxx93
-rw-r--r--svgio/qa/cppunit/data/ClipPathAndStyle.svg4
-rw-r--r--svgio/qa/cppunit/data/ClipPathUsingClipPath.svg24
-rw-r--r--svgio/qa/cppunit/data/ShapeWithClipPathAndCssStyle.svg13
-rw-r--r--svgio/qa/cppunit/data/symbol.svg11
-rw-r--r--svgio/qa/cppunit/data/tdf149880.svg11
-rw-r--r--svgio/qa/cppunit/data/tdf149893.svg3
-rw-r--r--svgio/source/svgreader/svganode.cxx1
-rw-r--r--svgio/source/svgreader/svggradientnode.cxx1
-rw-r--r--svgio/source/svgreader/svgimagenode.cxx1
-rw-r--r--svgio/source/svgreader/svgpatternnode.cxx1
-rw-r--r--svgio/source/svgreader/svgstyleattributes.cxx32
-rw-r--r--svgio/source/svgreader/svgstylenode.cxx31
-rw-r--r--svgio/source/svgreader/svgsymbolnode.cxx2
-rw-r--r--svgio/source/svgreader/svgtextpathnode.cxx1
-rw-r--r--svgio/source/svgreader/svgtoken.cxx2
-rw-r--r--svgio/source/svgreader/svgtools.cxx43
-rw-r--r--svgio/source/svgreader/svgtrefnode.cxx1
-rw-r--r--svgio/source/svgreader/svgusenode.cxx1
-rw-r--r--svtools/source/config/languagetoolcfg.cxx16
-rw-r--r--svtools/source/control/ctrlbox.cxx3
-rw-r--r--svx/CppunitTest_svx_core.mk49
-rw-r--r--svx/Module_svx.mk1
-rw-r--r--svx/qa/unit/core.cxx97
-rw-r--r--svx/qa/unit/data/GraphicObjectResolverTest.zipbin0 -> 740 bytes
-rw-r--r--svx/qa/unit/data/theme.pptxbin25742 -> 30646 bytes
-rw-r--r--svx/qa/unit/styles.cxx94
-rw-r--r--svx/qa/unit/table.cxx38
-rw-r--r--svx/qa/unit/xoutdev.cxx77
-rw-r--r--svx/sdi/svx.sdi6
-rw-r--r--svx/source/styles/ColorSets.cxx114
-rw-r--r--svx/source/svdraw/svdedxv.cxx2
-rw-r--r--svx/source/svdraw/svdmrkv.cxx2
-rw-r--r--svx/source/svdraw/svdpage.cxx3
-rw-r--r--svx/source/svdraw/svdpdf.cxx2
-rw-r--r--svx/source/svdraw/svdpntv.cxx4
-rw-r--r--svx/source/table/cell.cxx26
-rw-r--r--svx/source/table/tablecontroller.cxx7
-rw-r--r--svx/source/tbxctrls/Palette.cxx13
-rw-r--r--svx/source/tbxctrls/PaletteManager.cxx99
-rw-r--r--svx/source/tbxctrls/tbcontrl.cxx38
-rw-r--r--svx/source/unodraw/shapeimpl.hxx17
-rw-r--r--svx/source/unodraw/tableshape.cxx1
-rw-r--r--svx/source/unodraw/unopage.cxx1
-rw-r--r--svx/source/unodraw/unoshape.cxx27
-rw-r--r--svx/source/xml/xmlgrhlp.cxx7
-rw-r--r--svx/source/xoutdev/xattr.cxx85
-rw-r--r--sw/CppunitTest_sw_filter_ww8.mk75
-rw-r--r--sw/Module_sw.mk1
-rw-r--r--sw/inc/cmdid.h1
-rw-r--r--sw/inc/crsrsh.hxx3
-rw-r--r--sw/inc/formatcontentcontrol.hxx18
-rw-r--r--sw/inc/unoprnms.hxx1
-rw-r--r--sw/inc/view.hxx2
-rw-r--r--sw/inc/viscrs.hxx8
-rw-r--r--sw/qa/core/text/text.cxx87
-rw-r--r--sw/qa/core/txtnode/txtnode.cxx98
-rw-r--r--sw/qa/core/unocore/unocore.cxx53
-rw-r--r--sw/qa/extras/odfimport/data/tdf149978.fodt53
-rw-r--r--sw/qa/extras/odfimport/odfimport.cxx12
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf141652_fillBitmapName.docxbin152902 -> 0 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport11.cxx3
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport17.cxx25
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport5.cxx2
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport6.cxx10
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx6
-rw-r--r--sw/qa/extras/tiledrendering/data/multiline.odtbin0 -> 10456 bytes
-rw-r--r--sw/qa/extras/tiledrendering/tiledrendering.cxx40
-rw-r--r--sw/qa/extras/uiwriter/data/HiddenSection.odtbin0 -> 8378 bytes
-rw-r--r--sw/qa/extras/uiwriter/data/tdf142715.odtbin0 -> 11275 bytes
-rw-r--r--sw/qa/extras/uiwriter/uiwriter2.cxx52
-rw-r--r--sw/qa/extras/uiwriter/uiwriter3.cxx36
-rw-r--r--sw/qa/filter/ww8/ww8.cxx63
-rw-r--r--sw/qa/uibase/wrtsh/wrtsh.cxx21
-rw-r--r--sw/sdi/_grfsh.sdi1
-rw-r--r--sw/sdi/_textsh.sdi6
-rw-r--r--sw/sdi/swriter.sdi17
-rw-r--r--sw/source/core/crsr/callnk.cxx42
-rw-r--r--sw/source/core/crsr/contentcontrolbutton.cxx43
-rw-r--r--sw/source/core/crsr/crstrvl.cxx8
-rw-r--r--sw/source/core/crsr/viscrs.cxx20
-rw-r--r--sw/source/core/doc/docfld.cxx28
-rw-r--r--sw/source/core/doc/textboxhelper.cxx13
-rw-r--r--sw/source/core/docnode/ndsect.cxx1
-rw-r--r--sw/source/core/inc/UndoTable.hxx8
-rw-r--r--sw/source/core/inc/contentcontrolbutton.hxx2
-rw-r--r--sw/source/core/layout/layact.cxx11
-rw-r--r--sw/source/core/layout/wsfrm.cxx5
-rw-r--r--sw/source/core/table/swtable.cxx6
-rw-r--r--sw/source/core/text/itrtxt.cxx37
-rw-r--r--sw/source/core/text/porfld.cxx2
-rw-r--r--sw/source/core/text/porfld.hxx3
-rw-r--r--sw/source/core/text/porrst.cxx24
-rw-r--r--sw/source/core/text/txtfld.cxx7
-rw-r--r--sw/source/core/text/txtfly.cxx19
-rw-r--r--sw/source/core/txtnode/attrcontentcontrol.cxx29
-rw-r--r--sw/source/core/txtnode/thints.cxx35
-rw-r--r--sw/source/core/txtnode/txtatr2.cxx15
-rw-r--r--sw/source/core/undo/untbl.cxx2
-rw-r--r--sw/source/core/unocore/unobkm.cxx2
-rw-r--r--sw/source/core/unocore/unocontentcontrol.cxx29
-rw-r--r--sw/source/core/unocore/unomap1.cxx1
-rw-r--r--sw/source/core/unocore/unotext.cxx60
-rw-r--r--sw/source/core/view/viewsh.cxx2
-rw-r--r--sw/source/filter/html/htmlatr.cxx13
-rw-r--r--sw/source/filter/html/wrthtml.cxx4
-rw-r--r--sw/source/filter/html/wrthtml.hxx3
-rw-r--r--sw/source/filter/ww8/attributeoutputbase.hxx2
-rw-r--r--sw/source/filter/ww8/docxattributeoutput.cxx21
-rw-r--r--sw/source/filter/ww8/docxattributeoutput.hxx2
-rw-r--r--sw/source/filter/ww8/wrtw8nds.cxx2
-rw-r--r--sw/source/ui/chrdlg/pardlg.cxx4
-rw-r--r--sw/source/ui/dialog/swdlgfact.cxx7
-rw-r--r--sw/source/ui/dialog/swdlgfact.hxx5
-rw-r--r--sw/source/ui/index/cnttab.cxx25
-rw-r--r--sw/source/ui/misc/pggrid.cxx10
-rw-r--r--sw/source/ui/table/splittbl.cxx11
-rw-r--r--sw/source/uibase/dbui/dbmgr.cxx37
-rw-r--r--sw/source/uibase/dochdl/swdtflvr.cxx2
-rw-r--r--sw/source/uibase/docvw/edtwin.cxx76
-rw-r--r--sw/source/uibase/inc/splittbl.hxx12
-rw-r--r--sw/source/uibase/inc/wrtsh.hxx2
-rw-r--r--sw/source/uibase/shells/olesh.cxx12
-rw-r--r--sw/source/uibase/shells/tabsh.cxx18
-rw-r--r--sw/source/uibase/shells/textsh.cxx5
-rw-r--r--sw/source/uibase/shells/textsh1.cxx9
-rw-r--r--sw/source/uibase/uiview/view.cxx6
-rw-r--r--sw/source/uibase/uno/unotxdoc.cxx34
-rw-r--r--sw/source/uibase/wrtsh/wrtsh1.cxx13
-rw-r--r--sw/source/uibase/wrtsh/wrtsh4.cxx6
-rw-r--r--sw/uiconfig/swriter/menubar/menubar.xml1
-rw-r--r--sw/uiconfig/swriter/menubar/mscompatibleformsmenu.xml1
-rw-r--r--sw/uiconfig/swriter/ui/assignstylesdialog.ui3
-rw-r--r--sysui/desktop/macosx/Info.plist.in2
-rw-r--r--test/source/lokcallback.cxx14
-rw-r--r--tools/source/fsys/fileutil.cxx7
m---------translations0
-rw-r--r--ucb/source/ucp/webdav-curl/CurlSession.cxx9
-rw-r--r--vcl/Library_vclplug_osx.mk8
-rw-r--r--vcl/inc/jsdialog/jsdialogbuilder.hxx14
-rw-r--r--vcl/inc/pdf/pdfwriter_impl.hxx4
-rw-r--r--vcl/inc/salvtables.hxx4
-rw-r--r--vcl/jsdialog/enabled.cxx15
-rw-r--r--vcl/jsdialog/executor.cxx23
-rw-r--r--vcl/jsdialog/jsdialogbuilder.cxx45
-rw-r--r--vcl/qa/cppunit/PDFiumLibraryTest.cxx18
-rw-r--r--vcl/qa/cppunit/filter/ipdf/ipdf.cxx2
-rw-r--r--vcl/qa/cppunit/pdfexport/data/bitmap-scaledown.odtbin0 -> 13423 bytes
-rw-r--r--vcl/qa/cppunit/pdfexport/data/rectangles.pdf54
-rw-r--r--vcl/qa/cppunit/pdfexport/data/tdf66597-1.odtbin8154 -> 9286 bytes
-rw-r--r--vcl/qa/cppunit/pdfexport/pdfexport.cxx115
-rw-r--r--vcl/qt5/QtMenu.cxx10
-rw-r--r--vcl/source/app/salvtables.cxx46
-rw-r--r--vcl/source/app/svapp.cxx23
-rw-r--r--vcl/source/control/tabctrl.cxx4
-rw-r--r--vcl/source/filter/ipdf/pdfread.cxx13
-rw-r--r--vcl/source/filter/svm/SvmConverter.cxx25
-rw-r--r--vcl/source/gdi/pdfobjectcopier.cxx29
-rw-r--r--vcl/source/gdi/pdfwriter_impl.cxx32
-rw-r--r--vcl/source/gdi/sallayout.cxx19
-rw-r--r--vcl/source/graphic/VectorGraphicSearch.cxx3
-rw-r--r--vcl/source/outdev/bitmapex.cxx10
-rw-r--r--vcl/source/pdf/PDFiumLibrary.cxx13
-rw-r--r--vcl/source/treelist/iconview.cxx4
-rw-r--r--vcl/source/treelist/treelistbox.cxx18
-rw-r--r--vcl/source/window/layout.cxx16
-rw-r--r--vcl/unx/generic/gdi/cairotextrender.cxx6
-rw-r--r--vcl/unx/gtk3/a11y/atkcomponent.cxx50
-rw-r--r--vcl/unx/gtk3/a11y/atktext.cxx4
-rw-r--r--writerfilter/qa/cppunittests/dmapper/DomainMapper.cxx21
-rw-r--r--writerfilter/qa/cppunittests/dmapper/SdtHelper.cxx30
-rw-r--r--writerfilter/qa/cppunittests/dmapper/data/sdt-run-in-para.docxbin0 -> 11987 bytes
-rw-r--r--writerfilter/qa/cppunittests/dmapper/data/sdt-run-plain-text.docxbin0 -> 4179 bytes
-rw-r--r--writerfilter/source/dmapper/DomainMapper.cxx30
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.cxx7
-rw-r--r--writerfilter/source/dmapper/SdtHelper.cxx1
-rw-r--r--writerfilter/source/dmapper/SdtHelper.hxx4
-rw-r--r--xmloff/inc/enummaps.hxx1
-rw-r--r--xmloff/qa/unit/data/content-control-dropdown.docxbin0 -> 65391 bytes
-rw-r--r--xmloff/qa/unit/data/content-control-plain-text.fodt8
-rw-r--r--xmloff/qa/unit/data/refer-to-theme.odpbin0 -> 20677 bytes
-rw-r--r--xmloff/qa/unit/data/theme.odpbin0 -> 13253 bytes
-rw-r--r--xmloff/qa/unit/draw.cxx150
-rw-r--r--xmloff/qa/unit/text.cxx85
-rw-r--r--xmloff/source/core/xmltoken.cxx21
-rw-r--r--xmloff/source/draw/sdpropls.cxx6
-rw-r--r--xmloff/source/draw/sdxmlexp.cxx85
-rw-r--r--xmloff/source/draw/sdxmlexp_impl.hxx1
-rw-r--r--xmloff/source/draw/ximpstyl.cxx146
-rw-r--r--xmloff/source/style/prhdlfac.cxx3
-rw-r--r--xmloff/source/style/xmlbahdl.cxx30
-rw-r--r--xmloff/source/style/xmlbahdl.hxx9
-rw-r--r--xmloff/source/text/txtparae.cxx46
-rw-r--r--xmloff/source/text/txtprhdl.cxx20
-rw-r--r--xmloff/source/text/txtprmap.cxx6
-rw-r--r--xmloff/source/text/xmlcontentcontrolcontext.cxx13
-rw-r--r--xmloff/source/text/xmlcontentcontrolcontext.hxx1
-rw-r--r--xmloff/source/token/tokens.txt20
-rw-r--r--xmlsecurity/qa/unit/signing/signing.cxx2
-rw-r--r--xmlsecurity/source/helper/pdfsignaturehelper.cxx4
529 files changed, 11752 insertions, 4650 deletions
diff --git a/.gitignore b/.gitignore
index 77fdadef0a2f..fdae2d0b034a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -60,6 +60,7 @@
/bin/odfvalidator.sh
/bin/officeotron.sh
/hardened_runtime.xcent
+/lo.xcent
/Makefile
# make id
diff --git a/Makefile.in b/Makefile.in
index d74dba59344c..a5ae689b614e 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -225,6 +225,7 @@ distclean : clean compilerplugins-clean
$(BUILDDIR)/configure \
$(BUILDDIR)/hardened_runtime.xcent \
$(BUILDDIR)/instsetoo_native/util/openoffice.lst \
+ $(BUILDDIR)/lo.xcent \
$(BUILDDIR)/sysui/desktop/macosx/Info.plist \
$(BUILDDIR)/vs-code-template.code-workspace
$(if $(filter WNT,$(OS)),env -i PATH="$$PATH") $(FIND) $(SRCDIR)/solenv/gdb -name \*.pyc -exec rm {} \;
@@ -386,7 +387,9 @@ ifneq ($(ENABLE_MACOSX_SANDBOX),)
rm $(TESTINSTALLDIR)/$(PRODUCTNAME_WITHOUT_SPACES).app/Contents/MacOS/unopkg
rm $(TESTINSTALLDIR)/$(PRODUCTNAME_WITHOUT_SPACES).app/Contents/MacOS/unoinfo
endif
-#
+ifneq ($(MACOSX_PROVISIONING_PROFILE),)
+ cp "$(MACOSX_PROVISIONING_PROFILE)" $(TESTINSTALLDIR)/$(PRODUCTNAME_WITHOUT_SPACES).app/Contents/embedded.provisionprofile
+endif
ifneq ($(MACOSX_CODESIGNING_IDENTITY),)
# Then use the macosx-codesign-app-bundle script
@$(SRCDIR)/solenv/bin/macosx-codesign-app-bundle $(TESTINSTALLDIR)/$(PRODUCTNAME_WITHOUT_SPACES).app
diff --git a/binaryurp/source/binaryurp.component b/binaryurp/source/binaryurp.component
index e2581c76411e..b5b0f4da102f 100644
--- a/binaryurp/source/binaryurp.component
+++ b/binaryurp/source/binaryurp.component
@@ -20,7 +20,7 @@
<component loader="com.sun.star.loader.SharedLibrary" environment="@CPPU_ENV@"
xmlns="http://openoffice.org/2010/uno-components">
<implementation name="com.sun.star.comp.bridge.BridgeFactory"
- constructor="com_sun_star_comp_bridge_BridgeFactory_get_implementation">
+ constructor="com_sun_star_comp_bridge_BridgeFactory_get_implementation" single-instance="true">
<service name="com.sun.star.bridge.BridgeFactory"/>
</implementation>
</component>
diff --git a/chart2/Library_chartcore.mk b/chart2/Library_chartcore.mk
index 6ec40246b22c..72539f1a5bdf 100644
--- a/chart2/Library_chartcore.mk
+++ b/chart2/Library_chartcore.mk
@@ -103,6 +103,7 @@ $(eval $(call gb_Library_add_exception_objects,chartcore,\
chart2/source/view/main/ChartView \
chart2/source/view/main/Clipping \
chart2/source/view/main/DataPointSymbolSupplier \
+ chart2/source/view/main/DataTableView \
chart2/source/view/main/DrawModelWrapper \
chart2/source/view/main/ExplicitValueProvider \
chart2/source/view/main/LabelPositionHelper \
@@ -135,6 +136,7 @@ $(eval $(call gb_Library_add_exception_objects,chartcore,\
chart2/source/model/main/DataPointProperties \
chart2/source/model/main/DataSeries \
chart2/source/model/main/DataSeriesProperties \
+ chart2/source/model/main/DataTable \
chart2/source/model/main/Diagram \
chart2/source/model/main/FormattedString \
chart2/source/model/main/GridProperties \
diff --git a/chart2/qa/extras/chart2export.cxx b/chart2/qa/extras/chart2export.cxx
index 78529b9423c9..1e64ab5fb261 100644
--- a/chart2/qa/extras/chart2export.cxx
+++ b/chart2/qa/extras/chart2export.cxx
@@ -623,6 +623,8 @@ void Chart2ExportTest::testScatterXAxisCategories()
void Chart2ExportTest::testChartDataTable()
{
+/* Disable test temporarily until OOXML filter is updated
+
load(u"/chart2/qa/extras/data/docx/", "testChartDataTable.docx");
xmlDocUniquePtr pXmlDoc = parseExport("word/charts/chart", "Office Open XML Text");
@@ -630,6 +632,7 @@ void Chart2ExportTest::testChartDataTable()
assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:dTable/c:showHorzBorder", "val", "1");
assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:dTable/c:showVertBorder", "val", "1");
assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:dTable/c:showOutline", "val", "1");
+*/
}
void Chart2ExportTest::testChartExternalData()
diff --git a/chart2/source/chartcore.component b/chart2/source/chartcore.component
index f58ba98ba3ac..d15c808919df 100644
--- a/chart2/source/chartcore.component
+++ b/chart2/source/chartcore.component
@@ -220,6 +220,13 @@
<service name="com.sun.star.layout.LayoutElement"/>
<service name="com.sun.star.style.CharacterProperties"/>
</implementation>
+ <implementation name="com.sun.star.comp.chart2.DataTable"
+ constructor="com_sun_star_comp_chart2_DataTable_get_implementation">
+ <service name="com.sun.star.beans.PropertySet"/>
+ <service name="com.sun.star.chart2.DataTable"/>
+ <service name="com.sun.star.drawing.FillProperties"/>
+ <service name="com.sun.star.drawing.LineProperties"/>
+ </implementation>
<implementation name="com.sun.star.comp.chart2.PageBackground"
constructor="com_sun_star_comp_chart2_PageBackground_get_implementation">
<service name="com.sun.star.beans.PropertySet"/>
diff --git a/chart2/source/controller/main/ChartController.cxx b/chart2/source/controller/main/ChartController.cxx
index f50fab660acf..f9fcc71f1793 100644
--- a/chart2/source/controller/main/ChartController.cxx
+++ b/chart2/source/controller/main/ChartController.cxx
@@ -403,7 +403,7 @@ void SAL_CALL ChartController::attachFrame(
{
auto pSidebar = dynamic_cast<sfx2::sidebar::SidebarController*>(xSidebar.get());
assert(pSidebar);
- sfx2::sidebar::SidebarController::registerSidebarForFrame(pSidebar, this);
+ pSidebar->registerSidebarForFrame(this);
pSidebar->updateModel(getModel());
css::lang::EventObject aEvent;
mpSelectionChangeHandler->selectionChanged(aEvent);
@@ -747,7 +747,7 @@ void SAL_CALL ChartController::dispose()
uno::Reference<ui::XSidebar> xSidebar = getSidebarFromModel(getModel());
if (sfx2::sidebar::SidebarController* pSidebar = dynamic_cast<sfx2::sidebar::SidebarController*>(xSidebar.get()))
{
- sfx2::sidebar::SidebarController::unregisterSidebarForFrame(pSidebar, this);
+ pSidebar->unregisterSidebarForFrame(this);
}
}
diff --git a/chart2/source/controller/sidebar/ChartColorWrapper.cxx b/chart2/source/controller/sidebar/ChartColorWrapper.cxx
index 613407a827e7..dcaa77822682 100644
--- a/chart2/source/controller/sidebar/ChartColorWrapper.cxx
+++ b/chart2/source/controller/sidebar/ChartColorWrapper.cxx
@@ -84,7 +84,7 @@ ChartColorWrapper::ChartColorWrapper(
{
}
-void ChartColorWrapper::operator()([[maybe_unused]] const OUString& , const NamedColor& rColor)
+void ChartColorWrapper::operator()([[maybe_unused]] const OUString& , const svx::NamedThemedColor& rColor)
{
css::uno::Reference<css::beans::XPropertySet> xPropSet = getPropSet(mxModel);
@@ -94,7 +94,7 @@ void ChartColorWrapper::operator()([[maybe_unused]] const OUString& , const Name
return;
}
- xPropSet->setPropertyValue(maPropertyName, css::uno::makeAny(rColor.first));
+ xPropSet->setPropertyValue(maPropertyName, css::uno::makeAny(rColor.m_aColor));
}
void ChartColorWrapper::updateModel(const css::uno::Reference<css::frame::XModel>& xModel)
diff --git a/chart2/source/controller/sidebar/ChartColorWrapper.hxx b/chart2/source/controller/sidebar/ChartColorWrapper.hxx
index 66c880ae3ca2..694c5a9f7786 100644
--- a/chart2/source/controller/sidebar/ChartColorWrapper.hxx
+++ b/chart2/source/controller/sidebar/ChartColorWrapper.hxx
@@ -26,7 +26,7 @@ public:
SvxColorToolBoxControl* pControl,
const OUString& rPropertyName);
- void operator()(const OUString& rCommand, const NamedColor& rColor);
+ void operator()(const OUString& rCommand, const svx::NamedThemedColor& rColor);
// ColorSelectFunction signature
void updateModel(const css::uno::Reference<css::frame::XModel>& xModel);
diff --git a/chart2/source/inc/DataTable.hxx b/chart2/source/inc/DataTable.hxx
new file mode 100644
index 000000000000..52fe42c34ee6
--- /dev/null
+++ b/chart2/source/inc/DataTable.hxx
@@ -0,0 +1,90 @@
+/* -*- 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/.
+ */
+
+#pragma once
+
+#include "OPropertySet.hxx"
+#include <cppuhelper/basemutex.hxx>
+#include <cppuhelper/implbase.hxx>
+#include <comphelper/uno3.hxx>
+#include <rtl/ref.hxx>
+
+#include "charttoolsdllapi.hxx"
+#include <com/sun/star/chart2/XDataTable.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/util/XCloneable.hpp>
+#include "ModifyListenerHelper.hxx"
+
+namespace chart
+{
+typedef cppu::WeakImplHelper<css::chart2::XDataTable, css::lang::XServiceInfo,
+ css::util::XCloneable, css::util::XModifyBroadcaster,
+ css::util::XModifyListener>
+ DataTable_Base;
+
+/** Data table implementation */
+class OOO_DLLPUBLIC_CHARTTOOLS DataTable final : public cppu::BaseMutex,
+ public DataTable_Base,
+ public ::property::OPropertySet
+{
+public:
+ explicit DataTable();
+ virtual ~DataTable() override;
+
+ /// XServiceInfo declarations
+ virtual OUString SAL_CALL getImplementationName() override;
+ virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override;
+ virtual css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override;
+
+ /// merge XInterface implementations
+ DECLARE_XINTERFACE()
+
+ /// merge XTypeProvider implementations
+ DECLARE_XTYPEPROVIDER()
+
+ explicit DataTable(DataTable const& rOther);
+
+private:
+ // ____ OPropertySet ____
+ virtual css::uno::Any GetDefaultValue(sal_Int32 nHandle) const override;
+
+ // ____ OPropertySet ____
+ virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper() override;
+
+public:
+ // ____ XPropertySet ____
+ virtual css::uno::Reference<css::beans::XPropertySetInfo>
+ SAL_CALL getPropertySetInfo() override;
+
+ // ____ XCloneable ____
+ virtual css::uno::Reference<css::util::XCloneable> SAL_CALL createClone() override;
+
+ // ____ XModifyBroadcaster ____
+ virtual void SAL_CALL
+ addModifyListener(const css::uno::Reference<css::util::XModifyListener>& aListener) override;
+ virtual void SAL_CALL
+ removeModifyListener(const css::uno::Reference<css::util::XModifyListener>& aListener) override;
+
+private:
+ // ____ XModifyListener ____
+ virtual void SAL_CALL modified(const css::lang::EventObject& aEvent) override;
+
+ // ____ XEventListener (base of XModifyListener) ____
+ virtual void SAL_CALL disposing(const css::lang::EventObject& Source) override;
+
+ // ____ OPropertySet ____
+ virtual void firePropertyChangeEvent() override;
+ using OPropertySet::disposing;
+
+ css::uno::Reference<css::util::XModifyListener> m_xModifyEventForwarder;
+};
+
+} // namespace chart
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/chart2/source/model/inc/Diagram.hxx b/chart2/source/model/inc/Diagram.hxx
index ff3b836bc93f..b59e0e38f78a 100644
--- a/chart2/source/model/inc/Diagram.hxx
+++ b/chart2/source/model/inc/Diagram.hxx
@@ -30,6 +30,9 @@
#include <com/sun/star/util/XCloneable.hpp>
#include <com/sun/star/util/XModifyBroadcaster.hpp>
#include <com/sun/star/util/XModifyListener.hpp>
+#include <rtl/ref.hxx>
+#include "ModifyListenerHelper.hxx"
+#include "charttoolsdllapi.hxx"
#include <vector>
@@ -39,6 +42,7 @@ namespace com::sun::star::uno { class XComponentContext; }
namespace chart
{
+class DataTable;
namespace impl
{
@@ -108,6 +112,9 @@ private:
const css::uno::Reference< css::chart2::data::XDataSource >& xDataSource,
const css::uno::Sequence< css::beans::PropertyValue >& aArguments ) override;
+ virtual css::uno::Reference<css::chart2::XDataTable> SAL_CALL getDataTable() override;
+ virtual void SAL_CALL setDataTable(const css::uno::Reference<css::chart2::XDataTable>& xDataTable) override;
+
// ____ XCoordinateSystemContainer ____
virtual void SAL_CALL addCoordinateSystem(
const css::uno::Reference< css::chart2::XCoordinateSystem >& aCoordSys ) override;
@@ -137,6 +144,15 @@ private:
virtual void SAL_CALL removeModifyListener(
const css::uno::Reference< css::util::XModifyListener >& aListener ) override;
+public:
+ void setDataTable(const rtl::Reference<::chart::DataTable>& xNewDataTable);
+
+ rtl::Reference<::chart::DataTable> const& getDataTableRef() const
+ {
+ return m_xDataTable;
+ };
+
+private:
// ____ XModifyListener ____
virtual void SAL_CALL modified(
const css::lang::EventObject& aEvent ) override;
@@ -163,6 +179,7 @@ private:
css::uno::Reference<css::beans::XPropertySet> m_xFloor;
css::uno::Reference<css::chart2::XTitle> m_xTitle;
css::uno::Reference<css::chart2::XLegend> m_xLegend;
+ rtl::Reference<::chart::DataTable> m_xDataTable;
css::uno::Reference<css::chart2::XColorScheme> m_xColorScheme;
css::uno::Reference<css::util::XModifyListener> m_xModifyEventForwarder;
};
diff --git a/chart2/source/model/main/DataTable.cxx b/chart2/source/model/main/DataTable.cxx
new file mode 100644
index 000000000000..c1bc742df82c
--- /dev/null
+++ b/chart2/source/model/main/DataTable.cxx
@@ -0,0 +1,248 @@
+/* -*- 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 <DataTable.hxx>
+
+#include <LinePropertiesHelper.hxx>
+#include <FillProperties.hxx>
+#include <CharacterProperties.hxx>
+#include <ModifyListenerHelper.hxx>
+#include <PropertyHelper.hxx>
+#include <cppuhelper/supportsservice.hxx>
+#include <tools/diagnose_ex.h>
+
+#include <com/sun/star/beans/PropertyAttribute.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+
+#include <algorithm>
+
+using namespace css;
+
+namespace
+{
+enum
+{
+ DataTableProperty_HorizontalBorder,
+ DataTableProperty_VerticalBorder,
+ DataTableProperty_Outilne,
+ DataTableProperty_Keys,
+};
+
+void lcl_AddPropertiesToVector(std::vector<beans::Property>& rOutProperties)
+{
+ rOutProperties.emplace_back(
+ "HBorder", DataTableProperty_HorizontalBorder, cppu::UnoType<bool>::get(),
+ beans::PropertyAttribute::BOUND | beans::PropertyAttribute::MAYBEDEFAULT);
+ rOutProperties.emplace_back(
+ "VBorder", DataTableProperty_VerticalBorder, cppu::UnoType<bool>::get(),
+ beans::PropertyAttribute::BOUND | beans::PropertyAttribute::MAYBEDEFAULT);
+ rOutProperties.emplace_back("Outline", DataTableProperty_Outilne, cppu::UnoType<bool>::get(),
+ beans::PropertyAttribute::BOUND
+ | beans::PropertyAttribute::MAYBEDEFAULT);
+ rOutProperties.emplace_back("Keys", DataTableProperty_Keys, cppu::UnoType<bool>::get(),
+ beans::PropertyAttribute::BOUND
+ | beans::PropertyAttribute::MAYBEDEFAULT);
+}
+
+struct StaticDataTableDefaults_Initializer
+{
+ ::chart::tPropertyValueMap* operator()()
+ {
+ static ::chart::tPropertyValueMap aStaticDefaults;
+ lcl_AddDefaultsToMap(aStaticDefaults);
+ return &aStaticDefaults;
+ }
+
+private:
+ static void lcl_AddDefaultsToMap(::chart::tPropertyValueMap& aMap)
+ {
+ ::chart::LinePropertiesHelper::AddDefaultsToMap(aMap);
+ ::chart::FillProperties::AddDefaultsToMap(aMap);
+ ::chart::CharacterProperties::AddDefaultsToMap(aMap);
+
+ ::chart::PropertyHelper::setPropertyValueDefault(aMap, DataTableProperty_HorizontalBorder,
+ true);
+ ::chart::PropertyHelper::setPropertyValueDefault(aMap, DataTableProperty_VerticalBorder,
+ true);
+ ::chart::PropertyHelper::setPropertyValueDefault(aMap, DataTableProperty_Outilne, true);
+ ::chart::PropertyHelper::setPropertyValueDefault(aMap, DataTableProperty_Keys, false);
+ }
+};
+
+struct StaticDataTableDefaults
+ : public rtl::StaticAggregate<::chart::tPropertyValueMap, StaticDataTableDefaults_Initializer>
+{
+};
+
+struct StaticDataTableInfoHelper_Initializer
+{
+ cppu::OPropertyArrayHelper* operator()()
+ {
+ static cppu::OPropertyArrayHelper aPropHelper(lcl_GetPropertySequence());
+ return &aPropHelper;
+ }
+
+private:
+ static uno::Sequence<beans::Property> lcl_GetPropertySequence()
+ {
+ std::vector<beans::Property> aProperties;
+ lcl_AddPropertiesToVector(aProperties);
+ ::chart::LinePropertiesHelper::AddPropertiesToVector(aProperties);
+ ::chart::FillProperties::AddPropertiesToVector(aProperties);
+ std::sort(aProperties.begin(), aProperties.end(), ::chart::PropertyNameLess());
+
+ return comphelper::containerToSequence(aProperties);
+ }
+};
+
+struct StaticDataTableInfoHelper
+ : public rtl::StaticAggregate<::cppu::OPropertyArrayHelper,
+ StaticDataTableInfoHelper_Initializer>
+{
+};
+
+struct StaticDataTableInfo_Initializer
+{
+ uno::Reference<beans::XPropertySetInfo>* operator()()
+ {
+ static uno::Reference<beans::XPropertySetInfo> xPropertySetInfo(
+ ::cppu::OPropertySetHelper::createPropertySetInfo(*StaticDataTableInfoHelper::get()));
+ return &xPropertySetInfo;
+ }
+};
+
+struct StaticDataTableInfo : public rtl::StaticAggregate<uno::Reference<beans::XPropertySetInfo>,
+ StaticDataTableInfo_Initializer>
+{
+};
+
+} // anonymous namespace
+
+namespace chart
+{
+DataTable::DataTable()
+ : ::property::OPropertySet(m_aMutex)
+ , m_xModifyEventForwarder(ModifyListenerHelper::createModifyEventForwarder())
+{
+}
+
+DataTable::DataTable(const DataTable& rOther)
+ : DataTable_Base(rOther)
+ , ::property::OPropertySet(rOther, m_aMutex)
+ , m_xModifyEventForwarder(ModifyListenerHelper::createModifyEventForwarder())
+{
+}
+
+DataTable::~DataTable() = default;
+
+// ____ XCloneable ____
+uno::Reference<util::XCloneable> SAL_CALL DataTable::createClone()
+{
+ return uno::Reference<util::XCloneable>(new DataTable(*this));
+}
+
+// ____ XModifyBroadcaster ____
+void SAL_CALL DataTable::addModifyListener(const uno::Reference<util::XModifyListener>& aListener)
+{
+ try
+ {
+ uno::Reference<util::XModifyBroadcaster> xBroadcaster(m_xModifyEventForwarder,
+ uno::UNO_QUERY_THROW);
+ xBroadcaster->addModifyListener(aListener);
+ }
+ catch (const uno::Exception&)
+ {
+ DBG_UNHANDLED_EXCEPTION("chart2");
+ }
+}
+
+void SAL_CALL
+DataTable::removeModifyListener(const uno::Reference<util::XModifyListener>& aListener)
+{
+ try
+ {
+ uno::Reference<util::XModifyBroadcaster> xBroadcaster(m_xModifyEventForwarder,
+ uno::UNO_QUERY_THROW);
+ xBroadcaster->removeModifyListener(aListener);
+ }
+ catch (const uno::Exception&)
+ {
+ DBG_UNHANDLED_EXCEPTION("chart2");
+ }
+}
+
+// ____ XModifyListener ____
+void SAL_CALL DataTable::modified(const lang::EventObject& aEvent)
+{
+ m_xModifyEventForwarder->modified(aEvent);
+}
+
+// ____ XEventListener (base of XModifyListener) ____
+void SAL_CALL DataTable::disposing(const lang::EventObject& /* Source */)
+{
+ // nothing
+}
+
+// ____ OPropertySet ____
+void DataTable::firePropertyChangeEvent()
+{
+ m_xModifyEventForwarder->modified(lang::EventObject(static_cast<uno::XWeak*>(this)));
+}
+
+// ____ OPropertySet ____
+uno::Any DataTable::GetDefaultValue(sal_Int32 nHandle) const
+{
+ const tPropertyValueMap& rStaticDefaults = *StaticDataTableDefaults::get();
+ auto aFound = rStaticDefaults.find(nHandle);
+ if (aFound == rStaticDefaults.end())
+ return uno::Any();
+ return (*aFound).second;
+}
+
+::cppu::IPropertyArrayHelper& SAL_CALL DataTable::getInfoHelper()
+{
+ return *StaticDataTableInfoHelper::get();
+}
+
+// ____ XPropertySet ____
+uno::Reference<beans::XPropertySetInfo> SAL_CALL DataTable::getPropertySetInfo()
+{
+ return *StaticDataTableInfo::get();
+}
+
+// implement XServiceInfo methods basing upon getSupportedServiceNames_Static
+OUString SAL_CALL DataTable::getImplementationName()
+{
+ return "com.sun.star.comp.chart2.DataTable";
+}
+
+sal_Bool SAL_CALL DataTable::supportsService(const OUString& rServiceName)
+{
+ return cppu::supportsService(this, rServiceName);
+}
+
+uno::Sequence<OUString> SAL_CALL DataTable::getSupportedServiceNames()
+{
+ return { "com.sun.star.chart2.DataTable", "com.sun.star.beans.PropertySet",
+ "com.sun.star.drawing.FillProperties", "com.sun.star.drawing.LineProperties" };
+}
+
+IMPLEMENT_FORWARD_XINTERFACE2(DataTable, DataTable_Base, ::property::OPropertySet)
+IMPLEMENT_FORWARD_XTYPEPROVIDER2(DataTable, DataTable_Base, ::property::OPropertySet)
+
+} // namespace chart
+
+extern "C" SAL_DLLPUBLIC_EXPORT uno::XInterface*
+com_sun_star_comp_chart2_DataTable_get_implementation(
+ css::uno::XComponentContext* /*pComponentContext*/, uno::Sequence<uno::Any> const& /*rAny*/)
+{
+ return cppu::acquire(new ::chart::DataTable);
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/chart2/source/model/main/Diagram.cxx b/chart2/source/model/main/Diagram.cxx
index 8255115bead1..2a310863aca6 100644
--- a/chart2/source/model/main/Diagram.cxx
+++ b/chart2/source/model/main/Diagram.cxx
@@ -28,6 +28,7 @@
#include <CloneHelper.hxx>
#include <SceneProperties.hxx>
#include <unonames.hxx>
+#include <DataTable.hxx>
#include <basegfx/numeric/ftools.hxx>
#include <com/sun/star/beans/PropertyAttribute.hpp>
@@ -157,21 +158,6 @@ void lcl_AddPropertiesToVector(
PROP_DIAGRAM_3DRELATIVEHEIGHT,
cppu::UnoType<sal_Int32>::get(),
beans::PropertyAttribute::MAYBEVOID );
- rOutProperties.emplace_back( "DataTableHBorder",
- PROP_DIAGRAM_DATATABLEHBORDER,
- cppu::UnoType<bool>::get(),
- beans::PropertyAttribute::BOUND
- | beans::PropertyAttribute::MAYBEDEFAULT );
- rOutProperties.emplace_back( "DataTableVBorder",
- PROP_DIAGRAM_DATATABLEVBORDER,
- cppu::UnoType<bool>::get(),
- beans::PropertyAttribute::BOUND
- | beans::PropertyAttribute::MAYBEDEFAULT );
- rOutProperties.emplace_back( "DataTableOutline",
- PROP_DIAGRAM_DATATABLEOUTLINE,
- cppu::UnoType<bool>::get(),
- beans::PropertyAttribute::BOUND
- | beans::PropertyAttribute::MAYBEDEFAULT );
rOutProperties.emplace_back( "ExternalData",
PROP_DIAGRAM_EXTERNALDATA,
cppu::UnoType<OUString>::get(),
@@ -189,9 +175,6 @@ const ::chart::tPropertyValueMap& StaticDiagramDefaults()
::chart::PropertyHelper::setPropertyValueDefault( aMap, PROP_DIAGRAM_GROUP_BARS_PER_AXIS, true );
::chart::PropertyHelper::setPropertyValueDefault( aMap, PROP_DIAGRAM_INCLUDE_HIDDEN_CELLS, true );
::chart::PropertyHelper::setPropertyValueDefault( aMap, PROP_DIAGRAM_RIGHT_ANGLED_AXES, false );
- ::chart::PropertyHelper::setPropertyValueDefault( aMap, PROP_DIAGRAM_DATATABLEHBORDER, false );
- ::chart::PropertyHelper::setPropertyValueDefault( aMap, PROP_DIAGRAM_DATATABLEVBORDER, false );
- ::chart::PropertyHelper::setPropertyValueDefault( aMap, PROP_DIAGRAM_DATATABLEOUTLINE, false );
::chart::PropertyHelper::setPropertyValueDefault< sal_Int32 >( aMap, PROP_DIAGRAM_STARTING_ANGLE, 90 );
::chart::PropertyHelper::setPropertyValueDefault< sal_Int32 >( aMap, PROP_DIAGRAM_3DRELATIVEHEIGHT, 100 );
::chart::SceneProperties::AddDefaultsToMap( aMap );
@@ -642,6 +625,42 @@ void SAL_CALL Diagram::getFastPropertyValue( Any& rValue, sal_Int32 nHandle ) co
::property::OPropertySet::getFastPropertyValue( rValue,nHandle );
}
+uno::Reference<chart2::XDataTable> SAL_CALL Diagram::getDataTable()
+{
+ MutexGuard aGuard(m_aMutex);
+ return m_xDataTable;
+}
+
+void SAL_CALL Diagram::setDataTable(const uno::Reference<chart2::XDataTable>& xDataTable)
+{
+ auto* pDataTable = dynamic_cast<DataTable*>(xDataTable.get());
+ assert(!xDataTable || pDataTable);
+ setDataTable(rtl::Reference<DataTable>(pDataTable));
+}
+
+void Diagram::setDataTable(const rtl::Reference<DataTable>& xNewDataTable)
+{
+ rtl::Reference<DataTable> xOldDataTable;
+ {
+ MutexGuard aGuard(m_aMutex);
+ if (m_xDataTable == xNewDataTable)
+ return;
+ xOldDataTable = m_xDataTable;
+ m_xDataTable = xNewDataTable;
+ }
+ if (xOldDataTable.is())
+ {
+ uno::Reference<chart2::XDataTable> xDataTable(xOldDataTable);
+ ModifyListenerHelper::removeListener(xDataTable, m_xModifyEventForwarder);
+ }
+ if (xNewDataTable.is())
+ {
+ uno::Reference<chart2::XDataTable> xDataTable(xNewDataTable);
+ ModifyListenerHelper::addListener(xDataTable, m_xModifyEventForwarder);
+ }
+ fireModifyEvent();
+}
+
using impl::Diagram_Base;
IMPLEMENT_FORWARD_XINTERFACE2( Diagram, Diagram_Base, ::property::OPropertySet )
diff --git a/chart2/source/view/axes/VAxisBase.cxx b/chart2/source/view/axes/VAxisBase.cxx
index 32a0458ea325..880c10568e6f 100644
--- a/chart2/source/view/axes/VAxisBase.cxx
+++ b/chart2/source/view/axes/VAxisBase.cxx
@@ -22,6 +22,7 @@
#include <ExplicitCategoriesProvider.hxx>
#include "Tickmarks.hxx"
#include <com/sun/star/drawing/XShapes.hpp>
+#include <VSeriesPlotter.hxx>
#include <com/sun/star/chart2/AxisType.hpp>
#include <com/sun/star/chart2/XAxis.hpp>
#include <com/sun/star/chart2/data/XTextualDataSequence.hpp>
@@ -188,6 +189,8 @@ bool VAxisBase::prepareShapeCreation()
if( m_aAxisProperties.m_bDisplayLabels )
m_xTextTarget = m_pShapeFactory->createGroup2D( m_xFinalTarget, m_aCID );
+ if (m_aAxisProperties.m_bDisplayDataTable)
+ m_xDataTableTarget = m_pShapeFactory->createGroup2D(m_xFinalTarget, m_aCID);
return true;
}
@@ -242,6 +245,11 @@ void VAxisBase::updateUnscaledValuesAtTicks( TickIter& rIter )
}
}
+void VAxisBase::createDataTableView(std::vector<std::unique_ptr<VSeriesPlotter>>& /*rSeriesPlotterList*/,
+ uno::Reference<util::XNumberFormatsSupplier> const& /*xNumberFormatsSupplier*/)
+{
+}
+
} //namespace chart
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/chart2/source/view/axes/VAxisBase.hxx b/chart2/source/view/axes/VAxisBase.hxx
index c8a8667770e1..b65de0d4c954 100644
--- a/chart2/source/view/axes/VAxisBase.hxx
+++ b/chart2/source/view/axes/VAxisBase.hxx
@@ -27,6 +27,9 @@ namespace com::sun::star::util { class XNumberFormatsSupplier; }
namespace chart
{
+class VSeriesPlotter;
+class DataTableView;
+
class VAxisBase : public VAxisOrGridBase
{
public:
@@ -59,6 +62,11 @@ public:
void setExtraLinePositionAtOtherAxis( double fCrossingAt );
+ virtual void createDataTableView(std::vector<std::unique_ptr<VSeriesPlotter>>& rSeriesPlotterList,
+ css::uno::Reference<css::util::XNumberFormatsSupplier> const& xNumberFormatsSupplier);
+
+ std::shared_ptr<DataTableView> getDataTableView() { return m_pDataTableView; }
+
protected: //methods
static size_t getIndexOfLongestLabel( const css::uno::Sequence<OUString>& rLabels );
void removeTextShapesFromTicks();
@@ -80,6 +88,9 @@ protected: //member
css::uno::Reference< css::drawing::XShapes > m_xGroupShape_Shapes;
css::uno::Reference< css::drawing::XShapes > m_xTextTarget;
+ css::uno::Reference< css::drawing::XShapes > m_xDataTableTarget;
+
+ std::shared_ptr<DataTableView> m_pDataTableView;
/**
* This typically consists of 2 TickInfo vectors (i.e. the outer vector
diff --git a/chart2/source/view/axes/VAxisProperties.cxx b/chart2/source/view/axes/VAxisProperties.cxx
index 295ad21a68e6..48cc3569f46d 100644
--- a/chart2/source/view/axes/VAxisProperties.cxx
+++ b/chart2/source/view/axes/VAxisProperties.cxx
@@ -153,7 +153,8 @@ TickmarkProperties AxisProperties::getBiggestTickmarkProperties()
}
AxisProperties::AxisProperties( const uno::Reference< XAxis >& xAxisModel
- , ExplicitCategoriesProvider* pExplicitCategoriesProvider )
+ , ExplicitCategoriesProvider* pExplicitCategoriesProvider
+ , rtl::Reference<::chart::DataTable> const& xDataTableModel)
: m_xAxisModel(xAxisModel)
, m_nDimensionIndex(0)
, m_bIsMainAxis(true)
@@ -163,6 +164,7 @@ AxisProperties::AxisProperties( const uno::Reference< XAxis >& xAxisModel
, m_eTickmarkPos( css::chart::ChartAxisMarkPosition_AT_LABELS_AND_AXIS )
, m_bCrossingAxisHasReverseDirection(false)
, m_bCrossingAxisIsCategoryAxes(false)
+ , m_bDisplayDataTable(false)
, m_bDisplayLabels( true )
, m_bTryStaggeringFirst( false )
, m_nNumberFormatKey(0)
@@ -172,6 +174,7 @@ AxisProperties::AxisProperties( const uno::Reference< XAxis >& xAxisModel
, m_bComplexCategories(false)
, m_pExplicitCategoriesProvider(pExplicitCategoriesProvider)
, m_bLimitSpaceForLabels(false)
+ , m_xDataTableModel(xDataTableModel)
{
}
@@ -255,6 +258,11 @@ void AxisProperties::init( bool bCartesian )
if( bCartesian )
{
+ if (m_nDimensionIndex == 0)
+ {
+ m_bDisplayDataTable = m_xDataTableModel.is();
+ }
+
if( m_nDimensionIndex == 0 && m_nAxisType == AxisType::CATEGORY
&& m_pExplicitCategoriesProvider && m_pExplicitCategoriesProvider->hasComplexCategories() )
m_bComplexCategories = true;
diff --git a/chart2/source/view/axes/VAxisProperties.hxx b/chart2/source/view/axes/VAxisProperties.hxx
index 454ea1097c86..425792da689b 100644
--- a/chart2/source/view/axes/VAxisProperties.hxx
+++ b/chart2/source/view/axes/VAxisProperties.hxx
@@ -20,6 +20,7 @@
#include "TickmarkProperties.hxx"
#include <LabelAlignment.hxx>
+#include <DataTable.hxx>
#include <com/sun/star/chart/ChartAxisLabelPosition.hpp>
#include <com/sun/star/chart/ChartAxisMarkPosition.hpp>
@@ -108,7 +109,8 @@ struct AxisProperties final
AxisLabelAlignment maLabelAlignment;
- bool m_bDisplayLabels;
+ bool m_bDisplayDataTable;
+ bool m_bDisplayLabels;
// Compatibility option: starting from LibreOffice 5.1 the rotated
// layout is preferred to staggering for axis labels.
@@ -136,10 +138,12 @@ struct AxisProperties final
bool m_bLimitSpaceForLabels;
- //methods:
+ rtl::Reference<::chart::DataTable> m_xDataTableModel;
+ //methods:
AxisProperties( const css::uno::Reference< css::chart2::XAxis >& xAxisModel
- , ExplicitCategoriesProvider* pExplicitCategoriesProvider );
+ , ExplicitCategoriesProvider* pExplicitCategoriesProvider
+ , rtl::Reference<::chart::DataTable> const& xDataTableModel);
void init(bool bCartesian=false);//init from model data (m_xAxisModel)
diff --git a/chart2/source/view/axes/VCartesianAxis.cxx b/chart2/source/view/axes/VCartesianAxis.cxx
index fedcbbab3196..d105ec8631c0 100644
--- a/chart2/source/view/axes/VCartesianAxis.cxx
+++ b/chart2/source/view/axes/VCartesianAxis.cxx
@@ -35,6 +35,8 @@
#include <tools/color.hxx>
#include <svx/unoshape.hxx>
#include <svx/unoshtxt.hxx>
+#include <VSeriesPlotter.hxx>
+#include <DataTableView.hxx>
#include <basegfx/polygon/b2dpolygon.hxx>
#include <basegfx/polygon/b2dpolypolygon.hxx>
@@ -1677,11 +1679,35 @@ void VCartesianAxis::createLabels()
if( !prepareShapeCreation() )
return;
+ std::unique_ptr<TickFactory2D> apTickFactory2D(createTickFactory2D()); // throws on failure
+
+ if (m_pDataTableView && m_aAxisProperties.m_bDisplayDataTable)
+ {
+ m_pDataTableView->initializeShapes(m_xDataTableTarget);
+ basegfx::B2DVector aStart = apTickFactory2D->getXaxisStartPos();
+ basegfx::B2DVector aEnd = apTickFactory2D->getXaxisEndPos();
+
+ apTickFactory2D->updateScreenValues(m_aAllTickInfos);
+
+ sal_Int32 nDistance = -1;
+
+ std::unique_ptr<TickIter> apTickIter(createLabelTickIterator(0));
+ if (apTickIter)
+ {
+ nDistance = TickFactory2D::getTickScreenDistance(*apTickIter);
+ if (getTextLevelCount() > 1)
+ nDistance *= 2;
+ }
+
+ if (nDistance > 0)
+ m_pDataTableView->createShapes(aStart, aEnd, nDistance);
+ return;
+ }
+
//create labels
if (!m_aAxisProperties.m_bDisplayLabels)
return;
- std::unique_ptr<TickFactory2D> apTickFactory2D(createTickFactory2D()); // throws on failure
TickFactory2D* pTickFactory2D = apTickFactory2D.get();
//get the transformed screen values for all tickmarks in aAllTickInfos
@@ -1980,6 +2006,18 @@ void VCartesianAxis::createShapes()
createLabels();
}
+void VCartesianAxis::createDataTableView(std::vector<std::unique_ptr<VSeriesPlotter>>& rSeriesPlotterList,
+ Reference<util::XNumberFormatsSupplier> const& xNumberFormatsSupplier)
+{
+ if (m_aAxisProperties.m_bDisplayDataTable)
+ {
+ m_pDataTableView.reset(new DataTableView);
+ m_pDataTableView->initializeValues(rSeriesPlotterList);
+ m_xNumberFormatsSupplier = xNumberFormatsSupplier;
+ }
+}
+
+
} //namespace chart
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/chart2/source/view/axes/VCartesianAxis.hxx b/chart2/source/view/axes/VCartesianAxis.hxx
index 7474c38b6c49..eb70e5d3c3a5 100644
--- a/chart2/source/view/axes/VCartesianAxis.hxx
+++ b/chart2/source/view/axes/VCartesianAxis.hxx
@@ -99,6 +99,8 @@ public:
::basegfx::B2DVector aScreenPos;
};
+ void createDataTableView(std::vector<std::unique_ptr<VSeriesPlotter>>& rSeriesPlotterList,
+ css::uno::Reference<css::util::XNumberFormatsSupplier> const& xNumberFormatsSupplier) override;
private: //methods
/**
* Go through all tick label positions and decide which labels to display
diff --git a/chart2/source/view/axes/VCartesianCoordinateSystem.cxx b/chart2/source/view/axes/VCartesianCoordinateSystem.cxx
index e7fe42a87124..d3c71361f27c 100644
--- a/chart2/source/view/axes/VCartesianCoordinateSystem.cxx
+++ b/chart2/source/view/axes/VCartesianCoordinateSystem.cxx
@@ -21,9 +21,11 @@
#include "VCartesianGrid.hxx"
#include "VCartesianAxis.hxx"
#include <AxisIndexDefines.hxx>
+#include <DataTable.hxx>
#include <AxisHelper.hxx>
#include <cppuhelper/implbase.hxx>
#include <ChartModel.hxx>
+#include <Diagram.hxx>
#include <com/sun/star/chart2/XCoordinateSystem.hpp>
#include <com/sun/star/chart2/data/XTextualDataSequence.hpp>
#include <com/sun/star/chart2/AxisType.hpp>
@@ -101,7 +103,7 @@ void VCartesianCoordinateSystem::createVAxisList(
, const awt::Size& rFontReferenceSize
, const awt::Rectangle& rMaximumSpaceForLabels
, bool bLimitSpaceForLabels
- )
+ , std::vector<std::unique_ptr<VSeriesPlotter>>& rSeriesPlotterList)
{
// note: using xChartDoc itself as XNumberFormatsSupplier would cause
// a leak from VCartesianAxis due to cyclic reference
@@ -129,7 +131,10 @@ void VCartesianCoordinateSystem::createVAxisList(
if(!xAxis.is() || !AxisHelper::shouldAxisBeDisplayed( xAxis, m_xCooSysModel ))
continue;
- AxisProperties aAxisProperties(xAxis,getExplicitCategoriesProvider());
+ uno::Reference<chart2::XDiagram> xDiagram(xChartDoc->getFirstDiagram());
+ auto pDiagram = dynamic_cast<Diagram*>(xDiagram.get());
+ assert(pDiagram);
+ AxisProperties aAxisProperties(xAxis, getExplicitCategoriesProvider(), pDiagram->getDataTableRef());
aAxisProperties.m_nDimensionIndex = nDimensionIndex;
aAxisProperties.m_bSwapXAndY = bSwapXAndY;
aAxisProperties.m_bIsMainAxis = (nAxisIndex==0);
@@ -162,6 +167,7 @@ void VCartesianCoordinateSystem::createVAxisList(
apVAxis->set3DWallPositions( m_eLeftWallPos, m_eBackWallPos, m_eBottomPos );
apVAxis->initAxisLabelProperties(rFontReferenceSize,rMaximumSpaceForLabels);
+ apVAxis->createDataTableView(rSeriesPlotterList, xNumberFormatsSupplier);
}
}
}
diff --git a/chart2/source/view/axes/VCartesianCoordinateSystem.hxx b/chart2/source/view/axes/VCartesianCoordinateSystem.hxx
index e37fdbadf4b6..a1d8ce070046 100644
--- a/chart2/source/view/axes/VCartesianCoordinateSystem.hxx
+++ b/chart2/source/view/axes/VCartesianCoordinateSystem.hxx
@@ -34,7 +34,8 @@ public:
const css::uno::Reference< css::chart2::XChartDocument> &ChartDoc
, const css::awt::Size& rFontReferenceSize
, const css::awt::Rectangle& rMaximumSpaceForLabels
- , bool bLimitSpaceForLabels ) override;
+ , bool bLimitSpaceForLabels
+ , std::vector<std::unique_ptr<VSeriesPlotter>>& rSeriesPlotterList) override;
virtual void initVAxisInList() override;
virtual void updateScalesAndIncrementsOnAxes() override;
diff --git a/chart2/source/view/axes/VCoordinateSystem.cxx b/chart2/source/view/axes/VCoordinateSystem.cxx
index 9b330a0b4171..bd5e8683e679 100644
--- a/chart2/source/view/axes/VCoordinateSystem.cxx
+++ b/chart2/source/view/axes/VCoordinateSystem.cxx
@@ -330,7 +330,7 @@ void VCoordinateSystem::createVAxisList(
, const awt::Size& /* rFontReferenceSize */
, const awt::Rectangle& /* rMaximumSpaceForLabels */
, bool /* bLimitSpaceForLabels */
- )
+ , std::vector<std::unique_ptr<VSeriesPlotter>>& /*rSeriesPlotterList*/)
{
}
diff --git a/chart2/source/view/axes/VPolarCoordinateSystem.cxx b/chart2/source/view/axes/VPolarCoordinateSystem.cxx
index 16c2d152f96a..be8f4baac53c 100644
--- a/chart2/source/view/axes/VPolarCoordinateSystem.cxx
+++ b/chart2/source/view/axes/VPolarCoordinateSystem.cxx
@@ -22,7 +22,10 @@
#include "VPolarAxis.hxx"
#include <AxisIndexDefines.hxx>
#include <AxisHelper.hxx>
+#include <Diagram.hxx>
+#include <DataTable.hxx>
#include <ChartModel.hxx>
+#include <Diagram.hxx>
#include <com/sun/star/chart2/XCoordinateSystem.hpp>
namespace chart
@@ -69,7 +72,7 @@ void VPolarCoordinateSystem::createVAxisList(
, const awt::Size& rFontReferenceSize
, const awt::Rectangle& rMaximumSpaceForLabels
, bool //bLimitSpaceForLabels
- )
+ , std::vector<std::unique_ptr<VSeriesPlotter>>& /*rSeriesPlotterList*/)
{
// note: using xChartDoc itself as XNumberFormatsSupplier would cause
// a leak from VPolarAxis due to cyclic reference
@@ -89,7 +92,11 @@ void VPolarCoordinateSystem::createVAxisList(
Reference< XAxis > xAxis( getAxisByDimension(nDimensionIndex,nAxisIndex) );
if(!xAxis.is() || !AxisHelper::shouldAxisBeDisplayed( xAxis, m_xCooSysModel ))
continue;
- AxisProperties aAxisProperties(xAxis,getExplicitCategoriesProvider());
+
+ uno::Reference<chart2::XDiagram> xDiagram(xChartDoc->getFirstDiagram());
+ auto pDiagram = dynamic_cast<Diagram*>(xDiagram.get());
+ assert(pDiagram);
+ AxisProperties aAxisProperties(xAxis,getExplicitCategoriesProvider(), pDiagram->getDataTableRef());
aAxisProperties.init();
if(aAxisProperties.m_bDisplayLabels)
aAxisProperties.m_nNumberFormatKey = getNumberFormatKeyForAxis(xAxis, xChartDoc);
diff --git a/chart2/source/view/axes/VPolarCoordinateSystem.hxx b/chart2/source/view/axes/VPolarCoordinateSystem.hxx
index 1ca178bda63a..63d1741b4602 100644
--- a/chart2/source/view/axes/VPolarCoordinateSystem.hxx
+++ b/chart2/source/view/axes/VPolarCoordinateSystem.hxx
@@ -38,7 +38,8 @@ public:
const css::uno::Reference< css::chart2::XChartDocument> & xChartDoc
, const css::awt::Size& rFontReferenceSize
, const css::awt::Rectangle& rMaximumSpaceForLabels
- , bool bLimitSpaceForLabels ) override;
+ , bool bLimitSpaceForLabels
+ , std::vector<std::unique_ptr<VSeriesPlotter>>& rSeriesPlotterList) override;
virtual void initVAxisInList() override;
virtual void updateScalesAndIncrementsOnAxes() override;
diff --git a/chart2/source/view/charttypes/VSeriesPlotter.cxx b/chart2/source/view/charttypes/VSeriesPlotter.cxx
index 7084fce1c4a3..615695415cb7 100644
--- a/chart2/source/view/charttypes/VSeriesPlotter.cxx
+++ b/chart2/source/view/charttypes/VSeriesPlotter.cxx
@@ -2322,6 +2322,35 @@ OUString VSeriesPlotter::getCategoryName( sal_Int32 nPointIndex ) const
return OUString();
}
+std::vector<VDataSeries const*> VSeriesPlotter::getAllSeries() const
+{
+ std::vector<VDataSeries const*> aAllSeries;
+ for (std::vector<VDataSeriesGroup> const & rXSlot : m_aZSlots)
+ {
+ for(VDataSeriesGroup const & rGroup : rXSlot)
+ {
+ for (std::unique_ptr<VDataSeries> const & p : rGroup.m_aSeriesVector)
+ aAllSeries.push_back(p.get());
+ }
+ }
+ return aAllSeries;
+}
+
+
+std::vector<VDataSeries*> VSeriesPlotter::getAllSeries()
+{
+ std::vector<VDataSeries*> aAllSeries;
+ for (std::vector<VDataSeriesGroup> const & rXSlot : m_aZSlots)
+ {
+ for(VDataSeriesGroup const & rGroup : rXSlot)
+ {
+ for (std::unique_ptr<VDataSeries> const & p : rGroup.m_aSeriesVector)
+ aAllSeries.push_back(p.get());
+ }
+ }
+ return aAllSeries;
+}
+
uno::Sequence< OUString > VSeriesPlotter::getSeriesNames() const
{
std::vector<OUString> aRetVector;
@@ -2350,6 +2379,25 @@ uno::Sequence< OUString > VSeriesPlotter::getSeriesNames() const
return comphelper::containerToSequence( aRetVector );
}
+uno::Sequence<OUString> VSeriesPlotter::getAllSeriesNames() const
+{
+ std::vector<OUString> aRetVector;
+
+ OUString aRole;
+ if (m_xChartTypeModel.is())
+ aRole = m_xChartTypeModel->getRoleOfSequenceForSeriesLabel();
+
+ for (VDataSeries const* pSeries : getAllSeries())
+ {
+ if (pSeries)
+ {
+ OUString aSeriesName(DataSeriesHelper::getDataSeriesLabel(pSeries->getModel(), aRole));
+ aRetVector.push_back(aSeriesName);
+ }
+ }
+ return comphelper::containerToSequence(aRetVector);
+}
+
void VSeriesPlotter::setPageReferenceSize( const css::awt::Size & rPageRefSize )
{
m_aPageReferenceSize = rPageRefSize;
@@ -2469,20 +2517,6 @@ std::vector< ViewLegendEntry > VSeriesPlotter::createLegendEntries(
return aResult;
}
-std::vector<VDataSeries*> VSeriesPlotter::getAllSeries()
-{
- std::vector<VDataSeries*> aAllSeries;
- for (std::vector<VDataSeriesGroup> const & rXSlot : m_aZSlots)
- {
- for(VDataSeriesGroup const & rGroup : rXSlot)
- {
- for (std::unique_ptr<VDataSeries> const & p : rGroup.m_aSeriesVector)
- aAllSeries.push_back(p.get());
- }
- }
- return aAllSeries;
-}
-
namespace
{
bool lcl_HasVisibleLine( const uno::Reference< beans::XPropertySet >& xProps, bool& rbHasDashedLine )
diff --git a/chart2/source/view/inc/DataTableView.hxx b/chart2/source/view/inc/DataTableView.hxx
new file mode 100644
index 000000000000..2d368212309a
--- /dev/null
+++ b/chart2/source/view/inc/DataTableView.hxx
@@ -0,0 +1,39 @@
+/* -*- 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/.
+ *
+ */
+#pragma once
+
+#include <svx/unodraw/SvxTableShape.hxx>
+#include <com/sun/star/drawing/XShapes.hpp>
+#include <com/sun/star/awt/Rectangle.hpp>
+
+namespace chart
+{
+class VSeriesPlotter;
+
+class DataTableView final
+{
+ css::uno::Reference<css::drawing::XShapes> m_xTarget;
+ rtl::Reference<SvxTableShape> m_xTableShape;
+
+ std::vector<OUString> m_aDataSeriesNames;
+ std::vector<OUString> m_aXValues;
+ std::vector<std::vector<OUString>> m_pDataSeriesValues;
+
+public:
+ DataTableView();
+ void initializeShapes(const css::uno::Reference<css::drawing::XShapes>& xTarget);
+ void initializeValues(std::vector<std::unique_ptr<VSeriesPlotter>>& rSeriesPlotterList);
+ void createShapes(basegfx::B2DVector const& rStart, basegfx::B2DVector const& rEnd,
+ sal_Int32 nDistance);
+};
+
+} //namespace chart
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/chart2/source/view/inc/ShapeFactory.hxx b/chart2/source/view/inc/ShapeFactory.hxx
index f2699e5372f1..5b03509a3695 100644
--- a/chart2/source/view/inc/ShapeFactory.hxx
+++ b/chart2/source/view/inc/ShapeFactory.hxx
@@ -25,6 +25,7 @@
#include <com/sun/star/drawing/PointSequenceSequence.hpp>
#include <rtl/ustring.hxx>
+#include <svx/unodraw/SvxTableShape.hxx>
namespace chart { struct VLineProperties; }
namespace com::sun::star::beans { class XPropertySet; }
@@ -212,6 +213,8 @@ public:
const css::uno::Reference< css::beans::XPropertySet > & xTextProperties,
double nRotation, const OUString& aName, sal_Int32 nTextMaxWidth );
+ static rtl::Reference<SvxTableShape> createTable(css::uno::Reference< css::drawing::XShapes >& xTarget);
+
css::uno::Reference< css::drawing::XShape >
createInvisibleRectangle(
const css::uno::Reference< css::drawing::XShapes >& xTarget
diff --git a/chart2/source/view/inc/VCoordinateSystem.hxx b/chart2/source/view/inc/VCoordinateSystem.hxx
index 3cae017fdd74..fdcded9b5235 100644
--- a/chart2/source/view/inc/VCoordinateSystem.hxx
+++ b/chart2/source/view/inc/VCoordinateSystem.hxx
@@ -20,6 +20,7 @@
#include "MinimumAndMaximumSupplier.hxx"
#include <ThreeDHelper.hxx>
+#include "VSeriesPlotter.hxx"
#include <chartview/ExplicitScaleValues.hxx>
#include <com/sun/star/drawing/HomogenMatrix.hpp>
#include <com/sun/star/uno/Sequence.h>
@@ -39,7 +40,6 @@ namespace com::sun::star::chart2 { class XCoordinateSystem; }
namespace com::sun::star::drawing { class XShapes; }
namespace com::sun::star::lang { class XMultiServiceFactory; }
-
namespace chart
{
@@ -116,7 +116,8 @@ public:
const css::uno::Reference< css::chart2::XChartDocument> & xChartDoc
, const css::awt::Size& rFontReferenceSize
, const css::awt::Rectangle& rMaximumSpaceForLabels
- , bool bLimitSpaceForLabels );
+ , bool bLimitSpaceForLabels
+ , std::vector<std::unique_ptr<VSeriesPlotter>>& rSeriesPlotterList);
virtual void initVAxisInList();
virtual void updateScalesAndIncrementsOnAxes();
diff --git a/chart2/source/view/inc/VSeriesPlotter.hxx b/chart2/source/view/inc/VSeriesPlotter.hxx
index a824ff14c77b..31b81cf23e51 100644
--- a/chart2/source/view/inc/VSeriesPlotter.hxx
+++ b/chart2/source/view/inc/VSeriesPlotter.hxx
@@ -218,6 +218,7 @@ public:
);
std::vector< VDataSeries* > getAllSeries();
+ std::vector<VDataSeries const*> getAllSeries() const;
// This method creates a series plotter of the requested type; e.g. : return new PieChart...
static VSeriesPlotter* createSeriesPlotter( const css::uno::Reference< css::chart2::XChartType >& xChartTypeModel
@@ -234,9 +235,14 @@ public:
void setExplicitCategoriesProvider( ExplicitCategoriesProvider* pExplicitCategoriesProvider );
+ ExplicitCategoriesProvider* getExplicitCategoriesProvider() { return m_pExplicitCategoriesProvider; }
+
//get series names for the z axis labels
css::uno::Sequence< OUString > getSeriesNames() const;
+ //get all series names
+ css::uno::Sequence<OUString> getAllSeriesNames() const;
+
void setPageReferenceSize( const css::awt::Size & rPageRefSize );
//better performance for big data
void setCoordinateSystemResolution( const css::uno::Sequence< sal_Int32 >& rCoordinateSystemResolution );
@@ -254,6 +260,11 @@ public:
bool WantToPlotInFrontOfAxisLine();
virtual bool shouldSnapRectToUsedArea();
+ /// This method returns a text string representation of the passed numeric
+ /// value by exploiting a NumberFormatterWrapper object.
+ OUString getLabelTextForValue(VDataSeries const & rDataSeries, sal_Int32 nPointIndex,
+ double fValue, bool bAsPercentage);
+
protected:
VSeriesPlotter( const css::uno::Reference< css::chart2::XChartType >& xChartTypeModel
@@ -322,13 +333,6 @@ protected:
, sal_Int32 nOffset=0
, sal_Int32 nTextWidth = 0 );
- /// This method returns a text string representation of the passed numeric
- /// value by exploiting a NumberFormatterWrapper object.
- OUString getLabelTextForValue( VDataSeries const & rDataSeries
- , sal_Int32 nPointIndex
- , double fValue
- , bool bAsPercentage );
-
/** creates two T-shaped error bars in both directions (up/down or
left/right depending on the bVertical parameter)
diff --git a/chart2/source/view/main/ChartView.cxx b/chart2/source/view/main/ChartView.cxx
index e2e1cfb97846..ca9555cc1626 100644
--- a/chart2/source/view/main/ChartView.cxx
+++ b/chart2/source/view/main/ChartView.cxx
@@ -539,7 +539,7 @@ awt::Rectangle ChartView::impl_createDiagramAndContent( const CreateShapeParam2D
pVCooSys->set3DWallPositions( eLeftWallPos, eBackWallPos, eBottomPos );
}
- pVCooSys->createVAxisList(xChartDoc, rPageSize, rParam.maRemainingSpace, rParam.mbUseFixedInnerSize);
+ pVCooSys->createVAxisList(xChartDoc, rPageSize, rParam.maRemainingSpace, rParam.mbUseFixedInnerSize, rSeriesPlotterList);
}
// - prepare list of all axis and how they are used
diff --git a/chart2/source/view/main/DataTableView.cxx b/chart2/source/view/main/DataTableView.cxx
new file mode 100644
index 000000000000..7614fa0ea1b3
--- /dev/null
+++ b/chart2/source/view/main/DataTableView.cxx
@@ -0,0 +1,217 @@
+/* -*- 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 <DataTableView.hxx>
+#include <VSeriesPlotter.hxx>
+#include <ShapeFactory.hxx>
+#include <ExplicitCategoriesProvider.hxx>
+
+#include <svx/svdotable.hxx>
+
+#include <com/sun/star/table/XTable.hpp>
+#include <com/sun/star/table/BorderLine.hpp>
+#include <com/sun/star/table/BorderLine2.hpp>
+#include <com/sun/star/table/TableBorder.hpp>
+#include <com/sun/star/style/ParagraphAdjust.hpp>
+#include <com/sun/star/drawing/TextHorizontalAdjust.hpp>
+#include <com/sun/star/drawing/TextVerticalAdjust.hpp>
+#include <com/sun/star/util/XBroadcaster.hpp>
+
+#include <o3tl/unit_conversion.hxx>
+
+using namespace css;
+
+namespace chart
+{
+DataTableView::DataTableView() = default;
+
+namespace
+{
+void setCellDefaults(uno::Reference<beans::XPropertySet>& xPropertySet)
+{
+ xPropertySet->setPropertyValue("FillColor", uno::makeAny(Color(0xFFFFFF)));
+ xPropertySet->setPropertyValue("TextVerticalAdjust",
+ uno::makeAny(drawing::TextVerticalAdjust_TOP));
+ xPropertySet->setPropertyValue("ParaAdjust", uno::makeAny(style::ParagraphAdjust_CENTER));
+
+ table::BorderLine2 aBorderLine;
+ aBorderLine.LineWidth = o3tl::convert(0.5, o3tl::Length::pt, o3tl::Length::mm100);
+ aBorderLine.Color = 0x000000;
+
+ xPropertySet->setPropertyValue("TopBorder", uno::makeAny(aBorderLine));
+ xPropertySet->setPropertyValue("BottomBorder", uno::makeAny(aBorderLine));
+ xPropertySet->setPropertyValue("LeftBorder", uno::makeAny(aBorderLine));
+ xPropertySet->setPropertyValue("RightBorder", uno::makeAny(aBorderLine));
+}
+
+void setTopCell(uno::Reference<beans::XPropertySet>& xPropertySet)
+{
+ xPropertySet->setPropertyValue("FillColor", uno::makeAny(Color(0xFFFFFF)));
+ xPropertySet->setPropertyValue("TextVerticalAdjust",
+ uno::makeAny(drawing::TextVerticalAdjust_TOP));
+ xPropertySet->setPropertyValue("ParaAdjust", uno::makeAny(style::ParagraphAdjust_CENTER));
+
+ table::BorderLine2 aBorderLine;
+ aBorderLine.LineWidth = 0;
+ aBorderLine.Color = 0x000000;
+
+ xPropertySet->setPropertyValue("TopBorder", uno::makeAny(aBorderLine));
+ xPropertySet->setPropertyValue("LeftBorder", uno::makeAny(aBorderLine));
+}
+}
+void DataTableView::createShapes(basegfx::B2DVector const& rStart, basegfx::B2DVector const& rEnd,
+ sal_Int32 nColumnSize)
+{
+ if (!m_xTarget.is())
+ return;
+
+ ShapeFactory::removeSubShapes(m_xTarget);
+ m_xTableShape = ShapeFactory::createTable(m_xTarget);
+
+ uno::Reference<table::XTable> xTable;
+ uno::Reference<util::XBroadcaster> xBroadcaster;
+ try
+ {
+ auto rDelta = rEnd - rStart;
+ m_xTableShape->setSize({ basegfx::fround(rDelta.getX()), 0 });
+ m_xTableShape->getPropertyValue("Model") >>= xTable;
+ }
+ catch (const uno::Exception&)
+ {
+ return;
+ }
+
+ if (xTable.is())
+ xBroadcaster.set(xTable, uno::UNO_QUERY);
+
+ if (!xBroadcaster.is())
+ return;
+
+ xBroadcaster->lockBroadcasts();
+ uno::Reference<table::XTableColumns> xTableColumns = xTable->getColumns();
+ xTableColumns->insertByIndex(0, m_aXValues.size());
+
+ uno::Reference<table::XTableRows> xTableRows = xTable->getRows();
+ xTableRows->insertByIndex(0, m_aDataSeriesNames.size());
+
+ {
+ uno::Reference<table::XCell> xCell = xTable->getCellByPosition(0, 0);
+ uno::Reference<beans::XPropertySet> xPropertySet(xCell, uno::UNO_QUERY);
+ if (xPropertySet.is())
+ {
+ setTopCell(xPropertySet);
+ }
+ }
+
+ sal_Int32 nColumn;
+ sal_Int32 nRow;
+
+ nColumn = 1;
+ for (auto const& rString : m_aXValues)
+ {
+ uno::Reference<table::XCell> xCell = xTable->getCellByPosition(nColumn, 0);
+ uno::Reference<beans::XPropertySet> xPropertySet(xCell, uno::UNO_QUERY);
+ uno::Reference<text::XTextRange> xCellTextRange(xCell, uno::UNO_QUERY);
+ if (xCellTextRange.is())
+ {
+ xCellTextRange->setString(rString);
+ setCellDefaults(xPropertySet);
+ }
+ nColumn++;
+ }
+
+ nRow = 1;
+ for (auto const& rSeriesName : m_aDataSeriesNames)
+ {
+ uno::Reference<table::XCell> xCell = xTable->getCellByPosition(0, nRow);
+ uno::Reference<beans::XPropertySet> xPropertySet(xCell, uno::UNO_QUERY);
+ uno::Reference<text::XTextRange> xCellTextRange(xCell, uno::UNO_QUERY);
+ if (xCellTextRange.is())
+ {
+ xCellTextRange->setString(rSeriesName);
+ setCellDefaults(xPropertySet);
+ }
+ nRow++;
+ }
+
+ nRow = 1;
+ for (auto const& rSeries : m_pDataSeriesValues)
+ {
+ nColumn = 1;
+ for (auto const& rValue : rSeries)
+ {
+ uno::Reference<table::XCell> xCell = xTable->getCellByPosition(nColumn, nRow);
+ uno::Reference<beans::XPropertySet> xPropertySet(xCell, uno::UNO_QUERY);
+ uno::Reference<text::XTextRange> xCellTextRange(xCell, uno::UNO_QUERY);
+ if (xCellTextRange.is())
+ {
+ xCellTextRange->setString(rValue);
+ setCellDefaults(xPropertySet);
+ }
+ nColumn++;
+ }
+ nRow++;
+ }
+
+ xBroadcaster->unlockBroadcasts();
+
+ auto* pTableObject = static_cast<sdr::table::SdrTableObj*>(m_xTableShape->GetSdrObject());
+ pTableObject->DistributeColumns(0, pTableObject->getColumnCount() - 1, true, true);
+
+ uno::Reference<beans::XPropertySet> xPropertySet(xTableColumns->getByIndex(0), uno::UNO_QUERY);
+ sal_Int32 nWidth = 0;
+ xPropertySet->getPropertyValue("Width") >>= nWidth;
+
+ m_xTableShape->setPosition(
+ { basegfx::fround(rStart.getX() - nWidth), basegfx::fround(rStart.getY()) });
+
+ for (sal_Int32 i = 1; i < xTableColumns->getCount(); ++i)
+ {
+ xPropertySet.set(xTableColumns->getByIndex(i), uno::UNO_QUERY);
+ xPropertySet->setPropertyValue("Width", uno::Any(nColumnSize));
+ }
+}
+
+void DataTableView::initializeShapes(const css::uno::Reference<css::drawing::XShapes>& xTarget)
+{
+ m_xTarget = xTarget;
+}
+
+void DataTableView::initializeValues(
+ std::vector<std::unique_ptr<VSeriesPlotter>>& rSeriesPlotterList)
+{
+ for (auto& rSeriesPlotter : rSeriesPlotterList)
+ {
+ for (auto const& rCategory :
+ rSeriesPlotter->getExplicitCategoriesProvider()->getSimpleCategories())
+ {
+ m_aXValues.push_back(rCategory);
+ }
+
+ for (auto const& rString : rSeriesPlotter->getAllSeriesNames())
+ {
+ m_aDataSeriesNames.push_back(rString);
+ }
+
+ for (VDataSeries* pSeries : rSeriesPlotter->getAllSeries())
+ {
+ auto& rValues = m_pDataSeriesValues.emplace_back();
+ for (int i = 0; i < pSeries->getTotalPointCount(); i++)
+ {
+ double nValue = pSeries->getYValue(i);
+ rValues.push_back(rSeriesPlotter->getLabelTextForValue(*pSeries, i, nValue, false));
+ }
+ }
+ }
+}
+
+} //namespace chart
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/chart2/source/view/main/ShapeFactory.cxx b/chart2/source/view/main/ShapeFactory.cxx
index a7011527dfc6..7c2574c5f407 100644
--- a/chart2/source/view/main/ShapeFactory.cxx
+++ b/chart2/source/view/main/ShapeFactory.cxx
@@ -2656,6 +2656,20 @@ void ShapeFactory::removeSubShapes( const uno::Reference< drawing::XShapes >& xS
}
}
+rtl::Reference<SvxTableShape> ShapeFactory::createTable(uno::Reference<drawing::XShapes>& xTarget)
+{
+ if (!xTarget.is())
+ return nullptr;
+
+ //create table shape
+ rtl::Reference<SvxTableShape> xShape = new SvxTableShape(nullptr);
+ xShape->setShapeKind(OBJ_TABLE);
+ uno::Reference<drawing::XShape> xShapeUno(xShape);
+ xTarget->add(xShapeUno);
+
+ return xShape;
+}
+
} //namespace chart
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/config_host.mk.in b/config_host.mk.in
index 73b367290f65..5e3337a46eef 100644
--- a/config_host.mk.in
+++ b/config_host.mk.in
@@ -430,6 +430,7 @@ export MACOSX_BUNDLE_IDENTIFIER=@MACOSX_BUNDLE_IDENTIFIER@
export MACOSX_CODESIGNING_IDENTITY=@MACOSX_CODESIGNING_IDENTITY@
export MACOSX_DEPLOYMENT_TARGET=@MACOSX_DEPLOYMENT_TARGET@
export MACOSX_PACKAGE_SIGNING_IDENTITY=@MACOSX_PACKAGE_SIGNING_IDENTITY@
+export MACOSX_PROVISIONING_PROFILE=@MACOSX_PROVISIONING_PROFILE@
export MACOSX_SDK_PATH=@MACOSX_SDK_PATH@
export MAC_OS_X_VERSION_MAX_ALLOWED=@MAC_OS_X_VERSION_MAX_ALLOWED@
export MAC_OS_X_VERSION_MIN_REQUIRED=@MAC_OS_X_VERSION_MIN_REQUIRED@
@@ -497,7 +498,7 @@ export PCH_CODEGEN=@PCH_CODEGEN@
export PCH_DEBUGINFO=@PCH_DEBUGINFO@
export PCH_NO_CODEGEN=@PCH_NO_CODEGEN@
export PERL=@PERL@
-export PKGFORMAT=@PKGFORMAT@
+export PKGFORMAT?=@PKGFORMAT@
export PKGMK=@PKGMK@
export PKG_CONFIG=@PKG_CONFIG@
ifneq (@PKG_CONFIG_PATH@,)
diff --git a/configure.ac b/configure.ac
index 93319018fa4d..16611284b0b9 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([Collabora Office],[22.05.2.1],[],[],[https://collaboraoffice.com/])
+AC_INIT([Collabora Office],[22.05.5.3],[],[],[https://collaboraoffice.com/])
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
@@ -1843,6 +1843,11 @@ AC_ARG_WITH(macosx-bundle-identifier,
org.libreoffice.script ("script", huh?).]),
,with_macosx_bundle_identifier=org.libreoffice.script)
+AC_ARG_WITH(macosx-provisioning-profile,
+ AS_HELP_STRING([--with-macosx-provisioning-profile=/path/to/mac.provisionprofile],
+ [Specify the path to a provisioning profile to use]),
+,)
+
AC_ARG_WITH(product-name,
AS_HELP_STRING([--with-product-name='My Own Office Suite'],
[Define the product name. Default is AC_PACKAGE_NAME.]),
@@ -3491,16 +3496,22 @@ if test $_os = Darwin; then
AC_MSG_CHECKING([whether to do code signing])
- if test "$enable_macosx_code_signing" = yes; then
- # By default use the first suitable certificate (?).
-
- # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
- # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
- # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
- # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
- # "Developer ID Application" one.
+ if test -z "$enable_macosx_code_signing" -o "$enable_macosx_code_signing" == "no" ; then
+ AC_MSG_RESULT([no])
+ else
+ if test "$enable_macosx_code_signing" = yes; then
+ # By default use the first suitable certificate (?).
- identity=`security find-identity -p codesigning -v 2>/dev/null | grep 'Developer ID Application:' | $AWK '{print $2}' |head -1`
+ # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
+ # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
+ # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
+ # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
+ # "Developer ID Application" one.
+ identity="Developer ID Application:"
+ else
+ identity=$enable_macosx_code_signing
+ fi
+ identity=`security find-identity -p codesigning -v 2>/dev/null | $AWK "/$identity/{print \\$2; exit}"`
if test -n "$identity"; then
MACOSX_CODESIGNING_IDENTITY=$identity
pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
@@ -3508,12 +3519,6 @@ if test $_os = Darwin; then
else
AC_MSG_ERROR([cannot determine identity to use])
fi
- elif test -n "$enable_macosx_code_signing" -a "$enable_macosx_code_signing" != no ; then
- MACOSX_CODESIGNING_IDENTITY=$enable_macosx_code_signing
- pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
- AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
- else
- AC_MSG_RESULT([no])
fi
AC_MSG_CHECKING([whether to create a Mac App Store package])
@@ -3522,11 +3527,15 @@ if test $_os = Darwin; then
AC_MSG_RESULT([no])
elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
- elif test "$enable_macosx_package_signing" = yes; then
- # By default use the first suitable certificate.
- # It should be a "3rd Party Mac Developer Installer" one
-
- identity=`security find-identity -v 2>/dev/null | grep '3rd Party Mac Developer Installer:' | awk '{print $2}' |head -1`
+ else
+ if test "$enable_macosx_package_signing" = yes; then
+ # By default use the first suitable certificate.
+ # It should be a "3rd Party Mac Developer Installer" one
+ identity="3rd Party Mac Developer Installer:"
+ else
+ identity=$enable_macosx_package_signing
+ fi
+ identity=`security find-identity -v 2>/dev/null | $AWK "/$identity/ {print \\$2; exit}"`
if test -n "$identity"; then
MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
@@ -3534,10 +3543,6 @@ if test $_os = Darwin; then
else
AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
fi
- else
- MACOSX_PACKAGE_SIGNING_IDENTITY=$enable_macosx_package_signing
- pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
- AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
fi
if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
@@ -3559,6 +3564,18 @@ if test $_os = Darwin; then
AC_MSG_CHECKING([what macOS app bundle identifier to use])
MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
+
+ if test -n "$with_macosx_provisioning_profile" ; then
+ if test ! -f "$with_macosx_provisioning_profile"; then
+ AC_MSG_ERROR([provisioning profile not found at $with_macosx_provisioning_profile])
+ else
+ MACOSX_PROVISIONING_PROFILE=$with_macosx_provisioning_profile
+ MACOSX_PROVISIONING_INFO=$([security cms -D -i "$MACOSX_PROVISIONING_PROFILE" | \
+ xmllint --xpath "//key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier'] \
+ | //key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier']/following-sibling::string[1]" - | \
+ sed -e 's#><#>\n\t<#g' -e 's#^#\t#'])
+ fi
+ fi
fi
AC_SUBST(MACOSX_SDK_PATH)
AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
@@ -3570,6 +3587,8 @@ AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
AC_SUBST(ENABLE_MACOSX_SANDBOX)
AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
+AC_SUBST(MACOSX_PROVISIONING_INFO)
+AC_SUBST(MACOSX_PROVISIONING_PROFILE)
dnl ===================================================================
dnl Check iOS SDK and compiler
@@ -3577,8 +3596,8 @@ dnl ===================================================================
if test $_os = iOS; then
AC_MSG_CHECKING([what iOS SDK to use])
- current_sdk_ver=15.4
- older_sdk_vers="15.2 15.0"
+ current_sdk_ver=15.5
+ older_sdk_vers="15.4 15.2 15.0"
if test "$enable_ios_simulator" = "yes"; then
platform=iPhoneSimulator
versionmin=-mios-simulator-version-min=13.6
@@ -5501,6 +5520,7 @@ if test "$cross_compiling" = "yes"; then
config_host.mk.in \
config_host_lang.mk.in \
Makefile.in \
+ lo.xcent.in \
bin/bffvalidator.sh.in \
bin/odfvalidator.sh.in \
bin/officeotron.sh.in \
@@ -11834,6 +11854,8 @@ AC_MSG_CHECKING([whether to enable Impress remote control])
if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
AC_MSG_RESULT([yes])
ENABLE_SDREMOTE=TRUE
+ SDREMOTE_ENTITLEMENT=" <key>com.apple.security.network.server</key>
+ <true/>"
AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
@@ -11841,6 +11863,7 @@ if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
if test "$enable_sdremote_bluetooth" = yes; then
AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
fi
+ add_warning "not building the bluetooth part of the sdremote - used api was removed from macOS SDK 10.15"
enable_sdremote_bluetooth=no
fi
# If not explicitly enabled or disabled, default
@@ -11885,6 +11908,9 @@ if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
AC_MSG_RESULT([yes])
ENABLE_SDREMOTE_BLUETOOTH=TRUE
SYSTEM_BLUEZ=
+ SDREMOTE_ENTITLEMENT="$SDREMOTE_ENTITLEMENT
+ <key>com.apple.security.device.bluetooth</key>
+ <true/>"
fi
else
AC_MSG_RESULT([no])
@@ -11898,6 +11924,7 @@ else
fi
AC_SUBST(ENABLE_SDREMOTE)
AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
+AC_SUBST(SDREMOTE_ENTITLEMENT)
AC_SUBST(SYSTEM_BLUEZ)
dnl ===================================================================
@@ -14724,6 +14751,7 @@ AC_CONFIG_LINKS([include:include])
AC_CONFIG_FILES([config_host.mk
config_host_lang.mk
Makefile
+ lo.xcent
bin/bffvalidator.sh
bin/odfvalidator.sh
bin/officeotron.sh
diff --git a/connectivity/source/drivers/macab/MacabAddressBook.cxx b/connectivity/source/drivers/macab/MacabAddressBook.cxx
index a14b7abee9b9..02d4faf74290 100644
--- a/connectivity/source/drivers/macab/MacabAddressBook.cxx
+++ b/connectivity/source/drivers/macab/MacabAddressBook.cxx
@@ -82,6 +82,13 @@ MacabAddressBook::MacabAddressBook( )
m_xMacabRecords(nullptr),
m_bRetrievedGroups(false)
{
+ if(m_aAddressBook == nullptr)
+ {
+ // TODO: tell the user to reset the permission via "tccutil reset AddressBook"
+ // or the system preferences and try again, this time granting the access
+ throw RuntimeException(
+ "failed to access the macOS address book - permission not granted?" );
+ }
}
diff --git a/cui/Library_cui.mk b/cui/Library_cui.mk
index 1e8023cc819c..d455a64ab266 100644
--- a/cui/Library_cui.mk
+++ b/cui/Library_cui.mk
@@ -219,6 +219,7 @@ $(eval $(call gb_Library_add_exception_objects,cui,\
cui/source/tabpages/textanim \
cui/source/tabpages/textattr \
cui/source/tabpages/TextColumnsPage \
+ cui/source/tabpages/themepage \
cui/source/tabpages/tparea \
cui/source/tabpages/tpbitmap \
cui/source/tabpages/tpcolor \
diff --git a/cui/Module_cui.mk b/cui/Module_cui.mk
index e4ff28c8fabe..53492ef291a4 100644
--- a/cui/Module_cui.mk
+++ b/cui/Module_cui.mk
@@ -29,6 +29,7 @@ $(eval $(call gb_Module_add_screenshot_targets,cui,\
$(eval $(call gb_Module_add_uicheck_targets,cui,\
UITest_cui_dialogs \
+ UITest_cui_tabpages \
))
# vim: set noet sw=4 ts=4:
diff --git a/cui/UIConfig_cui.mk b/cui/UIConfig_cui.mk
index a4ad452bdfee..806779daaa9d 100644
--- a/cui/UIConfig_cui.mk
+++ b/cui/UIConfig_cui.mk
@@ -213,6 +213,7 @@ $(eval $(call gb_UIConfig_add_uifiles,cui,\
cui/uiconfig/ui/textcolumnstabpage \
cui/uiconfig/ui/textdialog \
cui/uiconfig/ui/textflowpage \
+ cui/uiconfig/ui/themetabpage \
cui/uiconfig/ui/thesaurus \
cui/uiconfig/ui/toolbarmodedialog \
cui/uiconfig/ui/transparencytabpage \
diff --git a/cui/UITest_cui_tabpages.mk b/cui/UITest_cui_tabpages.mk
new file mode 100644
index 000000000000..4458e9859e23
--- /dev/null
+++ b/cui/UITest_cui_tabpages.mk
@@ -0,0 +1,16 @@
+# -*- 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_UITest_UITest,cui_tabpages))
+
+$(eval $(call gb_UITest_add_modules,cui_tabpages,$(SRCDIR)/cui/qa/uitest,\
+ tabpages/ \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/cui/qa/uitest/dialogs/chardlg.py b/cui/qa/uitest/dialogs/chardlg.py
index 49adfe6d9980..631766922a0d 100644
--- a/cui/qa/uitest/dialogs/chardlg.py
+++ b/cui/qa/uitest/dialogs/chardlg.py
@@ -8,6 +8,7 @@ from libreoffice.uno.propertyvalue import mkPropertyValues
from uitest.framework import UITestCase
from uitest.uihelper.common import select_pos
from uitest.uihelper.common import get_state_as_dict
+from uitest.uihelper.common import select_by_text
# Test for cui/source/tabpages/chardlg.cxx.
class Test(UITestCase):
@@ -43,6 +44,80 @@ class Test(UITestCase):
# COL_AUTO.
self.assertEqual(shape.CharTransparence, 5)
+ def testSvxCharEffectsPageTheme(self):
+ # Given a document with a document theme:
+ # Start Impress.
+ with self.ui_test.create_doc_in_start_center("impress") as component:
+ template = self.xUITest.getTopFocusWindow()
+ self.ui_test.close_dialog_through_button(template.getChild("close"))
+ doc = self.xUITest.getTopFocusWindow()
+ editWin = doc.getChild("impress_win")
+
+ # Set theme colors.
+ drawPage = component.getDrawPages().getByIndex(0)
+ master = drawPage.MasterPage
+ theme = mkPropertyValues({
+ "Name": "nameA",
+ "ColorSchemeName": "colorSetA",
+ "ColorScheme": tuple([
+ 0x000000, # dk1
+ 0x000000, # lt1
+ 0x000000, # dk2
+ 0x000000, # lt2
+ 0x000000, # accent1
+ 0x000000, # accent2
+ 0x000000, # accent3
+ 0x000000, # accent4
+ 0x000000, # accent5
+ 0x000000, # accent6
+ 0x000000, # hlink
+ 0x000000, # folHlink
+ ])
+ })
+ master.Theme = theme
+
+ # Select the title shape.
+ editWin.executeAction("TYPE", mkPropertyValues({"KEYCODE": "TAB"}))
+ editWin.executeAction("TYPE", mkPropertyValues({"TEXT": "t"}))
+ self.xUITest.executeCommand(".uno:SelectAll")
+
+ # Now use Format -> Character.
+ with self.ui_test.execute_dialog_through_command(".uno:FontDialog") as xDialog:
+ xTabs = xDialog.getChild("tabcontrol")
+ # Select RID_SVXPAGE_CHAR_EFFECTS.
+ select_pos(xTabs, "1")
+
+ # When setting the shape text color to accent 1:
+ accent1 = xDialog.getChild("fontcolorlb")
+ accent1.executeAction("OPENLIST", tuple())
+ floatWindow = self.xUITest.getFloatWindow()
+ paletteSelector = floatWindow.getChild("palette_listbox")
+ select_by_text(paletteSelector, "Theme colors")
+ colorSet = floatWindow.getChild("colorset")
+ # 4 would be accent1, +12 is the first from the effect variants.
+ colorSet.executeAction("CHOOSE", mkPropertyValues({"POS": "16"}))
+
+ # Then make sure the doc model has the correct color theme index:
+ drawPage = component.getDrawPages().getByIndex(0)
+ shape = drawPage.getByIndex(0)
+ paragraphs = shape.createEnumeration()
+ paragraph = paragraphs.nextElement()
+ portions = paragraph.createEnumeration()
+ portion = portions.nextElement()
+
+ # Without the accompanying fix in place, this test would have failed with:
+ # AssertionError: -1 != 4
+ # i.e. no theme index was set, instead of accent1 (index into the above color scheme).
+ self.assertEqual(portion.CharColorTheme, 4)
+
+ # Then make sure that '80% lighter' is lum-mod=2000 and lum-off=8000:
+ # Without the accompanying fix in place, this test would have failed with:
+ # AssertionError: 10000 != 2000
+ # i.e. the effects where not applied, luminancen modulation was the default instead of a
+ # custom value.
+ self.assertEqual(portion.CharColorLumMod, 2000)
+ self.assertEqual(portion.CharColorLumOff, 8000)
+
def testSvxCharEffectsPageWriter(self):
# Start Writer.
with self.ui_test.create_doc_in_start_center("writer") as component:
diff --git a/cui/qa/uitest/tabpages/themepage.py b/cui/qa/uitest/tabpages/themepage.py
new file mode 100644
index 000000000000..f85af965f626
--- /dev/null
+++ b/cui/qa/uitest/tabpages/themepage.py
@@ -0,0 +1,87 @@
+#
+# 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 libreoffice.uno.propertyvalue import convert_property_values_to_dict
+from libreoffice.uno.propertyvalue import mkPropertyValues
+from uitest.framework import UITestCase
+from uitest.uihelper.common import get_state_as_dict
+from uitest.uihelper.common import select_pos
+from uitest.uihelper.common import select_by_text
+
+# Test for cui/source/tabpages/themepage.cxx.
+class Test(UITestCase):
+
+ def testThemePage(self):
+ # Given an Impress document with a master page that has a theme:
+ with self.ui_test.create_doc_in_start_center("impress") as component:
+ template = self.xUITest.getTopFocusWindow()
+ self.ui_test.close_dialog_through_button(template.getChild("close"))
+ doc = self.xUITest.getTopFocusWindow()
+ editWin = doc.getChild("impress_win")
+ drawPage = component.getDrawPages().getByIndex(0)
+ master = drawPage.MasterPage
+ theme = mkPropertyValues({
+ "Name": "nameA",
+ "ColorSchemeName": "colorSetA",
+ "ColorScheme": tuple([
+ 0x000000, # dk1
+ 0x000000, # lt1
+ 0x000000, # dk2
+ 0x000000, # lt2
+ 0x0000ff, # accent1
+ 0x000000, # accent2
+ 0x000000, # accent3
+ 0x000000, # accent4
+ 0x000000, # accent5
+ 0x000000, # accent6
+ 0x000000, # hlink
+ 0x000000, # folHlink
+ ])
+ })
+ master.Theme = theme
+
+ # When changing the name of the theme:
+ self.xUITest.executeCommand(".uno:SlideMasterPage")
+ with self.ui_test.execute_dialog_through_command(".uno:PageSetup") as xDialog:
+ xTabs = xDialog.getChild("tabcontrol")
+ # Select RID_SVXPAGE_THEME.
+ select_pos(xTabs, "3")
+ themeName = xDialog.getChild("themeName")
+ themeName.executeAction("TYPE", mkPropertyValues({"KEYCODE":"CTRL+A"}))
+ themeName.executeAction("TYPE", mkPropertyValues({"KEYCODE":"BACKSPACE"}))
+ themeName.executeAction("TYPE", mkPropertyValues({"TEXT": "nameB"}))
+ colorSetName = xDialog.getChild("colorSetName")
+ colorSetName.executeAction("TYPE", mkPropertyValues({"KEYCODE":"CTRL+A"}))
+ colorSetName.executeAction("TYPE", mkPropertyValues({"KEYCODE":"BACKSPACE"}))
+ colorSetName.executeAction("TYPE", mkPropertyValues({"TEXT": "colorSetB"}))
+
+ # Select a custom accent1 color.
+ accent1 = xDialog.getChild("btnAccent1")
+ accent1.executeAction("OPENLIST", tuple())
+ floatWindow = self.xUITest.getFloatWindow()
+ paletteSelector = floatWindow.getChild("palette_listbox")
+ select_by_text(paletteSelector, "chart-palettes")
+ colorSet = floatWindow.getChild("colorset")
+ colorSet.executeAction("CHOOSE", mkPropertyValues({"POS": "2"}))
+
+ # Then make sure the doc model is updated accordingly:
+ # Without the accompanying fix in place, this test would have failed with:
+ # AssertionError: 'nameA' != 'nameB'
+ # i.e. the UI didn't update the theme name.
+ theme = convert_property_values_to_dict(master.Theme)
+ self.assertEqual(theme["Name"], "nameB")
+ # Without the accompanying fix in place, this test would have failed with:
+ # AssertionError: 'colorSetA' != 'colorSetB'
+ # i.e. the UI didn't update the color scheme name.
+ self.assertEqual(theme["ColorSchemeName"], "colorSetB")
+ colorSet = theme["ColorScheme"]
+ # Without the accompanying fix in place, this test would have failed with:
+ # AssertionError: 0 != 16728590 (#ff420e)
+ # i.e. the UI didn't update the accent1 color from black to a custom value.
+ self.assertEqual(colorSet[4], 0xff420e)
+
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/cui/qa/uitest/tabpages/tpcolor.py b/cui/qa/uitest/tabpages/tpcolor.py
new file mode 100644
index 000000000000..e6ae91adaac3
--- /dev/null
+++ b/cui/qa/uitest/tabpages/tpcolor.py
@@ -0,0 +1,69 @@
+#
+# 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 libreoffice.uno.propertyvalue import mkPropertyValues
+from uitest.framework import UITestCase
+from uitest.uihelper.common import select_pos
+from uitest.uihelper.common import select_by_text
+
+
+# Test for cui/source/tabpages/tpcolor.cxx.
+class Test(UITestCase):
+
+ def testSvxColorTabPageTheme(self):
+ # Given an Impress document with a theme:
+ with self.ui_test.create_doc_in_start_center("impress") as component:
+ template = self.xUITest.getTopFocusWindow()
+ self.ui_test.close_dialog_through_button(template.getChild("close"))
+ doc = self.xUITest.getTopFocusWindow()
+ editWin = doc.getChild("impress_win")
+ # Set theme colors.
+ drawPage = component.getDrawPages().getByIndex(0)
+ master = drawPage.MasterPage
+ theme = mkPropertyValues({
+ "Name": "nameA",
+ "ColorSchemeName": "colorSetA",
+ "ColorScheme": tuple([
+ 0x000000, # dk1
+ 0x000000, # lt1
+ 0x000000, # dk2
+ 0x000000, # lt2
+ 0x0000ff, # accent1
+ 0x000000, # accent2
+ 0x000000, # accent3
+ 0x000000, # accent4
+ 0x000000, # accent5
+ 0x000000, # accent6
+ 0x000000, # hlink
+ 0x000000, # folHlink
+ ])
+ })
+ master.Theme = theme
+ # Select the title shape.
+ editWin.executeAction("TYPE", mkPropertyValues({"KEYCODE": "TAB"}))
+
+ # When using right click -> Area to refer to a theme for shape fill:
+ with self.ui_test.execute_dialog_through_command(".uno:FormatArea") as xDialog:
+ tabControl = xDialog.getChild("tabcontrol")
+ # Area
+ select_pos(tabControl, "0")
+ # Color
+ btnColor = xDialog.getChild("btncolor")
+ btnColor.executeAction("CLICK", tuple())
+ paletteSelector = xDialog.getChild("paletteselector")
+ select_by_text(paletteSelector, "Theme colors")
+ colorSelector = xDialog.getChild("colorset")
+ colorSelector.executeAction("CHOOSE", mkPropertyValues({"POS": "4"}))
+
+ # Then make sure the doc model is updated accordingly:
+ shape = drawPage.getByIndex(0)
+ # Without the accompanying fix in place, this test would have failed with:
+ # AssertionError: -1 != 4
+ # i.e. the theme metadata of the selected fill color was lost.
+ self.assertEqual(shape.FillColorTheme, 4)
+
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/cui/source/factory/dlgfact.cxx b/cui/source/factory/dlgfact.cxx
index 4496b8e8799d..8cb265781907 100644
--- a/cui/source/factory/dlgfact.cxx
+++ b/cui/source/factory/dlgfact.cxx
@@ -93,6 +93,7 @@
#include <DiagramDialog.hxx>
#include <fileextcheckdlg.hxx>
#include <TextColumnsPage.hxx>
+#include <themepage.hxx>
using namespace ::com::sun::star;
using namespace ::com::sun::star::frame;
@@ -1291,6 +1292,8 @@ CreateTabPage AbstractDialogFactory_Impl::GetTabPageCreatorFunc( sal_uInt16 nId
return SfxMacroTabPage::Create;
case RID_SVXPAGE_TEXTCOLUMNS:
return SvxTextColumnsPage::Create;
+ case RID_SVXPAGE_THEME:
+ return SvxThemePage::Create;
default:
break;
}
@@ -1356,6 +1359,8 @@ GetTabPageRanges AbstractDialogFactory_Impl::GetTabPageRangesFunc( sal_uInt16 nI
return SvxAsianLayoutPage::GetRanges;
case RID_SVXPAGE_TEXTCOLUMNS:
return SvxTextColumnsPage::GetRanges;
+ case RID_SVXPAGE_THEME:
+ return SvxThemePage::GetRanges;
default:
break;
}
diff --git a/cui/source/inc/cuitabarea.hxx b/cui/source/inc/cuitabarea.hxx
index b5af2475a218..14cd6922631e 100644
--- a/cui/source/inc/cuitabarea.hxx
+++ b/cui/source/inc/cuitabarea.hxx
@@ -640,7 +640,7 @@ private:
ColorModel eCM;
Color aPreviousColor;
- Color aCurrentColor;
+ svx::NamedThemedColor aCurrentColor;
css::uno::Reference< css::uno::XComponentContext > m_context;
@@ -698,7 +698,7 @@ private:
DECL_LINK(SelectPaletteLBHdl, weld::ComboBox&, void);
DECL_LINK( SelectValSetHdl_Impl, ValueSet*, void );
DECL_LINK( SelectColorModeHdl_Impl, weld::Toggleable&, void );
- void ChangeColor(const Color &rNewColor, bool bUpdatePreset = true);
+ void ChangeColor(const svx::NamedThemedColor &rNewColor, bool bUpdatePreset = true);
void SetColorModel(ColorModel eModel);
void ChangeColorModel();
void UpdateColorValues( bool bUpdatePreset = true );
diff --git a/cui/source/inc/themepage.hxx b/cui/source/inc/themepage.hxx
new file mode 100644
index 000000000000..894a09c9385b
--- /dev/null
+++ b/cui/source/inc/themepage.hxx
@@ -0,0 +1,53 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
+/*
+ * 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/.
+ */
+
+#pragma once
+
+#include <sal/config.h>
+
+#include <sfx2/tabdlg.hxx>
+
+#include <memory>
+
+class ColorListBox;
+
+/// Tab page for themes
+class SvxThemePage : public SfxTabPage
+{
+ static const WhichRangesContainer m_pRanges;
+
+ std::unique_ptr<weld::Entry> m_xThemeName;
+ std::unique_ptr<weld::Entry> m_xColorSetName;
+ std::unique_ptr<ColorListBox> m_xDk1;
+ std::unique_ptr<ColorListBox> m_xLt1;
+ std::unique_ptr<ColorListBox> m_xDk2;
+ std::unique_ptr<ColorListBox> m_xLt2;
+ std::unique_ptr<ColorListBox> m_xAccent1;
+ std::unique_ptr<ColorListBox> m_xAccent2;
+ std::unique_ptr<ColorListBox> m_xAccent3;
+ std::unique_ptr<ColorListBox> m_xAccent4;
+ std::unique_ptr<ColorListBox> m_xAccent5;
+ std::unique_ptr<ColorListBox> m_xAccent6;
+ std::unique_ptr<ColorListBox> m_xHlink;
+ std::unique_ptr<ColorListBox> m_xFolHlink;
+
+public:
+ SvxThemePage(weld::Container* pPage, weld::DialogController* pController,
+ const SfxItemSet& rInAttrs);
+ virtual ~SvxThemePage() override;
+
+ static std::unique_ptr<SfxTabPage>
+ Create(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet*);
+ static WhichRangesContainer GetRanges() { return m_pRanges; }
+
+ virtual bool FillItemSet(SfxItemSet*) override;
+ virtual void Reset(const SfxItemSet*) override;
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
diff --git a/cui/source/options/optlanguagetool.cxx b/cui/source/options/optlanguagetool.cxx
index 38807bc337d3..fc7a42536051 100644
--- a/cui/source/options/optlanguagetool.cxx
+++ b/cui/source/options/optlanguagetool.cxx
@@ -29,6 +29,7 @@ OptLanguageToolTabPage::OptLanguageToolTabPage(weld::Container* pPage,
, m_xUsernameED(m_xBuilder->weld_entry("username"))
, m_xApiKeyED(m_xBuilder->weld_entry("apikey"))
, m_xActivateBox(m_xBuilder->weld_check_button("activate"))
+ , m_xSSLDisableVerificationBox(m_xBuilder->weld_check_button("verifyssl"))
, m_xApiSettingsFrame(m_xBuilder->weld_frame("apisettings"))
{
m_xActivateBox->connect_toggled(LINK(this, OptLanguageToolTabPage, CheckHdl));
@@ -44,6 +45,7 @@ void OptLanguageToolTabPage::EnableControls(bool bEnable)
rLanguageOpts.setEnabled(bEnable);
m_xApiSettingsFrame->set_visible(bEnable);
m_xActivateBox->set_active(bEnable);
+ m_xSSLDisableVerificationBox->set_active(rLanguageOpts.getSSLVerification() != true);
}
IMPL_LINK_NOARG(OptLanguageToolTabPage, CheckHdl, weld::Toggleable&, void)
@@ -57,6 +59,7 @@ void OptLanguageToolTabPage::Reset(const SfxItemSet*)
m_xBaseURLED->set_text(rLanguageOpts.getBaseURL());
m_xUsernameED->set_text(rLanguageOpts.getUsername());
m_xApiKeyED->set_text(rLanguageOpts.getApiKey());
+ m_xSSLDisableVerificationBox->set_active(rLanguageOpts.getSSLVerification() != true);
}
bool OptLanguageToolTabPage::FillItemSet(SfxItemSet*)
@@ -65,6 +68,7 @@ bool OptLanguageToolTabPage::FillItemSet(SfxItemSet*)
rLanguageOpts.setBaseURL(m_xBaseURLED->get_text());
rLanguageOpts.setUsername(m_xUsernameED->get_text());
rLanguageOpts.setApiKey(m_xApiKeyED->get_text());
+ rLanguageOpts.setSSLVerification(m_xSSLDisableVerificationBox->get_active() != true);
return false;
}
diff --git a/cui/source/options/optlanguagetool.hxx b/cui/source/options/optlanguagetool.hxx
index 46a60ecbe103..85e0238b0318 100644
--- a/cui/source/options/optlanguagetool.hxx
+++ b/cui/source/options/optlanguagetool.hxx
@@ -36,6 +36,7 @@ private:
std::unique_ptr<weld::Entry> m_xUsernameED;
std::unique_ptr<weld::Entry> m_xApiKeyED;
std::unique_ptr<weld::CheckButton> m_xActivateBox;
+ std::unique_ptr<weld::CheckButton> m_xSSLDisableVerificationBox;
std::unique_ptr<weld::Frame> m_xApiSettingsFrame;
void EnableControls(bool bEnable);
diff --git a/cui/source/tabpages/chardlg.cxx b/cui/source/tabpages/chardlg.cxx
index fef7b46fb537..26734cb66247 100644
--- a/cui/source/tabpages/chardlg.cxx
+++ b/cui/source/tabpages/chardlg.cxx
@@ -1573,28 +1573,40 @@ bool SvxCharEffectsPage::FillItemSetColor_Impl( SfxItemSet& rSet )
sal_uInt16 nWhich = GetWhich( SID_ATTR_CHAR_COLOR );
const SfxItemSet& rOldSet = GetItemSet();
- Color aSelectedColor;
+ svx::NamedThemedColor aSelectedColor;
bool bChanged = m_bNewFontColor;
if (bChanged)
{
- aSelectedColor = m_xFontColorLB->GetSelectEntryColor();
+ aSelectedColor = m_xFontColorLB->GetSelectedEntryThemedColor();
if (m_xFontTransparencyMtr->get_value_changed_from_saved())
{
double fTransparency
= m_xFontTransparencyMtr->get_value(FieldUnit::PERCENT) * 255.0 / 100;
- aSelectedColor.SetAlpha(255 - static_cast<sal_uInt8>(basegfx::fround(fTransparency)));
+ aSelectedColor.m_aColor.SetAlpha(255 - static_cast<sal_uInt8>(basegfx::fround(fTransparency)));
}
if (m_bOrigFontColor)
- bChanged = aSelectedColor != m_aOrigFontColor;
- if (m_bEnableNoneFontColor && bChanged && aSelectedColor == COL_NONE_COLOR)
+ bChanged = aSelectedColor.m_aColor != m_aOrigFontColor;
+ if (m_bEnableNoneFontColor && bChanged && aSelectedColor.m_aColor == COL_NONE_COLOR)
bChanged = false;
}
if (bChanged)
- rSet.Put( SvxColorItem( aSelectedColor, nWhich ) );
+ {
+ SvxColorItem aItem( aSelectedColor.m_aColor, nWhich );
+
+ if (aSelectedColor.m_nThemeIndex != -1)
+ {
+ // The color was picked from the theme palette, remember its index.
+ aItem.GetThemeColor().SetThemeIndex(aSelectedColor.m_nThemeIndex);
+ aItem.GetThemeColor().SetLumMod(aSelectedColor.m_nLumMod);
+ aItem.GetThemeColor().SetLumOff(aSelectedColor.m_nLumOff);
+ }
+
+ rSet.Put(aItem);
+ }
else if ( SfxItemState::DEFAULT == rOldSet.GetItemState( nWhich, false ) )
rSet.InvalidateItem(nWhich);
diff --git a/cui/source/tabpages/themepage.cxx b/cui/source/tabpages/themepage.cxx
new file mode 100644
index 000000000000..07d24649fb5d
--- /dev/null
+++ b/cui/source/tabpages/themepage.cxx
@@ -0,0 +1,178 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
+/*
+ * 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 <sal/config.h>
+
+#include <com/sun/star/beans/PropertyValues.hpp>
+#include <com/sun/star/util/Color.hpp>
+
+#include <comphelper/sequence.hxx>
+#include <comphelper/sequenceashashmap.hxx>
+#include <editeng/editids.hrc>
+#include <sal/log.hxx>
+#include <svl/grabbagitem.hxx>
+#include <svx/colorbox.hxx>
+
+#include <themepage.hxx>
+
+using namespace com::sun::star;
+
+const WhichRangesContainer
+ SvxThemePage::m_pRanges(svl::Items<SID_ATTR_CHAR_GRABBAG, SID_ATTR_CHAR_GRABBAG>);
+
+SvxThemePage::SvxThemePage(weld::Container* pPage, weld::DialogController* pController,
+ const SfxItemSet& rInAttrs)
+ : SfxTabPage(pPage, pController, "cui/ui/themetabpage.ui", "ThemePage", &rInAttrs)
+ , m_xThemeName(m_xBuilder->weld_entry("themeName"))
+ , m_xColorSetName(m_xBuilder->weld_entry("colorSetName"))
+ , m_xDk1(new ColorListBox(m_xBuilder->weld_menu_button("btnDk1"),
+ [this] { return GetDialogController()->getDialog(); }))
+ , m_xLt1(new ColorListBox(m_xBuilder->weld_menu_button("btnLt1"),
+ [this] { return GetDialogController()->getDialog(); }))
+ , m_xDk2(new ColorListBox(m_xBuilder->weld_menu_button("btnDk2"),
+ [this] { return GetDialogController()->getDialog(); }))
+ , m_xLt2(new ColorListBox(m_xBuilder->weld_menu_button("btnLt2"),
+ [this] { return GetDialogController()->getDialog(); }))
+ , m_xAccent1(new ColorListBox(m_xBuilder->weld_menu_button("btnAccent1"),
+ [this] { return GetDialogController()->getDialog(); }))
+ , m_xAccent2(new ColorListBox(m_xBuilder->weld_menu_button("btnAccent2"),
+ [this] { return GetDialogController()->getDialog(); }))
+ , m_xAccent3(new ColorListBox(m_xBuilder->weld_menu_button("btnAccent3"),
+ [this] { return GetDialogController()->getDialog(); }))
+ , m_xAccent4(new ColorListBox(m_xBuilder->weld_menu_button("btnAccent4"),
+ [this] { return GetDialogController()->getDialog(); }))
+ , m_xAccent5(new ColorListBox(m_xBuilder->weld_menu_button("btnAccent5"),
+ [this] { return GetDialogController()->getDialog(); }))
+ , m_xAccent6(new ColorListBox(m_xBuilder->weld_menu_button("btnAccent6"),
+ [this] { return GetDialogController()->getDialog(); }))
+ , m_xHlink(new ColorListBox(m_xBuilder->weld_menu_button("btnHlink"),
+ [this] { return GetDialogController()->getDialog(); }))
+ , m_xFolHlink(new ColorListBox(m_xBuilder->weld_menu_button("btnFolHlink"),
+ [this] { return GetDialogController()->getDialog(); }))
+{
+}
+
+SvxThemePage::~SvxThemePage() = default;
+
+void SvxThemePage::Reset(const SfxItemSet* pAttrs)
+{
+ const SfxPoolItem* pItem = nullptr;
+ if (!pAttrs->HasItem(SID_ATTR_CHAR_GRABBAG, &pItem))
+ {
+ SAL_WARN("cui.tabpages", "SvxThemePage::Reset: no SfxGrabBagItem");
+ return;
+ }
+
+ const auto& rGrabBagItem = static_cast<const SfxGrabBagItem&>(*pItem);
+ auto itTheme = rGrabBagItem.GetGrabBag().find("Theme");
+ if (itTheme == rGrabBagItem.GetGrabBag().end())
+ {
+ // No theme was defined previously, allow specifying colors.
+ m_xDk1->set_sensitive(true);
+ m_xLt1->set_sensitive(true);
+ m_xDk2->set_sensitive(true);
+ m_xLt2->set_sensitive(true);
+ m_xAccent1->set_sensitive(true);
+ m_xAccent2->set_sensitive(true);
+ m_xAccent3->set_sensitive(true);
+ m_xAccent4->set_sensitive(true);
+ m_xAccent5->set_sensitive(true);
+ m_xAccent6->set_sensitive(true);
+ m_xHlink->set_sensitive(true);
+ m_xFolHlink->set_sensitive(true);
+ return;
+ }
+
+ comphelper::SequenceAsHashMap aMap(itTheme->second);
+ auto it = aMap.find("Name");
+ if (it != aMap.end())
+ {
+ OUString aName;
+ it->second >>= aName;
+ m_xThemeName->set_text(aName);
+ }
+
+ it = aMap.find("ColorSchemeName");
+ if (it != aMap.end())
+ {
+ OUString aName;
+ it->second >>= aName;
+ m_xColorSetName->set_text(aName);
+ }
+
+ it = aMap.find("ColorScheme");
+ if (it != aMap.end())
+ {
+ uno::Sequence<util::Color> aColors;
+ it->second >>= aColors;
+ m_xDk1->SelectEntry(Color(ColorTransparency, aColors[0]));
+ m_xLt1->SelectEntry(Color(ColorTransparency, aColors[1]));
+ m_xDk2->SelectEntry(Color(ColorTransparency, aColors[2]));
+ m_xLt2->SelectEntry(Color(ColorTransparency, aColors[3]));
+ m_xAccent1->SelectEntry(Color(ColorTransparency, aColors[4]));
+ m_xAccent2->SelectEntry(Color(ColorTransparency, aColors[5]));
+ m_xAccent3->SelectEntry(Color(ColorTransparency, aColors[6]));
+ m_xAccent4->SelectEntry(Color(ColorTransparency, aColors[7]));
+ m_xAccent5->SelectEntry(Color(ColorTransparency, aColors[8]));
+ m_xAccent6->SelectEntry(Color(ColorTransparency, aColors[9]));
+ m_xHlink->SelectEntry(Color(ColorTransparency, aColors[10]));
+ m_xFolHlink->SelectEntry(Color(ColorTransparency, aColors[11]));
+ }
+}
+
+bool SvxThemePage::FillItemSet(SfxItemSet* pAttrs)
+{
+ const SfxItemSet& rOldSet = GetItemSet();
+
+ if (rOldSet.HasItem(SID_ATTR_CHAR_GRABBAG))
+ {
+ SfxGrabBagItem aGrabBagItem(
+ static_cast<const SfxGrabBagItem&>(rOldSet.Get(SID_ATTR_CHAR_GRABBAG)));
+
+ comphelper::SequenceAsHashMap aMap;
+ auto it = aGrabBagItem.GetGrabBag().find("Theme");
+ if (it != aGrabBagItem.GetGrabBag().end())
+ {
+ aMap << it->second;
+ }
+
+ aMap["Name"] <<= m_xThemeName->get_text();
+ aMap["ColorSchemeName"] <<= m_xColorSetName->get_text();
+ std::vector<util::Color> aColorScheme = {
+ static_cast<sal_Int32>(m_xDk1->GetSelectEntryColor()),
+ static_cast<sal_Int32>(m_xLt1->GetSelectEntryColor()),
+ static_cast<sal_Int32>(m_xDk2->GetSelectEntryColor()),
+ static_cast<sal_Int32>(m_xLt2->GetSelectEntryColor()),
+ static_cast<sal_Int32>(m_xAccent1->GetSelectEntryColor()),
+ static_cast<sal_Int32>(m_xAccent2->GetSelectEntryColor()),
+ static_cast<sal_Int32>(m_xAccent3->GetSelectEntryColor()),
+ static_cast<sal_Int32>(m_xAccent4->GetSelectEntryColor()),
+ static_cast<sal_Int32>(m_xAccent5->GetSelectEntryColor()),
+ static_cast<sal_Int32>(m_xAccent6->GetSelectEntryColor()),
+ static_cast<sal_Int32>(m_xHlink->GetSelectEntryColor()),
+ static_cast<sal_Int32>(m_xFolHlink->GetSelectEntryColor()),
+ };
+ aMap["ColorScheme"] <<= comphelper::containerToSequence(aColorScheme);
+
+ beans::PropertyValues aTheme = aMap.getAsConstPropertyValueList();
+ aGrabBagItem.GetGrabBag()["Theme"] <<= aTheme;
+ pAttrs->Put(aGrabBagItem);
+ }
+
+ return true;
+}
+
+std::unique_ptr<SfxTabPage> SvxThemePage::Create(weld::Container* pPage,
+ weld::DialogController* pController,
+ const SfxItemSet* rAttrs)
+{
+ return std::make_unique<SvxThemePage>(pPage, pController, *rAttrs);
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
diff --git a/cui/source/tabpages/tpcolor.cxx b/cui/source/tabpages/tpcolor.cxx
index 9639ed1ac342..67e24c371c68 100644
--- a/cui/source/tabpages/tpcolor.cxx
+++ b/cui/source/tabpages/tpcolor.cxx
@@ -205,7 +205,9 @@ void SvxColorTabPage::ActivatePage( const SfxItemSet& )
ChangeColorModel();
const Color aColor = static_cast<const XFillColorItem*>(pPoolItem)->GetColorValue();
- ChangeColor( aColor );
+ svx::NamedThemedColor aThemedColor;
+ aThemedColor.m_aColor = aColor;
+ ChangeColor( aThemedColor );
sal_Int32 nPos = FindInPalette( aColor );
if ( nPos != -1 )
@@ -232,12 +234,25 @@ bool SvxColorTabPage::FillItemSet( SfxItemSet* rSet )
{
Color aColor = m_xValSetColorList->GetItemColor( m_xValSetColorList->GetSelectedItemId() );
OUString sColorName;
- if ( aCurrentColor == aColor )
+ if ( aCurrentColor.m_aColor == aColor )
sColorName = m_xValSetColorList->GetItemText( m_xValSetColorList->GetSelectedItemId() );
else
- sColorName = "#" + aCurrentColor.AsRGBHexString().toAsciiUpperCase();
- maPaletteManager.AddRecentColor( aCurrentColor, sColorName );
- rSet->Put( XFillColorItem( sColorName, aCurrentColor ) );
+ sColorName = "#" + aCurrentColor.m_aColor.AsRGBHexString().toAsciiUpperCase();
+ maPaletteManager.AddRecentColor( aCurrentColor.m_aColor, sColorName );
+ XFillColorItem aColorItem( sColorName, aCurrentColor.m_aColor );
+ if (aCurrentColor.m_nThemeIndex != -1)
+ {
+ aColorItem.GetThemeColor().SetThemeIndex(aCurrentColor.m_nThemeIndex);
+ }
+ if (aCurrentColor.m_nLumMod != 10000)
+ {
+ aColorItem.GetThemeColor().SetLumMod(aCurrentColor.m_nLumMod);
+ }
+ if (aCurrentColor.m_nLumOff != 0)
+ {
+ aColorItem.GetThemeColor().SetLumOff(aCurrentColor.m_nLumOff);
+ }
+ rSet->Put( aColorItem );
rSet->Put( XFillStyleItem( drawing::FillStyle_SOLID ) );
return true;
}
@@ -267,7 +282,9 @@ void SvxColorTabPage::Reset( const SfxItemSet* rSet )
SetColorModel( eCM );
ChangeColorModel();
- ChangeColor(aNewColor);
+ svx::NamedThemedColor aThemedColor;
+ aThemedColor.m_aColor = aNewColor;
+ ChangeColor(aThemedColor);
UpdateModified();
}
@@ -281,12 +298,12 @@ std::unique_ptr<SfxTabPage> SvxColorTabPage::Create(weld::Container* pPage, weld
IMPL_LINK_NOARG(SvxColorTabPage, SpinValueHdl_Impl, weld::SpinButton&, void)
{
// read current MtrFields, if cmyk, then k-value as transparency
- aCurrentColor = Color(static_cast<sal_uInt8>(PercentToColor_Impl(m_xRcustom->get_value())),
+ aCurrentColor.m_aColor = Color(static_cast<sal_uInt8>(PercentToColor_Impl(m_xRcustom->get_value())),
static_cast<sal_uInt8>(PercentToColor_Impl(m_xGcustom->get_value())),
static_cast<sal_uInt8>(PercentToColor_Impl(m_xBcustom->get_value())));
UpdateColorValues();
- rXFSet.Put( XFillColorItem( OUString(), aCurrentColor ) );
+ rXFSet.Put( XFillColorItem( OUString(), aCurrentColor.m_aColor ) );
m_aCtlPreviewNew.SetAttributes( aXFillAttr.GetItemSet() );
m_aCtlPreviewNew.Invalidate();
@@ -295,13 +312,13 @@ IMPL_LINK_NOARG(SvxColorTabPage, SpinValueHdl_Impl, weld::SpinButton&, void)
IMPL_LINK_NOARG(SvxColorTabPage, MetricSpinValueHdl_Impl, weld::MetricSpinButton&, void)
{
// read current MtrFields, if cmyk, then k-value as transparency
- aCurrentColor = Color(ColorTransparency, static_cast<sal_uInt8>(PercentToColor_Impl(m_xKcustom->get_value(FieldUnit::NONE))),
+ aCurrentColor.m_aColor = Color(ColorTransparency, static_cast<sal_uInt8>(PercentToColor_Impl(m_xKcustom->get_value(FieldUnit::NONE))),
static_cast<sal_uInt8>(PercentToColor_Impl(m_xCcustom->get_value(FieldUnit::NONE))),
static_cast<sal_uInt8>(PercentToColor_Impl(m_xYcustom->get_value(FieldUnit::NONE))),
static_cast<sal_uInt8>(PercentToColor_Impl(m_xMcustom->get_value(FieldUnit::NONE))));
- ConvertColorValues (aCurrentColor, ColorModel::RGB);
+ ConvertColorValues (aCurrentColor.m_aColor, ColorModel::RGB);
- rXFSet.Put( XFillColorItem( OUString(), aCurrentColor ) );
+ rXFSet.Put( XFillColorItem( OUString(), aCurrentColor.m_aColor ) );
m_aCtlPreviewNew.SetAttributes( aXFillAttr.GetItemSet() );
m_aCtlPreviewNew.Invalidate();
@@ -309,10 +326,10 @@ IMPL_LINK_NOARG(SvxColorTabPage, MetricSpinValueHdl_Impl, weld::MetricSpinButton
IMPL_LINK_NOARG(SvxColorTabPage, ModifiedHdl_Impl, weld::Entry&, void)
{
- aCurrentColor = m_xHexcustom->GetColor();
+ aCurrentColor.m_aColor = m_xHexcustom->GetColor();
UpdateColorValues();
- rXFSet.Put( XFillColorItem( OUString(), aCurrentColor ) );
+ rXFSet.Put( XFillColorItem( OUString(), aCurrentColor.m_aColor ) );
m_aCtlPreviewNew.SetAttributes( aXFillAttr.GetItemSet() );
m_aCtlPreviewNew.Invalidate();
@@ -366,13 +383,13 @@ IMPL_LINK_NOARG(SvxColorTabPage, ClickAddHdl_Impl, weld::Button&, void)
sal_Int32 nSize = aCustomColorList.getLength();
aCustomColorList.realloc( nSize + 1 );
aCustomColorNameList.realloc( nSize + 1 );
- aCustomColorList.getArray()[nSize] = sal_Int32(aCurrentColor);
+ aCustomColorList.getArray()[nSize] = sal_Int32(aCurrentColor.m_aColor);
aCustomColorNameList.getArray()[nSize] = aName;
officecfg::Office::Common::UserColors::CustomColor::set(aCustomColorList, batch);
officecfg::Office::Common::UserColors::CustomColorName::set(aCustomColorNameList, batch);
batch->commit();
sal_uInt16 nId = m_xValSetColorList->GetItemId(nSize - 1);
- m_xValSetColorList->InsertItem( nId + 1 , aCurrentColor, aName );
+ m_xValSetColorList->InsertItem( nId + 1 , aCurrentColor.m_aColor, aName );
m_xValSetColorList->SelectItem( nId + 1 );
m_xBtnDelete->set_sensitive(false);
m_xBtnDelete->set_tooltip_text( CuiResId(RID_SVXSTR_DELETEUSERCOLOR2) );
@@ -386,13 +403,13 @@ IMPL_LINK_NOARG(SvxColorTabPage, ClickWorkOnHdl_Impl, weld::Button&, void)
{
SvColorDialog aColorDlg;
- aColorDlg.SetColor (aCurrentColor);
+ aColorDlg.SetColor (aCurrentColor.m_aColor);
aColorDlg.SetMode( svtools::ColorPickerMode::Modify );
if (aColorDlg.Execute(GetFrameWeld()) == RET_OK)
{
Color aPreviewColor = aColorDlg.GetColor();
- aCurrentColor = aPreviewColor;
+ aCurrentColor.m_aColor = aPreviewColor;
UpdateColorValues( false );
// fill ItemSet and pass it on to XOut
rXFSet.Put( XFillColorItem( OUString(), aPreviewColor ) );
@@ -489,7 +506,20 @@ IMPL_LINK(SvxColorTabPage, SelectValSetHdl_Impl, ValueSet*, pValSet, void)
rXFSet.Put( XFillColorItem( OUString(), aColor ) );
m_aCtlPreviewNew.SetAttributes( aXFillAttr.GetItemSet() );
m_aCtlPreviewNew.Invalidate();
- ChangeColor(aColor, false);
+
+ bool bThemePaletteSelected = false;
+ if (pValSet == m_xValSetColorList.get())
+ {
+ bThemePaletteSelected = maPaletteManager.IsThemePaletteSelected();
+ }
+ svx::NamedThemedColor aThemedColor;
+ aThemedColor.m_aColor = aColor;
+ if (bThemePaletteSelected)
+ {
+ PaletteManager::GetThemeIndexLumModOff(nPos, aThemedColor.m_nThemeIndex, aThemedColor.m_nLumMod, aThemedColor.m_nLumOff);
+ }
+
+ ChangeColor(aThemedColor, false);
if (pValSet == m_xValSetColorList.get())
{
@@ -552,13 +582,13 @@ IMPL_STATIC_LINK_NOARG(SvxColorTabPage, OnMoreColorsClick, weld::Button&, void)
comphelper::dispatchCommand(".uno:AdditionsDialog", aArgs);
}
-void SvxColorTabPage::ChangeColor(const Color &rNewColor, bool bUpdatePreset )
+void SvxColorTabPage::ChangeColor(const svx::NamedThemedColor &rNewColor, bool bUpdatePreset )
{
- aPreviousColor = rNewColor;
+ aPreviousColor = rNewColor.m_aColor;
aCurrentColor = rNewColor;
UpdateColorValues( bUpdatePreset );
// fill ItemSet and pass it on to XOut
- rXFSet.Put( XFillColorItem( OUString(), aCurrentColor ) );
+ rXFSet.Put( XFillColorItem( OUString(), aCurrentColor.m_aColor ) );
m_aCtlPreviewNew.SetAttributes(aXFillAttr.GetItemSet());
m_aCtlPreviewNew.Invalidate();
}
@@ -600,12 +630,12 @@ void SvxColorTabPage::UpdateColorValues( bool bUpdatePreset )
if (eCM != ColorModel::RGB)
{
ConvertColorValues (aPreviousColor, eCM );
- ConvertColorValues (aCurrentColor, eCM);
+ ConvertColorValues (aCurrentColor.m_aColor, eCM);
- m_xCcustom->set_value( ColorToPercent_Impl( aCurrentColor.GetRed() ), FieldUnit::PERCENT );
- m_xMcustom->set_value( ColorToPercent_Impl( aCurrentColor.GetBlue() ), FieldUnit::PERCENT );
- m_xYcustom->set_value( ColorToPercent_Impl( aCurrentColor.GetGreen() ), FieldUnit::PERCENT );
- m_xKcustom->set_value( ColorToPercent_Impl( 255 - aCurrentColor.GetAlpha() ), FieldUnit::PERCENT );
+ m_xCcustom->set_value( ColorToPercent_Impl( aCurrentColor.m_aColor.GetRed() ), FieldUnit::PERCENT );
+ m_xMcustom->set_value( ColorToPercent_Impl( aCurrentColor.m_aColor.GetBlue() ), FieldUnit::PERCENT );
+ m_xYcustom->set_value( ColorToPercent_Impl( aCurrentColor.m_aColor.GetGreen() ), FieldUnit::PERCENT );
+ m_xKcustom->set_value( ColorToPercent_Impl( 255 - aCurrentColor.m_aColor.GetAlpha() ), FieldUnit::PERCENT );
if( bUpdatePreset )
{
@@ -620,14 +650,14 @@ void SvxColorTabPage::UpdateColorValues( bool bUpdatePreset )
}
ConvertColorValues (aPreviousColor, ColorModel::RGB);
- ConvertColorValues (aCurrentColor, ColorModel::RGB);
+ ConvertColorValues (aCurrentColor.m_aColor, ColorModel::RGB);
}
else
{
- m_xRcustom->set_value( ColorToPercent_Impl( aCurrentColor.GetRed() ) );
- m_xGcustom->set_value( ColorToPercent_Impl( aCurrentColor.GetGreen() ) );
- m_xBcustom->set_value( ColorToPercent_Impl( aCurrentColor.GetBlue() ) );
- m_xHexcustom->SetColor( aCurrentColor );
+ m_xRcustom->set_value( ColorToPercent_Impl( aCurrentColor.m_aColor.GetRed() ) );
+ m_xGcustom->set_value( ColorToPercent_Impl( aCurrentColor.m_aColor.GetGreen() ) );
+ m_xBcustom->set_value( ColorToPercent_Impl( aCurrentColor.m_aColor.GetBlue() ) );
+ m_xHexcustom->SetColor( aCurrentColor.m_aColor );
if( bUpdatePreset )
{
diff --git a/cui/uiconfig/ui/langtoolconfigpage.ui b/cui/uiconfig/ui/langtoolconfigpage.ui
index 7b822325e3f1..237040fa76b7 100644
--- a/cui/uiconfig/ui/langtoolconfigpage.ui
+++ b/cui/uiconfig/ui/langtoolconfigpage.ui
@@ -76,16 +76,130 @@
<object class="GtkGrid" id="grid1">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="row_spacing">5</property>
- <property name="column_spacing">12</property>
<child>
- <object class="GtkLabel" id="base">
+ <object class="GtkGrid" id="grid2">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="halign">start</property>
- <property name="label" translatable="yes" context="langtoolconfigpage|base">Base URL:</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">baseurl</property>
+ <property name="row_spacing">5</property>
+ <property name="column_spacing">12</property>
+ <child>
+ <object class="GtkLabel" id="base">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes" context="langtoolconfigpage|base">Base URL:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">baseurl</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="baseurl">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hexpand">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="usernamelbl">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes" context="langtoolconfigpage|usernamelbl">User name:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">username</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="apikeylbl">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes" context="langtoolconfigpage|apikeylbl">API key:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">apikey</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="username">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="apikey">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="urldesc">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes" context="langtoolconfigpage|urldesc">Please use the base URL e.g. without "/check" at the end.</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="usernamedesc">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes" context="langtoolconfigpage|usernamedesc">Your LanguageTool account's username for premium usage.</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="apikeydesc">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes" context="langtoolconfigpage|apikeydesc">Your LanguageTool account's api key for premium usage.</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
</object>
<packing>
<property name="left_attach">0</property>
@@ -93,109 +207,20 @@
</packing>
</child>
<child>
- <object class="GtkEntry" id="baseurl">
+ <object class="GtkCheckButton" id="verifyssl">
+ <property name="label" translatable="yes" context="langtoolconfigpage|verifyssl">Disable SSL Certificate Verification</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="hexpand">True</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="usernamelbl">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="receives_default">False</property>
<property name="halign">start</property>
- <property name="label" translatable="yes" context="langtoolconfigpage|usernamelbl">User name:</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">username</property>
+ <property name="margin_top">5</property>
+ <property name="draw_indicator">True</property>
</object>
<packing>
<property name="left_attach">0</property>
- <property name="top_attach">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="apikeylbl">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">start</property>
- <property name="label" translatable="yes" context="langtoolconfigpage|apikeylbl">API key:</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">apikey</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="username">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="apikey">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="urldesc">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">start</property>
- <property name="label" translatable="yes" context="langtoolconfigpage|urldesc">Please use the base URL e.g. without "/check" at the end.</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
<property name="top_attach">1</property>
</packing>
</child>
- <child>
- <object class="GtkLabel" id="usernamedesc">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">start</property>
- <property name="label" translatable="yes" context="langtoolconfigpage|usernamedesc">Your LanguageTool account's username for premium usage.</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">3</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="apikeydesc">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">start</property>
- <property name="label" translatable="yes" context="langtoolconfigpage|apikeydesc">Your LanguageTool account's api key for premium usage.</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">5</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
</object>
</child>
<child type="label">
diff --git a/cui/uiconfig/ui/themetabpage.ui b/cui/uiconfig/ui/themetabpage.ui
new file mode 100644
index 000000000000..f991d65aa4b2
--- /dev/null
+++ b/cui/uiconfig/ui/themetabpage.ui
@@ -0,0 +1,555 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface domain="cui">
+ <requires lib="gtk+" version="3.20"/>
+ <object class="GtkBox" id="ThemePage">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">6</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkFrame" id="frmGeneral">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkGrid" id="gdGeneral">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="border_width">6</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">12</property>
+ <child>
+ <object class="GtkLabel" id="lbThemeName">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" context="themetabpage|lbThemeName">Name:</property>
+ <accessibility>
+ <relation type="label-for" target="themeName"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="themeName">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <accessibility>
+ <relation type="labelled-by" target="lbThemeName"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="general">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" context="themetabpage|general">General</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frmColors">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkGrid" id="gdColors">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="border_width">6</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">12</property>
+ <child>
+ <object class="GtkLabel" id="lbColorSetName">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" context="themetabpage|lbColorSetName">Name:</property>
+ <property name="xalign">0</property>
+ <accessibility>
+ <relation type="label-for" target="colorSetName"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="colorSetName">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <accessibility>
+ <relation type="labelled-by" target="lbColorSetName"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="lbDk1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" context="themetabpage|lbDk1">Background - Dark 1:</property>
+ <property name="xalign">0</property>
+ <accessibility>
+ <relation type="label-for" target="btnDk1"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="lbLt1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" context="themetabpage|lbLt1">Text - Light 1:</property>
+ <property name="xalign">0</property>
+ <accessibility>
+ <relation type="label-for" target="btnLt1"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="lbDk2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" context="themetabpage|lbDk2">Background - Dark 2:</property>
+ <property name="xalign">0</property>
+ <accessibility>
+ <relation type="label-for" target="btnDk2"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="lbLt2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" context="themetabpage|lbLt2">Text - Light 2:</property>
+ <property name="xalign">0</property>
+ <accessibility>
+ <relation type="label-for" target="btnLt2"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="lbAccent1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" context="themetabpage|lbAccent1">Accent 1:</property>
+ <property name="xalign">0</property>
+ <accessibility>
+ <relation type="label-for" target="btnAccent1"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="lbAccent2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" context="themetabpage|lbAccent2">Accent 2:</property>
+ <property name="xalign">0</property>
+ <accessibility>
+ <relation type="label-for" target="btnAccent2"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="lbAccent3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" context="themetabpage|lbAccent3">Accent 3:</property>
+ <property name="xalign">0</property>
+ <accessibility>
+ <relation type="label-for" target="btnAccent3"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">7</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="lbAccent4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" context="themetabpage|lbAccent4">Accent 4:</property>
+ <property name="xalign">0</property>
+ <accessibility>
+ <relation type="label-for" target="btnAccent4"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">8</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="lbAccent5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" context="themetabpage|lbAccent5">Accent 5:</property>
+ <property name="xalign">0</property>
+ <accessibility>
+ <relation type="label-for" target="btnAccent5"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">9</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="lbAccent6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" context="themetabpage|lbAccent6">Accent 6:</property>
+ <property name="xalign">0</property>
+ <accessibility>
+ <relation type="label-for" target="btnAccent6"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">10</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="lbHlink">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" context="themetabpage|lbHlink">Hyperlink:</property>
+ <property name="xalign">0</property>
+ <accessibility>
+ <relation type="label-for" target="btnHlink"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">11</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="lbFolHlink">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" context="themetabpage|lbFolHlink">Followed Hyperlink:</property>
+ <property name="xalign">0</property>
+ <accessibility>
+ <relation type="label-for" target="btnFolHlink"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">12</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkMenuButton" id="btnDk1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="no"></property>
+ <child>
+ <placeholder/>
+ </child>
+ <accessibility>
+ <relation type="labelled-by" target="lbDk1"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkMenuButton" id="btnLt1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="no"></property>
+ <child>
+ <placeholder/>
+ </child>
+ <accessibility>
+ <relation type="labelled-by" target="lbLt1"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkMenuButton" id="btnDk2">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="no"></property>
+ <child>
+ <placeholder/>
+ </child>
+ <accessibility>
+ <relation type="labelled-by" target="lbDk2"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkMenuButton" id="btnLt2">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="no"></property>
+ <child>
+ <placeholder/>
+ </child>
+ <accessibility>
+ <relation type="labelled-by" target="lbLt2"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkMenuButton" id="btnAccent1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="no"></property>
+ <child>
+ <placeholder/>
+ </child>
+ <accessibility>
+ <relation type="labelled-by" target="lbAccent1"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkMenuButton" id="btnAccent2">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="no"></property>
+ <child>
+ <placeholder/>
+ </child>
+ <accessibility>
+ <relation type="labelled-by" target="lbAccent2"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkMenuButton" id="btnAccent3">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="no"></property>
+ <child>
+ <placeholder/>
+ </child>
+ <accessibility>
+ <relation type="labelled-by" target="lbAccent3"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">7</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkMenuButton" id="btnAccent4">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="no"></property>
+ <child>
+ <placeholder/>
+ </child>
+ <accessibility>
+ <relation type="labelled-by" target="lbAccent4"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">8</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkMenuButton" id="btnAccent5">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="no"></property>
+ <child>
+ <placeholder/>
+ </child>
+ <accessibility>
+ <relation type="labelled-by" target="lbAccent5"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">9</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkMenuButton" id="btnAccent6">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="no"></property>
+ <child>
+ <placeholder/>
+ </child>
+ <accessibility>
+ <relation type="labelled-by" target="lbAccent6"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">10</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkMenuButton" id="btnHlink">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="no"></property>
+ <child>
+ <placeholder/>
+ </child>
+ <accessibility>
+ <relation type="labelled-by" target="lbHlink"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">11</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkMenuButton" id="btnFolHlink">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="no"></property>
+ <child>
+ <placeholder/>
+ </child>
+ <accessibility>
+ <relation type="labelled-by" target="lbFolHlink"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">12</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="colorSet">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" context="themetabpage|colorSet">Color Set</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+</interface>
diff --git a/cui/uiconfig/ui/toolbarmodedialog.ui b/cui/uiconfig/ui/toolbarmodedialog.ui
index d401f75edf73..58b399680760 100644
--- a/cui/uiconfig/ui/toolbarmodedialog.ui
+++ b/cui/uiconfig/ui/toolbarmodedialog.ui
@@ -108,7 +108,7 @@
<property name="spacing">3</property>
<child>
<object class="GtkRadioButton" id="rbButton1">
- <property name="label" translatable="yes" context="ToolbarmodeDialog|radiobutton1">Standard Toolbar</property>
+ <property name="label" translatable="yes" context="ToolbarmodeDialog|radiobutton1">Compact</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
diff --git a/cui/uiconfig/ui/widgettestdialog.ui b/cui/uiconfig/ui/widgettestdialog.ui
index ce8e52879fec..787deda37171 100644
--- a/cui/uiconfig/ui/widgettestdialog.ui
+++ b/cui/uiconfig/ui/widgettestdialog.ui
@@ -4,6 +4,7 @@
<requires lib="gtk+" version="3.20"/>
<object class="GtkDialog" id="WidgetTestDialog">
<property name="can-focus">False</property>
+ <property name="title" translatable="yes" context="widgettestdialog|WidgetTestDialog">Test Widgets</property>
<property name="type-hint">dialog</property>
<child internal-child="vbox">
<object class="GtkBox">
diff --git a/desktop/inc/lib/init.hxx b/desktop/inc/lib/init.hxx
index b7f3722dff1c..3ef6433ebea2 100644
--- a/desktop/inc/lib/init.hxx
+++ b/desktop/inc/lib/init.hxx
@@ -21,6 +21,7 @@
#include <osl/thread.h>
#include <rtl/ref.hxx>
+#include <rtl/strbuf.hxx>
#include <vcl/idle.hxx>
#include <LibreOfficeKit/LibreOfficeKit.h>
#include <LibreOfficeKit/LibreOfficeKitEnums.h>
@@ -117,6 +118,7 @@ namespace desktop {
virtual void libreOfficeKitViewInvalidateTilesCallback(const tools::Rectangle* pRect, int nPart) override;
virtual void libreOfficeKitViewUpdatedCallback(int nType) override;
virtual void libreOfficeKitViewUpdatedCallbackPerViewId(int nType, int nViewId, int nSourceViewId) override;
+ virtual void dumpState(rtl::OStringBuffer &rState) override;
private:
struct CallbackData
@@ -261,6 +263,8 @@ namespace desktop {
{
return (mOptionalFeatures & feature) != 0;
}
+
+ void dumpState(rtl::OStringBuffer &aState);
};
/// Helper function to extract the value from parameters delimited by
diff --git a/desktop/qa/desktop_lib/test_desktop_lib.cxx b/desktop/qa/desktop_lib/test_desktop_lib.cxx
index 906fefac9466..ad0412251455 100644
--- a/desktop/qa/desktop_lib/test_desktop_lib.cxx
+++ b/desktop/qa/desktop_lib/test_desktop_lib.cxx
@@ -697,7 +697,7 @@ void DesktopLOKTest::testSaveAsJsonOptions()
aMemory.WriteStream(aFile);
std::shared_ptr<vcl::pdf::PDFium> pPDFium = vcl::pdf::PDFiumLibrary::get();
std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument
- = pPDFium->openDocument(aMemory.GetData(), aMemory.GetSize());
+ = pPDFium->openDocument(aMemory.GetData(), aMemory.GetSize(), OString());
CPPUNIT_ASSERT(pPdfDocument);
// Without the accompanying fix in place, this test would have failed with:
// - Expected: 2
diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx
index b254c927fd10..4683f76e3295 100644
--- a/desktop/source/app/app.cxx
+++ b/desktop/source/app/app.cxx
@@ -1562,7 +1562,11 @@ int Desktop::Main()
#endif
//Running the VCL graphics rendering tests
- runGraphicsRenderTests();
+ const char * pDisplay = std::getenv("DISPLAY");
+ if (!pDisplay || pDisplay[0] == ':')
+ {
+ runGraphicsRenderTests();
+ }
// Reap the process started by fire_glxtest_process().
reap_glxtest_process();
diff --git a/desktop/source/deployment/misc/dp_misc.cxx b/desktop/source/deployment/misc/dp_misc.cxx
index f4437711dab5..ad2763bb804c 100644
--- a/desktop/source/deployment/misc/dp_misc.cxx
+++ b/desktop/source/deployment/misc/dp_misc.cxx
@@ -513,7 +513,9 @@ void syncRepositories(
Reference<task::XAbortChannel>(), xCmdEnv);
}
}
-#if !HAVE_FEATURE_MACOSX_SANDBOX
+#if HAVE_FEATURE_MACOSX_SANDBOX
+ (void) bModified;
+#else
if (bModified && !comphelper::LibreOfficeKit::isActive())
{
Reference<task::XRestartManager> restarter(task::OfficeRestartManager::get(comphelper::getProcessComponentContext()));
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 5b4434b75e22..16bf1cb16542 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -109,7 +109,7 @@
#include <sfx2/viewfrm.hxx>
#include <sfx2/msgpool.hxx>
#include <sfx2/dispatch.hxx>
-#include <sfx2/lokcharthelper.hxx>
+#include <sfx2/lokcomponenthelpers.hxx>
#include <sfx2/DocumentSigner.hxx>
#include <sfx2/sidebar/SidebarDockingWindow.hxx>
#include <sfx2/sidebar/SidebarController.hxx>
@@ -1473,6 +1473,23 @@ void CallbackFlushHandler::libreOfficeKitViewUpdatedCallbackPerViewId(int nType,
setUpdatedTypePerViewId(nType, nViewId, nSourceViewId, true);
}
+void CallbackFlushHandler::dumpState(rtl::OStringBuffer &rState)
+{
+ // NB. no locking
+ rState.append("\nView:\t");
+ rState.append(static_cast<sal_Int32>(m_viewId));
+ rState.append("\n\tDisableCallbacks:\t");
+ rState.append(static_cast<sal_Int32>(m_nDisableCallbacks));
+ rState.append("\n\tStates:\n");
+ for (const auto &i : m_states)
+ {
+ rState.append("\n\t\t");
+ rState.append(static_cast<sal_Int32>(i.first));
+ rState.append("\t");
+ rState.append(i.second);
+ }
+}
+
void CallbackFlushHandler::queue(const int type, const char* data)
{
CallbackData callbackData(data);
@@ -2106,11 +2123,10 @@ void CallbackFlushHandler::enqueueUpdatedTypes()
void CallbackFlushHandler::enqueueUpdatedType( int type, const SfxViewShell* viewShell, int viewId )
{
- bool ignore = false;
- OString payload = viewShell->getLOKPayload( type, viewId, &ignore );
- if(ignore)
+ std::optional<OString> payload = viewShell->getLOKPayload( type, viewId );
+ if(!payload)
return; // No actual payload to send.
- CallbackData callbackData(payload.getStr(), viewId);
+ CallbackData callbackData(payload->getStr(), viewId);
m_queue1.emplace_back(type);
m_queue2.emplace_back(callbackData);
SAL_INFO("lok", "Queued updated [" << type << "]: [" << callbackData.getPayload()
@@ -2341,6 +2357,8 @@ static void lo_sendDialogEvent(LibreOfficeKit* pThis,
static void lo_setOption(LibreOfficeKit* pThis, const char* pOption, const char* pValue);
+static void lo_dumpState(LibreOfficeKit* pThis, const char* pOptions, char** pState);
+
LibLibreOffice_Impl::LibLibreOffice_Impl()
: m_pOfficeClass( gOfficeClass.lock() )
, maThread(nullptr)
@@ -2367,6 +2385,7 @@ LibLibreOffice_Impl::LibLibreOffice_Impl()
m_pOfficeClass->runLoop = lo_runLoop;
m_pOfficeClass->sendDialogEvent = lo_sendDialogEvent;
m_pOfficeClass->setOption = lo_setOption;
+ m_pOfficeClass->dumpState = lo_dumpState;
gOfficeClass = m_pOfficeClass;
}
@@ -2492,6 +2511,14 @@ static LibreOfficeKitDocument* lo_documentLoadWithOptions(LibreOfficeKit* pThis,
if (!aLanguage.isEmpty() && isValidLangTag)
{
+ static bool isLoading = true;
+ if (isLoading)
+ {
+ // Capture the language used to load the document.
+ SfxLokHelper::setLoadLanguage(aLanguage);
+ isLoading = false;
+ }
+
SfxLokHelper::setDefaultLanguage(aLanguage);
// Set the LOK language tag, used for dialog tunneling.
comphelper::LibreOfficeKit::setLanguageTag(LanguageTag(aLanguage));
@@ -2547,10 +2574,14 @@ static LibreOfficeKitDocument* lo_documentLoadWithOptions(LibreOfficeKit* pThis,
document::MacroExecMode::NEVER_EXECUTE;
#endif
+ // set AsTemplate explicitly false to be able to load template files
+ // as regular files, otherwise we cannot save them; it will try
+ // to bring saveas dialog which cannot work with LOK case
uno::Sequence<css::beans::PropertyValue> aFilterOptions{
comphelper::makePropertyValue("FilterOptions", sFilterOptions),
comphelper::makePropertyValue("InteractionHandler", xInteraction),
- comphelper::makePropertyValue("MacroExecutionMode", nMacroExecMode)
+ comphelper::makePropertyValue("MacroExecutionMode", nMacroExecMode),
+ comphelper::makePropertyValue("AsTemplate", false)
};
/* TODO
@@ -3176,7 +3207,13 @@ static void doc_iniUnoCommands ()
OUString(".uno:UngroupSparklines"),
OUString(".uno:FormatSparklineMenu"),
OUString(".uno:Protect"),
- OUString(".uno:UnsetCellsReadOnly")
+ OUString(".uno:UnsetCellsReadOnly"),
+ OUString(".uno:ContentControlProperties"),
+ OUString(".uno:InsertCheckboxContentControl"),
+ OUString(".uno:InsertContentControl"),
+ OUString(".uno:InsertDateContentControl"),
+ OUString(".uno:InsertDropdownContentControl"),
+ OUString(".uno:InsertPictureContentControl")
};
util::URL aCommandURL;
@@ -3638,8 +3675,20 @@ static void doc_paintPartTile(LibreOfficeKitDocument* pThis,
}
}
+ ITiledRenderable* pDoc = getTiledRenderable(pThis);
+ if (!pDoc)
+ {
+ SetLastExceptionMsg("Document doesn't support tiled rendering");
+ return;
+ }
+
+ bool bPaintTextEdit = nPart == nOrigPart;
+ pDoc->setPaintTextEdit( bPaintTextEdit );
+
doc_paintTile(pThis, pBuffer, nCanvasWidth, nCanvasHeight, nTilePosX, nTilePosY, nTileWidth, nTileHeight);
+ pDoc->setPaintTextEdit( true );
+
if (!isText && nPart != nOrigPart)
{
doc_setPartImpl(pThis, nOrigPart, false);
@@ -4158,6 +4207,41 @@ static void lo_setOption(LibreOfficeKit* /*pThis*/, const char *pOption, const c
}
}
+static void lo_dumpState (LibreOfficeKit* pThis, const char* /* pOptions */, char** pState)
+{
+ if (!pState)
+ return;
+
+ // NB. no SolarMutexGuard since this may be caused in some extremis / deadlock
+ SetLastExceptionMsg();
+
+ *pState = nullptr;
+ OStringBuffer aState(4096*256);
+
+ LibLibreOffice_Impl* pLib = static_cast<LibLibreOffice_Impl*>(pThis);
+
+ pLib->dumpState(aState);
+
+ OString aStr = aState.makeStringAndClear();
+ *pState = strdup(aStr.getStr());
+}
+
+void LibLibreOffice_Impl::dumpState(rtl::OStringBuffer &rState)
+{
+ rState.append("LibreOfficeKit state:");
+ rState.append("\n\tLastExceptionMsg:\t");
+ rState.append(rtl::OUStringToOString(maLastExceptionMsg, RTL_TEXTENCODING_UTF8));
+ rState.append("\n\tUnipoll:\t");
+ rState.append(vcl::lok::isUnipoll() ? "yes" : "no: events on thread");
+ rState.append("\n\tOptionalFeatures:\t0x");
+ rState.append(static_cast<sal_Int64>(mOptionalFeatures), 16);
+ rState.append("\n\tCallbackData:\t0x");
+ rState.append(reinterpret_cast<sal_Int64>(mpCallback), 16);
+ // TODO: dump mInteractionMap
+ SfxLokHelper::dumpState(rState);
+ vcl::lok::dumpState(rState);
+}
+
static void doc_postUnoCommand(LibreOfficeKitDocument* pThis, const char* pCommand, const char* pArguments, bool bNotifyWhenFinished)
{
comphelper::ProfileZone aZone("doc_postUnoCommand");
@@ -4344,7 +4428,13 @@ static void doc_postUnoCommand(LibreOfficeKitDocument* pThis, const char* pComma
aChartDispatcher->dispatch(aCommandURL, comphelper::containerToSequence(aPropertyValuesVector));
return;
}
- else if (bNotifyWhenFinished && pDocument->mpCallbackFlushHandlers.count(nView))
+ if (LokStarMathHelper aMathHelper(SfxViewShell::Current());
+ aMathHelper.GetGraphicWindow() && aCommand != ".uno:Save")
+ {
+ aMathHelper.Dispatch(aCommand, comphelper::containerToSequence(aPropertyValuesVector));
+ return;
+ }
+ if (bNotifyWhenFinished && pDocument->mpCallbackFlushHandlers.count(nView))
{
bResult = comphelper::dispatchCommand(aCommand, comphelper::containerToSequence(aPropertyValuesVector),
new DispatchResultListener(pCommand, pDocument->mpCallbackFlushHandlers[nView]));
@@ -6568,9 +6658,11 @@ void setLanguageToolConfig()
const char* pBaseUrlString = ::getenv("LANGUAGETOOL_BASEURL");
const char* pUsername = ::getenv("LANGUAGETOOL_USERNAME");
const char* pApikey = ::getenv("LANGUAGETOOL_APIKEY");
+ const char* pSSLVerification = ::getenv("LANGUAGETOOL_SSL_VERIFICATION");
if (pEnabled && pBaseUrlString)
{
OUString aEnabled = OStringToOUString(pEnabled, RTL_TEXTENCODING_UTF8);
+ OUString aSSLVerification = OStringToOUString(pSSLVerification, RTL_TEXTENCODING_UTF8);
if (aEnabled != "true")
return;
OUString aBaseUrl = OStringToOUString(pBaseUrlString, RTL_TEXTENCODING_UTF8);
@@ -6579,6 +6671,7 @@ void setLanguageToolConfig()
SvxLanguageToolOptions& rLanguageOpts = SvxLanguageToolOptions::Get();
rLanguageOpts.setBaseURL(aBaseUrl);
rLanguageOpts.setEnabled(true);
+ rLanguageOpts.setSSLVerification(aSSLVerification == "true");
if (pUsername && pApikey)
{
OUString aUsername = OStringToOUString(pUsername, RTL_TEXTENCODING_UTF8);
diff --git a/dictionaries b/dictionaries
-Subproject d5c7b77c5828e3e7ded8bd09dbb0a59665f3052
+Subproject cdbc21defb8bf9d4f6dfd4bb23a1428e97084a0
diff --git a/download.lst b/download.lst
index 8968baafb9c3..4ec74570bd2c 100644
--- a/download.lst
+++ b/download.lst
@@ -106,12 +106,12 @@ export FONT_LIBRE_HEBREW_SHA256SUM := f596257c1db706ce35795b18d7f66a4db99d427725
export FONT_LIBRE_HEBREW_TARBALL := libre-hebrew-1.0.tar.gz
export FONT_ALEF_SHA256SUM := b98b67602a2c8880a1770f0b9e37c190f29a7e2ade5616784f0b89fbdb75bf52
export FONT_ALEF_TARBALL := alef-1.001.tar.gz
-export FONT_AMIRI_SHA256SUM := 1fbfccced6348b5db2c1c21d5b319cd488e14d055702fa817a0f6cb83d882166
-export FONT_AMIRI_TARBALL := Amiri-0.111.zip
+export FONT_AMIRI_SHA256SUM := 9c4e768893e0023a0ad6f488d5c84bd5add6565d3dcadb838ba5b20e75fcc9a7
+export FONT_AMIRI_TARBALL := Amiri-0.117.zip
export FONT_KACST_SHA256SUM := dca00f5e655f2f217a766faa73a81f542c5c204aa3a47017c3c2be0b31d00a56
export FONT_KACST_TARBALL := ttf-kacst_2.01+mry.tar.gz
-export FONT_REEM_SHA256SUM := f60c6508d209ce4236d2d7324256c2ffddd480be7e3d6023770b93dc391a605f
-export FONT_REEM_TARBALL := ReemKufi-0.7.zip
+export FONT_REEM_SHA256SUM := c4fd68a23c0ea471cc084ae7efe888da372b925cb208eeb0322c26792d2ef413
+export FONT_REEM_TARBALL := ReemKufi-1.2.zip
export FONT_SCHEHERAZADE_SHA256SUM := 251c8817ceb87d9b661ce1d5b49e732a0116add10abc046be4b8ba5196e149b5
export FONT_SCHEHERAZADE_TARBALL := Scheherazade-2.100.zip
export FONT_OPENDYSLEXIC_SHA256SUM := b92d7fcb9409f2bcfd23b65ac71647256eb49c429f4fbb1cc870381fc93eb486
diff --git a/drawinglayer/source/processor2d/vclhelperbufferdevice.cxx b/drawinglayer/source/processor2d/vclhelperbufferdevice.cxx
index 7f20d094b446..362293438dd8 100644
--- a/drawinglayer/source/processor2d/vclhelperbufferdevice.cxx
+++ b/drawinglayer/source/processor2d/vclhelperbufferdevice.cxx
@@ -285,18 +285,17 @@ VDevBuffer& getVDevBuffer()
return *aVDevBuffer.get();
}
-impBufferDevice::impBufferDevice(OutputDevice& rOutDev, const basegfx::B2DRange& rRange)
+impBufferDevice::impBufferDevice(OutputDevice& rOutDev, const basegfx::B2DRange& rRange, bool bCrop)
: mrOutDev(rOutDev)
, mpContent(nullptr)
, mpAlpha(nullptr)
{
basegfx::B2DRange aRangePixel(rRange);
aRangePixel.transform(mrOutDev.GetViewTransformation());
- const ::tools::Rectangle aRectPixel(floor(aRangePixel.getMinX()), floor(aRangePixel.getMinY()),
- ceil(aRangePixel.getMaxX()), ceil(aRangePixel.getMaxY()));
- const Point aEmptyPoint;
- maDestPixel = ::tools::Rectangle(aEmptyPoint, mrOutDev.GetOutputSizePixel());
- maDestPixel.Intersection(aRectPixel);
+ maDestPixel = tools::Rectangle(floor(aRangePixel.getMinX()), floor(aRangePixel.getMinY()),
+ ceil(aRangePixel.getMaxX()), ceil(aRangePixel.getMaxY()));
+ if (bCrop)
+ maDestPixel.Intersection({ {}, mrOutDev.GetOutputSizePixel() });
if (!isVisible())
return;
diff --git a/drawinglayer/source/processor2d/vclhelperbufferdevice.hxx b/drawinglayer/source/processor2d/vclhelperbufferdevice.hxx
index 3b5d30415cc2..99585b05b141 100644
--- a/drawinglayer/source/processor2d/vclhelperbufferdevice.hxx
+++ b/drawinglayer/source/processor2d/vclhelperbufferdevice.hxx
@@ -38,7 +38,7 @@ class impBufferDevice
tools::Rectangle maDestPixel;
public:
- impBufferDevice(OutputDevice& rOutDev, const basegfx::B2DRange& rRange);
+ impBufferDevice(OutputDevice& rOutDev, const basegfx::B2DRange& rRange, bool bCrop = true);
~impBufferDevice();
void paint(double fTrans = 0.0);
diff --git a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
index 53e75ac37d55..087f6bcedb37 100644
--- a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
+++ b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
@@ -1026,13 +1026,29 @@ AlphaMask ProcessAndBlurAlphaMask(const Bitmap& rMask, double fErodeDilateRadius
return AlphaMask(mask.GetBitmap());
}
+
+drawinglayer::geometry::ViewInformation2D
+expandRange(const drawinglayer::geometry::ViewInformation2D& rViewInfo, double nAmount)
+{
+ basegfx::B2DRange viewport(rViewInfo.getViewport());
+ viewport.grow(nAmount);
+ return { rViewInfo.getObjectTransformation(),
+ rViewInfo.getViewTransformation(),
+ viewport,
+ rViewInfo.getVisualizedPage(),
+ rViewInfo.getViewTime(),
+ rViewInfo.getReducedDisplayQuality() };
+}
}
void VclPixelProcessor2D::processGlowPrimitive2D(const primitive2d::GlowPrimitive2D& rCandidate)
{
- basegfx::B2DRange aRange(rCandidate.getB2DRange(getViewInformation2D()));
+ const double nGlowRadius(rCandidate.getGlowRadius());
+ // Avoid wrong effect on the cut-off side; so expand by radius
+ const auto aExpandedViewInfo(expandRange(getViewInformation2D(), nGlowRadius));
+ basegfx::B2DRange aRange(rCandidate.getB2DRange(aExpandedViewInfo));
aRange.transform(maCurrentTransformation);
- basegfx::B2DVector aGlowRadiusVector(rCandidate.getGlowRadius(), 0);
+ basegfx::B2DVector aGlowRadiusVector(nGlowRadius, 0);
// Calculate the pixel size of glow radius in current transformation
aGlowRadiusVector *= maCurrentTransformation;
// Glow radius is the size of the halo from each side of the object. The halo is the
@@ -1043,7 +1059,7 @@ void VclPixelProcessor2D::processGlowPrimitive2D(const primitive2d::GlowPrimitiv
// Consider glow transparency (initial transparency near the object edge)
const sal_uInt8 nAlpha = rCandidate.getGlowColor().GetAlpha();
- impBufferDevice aBufferDevice(*mpOutputDevice, aRange);
+ impBufferDevice aBufferDevice(*mpOutputDevice, aRange, false);
if (aBufferDevice.isVisible())
{
// remember last OutDev and set to content
@@ -1055,9 +1071,8 @@ void VclPixelProcessor2D::processGlowPrimitive2D(const primitive2d::GlowPrimitiv
process(rCandidate);
// Limit the bitmap size to the visible area.
- basegfx::B2DRange viewRange(getViewInformation2D().getDiscreteViewport());
basegfx::B2DRange bitmapRange(aRange);
- bitmapRange.intersect(viewRange);
+ bitmapRange.intersect(aExpandedViewInfo.getDiscreteViewport());
if (!bitmapRange.isEmpty())
{
const tools::Rectangle aRect(
@@ -1094,19 +1109,19 @@ void VclPixelProcessor2D::processGlowPrimitive2D(const primitive2d::GlowPrimitiv
void VclPixelProcessor2D::processSoftEdgePrimitive2D(
const primitive2d::SoftEdgePrimitive2D& rCandidate)
{
- // TODO: don't limit the object at view range. This is needed to not blur objects at window
- // borders, where they don't end. Ideally, process the full object once at maximal reasonable
- // resolution, and store the resulting alpha mask in primitive's cache; then reuse it later,
- // applying the transform.
- basegfx::B2DRange aRange(rCandidate.getB2DRange(getViewInformation2D()));
+ const double nRadius(rCandidate.getRadius());
+ // Avoid wrong effect on the cut-off side; so expand by diameter
+ const auto aExpandedViewInfo(expandRange(getViewInformation2D(), nRadius * 2));
+
+ basegfx::B2DRange aRange(rCandidate.getB2DRange(aExpandedViewInfo));
aRange.transform(maCurrentTransformation);
- basegfx::B2DVector aRadiusVector(rCandidate.getRadius(), 0);
+ basegfx::B2DVector aRadiusVector(nRadius, 0);
// Calculate the pixel size of soft edge radius in current transformation
aRadiusVector *= maCurrentTransformation;
// Blur radius is equal to soft edge radius
const double fBlurRadius = aRadiusVector.getLength();
- impBufferDevice aBufferDevice(*mpOutputDevice, aRange);
+ impBufferDevice aBufferDevice(*mpOutputDevice, aRange, false);
if (aBufferDevice.isVisible())
{
// remember last OutDev and set to content
@@ -1117,9 +1132,8 @@ void VclPixelProcessor2D::processSoftEdgePrimitive2D(
process(rCandidate);
// Limit the bitmap size to the visible area.
- basegfx::B2DRange viewRange(getViewInformation2D().getDiscreteViewport());
basegfx::B2DRange bitmapRange(aRange);
- bitmapRange.intersect(viewRange);
+ bitmapRange.intersect(aExpandedViewInfo.getDiscreteViewport());
if (!bitmapRange.isEmpty())
{
const tools::Rectangle aRect(
@@ -1268,7 +1282,9 @@ void VclPixelProcessor2D::processPatternFillPrimitive2D(
{
mpOutputDevice->Push(vcl::PushFlags::CLIPREGION);
mpOutputDevice->IntersectClipRegion(vcl::Region(aMask));
- mpOutputDevice->DrawWallpaper(aMaskRect, Wallpaper(aTileImage));
+ Wallpaper aWallpaper(aTileImage);
+ aWallpaper.SetColor(COL_TRANSPARENT);
+ mpOutputDevice->DrawWallpaper(aMaskRect, aWallpaper);
mpOutputDevice->Pop();
return;
}
@@ -1291,7 +1307,11 @@ void VclPixelProcessor2D::processPatternFillPrimitive2D(
mpOutputDevice->DrawRect(aMaskRect);
}
else
- mpOutputDevice->DrawWallpaper(aMaskRect, Wallpaper(aTileImage));
+ {
+ Wallpaper aWallpaper(aTileImage);
+ aWallpaper.SetColor(COL_TRANSPARENT);
+ mpOutputDevice->DrawWallpaper(aMaskRect, aWallpaper);
+ }
// back to old OutDev
mpOutputDevice = pLastOutputDevice;
diff --git a/editeng/source/items/frmitems.cxx b/editeng/source/items/frmitems.cxx
index ba55d734515c..45ac886d5c50 100644
--- a/editeng/source/items/frmitems.cxx
+++ b/editeng/source/items/frmitems.cxx
@@ -2809,6 +2809,7 @@ void SvxLineItem::SetLine( const SvxBorderLine* pNew )
SvxBrushItem::SvxBrushItem(sal_uInt16 _nWhich)
: SfxPoolItem(_nWhich)
, aColor(COL_TRANSPARENT)
+ , aFilterColor(COL_TRANSPARENT)
, nShadingValue(ShadingPattern::CLEAR)
, nGraphicTransparency(0)
, eGraphicPos(GPOS_NONE)
@@ -2819,6 +2820,7 @@ SvxBrushItem::SvxBrushItem(sal_uInt16 _nWhich)
SvxBrushItem::SvxBrushItem(const Color& rColor, sal_uInt16 _nWhich)
: SfxPoolItem(_nWhich)
, aColor(rColor)
+ , aFilterColor(COL_TRANSPARENT)
, nShadingValue(ShadingPattern::CLEAR)
, nGraphicTransparency(0)
, eGraphicPos(GPOS_NONE)
@@ -2829,6 +2831,7 @@ SvxBrushItem::SvxBrushItem(const Color& rColor, sal_uInt16 _nWhich)
SvxBrushItem::SvxBrushItem(const Graphic& rGraphic, SvxGraphicPosition ePos, sal_uInt16 _nWhich)
: SfxPoolItem(_nWhich)
, aColor(COL_TRANSPARENT)
+ , aFilterColor(COL_TRANSPARENT)
, nShadingValue(ShadingPattern::CLEAR)
, xGraphicObject(new GraphicObject(rGraphic))
, nGraphicTransparency(0)
@@ -2841,6 +2844,7 @@ SvxBrushItem::SvxBrushItem(const Graphic& rGraphic, SvxGraphicPosition ePos, sal
SvxBrushItem::SvxBrushItem(const GraphicObject& rGraphicObj, SvxGraphicPosition ePos, sal_uInt16 _nWhich)
: SfxPoolItem(_nWhich)
, aColor(COL_TRANSPARENT)
+ , aFilterColor(COL_TRANSPARENT)
, nShadingValue(ShadingPattern::CLEAR)
, xGraphicObject(new GraphicObject(rGraphicObj))
, nGraphicTransparency(0)
@@ -2854,6 +2858,7 @@ SvxBrushItem::SvxBrushItem(const OUString& rLink, const OUString& rFilter,
SvxGraphicPosition ePos, sal_uInt16 _nWhich)
: SfxPoolItem(_nWhich)
, aColor(COL_TRANSPARENT)
+ , aFilterColor(COL_TRANSPARENT)
, nShadingValue(ShadingPattern::CLEAR)
, nGraphicTransparency(0)
, maStrLink(rLink)
@@ -2867,6 +2872,7 @@ SvxBrushItem::SvxBrushItem(const OUString& rLink, const OUString& rFilter,
SvxBrushItem::SvxBrushItem(const SvxBrushItem& rItem)
: SfxPoolItem(rItem)
, aColor(rItem.aColor)
+ , aFilterColor(rItem.aFilterColor)
, nShadingValue(rItem.nShadingValue)
, xGraphicObject(rItem.xGraphicObject ? new GraphicObject(*rItem.xGraphicObject) : nullptr)
, nGraphicTransparency(rItem.nGraphicTransparency)
@@ -2880,6 +2886,7 @@ SvxBrushItem::SvxBrushItem(const SvxBrushItem& rItem)
SvxBrushItem::SvxBrushItem(SvxBrushItem&& rItem)
: SfxPoolItem(std::move(rItem))
, aColor(std::move(rItem.aColor))
+ , aFilterColor(std::move(rItem.aFilterColor))
, nShadingValue(std::move(rItem.nShadingValue))
, xGraphicObject(std::move(rItem.xGraphicObject))
, nGraphicTransparency(std::move(rItem.nGraphicTransparency))
@@ -3134,8 +3141,8 @@ bool SvxBrushItem::operator==( const SfxPoolItem& rAttr ) const
assert(SfxPoolItem::operator==(rAttr));
const SvxBrushItem& rCmp = static_cast<const SvxBrushItem&>(rAttr);
- bool bEqual = ( aColor == rCmp.aColor && eGraphicPos == rCmp.eGraphicPos &&
- nGraphicTransparency == rCmp.nGraphicTransparency);
+ bool bEqual = ( aColor == rCmp.aColor && aFilterColor == rCmp.aFilterColor &&
+ eGraphicPos == rCmp.eGraphicPos && nGraphicTransparency == rCmp.nGraphicTransparency);
if ( bEqual )
{
@@ -3343,6 +3350,7 @@ void SvxBrushItem::dumpAsXml(xmlTextWriterPtr pWriter) const
(void)xmlTextWriterStartElement(pWriter, BAD_CAST("SvxBrushItem"));
(void)xmlTextWriterWriteAttribute(pWriter, BAD_CAST("whichId"), BAD_CAST(OString::number(Which()).getStr()));
(void)xmlTextWriterWriteAttribute(pWriter, BAD_CAST("color"), BAD_CAST(aColor.AsRGBHexString().toUtf8().getStr()));
+ (void)xmlTextWriterWriteAttribute(pWriter, BAD_CAST("filtercolor"), BAD_CAST(aFilterColor.AsRGBHexString().toUtf8().getStr()));
(void)xmlTextWriterWriteAttribute(pWriter, BAD_CAST("shadingValue"), BAD_CAST(OString::number(nShadingValue).getStr()));
(void)xmlTextWriterWriteAttribute(pWriter, BAD_CAST("link"), BAD_CAST(maStrLink.toUtf8().getStr()));
(void)xmlTextWriterWriteAttribute(pWriter, BAD_CAST("filter"), BAD_CAST(maStrFilter.toUtf8().getStr()));
diff --git a/editeng/source/items/textitem.cxx b/editeng/source/items/textitem.cxx
index 32c269480c5a..72b982b73ff9 100644
--- a/editeng/source/items/textitem.cxx
+++ b/editeng/source/items/textitem.cxx
@@ -1352,24 +1352,46 @@ bool SvxContourItem::GetPresentation
return true;
}
+SvxThemeColor::SvxThemeColor()
+ : maThemeIndex(-1),
+ mnLumMod(10000),
+ mnLumOff(0)
+{
+}
+
+bool SvxThemeColor::operator==(const SvxThemeColor& rThemeColor) const
+{
+ return maThemeIndex == rThemeColor.maThemeIndex &&
+ mnLumMod == rThemeColor.mnLumMod &&
+ mnLumOff == rThemeColor.mnLumOff;
+}
+
+void SvxThemeColor::dumpAsXml(xmlTextWriterPtr pWriter) const
+{
+ (void)xmlTextWriterStartElement(pWriter, BAD_CAST("SvxThemeColor"));
+
+ (void)xmlTextWriterWriteAttribute(pWriter, BAD_CAST("theme-index"),
+ BAD_CAST(OString::number(maThemeIndex).getStr()));
+ (void)xmlTextWriterWriteAttribute(pWriter, BAD_CAST("lum-mod"),
+ BAD_CAST(OString::number(mnLumMod).getStr()));
+ (void)xmlTextWriterWriteAttribute(pWriter, BAD_CAST("lum-off"),
+ BAD_CAST(OString::number(mnLumOff).getStr()));
+
+ (void)xmlTextWriterEndElement(pWriter);
+}
+
// class SvxColorItem ----------------------------------------------------
SvxColorItem::SvxColorItem( const sal_uInt16 nId ) :
SfxPoolItem(nId),
mColor( COL_BLACK ),
- maThemeIndex(-1),
- maTintShade(0),
- mnLumMod(10000),
- mnLumOff(0)
+ maTintShade(0)
{
}
SvxColorItem::SvxColorItem( const Color& rCol, const sal_uInt16 nId ) :
SfxPoolItem( nId ),
mColor( rCol ),
- maThemeIndex(-1),
- maTintShade(0),
- mnLumMod(10000),
- mnLumOff(0)
+ maTintShade(0)
{
}
@@ -1383,10 +1405,8 @@ bool SvxColorItem::operator==( const SfxPoolItem& rAttr ) const
const SvxColorItem& rColorItem = static_cast<const SvxColorItem&>(rAttr);
return mColor == rColorItem.mColor &&
- maThemeIndex == rColorItem.maThemeIndex &&
- maTintShade == rColorItem.maTintShade &&
- mnLumMod == rColorItem.mnLumMod &&
- mnLumOff == rColorItem.mnLumOff;
+ maThemeColor == rColorItem.maThemeColor &&
+ maTintShade == rColorItem.maTintShade;
}
bool SvxColorItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
@@ -1407,7 +1427,7 @@ bool SvxColorItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
}
case MID_COLOR_THEME_INDEX:
{
- rVal <<= maThemeIndex;
+ rVal <<= maThemeColor.GetThemeIndex();
break;
}
case MID_COLOR_TINT_OR_SHADE:
@@ -1417,12 +1437,12 @@ bool SvxColorItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
}
case MID_COLOR_LUM_MOD:
{
- rVal <<= mnLumMod;
+ rVal <<= maThemeColor.GetLumMod();
break;
}
case MID_COLOR_LUM_OFF:
{
- rVal <<= mnLumOff;
+ rVal <<= maThemeColor.GetLumOff();
break;
}
default:
@@ -1460,7 +1480,7 @@ bool SvxColorItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
sal_Int16 nIndex = -1;
if (!(rVal >>= nIndex))
return false;
- maThemeIndex = nIndex;
+ maThemeColor.SetThemeIndex(nIndex);
}
break;
case MID_COLOR_TINT_OR_SHADE:
@@ -1476,7 +1496,7 @@ bool SvxColorItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
sal_Int16 nLumMod = -1;
if (!(rVal >>= nLumMod))
return false;
- mnLumMod = nLumMod;
+ maThemeColor.SetLumMod(nLumMod);
}
break;
case MID_COLOR_LUM_OFF:
@@ -1484,7 +1504,7 @@ bool SvxColorItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
sal_Int16 nLumOff = -1;
if (!(rVal >>= nLumOff))
return false;
- mnLumOff = nLumOff;
+ maThemeColor.SetLumOff(nLumOff);
}
break;
default:
@@ -1526,6 +1546,9 @@ void SvxColorItem::dumpAsXml(xmlTextWriterPtr pWriter) const
IntlWrapper aIntlWrapper(SvtSysLocale().GetUILanguageTag());
GetPresentation( SfxItemPresentation::Complete, MapUnit::Map100thMM, MapUnit::Map100thMM, aStr, aIntlWrapper);
(void)xmlTextWriterWriteAttribute(pWriter, BAD_CAST("presentation"), BAD_CAST(OUStringToOString(aStr, RTL_TEXTENCODING_UTF8).getStr()));
+
+ maThemeColor.dumpAsXml(pWriter);
+
(void)xmlTextWriterEndElement(pWriter);
}
diff --git a/editeng/source/uno/unotext.cxx b/editeng/source/uno/unotext.cxx
index 59a5688017e8..8a21d6c28d42 100644
--- a/editeng/source/uno/unotext.cxx
+++ b/editeng/source/uno/unotext.cxx
@@ -41,6 +41,7 @@
#include <editeng/editeng.hxx>
#include <editeng/outliner.hxx>
#include <editeng/unoipset.hxx>
+#include <editeng/colritem.hxx>
#include <comphelper/sequence.hxx>
#include <comphelper/servicehelper.hxx>
#include <cppuhelper/supportsservice.hxx>
@@ -1132,6 +1133,34 @@ bool SvxUnoTextRangeBase::_getOnePropertyStates(const SfxItemSet* pSet, const Sf
if(bItemStateSet)
{
+ if (pMap->nWID == EE_CHAR_COLOR)
+ {
+ // Theme & effects can be DEFAULT_VALUE, even if the same pool item has a color
+ // which is a DIRECT_VALUE.
+ const SvxColorItem* pColor = pSet->GetItem<SvxColorItem>(EE_CHAR_COLOR);
+ switch (pMap->nMemberId)
+ {
+ case MID_COLOR_THEME_INDEX:
+ if (pColor->GetThemeColor().GetThemeIndex() == -1)
+ {
+ eItemState = SfxItemState::DEFAULT;
+ }
+ break;
+ case MID_COLOR_LUM_MOD:
+ if (pColor->GetThemeColor().GetLumMod() == 10000)
+ {
+ eItemState = SfxItemState::DEFAULT;
+ }
+ break;
+ case MID_COLOR_LUM_OFF:
+ if (pColor->GetThemeColor().GetLumOff() == 0)
+ {
+ eItemState = SfxItemState::DEFAULT;
+ }
+ break;
+ }
+ }
+
switch( eItemState )
{
case SfxItemState::SET:
diff --git a/external/epm/UnpackedTarball_epm.mk b/external/epm/UnpackedTarball_epm.mk
index c064a5bacc1e..91d9fbd2b29a 100644
--- a/external/epm/UnpackedTarball_epm.mk
+++ b/external/epm/UnpackedTarball_epm.mk
@@ -14,6 +14,7 @@ $(eval $(call gb_UnpackedTarball_set_tarball,epm,$(EPM_TARBALL),,epm))
$(eval $(call gb_UnpackedTarball_add_patches,epm,\
external/epm/epm-3.7.patch \
external/epm/asan.patch.0 \
+ external/epm/ppc64el.patch.0 \
))
# vim: set noet sw=4 ts=4:
diff --git a/external/epm/ppc64el.patch.0 b/external/epm/ppc64el.patch.0
new file mode 100644
index 000000000000..2b9416e8d215
--- /dev/null
+++ b/external/epm/ppc64el.patch.0
@@ -0,0 +1,11 @@
+--- deb.c.orig 2022-08-01 14:50:38.593375838 +0200
++++ deb.c 2022-08-01 14:58:08.000000000 +0200
+@@ -163,6 +163,8 @@
+ #endif
+ else if (!strcmp(platform->machine, "ppc"))
+ fputs("Architecture: powerpc\n", fp);
++ else if (!strcmp(platform->machine, "ppc64le"))
++ fputs("Architecture: ppc64el\n", fp);
+ else
+ fprintf(fp, "Architecture: %s\n", platform->machine);
+
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 48cd2a9a273d..fb88366d5aef 100644
--- a/external/libnumbertext/UnpackedTarball_libnumbertext.mk
+++ b/external/libnumbertext/UnpackedTarball_libnumbertext.mk
@@ -18,6 +18,7 @@ $(eval $(call gb_UnpackedTarball_set_patchlevel,libnumbertext,1))
$(eval $(call gb_UnpackedTarball_add_patches,libnumbertext, \
external/libnumbertext/MSVCNonBMPBug.patch1 \
external/libnumbertext/WinUnicodePath.patch1 \
+ external/libnumbertext/EmptyString.patch1 \
))
# vim: set noet sw=4 ts=4:
diff --git a/external/more_fonts/ExternalPackage_reem.mk b/external/more_fonts/ExternalPackage_reem.mk
index 9a40652b55cc..bc26cecc7dfe 100644
--- a/external/more_fonts/ExternalPackage_reem.mk
+++ b/external/more_fonts/ExternalPackage_reem.mk
@@ -11,6 +11,7 @@ $(eval $(call gb_ExternalPackage_ExternalPackage,fonts_reem,font_reem))
$(eval $(call gb_ExternalPackage_add_unpacked_files,fonts_reem,$(LIBO_SHARE_FOLDER)/fonts/truetype,\
ttf/ReemKufi-Regular.ttf \
+ ttf/ReemKufi-Bold.ttf \
))
# vim: set noet sw=4 ts=4:
diff --git a/filter/source/storagefilterdetect/filterdetect.cxx b/filter/source/storagefilterdetect/filterdetect.cxx
index f45edd6cb5b6..d8e5df13b874 100644
--- a/filter/source/storagefilterdetect/filterdetect.cxx
+++ b/filter/source/storagefilterdetect/filterdetect.cxx
@@ -32,6 +32,8 @@
#include <com/sun/star/packages/zip/ZipIOException.hpp>
#include <com/sun/star/task/XInteractionHandler.hpp>
+#include <comphelper/lok.hxx>
+
using namespace ::com::sun::star;
using utl::MediaDescriptor;
@@ -102,6 +104,11 @@ OUString SAL_CALL StorageFilterDetect::detect(uno::Sequence<beans::PropertyValue
OUString aMediaType;
xStorageProperties->getPropertyValue( "MediaType" ) >>= aMediaType;
aTypeName = getInternalFromMediaType( aMediaType );
+ if (comphelper::LibreOfficeKit::isActive() && aTypeName == "draw8_template")
+ {
+ // save it as draw8 instead of template format
+ aTypeName = "draw8";
+ }
}
catch( const lang::WrappedTargetException& aWrap )
diff --git a/framework/source/uielement/subtoolbarcontroller.cxx b/framework/source/uielement/subtoolbarcontroller.cxx
index e02e4631bd6b..8731f311b7b0 100644
--- a/framework/source/uielement/subtoolbarcontroller.cxx
+++ b/framework/source/uielement/subtoolbarcontroller.cxx
@@ -46,7 +46,6 @@ namespace {
class SubToolBarController : public ToolBarBase
{
- DECL_LINK(OnPopoverClose, weld::Popover&, void);
OUString m_aSubTbName;
OUString m_aLastCommand;
css::uno::Reference< css::ui::XUIElement > m_xUIElement;
@@ -56,6 +55,8 @@ public:
const css::uno::Sequence< css::uno::Any >& rxArgs );
virtual ~SubToolBarController() override;
+ void PopoverDestroyed();
+
// XInitialization
virtual void SAL_CALL initialize( const css::uno::Sequence< css::uno::Any >& rxArgs ) override;
@@ -209,22 +210,24 @@ namespace {
class SubToolbarControl final : public WeldToolbarPopup
{
public:
- explicit SubToolbarControl(css::uno::Reference< css::frame::XFrame > xFrame,
- weld::Widget* pParent);
+ explicit SubToolbarControl(SubToolBarController& rController, weld::Widget* pParent);
+ virtual ~SubToolbarControl() override;
virtual void GrabFocus() override;
weld::Container* GetContainer() { return m_xTargetContainer.get(); }
private:
+ SubToolBarController& m_rController;
std::unique_ptr<weld::Container> m_xTargetContainer;
};
}
-SubToolbarControl::SubToolbarControl(css::uno::Reference< css::frame::XFrame > xFrame,
+SubToolbarControl::SubToolbarControl(SubToolBarController& rController,
weld::Widget* pParent)
-: WeldToolbarPopup(xFrame, pParent, "svt/ui/subtoolbar.ui", "subtoolbar")
-, m_xTargetContainer(m_xBuilder->weld_container("container"))
+ : WeldToolbarPopup(rController.getFrameInterface(), pParent, "svt/ui/subtoolbar.ui", "subtoolbar")
+ , m_rController(rController)
+ , m_xTargetContainer(m_xBuilder->weld_container("container"))
{
}
@@ -233,11 +236,16 @@ void SubToolbarControl::GrabFocus()
// TODO
}
+SubToolbarControl::~SubToolbarControl()
+{
+ m_rController.PopoverDestroyed();
+}
+
std::unique_ptr<WeldToolbarPopup> SubToolBarController::weldPopupWindow()
{
SolarMutexGuard aGuard;
- auto pPopup = std::make_unique<SubToolbarControl>(getFrameInterface(), m_pToolbar);
+ auto pPopup = std::make_unique<SubToolbarControl>(*this, m_pToolbar);
css::uno::Reference< css::frame::XFrame > xFrame ( getFrameInterface() );
@@ -268,10 +276,6 @@ std::unique_ptr<WeldToolbarPopup> SubToolBarController::weldPopupWindow()
catch ( css::lang::IllegalArgumentException& )
{}
- weld::Popover* pPopover = dynamic_cast<weld::Popover*>(pPopup->getTopLevel());
- if (pPopover)
- pPopover->connect_closed(LINK(this, SubToolBarController, OnPopoverClose));
-
return pPopup;
}
@@ -501,7 +505,7 @@ void SubToolBarController::initialize( const css::uno::Sequence< css::uno::Any >
updateImage();
}
-IMPL_LINK_NOARG(SubToolBarController, OnPopoverClose, weld::Popover&, void)
+void SubToolBarController::PopoverDestroyed()
{
disposeUIElement();
m_xUIElement = nullptr;
diff --git a/helpcontent2 b/helpcontent2
-Subproject dacd2376bf884abd34701a5260f5d7640074ff9
+Subproject 7570f067a82dbff86c646f7d2da601779bf8d8c
diff --git a/hwpfilter/source/hwpread.cxx b/hwpfilter/source/hwpread.cxx
index a301170accb9..31be760c863a 100644
--- a/hwpfilter/source/hwpread.cxx
+++ b/hwpfilter/source/hwpread.cxx
@@ -91,10 +91,12 @@ bool FieldCode::Read(HWPFile & hwpf)
str2.reset( new hchar[len2_ ? len2_ : 1] );
str3.reset( new hchar[len3_ ? len3_ : 1] );
- hwpf.Read2b(str1.get(), len1_);
+ if (hwpf.Read2b(str1.get(), len1_) != len1_)
+ return false;
hwpf.SkipBlock(len1 - (len1_ * sizeof(hchar)));
str1[len1_ ? (len1_ - 1) : 0] = 0;
- hwpf.Read2b(str2.get(), len2_);
+ if (hwpf.Read2b(str2.get(), len2_) != len2_)
+ return false;
hwpf.SkipBlock(len2 - (len2_ * sizeof(hchar)));
str2[len2_ ? (len2_ - 1) : 0] = 0;
if (hwpf.Read2b(str3.get(), len3_) != len3_)
diff --git a/i18npool/source/defaultnumberingprovider/defaultnumberingprovider.cxx b/i18npool/source/defaultnumberingprovider/defaultnumberingprovider.cxx
index 831b502a2771..1f6e4d55bf75 100644
--- a/i18npool/source/defaultnumberingprovider/defaultnumberingprovider.cxx
+++ b/i18npool/source/defaultnumberingprovider/defaultnumberingprovider.cxx
@@ -63,9 +63,9 @@
#define S_FA_THREE "\xDB\xB3"
// Indic Devanagari
-#define S_HI_ONE "\xDB\xB1"
-#define S_HI_TWO "\xDB\xB2"
-#define S_HI_THREE "\xDB\xB3"
+#define S_HI_ONE "\xE0\xA5\xA7"
+#define S_HI_TWO "\xE0\xA5\xA8"
+#define S_HI_THREE "\xE0\xA5\xA9"
// Chicago footnote symbols
#define S_DAGGER "\xE2\x80\xA0"
diff --git a/i18npool/source/localedata/data/hr_HR.xml b/i18npool/source/localedata/data/hr_HR.xml
index 0c493131e16b..4de83e5535cd 100644
--- a/i18npool/source/localedata/data/hr_HR.xml
+++ b/i18npool/source/localedata/data/hr_HR.xml
@@ -421,6 +421,14 @@
<CurrencyName>Hrvatska Kuna</CurrencyName>
<DecimalPlaces>2</DecimalPlaces>
</Currency>
+ <!-- TODO: switch defaults before 2023-01-01 -->
+ <Currency default="false" usedInCompatibleFormatCodes="false">
+ <CurrencyID>EUR</CurrencyID>
+ <CurrencySymbol>€</CurrencySymbol>
+ <BankSymbol>EUR</BankSymbol>
+ <CurrencyName>Euro</CurrencyName>
+ <DecimalPlaces>2</DecimalPlaces>
+ </Currency>
</LC_CURRENCY>
<LC_TRANSLITERATION>
<Transliteration unoid="SENTENCE_CASE"/>
diff --git a/icon-themes/breeze/res/lx03249.png b/icon-themes/breeze/res/lx03249.png
index c12a8ca4e4e0..bcd9473eca21 100644
--- a/icon-themes/breeze/res/lx03249.png
+++ b/icon-themes/breeze/res/lx03249.png
Binary files differ
diff --git a/icon-themes/breeze/res/lx03249_32.png b/icon-themes/breeze/res/lx03249_32.png
index 036f9b407ec4..0bba76caf019 100644
--- a/icon-themes/breeze/res/lx03249_32.png
+++ b/icon-themes/breeze/res/lx03249_32.png
Binary files differ
diff --git a/icon-themes/breeze/res/lx03253.png b/icon-themes/breeze/res/lx03253.png
index 73e626f039ca..f10889d53816 100644
--- a/icon-themes/breeze/res/lx03253.png
+++ b/icon-themes/breeze/res/lx03253.png
Binary files differ
diff --git a/icon-themes/breeze/res/odp_16_8.png b/icon-themes/breeze/res/odp_16_8.png
index a31fe6c489c4..aa4d2c0f6f4f 100644
--- a/icon-themes/breeze/res/odp_16_8.png
+++ b/icon-themes/breeze/res/odp_16_8.png
Binary files differ
diff --git a/icon-themes/breeze/res/odp_32_8.png b/icon-themes/breeze/res/odp_32_8.png
index 9279f282a47e..45c7aeb8c932 100644
--- a/icon-themes/breeze/res/odp_32_8.png
+++ b/icon-themes/breeze/res/odp_32_8.png
Binary files differ
diff --git a/icon-themes/breeze/res/odp_48_8.png b/icon-themes/breeze/res/odp_48_8.png
index a49c2068c046..26693d885e3b 100644
--- a/icon-themes/breeze/res/odp_48_8.png
+++ b/icon-themes/breeze/res/odp_48_8.png
Binary files differ
diff --git a/icon-themes/breeze/res/odp_96_8.png b/icon-themes/breeze/res/odp_96_8.png
index cda25188881d..a65a34a68926 100644
--- a/icon-themes/breeze/res/odp_96_8.png
+++ b/icon-themes/breeze/res/odp_96_8.png
Binary files differ
diff --git a/icon-themes/breeze/res/otp_16_8.png b/icon-themes/breeze/res/otp_16_8.png
index d6ecf5b61edc..aaa267ef5c38 100644
--- a/icon-themes/breeze/res/otp_16_8.png
+++ b/icon-themes/breeze/res/otp_16_8.png
Binary files differ
diff --git a/icon-themes/breeze/res/otp_32_8.png b/icon-themes/breeze/res/otp_32_8.png
index 79a06bc43b86..4efb868da914 100644
--- a/icon-themes/breeze/res/otp_32_8.png
+++ b/icon-themes/breeze/res/otp_32_8.png
Binary files differ
diff --git a/icon-themes/breeze/res/otp_48_8.png b/icon-themes/breeze/res/otp_48_8.png
index f47e38bf8d64..82d7050d116a 100644
--- a/icon-themes/breeze/res/otp_48_8.png
+++ b/icon-themes/breeze/res/otp_48_8.png
Binary files differ
diff --git a/icon-themes/breeze/res/otp_96_8.png b/icon-themes/breeze/res/otp_96_8.png
index cf0f4bc65bd0..5ae489db0f54 100644
--- a/icon-themes/breeze/res/otp_96_8.png
+++ b/icon-themes/breeze/res/otp_96_8.png
Binary files differ
diff --git a/icon-themes/breeze/res/sx03249.png b/icon-themes/breeze/res/sx03249.png
index a31fe6c489c4..aa4d2c0f6f4f 100644
--- a/icon-themes/breeze/res/sx03249.png
+++ b/icon-themes/breeze/res/sx03249.png
Binary files differ
diff --git a/icon-themes/breeze_dark/res/lx03249.png b/icon-themes/breeze_dark/res/lx03249.png
index 872e1ed89137..efe0c9126cdf 100644
--- a/icon-themes/breeze_dark/res/lx03249.png
+++ b/icon-themes/breeze_dark/res/lx03249.png
Binary files differ
diff --git a/icon-themes/breeze_dark/res/lx03249_32.png b/icon-themes/breeze_dark/res/lx03249_32.png
index e6222599a6d5..38a81f6d1bb8 100644
--- a/icon-themes/breeze_dark/res/lx03249_32.png
+++ b/icon-themes/breeze_dark/res/lx03249_32.png
Binary files differ
diff --git a/icon-themes/breeze_dark/res/lx03253.png b/icon-themes/breeze_dark/res/lx03253.png
index 73e626f039ca..f10889d53816 100644
--- a/icon-themes/breeze_dark/res/lx03253.png
+++ b/icon-themes/breeze_dark/res/lx03253.png
Binary files differ
diff --git a/icon-themes/breeze_dark/res/odp_16_8.png b/icon-themes/breeze_dark/res/odp_16_8.png
index a31fe6c489c4..aa4d2c0f6f4f 100644
--- a/icon-themes/breeze_dark/res/odp_16_8.png
+++ b/icon-themes/breeze_dark/res/odp_16_8.png
Binary files differ
diff --git a/icon-themes/breeze_dark/res/odp_32_8.png b/icon-themes/breeze_dark/res/odp_32_8.png
index 9279f282a47e..45c7aeb8c932 100644
--- a/icon-themes/breeze_dark/res/odp_32_8.png
+++ b/icon-themes/breeze_dark/res/odp_32_8.png
Binary files differ
diff --git a/icon-themes/breeze_dark/res/odp_48_8.png b/icon-themes/breeze_dark/res/odp_48_8.png
index a49c2068c046..26693d885e3b 100644
--- a/icon-themes/breeze_dark/res/odp_48_8.png
+++ b/icon-themes/breeze_dark/res/odp_48_8.png
Binary files differ
diff --git a/icon-themes/breeze_dark/res/odp_96_8.png b/icon-themes/breeze_dark/res/odp_96_8.png
index cda25188881d..a65a34a68926 100644
--- a/icon-themes/breeze_dark/res/odp_96_8.png
+++ b/icon-themes/breeze_dark/res/odp_96_8.png
Binary files differ
diff --git a/icon-themes/breeze_dark/res/otp_16_8.png b/icon-themes/breeze_dark/res/otp_16_8.png
index d6ecf5b61edc..aaa267ef5c38 100644
--- a/icon-themes/breeze_dark/res/otp_16_8.png
+++ b/icon-themes/breeze_dark/res/otp_16_8.png
Binary files differ
diff --git a/icon-themes/breeze_dark/res/otp_32_8.png b/icon-themes/breeze_dark/res/otp_32_8.png
index 79a06bc43b86..4efb868da914 100644
--- a/icon-themes/breeze_dark/res/otp_32_8.png
+++ b/icon-themes/breeze_dark/res/otp_32_8.png
Binary files differ
diff --git a/icon-themes/breeze_dark/res/otp_48_8.png b/icon-themes/breeze_dark/res/otp_48_8.png
index f47e38bf8d64..82d7050d116a 100644
--- a/icon-themes/breeze_dark/res/otp_48_8.png
+++ b/icon-themes/breeze_dark/res/otp_48_8.png
Binary files differ
diff --git a/icon-themes/breeze_dark/res/otp_96_8.png b/icon-themes/breeze_dark/res/otp_96_8.png
index cf0f4bc65bd0..5ae489db0f54 100644
--- a/icon-themes/breeze_dark/res/otp_96_8.png
+++ b/icon-themes/breeze_dark/res/otp_96_8.png
Binary files differ
diff --git a/icon-themes/breeze_dark/res/sx03249.png b/icon-themes/breeze_dark/res/sx03249.png
index a31fe6c489c4..aa4d2c0f6f4f 100644
--- a/icon-themes/breeze_dark/res/sx03249.png
+++ b/icon-themes/breeze_dark/res/sx03249.png
Binary files differ
diff --git a/icon-themes/breeze_dark_svg/res/lx03249.svg b/icon-themes/breeze_dark_svg/res/lx03249.svg
index b5ef8b428038..ef32e342b565 100644
--- a/icon-themes/breeze_dark_svg/res/lx03249.svg
+++ b/icon-themes/breeze_dark_svg/res/lx03249.svg
@@ -1 +1 @@
-<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="m3 3v14h7v3h-2v1h8v-1h-2v-3h7v-14h-1-1-14-1zm1 1h16v12h-16zm5 2v8l7-4zm2 11h2v3h-2z" fill="#eff0f1"/></svg> \ No newline at end of file
+<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="m4 4v2h-1v14h18v-14h-1v-2zm1 1h14v1h-14zm-1 2h9 7v12h-16zm9 0v5h5c0-2.7614237-2.238576-5-5-5zm-1 1c-2.7614237 0-5 2.238576-5 5s2.2385763 5 5 5c2.761424 0 5-2.238576 5-5h-1-4v-4zm-1 1.1308594v4.8691406h1 3.867188c-.455458 1.763986-2.045353 2.99736-3.867188 3-2.209139 0-4-1.790861-4-4 .0017511-1.822562 1.2353107-3.4135007 3-3.8691406z" fill="#eff0f1"/></svg> \ No newline at end of file
diff --git a/icon-themes/breeze_dark_svg/res/lx03249_32.svg b/icon-themes/breeze_dark_svg/res/lx03249_32.svg
index 2701df67442b..ff6b4fc56805 100644
--- a/icon-themes/breeze_dark_svg/res/lx03249_32.svg
+++ b/icon-themes/breeze_dark_svg/res/lx03249_32.svg
@@ -1 +1 @@
-<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path d="m6 4v21 .929688.070312 1 1h20v-1-1h-.003906l.003906-14v-3l-5-5-.919922.0136719v-.0136719h-1.371094-11.9648434zm1 1h11.964844v.0097656h.041015l-.005859 5.9902344 5.943359-.023438v.023438h.056641v11 3 2l-18 .005859v-.058593-1.94336-1-.0625h-.0058594zm3 8v9h4v2h-1v1h6v-1h-1v-2h4v-9zm1 1h10v7h-10zm4 1v5l3-2.5zm0 7h2v2h-2z" fill="#eff0f1"/></svg> \ No newline at end of file
+<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path d="m6 4v24h20v-19l-5-5zm1 1h11.964844v.00977h.04102l-.005864 5.99023 5.943359-.023438v.023438h.056641v16l-18 .0059v-.05859zm3 7v2h-1v11h14v-11h-1v-2zm1 1h10v1h-10zm-1 2h12v9h-12zm7 1v3h3c0-1.656854-1.343146-3-3-3zm-1 1c-1.656854 0-3 1.343146-3 3s1.343146 3 3 3 3-1.343146 3-3h-3zm-1 1.271484v2.728516h2.730469c-.356983.618313-1.016503.999435-1.730469 1-1.104569 0-2-.895431-2-2 .0013-.713268.38229-1.371883 1-1.728516z" fill="#eff0f1"/></svg> \ No newline at end of file
diff --git a/icon-themes/breeze_dark_svg/res/lx03253.svg b/icon-themes/breeze_dark_svg/res/lx03253.svg
index 8973112e39c6..6e7f88259996 100644
--- a/icon-themes/breeze_dark_svg/res/lx03253.svg
+++ b/icon-themes/breeze_dark_svg/res/lx03253.svg
@@ -1 +1 @@
-<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path d="m6 4v21 .929688.070312 1 1h20v-1-1h-.003906l.003906-14v-3l-5-5-.919922.0136719v-.0136719h-1.371094-11.9648434zm1 1h11.964844v.0097656h.041015l-.005859 5.9902344 5.943359-.023438v.023438h.056641v11 3 2l-18 .005859v-.058593-1.94336-1-.0625h-.0058594zm3 8v9h4v2h-1v1h6v-1h-1v-2h4v-9zm1 1h10v7h-10zm4 1v5l3-2.5zm0 7h2v2h-2z" fill="#b3b3b3"/></svg> \ No newline at end of file
+<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path d="m6 4v21 .929688.070312 1 1h20v-1-1h-.003906l.003906-14v-3l-5-5-.919922.0136719v-.0136719h-1.371094-11.9648434zm1 1h11.964844v.0097656h.041015l-.005859 5.9902344 5.943359-.023438v.023438h.056641v11 3 2l-18 .005859v-.058593-1.94336-1-.0625h-.0058594zm3 7v2h-1v11h14v-11h-1v-2zm1 1h10v1h-10zm-1 2h12v9h-12zm7 1v3h3c0-1.656854-1.343146-3-3-3zm-1 1c-1.656854 0-3 1.343146-3 3s1.343146 3 3 3 3-1.343146 3-3h-3zm-1 1.271484v2.728516h2.730469c-.356983.618313-1.016503.999435-1.730469 1-1.104569 0-2-.895431-2-2 .0013-.713268.38229-1.371883 1-1.728516z" fill="#b3b3b3"/></svg> \ No newline at end of file
diff --git a/icon-themes/breeze_dark_svg/res/odp_16_8.svg b/icon-themes/breeze_dark_svg/res/odp_16_8.svg
index 354c66743266..ea1d7f0d9df5 100644
--- a/icon-themes/breeze_dark_svg/res/odp_16_8.svg
+++ b/icon-themes/breeze_dark_svg/res/odp_16_8.svg
@@ -1 +1 @@
-<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m2 2v9h4v2h-1v1h6v-1h-1v-2h4v-9zm1 1h10v7h-10zm4 1v5l3-2.5zm0 7h2v2h-2z" fill="#f27935"/></svg> \ No newline at end of file
+<svg height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m2 1v2h-1v11h14v-11h-1v-2zm1 1h10v1h-10zm-1 2h12v9h-12zm7 1v3h3c0-1.6568542-1.343146-3-3-3zm-1 1c-1.6568542 0-3 1.3431458-3 3 0 1.656854 1.3431458 3 3 3s3-1.343146 3-3h-3z" fill="#ff8b23" opacity=".9"/></svg> \ No newline at end of file
diff --git a/icon-themes/breeze_dark_svg/res/odp_32_8.svg b/icon-themes/breeze_dark_svg/res/odp_32_8.svg
index aee44f6a499b..157c9703ca21 100644
--- a/icon-themes/breeze_dark_svg/res/odp_32_8.svg
+++ b/icon-themes/breeze_dark_svg/res/odp_32_8.svg
@@ -1 +1 @@
-<svg height="32" width="32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientTransform="matrix(.49999977 0 0 .48275841 384.57144 516.34974)" gradientUnits="userSpaceOnUse" x1="29.999994" x2="29.999994" y1="2.999906" y2="60.999931"><stop offset="0" stop-color="#f27935"/><stop offset="1" stop-color="#f2784b"/></linearGradient><linearGradient id="b" gradientUnits="userSpaceOnUse" x1="407.57144" x2="407.57144" y1="538.79797" y2="545.79797"><stop offset="0" stop-color="#f7ab89"/><stop offset="1" stop-color="#fbd2bf"/></linearGradient><linearGradient id="c" gradientTransform="matrix(0 .48275841 -.48275841 0 419.53694 512.72901)" gradientUnits="userSpaceOnUse" x1="54" x2="39.500008" y1="31" y2="16.500048"><stop offset="0" stop-color="#383e51"/><stop offset="1" stop-color="#655c6f" stop-opacity="0"/></linearGradient><g transform="matrix(1 0 0 -1 -384.57143 547.79797)"><path d="m389.57144 517.79801v27.99999h14.99999l7.00003-7-.00003-14.24137v-6.75862h-7z" fill="url(#a)"/><path d="m389.57143 517.798h22v.99997h-22z" fill="#2e3132" fill-opacity=".294118" stroke-width="1.211061"/><path d="m389.57143 544.79794h15v1.00003h-15z" fill="#fff" fill-opacity=".409836" stroke-width=".825723"/><path d="m411.57144 538.798-7.00001 7v-7z" fill="url(#b)" fill-rule="evenodd"/><path d="m411.5714 531.79797-6.99997 7h7z" fill="url(#c)" fill-rule="evenodd" opacity=".2"/><path d="m394.57143 536.798v-9h4v-2h-1v-1h6v1h-1v2h4v9zm1-1h10v-7h-10zm4-1v-5l3 2.5zm0-7h2v-2h-2z" fill="#fef2ec"/></g></svg> \ No newline at end of file
+<svg height="32" width="32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientTransform="matrix(.49999977 0 0 .48275841 384.57144 516.34974)" gradientUnits="userSpaceOnUse" x1="29.999994" x2="29.999994" y1="2.999906" y2="60.999931"><stop offset="0" stop-color="#f27935"/><stop offset="1" stop-color="#f2784b"/></linearGradient><linearGradient id="b" gradientUnits="userSpaceOnUse" x1="407.57144" x2="407.57144" y1="538.79797" y2="545.79797"><stop offset="0" stop-color="#f7ab89"/><stop offset="1" stop-color="#fbd2bf"/></linearGradient><linearGradient id="c" gradientTransform="matrix(0 .48275841 -.48275841 0 419.53694 512.72901)" gradientUnits="userSpaceOnUse" x1="54" x2="39.500008" y1="31" y2="16.500048"><stop offset="0" stop-color="#383e51"/><stop offset="1" stop-color="#655c6f" stop-opacity="0"/></linearGradient><g transform="matrix(1 0 0 -1 -384.57143 547.79797)"><path d="m389.57144 517.79801v27.99999h14.99999l7.00003-7-.00003-14.24137v-6.75862h-7z" fill="url(#a)"/><path d="m389.57143 517.798h22v.99997h-22z" fill="#2e3132" fill-opacity=".294118" stroke-width="1.211061"/><path d="m389.57143 544.79794h15v1.00003h-15z" fill="#fff" fill-opacity=".409836" stroke-width=".825723"/><path d="m411.57144 538.798-7.00001 7v-7z" fill="url(#b)" fill-rule="evenodd"/><path d="m411.5714 531.79797-6.99997 7h7z" fill="url(#c)" fill-rule="evenodd" opacity=".2"/><path d="m10 10v2h-1v11h14v-11h-1v-2zm1 1h10v1h-10zm-1 2h12v9h-12zm7 1v3h3c0-1.65685-1.34315-3-3-3zm-1 1c-1.65685 0-3 1.34315-3 3s1.34315 3 3 3 3-1.34315 3-3h-3z" fill="#fff" opacity=".9" transform="matrix(1 0 0 -1 384.57143 547.79797)"/></g></svg> \ No newline at end of file
diff --git a/icon-themes/breeze_dark_svg/res/odp_48_8.svg b/icon-themes/breeze_dark_svg/res/odp_48_8.svg
index aaa7ecb0b2eb..91f31e59bd5a 100644
--- a/icon-themes/breeze_dark_svg/res/odp_48_8.svg
+++ b/icon-themes/breeze_dark_svg/res/odp_48_8.svg
@@ -1 +1 @@
-<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientTransform="matrix(.49999977 0 0 -.48275841 384.57144 547.24623)" gradientUnits="userSpaceOnUse" x1="392.57144" x2="425.57147" y1="523.79797" y2="523.79797"><stop offset="0" stop-color="#f27935"/><stop offset="1" stop-color="#f2784b"/></linearGradient><linearGradient id="b" gradientTransform="matrix(1 0 0 -1 0 1063.596)" gradientUnits="userSpaceOnUse" x1="414.57144" x2="425.57144" y1="508.298" y2="508.298"><stop offset="0" stop-color="#f7ab89"/><stop offset="1" stop-color="#fbd2bf"/></linearGradient><linearGradient id="c" gradientTransform="matrix(0 -.72413762 -.72413762 0 437.51968 552.40144)" gradientUnits="userSpaceOnUse" x1="54" x2="39.500008" y1="31" y2="16.500048"><stop offset="0" stop-color="#383e51"/><stop offset="1" stop-color="#655c6f" stop-opacity="0"/></linearGradient><g transform="translate(-384.57143 -499.798)"><path d="m392.57143 544.798v-41.99999l22-.00001 11.00005 11.00001-.00007 20.86206v10.13793h-10.5z" fill="url(#a)" stroke-width="1.5"/><path d="m392.57143 543.798h33l-.00002 1h-33z" fill="#2e3132" fill-opacity=".294118" stroke-width="1.816591"/><path d="m392.57141 502.798 22.00002-.00001.00002 1-22.00002.00001z" fill="#fff" fill-opacity=".409836" stroke-width="1.238585"/><g stroke-width="1.5"><path d="m425.57145 513.79801-11.00002-11.00001.00002 11.00001z" fill="url(#b)" fill-rule="evenodd"/><path d="m425.57143 524.798-11-11h11z" fill="url(#c)" fill-rule="evenodd" opacity=".2"/><path d="m399.57143 516.798v13h7v3h-2v1h9v-1h-2v-3h7v-13zm1 1h17v11h-17zm7 1.5v8l4.5-4zm0 10.5h3v3h-3z" fill="#fef2ec"/></g></g></svg> \ No newline at end of file
+<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientTransform="matrix(.49999977 0 0 -.48275841 384.57144 547.24623)" gradientUnits="userSpaceOnUse" x1="392.57144" x2="425.57147" y1="523.79797" y2="523.79797"><stop offset="0" stop-color="#f27935"/><stop offset="1" stop-color="#f2784b"/></linearGradient><linearGradient id="b" gradientTransform="matrix(1 0 0 -1 0 1063.596)" gradientUnits="userSpaceOnUse" x1="414.57144" x2="425.57144" y1="508.298" y2="508.298"><stop offset="0" stop-color="#f7ab89"/><stop offset="1" stop-color="#fbd2bf"/></linearGradient><linearGradient id="c" gradientTransform="matrix(0 -.72413762 -.72413762 0 437.51968 552.40144)" gradientUnits="userSpaceOnUse" x1="54" x2="39.500008" y1="31" y2="16.500048"><stop offset="0" stop-color="#383e51"/><stop offset="1" stop-color="#655c6f" stop-opacity="0"/></linearGradient><g transform="translate(-384.57143 -499.798)"><path d="m392.57143 544.798v-41.99999l22-.00001 11.00005 11.00001-.00007 20.86206v10.13793h-10.5z" fill="url(#a)" stroke-width="1.5"/><path d="m392.57143 543.798h33l-.00002 1h-33z" fill="#2e3132" fill-opacity=".294118" stroke-width="1.816591"/><path d="m392.57141 502.798 22.00002-.00001.00002 1-22.00002.00001z" fill="#fff" fill-opacity=".409836" stroke-width="1.238585"/><g fill-rule="evenodd" stroke-width="1.5"><path d="m425.57145 513.79801-11.00002-11.00001.00002 11.00001z" fill="url(#b)"/><path d="m425.57143 524.798-11-11h11z" fill="url(#c)" opacity=".2"/></g><path d="m16 17v3h-1v14h19v-14h-1v-3zm1 1h15v2h-15zm-1 3h17v12h-17zm9 1v4h4c0-2.209139-1.790861-4-4-4zm-1 1c-2.209139 0-4 1.790861-4 4s1.790861 4 4 4 4-1.790861 4-4h-4zm-1 1.173828v3.826172h3.824219c-.423267 1.197185-1.554415 1.998218-2.824219 2-1.656854 0-3-1.343146-3-3 .000955-1.270521.802141-2.402665 2-2.826172z" fill="#fff" opacity=".9" stroke-width="1.357143" transform="translate(384.57143 499.798)"/></g></svg> \ No newline at end of file
diff --git a/icon-themes/breeze_dark_svg/res/odp_96_8.svg b/icon-themes/breeze_dark_svg/res/odp_96_8.svg
index 4ae388d33048..495558b797c5 100644
--- a/icon-themes/breeze_dark_svg/res/odp_96_8.svg
+++ b/icon-themes/breeze_dark_svg/res/odp_96_8.svg
@@ -1 +1 @@
-<svg height="96" width="96" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientTransform="matrix(1.3636364 0 0 -1.3793103 4.363636 2004.8623)" gradientUnits="userSpaceOnUse" x1="48" x2="48" y1="1044.3622" y2="964.36218"><stop offset="0" stop-color="#f27935"/><stop offset="1" stop-color="#f2784b"/></linearGradient><linearGradient id="b" gradientTransform="matrix(1.3636364 0 0 -1.3793103 4.363636 2004.8623)" gradientUnits="userSpaceOnUse" x1="66" x2="66" y1="984.36218" y2="964.36218"><stop offset="0" stop-color="#f7ab89"/><stop offset="1" stop-color="#fbd2bf"/></linearGradient><linearGradient id="c" gradientTransform="matrix(0 -1.3636364 -1.3793103 0 101.4483 1057.0894)" gradientUnits="userSpaceOnUse" x1="54.066666" x2="40" y1="30.775019" y2="17"><stop offset="0" stop-color="#383e51"/><stop offset="1" stop-color="#655c6f" stop-opacity="0"/></linearGradient><g transform="translate(0 -956.3622)"><path d="m18 1044.3622v-80.00002h41l19.000002 19v61.00002z" fill="url(#a)"/><path d="m18 1044.3622h60v-1h-60z" fill="#2e3132" fill-opacity=".294118" stroke-width="1.209717"/><path d="m18 965.36218h41v-1h-41z" fill="#fff" fill-opacity=".409836" stroke-width=".82664"/><path d="m78.000002 983.36218-19.000002-19v19z" fill="url(#b)" fill-rule="evenodd"/><path d="m78 1002.544-19-19.18182h19z" fill="url(#c)" fill-rule="evenodd" opacity=".2"/><path d="m30 991.3622v1.2069 24.7931h1.363636 13.636364v3h-4v1l4.272728.034h5.454546l4.272726-.034v-1h-4v-3h15v-2.7586-23.2414zm1 1h34v24h-34zm14 6v11l7-5.5z" fill="#fde8de"/></g></svg> \ No newline at end of file
+<svg height="96" width="96" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientTransform="matrix(1.3636364 0 0 -1.3793103 4.363636 2004.8623)" gradientUnits="userSpaceOnUse" x1="48" x2="48" y1="1044.3622" y2="964.36218"><stop offset="0" stop-color="#f27935"/><stop offset="1" stop-color="#f2784b"/></linearGradient><linearGradient id="b" gradientTransform="matrix(1.3636364 0 0 -1.3793103 4.363636 2004.8623)" gradientUnits="userSpaceOnUse" x1="66" x2="66" y1="984.36218" y2="964.36218"><stop offset="0" stop-color="#f7ab89"/><stop offset="1" stop-color="#fbd2bf"/></linearGradient><linearGradient id="c" gradientTransform="matrix(0 -1.3636364 -1.3793103 0 101.4483 1057.0894)" gradientUnits="userSpaceOnUse" x1="54.066666" x2="40" y1="30.775019" y2="17"><stop offset="0" stop-color="#383e51"/><stop offset="1" stop-color="#655c6f" stop-opacity="0"/></linearGradient><g transform="translate(0 -956.3622)"><path d="m18 1044.3622v-80.00002h41l19.000002 19v61.00002z" fill="url(#a)"/><path d="m18 1044.3622h60v-1h-60z" fill="#2e3132" fill-opacity=".294118" stroke-width="1.209717"/><path d="m18 965.36218h41v-1h-41z" fill="#fff" fill-opacity=".409836" stroke-width=".82664"/><path d="m78.000002 983.36218-19.000002-19v19z" fill="url(#b)" fill-rule="evenodd"/><path d="m78 1002.544-19-19.18182h19z" fill="url(#c)" fill-rule="evenodd" opacity=".2"/><path d="m33 35v3l-3 .033203v26.966797l36-.017578v-26.982422h-3v-3zm1 1h28v2h-28zm-3 3h34v24.982422l-34 .017578zm18 6v6h6a6 6 0 0 0 -6-6zm-1 1c-3.313708 0-6 2.686292-6 6s2.686292 6 6 6 6-2.686292 6-6h-6zm-1 1.105469v5.894531h5.898438c-.475151 2.327756-2.522682 3.999743-4.898438 4-2.761424 0-5-2.238576-5-5 .0021-2.374288 1.673681-4.419674 4-4.894531z" fill="#fde8de" stroke-width="1.5" transform="translate(0 956.3622)"/></g></svg> \ No newline at end of file
diff --git a/icon-themes/breeze_dark_svg/res/otp_16_8.svg b/icon-themes/breeze_dark_svg/res/otp_16_8.svg
index 425ab4a63579..0f7f3ea8059c 100644
--- a/icon-themes/breeze_dark_svg/res/otp_16_8.svg
+++ b/icon-themes/breeze_dark_svg/res/otp_16_8.svg
@@ -1 +1 @@
-<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m2 2v9h4v2h-1v1h6v-1h-1v-2h4v-9zm1 1h10v7h-10zm4 1v5l3-2.5zm0 7h2v2h-2z" fill="#b3b3b3"/></svg> \ No newline at end of file
+<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m2 1.5v2h-1v11h14v-11h-1v-2zm1 1h10v1h-10zm-1 2h12v9h-12zm7 .5v3h3c0-1.6568542-1.343146-3-3-3zm-1 1c-1.6568542 0-3 1.3431458-3 3 0 1.656854 1.3431458 3 3 3s3-1.343146 3-3h-3z" fill="#b3b3b3" opacity=".9"/></svg> \ No newline at end of file
diff --git a/icon-themes/breeze_dark_svg/res/otp_32_8.svg b/icon-themes/breeze_dark_svg/res/otp_32_8.svg
index 7e0a373068d6..2ef48809d3a9 100644
--- a/icon-themes/breeze_dark_svg/res/otp_32_8.svg
+++ b/icon-themes/breeze_dark_svg/res/otp_32_8.svg
@@ -1 +1 @@
-<svg height="32" width="32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientTransform="matrix(1 0 0 -1 357.57142 555.79793)" gradientUnits="userSpaceOnUse" x1="47" x2="54" y1="17" y2="24"><stop offset="0" stop-color="#060606"/><stop offset="1" stop-opacity="0"/></linearGradient><linearGradient id="b" gradientTransform="matrix(0 .48275841 -.48275841 0 419.53694 512.72901)" gradientUnits="userSpaceOnUse" x1="54" x2="39.500008" y1="31" y2="16.500048"><stop offset="0" stop-color="#383e51"/><stop offset="1" stop-color="#655c6f" stop-opacity="0"/></linearGradient><g transform="matrix(1 0 0 -1 -384.57143 547.79797)"><path d="m389.57144 517.79801v27.99999h14.99999l7.00003-7-.00003-14.24137v-6.75862h-7z" fill="#662d0e"/><g transform="matrix(1 0 0 -1 .001423 1063.598)"><use fill="#662d0e" height="100%" width="100%" xlink:href="#b"/><g fill="#fff"><path d="m391.57 517.8v1.998h-1.998v1h1.998v2h-1.998v1h1.998v2h-1.998v1h1.998v2h-1.998v1h1.998v2h-1.998v1h1.998v2h-1.998v1h1.998v2h-1.998v1h1.998v2h-1.998v1h1.998v2h-1.998v1h1.998v1h1v-1h2v1h1v-1h2v1h1v-1h2v1h1v-1h2v1h1v-1h2v1h1v-1h2v1h1v-1h1v-1h-1v-2h1v-1h-1v-2h1v-1h-1v-2h1v-1h-1v-2h1v-1h-1v-2h1v-1h-1v-2h1v-1h-1v-2l-1-1h-2v-2l-1-1h-2v-1.998h-1v1.998h-2v-1.998h-1v1.998h-2v-1.998h-1v1.998h-2v-1.998h-1v1.998h-2v-1.998zm1 2.998h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-12 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-15 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-15 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-15 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-15 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-15 3h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm-15 3h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1z" opacity=".1"/><path d="m389.57001-518.79999h15v1h-15z" opacity=".5" transform="scale(1 -1)"/></g><path d="m389.57001-545.79999h22v1h-22z" opacity=".25" transform="scale(1 -1)"/></g><path d="m411.57144 538.798-7.00001 7v-7z" fill="#ee9463" fill-rule="evenodd"/><path d="m411.5714 531.79797-6.99997 7h7z" fill="url(#b)" fill-rule="evenodd" opacity=".2"/><path d="m394.57143 536.798v-9h4v-2h-1v-1h6v1h-1v2h4v9zm1-1h10v-7h-10zm4-1v-5l3 2.5zm0-7h2v-2h-2z" fill="#ee9463"/><path d="m404.57142 538.79793 7-7v7z" fill="url(#a)" fill-rule="evenodd" opacity=".2"/></g></svg> \ No newline at end of file
+<svg height="32" width="32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientTransform="matrix(1 0 0 -1 357.57142 555.79793)" gradientUnits="userSpaceOnUse" x1="47" x2="54" y1="17" y2="24"><stop offset="0" stop-color="#060606"/><stop offset="1" stop-opacity="0"/></linearGradient><linearGradient id="b" gradientTransform="matrix(0 .48275841 -.48275841 0 419.53694 512.72901)" gradientUnits="userSpaceOnUse" x1="54" x2="39.500008" y1="31" y2="16.500048"><stop offset="0" stop-color="#383e51"/><stop offset="1" stop-color="#655c6f" stop-opacity="0"/></linearGradient><g transform="matrix(1 0 0 -1 -384.57143 547.79797)"><path d="m389.57144 517.79801v27.99999h14.99999l7.00003-7-.00003-14.24137v-6.75862h-7z" fill="#662d0e"/><g transform="matrix(1 0 0 -1 .001423 1063.598)"><use fill="#662d0e" height="100%" width="100%" xlink:href="#b"/><g fill="#fff"><path d="m391.57 517.8v1.998h-1.998v1h1.998v2h-1.998v1h1.998v2h-1.998v1h1.998v2h-1.998v1h1.998v2h-1.998v1h1.998v2h-1.998v1h1.998v2h-1.998v1h1.998v2h-1.998v1h1.998v2h-1.998v1h1.998v1h1v-1h2v1h1v-1h2v1h1v-1h2v1h1v-1h2v1h1v-1h2v1h1v-1h2v1h1v-1h1v-1h-1v-2h1v-1h-1v-2h1v-1h-1v-2h1v-1h-1v-2h1v-1h-1v-2h1v-1h-1v-2h1v-1h-1v-2l-1-1h-2v-2l-1-1h-2v-1.998h-1v1.998h-2v-1.998h-1v1.998h-2v-1.998h-1v1.998h-2v-1.998h-1v1.998h-2v-1.998zm1 2.998h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-12 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-15 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-15 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-15 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-15 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-15 3h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm-15 3h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1z" opacity=".1"/><path d="m389.57001-518.79999h15v1h-15z" opacity=".5" transform="scale(1 -1)"/></g><path d="m389.57001-545.79999h22v1h-22z" opacity=".25" transform="scale(1 -1)"/></g><g fill-rule="evenodd"><path d="m411.57144 538.798-7.00001 7v-7z" fill="#ee9463"/><path d="m411.5714 531.79797-6.99997 7h7z" fill="url(#b)" opacity=".2"/><path d="m404.57142 538.79793 7-7v7z" fill="url(#a)" opacity=".2"/></g><path d="m394.57143 537.79797v-2h-1v-11h14v11h-1v2zm1-1h10v-1h-10zm-1-2h12v-9h-12zm7-1v-3h3c0 1.65685-1.34315 3-3 3zm-1-1c-1.65685 0-3-1.34315-3-3s1.34315-3 3-3 3 1.34315 3 3h-3z" fill="#ee9463" opacity=".9"/></g></svg> \ No newline at end of file
diff --git a/icon-themes/breeze_dark_svg/res/otp_48_8.svg b/icon-themes/breeze_dark_svg/res/otp_48_8.svg
index ddca2346b7c8..63943d9947a6 100644
--- a/icon-themes/breeze_dark_svg/res/otp_48_8.svg
+++ b/icon-themes/breeze_dark_svg/res/otp_48_8.svg
@@ -1 +1 @@
-<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientTransform="matrix(0 -.72413762 -.72413762 0 437.51968 552.40144)" gradientUnits="userSpaceOnUse" x1="54" x2="39.500008" y1="31" y2="16.500048"><stop offset="0" stop-color="#383e51"/><stop offset="1" stop-color="#655c6f" stop-opacity="0"/></linearGradient><g transform="translate(-384.57143 -499.798)"><path d="m392.57143 544.798v-41.99999l22-.00001 11.00005 11.00001-.00007 20.86206v10.13793h-10.5z" fill="#662d0e" stroke-width="1.5"/><path d="m9 3v2h-.9980469v.9980469h.9980469v2h-.9980469v1h.9980469v2.0000001h-.9980469v1h.9980469v2h-.9980469v1h.9980469v2h-.9980469v.998047.002h.9980469v1.998047h-.9980469v.002.998047.002h.9980469v1.998047h-.9980469v.002.998047.002h.9980469v1.998047h-.9980469v.002.998047.002h.9980469v1.998047h-.9980469v.002.998047.002h.9980469v1.998047h-.9980469v1h.9980469v2h-.9980469v1h.9980469v2h-.9980469v1h.9980469v2.003483h-1v1h1v3h1v-3h2v3h1v-3h2v3h1v-3h2v3h1v-3h2v3h1v-3h2v3h1v-3h2v3h1v-3h2v3h1v-3h2v3h1v-3h1 1v3h1v-3h2v3h1v-3h1v-1h-1v-2h-1v2h-2v-2h-1v2h-1-1v-1-1h1v-.002h2 1 2 1v-.998h-1v-1-1h1v-.002-.998h-1v-1-1h1v-.002-.998h-1v-2h1v-.002-.998h-1v-2h1v-.002-.998h-1v-2h1v-.002-.998h-1v-2h1v-.002-.998h-1v-2h1v-.002-1h-1v-1.996094h1v-.001906-1h-1v-1l-1-1v2h-2v-2h1.5v-.5l-.5-.5h-1v-1l-1-1v2h-1v.002h-1v-2.0000469h1v-.0019531-1h-2v.00195h-2v-2h1v-.00195-1h-2-1-1v-2h-1v2h-1-1v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2zm23 3.0019531v1.9980469h1v-1.9980469zm-22-.0019531h2v2h-2v-.00195zm3 0h2v2h-2zm3 0h2v2h-2zm3 .00195h2v1.99805h-2zm3 0h2v1.99805h-2zm3 0h2v2h-1v-.00195h-1zm3 0h2v2h-2zm-18 2.99805h2v2h-2v-.002zm3 0h2v2h-2zm3 0h2v2h-2zm3 .00195h2v1.99805h-2zm3 0h2v1.99805h-2zm3 0h2v2.000003h-1v-.001953h-1zm3 0h2v2h-2zm3 0h2v2.000003h-2zm-21 2.99805h2v2h-2v-.002zm3 0h2v2h-2zm3 0h2v2h-2zm19 0h1v1.998047h-1v.001953h-1v-1.998047h1zm-16 .002h2v1.998h-2zm3 0h2v1.998h-2zm3 0h2v1.998h-1-1zm3 0h2v1.998h-2zm3 0h2v1.998h-2zm-21 2.998h2v2h-2v-.002zm3 0h2v1.998047h-2zm3 0h2v1.998047h-2zm19 0h1v2h-2v-1.998047h1zm2 0h2v2h-1-1zm-18 .002h2v1.996094h-2zm3 0h2v1.996094h-2zm3 0h2v1.996094h-1-1zm3 0h2v1.996094h-1-1zm3 0h2v1.998h-1v-.002h-1zm-21 2.998h2v2h-2v-.0039zm3 0h2v1.998047h-2zm3 0h2v1.998047h-2zm19 0h1v2h-1v-.002h-1v-1.996094h1zm2 0h2v2h-2zm-18 .002h2v1.996094h-2zm3 0h2v1.996094h-2zm3 0h2v1.998h-1v-.002h-1zm3 0h2v1.998h-2zm3 0h2v1.998h-1-1zm-21 2.998h2v2h-2v-.0039zm3 0h2v1.998047h-2zm3 0h2v1.998047h-2zm19 0h1v2h-1-1v-1.998047h1zm2 0h2v2h-2zm-18 .002h2v1.996094h-2zm3 0h2v1.996094h-2zm3 0h2v1.998h-1v-.002h-1zm3 0h2v1.998h-2zm3 0h2v1.998h-2zm-21 2.998h2v2h-2v-.0039zm3 0h2v1.998047h-2v-.998047zm3 0h2v1.998047h-2v-.998047zm19 0h1v2h-1-1v-.998047-1h1zm2 0h2v2h-2zm-18 .002h2v1.996094h-2v-.998094zm3 0h2v1.996094h-2v-.996141-.001953zm3 0h2v1.998h-1v-.002h-1v-.996047-.001953zm3 0h2v1.998h-2v-.998047zm3 0h2v1.998h-2v-.998047zm-21 2.998h2v2h-2v-.0039zm3 0h2v1.998047h-2v-.998047zm3 0h2v1.998047h-2v-.998047zm19 0h1v2h-1-1v-.998047-1h1zm2 0h2v2h-2zm-18 .002h2v1.996094h-2v-.998094zm3 0h2v1.996094h-2v-.996141-.001953zm3 0h2v1.998h-1v-.002h-1v-.996047-.001953zm3 0h2v1.998h-2v-.998047zm3 0h2v1.998h-2v-.998047zm-21 2.994141h2v2h-2v-1.998047zm4 .002h1v2h-2v-1.998141h1zm3 0h1v2h-2v-1.998141h1zm2 .001859h1 1v1.998047h-2zm3 0h1 1v1.998047h-2zm3 0h1 1v2h-1v-.002h-1zm3 0h1 1v2h-2zm3 0h1 1v2h-2zm3 0h1 1v2h-1-1zm3 0h2v2h-2zm-27 2.996094h2v2h-2zm3 .002h2v2h-2zm3 0h2v2h-2zm3 .001906h2v1.998047h-2zm3 0h2v1.998047h-2zm3 0h2v2h-1v-.002h-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h1 1v2h-1-1v-1zm3 0h2v2h-2v-1zm-24 2.998047h2v2h-2v-1zm3 0h2v2h-2v-1zm-6 .001953h2v2h-2v-.0039zm9 0h2v1.998047h-2v-1zm3 0h2v1.998047h-2v-.998047-.002zm3 0h2v2h-1v-.002h-1v-.998-.002zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h1 1v2h-1-1v-1zm3 0h2v2h-2v-1zm-24 2.998047h2v2.001953h-2v-1.001953zm3 0h2v2.001953h-2v-1.001953zm-6 .001953h2v2h-2zm9 0h2v2h-2v-1.001953zm3 0h2v2h-2v-1-.002zm3 0h2v2h-2v-1-.002zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1z" fill="#fff" opacity=".1" stroke-width="1.5" transform="translate(384.57143 499.798)"/><path d="m392.57143 543.798h33l-.00002 1h-33z" fill="#2e3132" fill-opacity=".294118" stroke-width="1.816591"/><path d="m392.57141 502.798 22.00002-.00001v1.00001l-22.00002.00001z" fill="#fff" fill-opacity=".409836" stroke-width="1.238585"/><path d="m425.57145 513.79801-11.00002-11.00001.00002 11.00001z" fill="#ee9463" fill-rule="evenodd"/><path d="m425.57143 524.798-11-11h11z" fill="url(#a)" fill-rule="evenodd" opacity=".2" stroke-width="1.5"/><path d="m399.57143 516.798v13h7v3h-2v1h9v-1h-2v-3h7v-13zm1 1h17v11h-17zm7 1.5v8l4.5-4zm0 10.5h3v3h-3z" fill="#ee9463"/></g></svg> \ No newline at end of file
+<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientTransform="matrix(0 -.72413762 -.72413762 0 437.51968 552.40144)" gradientUnits="userSpaceOnUse" x1="54" x2="39.500008" y1="31" y2="16.500048"><stop offset="0" stop-color="#383e51"/><stop offset="1" stop-color="#655c6f" stop-opacity="0"/></linearGradient><g transform="translate(-384.57143 -499.798)"><path d="m392.57143 544.798v-41.99999l22-.00001 11.00005 11.00001-.00007 20.86206v10.13793h-10.5z" fill="#662d0e" stroke-width="1.5"/><path d="m9 3v2h-.9980469v.9980469h.9980469v2h-.9980469v1h.9980469v2.0000001h-.9980469v1h.9980469v2h-.9980469v1h.9980469v2h-.9980469v.998047.002h.9980469v1.998047h-.9980469v.002.998047.002h.9980469v1.998047h-.9980469v.002.998047.002h.9980469v1.998047h-.9980469v.002.998047.002h.9980469v1.998047h-.9980469v.002.998047.002h.9980469v1.998047h-.9980469v1h.9980469v2h-.9980469v1h.9980469v2h-.9980469v1h.9980469v2.003483h-1v1h1v3h1v-3h2v3h1v-3h2v3h1v-3h2v3h1v-3h2v3h1v-3h2v3h1v-3h2v3h1v-3h2v3h1v-3h2v3h1v-3h1 1v3h1v-3h2v3h1v-3h1v-1h-1v-2h-1v2h-2v-2h-1v2h-1-1v-1-1h1v-.002h2 1 2 1v-.998h-1v-1-1h1v-.002-.998h-1v-1-1h1v-.002-.998h-1v-2h1v-.002-.998h-1v-2h1v-.002-.998h-1v-2h1v-.002-.998h-1v-2h1v-.002-.998h-1v-2h1v-.002-1h-1v-1.996094h1v-.001906-1h-1v-1l-1-1v2h-2v-2h1.5v-.5l-.5-.5h-1v-1l-1-1v2h-1v.002h-1v-2.0000469h1v-.0019531-1h-2v.00195h-2v-2h1v-.00195-1h-2-1-1v-2h-1v2h-1-1v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2zm23 3.0019531v1.9980469h1v-1.9980469zm-22-.0019531h2v2h-2v-.00195zm3 0h2v2h-2zm3 0h2v2h-2zm3 .00195h2v1.99805h-2zm3 0h2v1.99805h-2zm3 0h2v2h-1v-.00195h-1zm3 0h2v2h-2zm-18 2.99805h2v2h-2v-.002zm3 0h2v2h-2zm3 0h2v2h-2zm3 .00195h2v1.99805h-2zm3 0h2v1.99805h-2zm3 0h2v2.000003h-1v-.001953h-1zm3 0h2v2h-2zm3 0h2v2.000003h-2zm-21 2.99805h2v2h-2v-.002zm3 0h2v2h-2zm3 0h2v2h-2zm19 0h1v1.998047h-1v.001953h-1v-1.998047h1zm-16 .002h2v1.998h-2zm3 0h2v1.998h-2zm3 0h2v1.998h-1-1zm3 0h2v1.998h-2zm3 0h2v1.998h-2zm-21 2.998h2v2h-2v-.002zm3 0h2v1.998047h-2zm3 0h2v1.998047h-2zm19 0h1v2h-2v-1.998047h1zm2 0h2v2h-1-1zm-18 .002h2v1.996094h-2zm3 0h2v1.996094h-2zm3 0h2v1.996094h-1-1zm3 0h2v1.996094h-1-1zm3 0h2v1.998h-1v-.002h-1zm-21 2.998h2v2h-2v-.0039zm3 0h2v1.998047h-2zm3 0h2v1.998047h-2zm19 0h1v2h-1v-.002h-1v-1.996094h1zm2 0h2v2h-2zm-18 .002h2v1.996094h-2zm3 0h2v1.996094h-2zm3 0h2v1.998h-1v-.002h-1zm3 0h2v1.998h-2zm3 0h2v1.998h-1-1zm-21 2.998h2v2h-2v-.0039zm3 0h2v1.998047h-2zm3 0h2v1.998047h-2zm19 0h1v2h-1-1v-1.998047h1zm2 0h2v2h-2zm-18 .002h2v1.996094h-2zm3 0h2v1.996094h-2zm3 0h2v1.998h-1v-.002h-1zm3 0h2v1.998h-2zm3 0h2v1.998h-2zm-21 2.998h2v2h-2v-.0039zm3 0h2v1.998047h-2v-.998047zm3 0h2v1.998047h-2v-.998047zm19 0h1v2h-1-1v-.998047-1h1zm2 0h2v2h-2zm-18 .002h2v1.996094h-2v-.998094zm3 0h2v1.996094h-2v-.996141-.001953zm3 0h2v1.998h-1v-.002h-1v-.996047-.001953zm3 0h2v1.998h-2v-.998047zm3 0h2v1.998h-2v-.998047zm-21 2.998h2v2h-2v-.0039zm3 0h2v1.998047h-2v-.998047zm3 0h2v1.998047h-2v-.998047zm19 0h1v2h-1-1v-.998047-1h1zm2 0h2v2h-2zm-18 .002h2v1.996094h-2v-.998094zm3 0h2v1.996094h-2v-.996141-.001953zm3 0h2v1.998h-1v-.002h-1v-.996047-.001953zm3 0h2v1.998h-2v-.998047zm3 0h2v1.998h-2v-.998047zm-21 2.994141h2v2h-2v-1.998047zm4 .002h1v2h-2v-1.998141h1zm3 0h1v2h-2v-1.998141h1zm2 .001859h1 1v1.998047h-2zm3 0h1 1v1.998047h-2zm3 0h1 1v2h-1v-.002h-1zm3 0h1 1v2h-2zm3 0h1 1v2h-2zm3 0h1 1v2h-1-1zm3 0h2v2h-2zm-27 2.996094h2v2h-2zm3 .002h2v2h-2zm3 0h2v2h-2zm3 .001906h2v1.998047h-2zm3 0h2v1.998047h-2zm3 0h2v2h-1v-.002h-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h1 1v2h-1-1v-1zm3 0h2v2h-2v-1zm-24 2.998047h2v2h-2v-1zm3 0h2v2h-2v-1zm-6 .001953h2v2h-2v-.0039zm9 0h2v1.998047h-2v-1zm3 0h2v1.998047h-2v-.998047-.002zm3 0h2v2h-1v-.002h-1v-.998-.002zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h1 1v2h-1-1v-1zm3 0h2v2h-2v-1zm-24 2.998047h2v2.001953h-2v-1.001953zm3 0h2v2.001953h-2v-1.001953zm-6 .001953h2v2h-2zm9 0h2v2h-2v-1.001953zm3 0h2v2h-2v-1-.002zm3 0h2v2h-2v-1-.002zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1z" fill="#fff" opacity=".1" stroke-width="1.5" transform="translate(384.57143 499.798)"/><path d="m392.57143 543.798h33l-.00002 1h-33z" fill="#2e3132" fill-opacity=".294118" stroke-width="1.816591"/><path d="m392.57141 502.798 22.00002-.00001v1.00001l-22.00002.00001z" fill="#fff" fill-opacity=".409836" stroke-width="1.238585"/><path d="m425.57145 513.79801-11.00002-11.00001.00002 11.00001z" fill="#ee9463" fill-rule="evenodd"/><path d="m425.57143 524.798-11-11h11z" fill="url(#a)" fill-rule="evenodd" opacity=".2" stroke-width="1.5"/><path d="m400.57143 516.798v3h-1v14h19v-14h-1v-3zm1 1h15v2h-15zm-1 3h17v12h-17zm9 1v4h4c0-2.20914-1.79086-4-4-4zm-1 1c-2.20914 0-4 1.79086-4 4s1.79086 4 4 4 4-1.79086 4-4h-4zm-1 1.17383v3.82617h3.82422c-.42327 1.19718-1.55442 1.99822-2.82422 2-1.65685 0-3-1.34315-3-3 .00095-1.27052.80214-2.40267 2-2.82617z" fill="#ee9463" opacity=".9" stroke-width="1.357143"/></g></svg> \ No newline at end of file
diff --git a/icon-themes/breeze_dark_svg/res/otp_96_8.svg b/icon-themes/breeze_dark_svg/res/otp_96_8.svg
index 9df276a11fb6..8ee66aa7add7 100644
--- a/icon-themes/breeze_dark_svg/res/otp_96_8.svg
+++ b/icon-themes/breeze_dark_svg/res/otp_96_8.svg
@@ -1 +1 @@
-<svg height="96" width="96" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientTransform="matrix(0 -1.3636364 -1.3793103 0 101.4483 1057.0894)" gradientUnits="userSpaceOnUse" x1="54.066666" x2="40" y1="30.775019" y2="17"><stop offset="0" stop-color="#383e51"/><stop offset="1" stop-color="#655c6f" stop-opacity="0"/></linearGradient><g transform="translate(0 -956.3622)"><path d="m18 1044.3622v-80.00002h41l19.000002 19v61.00002z" fill="#662d0e"/><path d="m78.000002 983.36218-19.000002-19v19z" fill="#ee9463" fill-rule="evenodd"/><path d="m78 1002.544-19-19.18182h19z" fill="url(#a)" fill-rule="evenodd" opacity=".2"/><path d="m30 991.3622v1.2069 24.7931h1.363636 13.636364v3h-4v1l4.272728.034h5.454546l4.272726-.034v-1h-4v-3h15v-2.7586-23.2414zm1 1h34v24h-34zm14 6v11l7-5.5z" fill="#ee9463"/><path d="m20 8v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2-1-2-1-2-1-2-1-2-1-2-1-1.310547-.689453-1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-1l-1-1v2h-2v-2h2l-1-1h-1v-1l-1-1v2h-2v-2h2l-1-1h-1v-1l-1-1v2h-2v-2h2l-1-1h-1v-1l-1-1v2h-2v-2h2l-1-1h-1v-1l-1-1v2h-2v-2h2l-1-1h-1v-1l-1-1v2h-2v-2h2l-1-1h-1v-1l-1-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2zm1 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-36 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-39 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-42 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-45 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-48 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-51 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2z" fill="#fff" opacity=".1" transform="translate(0 956.3622)"/><path d="m18 1044.3622h60v-1h-60z" fill="#2e3132" fill-opacity=".294118" stroke-width="1.209717"/><path d="m18 965.36218h41v-1h-41z" fill="#fff" fill-opacity=".409836" stroke-width=".82664"/></g></svg> \ No newline at end of file
+<svg height="96" width="96" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientTransform="matrix(0 -1.3636364 -1.3793103 0 101.4483 1057.0894)" gradientUnits="userSpaceOnUse" x1="54.066666" x2="40" y1="30.775019" y2="17"><stop offset="0" stop-color="#383e51"/><stop offset="1" stop-color="#655c6f" stop-opacity="0"/></linearGradient><g transform="translate(0 -956.3622)"><path d="m18 1044.3622v-80.00002h41l19.000002 19v61.00002z" fill="#662d0e"/><path d="m78.000002 983.36218-19.000002-19v19z" fill="#ee9463" fill-rule="evenodd"/><path d="m78 1002.544-19-19.18182h19z" fill="url(#a)" fill-rule="evenodd" opacity=".2"/><path d="m20 8v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2-1-2-1-2-1-2-1-2-1-2-1-1.310547-.689453-1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-1l-1-1v2h-2v-2h2l-1-1h-1v-1l-1-1v2h-2v-2h2l-1-1h-1v-1l-1-1v2h-2v-2h2l-1-1h-1v-1l-1-1v2h-2v-2h2l-1-1h-1v-1l-1-1v2h-2v-2h2l-1-1h-1v-1l-1-1v2h-2v-2h2l-1-1h-1v-1l-1-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2zm1 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-36 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-39 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-42 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-45 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-48 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-51 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2z" fill="#fff" opacity=".1" transform="translate(0 956.3622)"/><path d="m18 1044.3622h60v-1h-60z" fill="#2e3132" fill-opacity=".294118" stroke-width="1.209717"/><path d="m18 965.36218h41v-1h-41z" fill="#fff" fill-opacity=".409836" stroke-width=".82664"/><path d="m33 991.3622v3l-3 .0332v26.9668l36-.018v-26.9824h-3v-3zm1 1h28v2h-28zm-3 3h34v24.9824l-34 .018zm18 6v6h6a6 6 0 0 0 -6-6zm-1 1c-3.313708 0-6 2.6863-6 6s2.686292 6 6 6 6-2.6863 6-6h-6zm-1 1.1055v5.8945h5.898438c-.475151 2.3278-2.522682 3.9997-4.898438 4-2.761424 0-5-2.2386-5-5 .0021-2.3743 1.673681-4.4197 4-4.8945z" fill="#f09e72" stroke-width="1.5"/></g></svg> \ No newline at end of file
diff --git a/icon-themes/breeze_dark_svg/res/sx03249.svg b/icon-themes/breeze_dark_svg/res/sx03249.svg
index 354c66743266..ea1d7f0d9df5 100644
--- a/icon-themes/breeze_dark_svg/res/sx03249.svg
+++ b/icon-themes/breeze_dark_svg/res/sx03249.svg
@@ -1 +1 @@
-<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m2 2v9h4v2h-1v1h6v-1h-1v-2h4v-9zm1 1h10v7h-10zm4 1v5l3-2.5zm0 7h2v2h-2z" fill="#f27935"/></svg> \ No newline at end of file
+<svg height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m2 1v2h-1v11h14v-11h-1v-2zm1 1h10v1h-10zm-1 2h12v9h-12zm7 1v3h3c0-1.6568542-1.343146-3-3-3zm-1 1c-1.6568542 0-3 1.3431458-3 3 0 1.656854 1.3431458 3 3 3s3-1.343146 3-3h-3z" fill="#ff8b23" opacity=".9"/></svg> \ No newline at end of file
diff --git a/icon-themes/breeze_svg/res/lx03249.svg b/icon-themes/breeze_svg/res/lx03249.svg
index d212eb72c3cb..3705dceeb371 100644
--- a/icon-themes/breeze_svg/res/lx03249.svg
+++ b/icon-themes/breeze_svg/res/lx03249.svg
@@ -1 +1 @@
-<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="m3 3v14h7v3h-2v1h8v-1h-2v-3h7v-14h-1-1-14-1zm1 1h16v12h-16zm5 2v8l7-4zm2 11h2v3h-2z" fill="#232629"/></svg> \ No newline at end of file
+<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="m4 4v2h-1v14h18v-14h-1v-2zm1 1h14v1h-14zm-1 2h9 7v12h-16zm9 0v5h5c0-2.7614237-2.238576-5-5-5zm-1 1c-2.7614237 0-5 2.238576-5 5s2.2385763 5 5 5c2.761424 0 5-2.238576 5-5h-1-4v-4zm-1 1.1308594v4.8691406h1 3.867188c-.455458 1.763986-2.045353 2.99736-3.867188 3-2.209139 0-4-1.790861-4-4 .0017511-1.822562 1.2353107-3.4135007 3-3.8691406z" fill="#232629"/></svg> \ No newline at end of file
diff --git a/icon-themes/breeze_svg/res/lx03249_32.svg b/icon-themes/breeze_svg/res/lx03249_32.svg
index 05ae47bae050..284ae4c06d8b 100644
--- a/icon-themes/breeze_svg/res/lx03249_32.svg
+++ b/icon-themes/breeze_svg/res/lx03249_32.svg
@@ -1 +1 @@
-<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path d="m6 4v21 .929688.070312 1 1h20v-1-1h-.003906l.003906-14v-3l-5-5-.919922.0136719v-.0136719h-1.371094-11.9648434zm1 1h11.964844v.0097656h.041015l-.005859 5.9902344 5.943359-.023438v.023438h.056641v11 3 2l-18 .005859v-.058593-1.94336-1-.0625h-.0058594zm3 8v9h4v2h-1v1h6v-1h-1v-2h4v-9zm1 1h10v7h-10zm4 1v5l3-2.5zm0 7h2v2h-2z" fill="#232629"/></svg> \ No newline at end of file
+<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path d="m6 4v24h20v-19l-5-5zm1 1h11.964844v.00977h.04102l-.005864 5.99023 5.943359-.023438v.023438h.056641v16l-18 .0059v-.05859zm3 7v2h-1v11h14v-11h-1v-2zm1 1h10v1h-10zm-1 2h12v9h-12zm7 1v3h3c0-1.656854-1.343146-3-3-3zm-1 1c-1.656854 0-3 1.343146-3 3s1.343146 3 3 3 3-1.343146 3-3h-3zm-1 1.271484v2.728516h2.730469c-.356983.618313-1.016503.999435-1.730469 1-1.104569 0-2-.895431-2-2 .0013-.713268.38229-1.371883 1-1.728516z" fill="#232629"/></svg> \ No newline at end of file
diff --git a/icon-themes/breeze_svg/res/lx03253.svg b/icon-themes/breeze_svg/res/lx03253.svg
index 8973112e39c6..6e7f88259996 100644
--- a/icon-themes/breeze_svg/res/lx03253.svg
+++ b/icon-themes/breeze_svg/res/lx03253.svg
@@ -1 +1 @@
-<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path d="m6 4v21 .929688.070312 1 1h20v-1-1h-.003906l.003906-14v-3l-5-5-.919922.0136719v-.0136719h-1.371094-11.9648434zm1 1h11.964844v.0097656h.041015l-.005859 5.9902344 5.943359-.023438v.023438h.056641v11 3 2l-18 .005859v-.058593-1.94336-1-.0625h-.0058594zm3 8v9h4v2h-1v1h6v-1h-1v-2h4v-9zm1 1h10v7h-10zm4 1v5l3-2.5zm0 7h2v2h-2z" fill="#b3b3b3"/></svg> \ No newline at end of file
+<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path d="m6 4v21 .929688.070312 1 1h20v-1-1h-.003906l.003906-14v-3l-5-5-.919922.0136719v-.0136719h-1.371094-11.9648434zm1 1h11.964844v.0097656h.041015l-.005859 5.9902344 5.943359-.023438v.023438h.056641v11 3 2l-18 .005859v-.058593-1.94336-1-.0625h-.0058594zm3 7v2h-1v11h14v-11h-1v-2zm1 1h10v1h-10zm-1 2h12v9h-12zm7 1v3h3c0-1.656854-1.343146-3-3-3zm-1 1c-1.656854 0-3 1.343146-3 3s1.343146 3 3 3 3-1.343146 3-3h-3zm-1 1.271484v2.728516h2.730469c-.356983.618313-1.016503.999435-1.730469 1-1.104569 0-2-.895431-2-2 .0013-.713268.38229-1.371883 1-1.728516z" fill="#b3b3b3"/></svg> \ No newline at end of file
diff --git a/icon-themes/breeze_svg/res/odp_16_8.svg b/icon-themes/breeze_svg/res/odp_16_8.svg
index 354c66743266..ea1d7f0d9df5 100644
--- a/icon-themes/breeze_svg/res/odp_16_8.svg
+++ b/icon-themes/breeze_svg/res/odp_16_8.svg
@@ -1 +1 @@
-<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m2 2v9h4v2h-1v1h6v-1h-1v-2h4v-9zm1 1h10v7h-10zm4 1v5l3-2.5zm0 7h2v2h-2z" fill="#f27935"/></svg> \ No newline at end of file
+<svg height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m2 1v2h-1v11h14v-11h-1v-2zm1 1h10v1h-10zm-1 2h12v9h-12zm7 1v3h3c0-1.6568542-1.343146-3-3-3zm-1 1c-1.6568542 0-3 1.3431458-3 3 0 1.656854 1.3431458 3 3 3s3-1.343146 3-3h-3z" fill="#ff8b23" opacity=".9"/></svg> \ No newline at end of file
diff --git a/icon-themes/breeze_svg/res/odp_32_8.svg b/icon-themes/breeze_svg/res/odp_32_8.svg
index aee44f6a499b..157c9703ca21 100644
--- a/icon-themes/breeze_svg/res/odp_32_8.svg
+++ b/icon-themes/breeze_svg/res/odp_32_8.svg
@@ -1 +1 @@
-<svg height="32" width="32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientTransform="matrix(.49999977 0 0 .48275841 384.57144 516.34974)" gradientUnits="userSpaceOnUse" x1="29.999994" x2="29.999994" y1="2.999906" y2="60.999931"><stop offset="0" stop-color="#f27935"/><stop offset="1" stop-color="#f2784b"/></linearGradient><linearGradient id="b" gradientUnits="userSpaceOnUse" x1="407.57144" x2="407.57144" y1="538.79797" y2="545.79797"><stop offset="0" stop-color="#f7ab89"/><stop offset="1" stop-color="#fbd2bf"/></linearGradient><linearGradient id="c" gradientTransform="matrix(0 .48275841 -.48275841 0 419.53694 512.72901)" gradientUnits="userSpaceOnUse" x1="54" x2="39.500008" y1="31" y2="16.500048"><stop offset="0" stop-color="#383e51"/><stop offset="1" stop-color="#655c6f" stop-opacity="0"/></linearGradient><g transform="matrix(1 0 0 -1 -384.57143 547.79797)"><path d="m389.57144 517.79801v27.99999h14.99999l7.00003-7-.00003-14.24137v-6.75862h-7z" fill="url(#a)"/><path d="m389.57143 517.798h22v.99997h-22z" fill="#2e3132" fill-opacity=".294118" stroke-width="1.211061"/><path d="m389.57143 544.79794h15v1.00003h-15z" fill="#fff" fill-opacity=".409836" stroke-width=".825723"/><path d="m411.57144 538.798-7.00001 7v-7z" fill="url(#b)" fill-rule="evenodd"/><path d="m411.5714 531.79797-6.99997 7h7z" fill="url(#c)" fill-rule="evenodd" opacity=".2"/><path d="m394.57143 536.798v-9h4v-2h-1v-1h6v1h-1v2h4v9zm1-1h10v-7h-10zm4-1v-5l3 2.5zm0-7h2v-2h-2z" fill="#fef2ec"/></g></svg> \ No newline at end of file
+<svg height="32" width="32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientTransform="matrix(.49999977 0 0 .48275841 384.57144 516.34974)" gradientUnits="userSpaceOnUse" x1="29.999994" x2="29.999994" y1="2.999906" y2="60.999931"><stop offset="0" stop-color="#f27935"/><stop offset="1" stop-color="#f2784b"/></linearGradient><linearGradient id="b" gradientUnits="userSpaceOnUse" x1="407.57144" x2="407.57144" y1="538.79797" y2="545.79797"><stop offset="0" stop-color="#f7ab89"/><stop offset="1" stop-color="#fbd2bf"/></linearGradient><linearGradient id="c" gradientTransform="matrix(0 .48275841 -.48275841 0 419.53694 512.72901)" gradientUnits="userSpaceOnUse" x1="54" x2="39.500008" y1="31" y2="16.500048"><stop offset="0" stop-color="#383e51"/><stop offset="1" stop-color="#655c6f" stop-opacity="0"/></linearGradient><g transform="matrix(1 0 0 -1 -384.57143 547.79797)"><path d="m389.57144 517.79801v27.99999h14.99999l7.00003-7-.00003-14.24137v-6.75862h-7z" fill="url(#a)"/><path d="m389.57143 517.798h22v.99997h-22z" fill="#2e3132" fill-opacity=".294118" stroke-width="1.211061"/><path d="m389.57143 544.79794h15v1.00003h-15z" fill="#fff" fill-opacity=".409836" stroke-width=".825723"/><path d="m411.57144 538.798-7.00001 7v-7z" fill="url(#b)" fill-rule="evenodd"/><path d="m411.5714 531.79797-6.99997 7h7z" fill="url(#c)" fill-rule="evenodd" opacity=".2"/><path d="m10 10v2h-1v11h14v-11h-1v-2zm1 1h10v1h-10zm-1 2h12v9h-12zm7 1v3h3c0-1.65685-1.34315-3-3-3zm-1 1c-1.65685 0-3 1.34315-3 3s1.34315 3 3 3 3-1.34315 3-3h-3z" fill="#fff" opacity=".9" transform="matrix(1 0 0 -1 384.57143 547.79797)"/></g></svg> \ No newline at end of file
diff --git a/icon-themes/breeze_svg/res/odp_48_8.svg b/icon-themes/breeze_svg/res/odp_48_8.svg
index aaa7ecb0b2eb..91f31e59bd5a 100644
--- a/icon-themes/breeze_svg/res/odp_48_8.svg
+++ b/icon-themes/breeze_svg/res/odp_48_8.svg
@@ -1 +1 @@
-<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientTransform="matrix(.49999977 0 0 -.48275841 384.57144 547.24623)" gradientUnits="userSpaceOnUse" x1="392.57144" x2="425.57147" y1="523.79797" y2="523.79797"><stop offset="0" stop-color="#f27935"/><stop offset="1" stop-color="#f2784b"/></linearGradient><linearGradient id="b" gradientTransform="matrix(1 0 0 -1 0 1063.596)" gradientUnits="userSpaceOnUse" x1="414.57144" x2="425.57144" y1="508.298" y2="508.298"><stop offset="0" stop-color="#f7ab89"/><stop offset="1" stop-color="#fbd2bf"/></linearGradient><linearGradient id="c" gradientTransform="matrix(0 -.72413762 -.72413762 0 437.51968 552.40144)" gradientUnits="userSpaceOnUse" x1="54" x2="39.500008" y1="31" y2="16.500048"><stop offset="0" stop-color="#383e51"/><stop offset="1" stop-color="#655c6f" stop-opacity="0"/></linearGradient><g transform="translate(-384.57143 -499.798)"><path d="m392.57143 544.798v-41.99999l22-.00001 11.00005 11.00001-.00007 20.86206v10.13793h-10.5z" fill="url(#a)" stroke-width="1.5"/><path d="m392.57143 543.798h33l-.00002 1h-33z" fill="#2e3132" fill-opacity=".294118" stroke-width="1.816591"/><path d="m392.57141 502.798 22.00002-.00001.00002 1-22.00002.00001z" fill="#fff" fill-opacity=".409836" stroke-width="1.238585"/><g stroke-width="1.5"><path d="m425.57145 513.79801-11.00002-11.00001.00002 11.00001z" fill="url(#b)" fill-rule="evenodd"/><path d="m425.57143 524.798-11-11h11z" fill="url(#c)" fill-rule="evenodd" opacity=".2"/><path d="m399.57143 516.798v13h7v3h-2v1h9v-1h-2v-3h7v-13zm1 1h17v11h-17zm7 1.5v8l4.5-4zm0 10.5h3v3h-3z" fill="#fef2ec"/></g></g></svg> \ No newline at end of file
+<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientTransform="matrix(.49999977 0 0 -.48275841 384.57144 547.24623)" gradientUnits="userSpaceOnUse" x1="392.57144" x2="425.57147" y1="523.79797" y2="523.79797"><stop offset="0" stop-color="#f27935"/><stop offset="1" stop-color="#f2784b"/></linearGradient><linearGradient id="b" gradientTransform="matrix(1 0 0 -1 0 1063.596)" gradientUnits="userSpaceOnUse" x1="414.57144" x2="425.57144" y1="508.298" y2="508.298"><stop offset="0" stop-color="#f7ab89"/><stop offset="1" stop-color="#fbd2bf"/></linearGradient><linearGradient id="c" gradientTransform="matrix(0 -.72413762 -.72413762 0 437.51968 552.40144)" gradientUnits="userSpaceOnUse" x1="54" x2="39.500008" y1="31" y2="16.500048"><stop offset="0" stop-color="#383e51"/><stop offset="1" stop-color="#655c6f" stop-opacity="0"/></linearGradient><g transform="translate(-384.57143 -499.798)"><path d="m392.57143 544.798v-41.99999l22-.00001 11.00005 11.00001-.00007 20.86206v10.13793h-10.5z" fill="url(#a)" stroke-width="1.5"/><path d="m392.57143 543.798h33l-.00002 1h-33z" fill="#2e3132" fill-opacity=".294118" stroke-width="1.816591"/><path d="m392.57141 502.798 22.00002-.00001.00002 1-22.00002.00001z" fill="#fff" fill-opacity=".409836" stroke-width="1.238585"/><g fill-rule="evenodd" stroke-width="1.5"><path d="m425.57145 513.79801-11.00002-11.00001.00002 11.00001z" fill="url(#b)"/><path d="m425.57143 524.798-11-11h11z" fill="url(#c)" opacity=".2"/></g><path d="m16 17v3h-1v14h19v-14h-1v-3zm1 1h15v2h-15zm-1 3h17v12h-17zm9 1v4h4c0-2.209139-1.790861-4-4-4zm-1 1c-2.209139 0-4 1.790861-4 4s1.790861 4 4 4 4-1.790861 4-4h-4zm-1 1.173828v3.826172h3.824219c-.423267 1.197185-1.554415 1.998218-2.824219 2-1.656854 0-3-1.343146-3-3 .000955-1.270521.802141-2.402665 2-2.826172z" fill="#fff" opacity=".9" stroke-width="1.357143" transform="translate(384.57143 499.798)"/></g></svg> \ No newline at end of file
diff --git a/icon-themes/breeze_svg/res/odp_96_8.svg b/icon-themes/breeze_svg/res/odp_96_8.svg
index 4ae388d33048..495558b797c5 100644
--- a/icon-themes/breeze_svg/res/odp_96_8.svg
+++ b/icon-themes/breeze_svg/res/odp_96_8.svg
@@ -1 +1 @@
-<svg height="96" width="96" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientTransform="matrix(1.3636364 0 0 -1.3793103 4.363636 2004.8623)" gradientUnits="userSpaceOnUse" x1="48" x2="48" y1="1044.3622" y2="964.36218"><stop offset="0" stop-color="#f27935"/><stop offset="1" stop-color="#f2784b"/></linearGradient><linearGradient id="b" gradientTransform="matrix(1.3636364 0 0 -1.3793103 4.363636 2004.8623)" gradientUnits="userSpaceOnUse" x1="66" x2="66" y1="984.36218" y2="964.36218"><stop offset="0" stop-color="#f7ab89"/><stop offset="1" stop-color="#fbd2bf"/></linearGradient><linearGradient id="c" gradientTransform="matrix(0 -1.3636364 -1.3793103 0 101.4483 1057.0894)" gradientUnits="userSpaceOnUse" x1="54.066666" x2="40" y1="30.775019" y2="17"><stop offset="0" stop-color="#383e51"/><stop offset="1" stop-color="#655c6f" stop-opacity="0"/></linearGradient><g transform="translate(0 -956.3622)"><path d="m18 1044.3622v-80.00002h41l19.000002 19v61.00002z" fill="url(#a)"/><path d="m18 1044.3622h60v-1h-60z" fill="#2e3132" fill-opacity=".294118" stroke-width="1.209717"/><path d="m18 965.36218h41v-1h-41z" fill="#fff" fill-opacity=".409836" stroke-width=".82664"/><path d="m78.000002 983.36218-19.000002-19v19z" fill="url(#b)" fill-rule="evenodd"/><path d="m78 1002.544-19-19.18182h19z" fill="url(#c)" fill-rule="evenodd" opacity=".2"/><path d="m30 991.3622v1.2069 24.7931h1.363636 13.636364v3h-4v1l4.272728.034h5.454546l4.272726-.034v-1h-4v-3h15v-2.7586-23.2414zm1 1h34v24h-34zm14 6v11l7-5.5z" fill="#fde8de"/></g></svg> \ No newline at end of file
+<svg height="96" width="96" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientTransform="matrix(1.3636364 0 0 -1.3793103 4.363636 2004.8623)" gradientUnits="userSpaceOnUse" x1="48" x2="48" y1="1044.3622" y2="964.36218"><stop offset="0" stop-color="#f27935"/><stop offset="1" stop-color="#f2784b"/></linearGradient><linearGradient id="b" gradientTransform="matrix(1.3636364 0 0 -1.3793103 4.363636 2004.8623)" gradientUnits="userSpaceOnUse" x1="66" x2="66" y1="984.36218" y2="964.36218"><stop offset="0" stop-color="#f7ab89"/><stop offset="1" stop-color="#fbd2bf"/></linearGradient><linearGradient id="c" gradientTransform="matrix(0 -1.3636364 -1.3793103 0 101.4483 1057.0894)" gradientUnits="userSpaceOnUse" x1="54.066666" x2="40" y1="30.775019" y2="17"><stop offset="0" stop-color="#383e51"/><stop offset="1" stop-color="#655c6f" stop-opacity="0"/></linearGradient><g transform="translate(0 -956.3622)"><path d="m18 1044.3622v-80.00002h41l19.000002 19v61.00002z" fill="url(#a)"/><path d="m18 1044.3622h60v-1h-60z" fill="#2e3132" fill-opacity=".294118" stroke-width="1.209717"/><path d="m18 965.36218h41v-1h-41z" fill="#fff" fill-opacity=".409836" stroke-width=".82664"/><path d="m78.000002 983.36218-19.000002-19v19z" fill="url(#b)" fill-rule="evenodd"/><path d="m78 1002.544-19-19.18182h19z" fill="url(#c)" fill-rule="evenodd" opacity=".2"/><path d="m33 35v3l-3 .033203v26.966797l36-.017578v-26.982422h-3v-3zm1 1h28v2h-28zm-3 3h34v24.982422l-34 .017578zm18 6v6h6a6 6 0 0 0 -6-6zm-1 1c-3.313708 0-6 2.686292-6 6s2.686292 6 6 6 6-2.686292 6-6h-6zm-1 1.105469v5.894531h5.898438c-.475151 2.327756-2.522682 3.999743-4.898438 4-2.761424 0-5-2.238576-5-5 .0021-2.374288 1.673681-4.419674 4-4.894531z" fill="#fde8de" stroke-width="1.5" transform="translate(0 956.3622)"/></g></svg> \ No newline at end of file
diff --git a/icon-themes/breeze_svg/res/otp_16_8.svg b/icon-themes/breeze_svg/res/otp_16_8.svg
index 425ab4a63579..0f7f3ea8059c 100644
--- a/icon-themes/breeze_svg/res/otp_16_8.svg
+++ b/icon-themes/breeze_svg/res/otp_16_8.svg
@@ -1 +1 @@
-<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m2 2v9h4v2h-1v1h6v-1h-1v-2h4v-9zm1 1h10v7h-10zm4 1v5l3-2.5zm0 7h2v2h-2z" fill="#b3b3b3"/></svg> \ No newline at end of file
+<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m2 1.5v2h-1v11h14v-11h-1v-2zm1 1h10v1h-10zm-1 2h12v9h-12zm7 .5v3h3c0-1.6568542-1.343146-3-3-3zm-1 1c-1.6568542 0-3 1.3431458-3 3 0 1.656854 1.3431458 3 3 3s3-1.343146 3-3h-3z" fill="#b3b3b3" opacity=".9"/></svg> \ No newline at end of file
diff --git a/icon-themes/breeze_svg/res/otp_32_8.svg b/icon-themes/breeze_svg/res/otp_32_8.svg
index 7e0a373068d6..2ef48809d3a9 100644
--- a/icon-themes/breeze_svg/res/otp_32_8.svg
+++ b/icon-themes/breeze_svg/res/otp_32_8.svg
@@ -1 +1 @@
-<svg height="32" width="32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientTransform="matrix(1 0 0 -1 357.57142 555.79793)" gradientUnits="userSpaceOnUse" x1="47" x2="54" y1="17" y2="24"><stop offset="0" stop-color="#060606"/><stop offset="1" stop-opacity="0"/></linearGradient><linearGradient id="b" gradientTransform="matrix(0 .48275841 -.48275841 0 419.53694 512.72901)" gradientUnits="userSpaceOnUse" x1="54" x2="39.500008" y1="31" y2="16.500048"><stop offset="0" stop-color="#383e51"/><stop offset="1" stop-color="#655c6f" stop-opacity="0"/></linearGradient><g transform="matrix(1 0 0 -1 -384.57143 547.79797)"><path d="m389.57144 517.79801v27.99999h14.99999l7.00003-7-.00003-14.24137v-6.75862h-7z" fill="#662d0e"/><g transform="matrix(1 0 0 -1 .001423 1063.598)"><use fill="#662d0e" height="100%" width="100%" xlink:href="#b"/><g fill="#fff"><path d="m391.57 517.8v1.998h-1.998v1h1.998v2h-1.998v1h1.998v2h-1.998v1h1.998v2h-1.998v1h1.998v2h-1.998v1h1.998v2h-1.998v1h1.998v2h-1.998v1h1.998v2h-1.998v1h1.998v2h-1.998v1h1.998v1h1v-1h2v1h1v-1h2v1h1v-1h2v1h1v-1h2v1h1v-1h2v1h1v-1h2v1h1v-1h1v-1h-1v-2h1v-1h-1v-2h1v-1h-1v-2h1v-1h-1v-2h1v-1h-1v-2h1v-1h-1v-2h1v-1h-1v-2l-1-1h-2v-2l-1-1h-2v-1.998h-1v1.998h-2v-1.998h-1v1.998h-2v-1.998h-1v1.998h-2v-1.998h-1v1.998h-2v-1.998zm1 2.998h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-12 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-15 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-15 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-15 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-15 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-15 3h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm-15 3h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1z" opacity=".1"/><path d="m389.57001-518.79999h15v1h-15z" opacity=".5" transform="scale(1 -1)"/></g><path d="m389.57001-545.79999h22v1h-22z" opacity=".25" transform="scale(1 -1)"/></g><path d="m411.57144 538.798-7.00001 7v-7z" fill="#ee9463" fill-rule="evenodd"/><path d="m411.5714 531.79797-6.99997 7h7z" fill="url(#b)" fill-rule="evenodd" opacity=".2"/><path d="m394.57143 536.798v-9h4v-2h-1v-1h6v1h-1v2h4v9zm1-1h10v-7h-10zm4-1v-5l3 2.5zm0-7h2v-2h-2z" fill="#ee9463"/><path d="m404.57142 538.79793 7-7v7z" fill="url(#a)" fill-rule="evenodd" opacity=".2"/></g></svg> \ No newline at end of file
+<svg height="32" width="32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientTransform="matrix(1 0 0 -1 357.57142 555.79793)" gradientUnits="userSpaceOnUse" x1="47" x2="54" y1="17" y2="24"><stop offset="0" stop-color="#060606"/><stop offset="1" stop-opacity="0"/></linearGradient><linearGradient id="b" gradientTransform="matrix(0 .48275841 -.48275841 0 419.53694 512.72901)" gradientUnits="userSpaceOnUse" x1="54" x2="39.500008" y1="31" y2="16.500048"><stop offset="0" stop-color="#383e51"/><stop offset="1" stop-color="#655c6f" stop-opacity="0"/></linearGradient><g transform="matrix(1 0 0 -1 -384.57143 547.79797)"><path d="m389.57144 517.79801v27.99999h14.99999l7.00003-7-.00003-14.24137v-6.75862h-7z" fill="#662d0e"/><g transform="matrix(1 0 0 -1 .001423 1063.598)"><use fill="#662d0e" height="100%" width="100%" xlink:href="#b"/><g fill="#fff"><path d="m391.57 517.8v1.998h-1.998v1h1.998v2h-1.998v1h1.998v2h-1.998v1h1.998v2h-1.998v1h1.998v2h-1.998v1h1.998v2h-1.998v1h1.998v2h-1.998v1h1.998v2h-1.998v1h1.998v2h-1.998v1h1.998v1h1v-1h2v1h1v-1h2v1h1v-1h2v1h1v-1h2v1h1v-1h2v1h1v-1h2v1h1v-1h1v-1h-1v-2h1v-1h-1v-2h1v-1h-1v-2h1v-1h-1v-2h1v-1h-1v-2h1v-1h-1v-2h1v-1h-1v-2l-1-1h-2v-2l-1-1h-2v-1.998h-1v1.998h-2v-1.998h-1v1.998h-2v-1.998h-1v1.998h-2v-1.998h-1v1.998h-2v-1.998zm1 2.998h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-12 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-15 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-15 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-15 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-15 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-15 3h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm-15 3h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1z" opacity=".1"/><path d="m389.57001-518.79999h15v1h-15z" opacity=".5" transform="scale(1 -1)"/></g><path d="m389.57001-545.79999h22v1h-22z" opacity=".25" transform="scale(1 -1)"/></g><g fill-rule="evenodd"><path d="m411.57144 538.798-7.00001 7v-7z" fill="#ee9463"/><path d="m411.5714 531.79797-6.99997 7h7z" fill="url(#b)" opacity=".2"/><path d="m404.57142 538.79793 7-7v7z" fill="url(#a)" opacity=".2"/></g><path d="m394.57143 537.79797v-2h-1v-11h14v11h-1v2zm1-1h10v-1h-10zm-1-2h12v-9h-12zm7-1v-3h3c0 1.65685-1.34315 3-3 3zm-1-1c-1.65685 0-3-1.34315-3-3s1.34315-3 3-3 3 1.34315 3 3h-3z" fill="#ee9463" opacity=".9"/></g></svg> \ No newline at end of file
diff --git a/icon-themes/breeze_svg/res/otp_48_8.svg b/icon-themes/breeze_svg/res/otp_48_8.svg
index ddca2346b7c8..63943d9947a6 100644
--- a/icon-themes/breeze_svg/res/otp_48_8.svg
+++ b/icon-themes/breeze_svg/res/otp_48_8.svg
@@ -1 +1 @@
-<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientTransform="matrix(0 -.72413762 -.72413762 0 437.51968 552.40144)" gradientUnits="userSpaceOnUse" x1="54" x2="39.500008" y1="31" y2="16.500048"><stop offset="0" stop-color="#383e51"/><stop offset="1" stop-color="#655c6f" stop-opacity="0"/></linearGradient><g transform="translate(-384.57143 -499.798)"><path d="m392.57143 544.798v-41.99999l22-.00001 11.00005 11.00001-.00007 20.86206v10.13793h-10.5z" fill="#662d0e" stroke-width="1.5"/><path d="m9 3v2h-.9980469v.9980469h.9980469v2h-.9980469v1h.9980469v2.0000001h-.9980469v1h.9980469v2h-.9980469v1h.9980469v2h-.9980469v.998047.002h.9980469v1.998047h-.9980469v.002.998047.002h.9980469v1.998047h-.9980469v.002.998047.002h.9980469v1.998047h-.9980469v.002.998047.002h.9980469v1.998047h-.9980469v.002.998047.002h.9980469v1.998047h-.9980469v1h.9980469v2h-.9980469v1h.9980469v2h-.9980469v1h.9980469v2.003483h-1v1h1v3h1v-3h2v3h1v-3h2v3h1v-3h2v3h1v-3h2v3h1v-3h2v3h1v-3h2v3h1v-3h2v3h1v-3h2v3h1v-3h1 1v3h1v-3h2v3h1v-3h1v-1h-1v-2h-1v2h-2v-2h-1v2h-1-1v-1-1h1v-.002h2 1 2 1v-.998h-1v-1-1h1v-.002-.998h-1v-1-1h1v-.002-.998h-1v-2h1v-.002-.998h-1v-2h1v-.002-.998h-1v-2h1v-.002-.998h-1v-2h1v-.002-.998h-1v-2h1v-.002-1h-1v-1.996094h1v-.001906-1h-1v-1l-1-1v2h-2v-2h1.5v-.5l-.5-.5h-1v-1l-1-1v2h-1v.002h-1v-2.0000469h1v-.0019531-1h-2v.00195h-2v-2h1v-.00195-1h-2-1-1v-2h-1v2h-1-1v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2zm23 3.0019531v1.9980469h1v-1.9980469zm-22-.0019531h2v2h-2v-.00195zm3 0h2v2h-2zm3 0h2v2h-2zm3 .00195h2v1.99805h-2zm3 0h2v1.99805h-2zm3 0h2v2h-1v-.00195h-1zm3 0h2v2h-2zm-18 2.99805h2v2h-2v-.002zm3 0h2v2h-2zm3 0h2v2h-2zm3 .00195h2v1.99805h-2zm3 0h2v1.99805h-2zm3 0h2v2.000003h-1v-.001953h-1zm3 0h2v2h-2zm3 0h2v2.000003h-2zm-21 2.99805h2v2h-2v-.002zm3 0h2v2h-2zm3 0h2v2h-2zm19 0h1v1.998047h-1v.001953h-1v-1.998047h1zm-16 .002h2v1.998h-2zm3 0h2v1.998h-2zm3 0h2v1.998h-1-1zm3 0h2v1.998h-2zm3 0h2v1.998h-2zm-21 2.998h2v2h-2v-.002zm3 0h2v1.998047h-2zm3 0h2v1.998047h-2zm19 0h1v2h-2v-1.998047h1zm2 0h2v2h-1-1zm-18 .002h2v1.996094h-2zm3 0h2v1.996094h-2zm3 0h2v1.996094h-1-1zm3 0h2v1.996094h-1-1zm3 0h2v1.998h-1v-.002h-1zm-21 2.998h2v2h-2v-.0039zm3 0h2v1.998047h-2zm3 0h2v1.998047h-2zm19 0h1v2h-1v-.002h-1v-1.996094h1zm2 0h2v2h-2zm-18 .002h2v1.996094h-2zm3 0h2v1.996094h-2zm3 0h2v1.998h-1v-.002h-1zm3 0h2v1.998h-2zm3 0h2v1.998h-1-1zm-21 2.998h2v2h-2v-.0039zm3 0h2v1.998047h-2zm3 0h2v1.998047h-2zm19 0h1v2h-1-1v-1.998047h1zm2 0h2v2h-2zm-18 .002h2v1.996094h-2zm3 0h2v1.996094h-2zm3 0h2v1.998h-1v-.002h-1zm3 0h2v1.998h-2zm3 0h2v1.998h-2zm-21 2.998h2v2h-2v-.0039zm3 0h2v1.998047h-2v-.998047zm3 0h2v1.998047h-2v-.998047zm19 0h1v2h-1-1v-.998047-1h1zm2 0h2v2h-2zm-18 .002h2v1.996094h-2v-.998094zm3 0h2v1.996094h-2v-.996141-.001953zm3 0h2v1.998h-1v-.002h-1v-.996047-.001953zm3 0h2v1.998h-2v-.998047zm3 0h2v1.998h-2v-.998047zm-21 2.998h2v2h-2v-.0039zm3 0h2v1.998047h-2v-.998047zm3 0h2v1.998047h-2v-.998047zm19 0h1v2h-1-1v-.998047-1h1zm2 0h2v2h-2zm-18 .002h2v1.996094h-2v-.998094zm3 0h2v1.996094h-2v-.996141-.001953zm3 0h2v1.998h-1v-.002h-1v-.996047-.001953zm3 0h2v1.998h-2v-.998047zm3 0h2v1.998h-2v-.998047zm-21 2.994141h2v2h-2v-1.998047zm4 .002h1v2h-2v-1.998141h1zm3 0h1v2h-2v-1.998141h1zm2 .001859h1 1v1.998047h-2zm3 0h1 1v1.998047h-2zm3 0h1 1v2h-1v-.002h-1zm3 0h1 1v2h-2zm3 0h1 1v2h-2zm3 0h1 1v2h-1-1zm3 0h2v2h-2zm-27 2.996094h2v2h-2zm3 .002h2v2h-2zm3 0h2v2h-2zm3 .001906h2v1.998047h-2zm3 0h2v1.998047h-2zm3 0h2v2h-1v-.002h-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h1 1v2h-1-1v-1zm3 0h2v2h-2v-1zm-24 2.998047h2v2h-2v-1zm3 0h2v2h-2v-1zm-6 .001953h2v2h-2v-.0039zm9 0h2v1.998047h-2v-1zm3 0h2v1.998047h-2v-.998047-.002zm3 0h2v2h-1v-.002h-1v-.998-.002zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h1 1v2h-1-1v-1zm3 0h2v2h-2v-1zm-24 2.998047h2v2.001953h-2v-1.001953zm3 0h2v2.001953h-2v-1.001953zm-6 .001953h2v2h-2zm9 0h2v2h-2v-1.001953zm3 0h2v2h-2v-1-.002zm3 0h2v2h-2v-1-.002zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1z" fill="#fff" opacity=".1" stroke-width="1.5" transform="translate(384.57143 499.798)"/><path d="m392.57143 543.798h33l-.00002 1h-33z" fill="#2e3132" fill-opacity=".294118" stroke-width="1.816591"/><path d="m392.57141 502.798 22.00002-.00001v1.00001l-22.00002.00001z" fill="#fff" fill-opacity=".409836" stroke-width="1.238585"/><path d="m425.57145 513.79801-11.00002-11.00001.00002 11.00001z" fill="#ee9463" fill-rule="evenodd"/><path d="m425.57143 524.798-11-11h11z" fill="url(#a)" fill-rule="evenodd" opacity=".2" stroke-width="1.5"/><path d="m399.57143 516.798v13h7v3h-2v1h9v-1h-2v-3h7v-13zm1 1h17v11h-17zm7 1.5v8l4.5-4zm0 10.5h3v3h-3z" fill="#ee9463"/></g></svg> \ No newline at end of file
+<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientTransform="matrix(0 -.72413762 -.72413762 0 437.51968 552.40144)" gradientUnits="userSpaceOnUse" x1="54" x2="39.500008" y1="31" y2="16.500048"><stop offset="0" stop-color="#383e51"/><stop offset="1" stop-color="#655c6f" stop-opacity="0"/></linearGradient><g transform="translate(-384.57143 -499.798)"><path d="m392.57143 544.798v-41.99999l22-.00001 11.00005 11.00001-.00007 20.86206v10.13793h-10.5z" fill="#662d0e" stroke-width="1.5"/><path d="m9 3v2h-.9980469v.9980469h.9980469v2h-.9980469v1h.9980469v2.0000001h-.9980469v1h.9980469v2h-.9980469v1h.9980469v2h-.9980469v.998047.002h.9980469v1.998047h-.9980469v.002.998047.002h.9980469v1.998047h-.9980469v.002.998047.002h.9980469v1.998047h-.9980469v.002.998047.002h.9980469v1.998047h-.9980469v.002.998047.002h.9980469v1.998047h-.9980469v1h.9980469v2h-.9980469v1h.9980469v2h-.9980469v1h.9980469v2.003483h-1v1h1v3h1v-3h2v3h1v-3h2v3h1v-3h2v3h1v-3h2v3h1v-3h2v3h1v-3h2v3h1v-3h2v3h1v-3h2v3h1v-3h1 1v3h1v-3h2v3h1v-3h1v-1h-1v-2h-1v2h-2v-2h-1v2h-1-1v-1-1h1v-.002h2 1 2 1v-.998h-1v-1-1h1v-.002-.998h-1v-1-1h1v-.002-.998h-1v-2h1v-.002-.998h-1v-2h1v-.002-.998h-1v-2h1v-.002-.998h-1v-2h1v-.002-.998h-1v-2h1v-.002-1h-1v-1.996094h1v-.001906-1h-1v-1l-1-1v2h-2v-2h1.5v-.5l-.5-.5h-1v-1l-1-1v2h-1v.002h-1v-2.0000469h1v-.0019531-1h-2v.00195h-2v-2h1v-.00195-1h-2-1-1v-2h-1v2h-1-1v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2zm23 3.0019531v1.9980469h1v-1.9980469zm-22-.0019531h2v2h-2v-.00195zm3 0h2v2h-2zm3 0h2v2h-2zm3 .00195h2v1.99805h-2zm3 0h2v1.99805h-2zm3 0h2v2h-1v-.00195h-1zm3 0h2v2h-2zm-18 2.99805h2v2h-2v-.002zm3 0h2v2h-2zm3 0h2v2h-2zm3 .00195h2v1.99805h-2zm3 0h2v1.99805h-2zm3 0h2v2.000003h-1v-.001953h-1zm3 0h2v2h-2zm3 0h2v2.000003h-2zm-21 2.99805h2v2h-2v-.002zm3 0h2v2h-2zm3 0h2v2h-2zm19 0h1v1.998047h-1v.001953h-1v-1.998047h1zm-16 .002h2v1.998h-2zm3 0h2v1.998h-2zm3 0h2v1.998h-1-1zm3 0h2v1.998h-2zm3 0h2v1.998h-2zm-21 2.998h2v2h-2v-.002zm3 0h2v1.998047h-2zm3 0h2v1.998047h-2zm19 0h1v2h-2v-1.998047h1zm2 0h2v2h-1-1zm-18 .002h2v1.996094h-2zm3 0h2v1.996094h-2zm3 0h2v1.996094h-1-1zm3 0h2v1.996094h-1-1zm3 0h2v1.998h-1v-.002h-1zm-21 2.998h2v2h-2v-.0039zm3 0h2v1.998047h-2zm3 0h2v1.998047h-2zm19 0h1v2h-1v-.002h-1v-1.996094h1zm2 0h2v2h-2zm-18 .002h2v1.996094h-2zm3 0h2v1.996094h-2zm3 0h2v1.998h-1v-.002h-1zm3 0h2v1.998h-2zm3 0h2v1.998h-1-1zm-21 2.998h2v2h-2v-.0039zm3 0h2v1.998047h-2zm3 0h2v1.998047h-2zm19 0h1v2h-1-1v-1.998047h1zm2 0h2v2h-2zm-18 .002h2v1.996094h-2zm3 0h2v1.996094h-2zm3 0h2v1.998h-1v-.002h-1zm3 0h2v1.998h-2zm3 0h2v1.998h-2zm-21 2.998h2v2h-2v-.0039zm3 0h2v1.998047h-2v-.998047zm3 0h2v1.998047h-2v-.998047zm19 0h1v2h-1-1v-.998047-1h1zm2 0h2v2h-2zm-18 .002h2v1.996094h-2v-.998094zm3 0h2v1.996094h-2v-.996141-.001953zm3 0h2v1.998h-1v-.002h-1v-.996047-.001953zm3 0h2v1.998h-2v-.998047zm3 0h2v1.998h-2v-.998047zm-21 2.998h2v2h-2v-.0039zm3 0h2v1.998047h-2v-.998047zm3 0h2v1.998047h-2v-.998047zm19 0h1v2h-1-1v-.998047-1h1zm2 0h2v2h-2zm-18 .002h2v1.996094h-2v-.998094zm3 0h2v1.996094h-2v-.996141-.001953zm3 0h2v1.998h-1v-.002h-1v-.996047-.001953zm3 0h2v1.998h-2v-.998047zm3 0h2v1.998h-2v-.998047zm-21 2.994141h2v2h-2v-1.998047zm4 .002h1v2h-2v-1.998141h1zm3 0h1v2h-2v-1.998141h1zm2 .001859h1 1v1.998047h-2zm3 0h1 1v1.998047h-2zm3 0h1 1v2h-1v-.002h-1zm3 0h1 1v2h-2zm3 0h1 1v2h-2zm3 0h1 1v2h-1-1zm3 0h2v2h-2zm-27 2.996094h2v2h-2zm3 .002h2v2h-2zm3 0h2v2h-2zm3 .001906h2v1.998047h-2zm3 0h2v1.998047h-2zm3 0h2v2h-1v-.002h-1zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h1 1v2h-1-1v-1zm3 0h2v2h-2v-1zm-24 2.998047h2v2h-2v-1zm3 0h2v2h-2v-1zm-6 .001953h2v2h-2v-.0039zm9 0h2v1.998047h-2v-1zm3 0h2v1.998047h-2v-.998047-.002zm3 0h2v2h-1v-.002h-1v-.998-.002zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1zm3 0h1 1v2h-1-1v-1zm3 0h2v2h-2v-1zm-24 2.998047h2v2.001953h-2v-1.001953zm3 0h2v2.001953h-2v-1.001953zm-6 .001953h2v2h-2zm9 0h2v2h-2v-1.001953zm3 0h2v2h-2v-1-.002zm3 0h2v2h-2v-1-.002zm3 0h2v2h-2v-1zm3 0h2v2h-2v-1z" fill="#fff" opacity=".1" stroke-width="1.5" transform="translate(384.57143 499.798)"/><path d="m392.57143 543.798h33l-.00002 1h-33z" fill="#2e3132" fill-opacity=".294118" stroke-width="1.816591"/><path d="m392.57141 502.798 22.00002-.00001v1.00001l-22.00002.00001z" fill="#fff" fill-opacity=".409836" stroke-width="1.238585"/><path d="m425.57145 513.79801-11.00002-11.00001.00002 11.00001z" fill="#ee9463" fill-rule="evenodd"/><path d="m425.57143 524.798-11-11h11z" fill="url(#a)" fill-rule="evenodd" opacity=".2" stroke-width="1.5"/><path d="m400.57143 516.798v3h-1v14h19v-14h-1v-3zm1 1h15v2h-15zm-1 3h17v12h-17zm9 1v4h4c0-2.20914-1.79086-4-4-4zm-1 1c-2.20914 0-4 1.79086-4 4s1.79086 4 4 4 4-1.79086 4-4h-4zm-1 1.17383v3.82617h3.82422c-.42327 1.19718-1.55442 1.99822-2.82422 2-1.65685 0-3-1.34315-3-3 .00095-1.27052.80214-2.40267 2-2.82617z" fill="#ee9463" opacity=".9" stroke-width="1.357143"/></g></svg> \ No newline at end of file
diff --git a/icon-themes/breeze_svg/res/otp_96_8.svg b/icon-themes/breeze_svg/res/otp_96_8.svg
index 9df276a11fb6..8ee66aa7add7 100644
--- a/icon-themes/breeze_svg/res/otp_96_8.svg
+++ b/icon-themes/breeze_svg/res/otp_96_8.svg
@@ -1 +1 @@
-<svg height="96" width="96" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientTransform="matrix(0 -1.3636364 -1.3793103 0 101.4483 1057.0894)" gradientUnits="userSpaceOnUse" x1="54.066666" x2="40" y1="30.775019" y2="17"><stop offset="0" stop-color="#383e51"/><stop offset="1" stop-color="#655c6f" stop-opacity="0"/></linearGradient><g transform="translate(0 -956.3622)"><path d="m18 1044.3622v-80.00002h41l19.000002 19v61.00002z" fill="#662d0e"/><path d="m78.000002 983.36218-19.000002-19v19z" fill="#ee9463" fill-rule="evenodd"/><path d="m78 1002.544-19-19.18182h19z" fill="url(#a)" fill-rule="evenodd" opacity=".2"/><path d="m30 991.3622v1.2069 24.7931h1.363636 13.636364v3h-4v1l4.272728.034h5.454546l4.272726-.034v-1h-4v-3h15v-2.7586-23.2414zm1 1h34v24h-34zm14 6v11l7-5.5z" fill="#ee9463"/><path d="m20 8v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2-1-2-1-2-1-2-1-2-1-2-1-1.310547-.689453-1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-1l-1-1v2h-2v-2h2l-1-1h-1v-1l-1-1v2h-2v-2h2l-1-1h-1v-1l-1-1v2h-2v-2h2l-1-1h-1v-1l-1-1v2h-2v-2h2l-1-1h-1v-1l-1-1v2h-2v-2h2l-1-1h-1v-1l-1-1v2h-2v-2h2l-1-1h-1v-1l-1-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2zm1 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-36 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-39 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-42 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-45 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-48 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-51 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2z" fill="#fff" opacity=".1" transform="translate(0 956.3622)"/><path d="m18 1044.3622h60v-1h-60z" fill="#2e3132" fill-opacity=".294118" stroke-width="1.209717"/><path d="m18 965.36218h41v-1h-41z" fill="#fff" fill-opacity=".409836" stroke-width=".82664"/></g></svg> \ No newline at end of file
+<svg height="96" width="96" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientTransform="matrix(0 -1.3636364 -1.3793103 0 101.4483 1057.0894)" gradientUnits="userSpaceOnUse" x1="54.066666" x2="40" y1="30.775019" y2="17"><stop offset="0" stop-color="#383e51"/><stop offset="1" stop-color="#655c6f" stop-opacity="0"/></linearGradient><g transform="translate(0 -956.3622)"><path d="m18 1044.3622v-80.00002h41l19.000002 19v61.00002z" fill="#662d0e"/><path d="m78.000002 983.36218-19.000002-19v19z" fill="#ee9463" fill-rule="evenodd"/><path d="m78 1002.544-19-19.18182h19z" fill="url(#a)" fill-rule="evenodd" opacity=".2"/><path d="m20 8v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h-2v1h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2h2v2h1v-2-1-2-1-2-1-2-1-2-1-2-1-1.310547-.689453-1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-1l-1-1v2h-2v-2h2l-1-1h-1v-1l-1-1v2h-2v-2h2l-1-1h-1v-1l-1-1v2h-2v-2h2l-1-1h-1v-1l-1-1v2h-2v-2h2l-1-1h-1v-1l-1-1v2h-2v-2h2l-1-1h-1v-1l-1-1v2h-2v-2h2l-1-1h-1v-1l-1-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2h-1v2h-2v-2zm1 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-36 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-39 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-42 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-45 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-48 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-51 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm-54 3h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2zm3 0h2v2h-2z" fill="#fff" opacity=".1" transform="translate(0 956.3622)"/><path d="m18 1044.3622h60v-1h-60z" fill="#2e3132" fill-opacity=".294118" stroke-width="1.209717"/><path d="m18 965.36218h41v-1h-41z" fill="#fff" fill-opacity=".409836" stroke-width=".82664"/><path d="m33 991.3622v3l-3 .0332v26.9668l36-.018v-26.9824h-3v-3zm1 1h28v2h-28zm-3 3h34v24.9824l-34 .018zm18 6v6h6a6 6 0 0 0 -6-6zm-1 1c-3.313708 0-6 2.6863-6 6s2.686292 6 6 6 6-2.6863 6-6h-6zm-1 1.1055v5.8945h5.898438c-.475151 2.3278-2.522682 3.9997-4.898438 4-2.761424 0-5-2.2386-5-5 .0021-2.3743 1.673681-4.4197 4-4.8945z" fill="#f09e72" stroke-width="1.5"/></g></svg> \ No newline at end of file
diff --git a/icon-themes/breeze_svg/res/sx03249.svg b/icon-themes/breeze_svg/res/sx03249.svg
index 354c66743266..ea1d7f0d9df5 100644
--- a/icon-themes/breeze_svg/res/sx03249.svg
+++ b/icon-themes/breeze_svg/res/sx03249.svg
@@ -1 +1 @@
-<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m2 2v9h4v2h-1v1h6v-1h-1v-2h4v-9zm1 1h10v7h-10zm4 1v5l3-2.5zm0 7h2v2h-2z" fill="#f27935"/></svg> \ No newline at end of file
+<svg height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m2 1v2h-1v11h14v-11h-1v-2zm1 1h10v1h-10zm-1 2h12v9h-12zm7 1v3h3c0-1.6568542-1.343146-3-3-3zm-1 1c-1.6568542 0-3 1.3431458-3 3 0 1.656854 1.3431458 3 3 3s3-1.343146 3-3h-3z" fill="#ff8b23" opacity=".9"/></svg> \ No newline at end of file
diff --git a/idl/source/objects/types.cxx b/idl/source/objects/types.cxx
index 57d62c49c24c..46262e7b98d9 100644
--- a/idl/source/objects/types.cxx
+++ b/idl/source/objects/types.cxx
@@ -231,6 +231,7 @@ void SvMetaType::WriteSfxItem(
bool bExport = false, bReturn = false;
// these are exported from sfx library
if (rItemName == "SfxBoolItem" ||
+ rItemName == "SfxInt16Item" ||
rItemName == "SfxStringItem" ||
rItemName == "SfxUInt16Item" ||
rItemName == "SfxUInt32Item" ||
diff --git a/include/LibreOfficeKit/LibreOfficeKit.h b/include/LibreOfficeKit/LibreOfficeKit.h
index aff71dcc1f5d..3a706ba47091 100644
--- a/include/LibreOfficeKit/LibreOfficeKit.h
+++ b/include/LibreOfficeKit/LibreOfficeKit.h
@@ -118,6 +118,10 @@ struct _LibreOfficeKitClass
/// @see lok::Office::setOption
void (*setOption) (LibreOfficeKit* pThis, const char* pOption, const char* pValue);
+
+ /// @see lok::Document::dumpState
+ /// @since LibreOffice 7.5
+ void (*dumpState) (LibreOfficeKit* pThis, const char* pOptions, char** pState);
};
#define LIBREOFFICEKIT_DOCUMENT_HAS(pDoc,member) LIBREOFFICEKIT_HAS_MEMBER(LibreOfficeKitDocumentClass,member,(pDoc)->pClass->nSize)
diff --git a/include/LibreOfficeKit/LibreOfficeKit.hxx b/include/LibreOfficeKit/LibreOfficeKit.hxx
index 6dbfbf964b29..4aafaa830626 100644
--- a/include/LibreOfficeKit/LibreOfficeKit.hxx
+++ b/include/LibreOfficeKit/LibreOfficeKit.hxx
@@ -1103,6 +1103,21 @@ public:
{
mpThis->pClass->setOption(mpThis, pOption, pValue);
}
+
+ /**
+ * Debugging tool for triggering a dump of internal state.
+ *
+ * LibreOfficeKit can get into an unhelpful state at run-time when
+ * in heavy use. This provides a critical tool for inspecting
+ * relevant internal state.
+ *
+ * @param pOption future expansion - string options.
+ * @param pState - heap allocated, C string containing the state dump.
+ */
+ void dumpState(const char* pOption, char** pState)
+ {
+ mpThis->pClass->dumpState(mpThis, pOption, pState);
+ }
};
/// Factory method to create a lok::Office instance.
diff --git a/include/editeng/brushitem.hxx b/include/editeng/brushitem.hxx
index 036463c85079..1a841c32d6a1 100644
--- a/include/editeng/brushitem.hxx
+++ b/include/editeng/brushitem.hxx
@@ -43,6 +43,7 @@ enum SvxGraphicPosition
class EDITENG_DLLPUBLIC SvxBrushItem final : public SfxPoolItem
{
Color aColor;
+ Color aFilterColor;
sal_Int32 nShadingValue;
mutable std::unique_ptr<GraphicObject> xGraphicObject;
sal_Int8 nGraphicTransparency; //contains a percentage value which is
@@ -90,6 +91,10 @@ public:
Color& GetColor() { return aColor; }
void SetColor( const Color& rCol) { aColor = rCol; }
+ const Color& GetFiltColor() const { return aFilterColor; }
+ Color& GetFiltColor() { return aFilterColor; }
+ void SetFiltColor( const Color& rCol) { aFilterColor = rCol; }
+
SvxGraphicPosition GetGraphicPos() const { return eGraphicPos; }
sal_Int32 GetShadingValue() const { return nShadingValue; }
diff --git a/include/editeng/colritem.hxx b/include/editeng/colritem.hxx
index cd223d2777bc..cbd52844b059 100644
--- a/include/editeng/colritem.hxx
+++ b/include/editeng/colritem.hxx
@@ -25,18 +25,48 @@
#define VERSION_USEAUTOCOLOR 1
+/// Represents theme metadata for a (tools) Color.
+class EDITENG_DLLPUBLIC SvxThemeColor
+{
+ sal_Int16 maThemeIndex;
+ /// Luminance Modulation: 100th percentage, defaults to 100%.
+ sal_Int16 mnLumMod;
+ /// Luminance Offset: 100th percentage, defaults to 0%.
+ sal_Int16 mnLumOff;
+
+public:
+ explicit SvxThemeColor();
+ bool operator==(const SvxThemeColor& rThemeColor) const;
+
+ sal_Int16 GetThemeIndex() const
+ {
+ return maThemeIndex;
+ }
+
+ void SetThemeIndex(sal_Int16 nIndex)
+ {
+ maThemeIndex = nIndex;
+ }
+
+ void SetLumMod(sal_Int16 nLumMod) { mnLumMod = nLumMod; }
+
+ sal_Int16 GetLumMod() const { return mnLumMod; }
+
+ void SetLumOff(sal_Int16 nLumOff) { mnLumOff = nLumOff; }
+
+ sal_Int16 GetLumOff() const { return mnLumOff; }
+
+ void dumpAsXml(xmlTextWriterPtr pWriter) const;
+};
+
/** SvxColorItem item describes a color.
*/
class EDITENG_DLLPUBLIC SvxColorItem final : public SfxPoolItem
{
private:
Color mColor;
- sal_Int16 maThemeIndex;
+ SvxThemeColor maThemeColor;
sal_Int16 maTintShade;
- /// Luminance Modulation: 100th percentage, defaults to 100%.
- sal_Int16 mnLumMod;
- /// Luminance Offset: 100th percentage, defaults to 0%.
- sal_Int16 mnLumOff;
public:
static SfxPoolItem* CreateDefault();
@@ -63,16 +93,6 @@ public:
}
void SetValue(const Color& rNewColor);
- sal_Int16 GetThemeIndex() const
- {
- return maThemeIndex;
- }
-
- void SetThemeIndex(sal_Int16 nIndex)
- {
- maThemeIndex = nIndex;
- }
-
sal_Int16 GetTintOrShade() const
{
return maTintShade;
@@ -83,6 +103,10 @@ public:
maTintShade = nTintOrShade;
}
+ SvxThemeColor& GetThemeColor() { return maThemeColor; }
+
+ const SvxThemeColor& GetThemeColor() const { return maThemeColor; }
+
void dumpAsXml(xmlTextWriterPtr pWriter) const override;
};
diff --git a/include/editeng/unoprnms.hxx b/include/editeng/unoprnms.hxx
index f09afa09d487..c981d2baaf33 100644
--- a/include/editeng/unoprnms.hxx
+++ b/include/editeng/unoprnms.hxx
@@ -32,6 +32,9 @@
#define UNO_NAME_FILLSTYLE "FillStyle"
#define UNO_NAME_FILLCOLOR "FillColor"
+#define UNO_NAME_FILLCOLOR_THEME "FillColorTheme"
+#define UNO_NAME_FILLCOLOR_LUM_MOD "FillColorLumMod"
+#define UNO_NAME_FILLCOLOR_LUM_OFF "FillColorLumOff"
#define UNO_NAME_FILLGRADIENT "FillGradient"
#define UNO_NAME_FILLGRADIENTNAME "FillGradientName"
#define UNO_NAME_FILLHATCH "FillHatch"
diff --git a/include/oox/drawingml/clrscheme.hxx b/include/oox/drawingml/clrscheme.hxx
index 01711fe8bfbd..a4f0b653441a 100644
--- a/include/oox/drawingml/clrscheme.hxx
+++ b/include/oox/drawingml/clrscheme.hxx
@@ -34,9 +34,9 @@
namespace oox::drawingml {
enum PredefinedClrSchemeId {
- //dk1,
- //lt1,
- dk2 = 0,
+ dk1 = 0,
+ lt1,
+ dk2,
lt2,
accent1,
accent2,
@@ -51,8 +51,8 @@ enum PredefinedClrSchemeId {
static std::map<PredefinedClrSchemeId, OUString> PredefinedClrNames =
{
- //{ dk1, "dk1" },
- //{ lt1, "lt1" },
+ { dk1, "dk1" },
+ { lt1, "lt1" },
{ dk2, "dk2" },
{ lt2, "lt2" },
{ accent1, "accent1" },
diff --git a/include/oox/drawingml/color.hxx b/include/oox/drawingml/color.hxx
index c0dd8d67a31c..b28c926986ca 100644
--- a/include/oox/drawingml/color.hxx
+++ b/include/oox/drawingml/color.hxx
@@ -99,9 +99,9 @@ public:
/** Returns the scheme name from the a:schemeClr element for interoperability purposes */
const OUString& getSchemeColorName() const { return msSchemeName; }
sal_Int16 getSchemeColorIndex() const;
- sal_Int16 getTintOrShade();
- sal_Int16 getLumMod();
- sal_Int16 getLumOff();
+ sal_Int16 getTintOrShade() const;
+ sal_Int16 getLumMod() const;
+ sal_Int16 getLumOff() const;
/** Returns the unaltered list of transformations for interoperability purposes */
const css::uno::Sequence< css::beans::PropertyValue >& getTransformations() const { return maInteropTransformations;}
diff --git a/include/oox/export/drawingml.hxx b/include/oox/export/drawingml.hxx
index b15bf9d81aba..f2ef8c910da0 100644
--- a/include/oox/export/drawingml.hxx
+++ b/include/oox/export/drawingml.hxx
@@ -230,6 +230,7 @@ public:
void WriteConnectorConnections( EscherConnectorListEntry& rConnectorEntry, sal_Int32 nStartID, sal_Int32 nEndID );
bool WriteCharColor(const css::uno::Reference<css::beans::XPropertySet>& xPropertySet);
+ bool WriteFillColor(const css::uno::Reference<css::beans::XPropertySet>& xPropertySet);
void WriteSolidFill( ::Color nColor, sal_Int32 nAlpha = MAX_PERCENT );
void WriteSolidFill( const OUString& sSchemeName, const css::uno::Sequence< css::beans::PropertyValue >& aTransformations, sal_Int32 nAlpha = MAX_PERCENT );
diff --git a/include/sfx2/dinfdlg.hxx b/include/sfx2/dinfdlg.hxx
index 40cbd82c7762..c1b5519e90ac 100644
--- a/include/sfx2/dinfdlg.hxx
+++ b/include/sfx2/dinfdlg.hxx
@@ -275,11 +275,28 @@ public:
~CustomPropertiesTimeField();
};
+class DurationDialog_Impl : public weld::GenericDialogController
+{
+ std::unique_ptr<weld::CheckButton> m_xNegativeCB;
+ std::unique_ptr<weld::SpinButton> m_xYearNF;
+ std::unique_ptr<weld::SpinButton> m_xMonthNF;
+ std::unique_ptr<weld::SpinButton> m_xDayNF;
+ std::unique_ptr<weld::SpinButton> m_xHourNF;
+ std::unique_ptr<weld::SpinButton> m_xMinuteNF;
+ std::unique_ptr<weld::SpinButton> m_xSecondNF;
+ std::unique_ptr<weld::SpinButton> m_xMSecondNF;
+
+public:
+ DurationDialog_Impl(weld::Widget* pParent, const css::util::Duration& rDuration);
+ css::util::Duration GetDuration() const;
+};
+
class CustomPropertiesDurationField
{
css::util::Duration m_aDuration;
std::unique_ptr<weld::Entry> m_xEntry;
std::unique_ptr<weld::Button> m_xEditButton;
+ std::shared_ptr<DurationDialog_Impl> m_xDurationDialog;
DECL_LINK(ClickHdl, weld::Button&, void);
public:
@@ -290,6 +307,8 @@ public:
const css::util::Duration& GetDuration() const { return m_aDuration; }
void set_visible(bool bVisible);
+
+ ~CustomPropertiesDurationField();
};
class CustomPropertiesYesNoButton
diff --git a/include/sfx2/lokcallback.hxx b/include/sfx2/lokcallback.hxx
index 6f59402d0cec..95572aba1104 100644
--- a/include/sfx2/lokcallback.hxx
+++ b/include/sfx2/lokcallback.hxx
@@ -13,6 +13,10 @@
#include <vector>
+namespace rtl
+{
+class OStringBuffer;
+}
namespace tools
{
class Rectangle;
@@ -48,6 +52,7 @@ public:
virtual void libreOfficeKitViewUpdatedCallbackPerViewId(int nType, int nViewId,
int nSourceViewId)
= 0;
+ virtual void dumpState(rtl::OStringBuffer& rState) = 0;
};
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/sfx2/lokcharthelper.hxx b/include/sfx2/lokcomponenthelpers.hxx
index c93c4d2b8459..de36cd2ccd43 100644
--- a/include/sfx2/lokcharthelper.hxx
+++ b/include/sfx2/lokcomponenthelpers.hxx
@@ -14,8 +14,11 @@
#include <tools/gen.hxx>
#include <vcl/vclptr.hxx>
+namespace com::sun::star::beans { struct PropertyValue; }
namespace com::sun::star::frame { class XController; }
namespace com::sun::star::frame { class XDispatch; }
+namespace com::sun::star::uno { template<class E> class Sequence; }
+namespace rtl { class OUString; }
namespace vcl { class Window; }
class SfxViewShell;
@@ -60,6 +63,33 @@ public:
double fScaleX = 1.0, double fScaleY = 1.0);
};
+/// A class for math editing support via LibreOfficeKit.
+class SFX2_DLLPUBLIC LokStarMathHelper
+{
+public:
+ LokStarMathHelper(SfxViewShell* pViewShell)
+ : mpViewShell(pViewShell)
+ {
+ }
+
+ vcl::Window* GetGraphicWindow();
+ vcl::Window* GetWidgetWindow();
+
+ void Dispatch(const rtl::OUString& cmd, const css::uno::Sequence<css::beans::PropertyValue>& rArguments);
+
+ bool postMouseEvent(int nType, int nX, int nY, int nCount, int nButtons, int nModifier,
+ double fScaleX = 1.0, double fScaleY = 1.0);
+
+private:
+ css::uno::Reference<css::frame::XController>& GetXController();
+ tools::Rectangle GetBoundingBox();
+
+ SfxViewShell* mpViewShell;
+ css::uno::Reference<css::frame::XController> mxController;
+ VclPtr<vcl::Window> mpGraphicWindow;
+ VclPtr<vcl::Window> mpWidgetWindow;
+};
+
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/sfx2/lokhelper.hxx b/include/sfx2/lokhelper.hxx
index 2a40344cd70a..d66c2f71bffd 100644
--- a/include/sfx2/lokhelper.hxx
+++ b/include/sfx2/lokhelper.hxx
@@ -17,6 +17,7 @@
#include <sfx2/viewsh.hxx>
#include <tools/gen.hxx>
#include <cstddef>
+#include <rtl/strbuf.hxx>
#include <rtl/string.hxx>
#include <optional>
#include <string_view>
@@ -151,6 +152,9 @@ public:
/// This value is chosen such that sal_Int32 will not overflow when manipulated.
static const tools::Long MaxTwips = 1e9;
+ /// Helper for diagnosing run-time problems
+ static void dumpState(rtl::OStringBuffer &rState);
+
private:
static int createView(SfxViewFrame* pViewFrame, ViewShellDocId docId);
};
diff --git a/include/sfx2/objsh.hxx b/include/sfx2/objsh.hxx
index 0bfcddd2ba76..7440674d6656 100644
--- a/include/sfx2/objsh.hxx
+++ b/include/sfx2/objsh.hxx
@@ -558,6 +558,7 @@ public:
StarBASIC* GetBasic() const;
virtual std::set<Color> GetDocColors();
+ virtual std::vector<Color> GetThemeColors();
// Accessibility Check
virtual sfx::AccessibilityIssueCollection runAccessibilityCheck();
diff --git a/include/sfx2/sfxbasecontroller.hxx b/include/sfx2/sfxbasecontroller.hxx
index ac4950e5a45a..978cd5669d45 100644
--- a/include/sfx2/sfxbasecontroller.hxx
+++ b/include/sfx2/sfxbasecontroller.hxx
@@ -196,6 +196,10 @@ public:
SAL_DLLPRIVATE bool HasMouseClickListeners_Impl() const;
SAL_DLLPRIVATE void SetCreationArguments_Impl( const css::uno::Sequence< css::beans::PropertyValue >& i_rCreationArgs );
SAL_DLLPRIVATE css::uno::Reference< css::frame::XTitle > impl_getTitleHelper ();
+
+protected:
+ void CopyLokViewCallbackFromFrameCreator();
+
private:
enum ConnectSfxFrame
{
diff --git a/include/sfx2/sidebar/SidebarController.hxx b/include/sfx2/sidebar/SidebarController.hxx
index 9aea16754399..451b7964b937 100644
--- a/include/sfx2/sidebar/SidebarController.hxx
+++ b/include/sfx2/sidebar/SidebarController.hxx
@@ -80,9 +80,9 @@ public:
static SidebarController* GetSidebarControllerForFrame (
const css::uno::Reference<css::frame::XFrame>& rxFrame);
- static void registerSidebarForFrame(SidebarController* pController, const css::uno::Reference<css::frame::XController>& xFrame);
+ void registerSidebarForFrame(const css::uno::Reference<css::frame::XController>& xFrame);
- static void unregisterSidebarForFrame(SidebarController* pController, const css::uno::Reference<css::frame::XController>& xFrame);
+ void unregisterSidebarForFrame(const css::uno::Reference<css::frame::XController>& xFrame);
// ui::XContextChangeEventListener
virtual void SAL_CALL notifyContextChangeEvent (const css::ui::ContextChangeEventObject& rEvent) override;
@@ -172,7 +172,8 @@ public:
void SyncUpdate();
- bool hasChartContextCurrently() const;
+ // Used to avoid wrong context update when an embedded object activation is in progress
+ bool hasChartOrMathContextCurrently() const;
static SidebarController* GetSidebarControllerForView(const SfxViewShell* pViewShell);
diff --git a/include/sfx2/viewsh.hxx b/include/sfx2/viewsh.hxx
index fc06eb9ddbe8..e2ef0475dbc6 100644
--- a/include/sfx2/viewsh.hxx
+++ b/include/sfx2/viewsh.hxx
@@ -21,6 +21,7 @@
#include <sal/config.h>
#include <memory>
+#include <optional>
#include <sfx2/dllapi.h>
#include <sal/types.h>
#include <com/sun/star/uno/Reference.h>
@@ -57,6 +58,7 @@ class Menu;
class NotifyEvent;
class SfxInPlaceClient;
class SfxLokCallbackInterface;
+namespace rtl { class OStringBuffer; }
namespace vcl { class PrinterController; }
namespace com::sun::star::beans { struct PropertyValue; }
@@ -337,6 +339,9 @@ public:
/// Set up a more efficient internal callback instead of LibreOfficeKitCallback.
void setLibreOfficeKitViewCallback(SfxLokCallbackInterface* pCallback);
+ SfxLokCallbackInterface* getLibreOfficeKitViewCallback() const;
+ /// dump view state for diagnostics
+ void dumpLibreOfficeKitViewState(rtl::OStringBuffer &rState);
/// Invokes the registered callback, if there are any.
virtual void libreOfficeKitViewCallback(int nType, const char* pPayload) const override;
virtual void libreOfficeKitViewCallbackWithViewId(int nType, const char* pPayload, int nViewId) const override;
@@ -348,7 +353,7 @@ public:
// Returns current payload for nType, after libreOfficeKitViewUpdatedCallback() or
// libreOfficeKitViewUpdatedCallbackPerViewId() were called. If no payload should
// be generated, the ignore flag should be set.
- virtual OString getLOKPayload(int nType, int nViewId, bool* ignore) const;
+ virtual std::optional<OString> getLOKPayload(int nType, int nViewId) const;
/// Set if we are doing tiled searching.
void setTiledSearching(bool bTiledSearching);
diff --git a/include/svtools/languagetoolcfg.hxx b/include/svtools/languagetoolcfg.hxx
index 7578ad6ba281..3f30c4bd94a8 100644
--- a/include/svtools/languagetoolcfg.hxx
+++ b/include/svtools/languagetoolcfg.hxx
@@ -51,6 +51,9 @@ public:
bool getEnabled() const;
void setEnabled(bool enabled);
+ bool getSSLVerification() const;
+ void setSSLVerification(bool enabled);
+
private:
std::unique_ptr<LanguageToolOptions_Impl> pImpl;
void Load(const css::uno::Sequence<OUString>& rPropertyNames);
diff --git a/include/svx/ColorSets.hxx b/include/svx/ColorSets.hxx
index c4aa0ae2b9bc..6ad59a50c064 100644
--- a/include/svx/ColorSets.hxx
+++ b/include/svx/ColorSets.hxx
@@ -69,6 +69,23 @@ public:
const ColorSet& getColorSet(std::u16string_view rName);
};
+/// Offsets into the color list of a theme.
+enum class ThemeColorType
+{
+ DK1 = 0,
+ LT1 = 1,
+ DK2 = 2,
+ LT2 = 3,
+ ACCENT1 = 4,
+ ACCENT2 = 5,
+ ACCENT3 = 6,
+ ACCENT4 = 7,
+ ACCENT5 = 8,
+ ACCENT6 = 9,
+ HLINK = 10,
+ FOLHLINK = 11,
+};
+
/// A named theme has a named color set.
class SVXCORE_DLLPUBLIC Theme
{
@@ -92,6 +109,10 @@ public:
static std::unique_ptr<Theme> FromAny(const css::uno::Any& rVal);
void UpdateSdrPage(SdrPage* pPage);
+
+ std::vector<Color> GetColors() const;
+
+ Color GetColor(ThemeColorType eType) const;
};
} // end of namespace svx
diff --git a/include/svx/Palette.hxx b/include/svx/Palette.hxx
index 0ccc644a8b01..c23a09f9cbc8 100644
--- a/include/svx/Palette.hxx
+++ b/include/svx/Palette.hxx
@@ -24,13 +24,31 @@
#include <functional>
#include <rtl/ustring.hxx>
+#include <tools/color.hxx>
+#include <svx/svxdllapi.h>
-class Color;
class SvxColorValueSet;
typedef std::pair<Color, OUString> NamedColor;
-typedef std::function<void(const OUString&, const NamedColor&)> ColorSelectFunction;
+namespace svx
+{
+/// A color with an optional name and other theming-related properties.
+struct SVXCORE_DLLPUBLIC NamedThemedColor
+{
+ Color m_aColor;
+ OUString m_aName;
+ sal_Int16 m_nThemeIndex = -1;
+ sal_Int16 m_nLumMod = 10000;
+ sal_Int16 m_nLumOff = 0;
+
+ static NamedThemedColor FromNamedColor(const NamedColor& rNamedColor);
+
+ NamedColor ToNamedColor() const;
+};
+}
+
+typedef std::function<void(const OUString&, const svx::NamedThemedColor&)> ColorSelectFunction;
class Palette
{
diff --git a/include/svx/PaletteManager.hxx b/include/svx/PaletteManager.hxx
index 179c2fb4a924..d67623555157 100644
--- a/include/svx/PaletteManager.hxx
+++ b/include/svx/PaletteManager.hxx
@@ -74,7 +74,12 @@ public:
void SetColorSelectFunction(const ColorSelectFunction& aColorSelectFunction);
- static void DispatchColorCommand(const OUString& aCommand, const NamedColor& rColor);
+ bool IsThemePaletteSelected() const;
+
+ static void GetThemeIndexLumModOff(sal_uInt16 nItemId, sal_Int16& rThemeIndex,
+ sal_Int16& rLumMod, sal_Int16& rLumOff);
+
+ static void DispatchColorCommand(const OUString& aCommand, const svx::NamedThemedColor& rColor);
};
#endif // INCLUDED_SVX_PALETTEMANAGER_HXX
diff --git a/include/svx/colorbox.hxx b/include/svx/colorbox.hxx
index 23b92be6b38b..0dc858d1e67d 100644
--- a/include/svx/colorbox.hxx
+++ b/include/svx/colorbox.hxx
@@ -21,7 +21,7 @@ class ListBoxColorWrapper
public:
ListBoxColorWrapper(ColorListBox* pControl);
void operator()(const OUString& rCommand,
- const NamedColor& rColor); // ColorSelectFunction signature
+ const svx::NamedThemedColor& rColor); // ColorSelectFunction signature
private:
ColorListBox* mpControl;
};
@@ -36,14 +36,14 @@ private:
ListBoxColorWrapper m_aColorWrapper;
Color m_aAutoDisplayColor;
Color m_aSaveColor;
- NamedColor m_aSelectedColor;
+ svx::NamedThemedColor m_aSelectedColor;
sal_uInt16 m_nSlotId;
bool m_bShowNoneButton;
std::shared_ptr<PaletteManager> m_xPaletteManager;
TopLevelParentFunction m_aTopLevelParentFunction;
ColorStatus m_aColorStatus;
- void Selected(const NamedColor& rNamedColor);
+ void Selected(const svx::NamedThemedColor& rNamedColor);
void createColorWindow();
void LockWidthRequest();
ColorWindow* getColorWindow() const;
@@ -60,8 +60,9 @@ public:
void SetSlotId(sal_uInt16 nSlotId, bool bShowNoneButton = false);
- Color const& GetSelectEntryColor() const { return m_aSelectedColor.first; }
- NamedColor const& GetSelectedEntry() const { return m_aSelectedColor; }
+ Color const& GetSelectEntryColor() const { return m_aSelectedColor.m_aColor; }
+ NamedColor GetSelectedEntry() const { return m_aSelectedColor.ToNamedColor(); }
+ svx::NamedThemedColor GetSelectedEntryThemedColor() const { return m_aSelectedColor; }
void SelectEntry(const NamedColor& rColor);
void SelectEntry(const Color& rColor);
diff --git a/include/svx/dialogs.hrc b/include/svx/dialogs.hrc
index f03600a74fe0..d3d7f6d8b17d 100644
--- a/include/svx/dialogs.hrc
+++ b/include/svx/dialogs.hrc
@@ -43,6 +43,7 @@
#define RID_SVXPAGE_BKG (RID_SVX_START + 57)
#define RID_SVXPAGE_SHADOW (RID_SVX_START + 61)
#define RID_SVXPAGE_TRANSPARENCE (RID_SVX_START + 54)
+#define RID_SVXPAGE_THEME (RID_SVX_START + 55)
#define RID_SVXPAGE_TEXTATTR (RID_SVX_START + 153)
#define RID_SVXPAGE_TEXTANIMATION (RID_SVX_START + 184)
#define RID_SVXPAGE_TEXTCOLUMNS (RID_SVX_START + 154)
diff --git a/include/svx/strings.hrc b/include/svx/strings.hrc
index ebf12af91006..a368a4c77906 100644
--- a/include/svx/strings.hrc
+++ b/include/svx/strings.hrc
@@ -1118,7 +1118,25 @@
#define RID_SVXSTR_CHARFONTNAME_NOTAVAILABLE NC_("RID_SVXSTR_CHARFONTNAME_NOTAVAILABLE", "Font Name. The current font is not available and will be substituted.")
#define RID_SVXSTR_CUSTOM_PAL NC_("RID_SVXSTR_CUSTOM_PAL", "custom")
#define RID_SVXSTR_DOC_COLORS NC_("RID_SVXSTR_DOC_COLORS", "Document colors")
+#define RID_SVXSTR_THEME_COLORS NC_("RID_SVXSTR_THEME_COLORS", "Theme colors")
#define RID_SVXSTR_DOC_COLOR_PREFIX NC_("RID_SVXSTR_DOC_COLOR_PREFIX", "Document Color")
+#define RID_SVXSTR_THEME_COLOR1 NC_("RID_SVXSTR_THEME_COLOR1", "Background - Dark 1")
+#define RID_SVXSTR_THEME_COLOR2 NC_("RID_SVXSTR_THEME_COLOR2", "Text - Light 1")
+#define RID_SVXSTR_THEME_COLOR3 NC_("RID_SVXSTR_THEME_COLOR3", "Background - Dark 2")
+#define RID_SVXSTR_THEME_COLOR4 NC_("RID_SVXSTR_THEME_COLOR4", "Text - Light 2")
+#define RID_SVXSTR_THEME_COLOR5 NC_("RID_SVXSTR_THEME_COLOR5", "Accent 1")
+#define RID_SVXSTR_THEME_COLOR6 NC_("RID_SVXSTR_THEME_COLOR6", "Accent 2")
+#define RID_SVXSTR_THEME_COLOR7 NC_("RID_SVXSTR_THEME_COLOR7", "Accent 3")
+#define RID_SVXSTR_THEME_COLOR8 NC_("RID_SVXSTR_THEME_COLOR8", "Accent 4")
+#define RID_SVXSTR_THEME_COLOR9 NC_("RID_SVXSTR_THEME_COLOR9", "Accent 5")
+#define RID_SVXSTR_THEME_COLOR10 NC_("RID_SVXSTR_THEME_COLOR10", "Accent 6")
+#define RID_SVXSTR_THEME_COLOR11 NC_("RID_SVXSTR_THEME_COLOR11", "Hyperlink")
+#define RID_SVXSTR_THEME_COLOR12 NC_("RID_SVXSTR_THEME_COLOR12", "Followed Hyperlink")
+#define RID_SVXSTR_THEME_EFFECT1 NC_("RID_SVXSTR_THEME_EFFECT1", "%1, 80% Lighter")
+#define RID_SVXSTR_THEME_EFFECT2 NC_("RID_SVXSTR_THEME_EFFECT2", "%1, 60% Lighter")
+#define RID_SVXSTR_THEME_EFFECT3 NC_("RID_SVXSTR_THEME_EFFECT3", "%1, 40% Lighter")
+#define RID_SVXSTR_THEME_EFFECT4 NC_("RID_SVXSTR_THEME_EFFECT4", "%1, 25% Darker")
+#define RID_SVXSTR_THEME_EFFECT5 NC_("RID_SVXSTR_THEME_EFFECT5", "%1, 50% Darker")
#define RID_SVX_EXTRUSION_BAR NC_("RID_SVX_EXTRUSION_BAR", "Extrusion")
#define RID_SVXSTR_UNDO_APPLY_EXTRUSION_ON_OFF NC_("RID_SVXSTR_UNDO_APPLY_EXTRUSION_ON_OFF", "Apply Extrusion On/Off")
diff --git a/include/svx/svdpntv.hxx b/include/svx/svdpntv.hxx
index 557846fe01d8..7dfceb7242b4 100644
--- a/include/svx/svdpntv.hxx
+++ b/include/svx/svdpntv.hxx
@@ -189,6 +189,7 @@ protected:
bool mbHideChart : 1;
bool mbHideDraw : 1; // hide draw objects other than form controls
bool mbHideFormControl : 1; // hide form controls only
+ bool mbPaintTextEdit : 1; // if should paint currently edited text
public:
// Interface for PagePaintingAllowed flag
@@ -499,6 +500,9 @@ public:
// #i38135#
// Sets the timer for Object animations and restarts.
void SetAnimationTimer(sal_uInt32 nTime);
+
+ /// @see vcl::ITiledRenderable::setPaintTextEdit().
+ void SetPaintTextEdit(bool bPaint) { mbPaintTextEdit = bPaint; }
};
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svx/svxids.hrc b/include/svx/svxids.hrc
index 9cd52877bf63..573f036128c8 100644
--- a/include/svx/svxids.hrc
+++ b/include/svx/svxids.hrc
@@ -430,6 +430,10 @@ class SdrAngleItem;
#define SID_ATTR_TEXTCOLUMNS_NUMBER ( SID_SVX_START + 340 )
#define SID_ATTR_TEXTCOLUMNS_SPACING ( SID_SVX_START + 341 )
+#define SID_ATTR_COLOR_THEME_INDEX ( SID_SVX_START + 342 )
+#define SID_ATTR_COLOR_LUM_MOD ( SID_SVX_START + 343 )
+#define SID_ATTR_COLOR_LUM_OFF ( SID_SVX_START + 344 )
+
#define SID_SB_CONNECTIONPOOLING ( SID_SVX_START + 348 )
#define SID_SB_DBREGISTEROPTIONS ( SID_SVX_START + 349 )
#define SID_BMPMASK ( SID_SVX_START + 350 )
diff --git a/include/svx/tbcontrl.hxx b/include/svx/tbcontrl.hxx
index 8347e3b9df1e..194db28a51f0 100644
--- a/include/svx/tbcontrl.hxx
+++ b/include/svx/tbcontrl.hxx
@@ -200,7 +200,7 @@ friend class SfxStyleControllerItem_Impl;
SfxStyleFamily GetActFamily() const;
};
-typedef std::function<void(const OUString&, const NamedColor&)> ColorSelectFunction;
+typedef std::function<void(const OUString&, const svx::NamedThemedColor&)> ColorSelectFunction;
class SVXCORE_DLLPUBLIC SvxColorToolBoxControl final : public cppu::ImplInheritanceHelper< svt::PopupWindowController,
css::frame::XSubToolbarController >
diff --git a/include/svx/unodraw/SvxTableShape.hxx b/include/svx/unodraw/SvxTableShape.hxx
new file mode 100644
index 000000000000..518d3ac2c06a
--- /dev/null
+++ b/include/svx/unodraw/SvxTableShape.hxx
@@ -0,0 +1,44 @@
+/* -*- 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/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#pragma once
+
+#include <svx/svxdllapi.h>
+#include <svx/unoshape.hxx>
+
+class SVXCORE_DLLPUBLIC SvxTableShape : public SvxShape
+{
+protected:
+ // override these for special property handling in subcasses. Return true if property is handled
+ virtual bool setPropertyValueImpl(const OUString& rName,
+ const SfxItemPropertyMapEntry* pProperty,
+ const css::uno::Any& rValue) override;
+ virtual bool getPropertyValueImpl(const OUString& rName,
+ const SfxItemPropertyMapEntry* pProperty,
+ css::uno::Any& rValue) override;
+
+ virtual void lock() override;
+ virtual void unlock() override;
+
+public:
+ explicit SvxTableShape(SdrObject* pObj);
+ virtual ~SvxTableShape() noexcept override;
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svx/unoshprp.hxx b/include/svx/unoshprp.hxx
index ebc79e5ebee5..102b87b97553 100644
--- a/include/svx/unoshprp.hxx
+++ b/include/svx/unoshprp.hxx
@@ -289,6 +289,9 @@
{ u"" UNO_NAME_FILLTRANSPARENCEGRADIENT, XATTR_FILLFLOATTRANSPARENCE, ::cppu::UnoType<css::awt::Gradient>::get(), 0, MID_FILLGRADIENT}, \
{ u"" UNO_NAME_FILLTRANSPARENCEGRADIENTNAME, XATTR_FILLFLOATTRANSPARENCE, ::cppu::UnoType<OUString>::get(), 0, MID_NAME }, \
{ u"" UNO_NAME_FILLCOLOR_2, XATTR_SECONDARYFILLCOLOR, ::cppu::UnoType<sal_Int32>::get(), 0, 0}, \
+ { u"" UNO_NAME_FILLCOLOR_THEME, XATTR_FILLCOLOR, ::cppu::UnoType<sal_Int16>::get(), 0, MID_COLOR_THEME_INDEX}, \
+ { u"" UNO_NAME_FILLCOLOR_LUM_MOD, XATTR_FILLCOLOR, ::cppu::UnoType<sal_Int16>::get(), 0, MID_COLOR_LUM_MOD}, \
+ { u"" UNO_NAME_FILLCOLOR_LUM_OFF, XATTR_FILLCOLOR, ::cppu::UnoType<sal_Int16>::get(), 0, MID_COLOR_LUM_OFF}, \
{ u"" UNO_NAME_GRAPHIC_GRAPHICCROP, SDRATTR_GRAFCROP , ::cppu::UnoType<css::text::GraphicCrop>::get(), 0, 0 },
#define EDGERADIUS_PROPERTIES \
diff --git a/include/svx/xcolit.hxx b/include/svx/xcolit.hxx
index 9f35416b56ae..1c9e249bfccb 100644
--- a/include/svx/xcolit.hxx
+++ b/include/svx/xcolit.hxx
@@ -21,8 +21,9 @@
#define INCLUDED_SVX_XCOLIT_HXX
#include <tools/color.hxx>
-#include <svx/svxdllapi.h>
+#include <editeng/colritem.hxx>
+#include <svx/svxdllapi.h>
#include <svx/xit.hxx>
class XColorList;
@@ -32,6 +33,7 @@ class XColorList;
class SVXCORE_DLLPUBLIC XColorItem : public NameOrIndex
{
Color aColor;
+ SvxThemeColor maThemeColor;
public:
static SfxPoolItem* CreateDefault();
@@ -50,6 +52,10 @@ public:
const Color& GetColorValue() const;
void SetColorValue(const Color& rNew) { aColor = rNew; Detach(); }
+
+ SvxThemeColor& GetThemeColor() { return maThemeColor; }
+ const SvxThemeColor& GetThemeColor() const { return maThemeColor; }
+
virtual void dumpAsXml(xmlTextWriterPtr pWriter) const override;
};
diff --git a/include/test/lokcallback.hxx b/include/test/lokcallback.hxx
index a3f383bcec5e..e18724279040 100644
--- a/include/test/lokcallback.hxx
+++ b/include/test/lokcallback.hxx
@@ -39,6 +39,8 @@ public:
virtual void libreOfficeKitViewUpdatedCallback(int nType) override;
virtual void libreOfficeKitViewUpdatedCallbackPerViewId(int nType, int nViewId,
int nSourceViewId) override;
+ virtual void dumpState(rtl::OStringBuffer&) override{};
+
virtual void Invoke() override;
private:
diff --git a/include/vcl/ITiledRenderable.hxx b/include/vcl/ITiledRenderable.hxx
index 3c0a4cacabe0..32a9a0010ef9 100644
--- a/include/vcl/ITiledRenderable.hxx
+++ b/include/vcl/ITiledRenderable.hxx
@@ -343,6 +343,11 @@ public:
* E.g. select a list item from a drop down content control.
*/
virtual void executeContentControlEvent(const StringMap&) {}
+
+ /**
+ * Allow / disable drawing current text edit (used in Impress for slide previews)
+ */
+ virtual void setPaintTextEdit(bool) {}
};
} // namespace vcl
diff --git a/include/vcl/filter/PDFiumLibrary.hxx b/include/vcl/filter/PDFiumLibrary.hxx
index c5f1766f60c0..3a4d0d83faf6 100644
--- a/include/vcl/filter/PDFiumLibrary.hxx
+++ b/include/vcl/filter/PDFiumLibrary.hxx
@@ -55,7 +55,9 @@ public:
virtual const OUString& getLastError() const = 0;
- virtual std::unique_ptr<PDFiumDocument> openDocument(const void* pData, int nSize) = 0;
+ virtual std::unique_ptr<PDFiumDocument> openDocument(const void* pData, int nSize,
+ const OString& rPassword)
+ = 0;
virtual PDFErrorType getLastErrorCode() = 0;
virtual std::unique_ptr<PDFiumBitmap> createBitmap(int nWidth, int nHeight, int nAlpha) = 0;
};
diff --git a/include/vcl/filter/pdfdocument.hxx b/include/vcl/filter/pdfdocument.hxx
index aa0e8c67ea66..dd03029227d2 100644
--- a/include/vcl/filter/pdfdocument.hxx
+++ b/include/vcl/filter/pdfdocument.hxx
@@ -595,6 +595,8 @@ public:
bool updateObject(sal_Int32 n) override;
/// See vcl::PDFObjectContainer::writeBuffer().
bool writeBuffer(const void* pBuffer, sal_uInt64 nBytes) override;
+ void checkAndEnableStreamEncryption(sal_Int32 /*nObject*/) override {}
+ void disableStreamEncryption() override {}
};
/// The trailer singleton is at the end of the doc.
diff --git a/include/vcl/filter/pdfobjectcontainer.hxx b/include/vcl/filter/pdfobjectcontainer.hxx
index ca4898737e10..f6614f09ea3d 100644
--- a/include/vcl/filter/pdfobjectcontainer.hxx
+++ b/include/vcl/filter/pdfobjectcontainer.hxx
@@ -28,6 +28,10 @@ public:
// Write pBuffer to the end of the output.
virtual bool writeBuffer(const void* pBuffer, sal_uInt64 nBytes) = 0;
+ virtual void checkAndEnableStreamEncryption(sal_Int32 nObject) = 0;
+
+ virtual void disableStreamEncryption() = 0;
+
protected:
~PDFObjectContainer() noexcept = default;
};
diff --git a/include/vcl/lok.hxx b/include/vcl/lok.hxx
index 108f46def8aa..31a4cf1ec494 100644
--- a/include/vcl/lok.hxx
+++ b/include/vcl/lok.hxx
@@ -12,6 +12,7 @@
#include <sal/config.h>
#include <vcl/dllapi.h>
+#include <rtl/strbuf.hxx>
#include <LibreOfficeKit/LibreOfficeKitTypes.h>
namespace vcl::lok
@@ -24,6 +25,8 @@ void VCL_DLLPUBLIC unregisterPollCallbacks();
// Called to tell VCL that the number of document views has changed, so that VCL
// can adjust e.g. sizes of bitmap caches to scale well with larger number of users.
void VCL_DLLPUBLIC numberOfViewsChanged(int count);
+
+void VCL_DLLPUBLIC dumpState(rtl::OStringBuffer& rState);
}
#endif // INCLUDE_VCL_LOK_HXX
diff --git a/include/vcl/toolkit/treelistbox.hxx b/include/vcl/toolkit/treelistbox.hxx
index 0fdf8a0e469c..38b81e438a65 100644
--- a/include/vcl/toolkit/treelistbox.hxx
+++ b/include/vcl/toolkit/treelistbox.hxx
@@ -198,7 +198,7 @@ class VCL_DLLPUBLIC SvTreeListBox
Link<SvTreeListBox*,void> aSelectHdl;
Link<SvTreeListBox*,void> aDeselectHdl;
Link<const CommandEvent&, bool> aPopupMenuHdl;
- Link<const HelpEvent&, bool> aTooltipHdl;
+ Link<SvTreeListEntry*, OUString> aTooltipHdl;
Link<svtree_render_args, void> aCustomRenderHdl;
Link<svtree_measure_args, Size> aCustomMeasureHdl;
@@ -395,6 +395,8 @@ public:
SvViewDataItem* GetViewDataItem(SvTreeListEntry const *, SvLBoxItem const *);
const SvViewDataItem* GetViewDataItem(const SvTreeListEntry*, const SvLBoxItem*) const;
+ OUString GetEntryTooltip(SvTreeListEntry* pEntry) const { return aTooltipHdl.Call(pEntry); }
+
bool IsInplaceEditingEnabled() const { return bool(nImpFlags & SvTreeListBoxFlags::EDT_ENABLED); }
bool IsEditingActive() const { return bool(nImpFlags & SvTreeListBoxFlags::IN_EDT); }
void EndEditing( bool bCancel = false );
@@ -409,7 +411,7 @@ public:
void SetExpandingHdl(const Link<SvTreeListBox*,bool>& rNewHdl){aExpandingHdl=rNewHdl;}
void SetExpandedHdl(const Link<SvTreeListBox*,void>& rNewHdl){aExpandedHdl=rNewHdl;}
void SetPopupMenuHdl(const Link<const CommandEvent&, bool>& rLink) { aPopupMenuHdl = rLink; }
- void SetTooltipHdl(const Link<const HelpEvent&, bool>& rLink) { aTooltipHdl = rLink; }
+ void SetTooltipHdl(const Link<SvTreeListEntry*, OUString>& rLink) { aTooltipHdl = rLink; }
void SetCustomRenderHdl(const Link<svtree_render_args, void>& rLink) { aCustomRenderHdl = rLink; }
void SetCustomMeasureHdl(const Link<svtree_measure_args, Size>& rLink) { aCustomMeasureHdl = rLink; }
diff --git a/include/vcl/window.hxx b/include/vcl/window.hxx
index 747b328d5505..08c87993b65e 100644
--- a/include/vcl/window.hxx
+++ b/include/vcl/window.hxx
@@ -1461,6 +1461,7 @@ public:
virtual FactoryFunction GetUITestFactory() const;
virtual bool IsChart() const { return false; }
+ virtual bool IsStarMath() const { return false; }
void SetHelpHdl(const Link<vcl::Window&, bool>& rLink);
void SetMnemonicActivateHdl(const Link<vcl::Window&, bool>& rLink);
diff --git a/include/xmloff/xmltoken.hxx b/include/xmloff/xmltoken.hxx
index b0e9003b0261..06ea2e2fec27 100644
--- a/include/xmloff/xmltoken.hxx
+++ b/include/xmloff/xmltoken.hxx
@@ -3467,6 +3467,25 @@ namespace xmloff::token {
XML_LINKED_STYLE_NAME,
+ XML_THEME,
+ XML_THEME_COLOR,
+ XML_FILL_THEME_COLOR,
+ XML_DK1,
+ XML_LT1,
+ XML_DK2,
+ XML_LT2,
+ XML_ACCENT1,
+ XML_ACCENT2,
+ XML_ACCENT3,
+ XML_ACCENT4,
+ XML_ACCENT5,
+ XML_ACCENT6,
+ XML_HLINK,
+ XML_FOLHLINK,
+ XML_COLOR_LUM_MOD,
+ XML_COLOR_LUM_OFF,
+ XML_FILL_COLOR_LUM_MOD,
+ XML_FILL_COLOR_LUM_OFF,
XML_CONTENT_CONTROL,
XML_SHOWING_PLACE_HOLDER,
@@ -3476,6 +3495,7 @@ namespace xmloff::token {
XML_PICTURE,
XML_DATE_FORMAT,
XML_DATE_RFC_LANGUAGE_TAG,
+ XML_PLAIN_TEXT,
XML_TOKEN_END
};
diff --git a/include/xmloff/xmltypes.hxx b/include/xmloff/xmltypes.hxx
index 625e3a5b9c68..13e7c3fcc6c0 100644
--- a/include/xmloff/xmltypes.hxx
+++ b/include/xmloff/xmltypes.hxx
@@ -153,6 +153,7 @@
#define XML_TYPE_NEG_PERCENT16 0x00002023 // (100-x)
#define XML_TYPE_DOUBLE_PERCENT 0x00002024 // 50% (source is a double from 0.0 to 1.0)
#define XML_TYPE_HEX 0x00002025 // 00544F1B
+#define XML_TYPE_PERCENT100 0x00002026 // 100th percent
// special basic types
#define XML_TYPE_RECTANGLE_LEFT 0x00000100 // the Left member of an awt::Rectangle as a measure
@@ -293,6 +294,7 @@
#define XML_TYPE_GRAPHIC (XML_TEXT_TYPES_START + 127)
#define XML_SW_TYPE_PRESPAGE_BACKSIZE (XML_TEXT_TYPES_START + 128)
#define XML_SW_TYPE_RTLGUTTER (XML_TEXT_TYPES_START + 129)
+#define XML_TYPE_THEME_COLOR (XML_TEXT_TYPES_START + 130)
#endif // INCLUDED_XMLOFF_XMLTYPES_HXX
diff --git a/lingucomponent/source/spellcheck/languagetool/languagetoolimp.cxx b/lingucomponent/source/spellcheck/languagetool/languagetoolimp.cxx
index 5479e67e82c4..da0d133a6965 100644
--- a/lingucomponent/source/spellcheck/languagetool/languagetoolimp.cxx
+++ b/lingucomponent/source/spellcheck/languagetool/languagetoolimp.cxx
@@ -41,6 +41,7 @@
#include <com/sun/star/uno/Any.hxx>
#include <unotools/lingucfg.hxx>
#include <osl/mutex.hxx>
+#include <sal/log.hxx>
using namespace osl;
using namespace com::sun::star;
@@ -332,8 +333,12 @@ std::string LanguageToolGrammarChecker::makeHttpRequest(std::string_view aURL, H
curl_easy_setopt(curl.get(), CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl.get(), CURLOPT_WRITEDATA, static_cast<void*>(&response_body));
- curl_easy_setopt(curl.get(), CURLOPT_SSL_VERIFYPEER, false);
- curl_easy_setopt(curl.get(), CURLOPT_SSL_VERIFYHOST, false);
+ // allow unknown or self-signed certificates
+ if (rLanguageOpts.getSSLVerification() == false)
+ {
+ curl_easy_setopt(curl.get(), CURLOPT_SSL_VERIFYPEER, false);
+ curl_easy_setopt(curl.get(), CURLOPT_SSL_VERIFYHOST, false);
+ }
curl_easy_setopt(curl.get(), CURLOPT_TIMEOUT, CURL_TIMEOUT);
if (method == HTTP_METHOD::HTTP_POST)
@@ -350,8 +355,11 @@ std::string LanguageToolGrammarChecker::makeHttpRequest(std::string_view aURL, H
}
}
- /*CURLcode cc = */
- curl_easy_perform(curl.get());
+ CURLcode cc = curl_easy_perform(curl.get());
+ if (cc != CURLE_OK)
+ {
+ SAL_WARN("languagetool", "CURL request returned with error: " << static_cast<sal_Int32>(cc));
+ }
curl_easy_getinfo(curl.get(), CURLINFO_RESPONSE_CODE, &nStatusCode);
return response_body;
}
diff --git a/lo.xcent b/lo.xcent.in
index 56bb981916fe..4b7303876e6b 100644
--- a/lo.xcent
+++ b/lo.xcent.in
@@ -14,16 +14,14 @@
<true/>
<key>com.apple.security.network.client</key>
<true/>
- <key>com.apple.security.network.server</key>
- <true/>
- <key>com.apple.security.device.bluetooth</key>
- <true/>
<key>com.apple.security.print</key>
<true/>
<key>com.apple.security.cs.disable-executable-page-protection</key>
<true/>
- <!-- Allow Base to import data from Address Book -->
- <key>com.apple.security.personal-information.addressbook</key>
- <true/>
+ <!-- Allow Base to import data from Address Book -->
+ <key>com.apple.security.personal-information.addressbook</key>
+ <true/>
+@SDREMOTE_ENTITLEMENT@
+@MACOSX_PROVISIONING_INFO@
</dict>
</plist>
diff --git a/offapi/UnoApi_offapi.mk b/offapi/UnoApi_offapi.mk
index 5de7528805a5..c058d85b7a91 100644
--- a/offapi/UnoApi_offapi.mk
+++ b/offapi/UnoApi_offapi.mk
@@ -649,6 +649,7 @@ $(eval $(call gb_UnoApi_add_idlfiles_noheader,offapi,com/sun/star/chart2,\
DataPoint \
DataPointProperties \
DataSeries \
+ DataTable \
Diagram \
ErrorBar \
GridProperties \
@@ -2041,6 +2042,7 @@ $(eval $(call gb_UnoApi_add_idlfiles,offapi,com/sun/star/chart2,\
XDataPointCustomLabelField \
XDataSeries \
XDataSeriesContainer \
+ XDataTable \
XDefaultSizeTransmitter \
XDiagram \
XDiagramProvider \
diff --git a/offapi/com/sun/star/chart2/DataTable.idl b/offapi/com/sun/star/chart2/DataTable.idl
new file mode 100644
index 000000000000..5e75d98bd1d4
--- /dev/null
+++ b/offapi/com/sun/star/chart2/DataTable.idl
@@ -0,0 +1,48 @@
+/* -*- 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/.
+ */
+
+module com
+{
+module sun
+{
+module star
+{
+module chart2
+{
+
+/** Describes a data table for a Diagram.
+ @since LibreOffice 7.5
+ */
+service DataTable
+{
+ service com::sun::star::beans::PropertySet;
+ service com::sun::star::drawing::FillProperties;
+ service com::sun::star::drawing::LineProperties;
+
+ /** The interface for registering and removing data table entries.
+ */
+ interface ::com::sun::star::chart2::XDataTable;
+
+ /** Show the horizontal border of the data table */
+ [optional, property] boolean HBorder;
+
+ /** Show the vertical border of the data table */
+ [optional, property] boolean VBorder;
+
+ /** Show the outline of the data table */
+ [optional, property] boolean Outline;
+
+ /** Show the legend keys in the data table */
+ [optional, property] boolean Keys;
+
+};
+
+}; }; }; }; // com::sun::star::chart2
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/chart2/Diagram.idl b/offapi/com/sun/star/chart2/Diagram.idl
index 2ae557e64c71..514f116e3aef 100644
--- a/offapi/com/sun/star/chart2/Diagram.idl
+++ b/offapi/com/sun/star/chart2/Diagram.idl
@@ -91,12 +91,6 @@ service Diagram
[optional, property] boolean RightAngledAxes;
- /** Chart Datatable flags
- */
- [optional, property] boolean DataTableHBorder;
- [optional, property] boolean DataTableVBorder;
- [optional, property] boolean DataTableOutline;
-
/** Perspective of 3D charts ( [0,100] ).
*/
[optional, property] long Perspective;
diff --git a/offapi/com/sun/star/chart2/XDataTable.idl b/offapi/com/sun/star/chart2/XDataTable.idl
new file mode 100644
index 000000000000..8431a586cf34
--- /dev/null
+++ b/offapi/com/sun/star/chart2/XDataTable.idl
@@ -0,0 +1,28 @@
+/* -*- 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/.
+ */
+
+module com
+{
+module sun
+{
+module star
+{
+module chart2
+{
+
+/** Interface for the data table of a diagram
+ @since LibreOffice 7.5
+ */
+interface XDataTable : ::com::sun::star::uno::XInterface
+{
+};
+
+}; }; }; }; // com::sun::star::chart2
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/chart2/XDiagram.idl b/offapi/com/sun/star/chart2/XDiagram.idl
index a878759be40d..b95e19cb7d34 100644
--- a/offapi/com/sun/star/chart2/XDiagram.idl
+++ b/offapi/com/sun/star/chart2/XDiagram.idl
@@ -91,6 +91,15 @@ interface XDiagram : ::com::sun::star::uno::XInterface
*/
void setDiagramData( [in] com::sun::star::chart2::data::XDataSource xDataSource,
[in] sequence< com::sun::star::beans::PropertyValue > aArguments );
+
+
+ /** returns the data table
+ */
+ XDataTable getDataTable();
+
+ /** sets a new data table.
+ */
+ void setDataTable([in] XDataTable xDataTable);
};
} ; // chart2
diff --git a/officecfg/Configuration_officecfg.mk b/officecfg/Configuration_officecfg.mk
index dc8802628451..89a8a57504e9 100644
--- a/officecfg/Configuration_officecfg.mk
+++ b/officecfg/Configuration_officecfg.mk
@@ -118,6 +118,7 @@ $(eval $(call gb_Configuration_add_spool_modules,registry,officecfg/registry/dat
org/openoffice/Office/UI/WriterWindowState-librelogo.xcu \
) \
org/openoffice/Office/UI/Controller-reportbuilder.xcu \
+ org/openoffice/Office/UI/Infobar-macosxsandbox.xcu \
org/openoffice/TypeDetection/UISort-writer.xcu \
org/openoffice/TypeDetection/UISort-calc.xcu \
org/openoffice/TypeDetection/UISort-draw.xcu \
diff --git a/officecfg/registry/data/org/openoffice/Office/Calc.xcu b/officecfg/registry/data/org/openoffice/Office/Calc.xcu
index a62d06512704..eda60fe6c434 100644
--- a/officecfg/registry/data/org/openoffice/Office/Calc.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/Calc.xcu
@@ -228,6 +228,17 @@
<value>3.45280</value>
</prop>
</node>
+ <node oor:name="CR20" oor:op="replace">
+ <prop oor:name="FromUnit">
+ <value>EUR</value>
+ </prop>
+ <prop oor:name="ToUnit">
+ <value>HRK</value>
+ </prop>
+ <prop oor:name="Factor">
+ <value>7.53450</value>
+ </prop>
+ </node>
</node>
<node oor:name="Calculate">
<node oor:name="Other">
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu
index 7f244744d2a7..0cc1c12cb1e9 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu
@@ -1076,7 +1076,7 @@
</node>
<node oor:name=".uno:InsertSparkline" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
- <value xml:lang="en-US">Insert Sparkline...</value>
+ <value xml:lang="en-US">Sparkline...</value>
</prop>
<prop oor:name="Properties" oor:type="xs:int">
<value>1</value>
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/Infobar.xcu b/officecfg/registry/data/org/openoffice/Office/UI/Infobar.xcu
new file mode 100644
index 000000000000..109e2198d408
--- /dev/null
+++ b/officecfg/registry/data/org/openoffice/Office/UI/Infobar.xcu
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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/.
+ *
+-->
+<!DOCTYPE oor:component-data SYSTEM "../../../../../component-update.dtd">
+<oor:component-data oor:name="Infobar" oor:package="org.openoffice.Office.UI" xmlns:install="http://openoffice.org/2004/installation" xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <node oor:name="Enabled" install:module="macosxsandbox">
+ <prop oor:name="Donate">
+ <value>false</value>
+ </prop>
+ </node>
+</oor:component-data>
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu
index 37996759a90d..f6e4a8f4f466 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu
@@ -667,6 +667,14 @@
<value>1</value>
</prop>
</node>
+ <node oor:name=".uno:InsertPlainTextContentControl" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Insert Plain Text Content Control</value>
+ </prop>
+ <prop oor:name="Properties" oor:type="xs:int">
+ <value>1</value>
+ </prop>
+ </node>
<node oor:name=".uno:InsertObjectDialog" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
<value xml:lang="en-US">Insert Other Objects</value>
diff --git a/officecfg/registry/schema/org/openoffice/Office/Linguistic.xcs b/officecfg/registry/schema/org/openoffice/Office/Linguistic.xcs
index 8a9239e570f4..a3fc5f1296c8 100644
--- a/officecfg/registry/schema/org/openoffice/Office/Linguistic.xcs
+++ b/officecfg/registry/schema/org/openoffice/Office/Linguistic.xcs
@@ -435,6 +435,13 @@
</info>
<value>false</value>
</prop>
+ <prop oor:name="SSLCertVerify" oor:type="xs:boolean" oor:nillable="false">
+ <info>
+ <desc>Enable or disable SSL certificate verification for HTTPS requests</desc>
+ <label>API SSL verification control</label>
+ </info>
+ <value>true</value>
+ </prop>
</group>
</group>
<group oor:name="Hyphenation">
diff --git a/oox/inc/drawingml/fillproperties.hxx b/oox/inc/drawingml/fillproperties.hxx
index f308f6aaec0d..532cb0ec3975 100644
--- a/oox/inc/drawingml/fillproperties.hxx
+++ b/oox/inc/drawingml/fillproperties.hxx
@@ -145,6 +145,7 @@ struct FillProperties
const GraphicHelper& rGraphicHelper,
sal_Int32 nShapeRotation = 0,
::Color nPhClr = API_RGB_TRANSPARENT,
+ sal_Int16 nPhClrTheme = -1,
bool bFlipH = false,
bool bFlipV = false,
bool bIsCustomShape = false ) const;
diff --git a/oox/qa/unit/data/refer-to-theme-shape-fill.odp b/oox/qa/unit/data/refer-to-theme-shape-fill.odp
new file mode 100644
index 000000000000..3a32aa71690a
--- /dev/null
+++ b/oox/qa/unit/data/refer-to-theme-shape-fill.odp
Binary files differ
diff --git a/oox/qa/unit/data/refer-to-theme.pptx b/oox/qa/unit/data/refer-to-theme.pptx
index 9a45799ab977..9f05bf7b07e5 100644
--- a/oox/qa/unit/data/refer-to-theme.pptx
+++ b/oox/qa/unit/data/refer-to-theme.pptx
Binary files differ
diff --git a/oox/qa/unit/data/theme-tint.pptx b/oox/qa/unit/data/theme-tint.pptx
new file mode 100644
index 000000000000..23ab7589dea0
--- /dev/null
+++ b/oox/qa/unit/data/theme-tint.pptx
Binary files differ
diff --git a/oox/qa/unit/drawingml.cxx b/oox/qa/unit/drawingml.cxx
index 9ae434717fb8..4dc066f98039 100644
--- a/oox/qa/unit/drawingml.cxx
+++ b/oox/qa/unit/drawingml.cxx
@@ -29,6 +29,7 @@
#include <com/sun/star/drawing/TextHorizontalAdjust.hpp>
#include <com/sun/star/drawing/XMasterPageTarget.hpp>
#include <com/sun/star/text/XTextRange.hpp>
+#include <com/sun/star/table/XCellRange.hpp>
#include <unotools/mediadescriptor.hxx>
#include <unotools/tempfile.hxx>
@@ -509,6 +510,37 @@ CPPUNIT_TEST_FIXTURE(OoxDrawingmlTest, testTdf132557_footerCustomShapes)
xShapeSlideNum->getShapeType());
}
+CPPUNIT_TEST_FIXTURE(OoxDrawingmlTest, testThemeTint)
+{
+ // Given a document with a table style, using theme color with tinting in the A2 cell:
+ OUString aURL = m_directories.getURLFromSrc(DATA_DIRECTORY) + "theme-tint.pptx";
+
+ // When loading that document:
+ load(aURL);
+
+ // Then make sure that we only import theming info to the doc model if the effects are limited
+ // to lum mod / off that we can handle (i.e. no tint/shade):
+ uno::Reference<drawing::XDrawPagesSupplier> xDrawPagesSupplier(getComponent(), uno::UNO_QUERY);
+ uno::Reference<drawing::XDrawPage> xDrawPage(xDrawPagesSupplier->getDrawPages()->getByIndex(0),
+ uno::UNO_QUERY);
+ uno::Reference<beans::XPropertySet> xShape(xDrawPage->getByIndex(0), uno::UNO_QUERY);
+ uno::Reference<table::XCellRange> xTable;
+ CPPUNIT_ASSERT(xShape->getPropertyValue("Model") >>= xTable);
+ uno::Reference<beans::XPropertySet> xA1(xTable->getCellByPosition(0, 0), uno::UNO_QUERY);
+ sal_Int16 nFillColorTheme{};
+ CPPUNIT_ASSERT(xA1->getPropertyValue("FillColorTheme") >>= nFillColorTheme);
+ // This is OK, no problematic effects:
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int16>(4), nFillColorTheme);
+ uno::Reference<beans::XPropertySet> xA2(xTable->getCellByPosition(0, 1), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xA2->getPropertyValue("FillColorTheme") >>= nFillColorTheme);
+ // Without the accompanying fix in place, this test would have failed with:
+ // - Expected: -1
+ // - Actual : 4
+ // i.e. we remembered the theme index, without being able to remember the tint effect, leading
+ // to a bad background color.
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int16>(-1), nFillColorTheme);
+}
+
CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/qa/unit/export.cxx b/oox/qa/unit/export.cxx
index 58169c558e48..05735d0c8d61 100644
--- a/oox/qa/unit/export.cxx
+++ b/oox/qa/unit/export.cxx
@@ -587,7 +587,54 @@ CPPUNIT_TEST_FIXTURE(Test, testReferToTheme)
// - Actual : 0
// - XPath '//p:sp/p:txBody/a:p/a:r/a:rPr/a:solidFill/a:schemeClr' number of nodes is incorrect
// i.e. the <a:schemeClr> element was not written.
- assertXPath(pXmlDoc, "//p:sp/p:txBody/a:p/a:r/a:rPr/a:solidFill/a:schemeClr", "val", "accent1");
+ assertXPath(pXmlDoc, "//p:sp[1]/p:txBody/a:p/a:r/a:rPr/a:solidFill/a:schemeClr", "val",
+ "accent1");
+ assertXPath(pXmlDoc, "//p:sp[1]/p:txBody/a:p/a:r/a:rPr/a:solidFill/a:schemeClr/a:lumMod", 0);
+ assertXPath(pXmlDoc, "//p:sp[1]/p:txBody/a:p/a:r/a:rPr/a:solidFill/a:schemeClr/a:lumOff", 0);
+
+ // Second shape: lighter color:
+ // Without the accompanying fix in place, this test would have failed with:
+ // - Expected: 1
+ // - Actual : 0
+ // - XPath '//p:sp[2]/p:txBody/a:p/a:r/a:rPr/a:solidFill/a:schemeClr' number of nodes is incorrect
+ // i.e. the effects case did not write scheme colors.
+ assertXPath(pXmlDoc, "//p:sp[2]/p:txBody/a:p/a:r/a:rPr/a:solidFill/a:schemeClr", "val",
+ "accent1");
+ assertXPath(pXmlDoc, "//p:sp[2]/p:txBody/a:p/a:r/a:rPr/a:solidFill/a:schemeClr/a:lumMod", "val",
+ "40000");
+ assertXPath(pXmlDoc, "//p:sp[2]/p:txBody/a:p/a:r/a:rPr/a:solidFill/a:schemeClr/a:lumOff", "val",
+ "60000");
+
+ // Third shape, darker color:
+ assertXPath(pXmlDoc, "//p:sp[3]/p:txBody/a:p/a:r/a:rPr/a:solidFill/a:schemeClr", "val",
+ "accent1");
+ assertXPath(pXmlDoc, "//p:sp[3]/p:txBody/a:p/a:r/a:rPr/a:solidFill/a:schemeClr/a:lumMod", "val",
+ "75000");
+ assertXPath(pXmlDoc, "//p:sp[3]/p:txBody/a:p/a:r/a:rPr/a:solidFill/a:schemeClr/a:lumOff", 0);
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testReferToThemeShapeFill)
+{
+ // Given an ODP file that contains references to a theme for shape fill:
+ OUString aURL = m_directories.getURLFromSrc(DATA_DIRECTORY) + "refer-to-theme-shape-fill.odp";
+
+ // When saving that document:
+ loadAndSave(aURL, "Impress Office Open XML");
+
+ // Then make sure the shape fill color is a scheme color:
+ // Without the accompanying fix in place, this test would have failed with:
+ // - Expected: 1
+ // - Actual : 0
+ // i.e. the <a:schemeClr> element was not written. Note that this was already working from PPTX
+ // files via grab-bags, so this test intentionally uses an ODP file as input.
+ std::unique_ptr<SvStream> pStream = parseExportStream(getTempFile(), "ppt/slides/slide1.xml");
+ xmlDocUniquePtr pXmlDoc = parseXmlStream(pStream.get());
+ assertXPath(pXmlDoc, "//p:sp[1]/p:spPr/a:solidFill/a:schemeClr", "val", "accent1");
+ // Without the accompanying fix in place, this test would have failed with:
+ // - XPath '//p:sp[1]/p:spPr/a:solidFill/a:schemeClr/a:lumMod' number of nodes is incorrect
+ // i.e. the effects of the themed color were lost.
+ assertXPath(pXmlDoc, "//p:sp[1]/p:spPr/a:solidFill/a:schemeClr/a:lumMod", "val", "40000");
+ assertXPath(pXmlDoc, "//p:sp[1]/p:spPr/a:solidFill/a:schemeClr/a:lumOff", "val", "60000");
}
}
diff --git a/oox/source/drawingml/chart/datatableconverter.cxx b/oox/source/drawingml/chart/datatableconverter.cxx
index 802edc9464ac..3c477c5d7507 100644
--- a/oox/source/drawingml/chart/datatableconverter.cxx
+++ b/oox/source/drawingml/chart/datatableconverter.cxx
@@ -20,6 +20,7 @@
#include <drawingml/chart/datatableconverter.hxx>
#include <com/sun/star/chart2/XDiagram.hpp>
+#include <com/sun/star/chart2/XDataTable.hpp>
#include <drawingml/chart/plotareamodel.hxx>
#include <oox/token/properties.hxx>
@@ -36,13 +37,28 @@ DataTableConverter::~DataTableConverter() = default;
void DataTableConverter::convertFromModel(uno::Reference<chart2::XDiagram> const& rxDiagram)
{
- PropertySet aPropSet(rxDiagram);
- if (mrModel.mbShowHBorder)
- aPropSet.setProperty(PROP_DataTableHBorder, mrModel.mbShowHBorder);
- if (mrModel.mbShowVBorder)
- aPropSet.setProperty(PROP_DataTableVBorder, mrModel.mbShowVBorder);
- if (mrModel.mbShowOutline)
- aPropSet.setProperty(PROP_DataTableOutline, mrModel.mbShowOutline);
+ if (!rxDiagram.is())
+ return;
+
+ try
+ {
+ uno::Reference<chart2::XDataTable> xDataTable(
+ createInstance("com.sun.star.chart2.DataTable"), uno::UNO_QUERY_THROW);
+ rxDiagram->setDataTable(xDataTable);
+
+ PropertySet aPropSet(xDataTable);
+ if (mrModel.mbShowHBorder)
+ aPropSet.setProperty(PROP_HBorder, mrModel.mbShowHBorder);
+ if (mrModel.mbShowVBorder)
+ aPropSet.setProperty(PROP_VBorder, mrModel.mbShowVBorder);
+ if (mrModel.mbShowOutline)
+ aPropSet.setProperty(PROP_Outline, mrModel.mbShowOutline);
+ if (mrModel.mbShowKeys)
+ aPropSet.setProperty(PROP_Keys, mrModel.mbShowKeys);
+ }
+ catch (uno::Exception&)
+ {
+ }
}
} // namespace oox
diff --git a/oox/source/drawingml/chart/plotareaconverter.cxx b/oox/source/drawingml/chart/plotareaconverter.cxx
index afbb28adee03..226bc866f867 100644
--- a/oox/source/drawingml/chart/plotareaconverter.cxx
+++ b/oox/source/drawingml/chart/plotareaconverter.cxx
@@ -433,8 +433,11 @@ void PlotAreaConverter::convertFromModel( View3DModel& rView3DModel )
nAxesSetIdx = 1 - nAxesSetIdx;
}
- DataTableConverter dataTableConverter (*this, mrModel.mxDataTable.getOrCreate());
- dataTableConverter.convertFromModel(xDiagram);
+ if (mrModel.mxDataTable)
+ {
+ DataTableConverter dataTableConverter(*this, *mrModel.mxDataTable);
+ dataTableConverter.convertFromModel(xDiagram);
+ }
// plot area formatting
if( xDiagram.is() && !mb3dChart )
diff --git a/oox/source/drawingml/color.cxx b/oox/source/drawingml/color.cxx
index ee854a761fa2..f810deecf2bf 100644
--- a/oox/source/drawingml/color.cxx
+++ b/oox/source/drawingml/color.cxx
@@ -479,7 +479,7 @@ void Color::clearTransparence()
mnAlpha = MAX_PERCENT;
}
-sal_Int16 Color::getTintOrShade()
+sal_Int16 Color::getTintOrShade() const
{
for(auto const& aTransform : maTransforms)
{
@@ -496,7 +496,7 @@ sal_Int16 Color::getTintOrShade()
return 0;
}
-sal_Int16 Color::getLumMod()
+sal_Int16 Color::getLumMod() const
{
for (const auto& rTransform : maTransforms)
{
@@ -512,7 +512,7 @@ sal_Int16 Color::getLumMod()
return 10000;
}
-sal_Int16 Color::getLumOff()
+sal_Int16 Color::getLumOff() const
{
for (const auto& rTransform : maTransforms)
{
diff --git a/oox/source/drawingml/fillproperties.cxx b/oox/source/drawingml/fillproperties.cxx
index be7e86d7d029..0ef86bc75f5c 100644
--- a/oox/source/drawingml/fillproperties.cxx
+++ b/oox/source/drawingml/fillproperties.cxx
@@ -88,67 +88,59 @@ Reference< XGraphic > lclRotateGraphic(uno::Reference<graphic::XGraphic> const &
return aReturnGraphic.GetXGraphic();
}
-void lclCalculateCropPercentage(uno::Reference<graphic::XGraphic> const & xGraphic, geometry::IntegerRectangle2D &aFillRect)
+using Quotients = std::tuple<double, double, double, double>;
+Quotients getQuotients(geometry::IntegerRectangle2D aRelRect, double hDiv, double vDiv)
{
- ::Graphic aGraphic(xGraphic);
- assert (aGraphic.GetType() == GraphicType::Bitmap);
-
- BitmapEx aBitmapEx(aGraphic.GetBitmapEx());
-
- sal_Int32 nScaledWidth = aBitmapEx.GetSizePixel().Width();
- sal_Int32 nScaledHeight = aBitmapEx.GetSizePixel().Height();
-
- sal_Int32 nOrigWidth = (nScaledWidth * (100000 - aFillRect.X1 - aFillRect.X2)) / 100000;
- if (nOrigWidth == 0)
- {
- nOrigWidth = 1;
- }
- sal_Int32 nOrigHeight = (nScaledHeight * (100000 - aFillRect.Y1 - aFillRect.Y2)) / 100000;
- if (nOrigHeight == 0)
- {
- nOrigHeight = 1;
- }
+ return { aRelRect.X1 / hDiv, aRelRect.Y1 / vDiv, aRelRect.X2 / hDiv, aRelRect.Y2 / vDiv };
+}
- sal_Int32 nLeftPercentage = nScaledWidth * aFillRect.X1 / nOrigWidth;
- sal_Int32 nRightPercentage = nScaledWidth * aFillRect.X2 / nOrigWidth;
- sal_Int32 nTopPercentage = nScaledHeight * aFillRect.Y1 / nOrigHeight;
- sal_Int32 nBottomPercentage = nScaledHeight * aFillRect.Y2 / nOrigHeight;
+// ECMA-376 Part 1 20.1.8.55 srcRect (Source Rectangle)
+std::optional<Quotients> CropQuotientsFromSrcRect(geometry::IntegerRectangle2D aSrcRect)
+{
+ aSrcRect.X1 = std::max(aSrcRect.X1, sal_Int32(0));
+ aSrcRect.X2 = std::max(aSrcRect.X2, sal_Int32(0));
+ aSrcRect.Y1 = std::max(aSrcRect.Y1, sal_Int32(0));
+ aSrcRect.Y2 = std::max(aSrcRect.Y2, sal_Int32(0));
+ if (aSrcRect.X1 + aSrcRect.X2 >= 100'000 || aSrcRect.Y1 + aSrcRect.Y2 >= 100'000)
+ return {}; // Cropped everything
+ return getQuotients(aSrcRect, 100'000.0, 100'000.0);
+}
- aFillRect.X1 = -nLeftPercentage;
- aFillRect.X2 = -nRightPercentage;
- aFillRect.Y1 = -nTopPercentage;
- aFillRect.Y2 = -nBottomPercentage;
+// ECMA-376 Part 1 20.1.8.30 fillRect (Fill Rectangle)
+std::optional<Quotients> CropQuotientsFromFillRect(geometry::IntegerRectangle2D aFillRect)
+{
+ aFillRect.X1 = std::min(aFillRect.X1, sal_Int32(0));
+ aFillRect.X2 = std::min(aFillRect.X2, sal_Int32(0));
+ aFillRect.Y1 = std::min(aFillRect.Y1, sal_Int32(0));
+ aFillRect.Y2 = std::min(aFillRect.Y2, sal_Int32(0));
+ // Negative divisor and negative relative offset give positive value wanted in lclCropGraphic
+ return getQuotients(aFillRect, -100'000.0 + aFillRect.X1 + aFillRect.X2,
+ -100'000.0 + aFillRect.Y1 + aFillRect.Y2);
}
-// Crops a piece of the bitmap. Takes negative aFillRect values. Negative values means "crop",
-// positive values means "grow" bitmap with empty spaces. lclCropGraphic doesn't handle growing.
-Reference< XGraphic > lclCropGraphic(uno::Reference<graphic::XGraphic> const & xGraphic, geometry::IntegerRectangle2D aFillRect)
+// Crops a piece of the bitmap. lclCropGraphic doesn't handle growing.
+Reference<XGraphic> lclCropGraphic(uno::Reference<graphic::XGraphic> const& xGraphic,
+ std::optional<Quotients> quotients)
{
::Graphic aGraphic(xGraphic);
- ::Graphic aReturnGraphic;
-
assert (aGraphic.GetType() == GraphicType::Bitmap);
- BitmapEx aBitmapEx(aGraphic.GetBitmapEx());
-
- sal_Int32 nOrigHeight = aBitmapEx.GetSizePixel().Height();
- sal_Int32 nHeight = nOrigHeight;
- sal_Int32 nTopCorr = nOrigHeight * -1 * static_cast<double>(aFillRect.Y1) / 100000;
- nHeight += nTopCorr;
- sal_Int32 nBottomCorr = nOrigHeight * -1 * static_cast<double>(aFillRect.Y2) / 100000;
- nHeight += nBottomCorr;
+ BitmapEx aBitmapEx;
+ if (quotients)
+ {
+ aBitmapEx = aGraphic.GetBitmapEx();
- sal_Int32 nOrigWidth = aBitmapEx.GetSizePixel().Width();
- sal_Int32 nWidth = nOrigWidth;
- sal_Int32 nLeftCorr = nOrigWidth * -1 * static_cast<double>(aFillRect.X1) / 100000;
- nWidth += nLeftCorr;
- sal_Int32 nRightCorr = nOrigWidth * -1 * static_cast<double>(aFillRect.X2) / 100000;
- nWidth += nRightCorr;
+ const Size bmpSize = aBitmapEx.GetSizePixel();
+ const auto& [qx1, qy1, qx2, qy2] = *quotients;
+ const tools::Long l = std::round(bmpSize.Width() * qx1);
+ const tools::Long t = std::round(bmpSize.Height() * qy1);
+ const tools::Long r = std::round(bmpSize.Width() * qx2);
+ const tools::Long b = std::round(bmpSize.Height() * qy2);
- aBitmapEx.Scale(Size(nWidth, nHeight));
- aBitmapEx.Crop(tools::Rectangle(Point(nLeftCorr, nTopCorr), Size(nOrigWidth, nOrigHeight)));
+ aBitmapEx.Crop({ l, t, bmpSize.Width() - r - 1, bmpSize.Height() - b - 1 });
+ }
- aReturnGraphic = ::Graphic(aBitmapEx);
+ ::Graphic aReturnGraphic(aBitmapEx);
aReturnGraphic.setOriginURL(aGraphic.getOriginURL());
return aReturnGraphic.GetXGraphic();
@@ -377,7 +369,7 @@ Color FillProperties::getBestSolidColor() const
}
void FillProperties::pushToPropMap( ShapePropertyMap& rPropMap,
- const GraphicHelper& rGraphicHelper, sal_Int32 nShapeRotation, ::Color nPhClr,
+ const GraphicHelper& rGraphicHelper, sal_Int32 nShapeRotation, ::Color nPhClr, sal_Int16 nPhClrTheme,
bool bFlipH, bool bFlipV, bool bIsCustomShape) const
{
if( !moFillType.has() )
@@ -394,9 +386,22 @@ void FillProperties::pushToPropMap( ShapePropertyMap& rPropMap,
case XML_solidFill:
if( maFillColor.isUsed() )
{
- rPropMap.setProperty( ShapeProperty::FillColor, maFillColor.getColor( rGraphicHelper, nPhClr ) );
+ ::Color aFillColor = maFillColor.getColor(rGraphicHelper, nPhClr);
+ rPropMap.setProperty(ShapeProperty::FillColor, aFillColor);
if( maFillColor.hasTransparency() )
rPropMap.setProperty( ShapeProperty::FillTransparency, maFillColor.getTransparency() );
+
+ if (aFillColor == nPhClr)
+ {
+ rPropMap.setProperty(PROP_FillColorTheme, nPhClrTheme);
+ }
+ else if (maFillColor.getTintOrShade() == 0)
+ {
+ rPropMap.setProperty(PROP_FillColorTheme, maFillColor.getSchemeColorIndex());
+ rPropMap.setProperty(PROP_FillColorLumMod, maFillColor.getLumMod());
+ rPropMap.setProperty(PROP_FillColorLumOff, maFillColor.getLumOff());
+ }
+
eFillStyle = FillStyle_SOLID;
}
break;
@@ -799,8 +804,11 @@ void FillProperties::pushToPropMap( ShapePropertyMap& rPropMap,
if(bIsCustomShape && bHasCropValues && bNeedCrop)
{
- xGraphic = lclCropGraphic(xGraphic, aFillRect);
- rPropMap.setProperty(ShapeProperty::FillBitmap, xGraphic);
+ xGraphic = lclCropGraphic(xGraphic, CropQuotientsFromFillRect(aFillRect));
+ if (rPropMap.supportsProperty(ShapeProperty::FillBitmapName))
+ rPropMap.setProperty(ShapeProperty::FillBitmapName, xGraphic);
+ else
+ rPropMap.setProperty(ShapeProperty::FillBitmap, xGraphic);
}
}
}
@@ -913,9 +921,7 @@ void GraphicProperties::pushToPropMap( PropertyMap& rPropMap, const GraphicHelpe
if(mbIsCustomShape && bHasCropValues && bNeedCrop)
{
- geometry::IntegerRectangle2D aCropRect = oClipRect;
- lclCalculateCropPercentage(xGraphic, aCropRect);
- xGraphic = lclCropGraphic(xGraphic, aCropRect);
+ xGraphic = lclCropGraphic(xGraphic, CropQuotientsFromSrcRect(oClipRect));
}
}
}
diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx
index bebcbae240b6..e76d2386c800 100644
--- a/oox/source/drawingml/shape.cxx
+++ b/oox/source/drawingml/shape.cxx
@@ -1047,6 +1047,7 @@ Reference< XShape > const & Shape::createAndInsert(
::Color nLinePhClr(ColorTransparency, 0xffffffff);
::Color nFillPhClr(ColorTransparency, 0xffffffff);
+ sal_Int16 nFillPhClrTheme = -1;
// TODO: use ph color when applying effect properties
//sal_Int32 nEffectPhClr = -1;
@@ -1083,6 +1084,7 @@ Reference< XShape > const & Shape::createAndInsert(
if (!mbUseBgFill)
{
nFillPhClr = pFillRef->maPhClr.getColor(rGraphicHelper);
+ nFillPhClrTheme = pFillRef->maPhClr.getSchemeColorIndex();
}
OUString sColorScheme = pFillRef->maPhClr.getSchemeColorName();
@@ -1145,7 +1147,7 @@ Reference< XShape > const & Shape::createAndInsert(
if (getFillProperties().moFillType.has() && getFillProperties().moFillType.get() == XML_grpFill)
getFillProperties().assignUsed(aFillProperties);
if(!bIsCroppedGraphic)
- aFillProperties.pushToPropMap( aShapeProps, rGraphicHelper, mnRotation, nFillPhClr, mbFlipH, mbFlipV, bIsCustomShape );
+ aFillProperties.pushToPropMap( aShapeProps, rGraphicHelper, mnRotation, nFillPhClr, nFillPhClrTheme, mbFlipH, mbFlipV, bIsCustomShape );
LineProperties aLineProperties = getActualLineProperties(pTheme);
aLineProperties.pushToPropMap( aShapeProps, rGraphicHelper, nLinePhClr );
EffectProperties aEffectProperties = getActualEffectProperties(pTheme);
diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx
index 45274efa9315..57199b4a0d24 100644
--- a/oox/source/export/drawingml.cxx
+++ b/oox/source/export/drawingml.cxx
@@ -433,19 +433,31 @@ bool DrawingML::WriteCharColor(const css::uno::Reference<css::beans::XPropertySe
const char* pColorName = g_aPredefinedClrNames[nCharColorTheme];
- sal_Int32 nCharColorLumMod{};
- xPropertySet->getPropertyValue("CharColorLumMod") >>= nCharColorLumMod;
- sal_Int32 nCharColorLumOff{};
- xPropertySet->getPropertyValue("CharColorLumOff") >>= nCharColorLumOff;
sal_Int32 nCharColorTintOrShade{};
xPropertySet->getPropertyValue("CharColorTintOrShade") >>= nCharColorTintOrShade;
- if (nCharColorLumMod != 10000 || nCharColorLumOff != 0 || nCharColorTintOrShade != 0)
+ if (nCharColorTintOrShade != 0)
{
return false;
}
mpFS->startElementNS(XML_a, XML_solidFill);
- mpFS->singleElementNS(XML_a, XML_schemeClr, XML_val, pColorName);
+ mpFS->startElementNS(XML_a, XML_schemeClr, XML_val, pColorName);
+
+ sal_Int32 nCharColorLumMod{};
+ xPropertySet->getPropertyValue("CharColorLumMod") >>= nCharColorLumMod;
+ if (nCharColorLumMod != 10000)
+ {
+ mpFS->singleElementNS(XML_a, XML_lumMod, XML_val, OString::number(nCharColorLumMod * 10));
+ }
+
+ sal_Int32 nCharColorLumOff{};
+ xPropertySet->getPropertyValue("CharColorLumOff") >>= nCharColorLumOff;
+ if (nCharColorLumOff != 0)
+ {
+ mpFS->singleElementNS(XML_a, XML_lumOff, XML_val, OString::number(nCharColorLumOff * 10));
+ }
+
+ mpFS->endElementNS(XML_a, XML_schemeClr);
mpFS->endElementNS(XML_a, XML_solidFill);
return true;
@@ -543,7 +555,10 @@ void DrawingML::WriteSolidFill( const Reference< XPropertySet >& rXPropSet )
else if ( nFillColor != nOriginalColor )
{
// the user has set a different color for the shape
- WriteSolidFill( ::Color(ColorTransparency, nFillColor & 0xffffff), nAlpha );
+ if (!WriteFillColor(rXPropSet))
+ {
+ WriteSolidFill(::Color(ColorTransparency, nFillColor & 0xffffff), nAlpha);
+ }
}
else if ( !sColorFillScheme.isEmpty() )
{
@@ -558,6 +573,45 @@ void DrawingML::WriteSolidFill( const Reference< XPropertySet >& rXPropSet )
}
}
+bool DrawingML::WriteFillColor(const uno::Reference<beans::XPropertySet>& xPropertySet)
+{
+ if (!xPropertySet->getPropertySetInfo()->hasPropertyByName("FillColorTheme"))
+ {
+ return false;
+ }
+
+ sal_Int32 nFillColorTheme = -1;
+ xPropertySet->getPropertyValue("FillColorTheme") >>= nFillColorTheme;
+ if (nFillColorTheme < 0 || nFillColorTheme > 11)
+ {
+ return false;
+ }
+
+ const char* pColorName = g_aPredefinedClrNames[nFillColorTheme];
+
+ mpFS->startElementNS(XML_a, XML_solidFill);
+ mpFS->startElementNS(XML_a, XML_schemeClr, XML_val, pColorName);
+
+ sal_Int32 nFillColorLumMod{};
+ xPropertySet->getPropertyValue("FillColorLumMod") >>= nFillColorLumMod;
+ if (nFillColorLumMod != 10000)
+ {
+ mpFS->singleElementNS(XML_a, XML_lumMod, XML_val, OString::number(nFillColorLumMod * 10));
+ }
+
+ sal_Int32 nFillColorLumOff{};
+ xPropertySet->getPropertyValue("FillColorLumOff") >>= nFillColorLumOff;
+ if (nFillColorLumOff != 0)
+ {
+ mpFS->singleElementNS(XML_a, XML_lumOff, XML_val, OString::number(nFillColorLumOff * 10));
+ }
+
+ mpFS->endElementNS(XML_a, XML_schemeClr);
+ mpFS->endElementNS(XML_a, XML_solidFill);
+
+ return true;
+}
+
void DrawingML::WriteGradientStop(sal_uInt16 nStop, ::Color nColor, sal_Int32 nAlpha)
{
mpFS->startElementNS(XML_a, XML_gs, XML_pos, OString::number(nStop * 1000));
diff --git a/oox/source/ole/vbacontrol.cxx b/oox/source/ole/vbacontrol.cxx
index 88d7f28617ef..9c2a301635d9 100644
--- a/oox/source/ole/vbacontrol.cxx
+++ b/oox/source/ole/vbacontrol.cxx
@@ -446,13 +446,17 @@ void VbaFormControl::importStorage( StorageBase& rStrg, const AxClassTable& rCla
if ( xPageSiteRef )
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/oox/source/token/properties.txt b/oox/source/token/properties.txt
index 87a6700bd35a..904ba3f35c0e 100644
--- a/oox/source/token/properties.txt
+++ b/oox/source/token/properties.txt
@@ -127,9 +127,6 @@ D3DSceneLightOn2
D3DScenePerspective
D3DSceneShadeMode
DDELinks
-DataTableHBorder
-DataTableOutline
-DataTableVBorder
DatabaseRanges
Decoration
DefaultScrollValue
@@ -176,6 +173,9 @@ FillBitmapSizeX
FillBitmapSizeY
FillBitmap
FillColor
+FillColorTheme
+FillColorLumMod
+FillColorLumOff
FillGradient
FillGradientName
FillHatch
@@ -243,6 +243,7 @@ HasVerticalScrollBar
HasXAxisTitle
HasYAxisTitle
HasZAxisTitle
+HBorder
HeaderBodyDistance
HeaderHeight
HeaderIsDynamicHeight
@@ -290,6 +291,7 @@ IsVisible
IterationCount
IterationEpsilon
Japanese
+Keys
Label
LabelBorderColor
LabelBorderStyle
@@ -361,6 +363,7 @@ OpCodeMap
Opaque
Orientation
OutputPosition
+Outline
OverlapSequence
Overlay
PageScale
@@ -582,6 +585,7 @@ UseSelectedPage
VScroll
Validation
Value
+VBorder
VaryColorsByPoint
VertJustify
VertJustifyMethod
diff --git a/postprocess/CustomTarget_registry.mk b/postprocess/CustomTarget_registry.mk
index 6eccddcc08ed..baa7c7e90286 100644
--- a/postprocess/CustomTarget_registry.mk
+++ b/postprocess/CustomTarget_registry.mk
@@ -307,6 +307,10 @@ ifneq ($(WITH_WEBDAV),)
postprocess_FILES_main += $(postprocess_MOD)/org/openoffice/ucb/Configuration-webdav.xcu
endif
+ifneq ($(ENABLE_MACOSX_SANDBOX),)
+postprocess_FILES_main += $(postprocess_MOD)/org/openoffice/Office/UI/Infobar-macosxsandbox.xcu
+endif
+
ifneq (,$(SYSTEM_LIBEXTTEXTCAT_DATA))
postprocess_FILES_main += $(postprocess_MOD)/org/openoffice/Office/Paths-externallibexttextcatdata.xcu
else
diff --git a/postprocess/signing/signing.pl b/postprocess/signing/signing.pl
index a443984a2a7b..13e6e940c385 100644
--- a/postprocess/signing/signing.pl
+++ b/postprocess/signing/signing.pl
@@ -148,9 +148,10 @@ sub sign_files #09.07.2007 10:36
}
$signtool .= " -v" if ($opt_verbose);
$commandline_base = $signtool;
+ $commandline_base .= " -fd sha256 -td sha256";
$commandline_base .= " -f $opt_pfxfile" if ($opt_pfxfile ne "");
$commandline_base .= " -p $opt_pass" if ($opt_pass ne "");
- $commandline_base .= " -t $opt_timestamp_url" if ($opt_timestamp_url ne "");
+ $commandline_base .= " -tr $opt_timestamp_url" if ($opt_timestamp_url ne "");
$commandline_base .= " -d \"$opt_desc\"" if ($opt_desc ne "");
# Here switch between:
diff --git a/readlicense_oo/license/CREDITS.fodt b/readlicense_oo/license/CREDITS.fodt
index b196b49a048c..7c9b7449e0d5 100644
--- a/readlicense_oo/license/CREDITS.fodt
+++ b/readlicense_oo/license/CREDITS.fodt
@@ -1,24 +1,24 @@
<?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:meta><dc:title>Credits » LibreOffice</dc:title><meta:keyword>Credits</meta:keyword><meta:keyword>contributors</meta:keyword><meta:keyword>coders</meta:keyword><meta:keyword>developers</meta:keyword><dc:description>Credits for the LibreOffice development/coding.</dc:description><meta:generator>LibreOffice/7.3.3.2$Linux_X86_64 LibreOffice_project/d1d0ea68f081ee2800a922cac8f79445e4603348</meta:generator><dc:date>2012-02-20T22:17:18.060000000</dc:date><meta:editing-duration>PT14M12S</meta:editing-duration><meta:editing-cycles>3</meta:editing-cycles><meta:document-statistic meta:table-count="5" meta:image-count="1" meta:object-count="0" meta:page-count="2" meta:paragraph-count="4551" meta:word-count="16845" meta:character-count="121610" meta:non-whitespace-character-count="106593"/><meta:user-defined meta:name="google-site-verification">JUebjoxEpqXoQcpltWRTwzBZEEHtch3wApdhgiQPFiA</meta:user-defined></office:meta>
+ <office:meta><dc:title>Credits » LibreOffice</dc:title><meta:keyword>Credits</meta:keyword><meta:keyword>contributors</meta:keyword><meta:keyword>coders</meta:keyword><meta:keyword>developers</meta:keyword><dc:description>Credits for the LibreOffice development/coding.</dc:description><meta:generator>LibreOffice/7.3.3.2$Linux_X86_64 LibreOffice_project/d1d0ea68f081ee2800a922cac8f79445e4603348</meta:generator><dc:date>2012-02-20T22:17:18.060000000</dc:date><meta:editing-duration>PT14M12S</meta:editing-duration><meta:editing-cycles>3</meta:editing-cycles><meta:document-statistic meta:table-count="5" meta:image-count="1" meta:object-count="0" meta:page-count="2" meta:paragraph-count="4583" meta:word-count="16992" meta:character-count="122698" meta:non-whitespace-character-count="107555"/><meta:user-defined meta:name="google-site-verification">JUebjoxEpqXoQcpltWRTwzBZEEHtch3wApdhgiQPFiA</meta:user-defined></office:meta>
<office:settings>
<config:config-item-set config:name="ooo:view-settings">
- <config:config-item config:name="ViewAreaTop" config:type="long">1822</config:config-item>
+ <config:config-item config:name="ViewAreaTop" config:type="long">808</config:config-item>
<config:config-item config:name="ViewAreaLeft" config:type="long">501</config:config-item>
<config:config-item config:name="ViewAreaWidth" config:type="long">32175</config:config-item>
- <config:config-item config:name="ViewAreaHeight" config:type="long">29238</config:config-item>
+ <config:config-item config:name="ViewAreaHeight" config:type="long">28180</config:config-item>
<config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item>
<config:config-item config:name="InBrowseMode" config:type="boolean">true</config:config-item>
<config:config-item-map-indexed config:name="Views">
<config:config-item-map-entry>
<config:config-item config:name="ViewId" config:type="string">view2</config:config-item>
- <config:config-item config:name="ViewLeft" config:type="long">14550</config:config-item>
- <config:config-item config:name="ViewTop" config:type="long">7303</config:config-item>
+ <config:config-item config:name="ViewLeft" config:type="long">3649</config:config-item>
+ <config:config-item config:name="ViewTop" config:type="long">3434</config:config-item>
<config:config-item config:name="VisibleLeft" config:type="long">501</config:config-item>
- <config:config-item config:name="VisibleTop" config:type="long">1822</config:config-item>
+ <config:config-item config:name="VisibleTop" config:type="long">808</config:config-item>
<config:config-item config:name="VisibleRight" config:type="long">32674</config:config-item>
- <config:config-item config:name="VisibleBottom" config:type="long">31059</config:config-item>
+ <config:config-item config:name="VisibleBottom" config:type="long">28986</config:config-item>
<config:config-item config:name="ZoomType" config:type="short">0</config:config-item>
<config:config-item config:name="ViewLayoutColumns" config:type="short">0</config:config-item>
<config:config-item config:name="ViewLayoutBookMode" config:type="boolean">false</config:config-item>
@@ -97,7 +97,7 @@
</config:config-item-map-indexed>
<config:config-item config:name="PrinterSetup" config:type="base64Binary"/>
<config:config-item config:name="AddParaTableSpacingAtStart" config:type="boolean">true</config:config-item>
- <config:config-item config:name="Rsid" config:type="int">10970830</config:config-item>
+ <config:config-item config:name="Rsid" config:type="int">11044056</config:config-item>
<config:config-item config:name="EmbeddedDatabaseName" config:type="string"/>
<config:config-item config:name="FieldAutoUpdate" config:type="boolean">true</config:config-item>
<config:config-item config:name="OutlineLevelYieldsNumbering" config:type="boolean">false</config:config-item>
@@ -166,7 +166,7 @@
<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="true"/>
- <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" style:font-independent-line-spacing="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" loext:opacity="0%" style:font-name="Thorndale AMT" fo:font-size="12pt" fo:language="hu" fo:country="HU" style:letter-kerning="true" style:font-name-asian="SimSun" style:font-size-asian="12pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Mangal1" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/>
@@ -344,26 +344,23 @@
</office:styles>
<office:automatic-styles>
<style:style style:name="Tabelle1" style:family="table">
- <style:table-properties style:width="26.704cm" table:align="left"/>
+ <style:table-properties style:width="26.651cm" table:align="left"/>
</style:style>
<style:style style:name="Tabelle1.A" style:family="table-column">
- <style:table-column-properties style:column-width="6.854cm"/>
+ <style:table-column-properties style:column-width="6.775cm"/>
</style:style>
<style:style style:name="Tabelle1.B" style:family="table-column">
- <style:table-column-properties style:column-width="6.272cm"/>
+ <style:table-column-properties style:column-width="6.749cm"/>
</style:style>
<style:style style:name="Tabelle1.C" style:family="table-column">
- <style:table-column-properties style:column-width="6.749cm"/>
+ <style:table-column-properties style:column-width="6.219cm"/>
</style:style>
<style:style style:name="Tabelle1.D" style:family="table-column">
- <style:table-column-properties style:column-width="6.828cm"/>
+ <style:table-column-properties style:column-width="6.907cm"/>
</style:style>
<style:style style:name="Tabelle1.A1" style:family="table-cell">
<style:table-cell-properties style:vertical-align="middle" fo:padding="0.049cm" fo:border="none"/>
</style:style>
- <style:style style:name="Tabelle1.D406" style:family="table-cell">
- <style:table-cell-properties fo:padding="0.049cm" fo:border="none"/>
- </style:style>
<style:style style:name="Tabelle2" style:family="table">
<style:table-properties style:width="18.157cm" table:align="left"/>
</style:style>
@@ -425,21 +422,21 @@
<style:table-properties style:width="31.752cm" table:align="left"/>
</style:style>
<style:style style:name="Tabelle5.A" style:family="table-column">
- <style:table-column-properties style:column-width="6.048cm"/>
+ <style:table-column-properties style:column-width="7.953cm"/>
</style:style>
<style:style style:name="Tabelle5.B" style:family="table-column">
- <style:table-column-properties style:column-width="10.943cm"/>
+ <style:table-column-properties style:column-width="10.754cm"/>
</style:style>
<style:style style:name="Tabelle5.C" style:family="table-column">
- <style:table-column-properties style:column-width="7.955cm"/>
+ <style:table-column-properties style:column-width="6.56cm"/>
</style:style>
<style:style style:name="Tabelle5.D" style:family="table-column">
- <style:table-column-properties style:column-width="6.805cm"/>
+ <style:table-column-properties style:column-width="6.484cm"/>
</style:style>
<style:style style:name="Tabelle5.A1" style:family="table-cell">
<style:table-cell-properties style:vertical-align="middle" fo:padding="0.049cm" fo:border="none"/>
</style:style>
- <style:style style:name="Tabelle5.D687" style:family="table-cell">
+ <style:style style:name="Tabelle5.C690" style:family="table-cell">
<style:table-cell-properties fo:padding="0.049cm" fo:border="none"/>
</style:style>
<style:style style:name="P1" style:family="paragraph" style:parent-style-name="Table_20_Contents">
@@ -1081,7 +1078,7 @@
</draw:frame>
<text:section text:style-name="Sect1" text:name="BgContainer">
<text:p text:style-name="P16">Credits</text:p>
- <text:p text:style-name="Text_20_body">1753 individuals contributed to OpenOffice.org (and whose contributions were imported into LibreOffice) or LibreOffice until 2022-05-31 13:29:00.</text:p>
+ <text:p text:style-name="Text_20_body">1774 individuals contributed to OpenOffice.org (and whose contributions were imported into LibreOffice) or LibreOffice until 2022-07-15 20:07:46.</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="T1">*</text:span> marks developers whose first contributions happened after 2010-09-28.</text:p>
<text:h text:style-name="Heading_20_2" text:outline-level="2">Developers committing code since 2010-09-28</text:h>
<table:table table:name="Tabelle1" table:style-name="Tabelle1">
@@ -1089,12 +1086,12 @@
<table:table-column table:style-name="Tabelle1.B"/>
<table:table-column table:style-name="Tabelle1.C"/>
<table:table-column table:style-name="Tabelle1.D"/>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Ruediger Timm<text:line-break/>Commits: 82464<text:line-break/>Joined: 2000-10-10</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Caolán McNamara<text:line-break/>Commits: 33046<text:line-break/>Joined: 2000-10-10</text:p>
+ <text:p text:style-name="Table_20_Contents">Caolán McNamara<text:line-break/>Commits: 33138<text:line-break/>Joined: 2000-10-10</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Kurt Zenker<text:line-break/>Commits: 31752<text:line-break/>Joined: 2000-09-25</text:p>
@@ -1103,7 +1100,7 @@
<text:p text:style-name="Table_20_Contents">Oliver Bolte<text:line-break/>Commits: 31008<text:line-break/>Joined: 2000-09-19</text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Jens-Heiner Rechtien [hr]<text:line-break/>Commits: 28805<text:line-break/>Joined: 2000-09-18</text:p>
</table:table-cell>
@@ -1111,13 +1108,13 @@
<text:p text:style-name="Table_20_Contents">Vladimir Glazunov<text:line-break/>Commits: 25434<text:line-break/>Joined: 2000-12-04</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Stephan Bergmann<text:line-break/>Commits: 19860<text:line-break/>Joined: 2000-10-04</text:p>
+ <text:p text:style-name="Table_20_Contents">Stephan Bergmann<text:line-break/>Commits: 19937<text:line-break/>Joined: 2000-10-04</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Noel Grandin<text:line-break/>Commits: 16150<text:line-break/>Joined: <text:span text:style-name="T2">2011-12-12</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Noel Grandin<text:line-break/>Commits: 16316<text:line-break/>Joined: <text:span text:style-name="T2">2011-12-12</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Ivo Hinkelmann<text:line-break/>Commits: 9480<text:line-break/>Joined: 2002-09-09</text:p>
</table:table-cell>
@@ -1125,13 +1122,13 @@
<text:p text:style-name="Table_20_Contents">Tor Lillqvist<text:line-break/>Commits: 9073<text:line-break/>Joined: 2010-03-23</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Miklos Vajna<text:line-break/>Commits: 8975<text:line-break/>Joined: 2010-07-29</text:p>
+ <text:p text:style-name="Table_20_Contents">Miklos Vajna<text:line-break/>Commits: 9030<text:line-break/>Joined: 2010-07-29</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Michael Stahl<text:line-break/>Commits: 7979<text:line-break/>Joined: 2008-06-16</text:p>
+ <text:p text:style-name="Table_20_Contents">Michael Stahl<text:line-break/>Commits: 8002<text:line-break/>Joined: 2008-06-16</text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Kohei Yoshida<text:line-break/>Commits: 5571<text:line-break/>Joined: 2009-06-19</text:p>
</table:table-cell>
@@ -1139,29 +1136,29 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Markus Mohrhard<text:line-break/>Commits: 5203<text:line-break/>Joined: <text:span text:style-name="T2">2011-03-17</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Eike Rathke<text:line-break/>Commits: 5078<text:line-break/>Joined: 2000-10-11</text:p>
+ <text:p text:style-name="Table_20_Contents">Eike Rathke<text:line-break/>Commits: 5123<text:line-break/>Joined: 2000-10-11</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Frank Schoenheit [fs]<text:line-break/>Commits: 5008<text:line-break/>Joined: 2000-09-19</text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">David Tardon<text:line-break/>Commits: 3648<text:line-break/>Joined: 2009-11-12</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Julien Nabet<text:line-break/>Commits: 3471<text:line-break/>Joined: <text:span text:style-name="T2">2010-11-04</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Julien Nabet<text:line-break/>Commits: 3488<text:line-break/>Joined: <text:span text:style-name="T2">2010-11-04</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Andrea Gelmini<text:line-break/>Commits: 3105<text:line-break/>Joined: <text:span text:style-name="T2">2014-10-30</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Andrea Gelmini<text:line-break/>Commits: 3140<text:line-break/>Joined: <text:span text:style-name="T2">2014-10-30</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Luboš Luňák<text:line-break/>Commits: 3084<text:line-break/>Joined: 2010-09-21</text:p>
+ <text:p text:style-name="Table_20_Contents">Luboš Luňák<text:line-break/>Commits: 3112<text:line-break/>Joined: 2010-09-21</text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Tomaž Vajngerl<text:line-break/>Commits: 3037<text:line-break/>Joined: <text:span text:style-name="T2">2012-06-02</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Tomaž Vajngerl<text:line-break/>Commits: 3042<text:line-break/>Joined: <text:span text:style-name="T2">2012-06-02</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Hans-Joachim Lankenau<text:line-break/>Commits: 3007<text:line-break/>Joined: 2000-09-19</text:p>
@@ -1173,7 +1170,7 @@
<text:p text:style-name="Table_20_Contents">Jan Holesovsky<text:line-break/>Commits: 2668<text:line-break/>Joined: 2009-06-23</text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Mathias Bauer<text:line-break/>Commits: 2580<text:line-break/>Joined: 2000-09-20</text:p>
</table:table-cell>
@@ -1181,15 +1178,15 @@
<text:p text:style-name="Table_20_Contents">Oliver Specht<text:line-break/>Commits: 2549<text:line-break/>Joined: 2000-09-21</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Michael Meeks<text:line-break/>Commits: 2472<text:line-break/>Joined: 2004-08-05</text:p>
+ <text:p text:style-name="Table_20_Contents">Michael Meeks<text:line-break/>Commits: 2476<text:line-break/>Joined: 2004-08-05</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Bjoern Michaelsen<text:line-break/>Commits: 2454<text:line-break/>Joined: 2009-10-14</text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Mike Kaganski<text:line-break/>Commits: 2287<text:line-break/>Joined: <text:span text:style-name="T2">2015-04-26</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Mike Kaganski<text:line-break/>Commits: 2324<text:line-break/>Joined: <text:span text:style-name="T2">2015-04-26</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Norbert Thiebaud<text:line-break/>Commits: 2176<text:line-break/>Joined: <text:span text:style-name="T2">2010-09-29</text:span></text:p>
@@ -1201,12 +1198,12 @@
<text:p text:style-name="Table_20_Contents">Philipp Lohmann [pl]<text:line-break/>Commits: 2089<text:line-break/>Joined: 2000-09-21</text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Andras Timar<text:line-break/>Commits: 1967<text:line-break/>Joined: <text:span text:style-name="T2">2010-10-02</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Xisco Fauli<text:line-break/>Commits: 2001<text:line-break/>Joined: <text:span text:style-name="T2">2011-02-06</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Xisco Fauli<text:line-break/>Commits: 1931<text:line-break/>Joined: <text:span text:style-name="T2">2011-02-06</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Andras Timar<text:line-break/>Commits: 1969<text:line-break/>Joined: <text:span text:style-name="T2">2010-10-02</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Christian Lippka<text:line-break/>Commits: 1805<text:line-break/>Joined: 2000-09-25</text:p>
@@ -1215,12 +1212,12 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Matúš Kukan<text:line-break/>Commits: 1712<text:line-break/>Joined: <text:span text:style-name="T2">2011-04-06</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Armin Le Grand (Allotropia)<text:line-break/>Commits: 1540<text:line-break/>Joined: 2000-09-25</text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Olivier Hallot<text:line-break/>Commits: 1613<text:line-break/>Joined: <text:span text:style-name="T2">2010-10-25</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Olivier Hallot<text:line-break/>Commits: 1538<text:line-break/>Joined: <text:span text:style-name="T2">2010-10-25</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents">Armin Le Grand (Allotropia)<text:line-break/>Commits: 1542<text:line-break/>Joined: 2000-09-25</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Takeshi Abe<text:line-break/>Commits: 1486<text:line-break/>Joined: <text:span text:style-name="T2">2010-11-08</text:span></text:p>
@@ -1229,12 +1226,12 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Matteo Casalin<text:line-break/>Commits: 1476<text:line-break/>Joined: <text:span text:style-name="T2">2011-11-13</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Thorsten Behrens<text:line-break/>Commits: 1441<text:line-break/>Joined: 2001-04-25</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Chris Sherlock<text:line-break/>Commits: 1397<text:line-break/>Joined: <text:span text:style-name="T2">2013-02-25</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Chris Sherlock<text:line-break/>Commits: 1413<text:line-break/>Joined: <text:span text:style-name="T2">2013-02-25</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Fridrich Štrba<text:line-break/>Commits: 1338<text:line-break/>Joined: 2007-02-22</text:p>
@@ -1243,40 +1240,40 @@
<text:p text:style-name="Table_20_Contents">Thomas Lange [tl]<text:line-break/>Commits: 1310<text:line-break/>Joined: 2000-09-22</text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Niklas Nebel<text:line-break/>Commits: 1296<text:line-break/>Joined: 2000-09-19</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>andreas kainz<text:line-break/>Commits: 1226<text:line-break/>Joined: <text:span text:style-name="T2">2015-03-18</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Jan-Marek Glogowski<text:line-break/>Commits: 1232<text:line-break/>Joined: <text:span text:style-name="T2">2013-11-14</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Jan-Marek Glogowski<text:line-break/>Commits: 1210<text:line-break/>Joined: <text:span text:style-name="T2">2013-11-14</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>andreas kainz<text:line-break/>Commits: 1226<text:line-break/>Joined: <text:span text:style-name="T2">2015-03-18</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Tamás Zolnai<text:line-break/>Commits: 1208<text:line-break/>Joined: <text:span text:style-name="T2">2012-08-06</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Daniel Rentz [dr]<text:line-break/>Commits: 1206<text:line-break/>Joined: 2000-09-28</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Samuel Mehrbrodt<text:line-break/>Commits: 1095<text:line-break/>Joined: <text:span text:style-name="T2">2011-06-08</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Samuel Mehrbrodt<text:line-break/>Commits: 1109<text:line-break/>Joined: <text:span text:style-name="T2">2011-06-08</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Gabor Kelemen<text:line-break/>Commits: 1081<text:line-break/>Joined: <text:span text:style-name="T2">2013-06-18</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Gabor Kelemen<text:line-break/>Commits: 1086<text:line-break/>Joined: <text:span text:style-name="T2">2013-06-18</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Lionel Elie Mamane<text:line-break/>Commits: 1051<text:line-break/>Joined: <text:span text:style-name="T2">2011-01-15</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Szymon Kłos<text:line-break/>Commits: 1038<text:line-break/>Joined: <text:span text:style-name="T2">2014-03-22</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Szymon Kłos<text:line-break/>Commits: 1047<text:line-break/>Joined: <text:span text:style-name="T2">2014-03-22</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Christian Lohmaier<text:line-break/>Commits: 982<text:line-break/>Joined: 2008-06-01</text:p>
+ <text:p text:style-name="Table_20_Contents">Christian Lohmaier<text:line-break/>Commits: 1007<text:line-break/>Joined: 2008-06-01</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Johnny_M<text:line-break/>Commits: 966<text:line-break/>Joined: <text:span text:style-name="T2">2016-05-12</text:span></text:p>
@@ -1285,7 +1282,7 @@
<text:p text:style-name="Table_20_Contents">Petr Mladek<text:line-break/>Commits: 958<text:line-break/>Joined: 2006-10-03</text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Noel Power<text:line-break/>Commits: 950<text:line-break/>Joined: 2002-09-24</text:p>
</table:table-cell>
@@ -1299,7 +1296,7 @@
<text:p text:style-name="Table_20_Contents">Cédric Bosdonnat<text:line-break/>Commits: 882<text:line-break/>Joined: 2009-11-16</text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Malte Timmermann [mt]<text:line-break/>Commits: 864<text:line-break/>Joined: 2000-10-10</text:p>
</table:table-cell>
@@ -1313,35 +1310,35 @@
<text:p text:style-name="Table_20_Contents">Martin Gallwey<text:line-break/>Commits: 827<text:line-break/>Joined: 2000-11-08</text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Mikhail Voytenko<text:line-break/>Commits: 793<text:line-break/>Joined: 2001-01-16</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Maxim Monastirsky<text:line-break/>Commits: 779<text:line-break/>Joined: <text:span text:style-name="T2">2013-10-27</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Maxim Monastirsky<text:line-break/>Commits: 788<text:line-break/>Joined: <text:span text:style-name="T2">2013-10-27</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Carsten Driesner<text:line-break/>Commits: 748<text:line-break/>Joined: 2000-10-06</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Joachim Lingner<text:line-break/>Commits: 745<text:line-break/>Joined: 2000-10-05</text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>László Németh<text:line-break/>Commits: 747<text:line-break/>Joined: <text:span text:style-name="T2">2010-09-29</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Katarina Behrens<text:line-break/>Commits: 745<text:line-break/>Joined: <text:span text:style-name="T2">2010-10-13</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents">Joachim Lingner<text:line-break/>Commits: 745<text:line-break/>Joined: 2000-10-05</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Andrzej Hunt<text:line-break/>Commits: 743<text:line-break/>Joined: <text:span text:style-name="T2">2012-03-27</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Katarina Behrens<text:line-break/>Commits: 745<text:line-break/>Joined: <text:span text:style-name="T2">2010-10-13</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>László Németh<text:line-break/>Commits: 736<text:line-break/>Joined: <text:span text:style-name="T2">2010-09-29</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Andrzej Hunt<text:line-break/>Commits: 743<text:line-break/>Joined: <text:span text:style-name="T2">2012-03-27</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Andre Fischer<text:line-break/>Commits: 730<text:line-break/>Joined: 2001-02-06</text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Release Engineering<text:line-break/>Commits: 728<text:line-break/>Joined: 2008-10-02</text:p>
</table:table-cell>
@@ -1355,7 +1352,7 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Joseph Powers<text:line-break/>Commits: 658<text:line-break/>Joined: <text:span text:style-name="T2">2010-10-15</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Jens Carl<text:line-break/>Commits: 657<text:line-break/>Joined: <text:span text:style-name="T2">2014-05-28</text:span></text:p>
</table:table-cell>
@@ -1369,26 +1366,26 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Justin Luth<text:line-break/>Commits: 624<text:line-break/>Joined: <text:span text:style-name="T2">2014-09-30</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Rafael Dominguez<text:line-break/>Commits: 606<text:line-break/>Joined: <text:span text:style-name="T2">2011-02-13</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Jochen Nitschke<text:line-break/>Commits: 587<text:line-break/>Joined: <text:span text:style-name="T2">2016-02-02</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Michael Weghorn<text:line-break/>Commits: 595<text:line-break/>Joined: <text:span text:style-name="T2">2014-09-10</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Michael Weghorn<text:line-break/>Commits: 579<text:line-break/>Joined: <text:span text:style-name="T2">2014-09-10</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Jochen Nitschke<text:line-break/>Commits: 587<text:line-break/>Joined: <text:span text:style-name="T2">2016-02-02</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Yousuf Philips<text:line-break/>Commits: 569<text:line-break/>Joined: <text:span text:style-name="T2">2014-09-21</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Rizal Muttaqin<text:line-break/>Commits: 573<text:line-break/>Joined: <text:span text:style-name="T2">2018-05-21</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Rizal Muttaqin<text:line-break/>Commits: 557<text:line-break/>Joined: <text:span text:style-name="T2">2018-05-21</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Yousuf Philips<text:line-break/>Commits: 569<text:line-break/>Joined: <text:span text:style-name="T2">2014-09-21</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Rene Engelhard<text:line-break/>Commits: 556<text:line-break/>Joined: 2005-03-14</text:p>
+ <text:p text:style-name="Table_20_Contents">Rene Engelhard<text:line-break/>Commits: 562<text:line-break/>Joined: 2005-03-14</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Thomas Benisch [tbe]<text:line-break/>Commits: 551<text:line-break/>Joined: 2000-10-23</text:p>
@@ -1397,9 +1394,9 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Khaled Hosny<text:line-break/>Commits: 542<text:line-break/>Joined: <text:span text:style-name="T2">2011-01-28</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Adolfo Jayme Barrientos<text:line-break/>Commits: 518<text:line-break/>Joined: <text:span text:style-name="T2">2013-06-21</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Adolfo Jayme Barrientos<text:line-break/>Commits: 530<text:line-break/>Joined: <text:span text:style-name="T2">2013-06-21</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Jürgen Schmidt<text:line-break/>Commits: 512<text:line-break/>Joined: 2000-10-09</text:p>
@@ -1411,26 +1408,26 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>jan Iversen<text:line-break/>Commits: 474<text:line-break/>Joined: <text:span text:style-name="T2">2015-11-03</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Andreas Bregas<text:line-break/>Commits: 470<text:line-break/>Joined: 2000-09-25</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Seth Chaiklin<text:line-break/>Commits: 436<text:line-break/>Joined: <text:span text:style-name="T2">2019-11-13</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Seth Chaiklin<text:line-break/>Commits: 460<text:line-break/>Joined: <text:span text:style-name="T2">2019-11-13</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Jim Raykowski<text:line-break/>Commits: 432<text:line-break/>Joined: <text:span text:style-name="T2">2017-04-16</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Jim Raykowski<text:line-break/>Commits: 434<text:line-break/>Joined: <text:span text:style-name="T2">2017-04-16</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Dirk Voelzke<text:line-break/>Commits: 392<text:line-break/>Joined: 2000-11-27</text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Ashod Nakashian<text:line-break/>Commits: 388<text:line-break/>Joined: <text:span text:style-name="T2">2015-01-07</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Heiko Tietze<text:line-break/>Commits: 381<text:line-break/>Joined: <text:span text:style-name="T2">2016-10-06</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Heiko Tietze<text:line-break/>Commits: 387<text:line-break/>Joined: <text:span text:style-name="T2">2016-10-06</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Ivan Timofeev<text:line-break/>Commits: 380<text:line-break/>Joined: <text:span text:style-name="T2">2011-09-16</text:span></text:p>
@@ -1439,12 +1436,12 @@
<text:p text:style-name="Table_20_Contents">Oliver-Rainer Wittmann<text:line-break/>Commits: 372<text:line-break/>Joined: 2002-08-09</text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Martin Hollmichel<text:line-break/>Commits: 371<text:line-break/>Joined: 2000-09-19</text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Laurent BP<text:line-break/>Commits: 372<text:line-break/>Joined: <text:span text:style-name="T2">2011-08-31</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Laurent BP<text:line-break/>Commits: 368<text:line-break/>Joined: <text:span text:style-name="T2">2011-08-31</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents">Martin Hollmichel<text:line-break/>Commits: 371<text:line-break/>Joined: 2000-09-19</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Muhammet Kara<text:line-break/>Commits: 367<text:line-break/>Joined: <text:span text:style-name="T2">2016-03-20</text:span></text:p>
@@ -1453,7 +1450,7 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Pranav Kant<text:line-break/>Commits: 366<text:line-break/>Joined: <text:span text:style-name="T2">2015-03-01</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Matthias Huetsch [mhu]<text:line-break/>Commits: 360<text:line-break/>Joined: 2000-09-28</text:p>
</table:table-cell>
@@ -1464,12 +1461,12 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>David Ostrovsky<text:line-break/>Commits: 334<text:line-break/>Joined: <text:span text:style-name="T2">2012-04-01</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Marco Cecchetti<text:line-break/>Commits: 318<text:line-break/>Joined: <text:span text:style-name="T2">2011-04-14</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Marco Cecchetti<text:line-break/>Commits: 321<text:line-break/>Joined: <text:span text:style-name="T2">2011-04-14</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Jean-Pierre Ledure<text:line-break/>Commits: 307<text:line-break/>Joined: <text:span text:style-name="T2">2013-10-12</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Jean-Pierre Ledure<text:line-break/>Commits: 314<text:line-break/>Joined: <text:span text:style-name="T2">2013-10-12</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Radek Doulik<text:line-break/>Commits: 305<text:line-break/>Joined: 2010-05-03</text:p>
@@ -1481,49 +1478,49 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Chr. Rossmanith<text:line-break/>Commits: 300<text:line-break/>Joined: <text:span text:style-name="T2">2011-01-03</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Mark Hung<text:line-break/>Commits: 298<text:line-break/>Joined: <text:span text:style-name="T2">2014-11-04</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Justin Luth<text:line-break/>Commits: 290<text:line-break/>Joined: <text:span text:style-name="T2">2018-04-21</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Justin Luth<text:line-break/>Commits: 291<text:line-break/>Joined: <text:span text:style-name="T2">2018-04-21</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>August Sodora<text:line-break/>Commits: 285<text:line-break/>Joined: <text:span text:style-name="T2">2011-10-18</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Stanislav Horacek<text:line-break/>Commits: 279<text:line-break/>Joined: <text:span text:style-name="T2">2012-12-09</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Stanislav Horacek<text:line-break/>Commits: 280<text:line-break/>Joined: <text:span text:style-name="T2">2012-12-09</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Siqi Liu<text:line-break/>Commits: 277<text:line-break/>Joined: <text:span text:style-name="T2">2013-04-13</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Henry Castro<text:line-break/>Commits: 279<text:line-break/>Joined: <text:span text:style-name="T2">2015-01-09</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Pierre-André Jacquod<text:line-break/>Commits: 276<text:line-break/>Joined: <text:span text:style-name="T2">2010-11-13</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Siqi Liu<text:line-break/>Commits: 277<text:line-break/>Joined: <text:span text:style-name="T2">2013-04-13</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Henry Castro<text:line-break/>Commits: 272<text:line-break/>Joined: <text:span text:style-name="T2">2015-01-09</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Pierre-André Jacquod<text:line-break/>Commits: 276<text:line-break/>Joined: <text:span text:style-name="T2">2010-11-13</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Lars Langhans<text:line-break/>Commits: 260<text:line-break/>Joined: 2000-09-22</text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Muthu Subramanian<text:line-break/>Commits: 250<text:line-break/>Joined: 2010-08-25</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Vasily Melenchuk<text:line-break/>Commits: 248<text:line-break/>Joined: <text:span text:style-name="T2">2015-01-27</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents">Bartosz Kosiorek<text:line-break/>Commits: 250<text:line-break/>Joined: 2010-09-17</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Bartosz Kosiorek<text:line-break/>Commits: 247<text:line-break/>Joined: 2010-09-17</text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Vasily Melenchuk<text:line-break/>Commits: 249<text:line-break/>Joined: <text:span text:style-name="T2">2015-01-27</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Robert Antoni Buj Gelonch<text:line-break/>Commits: 247<text:line-break/>Joined: <text:span text:style-name="T2">2014-06-11</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Winfried Donkers<text:line-break/>Commits: 213<text:line-break/>Joined: <text:span text:style-name="T2">2011-11-11</text:span></text:p>
</table:table-cell>
@@ -1537,51 +1534,51 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Arkadiy Illarionov<text:line-break/>Commits: 201<text:line-break/>Joined: <text:span text:style-name="T2">2017-01-15</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Jacobo Aragunde Pérez<text:line-break/>Commits: 192<text:line-break/>Joined: <text:span text:style-name="T2">2013-09-25</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Rafael Lima<text:line-break/>Commits: 196<text:line-break/>Joined: <text:span text:style-name="T2">2020-11-13</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Robert Nagy<text:line-break/>Commits: 191<text:line-break/>Joined: <text:span text:style-name="T2">2010-11-04</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Regina Henschel<text:line-break/>Commits: 192<text:line-break/>Joined: <text:span text:style-name="T2">2010-11-04</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Regina Henschel<text:line-break/>Commits: 191<text:line-break/>Joined: <text:span text:style-name="T2">2010-11-04</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Jacobo Aragunde Pérez<text:line-break/>Commits: 192<text:line-break/>Joined: <text:span text:style-name="T2">2013-09-25</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Marcos Paulo de Souza<text:line-break/>Commits: 191<text:line-break/>Joined: <text:span text:style-name="T2">2012-09-26</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Robert Nagy<text:line-break/>Commits: 191<text:line-break/>Joined: <text:span text:style-name="T2">2010-11-04</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Dennis Francis<text:line-break/>Commits: 191<text:line-break/>Joined: <text:span text:style-name="T2">2018-11-15</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Marcos Paulo de Souza<text:line-break/>Commits: 191<text:line-break/>Joined: <text:span text:style-name="T2">2012-09-26</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Giuseppe Castagno<text:line-break/>Commits: 187<text:line-break/>Joined: 2007-12-09</text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Dennis Francis<text:line-break/>Commits: 191<text:line-break/>Joined: <text:span text:style-name="T2">2018-11-15</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Rafael Lima<text:line-break/>Commits: 186<text:line-break/>Joined: <text:span text:style-name="T2">2020-11-13</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents">Giuseppe Castagno<text:line-break/>Commits: 187<text:line-break/>Joined: 2007-12-09</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>François Tigeot<text:line-break/>Commits: 176<text:line-break/>Joined: <text:span text:style-name="T2">2011-01-31</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Philipp Riemer<text:line-break/>Commits: 171<text:line-break/>Joined: <text:span text:style-name="T2">2012-05-25</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Balazs Varga<text:line-break/>Commits: 162<text:line-break/>Joined: <text:span text:style-name="T2">2018-07-05</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Balazs Varga<text:line-break/>Commits: 165<text:line-break/>Joined: <text:span text:style-name="T2">2018-07-05</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Nigel Hawkins<text:line-break/>Commits: 160<text:line-break/>Joined: <text:span text:style-name="T2">2010-10-28</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Andreas Heinisch<text:line-break/>Commits: 162<text:line-break/>Joined: <text:span text:style-name="T2">2019-05-13</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Andreas Heinisch<text:line-break/>Commits: 156<text:line-break/>Joined: <text:span text:style-name="T2">2019-05-13</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Nigel Hawkins<text:line-break/>Commits: 160<text:line-break/>Joined: <text:span text:style-name="T2">2010-10-28</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Gülşah Köse<text:line-break/>Commits: 155<text:line-break/>Joined: <text:span text:style-name="T2">2015-03-14</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Gülşah Köse<text:line-break/>Commits: 156<text:line-break/>Joined: <text:span text:style-name="T2">2015-03-14</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Gert Faller<text:line-break/>Commits: 151<text:line-break/>Joined: <text:span text:style-name="T2">2010-10-25</text:span></text:p>
@@ -1593,9 +1590,12 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Alexander Wilms<text:line-break/>Commits: 151<text:line-break/>Joined: <text:span text:style-name="T2">2012-05-26</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
+ <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Tünde Tóth<text:line-break/>Commits: 148<text:line-break/>Joined: <text:span text:style-name="T2">2019-03-14</text:span></text:p>
+ </table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Tünde Tóth<text:line-break/>Commits: 145<text:line-break/>Joined: <text:span text:style-name="T2">2019-03-14</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Ilmari Lauhakangas<text:line-break/>Commits: 142<text:line-break/>Joined: <text:span text:style-name="T2">2017-04-15</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Gregor Hartmann<text:line-break/>Commits: 141<text:line-break/>Joined: 2000-10-12</text:p>
@@ -1603,25 +1603,22 @@
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Matthias Freund<text:line-break/>Commits: 141<text:line-break/>Joined: <text:span text:style-name="T2">2013-02-08</text:span></text:p>
</table:table-cell>
+ </table:table-row>
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Tomáš Chvátal<text:line-break/>Commits: 140<text:line-break/>Joined: <text:span text:style-name="T2">2011-07-27</text:span></text:p>
</table:table-cell>
- </table:table-row>
- <table:table-row table:style-name="TableLine132826464">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Artur Dryomov<text:line-break/>Commits: 137<text:line-break/>Joined: <text:span text:style-name="T2">2013-03-14</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Ilmari Lauhakangas<text:line-break/>Commits: 137<text:line-break/>Joined: <text:span text:style-name="T2">2017-04-15</text:span></text:p>
- </table:table-cell>
- <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Serge Krot<text:line-break/>Commits: 132<text:line-break/>Joined: <text:span text:style-name="T2">2015-10-25</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>panoskorovesis<text:line-break/>Commits: 131<text:line-break/>Joined: <text:span text:style-name="T2">2021-06-09</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Jesús Corrius<text:line-break/>Commits: 130<text:line-break/>Joined: <text:span text:style-name="T2">2010-10-07</text:span></text:p>
</table:table-cell>
@@ -1635,7 +1632,7 @@
<text:p text:style-name="Table_20_Contents">Helge Delfs [hde]<text:line-break/>Commits: 126<text:line-break/>Joined: 2009-07-28</text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Ariel Constenla-Haile<text:line-break/>Commits: 126<text:line-break/>Joined: <text:span text:style-name="T2">2012-01-16</text:span></text:p>
</table:table-cell>
@@ -1646,10 +1643,10 @@
<text:p text:style-name="Table_20_Contents">Takashi Ono<text:line-break/>Commits: 122<text:line-break/>Joined: 2009-12-10</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Mert Tumer<text:line-break/>Commits: 120<text:line-break/>Joined: <text:span text:style-name="T2">2016-04-30</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Mert Tumer<text:line-break/>Commits: 122<text:line-break/>Joined: <text:span text:style-name="T2">2016-04-30</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Sebastian Spaeth<text:line-break/>Commits: 119<text:line-break/>Joined: <text:span text:style-name="T2">2010-09-28</text:span></text:p>
</table:table-cell>
@@ -1663,7 +1660,7 @@
<text:p text:style-name="Table_20_Contents">Kalman Szalai - KAMI<text:line-break/>Commits: 116<text:line-break/>Joined: 2010-09-14</text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Joren De Cuyper<text:line-break/>Commits: 114<text:line-break/>Joined: <text:span text:style-name="T2">2013-01-07</text:span></text:p>
</table:table-cell>
@@ -1677,7 +1674,7 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Akshay Deep<text:line-break/>Commits: 110<text:line-break/>Joined: <text:span text:style-name="T2">2016-01-23</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Sophia Schröder<text:line-break/>Commits: 110<text:line-break/>Joined: <text:span text:style-name="T2">2018-04-07</text:span></text:p>
</table:table-cell>
@@ -1691,21 +1688,24 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Thomas Klausner<text:line-break/>Commits: 99<text:line-break/>Joined: <text:span text:style-name="T2">2010-10-01</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Laurent Godard<text:line-break/>Commits: 93<text:line-break/>Joined: <text:span text:style-name="T2">2011-05-06</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Attila Bakos (NISZ)<text:line-break/>Commits: 96<text:line-break/>Joined: <text:span text:style-name="T2">2019-10-28</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Attila Bakos (NISZ)<text:line-break/>Commits: 93<text:line-break/>Joined: <text:span text:style-name="T2">2019-10-28</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Laurent Godard<text:line-break/>Commits: 93<text:line-break/>Joined: <text:span text:style-name="T2">2011-05-06</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Hossein<text:line-break/>Commits: 92<text:line-break/>Joined: <text:span text:style-name="T2">2021-06-29</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Hossein<text:line-break/>Commits: 93<text:line-break/>Joined: <text:span text:style-name="T2">2021-06-29</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Stefan Knorr<text:line-break/>Commits: 91<text:line-break/>Joined: <text:span text:style-name="T2">2011-07-04</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
+ <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Aron Budea<text:line-break/>Commits: 91<text:line-break/>Joined: <text:span text:style-name="T2">2014-12-22</text:span></text:p>
+ </table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Varun Dhall<text:line-break/>Commits: 91<text:line-break/>Joined: <text:span text:style-name="T2">2015-03-07</text:span></text:p>
</table:table-cell>
@@ -1715,13 +1715,10 @@
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Philipp Hofer<text:line-break/>Commits: 90<text:line-break/>Joined: <text:span text:style-name="T2">2020-11-06</text:span></text:p>
</table:table-cell>
- <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Albert Thuswaldner<text:line-break/>Commits: 89<text:line-break/>Joined: <text:span text:style-name="T2">2011-01-26</text:span></text:p>
- </table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Aron Budea<text:line-break/>Commits: 89<text:line-break/>Joined: <text:span text:style-name="T2">2014-12-22</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Albert Thuswaldner<text:line-break/>Commits: 89<text:line-break/>Joined: <text:span text:style-name="T2">2011-01-26</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Tim Retout<text:line-break/>Commits: 88<text:line-break/>Joined: <text:span text:style-name="T2">2012-02-14</text:span></text:p>
@@ -1733,7 +1730,7 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Korrawit Pruegsanusak<text:line-break/>Commits: 87<text:line-break/>Joined: <text:span text:style-name="T2">2011-05-28</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Adam Co<text:line-break/>Commits: 86<text:line-break/>Joined: <text:span text:style-name="T2">2013-04-28</text:span></text:p>
</table:table-cell>
@@ -1747,7 +1744,7 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Javier Fernandez<text:line-break/>Commits: 84<text:line-break/>Joined: <text:span text:style-name="T2">2013-03-06</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Tobias Krause<text:line-break/>Commits: 83<text:line-break/>Joined: 2007-10-02</text:p>
</table:table-cell>
@@ -1758,15 +1755,15 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Ricardo Montania<text:line-break/>Commits: 82<text:line-break/>Joined: <text:span text:style-name="T2">2012-08-18</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Roman Kuznetsov<text:line-break/>Commits: 78<text:line-break/>Joined: <text:span text:style-name="T2">2018-10-23</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Roman Kuznetsov<text:line-break/>Commits: 82<text:line-break/>Joined: <text:span text:style-name="T2">2018-10-23</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Steve Fanning<text:line-break/>Commits: 78<text:line-break/>Joined: <text:span text:style-name="T2">2020-04-20</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Tibor Nagy<text:line-break/>Commits: 80<text:line-break/>Joined: <text:span text:style-name="T2">2020-04-01</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Tibor Nagy<text:line-break/>Commits: 77<text:line-break/>Joined: <text:span text:style-name="T2">2020-04-01</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Steve Fanning<text:line-break/>Commits: 78<text:line-break/>Joined: <text:span text:style-name="T2">2020-04-20</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Tobias Madl<text:line-break/>Commits: 74<text:line-break/>Joined: <text:span text:style-name="T2">2014-09-15</text:span></text:p>
@@ -1775,7 +1772,7 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Gergo Mocsi<text:line-break/>Commits: 72<text:line-break/>Joined: <text:span text:style-name="T2">2013-02-14</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>weigao<text:line-break/>Commits: 72<text:line-break/>Joined: <text:span text:style-name="T2">2014-05-07</text:span></text:p>
</table:table-cell>
@@ -1789,7 +1786,7 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Riccardo Magliocchetti<text:line-break/>Commits: 68<text:line-break/>Joined: <text:span text:style-name="T2">2012-01-25</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Antonio Fernandez<text:line-break/>Commits: 68<text:line-break/>Joined: <text:span text:style-name="T2">2012-07-18</text:span></text:p>
</table:table-cell>
@@ -1803,21 +1800,21 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Rohan Kumar<text:line-break/>Commits: 65<text:line-break/>Joined: <text:span text:style-name="T2">2016-02-23</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Tomoyuki Kubota<text:line-break/>Commits: 64<text:line-break/>Joined: <text:span text:style-name="T2">2018-03-11</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Tomoyuki Kubota<text:line-break/>Commits: 65<text:line-break/>Joined: <text:span text:style-name="T2">2018-03-11</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Mohammed Abdul Azeem<text:line-break/>Commits: 63<text:line-break/>Joined: <text:span text:style-name="T2">2016-02-08</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>tagezi<text:line-break/>Commits: 63<text:line-break/>Joined: <text:span text:style-name="T2">2015-09-16</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Rosemary Sebastian<text:line-break/>Commits: 62<text:line-break/>Joined: <text:span text:style-name="T2">2015-06-23</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Mohammed Abdul Azeem<text:line-break/>Commits: 63<text:line-break/>Joined: <text:span text:style-name="T2">2016-02-08</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>tagezi<text:line-break/>Commits: 62<text:line-break/>Joined: <text:span text:style-name="T2">2015-09-16</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Rosemary Sebastian<text:line-break/>Commits: 62<text:line-break/>Joined: <text:span text:style-name="T2">2015-06-23</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Wolfram Garten [wg]<text:line-break/>Commits: 61<text:line-break/>Joined: 2009-10-23</text:p>
</table:table-cell>
@@ -1831,49 +1828,52 @@
<text:p text:style-name="Table_20_Contents">Oliver Craemer [oc]<text:line-break/>Commits: 60<text:line-break/>Joined: 2009-10-23</text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Jaskaran Singh<text:line-break/>Commits: 60<text:line-break/>Joined: <text:span text:style-name="T2">2016-02-18</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Alain Romedenne<text:line-break/>Commits: 60<text:line-break/>Joined: <text:span text:style-name="T2">2021-02-17</text:span></text:p>
+ </table:table-cell>
+ <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Marc Neumann [msc]<text:line-break/>Commits: 59<text:line-break/>Joined: 2008-06-20</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>shiming zhang<text:line-break/>Commits: 59<text:line-break/>Joined: <text:span text:style-name="T2">2013-11-04</text:span></text:p>
</table:table-cell>
+ </table:table-row>
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Simon Steinbeiss<text:line-break/>Commits: 59<text:line-break/>Joined: <text:span text:style-name="T2">2015-06-01</text:span></text:p>
</table:table-cell>
- </table:table-row>
- <table:table-row table:style-name="TableLine132826464">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Ahmed ElShreif<text:line-break/>Commits: 59<text:line-break/>Joined: <text:span text:style-name="T2">2019-06-10</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Pranam Lashkari<text:line-break/>Commits: 58<text:line-break/>Joined: <text:span text:style-name="T2">2020-04-03</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Pranam Lashkari<text:line-break/>Commits: 59<text:line-break/>Joined: <text:span text:style-name="T2">2020-04-03</text:span></text:p>
+ </table:table-cell>
+ <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Attila Szűcs<text:line-break/>Commits: 58<text:line-break/>Joined: <text:span text:style-name="T2">2020-06-29</text:span></text:p>
</table:table-cell>
+ </table:table-row>
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>yiming ju<text:line-break/>Commits: 57<text:line-break/>Joined: <text:span text:style-name="T2">2013-11-01</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>matteocam<text:line-break/>Commits: 56<text:line-break/>Joined: <text:span text:style-name="T2">2014-02-25</text:span></text:p>
</table:table-cell>
- </table:table-row>
- <table:table-row table:style-name="TableLine132826464">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Niklas Johansson<text:line-break/>Commits: 55<text:line-break/>Joined: <text:span text:style-name="T2">2011-11-07</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Matthew J. Francis<text:line-break/>Commits: 55<text:line-break/>Joined: <text:span text:style-name="T2">2014-08-25</text:span></text:p>
</table:table-cell>
- <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Alain Romedenne<text:line-break/>Commits: 55<text:line-break/>Joined: <text:span text:style-name="T2">2021-02-17</text:span></text:p>
- </table:table-cell>
+ </table:table-row>
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Nikolai Pretzell<text:line-break/>Commits: 54<text:line-break/>Joined: 2001-03-09</text:p>
</table:table-cell>
- </table:table-row>
- <table:table-row table:style-name="TableLine132826464">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Mihály Palenik<text:line-break/>Commits: 54<text:line-break/>Joined: <text:span text:style-name="T2">2013-07-11</text:span></text:p>
</table:table-cell>
@@ -1883,25 +1883,22 @@
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Jim Raykowski<text:line-break/>Commits: 54<text:line-break/>Joined: <text:span text:style-name="T2">2019-05-11</text:span></text:p>
</table:table-cell>
+ </table:table-row>
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Rob Snelders<text:line-break/>Commits: 53<text:line-break/>Joined: <text:span text:style-name="T2">2011-02-08</text:span></text:p>
</table:table-cell>
- </table:table-row>
- <table:table-row table:style-name="TableLine132826464">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Martin Kepplinger<text:line-break/>Commits: 53<text:line-break/>Joined: <text:span text:style-name="T2">2011-02-18</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Attila Szűcs<text:line-break/>Commits: 53<text:line-break/>Joined: <text:span text:style-name="T2">2020-06-29</text:span></text:p>
- </table:table-cell>
- <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Lior Kaplan<text:line-break/>Commits: 52<text:line-break/>Joined: <text:span text:style-name="T2">2010-10-05</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Efe Gürkan YALAMAN<text:line-break/>Commits: 52<text:line-break/>Joined: <text:span text:style-name="T2">2012-08-01</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Will Thompson<text:line-break/>Commits: 51<text:line-break/>Joined: <text:span text:style-name="T2">2012-03-21</text:span></text:p>
</table:table-cell>
@@ -1915,7 +1912,7 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Rachit Gupta<text:line-break/>Commits: 51<text:line-break/>Joined: <text:span text:style-name="T2">2014-01-18</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Ptyl Dragon<text:line-break/>Commits: 50<text:line-break/>Joined: <text:span text:style-name="T2">2013-05-09</text:span></text:p>
</table:table-cell>
@@ -1929,7 +1926,7 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Urs Fässler<text:line-break/>Commits: 48<text:line-break/>Joined: <text:span text:style-name="T2">2013-02-14</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>mingli ju<text:line-break/>Commits: 48<text:line-break/>Joined: <text:span text:style-name="T2">2013-11-05</text:span></text:p>
</table:table-cell>
@@ -1943,7 +1940,7 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Luke Deller<text:line-break/>Commits: 46<text:line-break/>Joined: <text:span text:style-name="T2">2012-11-26</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>hongyu zhong<text:line-break/>Commits: 46<text:line-break/>Joined: <text:span text:style-name="T2">2013-11-04</text:span></text:p>
</table:table-cell>
@@ -1957,7 +1954,7 @@
<text:p text:style-name="Table_20_Contents">mb93783<text:line-break/>Commits: 45<text:line-break/>Joined: 2009-07-15</text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Eilidh McAdam<text:line-break/>Commits: 45<text:line-break/>Joined: <text:span text:style-name="T2">2011-03-10</text:span></text:p>
</table:table-cell>
@@ -1971,7 +1968,7 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Szabolcs Toth<text:line-break/>Commits: 45<text:line-break/>Joined: <text:span text:style-name="T2">2019-08-07</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Volker Ahrendt [va]<text:line-break/>Commits: 44<text:line-break/>Joined: 2002-04-15</text:p>
</table:table-cell>
@@ -1985,7 +1982,7 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Philippe Jung<text:line-break/>Commits: 43<text:line-break/>Joined: <text:span text:style-name="T2">2015-05-01</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Daniel Arato (NISZ)<text:line-break/>Commits: 43<text:line-break/>Joined: <text:span text:style-name="T2">2020-08-24</text:span></text:p>
</table:table-cell>
@@ -1999,7 +1996,7 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Sébastien Le Ray<text:line-break/>Commits: 41<text:line-break/>Joined: <text:span text:style-name="T2">2011-02-10</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Christian M. Heller<text:line-break/>Commits: 41<text:line-break/>Joined: <text:span text:style-name="T2">2013-02-24</text:span></text:p>
</table:table-cell>
@@ -2013,7 +2010,7 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Aditya<text:line-break/>Commits: 41<text:line-break/>Joined: <text:span text:style-name="T2">2019-01-04</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Francisco Saito<text:line-break/>Commits: 40<text:line-break/>Joined: <text:span text:style-name="T2">2011-03-21</text:span></text:p>
</table:table-cell>
@@ -2027,7 +2024,7 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Kayo Hamid<text:line-break/>Commits: 39<text:line-break/>Joined: <text:span text:style-name="T2">2010-10-09</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Marc-André Laverdière<text:line-break/>Commits: 39<text:line-break/>Joined: <text:span text:style-name="T2">2011-06-21</text:span></text:p>
</table:table-cell>
@@ -2041,7 +2038,7 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Damjan Jovanovic<text:line-break/>Commits: 38<text:line-break/>Joined: <text:span text:style-name="T2">2015-08-26</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Shivam Kumar Singh<text:line-break/>Commits: 38<text:line-break/>Joined: <text:span text:style-name="T2">2020-01-15</text:span></text:p>
</table:table-cell>
@@ -2055,7 +2052,7 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Jennifer Liebel<text:line-break/>Commits: 37<text:line-break/>Joined: <text:span text:style-name="T2">2014-08-29</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Ayhan Yalçınsoy<text:line-break/>Commits: 37<text:line-break/>Joined: <text:span text:style-name="T2">2019-12-20</text:span></text:p>
</table:table-cell>
@@ -2069,7 +2066,7 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Vinaya Mandke<text:line-break/>Commits: 36<text:line-break/>Joined: <text:span text:style-name="T2">2013-02-08</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Csikós Tamás<text:line-break/>Commits: 36<text:line-break/>Joined: <text:span text:style-name="T2">2013-07-01</text:span></text:p>
</table:table-cell>
@@ -2083,7 +2080,7 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Laurent Charrière<text:line-break/>Commits: 35<text:line-break/>Joined: <text:span text:style-name="T2">2010-10-14</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Santiago Martinez<text:line-break/>Commits: 35<text:line-break/>Joined: <text:span text:style-name="T2">2012-01-20</text:span></text:p>
</table:table-cell>
@@ -2097,7 +2094,7 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Tobias Lippert<text:line-break/>Commits: 35<text:line-break/>Joined: <text:span text:style-name="T2">2014-01-02</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Łukasz Hryniuk<text:line-break/>Commits: 35<text:line-break/>Joined: <text:span text:style-name="T2">2015-01-02</text:span></text:p>
</table:table-cell>
@@ -2111,7 +2108,7 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Laurent Alonso<text:line-break/>Commits: 34<text:line-break/>Joined: <text:span text:style-name="T2">2011-10-23</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Rodolfo Ribeiro Gomes<text:line-break/>Commits: 34<text:line-break/>Joined: <text:span text:style-name="T2">2012-12-19</text:span></text:p>
</table:table-cell>
@@ -2125,7 +2122,7 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Aurimas Fišeras<text:line-break/>Commits: 33<text:line-break/>Joined: <text:span text:style-name="T2">2010-10-11</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Cor Nouws<text:line-break/>Commits: 33<text:line-break/>Joined: <text:span text:style-name="T2">2011-11-19</text:span></text:p>
</table:table-cell>
@@ -2136,10 +2133,13 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Dennis Roczek<text:line-break/>Commits: 33<text:line-break/>Joined: <text:span text:style-name="T2">2015-06-09</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Aleksei Nikiforov<text:line-break/>Commits: 33<text:line-break/>Joined: <text:span text:style-name="T2">2018-10-31</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Ilhan Yesil<text:line-break/>Commits: 33<text:line-break/>Joined: <text:span text:style-name="T2">2018-04-11</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
+ <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Aleksei Nikiforov<text:line-break/>Commits: 33<text:line-break/>Joined: <text:span text:style-name="T2">2018-10-31</text:span></text:p>
+ </table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Gokul<text:line-break/>Commits: 32<text:line-break/>Joined: <text:span text:style-name="T2">2012-07-10</text:span></text:p>
</table:table-cell>
@@ -2149,11 +2149,8 @@
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Arnold Dumas<text:line-break/>Commits: 32<text:line-break/>Joined: <text:span text:style-name="T2">2016-02-14</text:span></text:p>
</table:table-cell>
- <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Ilhan Yesil<text:line-break/>Commits: 32<text:line-break/>Joined: <text:span text:style-name="T2">2018-04-11</text:span></text:p>
- </table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Dmitriy Shilin<text:line-break/>Commits: 32<text:line-break/>Joined: <text:span text:style-name="T2">2018-11-30</text:span></text:p>
</table:table-cell>
@@ -2167,7 +2164,7 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Sushil Shinde<text:line-break/>Commits: 31<text:line-break/>Joined: <text:span text:style-name="T2">2013-10-21</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>fengzeng<text:line-break/>Commits: 31<text:line-break/>Joined: <text:span text:style-name="T2">2013-11-04</text:span></text:p>
</table:table-cell>
@@ -2181,7 +2178,7 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>DaeHyun Sung<text:line-break/>Commits: 31<text:line-break/>Joined: <text:span text:style-name="T2">2018-05-19</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Sarper Akdemir<text:line-break/>Commits: 31<text:line-break/>Joined: <text:span text:style-name="T2">2021-04-25</text:span></text:p>
</table:table-cell>
@@ -2195,7 +2192,7 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Christoph Herzog<text:line-break/>Commits: 30<text:line-break/>Joined: <text:span text:style-name="T2">2011-01-07</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Manal Alhassoun<text:line-break/>Commits: 30<text:line-break/>Joined: <text:span text:style-name="T2">2012-09-10</text:span></text:p>
</table:table-cell>
@@ -2209,7 +2206,7 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>mulei<text:line-break/>Commits: 30<text:line-break/>Joined: <text:span text:style-name="T2">2013-11-01</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>kerem<text:line-break/>Commits: 30<text:line-break/>Joined: <text:span text:style-name="T2">2015-10-12</text:span></text:p>
</table:table-cell>
@@ -2223,7 +2220,7 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Regényi Balázs<text:line-break/>Commits: 30<text:line-break/>Joined: <text:span text:style-name="T2">2020-04-02</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>homeboy445<text:line-break/>Commits: 30<text:line-break/>Joined: <text:span text:style-name="T2">2020-12-09</text:span></text:p>
</table:table-cell>
@@ -2237,7 +2234,7 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>xinjiang<text:line-break/>Commits: 29<text:line-break/>Joined: <text:span text:style-name="T2">2013-11-04</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Matthias Seidel<text:line-break/>Commits: 29<text:line-break/>Joined: <text:span text:style-name="T2">2017-02-18</text:span></text:p>
</table:table-cell>
@@ -2251,7 +2248,7 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Jack Leigh<text:line-break/>Commits: 28<text:line-break/>Joined: <text:span text:style-name="T2">2012-10-03</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Pallavi Jadhav<text:line-break/>Commits: 28<text:line-break/>Joined: <text:span text:style-name="T2">2013-02-08</text:span></text:p>
</table:table-cell>
@@ -2265,7 +2262,7 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Gökçen Eraslan<text:line-break/>Commits: 27<text:line-break/>Joined: <text:span text:style-name="T2">2012-04-15</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Joel Madero<text:line-break/>Commits: 27<text:line-break/>Joined: <text:span text:style-name="T2">2012-06-15</text:span></text:p>
</table:table-cell>
@@ -2279,7 +2276,7 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Jorenz Paragas<text:line-break/>Commits: 27<text:line-break/>Joined: <text:span text:style-name="T2">2015-06-23</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Dipangar Niranjar<text:line-break/>Commits: 27<text:line-break/>Joined: <text:span text:style-name="T2">2016-01-03</text:span></text:p>
</table:table-cell>
@@ -2293,7 +2290,10 @@
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Adrien Ollier<text:line-break/>Commits: 27<text:line-break/>Joined: <text:span text:style-name="T2">2019-04-24</text:span></text:p>
</table:table-cell>
</table:table-row>
- <table:table-row table:style-name="TableLine132826464">
+ <table:table-row table:style-name="TableLine144507568">
+ <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Thorsten Behrens<text:line-break/>Commits: 27<text:line-break/>Joined: <text:span text:style-name="T2">2020-12-19</text:span></text:p>
+ </table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Nicolas Christener<text:line-break/>Commits: 26<text:line-break/>Joined: <text:span text:style-name="T2">2011-03-10</text:span></text:p>
</table:table-cell>
@@ -2303,25 +2303,22 @@
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Maxime de Roucy<text:line-break/>Commits: 26<text:line-break/>Joined: <text:span text:style-name="T2">2012-03-08</text:span></text:p>
</table:table-cell>
+ </table:table-row>
+ <table:table-row table:style-name="TableLine144507568">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Daniel Sikeler<text:line-break/>Commits: 26<text:line-break/>Joined: <text:span text:style-name="T2">2014-08-28</text:span></text:p>
</table:table-cell>
- </table:table-row>
- <table:table-row table:style-name="TableLine132826464">
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Akash Jain<text:line-break/>Commits: 26<text:line-break/>Joined: <text:span text:style-name="T2">2016-03-25</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Thorsten Behrens<text:line-break/>Commits: 26<text:line-break/>Joined: <text:span text:style-name="T2">2020-12-19</text:span></text:p>
- </table:table-cell>
- <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Kurosawa Takeshi<text:line-break/>Commits: 25<text:line-break/>Joined: <text:span text:style-name="T2">2011-01-04</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Tomofumi Yagi<text:line-break/>Commits: 25<text:line-break/>Joined: <text:span text:style-name="T2">2011-10-20</text:span></text:p>
&