[Libreoffice-commits] core.git: Branch 'feature/calc-coordinates' - 19132 commits - accessibility/inc accessibility/IwyuFilter_accessibility.yaml accessibility/Library_acc.mk accessibility/source android/Bootstrap android/CustomTarget_lo_android.mk android/mobile-config.py android/README android/source animations/IwyuFilter_animations.yaml animations/source antivirusDetection.vbs apple_remote/source autogen.sh avmedia/inc avmedia/IwyuFilter_avmedia.yaml avmedia/Library_avmediagst_0_10.mk avmedia/Library_avmediagst.mk avmedia/Library_avmedia.mk avmedia/Library_avmediaQuickTime.mk avmedia/Module_avmedia.mk avmedia/source basctl/inc basctl/IwyuFilter_basctl.yaml basctl/Library_basctl.mk basctl/qa basctl/sdi basctl/source basctl/uiconfig basctl/UIConfig_basicide.mk basegfx/CppunitTest_basegfx.mk basegfx/inc basegfx/IwyuFilter_basegfx.yaml basegfx/Library_basegfx.mk basegfx/source basegfx/test basic/CppunitTest_basic_macros.mk basic/inc basic/IwyuFilter_basic.yaml basic/Library_sb.mk basic/qa basic/so urce bean/com bean/Jar_officebean.mk bean/JunitTest_bean_complex.mk bean/native bean/qa bean/test binaryurp/IwyuFilter_binaryurp.yaml binaryurp/source bin/check-elf-dynamic-objects bin/check-implementer-notes.py bin/check-missing-unittests.py bin/convwatch.py bin/distro-install-desktop-integration bin/distro-install-file-lists bin/find-can-be-private-symbols.classes.results bin/find-can-be-private-symbols.functions.results bin/find-can-be-private-symbols.py bin/find-clang-format.py bin/find-files-not-referenced-by-makefile.py bin/find-german-comments bin/find-headers-to-move-inside-modules.py bin/find-mergedlib-can-be-private.classes.results bin/find-mergedlib-can-be-private.py bin/find-most-common-warn-messages.py bin/find-most-repeated-functions.py bin/find-unneeded-includes bin/gbuild-to-ide bin/gen-boost-headers bin/get-bugzilla-attachments-by-mimetype bin/gla11y bin/list-uitest.py bin/lo-all-static-libs bin/lo-commit-stat bin/lo-xlate-lang bin/moveglobalheaders.sh bin/oss-fuzz- build.sh bin/run bin/symbolstore.py bin/symstore.sh bin/ui-checkdomain.sh bin/ui-translatable.sh bin/unpack-sources bin/update bin/update_pch bin/update_pch_bisect bin/update_pch.sh bin/upload_symbols.py bin/verify-custom-widgets-libs bridges/inc bridges/Jar_java_uno.mk bridges/Library_cpp_uno.mk bridges/source canvas/Executable_canvasdemo.mk canvas/inc canvas/IwyuFilter_canvas.yaml canvas/Library_cairocanvas.mk canvas/Library_canvasfactory.mk canvas/Library_canvastools.mk canvas/Library_directx9canvas.mk canvas/Library_gdipluscanvas.mk canvas/Library_oglcanvas.mk canvas/Library_simplecanvas.mk canvas/Library_vclcanvas.mk canvas/Module_canvas.mk canvas/README.vars canvas/source canvas/StaticLibrary_directxcanvas.mk canvas/workben chart2/CppunitTest_chart2_export.mk chart2/inc chart2/IwyuFilter_chart2.yaml chart2/Library_chartcontroller.mk chart2/Library_chartcore.mk chart2/qa chart2/source chart2/uiconfig chart2/UIConfig_chart2.mk chart2/workbench .clang-format cli_ure/readme.txt cl i_ure/source codemaker/Executable_cppumaker.mk codemaker/Executable_javamaker.mk codemaker/source comphelper/CppunitTest_comphelper_parallelsort_test.mk comphelper/CppunitTest_comphelper_test.mk comphelper/inc comphelper/IwyuFilter_comphelper.yaml comphelper/Library_comphelper.mk comphelper/Module_comphelper.mk comphelper/qa comphelper/source comphelper/StaticLibrary_windows_process.mk compilerplugins/clang compilerplugins/.gitignore compilerplugins/LICENSE.TXT compilerplugins/Makefile-clang.mk config.guess config_host/config_feature_desktop.h.in config_host/config_feature_opencl.h.in config_host/config_features.h.in config_host/config_folders.h.in config_host/config_global.h.in config_host/config_gtk3_kde5.h.in config_host/config_kde4.h.in config_host/config_kde5.h.in config_host/config_options.h.in config_host/config_poppler.h.in config_host/config_qt5.h.in config_host/config_skia.h.in config_host/config_vclplug.h.in config_host.mk.in configmgr/CppunitTest_configmgr_unit.mk config mgr/inc configmgr/IwyuFilter_configmgr.yaml configmgr/Library_configmgr.mk configmgr/qa configmgr/README configmgr/source config.sub configure.ac connectivity/com connectivity/CppunitTest_connectivity_commontools.mk connectivity/CppunitTest_connectivity_sharedresources.mk connectivity/inc connectivity/IwyuFilter_connectivity.yaml connectivity/Jar_ConnectivityTools.mk connectivity/Library_ado.mk connectivity/Library_calc.mk connectivity/Library_dbase.mk connectivity/Library_dbpool2.mk connectivity/Library_dbtools.mk connectivity/Library_file.mk connectivity/Library_firebird_sdbc.mk connectivity/Library_flat.mk connectivity/Library_jdbc.mk connectivity/Library_mysqlc.mk connectivity/Library_mysql_jdbc.mk connectivity/Library_odbc.mk connectivity/Library_postgresql-sdbc-impl.mk connectivity/Module_connectivity.mk connectivity/Package_postgresql-sdbc.mk connectivity/qa connectivity/README connectivity/registry connectivity/source connectivity/workben cppcanvas/inc cppcanvas/IwyuFilter_c ppcanvas.yaml cppcanvas/Library_cppcanvas.mk cppcanvas/qa cppcanvas/source cppu/CppunitTest_cppu_typelib.mk cppuhelper/inc cppuhelper/IwyuFilter_cppuhelper.yaml cppuhelper/Library_cppuhelper.mk cppuhelper/qa cppuhelper/source cppu/IwyuFilter_cppu.yaml cppu/Module_cppu.mk cppu/qa cppu/source cpputools/Executable_uno.mk cpputools/source cui/CppunitTest_cui_dialogs_test.mk cui/inc cui/IwyuFilter_cui.yaml cui/Library_cui.mk cui/qa cui/source cui/uiconfig cui/UIConfig_cui.mk dbaccess/CppunitTest_dbaccess_hsqlbinary_import.mk dbaccess/CppunitTest_dbaccess_RowSetClones.mk dbaccess/CppunitTest_dbaccess_tdf119625.mk dbaccess/CppunitTest_dbaccess_tdf126268.mk dbaccess/Executable_odbcconfig.mk dbaccess/inc dbaccess/IwyuFilter_dbaccess.yaml dbaccess/JunitTest_dbaccess_complex.mk dbaccess/Library_dbahsql.mk dbaccess/Library_dba.mk dbaccess/Library_dbaxml.mk dbaccess/Library_dbmm.mk dbaccess/Library_dbu.mk dbaccess/Library_sdbt.mk dbaccess/Module_dbaccess.mk dbaccess/qa dbaccess/README dbaccess/s ource dbaccess/uiconfig dbaccess/UIConfig_dbaccess.mk dbaccess/win32 desktop/CppunitTest_desktop_app.mk desktop/CppunitTest_desktop_lib.mk desktop/CppunitTest_desktop_lokinit.mk desktop/CustomTarget_soffice.mk desktop/Executable_minidump_upload.mk desktop/Executable_quickstart.mk desktop/Executable_sbase.mk desktop/Executable_scalc.mk desktop/Executable_sdraw.mk desktop/Executable_simpress.mk desktop/Executable_smath.mk desktop/Executable_soffice_bin.mk desktop/Executable_soffice_com.mk desktop/Executable_soffice_exe.mk desktop/Executable_soffice.mk desktop/Executable_sweb.mk desktop/Executable_swriter.mk desktop/Executable_unoinfo.mk desktop/Executable_unopkg_bin.mk desktop/Executable_unopkg_com.mk desktop/Executable_unopkg.mk desktop/inc desktop/IwyuFilter_desktop.yaml desktop/Jar_active_java.mk desktop/Jar_passive_java.mk desktop/Library_crashreport.mk desktop/Library_deploymentgui.mk desktop/Library_deploymentmisc.mk desktop/Library_deployment.mk desktop/Library_offacc.mk deskto p/Library_sofficeapp.mk desktop/Module_desktop.mk desktop/Pagein_common.mk desktop/qa desktop/README desktop/scripts desktop/source desktop/StaticLibrary_winlauncher.mk desktop/StaticLibrary_winloader.mk desktop/test desktop/uiconfig desktop/UIConfig_deployment.mk desktop/unx desktop/util desktop/win32 desktop/WinResTarget_sbase.mk desktop/WinResTarget_scalc.mk desktop/WinResTarget_sdraw.mk desktop/WinResTarget_simpress.mk desktop/WinResTarget_smath.mk desktop/WinResTarget_sofficebin.mk desktop/WinResTarget_soffice.mk desktop/WinResTarget_sweb.mk desktop/WinResTarget_swriter.mk dictionaries distro-configs/CPAndroidAarch64.conf distro-configs/CPAndroidBranding.conf distro-configs/CPAndroid.conf distro-configs/Jenkins distro-configs/LibreOfficeAndroidAarch64.conf distro-configs/LibreOfficeAndroid.conf distro-configs/LibreOfficeAndroidX86_64.conf distro-configs/LibreOfficeAndroidX86.conf distro-configs/LibreOfficeCoverity.conf distro-configs/LibreOfficeFlatpak.conf distro-configs/Libre OfficeiOS.conf distro-configs/LibreOfficeiOS_Sim.conf distro-configs/LibreOfficeLinux.conf distro-configs/LibreOfficeMacOSX.conf distro-configs/LibreOfficeOnline.conf distro-configs/LibreOfficeOpenBSD.conf distro-configs/LibreOfficeOssFuzz.conf distro-configs/LibreOfficeVanillaMacAppStore.conf download.lst drawinglayer/inc drawinglayer/IwyuFilter_drawinglayer.yaml drawinglayer/Library_drawinglayer.mk drawinglayer/qa drawinglayer/source dtrans/Library_sysdtrans.mk dtrans/source dtrans/test editeng/CustomTarget_generated.mk editeng/inc editeng/IwyuFilter_editeng.yaml editeng/Library_editeng.mk editeng/qa editeng/source embeddedobj/CppunitTest_embeddedobj_general.mk embeddedobj/IwyuFilter_embeddedobj.yaml embeddedobj/Library_embobj.mk embeddedobj/Module_embeddedobj.mk embeddedobj/qa embeddedobj/source embeddedobj/test embedserv/Module_embedserv.mk embedserv/source emfio/CppunitTest_emfio_emf_test.mk emfio/inc emfio/IwyuFilter_emfio.yaml emfio/Library_emfio.mk emfio/qa emfio/source even tattacher/IwyuFilter_eventattacher.yaml eventattacher/source extensions/CppunitTest_extensions_test_update.mk extensions/CustomTarget_automationtest.mk extensions/CustomTarget_so_activex_idl.mk extensions/Executable_twain32shim.mk extensions/inc extensions/IwyuFilter_extensions.yaml extensions/Library_ldapbe2.mk extensions/Library_oleautobridge.mk extensions/Library_pcr.mk extensions/Library_scn.mk extensions/Library_so_activex_x64.mk extensions/Library_updchk.mk extensions/Library_WinUserInfoBe.mk extensions/Module_extensions.mk extensions/qa extensions/README extensions/source extensions/test extensions/uiconfig extensions/UIConfig_sbibliography.mk extensions/UIConfig_spropctrlr.mk external/apache-commons external/apr external/beanshell external/bluez_bluetooth external/boost external/box2d external/breakpad external/bzip2 external/cairo external/clucene external/coinmp external/cppunit external/ct2n external/curl external/dtoa external/epm external/epoxy external/expat external/f irebird external/fontconfig external/freetype external/glm external/gpgmepp external/graphite external/harfbuzz external/hsqldb external/hunspell external/hyphen external/icu external/jfreereport external/languagetool external/lcms2 external/libabw external/libassuan external/libatomic_ops external/libcdr external/libcmis external/libebook external/libeot external/libepubgen external/libetonyek external/libexttextcat external/libffi external/libfreehand external/libgpg-error external/libjpeg-turbo external/liblangtag external/libmspub external/libmwaw external/libnumbertext external/libodfgen external/liborcus external/libpagemaker external/libpng external/libqxp external/librevenge external/libstaroffice external/libtommath external/libvisio external/libwpd external/libwpg external/libwps external/libxml2 external/libxslt external/libzmf external/lpsolve external/lxml external/mariadb-connector-c external/mdds external/mdnsresponder external/Module_external.mk external/more_fonts e xternal/mythes external/neon external/nss external/openldap external/openssl external/owncloud-android-lib external/pdfium external/poppler external/postgresql external/python3 external/qrcodegen external/redland external/rhino external/serf external/skia external/twain_dsm external/ucpp external/xmlsec external/zlib extras/AllLangPackage_autotextshare.mk extras/CustomTarget_autocorr.mk extras/CustomTarget_autotextshare.mk extras/CustomTarget_autotextuser.mk extras/CustomTarget_glade.mk extras/CustomTarget_opensymbol.mk extras/CustomTarget_tpldraw.mk extras/CustomTarget_tplofficorr.mk extras/CustomTarget_tploffimisc.mk extras/CustomTarget_tplpersonal.mk extras/CustomTarget_tplpresnt.mk extras/CustomTarget_tpl_styles.mk extras/Gallery_arrows.mk extras/Gallery_backgrounds.mk extras/Gallery_computers.mk extras/Gallery_diagrams.mk extras/Gallery_education.mk extras/Gallery_environment.mk extras/Gallery_finance.mk extras/Gallery_people.mk extras/Gallery_symbols.mk extras/Gallery_transpor tation.mk extras/Gallery_txtshapes.mk extras/Module_extras.mk extras/Package_autocorr.mk extras/Package_gallhtmlexpo.mk extras/Package_gallmytheme.mk extras/Package_gallwwwgraf.mk extras/Package_palettes.mk extras/Package_resource_fonts.mk extras/Package_tpldraw.mk extras/Package_tpl_styles.mk extras/Package_tplwizbitmap.mk extras/README extras/source filter/Configuration_filter.mk filter/CppunitTest_filter_svg.mk filter/CppunitTest_filter_textfilterdetect.mk filter/CustomTarget_svg.mk filter/inc filter/IwyuFilter_filter.yaml filter/Library_flash.mk filter/Library_gie.mk filter/Library_icg.mk filter/Library_pdffilter.mk filter/Module_filter.mk filter/qa filter/README filter/source filter/uiconfig filter/UIConfig_filter.mk forms/inc forms/IwyuFilter_forms.yaml forms/Library_frm.mk forms/qa forms/source formula/inc formula/IwyuFilter_formula.yaml formula/qa formula/source formula/uiconfig fpicker/inc fpicker/IwyuFilter_fpicker.yaml fpicker/Library_fps.mk fpicker/Library_fps_office.mk fpicker/Module_fpicker.mk fpicker/qa fpicker/README fpicker/source fpicker/test fpicker/uiconfig fpicker/UIConfig_fps.mk fpicker/WinResTarget_fps.mk framework/dtd framework/inc framework/IwyuFilter_framework.yaml framework/JunitTest_framework_complex.mk framework/Library_fwe.mk framework/Library_fwi.mk framework/Library_fwk.mk framework/Library_fwl.mk framework/Library_fwm.mk framework/Module_framework.mk framework/qa framework/source framework/uiconfig framework/util .git-blame-ignore-revs .git-hooks/commit-msg .git-hooks/pre-commit .github/FUNDING.yml .gitignore .gitmodules .gitpod.dockerfile .gitpod.yml .gitreview hardened_runtime.xcent.in helpcompiler/inc helpcompiler/IwyuFilter_helpcompiler.yaml helpcompiler/source helpcontent2 hwpfilter/inc hwpfilter/Library_hwp.mk hwpfilter/source i18nlangtag/IwyuFilter_i18nlangtag.yaml i18nlangtag/qa i18nlangtag/source i18npool/CppunitTest_i18npool_defaultnumberingprovider.mk i18npool/CustomTarget_breakiterator.mk i18npool/CustomTarget_colla tor.mk i18npool/CustomTarget_indexentry.mk i18npool/CustomTarget_localedata.mk i18npool/CustomTarget_textconversion.mk i18npool/Executable_gendict.mk i18npool/inc i18npool/IwyuFilter_i18npool.yaml i18npool/Library_localedata_en.mk i18npool/Library_localedata_euro.mk i18npool/Library_localedata_others.mk i18npool/Module_i18npool.mk i18npool/qa i18npool/source i18npool/util i18nutil/IwyuFilter_i18nutil.yaml i18nutil/source icon-themes/breeze icon-themes/breeze_dark icon-themes/breeze_dark_svg icon-themes/breeze_svg icon-themes/colibre icon-themes/colibre_svg icon-themes/elementary icon-themes/elementary_svg icon-themes/karasa_jaga icon-themes/karasa_jaga_svg icon-themes/README icon-themes/sifr icon-themes/sifr_dark icon-themes/sifr_dark_svg icon-themes/sifr_svg icon-themes/sukapura icon-themes/sukapura_svg icon-themes/tango icon-themes/tango_svg idlc/CustomTarget_parser_test.mk idlc/Executable_idlc.mk idlc/inc idlc/source idlc/test idl/Executable_svidl.mk idl/inc idl/source include/an droid include/animations include/avmedia include/basegfx include/basic include/canvas include/codemaker include/com include/comphelper include/connectivity include/cppcanvas include/cppuhelper include/cui include/dbaccess include/desktop include/drawinglayer include/editeng include/filter include/formula include/framework include/i18nlangtag include/i18npool include/i18nutil include/ios include/IwyuFilter_include.yaml include/jvmaccess include/jvmfwk include/LibreOfficeKit include/linguistic include/o3tl include/onlineupdate include/oox include/opencl include/osl include/package include/postwin.h include/registry include/rtl include/sal include/salhelper include/sax include/sfx2 include/sot include/store include/svl include/svtools include/svx include/test include/toolkit include/tools include/typelib include/ucbhelper include/uno include/unoidl include/unotest include/unotools include/vbahelper include/vcl include/xmloff include/xmlreader include/xmlscript install-sh instsetoo_nati ve/CustomTarget_install.mk instsetoo_native/CustomTarget_setup.mk instsetoo_native/inc_common instsetoo_native/inc_ooohelppack instsetoo_native/inc_openoffice instsetoo_native/inc_sdkoo instsetoo_native/ooenv instsetoo_native/util io/IwyuFilter_io.yaml io/Library_io.mk io/qa ios/CustomTarget_iOS_link.mk ios/CustomTarget_iOS_setup.mk ios/LibreOfficeLight ios/Module_ios.mk io/source ios/README ios/source ios/StaticLibrary_ios.mk ios/UnitTest io/test javaunohelper/com javaunohelper/IwyuFilter_javaunohelper.yaml javaunohelper/Jar_juh.mk javaunohelper/JunitTest_juh.mk javaunohelper/Library_juhx.mk javaunohelper/source javaunohelper/test javaunohelper/util jurt/com jurt/CustomTarget_test_urp.mk jurt/InternalUnoApi_test_urp.mk jurt/Jar_jurt.mk jurt/JunitTest_bridgefactory.mk jurt/JunitTest_connections.mk jurt/JunitTest_java.mk jurt/JunitTest_java_remote.mk jurt/JunitTest_remote.mk jurt/JunitTest_uno.mk jurt/JunitTest_urp.mk jurt/JunitTest_util.mk jurt/Library_jpipe.mk jurt/Module_jurt.mk j urt/source jurt/test jurt/util jvmaccess/IwyuFilter_jvmaccess.yaml jvmaccess/source jvmfwk/CustomTarget_jreproperties.mk jvmfwk/CustomTarget_jvmfwk_jvmfwk3_ini.mk jvmfwk/distributions jvmfwk/inc jvmfwk/IwyuFilter_jvmfwk.yaml jvmfwk/plugins jvmfwk/README jvmfwk/source l10ntools/inc l10ntools/source leak-suppress.txt librelogo/CustomTarget_librelogo.mk librelogo/source libreofficekit/CppunitTest_libreofficekit_tiledrendering.mk libreofficekit/Executable_gtktiledviewer.mk libreofficekit/Executable_tilebench.mk libreofficekit/IwyuFilter_libreofficekit.yaml libreofficekit/Library_libreofficekitgtk.mk libreofficekit/qa libreofficekit/source lingucomponent/Library_MacOSXSpell.mk lingucomponent/Module_lingucomponent.mk lingucomponent/source linguistic/inc linguistic/IwyuFilter_linguistic.yaml linguistic/JunitTest_linguistic_complex.mk linguistic/Library_lng.mk linguistic/source linguistic/workben logerrit lotuswordpro/CppunitTest_lotuswordpro_import_test.mk lotuswordpro/inc lotuswordpro/Iwy uFilter_lotuswordpro.yaml lotuswordpro/Library_lwpft.mk lotuswordpro/Module_lotuswordpro.mk lotuswordpro/qa lotuswordpro/source lo.xcent lo.xcent.in m4/l_atomic.m4 Makefile.fetch Makefile.in nlpsolver/Jar_nlpsolver.mk nlpsolver/README nlpsolver/src nlpsolver/ThirdParty o3tl/CompilerTest_o3tl_unsafe_downcast.mk o3tl/CppunitTest_o3tl_tests.mk o3tl/Module_o3tl.mk o3tl/qa odk/build-examples_common.mk odk/config odk/CustomTarget_allheaders.mk odk/CustomTarget_check.mk odk/CustomTarget_doxygen.mk odk/CustomTarget_html.mk odk/CustomTarget_javadoc.mk odk/docs odk/examples odk/index.html odk/index_online.html odk/Package_odk_headers.mk odk/Package_share_readme.mk odk/README odk/settings odk/source odk/util offapi/com offapi/README offapi/type_reference offapi/UnoApi_offapi.mk officecfg/CustomTarget_registry.mk officecfg/files.mk officecfg/registry officecfg/util onlineupdate/Executable_mar.mk onlineupdate/Executable_mbsdiff.mk onlineupdate/Executable_test_updater_dialog.mk onlineupdate/Execu table_updater.mk onlineupdate/Executable_update_service.mk onlineupdate/source onlineupdate/StaticLibrary_libmar.mk onlineupdate/StaticLibrary_libmarverify.mk onlineupdate/StaticLibrary_updatehelper.mk oovbaapi/ooo oox/AllLangMoTarget_oox.mk oox/CppunitTest_oox_drawingml.mk oox/CppunitTest_oox_mathml.mk oox/CppunitTest_oox_shape.mk oox/CppunitTest_oox_vml.mk oox/CustomTarget_generated.mk oox/documentation oox/inc oox/IwyuFilter_oox.yaml oox/Library_oox.mk oox/Module_oox.mk oox/qa oox/README oox/source opencl/Executable_opencltest.mk opencl/inc opencl/IwyuFilter_opencl.yaml opencl/Module_opencl.mk opencl/opencltest opencl/source osx/README osx/soffice.xcodeproj package/inc package/Library_package2.mk package/Library_xstor.mk package/qa package/source pch/inc pch/Makefile pch/Module_pch.mk pch/README pch/StaticLibrary_precompiled_system.mk pch/system_empty.cxx postprocess/CppunitTest_services.mk postprocess/CustomTarget_check_dynamic_objects.mk postprocess/CustomTarget_images.mk postp rocess/CustomTarget_registry.mk postprocess/CustomTarget_signing.mk postprocess/Module_postprocess.mk postprocess/packimages postprocess/qa postprocess/Rdb_services.mk postprocess/signing pyuno/CustomTarget_python_shell.mk pyuno/CustomTarget_pyuno_pythonloader_ini.mk pyuno/demo pyuno/Executable_python.mk pyuno/inc pyuno/IwyuFilter_pyuno.yaml pyuno/Module_pyuno.mk pyuno/PythonTest_pyuno_pytests_ssl.mk pyuno/PythonTest_pyuno_pytests_testcollections.mk pyuno/PythonTest_pyuno_pytests_testssl.mk pyuno/qa pyuno/source qadevOOo/.classpath qadevOOo/Jar_OOoRunner.mk qadevOOo/objdsc qadevOOo/qa qadevOOo/runner qadevOOo/tests readlicense_oo/CustomTarget_license.mk readlicense_oo/CustomTarget_readme.mk readlicense_oo/docs readlicense_oo/license readlicense_oo/Module_readlicense_oo.mk readlicense_oo/Package_files.mk readlicense_oo/Package_license.mk readlicense_oo/README README.cross README.md registry/Executable_regmerge.mk registry/Executable_regview.mk registry/inc registry/IwyuFilter_registr y.yaml registry/source registry/test registry/tools remotebridges/source reportbuilder/Jar_reportbuilder.mk reportbuilder/java reportdesign/inc reportdesign/IwyuFilter_reportdesign.yaml reportdesign/Library_rpt.mk reportdesign/Library_rptui.mk reportdesign/Library_rptxml.mk reportdesign/qa reportdesign/source reportdesign/uiconfig RepositoryExternal.mk RepositoryFixes.mk Repository.mk RepositoryModule_host.mk ridljar/com ridljar/CustomTarget_javamaker.mk ridljar/CustomTarget_test_urp.mk ridljar/InternalUnoApi_test_urp.mk ridljar/Jar_libreoffice.mk ridljar/Jar_ridl.mk ridljar/JunitTest_bridgefactory.mk ridljar/JunitTest_connections.mk ridljar/JunitTest_java.mk ridljar/JunitTest_java_remote.mk ridljar/JunitTest_remote.mk ridljar/JunitTest_typedesc.mk ridljar/JunitTest_uno.mk ridljar/JunitTest_urp.mk ridljar/JunitTest_util.mk ridljar/Module_ridljar.mk ridljar/pom.libreoffice.xml ridljar/source ridljar/test ridljar/util sal/android sal/cppunittester sal/CppunitTest_sal_comtools.mk sal/C ppunitTest_sal_osl.mk sal/Executable_cppunittester.mk salhelper/IwyuFilter_salhelper.yaml salhelper/qa salhelper/source sal/inc sal/Library_sal.mk sal/Module_sal.mk sal/osl sal/qa sal/rtl sal/test sal/textenc sal/util sax/CppunitTest_sax_attributes.mk sax/CppunitTest_sax.mk sax/CppunitTest_sax_parser.mk sax/CppunitTest_sax_xmlimport.mk sax/inc sax/IwyuFilter_sax.yaml sax/Library_expwrap.mk sax/Library_sax.mk sax/qa sax/source sax/test scaddins/inc scaddins/IwyuFilter_scaddins.yaml scaddins/Library_analysis.mk scaddins/Library_date.mk scaddins/Library_pricing.mk scaddins/source sccomp/IwyuFilter_sccomp.yaml sccomp/qa sccomp/source sc/CppunitTest_sc_addin_functions_test.mk sc/CppunitTest_sc_anchor_test.mk sc/CppunitTest_sc_annotationobj.mk sc/CppunitTest_sc_annotationshapeobj.mk sc/CppunitTest_sc_annotationsobj.mk sc/CppunitTest_sc_arealinkobj.mk sc/CppunitTest_sc_arealinksobj.mk sc/CppunitTest_sc_array_functions_test.mk sc/CppunitTest_sc_autoformatobj.mk sc/CppunitTest_sc_autoformats obj.mk sc/CppunitTest_sc_bugfix_test.mk sc/CppunitTest_sc_cache_test.mk sc/CppunitTest_sc_cellcursorobj.mk sc/CppunitTest_sc_cellfieldsobj.mk sc/CppunitTest_sc_cellformatsenumeration.mk sc/CppunitTest_sc_cellformatsobj.mk sc/CppunitTest_sc_cellobj.mk sc/CppunitTest_sc_cellrangeobj.mk sc/CppunitTest_sc_cellrangesobj.mk sc/CppunitTest_sc_cellsearchobj.mk sc/CppunitTest_sc_cellsenumeration.mk sc/CppunitTest_sc_cellsobj.mk sc/CppunitTest_sc_chart2dataprovider.mk sc/CppunitTest_sc_chartobj.mk sc/CppunitTest_sc_chart_regression_test.mk sc/CppunitTest_sc_chartsobj.mk sc/CppunitTest_sc_check_data_pilot_field.mk sc/CppunitTest_sc_check_data_pilot_table.mk sc/CppunitTest_sc_check_xcell_ranges_query.mk sc/CppunitTest_sc_cond_format_merge.mk sc/CppunitTest_sc_consolidationdescriptorobj.mk sc/CppunitTest_sc_copypaste.mk sc/CppunitTest_sc_core.mk sc/CppunitTest_sc_database_functions_test.mk sc/CppunitTest_sc_databaserangeobj.mk sc/CppunitTest_sc_databaserangesobj.mk sc/CppunitTest_sc_datapilotfie ldgroupitemobj.mk sc/CppunitTest_sc_datapilotfieldgroupobj.mk sc/CppunitTest_sc_datapilotfieldgroupsobj.mk sc/CppunitTest_sc_datapilotfieldobj.mk sc/CppunitTest_sc_datapilotfieldsobj.mk sc/CppunitTest_sc_datapilotitemobj.mk sc/CppunitTest_sc_datapilotitemsobj.mk sc/CppunitTest_sc_datapilottableobj.mk sc/CppunitTest_sc_datapilottablesobj.mk sc/CppunitTest_sc_dataprovider.mk sc/CppunitTest_sc_datatransformation.mk sc/CppunitTest_sc_datetime_functions_test.mk sc/CppunitTest_sc_ddelinkobj.mk sc/CppunitTest_sc_ddelinksobj.mk sc/CppunitTest_sc_documentconfigurationobj.mk sc/CppunitTest_sc_drawpageobj.mk sc/CppunitTest_sc_drawpagesobj.mk sc/CppunitTest_sc_editfieldobj_cell.mk sc/CppunitTest_sc_editfieldobj_header.mk sc/CppunitTest_sc_filterdescriptorbase.mk sc/CppunitTest_sc_filterdescriptorbaseobj.mk sc/CppunitTest_sc_filters_test.mk sc/CppunitTest_sc_financial_functions_test.mk sc/CppunitTest_sc_functiondescriptionobj.mk sc/CppunitTest_sc_functionlistobj.mk sc/CppunitTest_sc_functions_te st_old.mk sc/CppunitTest_sc_headerfieldsobj.mk sc/CppunitTest_sc_headerfootercontentobj.mk sc/CppunitTest_sc_html_export_test.mk sc/CppunitTest_sc_importdescriptorbaseobj.mk sc/CppunitTest_sc_indexenumeration_cellannotationsenumeration.mk sc/CppunitTest_sc_indexenumeration_cellarealinksenumeration.mk sc/CppunitTest_sc_indexenumeration_databaserangesenumeration.mk sc/CppunitTest_sc_indexenumeration_datapilotfieldsenumeration.mk sc/CppunitTest_sc_indexenumeration_datapilotitemsenumeration.mk sc/CppunitTest_sc_indexenumeration_datapilottablesenumeration.mk sc/CppunitTest_sc_indexenumeration_ddelinksenumeration.mk sc/CppunitTest_sc_indexenumeration_functiondescriptionenumeration.mk sc/CppunitTest_sc_indexenumeration_labelrangesenumeration.mk sc/CppunitTest_sc_indexenumeration_namedrangesenumeration.mk sc/CppunitTest_sc_indexenumeration_scenariosenumeration.mk sc/CppunitTest_sc_indexenumeration_sheetcellrangesenumeration.mk sc/CppunitTest_sc_indexenumeration_sheetlinksenumeration.mk sc/C ppunitTest_sc_indexenumeration_spreadsheetsenumeration.mk sc/CppunitTest_sc_indexenumeration_spreadsheetviewpanesenumeration.mk sc/CppunitTest_sc_indexenumeration_subtotalfieldsenumeration.mk sc/CppunitTest_sc_indexenumeration_tableautoformatenumeration.mk sc/CppunitTest_sc_indexenumeration_tablechartsenumeration.mk sc/CppunitTest_sc_indexenumeration_tablecolumnsenumeration.mk sc/CppunitTest_sc_indexenumeration_tableconditionalentryenumeration.mk sc/CppunitTest_sc_indexenumeration_tablerowsenumeration.mk sc/CppunitTest_sc_indexenumeration_textfieldenumeration.mk sc/CppunitTest_sc_information_functions_test.mk sc/CppunitTest_sc_labelrangeobj.mk sc/CppunitTest_sc_labelrangesobj.mk sc/CppunitTest_sc_logical_functions_test.mk sc/CppunitTest_sc_macros_test.mk sc/CppunitTest_sc_mark_test.mk sc/CppunitTest_sc_mathematical_functions_test.mk sc/CppunitTest_sc_modelobj.mk sc/CppunitTest_sc_namedrangeobj.mk sc/CppunitTest_sc_namedrangesobj.mk sc/CppunitTest_sc_new_cond_format_api.mk sc/Cppunit Test_sc_opencl_test.mk sc/CppunitTest_sc_outlineobj.mk sc/CppunitTest_sc_parallelism.mk sc/CppunitTest_sc_pdf_export.mk sc/CppunitTest_sc_perfobj.mk sc/CppunitTest_sc_pivottable_filters_test.mk sc/CppunitTest_sc_rangelst_test.mk sc/CppunitTest_sc_range_test.mk sc/CppunitTest_sc_recentfunctionsobj.mk sc/CppunitTest_sc_recordchanges.mk sc/CppunitTest_sc_scenariosobj.mk sc/CppunitTest_sc_screenshots.mk sc/CppunitTest_sc_shapeobj.mk sc/CppunitTest_sc_shapetest.mk sc/CppunitTest_sc_sheetlinkobj.mk sc/CppunitTest_sc_sheetlinksobj.mk sc/CppunitTest_sc_sortdescriptorbaseobj.mk sc/CppunitTest_sc_spreadsheet_functions_test.mk sc/CppunitTest_sc_spreadsheetsettings.mk sc/CppunitTest_sc_spreadsheetsettingsobj.mk sc/CppunitTest_sc_statistical_functions_test.mk sc/CppunitTest_sc_stylefamiliesobj.mk sc/CppunitTest_sc_stylefamilyobj.mk sc/CppunitTest_sc_styleloaderobj.mk sc/CppunitTest_sc_styleobj.mk sc/CppunitTest_sc_subsequent_export_test.mk sc/CppunitTest_sc_subsequent_filters_test.mk sc/CppunitT est_sc_subtotaldescriptorbase.mk sc/CppunitTest_sc_subtotaldescriptorbaseobj.mk sc/CppunitTest_sc_subtotalfieldobj.mk sc/CppunitTest_sc_tablecolumnobj.mk sc/CppunitTest_sc_tablecolumnsobj.mk sc/CppunitTest_sc_tableconditionalentryobj.mk sc/CppunitTest_sc_tableconditionalformat.mk sc/CppunitTest_sc_tableconditionalformatobj.mk sc/CppunitTest_sc_tablerowobj.mk sc/CppunitTest_sc_tablerowsobj.mk sc/CppunitTest_sc_tablesheetobj.mk sc/CppunitTest_sc_tablesheetsobj.mk sc/CppunitTest_sc_tablevalidationobj.mk sc/CppunitTest_sc_tabviewobj.mk sc/CppunitTest_sc_text_functions_test.mk sc/CppunitTest_sc_tiledrendering.mk sc/CppunitTest_sc_ucalc.mk sc/CppunitTest_sc_uicalc.mk sc/CppunitTest_sc_uniquecellformatsenumeration.mk sc/CppunitTest_sc_uniquecellformatsobj.mk sc/CppunitTest_sc_viewpaneobj.mk schema/libreoffice schema/odf1.3 sc/inc sc/IwyuFilter_sc.yaml sc/JunitTest_sc_unoapi_5.mk sc/Library_scd.mk sc/Library_scfilt.mk sc/Library_sc.mk sc/Library_scqahelper.mk sc/Library_scui.mk sc/Library_v baobj.mk sc/Module_sc.mk scp2/AutoInstall.mk scp2/inc scp2/InstallModule_spsupp.mk scp2/InstallScript_setup_osl.mk scp2/macros scp2/Module_scp2.mk scp2/source sc/qa sc/README scripting/examples scripting/Jar_HelloWorld.mk scripting/Jar_Highlight.mk scripting/Jar_MemoryUsage.mk scripting/Jar_ScriptFramework.mk scripting/Jar_ScriptProviderForBeanShell.mk scripting/Jar_ScriptProviderForJava.mk scripting/Jar_ScriptProviderForJavaScript.mk scripting/java scripting/Library_protocolhandler.mk scripting/Package_ScriptsPython.mk scripting/README scripting/source sc/sdi sc/source sc/uiconfig sc/UIConfig_scalc.mk sc/UITest_calc_dialogs.mk sc/UITest_calc_tests7.mk sc/UITest_calc_tests8.mk sc/UITest_calc_tests9.mk sc/UITest_chart.mk sc/UITest_pageFormat.mk sc/UITest_range_name.mk sc/UITest_search_replace.mk sc/UITest_sort.mk sc/UITest_statistics.mk sd/CppunitTest_sd_activex_controls_tests.mk sd/CppunitTest_sd_dialogs_test.mk sd/CppunitTest_sd_export_ooxml1.mk sd/CppunitTest_sd_export_ooxml2.mk s d/CppunitTest_sd_export_tests.mk sd/CppunitTest_sd_filters_test.mk sd/CppunitTest_sd_html_export_tests.mk sd/CppunitTest_sd_import_tests.mk sd/CppunitTest_sd_import_tests_smartart.mk sd/CppunitTest_sd_misc_tests.mk sd/CppunitTest_sd_pdf_import_test.mk sd/CppunitTest_sd_svg_export_tests.mk sd/CppunitTest_sd_tiledrendering.mk sd/CppunitTest_sd_uiimpress.mk sd/CppunitTest_sd_uimpress.mk sdext/CustomTarget_pdfimport.mk sdext/Executable_xpdfimport.mk sdext/inc sdext/IwyuFilter_sdext.yaml sdext/Library_pdfimport.mk sdext/Library_PresentationMinimizer.mk sdext/Library_PresenterScreen.mk sdext/Module_sdext.mk sdext/source sd/inc sd/IwyuFilter_sd.yaml sd/Library_sdd.mk sd/Library_sdfilt.mk sd/Library_sd.mk sd/Library_sdui.mk sd/Module_sd.mk sd/Package_web.mk sd/qa sd/res sd/sdi sd/source sd/uiconfig sd/UIConfig_sdraw.mk sd/UIConfig_simpress.mk sd/UITest_sd_findReplace.mk sd/util sd/workben sd/xml setup_native/Library_reg4allmsdoc.mk setup_native/Library_reg_dlls.mk setup_native/Library_shlxt msi.mk setup_native/Module_setup_native.mk setup_native/scripts setup_native/source setup_native/StaticLibrary_quickstarter.mk sfx2/classification sfx2/inc sfx2/IwyuFilter_sfx2.yaml sfx2/Library_sfx.mk sfx2/Module_sfx2.mk sfx2/qa sfx2/sdi sfx2/source sfx2/uiconfig sfx2/UIConfig_sfx.mk sfx2/util shell/AllLangMoTarget_shell.mk shell/CustomTarget_shlxthdl_res.mk shell/CustomTarget_spsupp_idl.mk shell/CustomTarget_x64.mk shell/Executable_senddoc.mk shell/Executable_spsupp_helper.mk shell/inc shell/Library_cmdmail.mk shell/Library_desktopbe.mk shell/Library_kde4be.mk shell/Library_kde5be.mk shell/Library_kf5be.mk shell/Library_ooofilt.mk shell/Library_ooofilt_x64.mk shell/Library_propertyhdl.mk shell/Library_propertyhdl_x64.mk shell/Library_recentfile.mk shell/Library_shlxthdl.mk shell/Library_shlxthdl_x64.mk shell/Library_spsupp.mk shell/Library_spsupp_x64.mk shell/Library_spsupp_x86.mk shell/Module_shell.mk shell/qa shell/README shell/source shell/StaticLibrary_shlxthandler_common.mk s hell/StaticLibrary_shlxthandler_common_x64.mk shell/WinResTarget_spsupp_dlg.mk slideshow/CppunitTest_slideshow.mk slideshow/Executable_demoshow.mk slideshow/inc slideshow/IwyuFilter_slideshow.yaml slideshow/Library_slideshow.mk slideshow/manifest.txt slideshow/Module_slideshow.mk slideshow/opengl slideshow/source slideshow/test smoketest/com smoketest/Executable_libtest.mk smoketest/Jar_smoketest.mk smoketest/Jar_TestExtension.mk smoketest/libtest.cxx smoketest/smoketest.cxx solenv/bin solenv/clang-format solenv/CompilerTest_compilerplugins_clang.mk solenv/doc solenv/flatpak-manifest.in solenv/gbuild solenv/gbuildtojson solenv/gdb solenv/inc solenv/maven solenv/qa solenv/sanitizers solenv/vs soltools/cpp soltools/mkdepend sot/inc sot/IwyuFilter_sot.yaml sot/Library_sot.mk sot/qa sot/source starmath/CppunitTest_starmath_qa_cppunit.mk starmath/inc starmath/IwyuFilter_starmath.yaml starmath/Library_smd.mk starmath/Library_sm.mk starmath/qa starmath/sdi starmath/source starmath/uiconfig starmath/util starmath/visual-editor-todo stoc/CppunitTest_stoc_uriproc.mk stoc/IwyuFilter_stoc.yaml stoc/Library_bootstrap.mk stoc/Library_javaloader.mk stoc/Library_javavm.mk stoc/Module_stoc.mk stoc/source stoc/test store/IwyuFilter_store.yaml store/source svgio/CppunitTest_svgio.mk svgio/CppunitTest_svgio_read.mk svgio/inc svgio/IwyuFilter_svgio.yaml svgio/Library_svgio.mk svgio/Module_svgio.mk svgio/qa svgio/source svl/CppunitTest_svl_items.mk svl/CppunitTest_svl_lockfiles.mk svl/inc svl/IwyuFilter_svl.yaml svl/JunitTest_svl_complex.mk svl/Library_svl.mk svl/Module_svl.mk svl/qa svl/source svl/unx svtools/CppunitTest_svtools_dialogs_test.mk svtools/inc svtools/IwyuFilter_svtools.yaml svtools/langsupport svtools/Library_svt.mk svtools/Module_svtools.mk svtools/qa svtools/README svtools/source svtools/uiconfig svtools/UIConfig_svt.mk svx/CppunitTest_svx_gallery_test.mk svx/CppunitTest_svx_unit.mk svx/Executable_gengal.mk svx/inc svx/IwyuFilter_svx.yaml svx/Library_svxcore.mk svx /Library_svx.mk svx/Module_svx.mk svx/qa svx/sdi svx/source svx/uiconfig svx/UIConfig_svx.mk svx/util sw/CppunitTest_sw_accessible_relation_set.mk sw/CppunitTest_sw_apiterminate.mk sw/CppunitTest_sw_apitests.mk sw/CppunitTest_sw_core_accessibilitycheck.mk sw/CppunitTest_sw_core_doc.mk sw/CppunitTest_sw_core_frmedt.mk sw/CppunitTest_sw_core_layout.mk sw/CppunitTest_sw_core_objectpositioning.mk sw/CppunitTest_sw_core_text.mk sw/CppunitTest_sw_core_txtnode.mk sw/CppunitTest_sw_dialogs_test_2.mk sw/CppunitTest_sw_dialogs_test.mk sw/CppunitTest_sw_docbookexport.mk sw/CppunitTest_sw_filters_test2.mk sw/CppunitTest_sw_filters_test.mk sw/CppunitTest_sw_fodfexport.mk sw/CppunitTest_sw_globalfilter.mk sw/CppunitTest_sw_htmlexport.mk sw/CppunitTest_sw_htmlimport.mk sw/CppunitTest_sw_layoutwriter.mk sw/CppunitTest_sw_macros_test.mk sw/CppunitTest_sw_mailmerge.mk sw/CppunitTest_sw_odfexport.mk sw/CppunitTest_sw_odfimport.mk sw/CppunitTest_sw_ooxmlencryption.mk sw/CppunitTest_sw_ooxmlexport13.mk sw/CppunitTest_sw_ooxmlexport14.mk sw/CppunitTest_sw_ooxmlexport8.mk sw/CppunitTest_sw_ooxmlexport_template.mk sw/CppunitTest_sw_ooxmlfieldexport.mk sw/CppunitTest_sw_ooxmlimport2.mk sw/CppunitTest_sw_ooxmlimport.mk sw/CppunitTest_sw_ooxmllinks.mk sw/CppunitTest_sw_ooxmlw14export.mk sw/CppunitTest_sw_rtfexport2.mk sw/CppunitTest_sw_rtfexport3.mk sw/CppunitTest_sw_rtfexport4.mk sw/CppunitTest_sw_rtfexport5.mk sw/CppunitTest_sw_rtfexport.mk sw/CppunitTest_sw_rtfimport.mk sw/CppunitTest_sw_tiledrendering.mk sw/CppunitTest_sw_txtexport.mk sw/CppunitTest_sw_uibase_dochdl.mk sw/CppunitTest_sw_uibase_shells.mk sw/CppunitTest_sw_uibase_unit.mk sw/CppunitTest_sw_uiwriter.mk sw/CppunitTest_sw_unowriter.mk sw/CppunitTest_sw_uwriter.mk sw/CppunitTest_sw_ww8export2.mk sw/CppunitTest_sw_ww8export3.mk sw/CppunitTest_sw_ww8export.mk sw/CppunitTest_sw_ww8import.mk sw/CppunitTest_sw_xhtmlexport.mk sw/CustomTarget_generated.mk swext/Jar_mediawiki.mk swext/mediawiki sw/inc sw/IwyuFilter_sw.yaml sw/Libr ary_msword.mk sw/Library_swd.mk sw/Library_sw.mk sw/Library_swui.mk sw/Library_vbaswobj.mk sw/Module_sw.mk sw/ooxmlexport_setup.mk sw/PythonTest_sw_python.mk sw/qa sw/sdi sw/source sw/uiconfig sw/UIConfig_sglobal.mk sw/UIConfig_swform.mk sw/UIConfig_swreport.mk sw/UIConfig_swriter.mk sw/UIConfig_swxform.mk sw/UITest_classification.mk sw/UITest_findReplace.mk sw/UITest_options.mk sw/UITest_sw_findReplace.mk sw/UITest_sw_findSimilarity.mk sw/UITest_writer_dialogs.mk sw/UITest_writer_macro_tests.mk sw/UITest_writer_tests6.mk sw/UITest_writer_tests7.mk sw/util sysui/CustomTarget_infoplist.mk sysui/CustomTarget_share.mk sysui/desktop sysui/Package_infoplist.mk test/CppunitTest_test_xpath.mk test/IwyuFilter_test.yaml test/Library_subsequenttest.mk test/Library_test.mk test/Module_test.mk test/qa test/source testtools/CustomTarget_bridgetest_climaker.mk testtools/CustomTarget_bridgetest_javamaker.mk testtools/CustomTarget_bridgetest.mk testtools/Jar_testComponent.mk testtools/qa testtools/ source test/user-template toolkit/CppunitTest_toolkit.mk toolkit/inc toolkit/IwyuFilter_toolkit.yaml toolkit/JunitTest_toolkit_complex.mk toolkit/Library_tk.mk toolkit/qa toolkit/source toolkit/test tools/CppunitTest_tools_test.mk tools/CustomTarget_reversemap.mk tools/inc tools/IwyuFilter_tools.yaml tools/Library_tl.mk tools/qa tools/source translations ucbhelper/IwyuFilter_ucbhelper.yaml ucbhelper/source ucb/IwyuFilter_ucb.yaml ucb/Library_ucpcmis1.mk ucb/Library_ucpexpand1.mk ucb/Library_ucpfile1.mk ucb/qa ucb/README ucb/source udkapi/com udkapi/type_reference uitest/calc_tests uitest/demo_ui uitest/impress_tests uitest/libreoffice uitest/Module_uitest.mk uitest/packaging uitest/test_main.py uitest/ui_logger_dsl uitest/uitest uitest/UITest_demo_ui.mk uitest/UITest_writer_demo1.mk uitest/UITest_writer_demo2.mk uitest/UITest_writer_demo3.mk uitest/UITest_writer_demo4.mk uitest/UITest_writer_demo5.mk uitest/UITest_writer_demo6.mk uitest/UITest_writer_demo7.mk uitest/UITest_writer_de mo8.mk uitest/UITest_writer_demo.mk uitest/writer_tests uitest/writer_tests1 uitest/writer_tests2 uitest/writer_tests3 uitest/writer_tests4 uitest/writer_tests5 uitest/writer_tests6 uitest/writer_tests7 uitest/writer_tests8 UnoControls/inc UnoControls/IwyuFilter_UnoControls.yaml UnoControls/source unodevtools/inc unodevtools/source unoidl/Executable_unoidl-check.mk unoidl/Executable_unoidl-write.mk unoidl/IwyuFilter_unoidl.yaml unoidl/source unoil/CustomTarget_javamaker.mk unoil/Jar_unoil.mk unotest/IwyuFilter_unotest.yaml unotest/Jar_test.mk unotest/Jar_test-tools.mk unotest/source unotools/inc unotools/IwyuFilter_unotools.yaml unotools/Library_utl.mk unotools/qa unotools/source unoxml/CppunitTest_unoxml_domtest.mk unoxml/inc unoxml/IwyuFilter_unoxml.yaml unoxml/Library_unoxml.mk unoxml/Module_unoxml.mk unoxml/qa unoxml/source ure/source uui/inc uui/IwyuFilter_uui.yaml uui/Library_uui.mk uui/qa uui/source uui/uiconfig vbahelper/inc vbahelper/IwyuFilter_vbahelper.yaml vbahelper/Libr ary_msforms.mk vbahelper/Library_vbahelper.mk vbahelper/source vcl/android vcl/backendtest vcl/commonfuzzer.mk vcl/CppunitTest_vcl_app_test.mk vcl/CppunitTest_vcl_backend_test.mk vcl/CppunitTest_vcl_bitmap_render_test.mk vcl/CppunitTest_vcl_bitmap_test.mk vcl/CppunitTest_vcl_complextext.mk vcl/CppunitTest_vcl_fontmetric.mk vcl/CppunitTest_vcl_gen.mk vcl/CppunitTest_vcl_graphic_test.mk vcl/CppunitTest_vcl_jpeg_read_write_test.mk vcl/CppunitTest_vcl_lifecycle.mk vcl/CppunitTest_vcl_outdev.mk vcl/CppunitTest_vcl_pdfexport.mk vcl/CppunitTest_vcl_png_test.mk vcl/CppunitTest_vcl_svm_test.mk vcl/CppunitTest_vcl_timer.mk vcl/CppunitTest_vcl_type_serializer_test.mk vcl/CppunitTest_vcl_widget_definition_reader_test.mk vcl/CustomTarget_gtk3_kde5_moc.mk vcl/CustomTarget_kde4_moc.mk vcl/CustomTarget_kde5_moc.mk vcl/CustomTarget_kf5_moc.mk vcl/CustomTarget_qt5_moc.mk vcl/Executable_icontest.mk vcl/Executable_lo_kde5filepicker.mk vcl/Executable_mtfdemo.mk vcl/Executable_outdevgrind.mk vcl/Executab le_ui-previewer.mk vcl/Executable_vcldemo.mk vcl/Executable_visualbackendtest.mk vcl/Executable_xid_fullscreen_on_all_monitors.mk vcl/headless vcl/inc vcl/ios vcl/IwyuFilter_vcl.yaml vcl/Library_desktop_detector.mk vcl/Library_vcl.mk vcl/Library_vclplug_gen.mk vcl/Library_vclplug_gtk3_kde5.mk vcl/Library_vclplug_gtk3.mk vcl/Library_vclplug_gtk.mk vcl/Library_vclplug_kde4.mk vcl/Library_vclplug_kde5.mk vcl/Library_vclplug_kf5.mk vcl/Library_vclplug_osx.mk vcl/Library_vclplug_qt5.mk vcl/Library_vclplug_win.mk vcl/Module_vcl.mk vcl/opengl vcl/osx vcl/Package_opengl.mk vcl/Package_opengl_shader.mk vcl/Package_osxres.mk vcl/Package_skia_blacklist.mk vcl/Package_theme_definitions.mk vcl/Package_tipoftheday.mk vcl/qa vcl/qt5 vcl/quartz vcl/README vcl/README.lifecycle vcl/README.scheduler vcl/README.vars vcl/skia vcl/source vcl/StaticLibrary_fuzzerstubs.mk vcl/StaticLibrary_glxtest.mk vcl/uiconfig vcl/UIConfig_vcl.mk vcl/unx vcl/vcl.ios.component vcl/vcl.macosx.component vcl/win vcl/workben winaccessibility/CustomTarget_ia2_idl.mk winaccessibility/inc winaccessibility/Library_uacccom.mk winaccessibility/Library_winaccessibility.mk winaccessibility/Module_winaccessibility.mk winaccessibility/README winaccessibility/source wizards/com wizards/CustomTarget_share.mk wizards/CustomTarget_wizards.mk wizards/Jar_commonwizards.mk wizards/Jar_form.mk wizards/Jar_query.mk wizards/Jar_reportbuilder.mk wizards/Jar_report.mk wizards/Jar_table.mk wizards/Package_access2base.mk wizards/source writerfilter/CppunitTest_writerfilter_dmapper.mk writerfilter/CppunitTest_writerfilter_filters_test.mk writerfilter/CppunitTest_writerfilter_rtftok.mk writerfilter/documentation writerfilter/inc writerfilter/IwyuFilter_writerfilter.yaml writerfilter/Library_writerfilter.mk writerfilter/Module_writerfilter.mk writerfilter/qa writerfilter/README writerfilter/source writerperfect/CppunitTest_writerperfect_calc.mk writerperfect/CppunitTest_writerperfect_draw.mk writerperfect/CppunitTest_writerperfe ct_import.mk writerperfect/CppunitTest_writerperfect_impress.mk writerperfect/CppunitTest_writerperfect_writer.mk writerperfect/inc writerperfect/IwyuFilter_writerperfect.yaml writerperfect/Library_wpftdraw.mk writerperfect/Library_wpftqahelper.mk writerperfect/Library_wpftwriter.mk writerperfect/qa writerperfect/source writerperfect/uiconfig xmerge/Jar_XMergeBridge.mk xmerge/Jar_xmerge.mk xmerge/source xmlhelp/IwyuFilter_xmlhelp.yaml xmlhelp/Library_ucpchelp1.mk xmlhelp/source xmloff/dtd xmloff/inc xmloff/IwyuFilter_xmloff.yaml xmloff/Library_xof.mk xmloff/Library_xo.mk xmloff/qa xmloff/source xmloff/util xmlreader/IwyuFilter_xmlreader.yaml xmlreader/source xmlscript/dtd xmlscript/inc xmlscript/IwyuFilter_xmlscript.yaml xmlscript/Library_xmlscript.mk xmlscript/source xmlscript/util xmlsecurity/CppunitTest_xmlsecurity_pdfsigning.mk xmlsecurity/CppunitTest_xmlsecurity_signing.mk xmlsecurity/inc xmlsecurity/IwyuFilter_xmlsecurity.yaml xmlsecurity/Library_xmlsecurity.mk xmlsecurity/Lib rary_xsec_xmlsec.mk xmlsecurity/qa xmlsecurity/source xmlsecurity/test_docs xmlsecurity/uiconfig xmlsecurity/workben

Dennis Francis (via logerrit) logerrit at kemper.freedesktop.org
Sun May 17 13:12:11 UTC 2020


Rebased ref, commits from common ancestor:
commit 9dab0ffe80a530606dd15ad6d4e3f9e44ffb972e
Author:     Dennis Francis <dennis.francis at collabora.com>
AuthorDate: Wed May 13 22:33:44 2020 +0530
Commit:     Dennis Francis <dennis.francis at collabora.com>
CommitDate: Sun May 17 18:31:26 2020 +0530

    add row/col limits to the JSON
    
    Change-Id: I92cead8212f30d0cc9b811be21b6639830e84fa4

diff --git a/sc/source/ui/view/tabview.cxx b/sc/source/ui/view/tabview.cxx
index 50e63fa21136..1277165e35b9 100644
--- a/sc/source/ui/view/tabview.cxx
+++ b/sc/source/ui/view/tabview.cxx
@@ -2764,6 +2764,8 @@ OString ScTabView::getSheetGeometryData(bool bColumns, bool bRows, bool bSizes,
 {
     boost::property_tree::ptree aTree;
     aTree.put("commandName", ".uno:SheetGeometryData");
+    aTree.put("maxtiledcolumn", MAXCOL);
+    aTree.put("maxtiledrow", MAXTILEDROW);
 
     auto getJSONString = [](const boost::property_tree::ptree& rTree) {
         std::stringstream aStream;
commit 069232a1f8787baf645f8a979192bd40992e7f2c
Author:     Dennis Francis <dennis.francis at collabora.com>
AuthorDate: Tue May 12 10:40:37 2020 +0530
Commit:     Dennis Francis <dennis.francis at collabora.com>
CommitDate: Sun May 17 18:31:25 2020 +0530

    lokit: table-outline: skip empty collections...
    
    while encoding the information as string.
    
    Change-Id: I890efc4a9b60125c68c663a69569864308fdbdcf

diff --git a/sc/source/core/data/olinetab.cxx b/sc/source/core/data/olinetab.cxx
index 19553c52cdbc..d61b16564bd3 100644
--- a/sc/source/core/data/olinetab.cxx
+++ b/sc/source/core/data/olinetab.cxx
@@ -747,7 +747,11 @@ OString ScOutlineArray::dumpAsString() const
     OString aOutput;
     const char* pLevelSep = " ";
     for (const auto& rCollection : aCollections)
+    {
+        if (rCollection.empty())
+            continue;
         aOutput += rCollection.dumpAsString() + pLevelSep;
+    }
 
     return aOutput;
 }
commit 4e6cd97e5dc4f992aebb06b371954c20037cf451
Author:     Dennis Francis <dennis.francis at collabora.com>
AuthorDate: Fri May 8 13:27:50 2020 +0530
Commit:     Dennis Francis <dennis.francis at collabora.com>
CommitDate: Sun May 17 18:22:33 2020 +0530

    Unit tests for ITiledRenderable::getSheetGeometryData()
    
    (Testing of groups/ouline case is not included)
    
    Change-Id: Ia53e5489c376d2d86461a9fd3db4f5b7dc963b99

diff --git a/sc/qa/unit/tiledrendering/tiledrendering.cxx b/sc/qa/unit/tiledrendering/tiledrendering.cxx
index 315910de60ac..c78a249ce0d7 100644
--- a/sc/qa/unit/tiledrendering/tiledrendering.cxx
+++ b/sc/qa/unit/tiledrendering/tiledrendering.cxx
@@ -106,6 +106,8 @@ public:
     void testGetRowColumnHeadersInvalidation();
     void testJumpHorizontallyInvalidation();
     void testJumpToLastRowInvalidation();
+    void testSheetGeometryDataInvariance();
+    void testSheetGeometryDataCorrectness();
 
     CPPUNIT_TEST_SUITE(ScTiledRenderingTest);
     CPPUNIT_TEST(testRowColumnHeaders);
@@ -147,6 +149,8 @@ public:
     CPPUNIT_TEST(testGetRowColumnHeadersInvalidation);
     CPPUNIT_TEST(testJumpHorizontallyInvalidation);
     CPPUNIT_TEST(testJumpToLastRowInvalidation);
+    CPPUNIT_TEST(testSheetGeometryDataInvariance);
+    CPPUNIT_TEST(testSheetGeometryDataCorrectness);
     CPPUNIT_TEST_SUITE_END();
 
 private:
@@ -1879,6 +1883,349 @@ void ScTiledRenderingTest::testRowColumnHeaders()
     SfxViewShell::Current()->registerLibreOfficeKitViewCallback(nullptr, nullptr);
 }
 
+// Helper structs for setup and testing of ScModelObj::getSheetGeometryData()
+struct SpanEntry
+{
+    size_t nVal;
+    SCCOLROW nEnd;
+};
+
+struct SheetDimData
+{
+    typedef std::vector<SpanEntry> SpanList;
+    SpanList aSizes;
+    SpanList aHidden;
+    SpanList aFiltered;
+    // TODO: Add group info too to test.
+
+    void setDataToDoc(ScDocument* pDoc, bool bCol) const
+    {
+        SCCOLROW nStart = 0;
+        // sizes
+        for (const auto& rSpan : aSizes)
+        {
+            if (bCol)
+            {
+                for (SCCOLROW nIdx = nStart; nIdx <= rSpan.nEnd; ++nIdx)
+                    pDoc->SetColWidthOnly(nIdx, 0, rSpan.nVal);
+            }
+            else
+                pDoc->SetRowHeightOnly(nStart, rSpan.nEnd, 0, rSpan.nVal);
+
+            nStart = rSpan.nEnd + 1;
+        }
+
+        nStart = 0;
+        // hidden
+        for (const auto& rSpan : aHidden)
+        {
+            if (bCol)
+                pDoc->SetColHidden(nStart, rSpan.nEnd, 0, rSpan.nVal);
+            else
+                pDoc->SetRowHidden(nStart, rSpan.nEnd, 0, rSpan.nVal);
+
+            nStart = rSpan.nEnd + 1;
+        }
+
+        // There is no ScDocument interface to set ScTable::mpFilteredCols
+        // It seems ScTable::mpFilteredCols is not really used !?
+        if (bCol)
+            return;
+
+        nStart = 0;
+        // filtered
+        for (const auto& rSpan : aFiltered)
+        {
+            pDoc->SetRowFiltered(nStart, rSpan.nEnd, 0, rSpan.nVal);
+            nStart = rSpan.nEnd + 1;
+        }
+    }
+
+    void testPropertyTree(const boost::property_tree::ptree& rTree, bool bCol) const
+    {
+        struct SpanListWithKey
+        {
+            OString aKey;
+            const SpanList& rSpanList;
+        };
+
+        const SpanListWithKey aPairList[] = {
+            { "sizes",    aSizes    },
+            { "hidden",   aHidden   },
+            { "filtered", aFiltered }
+        };
+
+        for (const auto& rEntry : aPairList)
+        {
+            // There is no ScDocument interface to set ScTable::mpFilteredCols
+            // It seems ScTable::mpFilteredCols is not really used !?
+            if (bCol && rEntry.aKey == "filtered")
+                continue;
+
+            bool bBooleanValue = rEntry.aKey != "sizes";
+            OString aExpectedEncoding;
+            bool bFirst = true;
+            for (const auto& rSpan : rEntry.rSpanList)
+            {
+                size_t nVal = rSpan.nVal;
+                if (bBooleanValue && bFirst)
+                    nVal = static_cast<bool>(nVal);
+                if (!bBooleanValue || bFirst)
+                    aExpectedEncoding += OString::number(nVal) + ":";
+                aExpectedEncoding += OString::number(rSpan.nEnd) + " ";
+                bFirst = false;
+            }
+
+            // Get the tree's value for the property key ("sizes"/"hidden"/"filtered").
+            OString aTreeValue = rTree.get<std::string>(rEntry.aKey.getStr()).c_str();
+
+            CPPUNIT_ASSERT_EQUAL(aExpectedEncoding, aTreeValue);
+        }
+    }
+};
+
+class SheetGeometryData
+{
+    SheetDimData aCols;
+    SheetDimData aRows;
+
+public:
+
+    SheetGeometryData()
+    {
+        aCols = {
+            // width spans
+            { { STD_COL_WIDTH, MAXCOL } },
+            // hidden spans
+            { { 0,             MAXCOL } },
+            // filtered spans
+            { { 0,             MAXCOL } }
+        };
+
+        aRows = {
+            // height spans
+            { { ScGlobal::nStdRowHeight, MAXROW } },
+            // hidden spans
+            { { 0,                       MAXROW } },
+            // filtered spans
+            { { 0,                       MAXROW } }
+        };
+    }
+
+    SheetGeometryData(const SheetDimData& rCols, const SheetDimData& rRows) :
+        aCols(rCols), aRows(rRows)
+    {}
+
+    void setDataToDoc(ScDocument* pDoc) const
+    {
+        aCols.setDataToDoc(pDoc, true);
+        aRows.setDataToDoc(pDoc, false);
+    }
+
+    void parseTest(const OString& rJSON) const
+    {
+        // Assumes all flags passed to getSheetGeometryData() are true.
+        boost::property_tree::ptree aTree;
+        std::stringstream aStream(rJSON.getStr());
+        boost::property_tree::read_json(aStream, aTree);
+
+        CPPUNIT_ASSERT_EQUAL(OString(".uno:SheetGeometryData"), OString(aTree.get<std::string>("commandName").c_str()));
+
+        aCols.testPropertyTree(aTree.get_child("columns"), true);
+        aRows.testPropertyTree(aTree.get_child("rows"), false);
+    }
+};
+
+// getSheetGeometryData() should return the exact same message
+// irrespective of client zoom and view-area. Switching views
+// should also not alter it.
+void ScTiledRenderingTest::testSheetGeometryDataInvariance()
+{
+    comphelper::LibreOfficeKit::setActive();
+
+    ScModelObj* pModelObj = createDoc("empty.ods");
+    const SheetGeometryData aSGData(
+        // cols
+        {
+            // width spans
+            {
+                { STD_COL_WIDTH,   20     },
+                { 2*STD_COL_WIDTH, 26     },
+                { STD_COL_WIDTH,   MAXCOL }
+            },
+
+            // hidden spans
+            {
+                { 0, 5      },
+                { 1, 12     },
+                { 0, MAXCOL }
+            },
+
+            // filtered spans
+            {
+                { 0, 50     },
+                { 1, 59     },
+                { 0, MAXCOL }
+            }
+        },
+
+        // rows
+        {
+            // height spans
+            {
+                { 300,  50     },
+                { 600,  65     },
+                { 300,  MAXROW }
+            },
+
+            // hidden spans
+            {
+                { 1, 100    },
+                { 0, 500    },
+                { 1, 578    },
+                { 0, MAXROW }
+            },
+
+            // filtered spans
+            {
+                { 0, 150    },
+                { 1, 159    },
+                { 0, MAXROW }
+            }
+        }
+    );
+
+    ScDocument* pDoc = pModelObj->GetDocument();
+
+    ScViewData* pViewData = ScDocShell::GetViewData();
+    CPPUNIT_ASSERT(pViewData);
+
+    // view #1
+    ViewCallback aView1;
+    int nView1 = SfxLokHelper::getView();
+    SfxViewShell::Current()->registerLibreOfficeKitViewCallback(&ViewCallback::callback, &aView1);
+
+    // view #2
+    SfxLokHelper::createView();
+    int nView2 = SfxLokHelper::getView();
+    ViewCallback aView2;
+    pModelObj->initializeForTiledRendering(uno::Sequence<beans::PropertyValue>());
+    SfxViewShell::Current()->registerLibreOfficeKitViewCallback(&ViewCallback::callback, &aView2);
+
+    // Try with the default empty document once (nIdx = 0) and then with sheet geometry settings (nIdx = 1)
+    for (size_t nIdx = 0; nIdx < 2; ++nIdx)
+    {
+        if (nIdx)
+            aSGData.setDataToDoc(pDoc);
+
+        SfxLokHelper::setView(nView1);
+        OString aGeomStr1 = pModelObj->getSheetGeometryData(/*bColumns*/ true, /*bRows*/ true, /*bSizes*/ true,
+                /*bHidden*/ true, /*bFiltered*/ true, /*bGroups*/ true);
+
+        SfxLokHelper::setView(nView2);
+        pModelObj->setClientVisibleArea(tools::Rectangle(0, 0, 22474, 47333));
+        pModelObj->setClientZoom(256, 256, 6636, 6636);
+        OString aGeomStr2 = pModelObj->getSheetGeometryData(/*bColumns*/ true, /*bRows*/ true, /*bSizes*/ true,
+                /*bHidden*/ true, /*bFiltered*/ true, /*bGroups*/ true);
+
+        // Check vs. view #1
+        SfxLokHelper::setView(nView1);
+        OString aGeomStr1_2 = pModelObj->getSheetGeometryData(/*bColumns*/ true, /*bRows*/ true, /*bSizes*/ true,
+                /*bHidden*/ true, /*bFiltered*/ true, /*bGroups*/ true);
+        CPPUNIT_ASSERT_EQUAL(aGeomStr1, aGeomStr1_2);
+
+        // Check vs. view #2
+        SfxLokHelper::setView(nView2);
+        OString aGeomStr2_2 = pModelObj->getSheetGeometryData(/*bColumns*/ true, /*bRows*/ true, /*bSizes*/ true,
+                /*bHidden*/ true, /*bFiltered*/ true, /*bGroups*/ true);
+        CPPUNIT_ASSERT_EQUAL(aGeomStr2, aGeomStr2_2);
+    }
+
+    SfxLokHelper::setView(nView1);
+    SfxViewShell::Current()->registerLibreOfficeKitViewCallback(nullptr, nullptr);
+    SfxLokHelper::setView(nView2);
+    SfxViewShell::Current()->registerLibreOfficeKitViewCallback(nullptr, nullptr);
+}
+
+void ScTiledRenderingTest::testSheetGeometryDataCorrectness()
+{
+    comphelper::LibreOfficeKit::setActive();
+
+    ScModelObj* pModelObj = createDoc("empty.ods");
+    const SheetGeometryData aSGData(
+        // cols
+        {
+            // width spans
+            {
+                { STD_COL_WIDTH,   20     },
+                { 2*STD_COL_WIDTH, 26     },
+                { STD_COL_WIDTH,   MAXCOL }
+            },
+
+            // hidden spans
+            {
+                { 0, 5      },
+                { 1, 12     },
+                { 0, MAXCOL }
+            },
+
+            // filtered spans
+            {
+                { 0, 50     },
+                { 1, 59     },
+                { 0, MAXCOL }
+            }
+        },
+
+        // rows
+        {
+            // height spans
+            {
+                { 300,  50     },
+                { 600,  65     },
+                { 300,  MAXROW }
+            },
+
+            // hidden spans
+            {
+                { 1, 100    },
+                { 0, 500    },
+                { 1, 578    },
+                { 0, MAXROW }
+            },
+
+            // filtered spans
+            {
+                { 0, 150    },
+                { 1, 159    },
+                { 0, MAXROW }
+            }
+        }
+    );
+
+    ScDocument* pDoc = pModelObj->GetDocument();
+
+    ScViewData* pViewData = ScDocShell::GetViewData();
+    CPPUNIT_ASSERT(pViewData);
+
+    // view #1
+    ViewCallback aView1;
+    SfxViewShell::Current()->registerLibreOfficeKitViewCallback(&ViewCallback::callback, &aView1);
+
+    // with the default empty sheet and test the JSON encoding.
+    OString aGeomDefaultStr = pModelObj->getSheetGeometryData(/*bColumns*/ true, /*bRows*/ true, /*bSizes*/ true,
+            /*bHidden*/ true, /*bFiltered*/ true, /*bGroups*/ true);
+    SheetGeometryData().parseTest(aGeomDefaultStr);
+
+    // Apply geometry settings to the sheet and then test the resulting JSON encoding.
+    aSGData.setDataToDoc(pDoc);
+    OString aGeomStr = pModelObj->getSheetGeometryData(/*bColumns*/ true, /*bRows*/ true, /*bSizes*/ true,
+            /*bHidden*/ true, /*bFiltered*/ true, /*bGroups*/ true);
+    aSGData.parseTest(aGeomStr);
+
+    SfxViewShell::Current()->registerLibreOfficeKitViewCallback(nullptr, nullptr);
+}
+
 }
 
 CPPUNIT_TEST_SUITE_REGISTRATION(ScTiledRenderingTest);
commit ecf3086e79ef23fa5faa3fe95eca434f67d029c1
Author:     Dennis Francis <dennis.francis at collabora.com>
AuthorDate: Tue May 5 01:55:37 2020 +0530
Commit:     Dennis Francis <dennis.francis at collabora.com>
CommitDate: Sun May 17 18:22:15 2020 +0530

    Introduce ITiledRenderable::getSheetGeometryData()
    
    ITiledRenderable::getSheetGeometryData(bool bColumns, bool bRows,
                                           bool bSizes, bool bHidden,
                                           bool bFiltered, bool bGroups)
    
    and implement it for the Calc derivation (ScModelObj).
    
    The aim is to use it actively in LOOL instead of the interface:
    
    ITiledRenderable::getRowColumnHeaders(const tools::Rectangle& /*rRectangle*/)
    
    This is used by the LOOL to fetch the sheet geometry data for just the
    current view-area in the clients, so LOOL queries this everytime some
    client's view-area changes.
    
    Like the existing interface, the new one will provide all 'kinds' of
    sheet geometry info [col/row sizes(twips), hidden/filtered and
    grouping]. But the difference is, it generates data for the whole sheet
    (not view-area specific). So the method need not be queried every time
    the view area changes in the LOOL clients, and more importantly it
    enables the clients to locate any cell at any zoom level without any
    further help from the core. This means core needn't send various
    client(zoom) specific positioning messages in pixel aligned twips. It
    just can send all positioning messages in print twips uniformly to all
    clients.
    
    Change-Id: Ib6aee9a0c92746b1576ed244e98cb54b572778c0

diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 373deb3c7c53..44f28454c8f8 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -4708,6 +4708,7 @@ static char* doc_getCommandValues(LibreOfficeKitDocument* pThis, const char* pCo
 
     OString aCommand(pCommand);
     static const OString aViewRowColumnHeaders(".uno:ViewRowColumnHeaders");
+    static const OString aSheetGeometryData(".uno:SheetGeometryData");
     static const OString aCellCursor(".uno:CellCursor");
     static const OString aFontSubset(".uno:FontSubset&name=");
 
@@ -4805,6 +4806,72 @@ static char* doc_getCommandValues(LibreOfficeKitDocument* pThis, const char* pCo
         else
             return convertOUString(aHeaders);
     }
+    else if (aCommand.startsWith(aSheetGeometryData))
+    {
+        ITiledRenderable* pDoc = getTiledRenderable(pThis);
+        if (!pDoc)
+        {
+            SetLastExceptionMsg("Document doesn't support tiled rendering");
+            return nullptr;
+        }
+
+        bool bColumns = true;
+        bool bRows = true;
+        bool bSizes = true;
+        bool bHidden = true;
+        bool bFiltered = true;
+        bool bGroups = true;
+        if (aCommand.getLength() > aSheetGeometryData.getLength())
+        {
+            bColumns = bRows = bSizes = bHidden = bFiltered = bGroups = false;
+
+            OString aArguments = aCommand.copy(aSheetGeometryData.getLength() + 1);
+            sal_Int32 nParamIndex = 0;
+            do
+            {
+                OString aParamToken = aArguments.getToken(0, '&', nParamIndex);
+                sal_Int32 nIndex = 0;
+                OString aKey;
+                OString aValue;
+                do
+                {
+                    OString aToken = aParamToken.getToken(0, '=', nIndex);
+                    if (!aKey.getLength())
+                        aKey = aToken;
+                    else
+                        aValue = aToken;
+
+                } while (nIndex >= 0);
+
+                bool bEnableFlag = aValue.isEmpty() ||
+                    aValue.equalsIgnoreAsciiCase("true") || aValue.toInt32() > 0;
+                if (!bEnableFlag)
+                    continue;
+
+                if (aKey == "columns")
+                    bColumns = true;
+                else if (aKey == "rows")
+                    bRows = true;
+                else if (aKey == "sizes")
+                    bSizes = true;
+                else if (aKey == "hidden")
+                    bHidden = true;
+                else if (aKey == "filtered")
+                    bFiltered = true;
+                else if (aKey == "groups")
+                    bGroups = true;
+
+            } while (nParamIndex >= 0);
+        }
+
+        OString aGeomDataStr
+            = pDoc->getSheetGeometryData(bColumns, bRows, bSizes, bHidden, bFiltered, bGroups);
+
+        if (aGeomDataStr.isEmpty())
+            return nullptr;
+
+        return convertOString(aGeomDataStr);
+    }
     else if (aCommand.startsWith(aCellCursor))
     {
         ITiledRenderable* pDoc = getTiledRenderable(pThis);
diff --git a/include/vcl/ITiledRenderable.hxx b/include/vcl/ITiledRenderable.hxx
index 9e995216e573..2c716098630c 100644
--- a/include/vcl/ITiledRenderable.hxx
+++ b/include/vcl/ITiledRenderable.hxx
@@ -177,6 +177,31 @@ public:
         return OUString();
     }
 
+    /**
+     * Generates a serialization of the active (Calc document) sheet's geometry data.
+     *
+     * @param bColumns - if true, the column widths/hidden/filtered/groups data
+     *     are included depending on the settings of the flags bSizes, bHidden,
+     *     bFiltered and bGroups.
+     * @param bRows - if true, the row heights/hidden/filtered/groups data
+     *     are included depending on the settings of the flags bSizes, bHidden,
+     *     bFiltered and bGroups.
+     * @bSizes - if true, the column-widths and/or row-heights data (represented as a list of spans)
+     *     are included depending on the settings of the flags bColumns and bRows.
+     * @bHidden - if true, the hidden columns and/or rows data (represented as a list of spans)
+     *     are included depending on the settings of the flags bColumns and bRows.
+     * @bFiltered - if true, the filtered columns and/or rows data (represented as a list of spans)
+     *     are included depending on the settings of the flags bColumns and bRows.
+     * @bGroups - if true, the column grouping and/or row grouping data
+     *     are included depending on the settings of the flags bColumns and bRows.
+     * @return serialization of the active sheet's geometry data as OString.
+     */
+    virtual OString getSheetGeometryData(bool /*bColumns*/, bool /*bRows*/, bool /*bSizes*/,
+                                         bool /*bHidden*/, bool /*bFiltered*/, bool /*bGroups*/)
+    {
+        return "";
+    }
+
     /**
      * Get position and size of cell cursor in Calc - as JSON in the
      * current' views' co-ordinate system.
diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx
index 6e277f10a284..2376e3fdad4d 100644
--- a/sc/inc/document.hxx
+++ b/sc/inc/document.hxx
@@ -260,6 +260,15 @@ enum RangeNameScope
     SHEET                      // with two scope on Manage Names dialog.
 };
 
+/// Represents the type of sheet geometry data.
+enum class SheetGeomType
+{
+    SIZES,                     // Column widths or row heights.
+    HIDDEN,                    // Hidden columns/rows.
+    FILTERED,                  // Filtered columns/rows.
+    GROUPS                     // Grouping of columns/rows.
+};
+
 struct ScDocStat
 {
     OUString  aDocName;
@@ -2512,6 +2521,16 @@ public:
     bool IsInDocShellRecalc() const   { return mbDocShellRecalc; }
     void SetDocShellRecalc(bool bSet) { mbDocShellRecalc = bSet; }
 
+    /**
+     * Serializes the specified sheet's geometry data.
+     *
+     * @param nTab is the index of the sheet to operate on.
+     * @param bColumns - if true it dumps the data for columns, else it does for rows.
+     * @param eGeomType indicates the type of data to be dumped for rows/columns.
+     * @return the serialization of the specified sheet's geometry data as an OString.
+     */
+    OString dumpSheetGeomData(SCTAB nTab, bool bColumns, SheetGeomType eGeomType);
+
 private:
 
     /**
diff --git a/sc/inc/docuno.hxx b/sc/inc/docuno.hxx
index 7c9c87a4f109..329571dfc056 100644
--- a/sc/inc/docuno.hxx
+++ b/sc/inc/docuno.hxx
@@ -368,6 +368,10 @@ public:
     /// @see vcl::ITiledRenderable::getRowColumnHeaders().
     virtual OUString getRowColumnHeaders(const tools::Rectangle& rRectangle) override;
 
+    /// @see vcl::ITiledRenderable::getSheetGeometryData().
+    virtual OString getSheetGeometryData(bool bColumns, bool bRows, bool bSizes, bool bHidden,
+                                         bool bFiltered, bool bGroups) override;
+
     /// @see vcl::ITiledRenderable::getCellCursor().
     virtual OString getCellCursor() override;
 
diff --git a/sc/inc/olinetab.hxx b/sc/inc/olinetab.hxx
index a25064d86c4e..cdaa74d19a93 100644
--- a/sc/inc/olinetab.hxx
+++ b/sc/inc/olinetab.hxx
@@ -59,6 +59,8 @@ public:
     void                    SetPosSize( SCCOLROW nNewPos, SCSIZE nNewSize );
     void                    SetHidden( bool bNewHidden );
     void                    SetVisible( bool bNewVisible );
+
+    OString                 dumpAsString() const;
 };
 
 class ScOutlineCollection
@@ -83,6 +85,8 @@ public:
     bool empty() const;
 
     iterator FindStart(SCCOLROW nMinStart);
+
+    OString dumpAsString() const;
 };
 
 class SC_DLLPUBLIC ScOutlineArray
@@ -138,6 +142,8 @@ public:
     void finalizeImport(const ScTable& rTable);
 
     void RemoveAll();
+
+    OString dumpAsString() const;
 };
 
 class ScOutlineTable
diff --git a/sc/inc/segmenttree.hxx b/sc/inc/segmenttree.hxx
index 9d772a0b4b46..f37a3d3facd6 100644
--- a/sc/inc/segmenttree.hxx
+++ b/sc/inc/segmenttree.hxx
@@ -21,6 +21,7 @@
 #define INCLUDED_SC_INC_SEGMENTTREE_HXX
 
 #include "types.hxx"
+#include <rtl/string.hxx>
 
 #include <memory>
 
@@ -76,6 +77,8 @@ public:
 
     SCROW findLastTrue() const;
 
+    OString dumpAsString();
+
 private:
     ::std::unique_ptr<ScFlatBoolSegmentsImpl> mpImpl;
 };
@@ -99,6 +102,8 @@ public:
     void removeSegment(SCCOL nCol1, SCCOL nCol2);
     void insertSegment(SCCOL nCol, SCCOL nSize);
 
+    OString dumpAsString();
+
 private:
     ::std::unique_ptr<ScFlatBoolSegmentsImpl> mpImpl;
 };
@@ -147,6 +152,8 @@ public:
 
     void enableTreeSearch(bool bEnable);
 
+    OString dumpAsString();
+
 private:
     ::std::unique_ptr<ScFlatUInt16SegmentsImpl> mpImpl;
 };
diff --git a/sc/inc/table.hxx b/sc/inc/table.hxx
index 12f8bb87bc89..5ffd70c77541 100644
--- a/sc/inc/table.hxx
+++ b/sc/inc/table.hxx
@@ -1081,6 +1081,15 @@ public:
     SCCOL ClampToAllocatedColumns(SCCOL nCol) const { return std::min(nCol, static_cast<SCCOL>(aCol.size() - 1)); }
     SCCOL GetAllocatedColumnsCount() const { return aCol.size(); }
 
+    /**
+     * Serializes the sheet's geometry data.
+     *
+     * @param bColumns - if true it dumps the data for columns, else it does for rows.
+     * @param eGeomType indicates the type of data to be dumped for rows/columns.
+     * @return the serialization of the sheet's geometry data as an OString.
+     */
+    OString dumpSheetGeomData(bool bColumns, SheetGeomType eGeomType);
+
 private:
 
     void FillFormulaVertical(
@@ -1240,6 +1249,13 @@ private:
     void EndListeningGroup( sc::EndListeningContext& rCxt, const SCCOL nCol, SCROW nRow );
     void SetNeedsListeningGroup( SCCOL nCol, SCROW nRow );
 
+    /// Returns list-of-spans representation of the column-widths/row-heights in twips encoded as an OString.
+    OString dumpColumnRowSizes(bool bColumns);
+    /// Returns list-of-spans representation of hidden/filtered states of columns/rows encoded as an OString.
+    OString dumpHiddenFiltered(bool bColumns, bool bHidden);
+    /// Returns list-of-spans representation of the column/row groupings encoded as an OString.
+    OString dumpColumnRowGroups(bool bColumns) const;
+
     /**
      * Use this to iterate through non-empty visible cells in a single column.
      */
diff --git a/sc/source/core/data/document10.cxx b/sc/source/core/data/document10.cxx
index b04ac76e06ab..f32e5f8a03f2 100644
--- a/sc/source/core/data/document10.cxx
+++ b/sc/source/core/data/document10.cxx
@@ -977,4 +977,13 @@ void ScDocument::RestoreTabFromCache(SCTAB nTab, SvStream& rStrm)
     pTab->RestoreFromCache(rStrm);
 }
 
+OString ScDocument::dumpSheetGeomData(SCTAB nTab, bool bColumns, SheetGeomType eGeomType)
+{
+    ScTable* pTab = FetchTable(nTab);
+    if (!pTab)
+        return "";
+
+    return pTab->dumpSheetGeomData(bColumns, eGeomType);
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/core/data/olinetab.cxx b/sc/source/core/data/olinetab.cxx
index a7e66c8f8d55..19553c52cdbc 100644
--- a/sc/source/core/data/olinetab.cxx
+++ b/sc/source/core/data/olinetab.cxx
@@ -81,6 +81,13 @@ void ScOutlineEntry::SetVisible( bool bNewVisible )
     bVisible = bNewVisible;
 }
 
+OString ScOutlineEntry::dumpAsString() const
+{
+    const char* pSep = ":";
+    return OString::number(nStart) + pSep + OString::number(nSize) +
+        pSep + OString::number(bHidden) + pSep + OString::number(bVisible);
+}
+
 ScOutlineCollection::ScOutlineCollection() {}
 
 size_t ScOutlineCollection::size() const
@@ -134,6 +141,16 @@ ScOutlineCollection::iterator ScOutlineCollection::FindStart(SCCOLROW nMinStart)
     return m_Entries.lower_bound(nMinStart);
 }
 
+OString ScOutlineCollection::dumpAsString() const
+{
+    OString aOutput;
+    const char* pGroupEntrySep = ",";
+    for (const auto& rKeyValuePair : m_Entries)
+        aOutput += rKeyValuePair.second.dumpAsString() + pGroupEntrySep;
+
+    return aOutput;
+}
+
 ScOutlineArray::ScOutlineArray() :
     nDepth(0) {}
 
@@ -725,6 +742,16 @@ void ScOutlineArray::finalizeImport(const ScTable& rTable)
     }
 }
 
+OString ScOutlineArray::dumpAsString() const
+{
+    OString aOutput;
+    const char* pLevelSep = " ";
+    for (const auto& rCollection : aCollections)
+        aOutput += rCollection.dumpAsString() + pLevelSep;
+
+    return aOutput;
+}
+
 ScOutlineTable::ScOutlineTable()
 {
 }
diff --git a/sc/source/core/data/segmenttree.cxx b/sc/source/core/data/segmenttree.cxx
index 254f0f875571..c33ff97e6b72 100644
--- a/sc/source/core/data/segmenttree.cxx
+++ b/sc/source/core/data/segmenttree.cxx
@@ -416,6 +416,27 @@ SCROW ScFlatBoolRowSegments::findLastTrue() const
     return mpImpl->findLastTrue(false);
 }
 
+OString ScFlatBoolRowSegments::dumpAsString()
+{
+    OString aOutput;
+    OString aSegment;
+    RangeData aRange;
+    SCROW nRow = 0;
+    while (getRangeData(nRow, aRange))
+    {
+        if (!nRow)
+            aSegment = OString::number(aRange.mbValue) + ":";
+        else
+            aSegment.clear();
+
+        aSegment += OString::number(aRange.mnRow2) + " ";
+        aOutput += aSegment;
+        nRow = aRange.mnRow2 + 1;
+    }
+
+    return aOutput;
+}
+
 ScFlatBoolColSegments::ScFlatBoolColSegments(SCCOL nMaxCol) :
     mpImpl(new ScFlatBoolSegmentsImpl(nMaxCol))
 {
@@ -462,6 +483,27 @@ void ScFlatBoolColSegments::insertSegment(SCCOL nCol, SCCOL nSize)
     mpImpl->insertSegment(static_cast<SCCOLROW>(nCol), static_cast<SCCOLROW>(nSize), true/*bSkipStartBoundary*/);
 }
 
+OString ScFlatBoolColSegments::dumpAsString()
+{
+    OString aOutput;
+    OString aSegment;
+    RangeData aRange;
+    SCCOL nCol = 0;
+    while (getRangeData(nCol, aRange))
+    {
+        if (!nCol)
+            aSegment = OString::number(aRange.mbValue) + ":";
+        else
+            aSegment.clear();
+
+        aSegment += OString::number(aRange.mnCol2) + " ";
+        aOutput += aSegment;
+        nCol = aRange.mnCol2 + 1;
+    }
+
+    return aOutput;
+}
+
 ScFlatUInt16RowSegments::ForwardIterator::ForwardIterator(ScFlatUInt16RowSegments& rSegs) :
     mrSegs(rSegs), mnCurPos(0), mnLastPos(-1), mnCurValue(0)
 {
@@ -554,4 +596,21 @@ void ScFlatUInt16RowSegments::setValueIf(SCROW nRow1, SCROW nRow2, sal_uInt16 nV
     mpImpl->setValueIf(static_cast<SCCOLROW>(nRow1), static_cast<SCCOLROW>(nRow2), nValue, rPredicate);
 }
 
+OString ScFlatUInt16RowSegments::dumpAsString()
+{
+    OString aOutput;
+    OString aSegment;
+    RangeData aRange;
+    SCROW nRow = 0;
+    while (getRangeData(nRow, aRange))
+    {
+        aSegment = OString::number(aRange.mnValue) + ":" +
+            OString::number(aRange.mnRow2) + " ";
+        aOutput += aSegment;
+        nRow = aRange.mnRow2 + 1;
+    }
+
+    return aOutput;
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/core/data/table7.cxx b/sc/source/core/data/table7.cxx
index 38f1d02e3fd7..1e8721615821 100644
--- a/sc/source/core/data/table7.cxx
+++ b/sc/source/core/data/table7.cxx
@@ -479,4 +479,109 @@ void ScTable::RestoreFromCache(SvStream& rStrm)
     }
 }
 
+OString ScTable::dumpSheetGeomData(bool bColumns, SheetGeomType eGeomType)
+{
+    switch (eGeomType)
+    {
+        case SheetGeomType::SIZES:
+            // returns a non-empty space separated list of spans with trailing space.
+            // The format of the span is <size of any row/col in the span in print twips>:<last row/col of the span>
+            // Example (for columns with three spans if MAXCOL is 1023):   "1280:3 1049:50 1280:1023"
+            return dumpColumnRowSizes(bColumns);
+        case SheetGeomType::HIDDEN:
+            // returns a non-empty space separated list of spans with trailing space.
+            // The format of the span is:
+            // 1) First span:         <1 (span is hidden) / 0 (not hidden)>:<last row/col of the span>
+            // 2) Rest of the spans:  <last row/col of the span>
+            // The hidden state of the spans after the first can be inferred from the first span's flag as no adjacent
+            // spans can have the same state by definition of span.
+            return dumpHiddenFiltered(bColumns, /*bHidden*/ true);
+        case SheetGeomType::FILTERED:
+            // has exactly the same format as 'hidden'.
+            return dumpHiddenFiltered(bColumns, /*bHidden*/ false);
+        case SheetGeomType::GROUPS:
+            // returns a space separated list of 'levels' with trailing space.
+            // A 'level' is a comma separated list of groups(outline entries) with trailing comma.
+            // format of a group is:
+            // <start row/col of group>:<number of rows/cols in the group>:<1/0(group is hidden?)>:<1/0(control is visible?)>
+            return dumpColumnRowGroups(bColumns);
+        default:
+            ;
+    }
+
+    return "";
+}
+
+OString ScTable::dumpColumnRowSizes(bool bColumns)
+{
+    // If the data-structures are not available, just report that all
+    // rows/cols have the default sizes.
+    static const OString aDefaultForCols
+        = OString::number(STD_COL_WIDTH) + ":" + OString::number(MAXCOL) + " ";
+    static const OString aDefaultForRows
+        = OString::number(ScGlobal::nStdRowHeight) + ":" + OString::number(MAXROW) + " ";
+
+    // ScCompressedArray is a template class and we don't want to impose
+    // the restriction that its value type should be string serializable,
+    // instead just operate on the specialized object.
+    typedef ScCompressedArray<SCCOL, sal_uInt16> ColWidthsType;
+    auto dumpColWidths = [](const ColWidthsType& rWidths) -> OString {
+        OString aOutput;
+        OString aSegment;
+        SCCOL nStartCol = 0;
+        const SCCOL nMaxCol = std::min(rWidths.GetLastPos(), MAXCOL);
+        size_t nDummy = 0;
+        while (nStartCol <= nMaxCol)
+        {
+            SCCOL nEndCol;
+            sal_uInt16 nWidth = rWidths.GetValue(nStartCol, nDummy, nEndCol);
+            // The last span nEndCol is always MAXCOL+1 for some reason, and we don't want that.
+            if (nEndCol > nMaxCol)
+                nEndCol = nMaxCol;
+            aSegment = OString::number(nWidth) + ":" + OString::number(nEndCol);
+            aSegment += " ";
+            aOutput += aSegment;
+            nStartCol = nEndCol + 1;
+        }
+
+        return aOutput;
+    };
+
+    if (bColumns)
+        return mpColWidth ? dumpColWidths(*mpColWidth) : aDefaultForCols;
+
+    return mpRowHeights ? mpRowHeights->dumpAsString() : aDefaultForRows;
+}
+
+OString ScTable::dumpHiddenFiltered(bool bColumns, bool bHidden)
+{
+    // defaults to no hidden/filtered row/cols.
+    static const OString aDefaultForCols = "0:" + OString::number(MAXCOL) + " ";
+    static const OString aDefaultForRows = "0:" + OString::number(MAXROW) + " ";
+
+    if (bHidden)
+    {
+        if (bColumns)
+            return mpHiddenCols ? mpHiddenCols->dumpAsString() : aDefaultForCols;
+
+        return mpHiddenRows ? mpHiddenRows->dumpAsString() : aDefaultForRows;
+    }
+
+    if (bColumns)
+        return mpFilteredCols ? mpFilteredCols->dumpAsString() : aDefaultForCols;
+
+    return mpFilteredRows ? mpFilteredRows->dumpAsString() : aDefaultForRows;
+}
+
+OString ScTable::dumpColumnRowGroups(bool bColumns) const
+{
+    if (!pOutlineTable)
+        return "";
+
+    if (bColumns)
+        return pOutlineTable->GetColArray().dumpAsString();
+
+    return pOutlineTable->GetRowArray().dumpAsString();
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/inc/tabview.hxx b/sc/source/ui/inc/tabview.hxx
index a46c76666145..873d05047e46 100644
--- a/sc/source/ui/inc/tabview.hxx
+++ b/sc/source/ui/inc/tabview.hxx
@@ -592,6 +592,10 @@ public:
     void SetAutoSpellData( SCCOL nPosX, SCROW nPosY, const std::vector<editeng::MisspellRanges>* pRanges );
     /// @see ScModelObj::getRowColumnHeaders().
     OUString getRowColumnHeaders(const tools::Rectangle& rRectangle);
+    /// @see ScModelObj::getSheetGeometryData()
+    OString getSheetGeometryData(bool bColumns, bool bRows, bool bSizes, bool bHidden,
+                                 bool bFiltered, bool bGroups);
+
     static void OnLOKNoteStateChanged(const ScPostIt* pNote);
 
     SCROW GetLOKStartHeaderRow() const { return mnLOKStartHeaderRow; }
diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx
index 2a4153756eb1..5d4fb17eb0fd 100644
--- a/sc/source/ui/unoobj/docuno.cxx
+++ b/sc/source/ui/unoobj/docuno.cxx
@@ -909,6 +909,21 @@ OUString ScModelObj::getRowColumnHeaders(const tools::Rectangle& rRectangle)
     return pTabView->getRowColumnHeaders(rRectangle);
 }
 
+OString ScModelObj::getSheetGeometryData(bool bColumns, bool bRows, bool bSizes, bool bHidden,
+                                         bool bFiltered, bool bGroups)
+{
+    ScViewData* pViewData = ScDocShell::GetViewData();
+
+    if (!pViewData)
+        return "";
+
+    ScTabView* pTabView = pViewData->GetView();
+    if (!pTabView)
+        return "";
+
+    return pTabView->getSheetGeometryData(bColumns, bRows, bSizes, bHidden, bFiltered, bGroups);
+}
+
 OString ScModelObj::getCellCursor()
 {
     SolarMutexGuard aGuard;
diff --git a/sc/source/ui/view/tabview.cxx b/sc/source/ui/view/tabview.cxx
index d8bd7996f4ae..50e63fa21136 100644
--- a/sc/source/ui/view/tabview.cxx
+++ b/sc/source/ui/view/tabview.cxx
@@ -49,6 +49,8 @@
 #include <LibreOfficeKit/LibreOfficeKitEnums.h>
 #include <sfx2/lokhelper.hxx>
 
+#include <boost/property_tree/ptree.hpp>
+
 #include <com/sun/star/sheet/DataPilotFieldOrientation.hpp>
 
 #include <algorithm>
@@ -2757,4 +2759,78 @@ OUString ScTabView::getRowColumnHeaders(const tools::Rectangle& rRectangle)
     return sRet;
 }
 
+OString ScTabView::getSheetGeometryData(bool bColumns, bool bRows, bool bSizes, bool bHidden,
+                                        bool bFiltered, bool bGroups)
+{
+    boost::property_tree::ptree aTree;
+    aTree.put("commandName", ".uno:SheetGeometryData");
+
+    auto getJSONString = [](const boost::property_tree::ptree& rTree) {
+        std::stringstream aStream;
+        boost::property_tree::write_json(aStream, rTree);
+        return aStream.str();
+    };
+
+    ScDocument* pDoc = aViewData.GetDocument();
+    if (!pDoc)
+        return getJSONString(aTree).c_str();
+
+    if ((!bSizes && !bHidden && !bFiltered && !bGroups) ||
+        (!bColumns && !bRows))
+    {
+        return getJSONString(aTree).c_str();
+    }
+
+    struct GeomEntry
+    {
+        SheetGeomType eType;
+        const char* pKey;
+        bool bEnabled;
+    };
+
+    const GeomEntry aGeomEntries[] = {
+        { SheetGeomType::SIZES,    "sizes",    bSizes    },
+        { SheetGeomType::HIDDEN,   "hidden",   bHidden   },
+        { SheetGeomType::FILTERED, "filtered", bFiltered },
+        { SheetGeomType::GROUPS,   "groups",   bGroups   }
+    };
+
+    struct DimensionEntry
+    {
+        const char* pKey;
+        bool bDimIsCol;
+        bool bEnabled;
+    };
+
+    const DimensionEntry aDimEntries[] = {
+        { "columns", true,  bColumns },
+        { "rows",    false, bRows    }
+    };
+
+    SCTAB nTab = aViewData.GetTabNo();
+
+    for (const auto& rDimEntry : aDimEntries)
+    {
+        if (!rDimEntry.bEnabled)
+            continue;
+
+        bool bDimIsCol = rDimEntry.bDimIsCol;
+
+        boost::property_tree::ptree aDimTree;
+        for (const auto& rGeomEntry : aGeomEntries)
+        {
+            if (!rGeomEntry.bEnabled)
+                continue;
+
+            OString aGeomDataEncoding = pDoc->dumpSheetGeomData(nTab, bDimIsCol, rGeomEntry.eType);
+            // TODO: Investigate if we can avoid the copy of the 'value' string in put().
+            aDimTree.put(rGeomEntry.pKey, aGeomDataEncoding.getStr());
+        }
+
+        aTree.add_child(rDimEntry.pKey, aDimTree);
+    }
+
+    return getJSONString(aTree).c_str();
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 78dc713fd7b7abe4612c740a37a22eda8fc63cd2
Author:     EL-SHREIF <ahmedtota29 at gmail.com>
AuthorDate: Sat May 16 06:52:47 2020 +0200
Commit:     Ahmed ElShreif <aelshreif7 at gmail.com>
CommitDate: Sun May 17 13:00:14 2020 +0200

    uitest: Fix some issue in the UI Logger DSL core
    
    It solve these problems:
    
            1) math generated test cases wasn't run because the element selector wasn't initialized
            2) avoid variables that has variable name equal number only
            3) avoid reusing UI object that reference to closed dialog
    
    Change-Id: I21221716bfa76889b6563955f60a7f99143fe9c2
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94338
    Tested-by: Jenkins
    Reviewed-by: Ahmed ElShreif <aelshreif7 at gmail.com>

diff --git a/uitest/ui_logger_dsl/Special_commands.tx b/uitest/ui_logger_dsl/Special_commands.tx
index 1667eace0ef3..071cfb9dcbbb 100644
--- a/uitest/ui_logger_dsl/Special_commands.tx
+++ b/uitest/ui_logger_dsl/Special_commands.tx
@@ -174,7 +174,7 @@ math_command:
     math_element_selector | math_Type_command
 ;
 math_element_selector:
-    'Select element no ' element_no=INT ' From ' place=ID
+    'Select element no ' element_no=INT 'From' place=ID
 ;
 math_Type_command:
     'Type on math ' what_to_type=Type_options
diff --git a/uitest/ui_logger_dsl/dsl_core.py b/uitest/ui_logger_dsl/dsl_core.py
index 074e4b871467..d4a9601f3997 100644
--- a/uitest/ui_logger_dsl/dsl_core.py
+++ b/uitest/ui_logger_dsl/dsl_core.py
@@ -42,6 +42,7 @@ class ul_Compiler:
     parent_hierarchy_count = 0
     last_parent = []
     flag_for_QuerySaveDialog = False
+    math_element_selector_initializer= False;
 
     def __init__(self, input_address, output_address):
         self.ui_dsl_mm = metamodel_from_file("ui_logger_dsl_grammar.tx")
@@ -169,6 +170,7 @@ class ul_Compiler:
                 + name_of_child
                 + '")\n'
             )
+
             self.variables.append(line)
 
     def write_line_without_parameters(self, Action_holder, Action, Action_type):
@@ -369,6 +371,10 @@ class ul_Compiler:
             else:
                 self.flag_for_QuerySaveDialog = False
 
+        # This is to solve the problem of re-using the same id again in diffrent Dialogs
+
+        self.objects.clear()
+
         self.prev_command = DialogCommand
 
     def handle_button(self, ButtonUIObject):
@@ -785,9 +791,24 @@ class ul_Compiler:
 
     def handle_math_element_selector(self, math_element_selector):
 
+        if( self.math_element_selector_initializer == False ):
+            # This part to initialize the element selector in math application
+            self.math_element_selector_initializer = True
+            line = (
+                double_tab
+                + "element_selector"
+                + ' = MainWindow.getChild("'
+                + "element_selector"
+                + '")\n'
+            )
+            self.variables.append(line)
+
+        # this put a prefix of char 'x' to avoid variable with name equal to number only
+        element_name="x"+str(math_element_selector.element_no)
+
         line = (
             double_tab
-            + str(math_element_selector.element_no)
+            + str(element_name)
             + ' = element_selector.getChild("'
             + str(math_element_selector.element_no)
             + '")\n'
@@ -795,7 +816,7 @@ class ul_Compiler:
         self.variables.append(line)
 
         self.write_line_without_parameters(
-            str(math_element_selector.element_no), "SELECT", "tuple"
+            str(element_name), "SELECT", "tuple"
         )
 
         self.prev_command = math_element_selector
commit 67b849ea6fd9f00c32ea0e91ed03050e4e36ef2c
Author:     Yunusemre Şentürk <yunusemre at collabora.com>
AuthorDate: Thu May 14 17:32:59 2020 +0300
Commit:     Andras Timar <andras.timar at collabora.com>
CommitDate: Sun May 17 10:07:34 2020 +0200

    Fix typo.
    
    It was causing "./configure: line 9997: =no: command not found"
    when autogen.sh is used.
    
    Change-Id: Iee57fb43c7bfbe4ac64ea5f995af05ddc8a26ad4
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94004
    Tested-by: Andras Timar <andras.timar at collabora.com>
    Reviewed-by: Andras Timar <andras.timar at collabora.com>

diff --git a/configure.ac b/configure.ac
index 2087b1d3d452..1d531f32edec 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2187,7 +2187,7 @@ libo_FUZZ_ARG_WITH(latest-c++,
     AS_HELP_STRING([--with-latest-c++],
         [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
          published standard.]),,
-        [$with_latest_c__=no])
+        [with_latest_c__=no])
 
 dnl ===================================================================
 dnl Branding
commit 71c8f9cf3825b53efc8841fa3bc9144e90bc189a
Author:     Julien Nabet <serval2412 at yahoo.fr>
AuthorDate: Sat May 16 19:39:29 2020 +0200
Commit:     Julien Nabet <serval2412 at yahoo.fr>
CommitDate: Sun May 17 09:03:47 2020 +0200

    tdf#97416: fix Database password properties in ODB file not re-settable via UI
    
    Just call save_state() of the checkbox
    
    Change-Id: I3fa434b080efdcd284fba8e2f73d8e4846870576
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94363
    Tested-by: Jenkins
    Reviewed-by: Lionel Elie Mamane <lionel at mamane.lu>
    Reviewed-by: Julien Nabet <serval2412 at yahoo.fr>

diff --git a/dbaccess/source/ui/dlg/ConnectionPage.cxx b/dbaccess/source/ui/dlg/ConnectionPage.cxx
index 37407770cec4..5082abf9ed98 100644
--- a/dbaccess/source/ui/dlg/ConnectionPage.cxx
+++ b/dbaccess/source/ui/dlg/ConnectionPage.cxx
@@ -211,6 +211,7 @@ namespace dbaui
         m_xUserName->save_value();
         m_xConnectionURL->save_value();
         m_xJavaDriver->save_value();
+        m_xPasswordRequired->save_state();
     }
 
     bool OConnectionTabPage::FillItemSet(SfxItemSet* _rSet)
commit 1125ee2f8d3851752e34343e81c11f019f23bb3a
Author:     Thorsten Behrens <Thorsten.Behrens at CIB.de>
AuthorDate: Sun May 17 01:48:51 2020 +0200
Commit:     Thorsten Behrens <Thorsten.Behrens at CIB.de>
CommitDate: Sun May 17 03:07:58 2020 +0200

    Update icu4c-android.patch.1 to recent ICU 67 upgrade
    
    Looks fixed upstream (if slightly differently)
    
    Change-Id: If53722b867346d390866d9502fe36f976d702c31
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94372
    Tested-by: Jenkins
    Reviewed-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>

diff --git a/external/icu/icu4c-android.patch.1 b/external/icu/icu4c-android.patch.1
index 79b648615116..602d225d7812 100644
--- a/external/icu/icu4c-android.patch.1
+++ b/external/icu/icu4c-android.patch.1
@@ -73,15 +73,3 @@ diff -ur icu.org/source/i18n/decimfmt.cpp icu/source/i18n/decimfmt.cpp
  #include <cmath>
  #include <cstdlib>
  #include <stdlib.h>
-diff -ur icu.org/source/i18n/number_decimalquantity.cpp icu/source/i18n/number_decimalquantity.cpp
---- icu.org/source/i18n/number_decimalquantity.cpp	2018-10-02 00:39:56.000000000 +0200
-+++ icu/source/i18n/number_decimalquantity.cpp	2018-10-20 00:33:36.560130873 +0200
-@@ -432,7 +432,7 @@
-         for (; i <= -22; i += 22) n /= 1e22;
-         n /= DOUBLE_MULTIPLIERS[-i];
-     }
--    auto result = static_cast<int64_t>(std::round(n));
-+    auto result = static_cast<int64_t>(round(n));
-     if (result != 0) {
-         _setToLong(result);
-         scale -= fracLength;
commit 759f55c01059b599f4294ea2e37d3dc3748a54be
Author:     Thorsten Behrens <Thorsten.Behrens at CIB.de>
AuthorDate: Sun May 17 01:47:20 2020 +0200
Commit:     Thorsten Behrens <Thorsten.Behrens at CIB.de>
CommitDate: Sun May 17 03:07:25 2020 +0200

    jvmfwk: fix [-Werror,-Wunused-function]
    
    After recent cleanups, android build fails with
    sunjavaplugin.cxx:204:5: error: unused function 'createJvm'
    [-Werror,-Wunused-function]
    
    Change-Id: Idc9a97673debdd5da798fbdc729b8d90b6b7af9c
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94371
    Tested-by: Jenkins
    Reviewed-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>

diff --git a/jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin.cxx b/jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin.cxx
index 1d3667988cf9..7fcd60891263 100644
--- a/jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin.cxx
+++ b/jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin.cxx
@@ -201,6 +201,7 @@ extern "C" void JNICALL abort_handler()
 
 typedef jint JNICALL JNI_CreateVM_Type(JavaVM **, JNIEnv **, void *);
 
+#ifndef ANDROID
 int createJvm(
     JNI_CreateVM_Type * pCreateJavaVM, JavaVM ** pJavaVM, JNIEnv ** ppEnv, JavaVMInitArgs * vm_args)
 {
@@ -228,6 +229,7 @@ int createJvm(
         err= 1;
     return err;
 }
+#endif
 
 /** helper function to check Java version requirements
 
commit d8329149394e4e5758a9e293b0162db050379a4e
Author:     Vasily Melenchuk <vasily.melenchuk at cib.de>
AuthorDate: Fri May 15 18:17:34 2020 +0300
Commit:     Thorsten Behrens <Thorsten.Behrens at CIB.de>
CommitDate: Sun May 17 03:06:52 2020 +0200

    tdf#120394: list format string can be empty
    
    We need to distunguish when we have list format string, but it
    is empty (no level text will be diplayed) or it does not exist
    at all, so we need to fallback to old prefix-suffix syntax.
    
    Change-Id: Ifd4ccd5a676db86c39d2ef48e91d191d92b9b2a0
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94322
    Tested-by: Jenkins
    Reviewed-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>

diff --git a/include/editeng/numitem.hxx b/include/editeng/numitem.hxx
index fda3169cbfd9..629d4c56f071 100644
--- a/include/editeng/numitem.hxx
+++ b/include/editeng/numitem.hxx
@@ -31,6 +31,7 @@
 #include <editeng/editengdllapi.h>
 #include <o3tl/typed_flags_set.hxx>
 #include <memory>
+#include <optional>
 #include <algorithm>
 
 class SvxBrushItem;
@@ -103,7 +104,9 @@ public:
 private:
     OUString            sPrefix;
     OUString            sSuffix;
-    OUString            sListFormat;        // Format string ">%1.%2<" can be used instead of prefix/suffix
+    std::optional<OUString> sListFormat;        // Format string ">%1.%2<" can be used instead of prefix/suffix
+                                                // Right now it is optional value to dostinguish empty list format
+                                                // and not set list format when we need to fallback to prefix/suffix.
 
     SvxAdjust           eNumAdjust;
 
@@ -169,7 +172,8 @@ public:
     void            SetSuffix(const OUString& rSet) { sSuffix = rSet;}
     const OUString& GetSuffix() const { return sSuffix;}
     void            SetListFormat(const OUString& rSet) { sListFormat = rSet; }
-    const OUString& GetListFormat() const { return sListFormat; }
+    bool            HasListFormat() const { return sListFormat.has_value(); }
+    const OUString& GetListFormat() const { return *sListFormat; }
 
     void                    SetCharFormatName(const OUString& rSet){ sCharStyleName = rSet; }
     virtual OUString        GetCharFormatName()const;
diff --git a/sw/source/core/doc/number.cxx b/sw/source/core/doc/number.cxx
index 0c7810f058f4..fa58d9ed789f 100644
--- a/sw/source/core/doc/number.cxx
+++ b/sw/source/core/doc/number.cxx
@@ -644,9 +644,9 @@ OUString SwNumRule::MakeNumString( const SwNumberTree::tNumberVector & rNumVecto
         {
             css::lang::Locale aLocale( LanguageTag::convertToLocale(nLang));
 
-            OUString sLevelFormat = rMyNFormat.GetListFormat();
-            if (!sLevelFormat.isEmpty())
+            if (rMyNFormat.HasListFormat())
             {
+                OUString sLevelFormat = rMyNFormat.GetListFormat();
                 // In this case we are ignoring GetIncludeUpperLevels: we put all
                 // level numbers requested by level format
                 for (SwNumberTree::tNumberVector::size_type i=0; i <= nLevel; ++i)
diff --git a/sw/source/core/unocore/unosett.cxx b/sw/source/core/unocore/unosett.cxx
index ebffc9ae2852..817938749bf7 100644
--- a/sw/source/core/unocore/unosett.cxx
+++ b/sw/source/core/unocore/unosett.cxx
@@ -1335,11 +1335,12 @@ uno::Sequence<beans::PropertyValue> SwXNumberingRules::GetPropertiesForNumFormat
     aPropertyValues.push_back(comphelper::makePropertyValue("Suffix", aUString));
 
     //listformat
-    aUString = rFormat.GetListFormat();
-    aPropertyValues.push_back(comphelper::makePropertyValue("ListFormat", aUString));
+    if (rFormat.HasListFormat())
+    {
+        aPropertyValues.push_back(comphelper::makePropertyValue("ListFormat", rFormat.GetListFormat()));
+    }
 
     //char style name
-
     aUString.clear();
     SwStyleNameMapper::FillProgName( rCharFormatName, aUString, SwGetPoolIdFromName::ChrFmt);
     aPropertyValues.push_back(comphelper::makePropertyValue("CharStyleName", aUString));
diff --git a/sw/source/filter/ww8/wrtw8num.cxx b/sw/source/filter/ww8/wrtw8num.cxx
index ca3a026f2323..e2aad33206d3 100644
--- a/sw/source/filter/ww8/wrtw8num.cxx
+++ b/sw/source/filter/ww8/wrtw8num.cxx
@@ -494,7 +494,7 @@ void MSWordExportBase::NumberingLevel(
     const vcl::Font* pBulletFont=nullptr;
     rtl_TextEncoding eChrSet=0;
     FontFamily eFamily=FAMILY_DECORATIVE;
-    if (!rRule.Get(nLvl).GetListFormat().isEmpty())
+    if (rRule.Get(nLvl).HasListFormat())
     {
         // Nothing to construct: we have it already
         sNumStr = rRule.Get(nLvl).GetListFormat();
commit 047de8a887628dc45d5b8df7b297abd6fa2fafc5
Author:     Vasily Melenchuk <vasily.melenchuk at cib.de>
AuthorDate: Fri May 15 18:36:08 2020 +0300
Commit:     Thorsten Behrens <Thorsten.Behrens at CIB.de>
CommitDate: Sun May 17 03:06:22 2020 +0200

    tdf#120394: docx import: support for w:styleLink
    
    Previous implementation for w:numStyleLink was referring
    just ordinal styles, but there can be another abstract
    list marked with w:styleLink which should be used in
    given context.
    
    Change-Id: Ic5d4fe8bfd41b19e2f65d74defb6961e38ec9a9d
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94332
    Tested-by: Jenkins
    Reviewed-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>

diff --git a/writerfilter/source/dmapper/NumberingManager.cxx b/writerfilter/source/dmapper/NumberingManager.cxx
index 5455bda3a617..762bd623a1d3 100644
--- a/writerfilter/source/dmapper/NumberingManager.cxx
+++ b/writerfilter/source/dmapper/NumberingManager.cxx
@@ -1069,6 +1069,12 @@ void ListsManager::lcl_sprm( Sprm& rSprm )
                 m_pCurrentDefinition->SetNumStyleLink(sStyleName);
             }
             break;
+            case NS_ooxml::LN_CT_AbstractNum_styleLink:
+            {
+                OUString sStyleName = rSprm.getValue()->getString();
+                m_pCurrentDefinition->SetStyleLink(sStyleName);
+            }
+            break;
             case NS_ooxml::LN_EG_RPrBase_rFonts: //contains font properties
             case NS_ooxml::LN_EG_RPrBase_color:
             case NS_ooxml::LN_EG_RPrBase_u:
@@ -1107,21 +1113,17 @@ void ListsManager::lcl_entry(writerfilter::Reference<Properties>::Pointer_t ref
 
 AbstractListDef::Pointer ListsManager::GetAbstractList( sal_Int32 nId )
 {
-    AbstractListDef::Pointer pAbstractList;
-
-    int nLen = m_aAbstractLists.size( );
-    int i = 0;
-    while ( !pAbstractList && i < nLen )
+    for (const auto& listDef : m_aAbstractLists)
     {
-        if ( m_aAbstractLists[i]->GetId( ) == nId )
+        if (listDef->GetId( ) == nId)
         {
-            if ( m_aAbstractLists[i]->GetNumStyleLink().getLength() > 0 )
+            if (listDef->GetNumStyleLink().getLength() > 0)
             {
                 // If the abstract num has a style linked, check the linked style's number id.
                 StyleSheetTablePtr pStylesTable = m_rDMapper.GetStyleSheetTable( );
 
                 const StyleSheetEntryPtr pStyleSheetEntry =
-                    pStylesTable->FindStyleSheetByISTD( m_aAbstractLists[i]->GetNumStyleLink() );
+                    pStylesTable->FindStyleSheetByISTD(listDef->GetNumStyleLink() );
 
                 const StyleSheetPropertyMap* pStyleSheetProperties =
                     dynamic_cast<const StyleSheetPropertyMap*>(pStyleSheetEntry ? pStyleSheetEntry->pProperties.get() : nullptr);
@@ -1131,20 +1133,24 @@ AbstractListDef::Pointer ListsManager::GetAbstractList( sal_Int32 nId )
                     ListDef::Pointer pList = GetList( pStyleSheetProperties->GetListId() );
                     if ( pList!=nullptr )
                         return pList->GetAbstractDefinition();
-                    else
-                        pAbstractList = m_aAbstractLists[i];
                 }
 
+                // In stylesheet we did not found anything useful. Try to find base abstractnum having this stylelink
+                for (const auto & baseListDef : m_aAbstractLists)
+                {
+                    if (baseListDef->GetStyleLink() == listDef->GetNumStyleLink())
+                    {
+                        return baseListDef;
+                    }
+                }
             }
-            else
-            {
-                pAbstractList = m_aAbstractLists[i];
-            }
+
+            // Standalone abstract list
+            return listDef;
         }
-        i++;
     }
 
-    return pAbstractList;
+    return nullptr;
 }
 
 ListDef::Pointer ListsManager::GetList( sal_Int32 nId )
diff --git a/writerfilter/source/dmapper/NumberingManager.hxx b/writerfilter/source/dmapper/NumberingManager.hxx
index 9719e74d87f4..e1d2f2f1bef2 100644
--- a/writerfilter/source/dmapper/NumberingManager.hxx
+++ b/writerfilter/source/dmapper/NumberingManager.hxx
@@ -132,6 +132,9 @@ private:
     // The style name linked to.
     OUString                      m_sNumStyleLink;
 
+    // This absract numbering is a base definition for this style
+    OUString                      m_sStyleLink;
+
     /// list id to use for all derived numbering definitions
     std::optional<OUString> m_oListId;
 
@@ -159,6 +162,9 @@ public:
     void                  SetNumStyleLink(const OUString& sValue) { m_sNumStyleLink = sValue; };
     const OUString&       GetNumStyleLink() const { return m_sNumStyleLink; };
 
+    void                  SetStyleLink(const OUString& sValue) { m_sStyleLink = sValue; };
+    const OUString&       GetStyleLink() const { return m_sStyleLink; };
+
     const OUString& MapListId(OUString const& rId);
 };
 
commit a7f2239e649ea1b9ef611d758841584ab51abed0
Author:     Sarper Akdemir <q.sarperakdemir at gmail.com>
AuthorDate: Wed May 13 11:28:05 2020 +0300
Commit:     Thorsten Behrens <Thorsten.Behrens at CIB.de>
CommitDate: Sun May 17 02:21:54 2020 +0200

    external: bundle box2d
    
    Bundled box2d with the build system of LO as a static library.
    If --with-system-box2d was specified checks for instance box2d in
    the system, defines SYSTEM_BOX2D and uses the library from the system.
    
    Change-Id: Ifb05912f2acaff273b25abebafc5af1cac3afec4
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94103
    Tested-by: Jenkins
    Reviewed-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>

diff --git a/Makefile.fetch b/Makefile.fetch
index cfa3dc58c3a5..0a6202a4b3c7 100644
--- a/Makefile.fetch
+++ b/Makefile.fetch
@@ -105,6 +105,7 @@ $(WORKDIR)/download: $(BUILDDIR)/config_$(gb_Side).mk $(SRCDIR)/download.lst $(S
 		$(call fetch_Optional,APR,APR_TARBALL) \
 		$(call fetch_Optional,APR,APR_UTIL_TARBALL) \
 		$(call fetch_Optional,BOOST,BOOST_TARBALL) \
+		$(call fetch_Optional,BOX2D,BOX2D_TARBALL) \
 		$(call fetch_Optional,BREAKPAD,BREAKPAD_TARBALL) \
 		$(call fetch_Optional,BSH,BSH_TARBALL) \
 		$(call fetch_Optional,BZIP2,BZIP2_TARBALL) \
diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk
index ba6437276f28..81a65a1a8590 100644
--- a/RepositoryExternal.mk
+++ b/RepositoryExternal.mk
@@ -4229,4 +4229,39 @@ $(eval $(call gb_Helper_register_packages_for_install,ucrt_binarytable,\
 	$(if $(UCRT_REDISTDIR),ucrt) \
 ))
 
+ifneq ($(SYSTEM_BOX2D),)
+
+define gb_LinkTarget__use_box2d
+$(call gb_LinkTarget_set_include,$(1),\
+	-DSYSTEM_BOX2D \
+	$$(INCLUDE) \
+	$(BOX2D_CFLAGS) \
+)
+$(call gb_LinkTarget_add_libs,$(1),$(BOX2D_LIBS))
+
+endef
+
+gb_ExternalProject__use_box2d :=
+
+else # !SYSTEM_BOX2D
+
+define gb_LinkTarget__use_box2d
+$(call gb_LinkTarget_use_unpacked,$(1),box2d)
+$(call gb_LinkTarget_set_include,$(1),\
+	-I$(call gb_UnpackedTarball_get_dir,box2d/Box2D/)\
+	$$(INCLUDE) \
+)
+$(call gb_LinkTarget_use_static_libraries,$(1),\
+	box2d \
+)
+
+endef
+
+define gb_ExternalProject__use_box2d
+$(call gb_ExternalProject_use_static_libraries,$(1),box2d)
+
+endef
+
+endif # SYSTEM_BOX2D
+
 # vim: set noet sw=4 ts=4:
diff --git a/config_host.mk.in b/config_host.mk.in
index 7df26713a1dd..bcce45b1ce77 100644
--- a/config_host.mk.in
+++ b/config_host.mk.in
@@ -45,6 +45,8 @@ export BOOST_FILESYSTEM_LIB=@BOOST_FILESYSTEM_LIB@
 export BOOST_IOSTREAMS_LIB=@BOOST_IOSTREAMS_LIB@
 export BOOST_LDFLAGS=@BOOST_LDFLAGS@
 export BOOST_SYSTEM_LIB=@BOOST_SYSTEM_LIB@
+export BOX2D_CFLAGS=@BOX2D_CFLAGS@
+export BOX2D_LIBS=@BOX2D_LIBS@
 export BRAND_INTRO_IMAGES=@BRAND_INTRO_IMAGES@
 export BREAKPAD_SYMBOL_CONFIG=@BREAKPAD_SYMBOL_CONFIG@
 export BSH_JAR=@BSH_JAR@
@@ -537,6 +539,7 @@ export SYSTEM_APR=@SYSTEM_APR@
 export SYSTEM_BLUEZ=@SYSTEM_BLUEZ@
 export SYSTEM_BOOST=@SYSTEM_BOOST@
 export SYSTEM_BSH=@SYSTEM_BSH@
+export SYSTEM_BOX2D=@SYSTEM_BOX2D@
 export SYSTEM_BZIP2=@SYSTEM_BZIP2@
 export SYSTEM_CAIRO=@SYSTEM_CAIRO@
 export SYSTEM_CLUCENE=@SYSTEM_CLUCENE@
diff --git a/configure.ac b/configure.ac
index 23683bed528d..2087b1d3d452 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1964,6 +1964,11 @@ AC_ARG_WITH(system-qrcodegen,
         [Use libqrcodegen already on system.]),,
     [with_system_qrcodegen="$with_system_libs"])
 
+AC_ARG_WITH(system-box2d,
+    AS_HELP_STRING([--with-system-box2d],
+        [Use box2d already on system.]),,
+    [with_system_box2d="$with_system_libs"])
+
 AC_ARG_WITH(system-mythes,
     AS_HELP_STRING([--with-system-mythes],
         [Use mythes already on system.]),,
@@ -10263,6 +10268,32 @@ AC_SUBST(SYSTEM_QRCODEGEN)
 AC_SUBST(QRCODEGEN_CFLAGS)
 AC_SUBST(QRCODEGEN_LIBS)
 
+dnl ===================================================================
+dnl Check for system box2d
+dnl ===================================================================
+AC_MSG_CHECKING([which box2d to use])
+if test "$with_system_box2d" = "yes"; then
+    AC_MSG_RESULT([external])
+    SYSTEM_BOX2D=TRUE
+    AC_LANG_PUSH([C++])
+    AC_CHECK_HEADER(Box2D/Box2D.h, [],
+        [AC_MSG_ERROR(box2d headers not found.)], [])
+    AC_CHECK_LIB([Box2D], [main], [:],
+        [ AC_MSG_ERROR(box2d library not found.) ], [])
+    BOX2D_LIBS=-lBox2D
+    AC_LANG_POP([C++])
+    BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
+    FilterLibs "${BOX2D_LIBS}"
+    BOX2D_LIBS="${filteredlibs}"
+else
+    AC_MSG_RESULT([internal])
+    SYSTEM_BOX2D=
+    BUILD_TYPE="$BUILD_TYPE BOX2D"
+fi
+AC_SUBST(SYSTEM_BOX2D)
+AC_SUBST(BOX2D_CFLAGS)
+AC_SUBST(BOX2D_LIBS)
+
 dnl ===================================================================
 dnl Checking for altlinuxhyph
 dnl ===================================================================
diff --git a/download.lst b/download.lst
index 88a723c7fd79..7c78e3071fb9 100644
--- a/download.lst
+++ b/download.lst
@@ -14,6 +14,8 @@ export APR_UTIL_TARBALL := apr-util-1.5.4.tar.gz
 # please repack the tarball using external/boost/repack_tarball.sh
 export BOOST_SHA256SUM := 35e06a3bd7cd8f66be822c7d64e80c2b6051a181e9e897006917cb8e7988a543
 export BOOST_TARBALL := boost_1_71_0.tar.xz
+export BOX2D_SHA256SUM := 58ffc8475a8650aadc351345aef696937747b40501ab78d72c197c5ff5b3035c
+export BOX2D_TARBALL := box2d-2.3.1.tar.gz
 export BREAKPAD_SHA256SUM := 7060149be16a8789b0ccf596bdeaf63115f03f520acb508f72a14686fb311cb9
 export BREAKPAD_TARBALL := breakpad.zip
 export BSH_SHA256SUM := 9e93c73e23aff644b17dfff656444474c14150e7f3b38b19635e622235e01c96
diff --git a/external/Module_external.mk b/external/Module_external.mk
index 286759927781..41e018d2ef3f 100644
--- a/external/Module_external.mk
+++ b/external/Module_external.mk
@@ -19,6 +19,7 @@ $(eval $(call gb_Module_add_moduledirs,external,\
 	$(call gb_Helper_optional,APACHE_COMMONS,apache-commons) \
 	$(call gb_Helper_optional,APR,apr) \
 	$(call gb_Helper_optional,BOOST,boost) \
+	$(call gb_Helper_optional,BOX2D,box2d) \
 	$(call gb_Helper_optional,BREAKPAD,breakpad) \
 	$(call gb_Helper_optional,BSH,beanshell) \
 	$(call gb_Helper_optional,BZIP2,bzip2) \
diff --git a/external/box2d/Makefile b/external/box2d/Makefile
new file mode 100644
index 000000000000..e4968cf85fb6
--- /dev/null
+++ b/external/box2d/Makefile
@@ -0,0 +1,7 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+
+module_directory:=$(dir $(realpath $(firstword $(MAKEFILE_LIST))))
+
+include $(module_directory)/../../solenv/gbuild/partial_build.mk
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/box2d/Module_box2d.mk b/external/box2d/Module_box2d.mk
new file mode 100644
index 000000000000..3986357b3668
--- /dev/null
+++ b/external/box2d/Module_box2d.mk
@@ -0,0 +1,20 @@
+# -*- 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_Module_Module,box2d))
+
+$(eval $(call gb_Module_add_targets,box2d,\
+	UnpackedTarball_box2d \
+))
+
+$(eval $(call gb_Module_add_targets,box2d,\
+	StaticLibrary_box2d \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/box2d/README b/external/box2d/README
new file mode 100644
index 000000000000..d2b46b93b09f
--- /dev/null
+++ b/external/box2d/README
@@ -0,0 +1,3 @@
+Box2D is a 2D physics engine.
+
+It is available from [https://github.com/erincatto/box2d]
diff --git a/external/box2d/StaticLibrary_box2d.mk b/external/box2d/StaticLibrary_box2d.mk
new file mode 100644
index 000000000000..b50ee47aa498
--- /dev/null
+++ b/external/box2d/StaticLibrary_box2d.mk
@@ -0,0 +1,72 @@
+# -*- 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_StaticLibrary_StaticLibrary,box2d))
+
+$(eval $(call gb_StaticLibrary_use_unpacked,box2d,box2d))
+
+$(eval $(call gb_StaticLibrary_set_warnings_disabled,box2d))
+
+$(eval $(call gb_StaticLibrary_set_generated_cxx_suffix,box2d,cpp))
+
+$(eval $(call gb_StaticLibrary_set_include,box2d,\
+    -I$(call gb_UnpackedTarball_get_dir,box2d/Box2D/)\
+    $$(INCLUDE)\
+))
+
+$(eval $(call gb_StaticLibrary_add_generated_exception_objects,box2d,\
+	UnpackedTarball/box2d/Box2D/Box2D/Common/b2Timer \
+	UnpackedTarball/box2d/Box2D/Box2D/Common/b2StackAllocator \
+	UnpackedTarball/box2d/Box2D/Box2D/Common/b2Draw \
+	UnpackedTarball/box2d/Box2D/Box2D/Common/b2Math \
+	UnpackedTarball/box2d/Box2D/Box2D/Common/b2BlockAllocator \
+	UnpackedTarball/box2d/Box2D/Box2D/Common/b2Settings \
+	UnpackedTarball/box2d/Box2D/Box2D/Dynamics/b2Body \
+	UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact \
+	UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Contacts/b2CircleContact \
+	UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Contacts/b2ContactSolver \
+	UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Contacts/b2PolygonContact \
+	UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact \
+	UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Contacts/b2ChainAndCircleContact \
+	UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Contacts/b2Contact \
+	UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact \
+	UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact \
+	UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Joints/b2RopeJoint \
+	UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Joints/b2WheelJoint \
+	UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Joints/b2FrictionJoint \
+	UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Joints/b2PrismaticJoint \
+	UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Joints/b2WeldJoint \
+	UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Joints/b2PulleyJoint \
+	UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Joints/b2MouseJoint \
+	UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Joints/b2MotorJoint \
+	UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Joints/b2DistanceJoint \
+	UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Joints/b2GearJoint \
+	UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Joints/b2Joint \
+	UnpackedTarball/box2d/Box2D/Box2D/Dynamics/Joints/b2RevoluteJoint \
+	UnpackedTarball/box2d/Box2D/Box2D/Dynamics/b2WorldCallbacks \
+	UnpackedTarball/box2d/Box2D/Box2D/Dynamics/b2Fixture \
+	UnpackedTarball/box2d/Box2D/Box2D/Dynamics/b2ContactManager \
+	UnpackedTarball/box2d/Box2D/Box2D/Dynamics/b2Island \
+	UnpackedTarball/box2d/Box2D/Box2D/Dynamics/b2World \
+	UnpackedTarball/box2d/Box2D/Box2D/Rope/b2Rope \
+	UnpackedTarball/box2d/Box2D/Box2D/Collision/b2TimeOfImpact \
+	UnpackedTarball/box2d/Box2D/Box2D/Collision/b2CollidePolygon \
+	UnpackedTarball/box2d/Box2D/Box2D/Collision/b2Distance \
+	UnpackedTarball/box2d/Box2D/Box2D/Collision/b2Collision \
+	UnpackedTarball/box2d/Box2D/Box2D/Collision/b2CollideEdge \
+	UnpackedTarball/box2d/Box2D/Box2D/Collision/b2CollideCircle \
+	UnpackedTarball/box2d/Box2D/Box2D/Collision/b2BroadPhase \
+	UnpackedTarball/box2d/Box2D/Box2D/Collision/Shapes/b2EdgeShape \
+	UnpackedTarball/box2d/Box2D/Box2D/Collision/Shapes/b2CircleShape \
+	UnpackedTarball/box2d/Box2D/Box2D/Collision/Shapes/b2ChainShape \
+	UnpackedTarball/box2d/Box2D/Box2D/Collision/Shapes/b2PolygonShape \
+	UnpackedTarball/box2d/Box2D/Box2D/Collision/b2DynamicTree \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/box2d/UnpackedTarball_box2d.mk b/external/box2d/UnpackedTarball_box2d.mk
new file mode 100644
index 000000000000..340a17511711
--- /dev/null
+++ b/external/box2d/UnpackedTarball_box2d.mk
@@ -0,0 +1,14 @@
+#-*- 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_UnpackedTarball_UnpackedTarball,box2d))
+
+$(eval $(call gb_UnpackedTarball_set_tarball,box2d,$(BOX2D_TARBALL)))
+
+# vim: set noet sw=4 ts=4:
commit 909f343f267a45028f58b577179b3e594b430d39
Author:     Xisco Fauli <xiscofauli at libreoffice.org>
AuthorDate: Sat May 16 22:23:26 2020 +0200
Commit:     Xisco Faulí <xiscofauli at libreoffice.org>
CommitDate: Sat May 16 23:20:58 2020 +0200

    tdf#76949: sc: Add unittest
    
    Change-Id: I53786b591d1038d537ff109b8315655084212e7c
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94370
    Tested-by: Jenkins
    Reviewed-by: Xisco Faulí <xiscofauli at libreoffice.org>

diff --git a/sc/qa/unit/data/ods/tdf76949.ods b/sc/qa/unit/data/ods/tdf76949.ods
new file mode 100644
index 000000000000..a1748287da30
Binary files /dev/null and b/sc/qa/unit/data/ods/tdf76949.ods differ
diff --git a/sc/qa/unit/subsequent_export-test.cxx b/sc/qa/unit/subsequent_export-test.cxx
index 4a7a3d5172ac..165c68e7ada8 100644
--- a/sc/qa/unit/subsequent_export-test.cxx
+++ b/sc/qa/unit/subsequent_export-test.cxx
@@ -196,6 +196,7 @@ public:
     void testTextDirectionXLSX();
     void testTdf66668();
     void testTdf130108();
+    void testTdf76949();
     void testTdf55417();
     void testTdf129985();
     void testTdf73063();
@@ -340,6 +341,7 @@ public:
     CPPUNIT_TEST(testTextDirectionXLSX);
     CPPUNIT_TEST(testTdf66668);
     CPPUNIT_TEST(testTdf130108);
+    CPPUNIT_TEST(testTdf76949);
     CPPUNIT_TEST(testTdf55417);
     CPPUNIT_TEST(testTdf129985);
     CPPUNIT_TEST(testTdf73063);
@@ -4052,6 +4054,19 @@ void ScExportTest::testTdf130108()
     xDocSh->DoClose();
 }
 
+void ScExportTest::testTdf76949()
+{
+    ScDocShellRef xDocSh = loadDoc("tdf76949.", FORMAT_ODS);
+    CPPUNIT_ASSERT(xDocSh.is());
+
+    xmlDocUniquePtr pSheet = XPathHelper::parseExport2(*this, *xDocSh, m_xSFactory, "xl/worksheets/sheet1.xml", FORMAT_XLSX);
+    CPPUNIT_ASSERT(pSheet);
+
+    assertXPathContent(pSheet, "/x:worksheet/x:sheetData/x:row/x:c/x:f", "_xlfn.CHISQ.DIST(1,1,1)");
+
+    xDocSh->DoClose();
+}
+
 void ScExportTest::testTdf55417()
 {
     ScDocShellRef xDocSh = loadDoc("tdf55417.", FORMAT_XLSX);
commit d0922a4ce0ddf458fa10a504ee9b769f2c86b149
Author:     andreas kainz <kainz.a at gmail.com>
AuthorDate: Wed May 13 11:01:57 2020 +0200
Commit:     andreas_kainz <kainz.a at gmail.com>
CommitDate: Sat May 16 22:19:25 2020 +0200

    Update Image dialog property url and addpage alignment
    
    Change-Id: I2601cc41ff8b7c678ac6d5d0ccce05d17f6be18b
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94107
    Tested-by: Jenkins
    Reviewed-by: andreas_kainz <kainz.a at gmail.com>

diff --git a/sw/uiconfig/swriter/ui/frmaddpage.ui b/sw/uiconfig/swriter/ui/frmaddpage.ui
index e01f39cfe327..1d4f18b507dd 100644
--- a/sw/uiconfig/swriter/ui/frmaddpage.ui
+++ b/sw/uiconfig/swriter/ui/frmaddpage.ui
@@ -9,20 +9,19 @@
 
 </property>
   </object>
-  <object class="GtkBox" id="FrameAddPage">
+  <object class="GtkGrid" id="FrameAddPage">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
-    <property name="valign">start</property>
     <property name="hexpand">True</property>
-    <property name="vexpand">True</property>
     <property name="border_width">6</property>
-    <property name="orientation">vertical</property>
-    <property name="spacing">12</property>
+    <property name="row_spacing">12</property>
+    <property name="column_spacing">24</property>
     <child>
       <object class="GtkFrame" id="nameframe">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
         <property name="hexpand">True</property>
+        <property name="vexpand">True</property>
         <property name="label_xalign">0</property>
         <property name="shadow_type">none</property>
         <child>
@@ -38,6 +37,7 @@
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
                 <property name="hexpand">True</property>
+                <property name="vexpand">True</property>
                 <property name="row_spacing">6</property>
                 <property name="column_spacing">12</property>
                 <child>
@@ -98,7 +98,7 @@
                   <object class="GtkComboBoxText" id="prev">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="halign">start</property>
+                    <property name="hexpand">True</property>
                     <items>
                       <item translatable="yes" context="frmaddpage|prev"><None></item>
                     </items>
@@ -112,7 +112,7 @@
                   <object class="GtkComboBoxText" id="next">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="halign">start</property>
+                    <property name="hexpand">True</property>
                     <items>
                       <item translatable="yes" context="frmaddpage|next"><None></item>
                     </items>
@@ -169,12 +169,14 @@
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="hexpand">True</property>
+                    <property name="vexpand">True</property>
                     <property name="shadow_type">in</property>
                     <child>
                       <object class="GtkTextView" id="description">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="hexpand">True</property>
+                        <property name="vexpand">True</property>
                         <property name="wrap_mode">word</property>
                         <property name="buffer">textbuffer1</property>
                       </object>
@@ -201,180 +203,161 @@
         </child>
       </object>
       <packing>
-        <property name="expand">False</property>
-        <property name="fill">True</property>
-        <property name="position">0</property>
+        <property name="left_attach">0</property>
+        <property name="top_attach">0</property>
+        <property name="width">2</property>
       </packing>
     </child>
     <child>
-      <object class="GtkGrid" id="grid2">
+      <object class="GtkFrame" id="protect">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
-        <property name="column_homogeneous">True</property>
+        <property name="label_xalign">0</property>
+        <property name="shadow_type">none</property>
         <child>
-          <object class="GtkFrame" id="contentalign">
+          <object class="GtkAlignment" id="alignment6">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
+            <property name="top_padding">6</property>
+            <property name="left_padding">12</property>
             <child>
-              <object class="GtkAlignment" id="alignment2">
+              <object class="GtkGrid" id="grid9">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="top_padding">6</property>
-                <property name="left_padding">12</property>
+                <property name="row_spacing">3</property>
                 <child>
-                  <object class="GtkGrid" id="grid8">
+                  <object class="GtkCheckButton" id="protectcontent">
+                    <property name="label" translatable="yes" context="frmaddpage|protectcontent">_Contents</property>
                     <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="column_spacing">12</property>
-                    <child>
-                      <object class="GtkLabel" id="label2">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes" context="frmaddpage|label2">_Vertical alignment</property>
-                        <property name="use_underline">True</property>
-                      </object>
-                      <packing>
-                        <property name="left_attach">0</property>
-                        <property name="top_attach">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBoxText" id="vertalign">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <items>
-                          <item id="0" translatable="yes" context="frmaddpage|liststore">Top</item>
-                          <item id="1" translatable="yes" context="frmaddpage|liststore">Centered</item>
-                          <item id="2" translatable="yes" context="frmaddpage|liststore">Bottom</item>
-                        </items>
-                      </object>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="top_attach">0</property>
-                      </packing>
-                    </child>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="use_underline">True</property>
+                    <property name="xalign">0</property>
+                    <property name="draw_indicator">True</property>
                   </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkCheckButton" id="protectframe">
+                    <property name="label" translatable="yes" context="frmaddpage|protectframe">P_osition</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="use_underline">True</property>
+                    <property name="xalign">0</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkCheckButton" id="protectsize">
+                    <property name="label" translatable="yes" context="frmaddpage|protectsize">_Size</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="use_underline">True</property>
+                    <property name="xalign">0</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">2</property>
+                  </packing>
                 </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="label7">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes" context="frmaddpage|label7">Content Alignment</property>
-                <attributes>
-                  <attribute name="weight" value="bold"/>
-                </attributes>
               </object>
             </child>
           </object>
-          <packing>
-            <property name="left_attach">1</property>
-            <property name="top_attach">0</property>
-          </packing>
         </child>
+        <child type="label">
+          <object class="GtkLabel" id="label8">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes" context="frmaddpage|label8">Protect</property>
+            <attributes>
+              <attribute name="weight" value="bold"/>
+            </attributes>
+          </object>
+        </child>
+      </object>
+      <packing>
+        <property name="left_attach">0</property>
+        <property name="top_attach">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkFrame" id="contentalign">
+        <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="GtkFrame" id="protect">
+          <object class="GtkAlignment" id="alignment2">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
-            <property name="hexpand">True</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
+            <property name="top_padding">6</property>
+            <property name="left_padding">12</property>
             <child>
-              <object class="GtkAlignment" id="alignment6">
+              <object class="GtkGrid" id="grid8">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="hexpand">True</property>
-                <property name="vexpand">True</property>
-                <property name="top_padding">6</property>
-                <property name="left_padding">12</property>
+                <property name="column_spacing">12</property>
                 <child>
-                  <object class="GtkGrid" id="grid9">
+                  <object class="GtkLabel" id="label2">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="hexpand">True</property>
-                    <property name="row_spacing">5</property>
-                    <property name="column_spacing">12</property>
-                    <child>
-                      <object class="GtkCheckButton" id="protectcontent">
-                        <property name="label" translatable="yes" context="frmaddpage|protectcontent">_Contents</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="xalign">0</property>
-                        <property name="draw_indicator">True</property>
-                      </object>
-                      <packing>
-                        <property name="left_attach">0</property>
-                        <property name="top_attach">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkCheckButton" id="protectframe">
-                        <property name="label" translatable="yes" context="frmaddpage|protectframe">P_osition</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="xalign">0</property>
-                        <property name="draw_indicator">True</property>
-                      </object>
-                      <packing>
-                        <property name="left_attach">0</property>
-                        <property name="top_attach">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkCheckButton" id="protectsize">
-                        <property name="label" translatable="yes" context="frmaddpage|protectsize">_Size</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="xalign">0</property>
-                        <property name="draw_indicator">True</property>
-                      </object>
-                      <packing>
-                        <property name="left_attach">0</property>
-                        <property name="top_attach">2</property>
-                      </packing>
-                    </child>
+                    <property name="label" translatable="yes" context="frmaddpage|label2">_Vertical alignment</property>
+                    <property name="use_underline">True</property>
                   </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkComboBoxText" id="vertalign">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <items>
+                      <item id="0" translatable="yes" context="frmaddpage|liststore">Top</item>
+                      <item id="1" translatable="yes" context="frmaddpage|liststore">Centered</item>
+                      <item id="2" translatable="yes" context="frmaddpage|liststore">Bottom</item>
+                    </items>
+                  </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="label8">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes" context="frmaddpage|label8">Protect</property>
-                <attributes>
-                  <attribute name="weight" value="bold"/>
-                </attributes>
               </object>
             </child>
           </object>
-          <packing>
-            <property name="left_attach">0</property>
-            <property name="top_attach">0</property>
-          </packing>
+        </child>
+        <child type="label">
+          <object class="GtkLabel" id="label7">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes" context="frmaddpage|label7">Content Alignment</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>
+        <property name="left_attach">1</property>
+        <property name="top_attach">1</property>
       </packing>
     </child>
     <child>
       <object class="GtkFrame" id="properties">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
-        <property name="hexpand">True</property>
-        <property name="vexpand">True</property>
         <property name="label_xalign">0</property>
         <property name="shadow_type">none</property>
         <child>
@@ -391,7 +374,7 @@
                 <property name="can_focus">False</property>
                 <property name="hexpand">True</property>
                 <property name="vexpand">True</property>
-                <property name="row_spacing">6</property>
+                <property name="row_spacing">3</property>
                 <property name="column_spacing">12</property>
                 <child>
                   <object class="GtkCheckButton" id="editinreadonly">
@@ -406,6 +389,7 @@
                   <packing>
                     <property name="left_attach">0</property>
                     <property name="top_attach">0</property>
+                    <property name="width">2</property>
                   </packing>
                 </child>
                 <child>
@@ -421,40 +405,28 @@
                   <packing>
                     <property name="left_attach">0</property>
                     <property name="top_attach">1</property>
+                    <property name="width">2</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkGrid" id="grid4">
+                  <object class="GtkComboBoxText" id="textflow">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
                     <property name="hexpand">True</property>
-                    <property name="vexpand">True</property>
-                    <property name="row_spacing">6</property>
-                    <property name="column_spacing">12</property>
-                    <child>
-                      <object class="GtkLabel" id="textflow_label">
-                        <property name="can_focus">False</property>
-                        <property name="no_show_all">True</property>
-                        <property name="label" translatable="yes" context="frmaddpage|textflow_label">_Text direction:</property>
-                        <property name="use_underline">True</property>
-                        <property name="mnemonic_widget">textflow</property>
-                        <property name="xalign">0</property>
-                      </object>
-                      <packing>
-                        <property name="left_attach">0</property>
-                        <property name="top_attach">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBoxText" id="textflow">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                      </object>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="top_attach">0</property>
-                      </packing>
-                    </child>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="top_attach">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="textflow_label">
+                    <property name="can_focus">False</property>
+                    <property name="no_show_all">True</property>
+                    <property name="label" translatable="yes" context="frmaddpage|textflow_label">_Text direction:</property>
+                    <property name="use_underline">True</property>
+                    <property name="mnemonic_widget">textflow</property>
+                    <property name="xalign">0</property>
                   </object>
                   <packing>
                     <property name="left_attach">0</property>
@@ -477,9 +449,9 @@
         </child>
       </object>
       <packing>
-        <property name="expand">False</property>
-        <property name="fill">True</property>
-        <property name="position">2</property>
+        <property name="left_attach">0</property>
+        <property name="top_attach">2</property>
+        <property name="width">2</property>
       </packing>
     </child>
   </object>
@@ -490,15 +462,9 @@
       <widget name="altname_label"/>
       <widget name="prev_label"/>
       <widget name="next_label"/>
+      <widget name="description_label"/>
+      <widget name="protect"/>
       <widget name="textflow_label"/>
     </widgets>
   </object>
-  <object class="GtkSizeGroup" id="sizegroup2">
-    <property name="ignore_hidden">True</property>
-    <widgets>
-      <widget name="prev"/>
-      <widget name="next"/>
-      <widget name="textflow"/>
-    </widgets>
-  </object>
 </interface>
diff --git a/sw/uiconfig/swriter/ui/frmurlpage.ui b/sw/uiconfig/swriter/ui/frmurlpage.ui
index 4aca7d26e197..758f4dd31e13 100644
--- a/sw/uiconfig/swriter/ui/frmurlpage.ui
+++ b/sw/uiconfig/swriter/ui/frmurlpage.ui
@@ -55,6 +55,7 @@
                   <packing>
                     <property name="left_attach">1</property>
                     <property name="top_attach">1</property>
+                    <property name="width">2</property>
                   </packing>
                 </child>
                 <child>
@@ -103,6 +104,7 @@
                   <object class="GtkButtonBox" id="buttonbox1">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
+                    <property name="halign">end</property>
                     <property name="layout_style">start</property>
                     <child>
                       <object class="GtkButton" id="search">
@@ -140,14 +142,9 @@
                   <packing>
                     <property name="left_attach">1</property>
                     <property name="top_attach">2</property>
+                    <property name="width">2</property>
                   </packing>
                 </child>
-                <child>
-                  <placeholder/>
-                </child>
-                <child>
-                  <placeholder/>
-                </child>
               </object>
             </child>
           </object>
@@ -174,7 +171,6 @@
         <property name="visible">True</property>
         <property name="can_focus">False</property>
         <property name="hexpand">True</property>
-        <property name="vexpand">True</property>
         <property name="label_xalign">0</property>
         <property name="shadow_type">none</property>
         <child>
commit 32eac748c508640bec036975c0a91ea904c729a2
Author:     Eivind Samseth <eisa01 at gmail.com>
AuthorDate: Sat May 16 14:39:33 2020 +0200
Commit:     Tor Lillqvist <tml at collabora.com>
CommitDate: Sat May 16 20:39:58 2020 +0200

    tdf#103644: Add support for vnd.sun.star.webdav on macOS
    
    Change-Id: I0766b7a12686c829f8b0fe43df6d5256139d4f10
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94359
    Reviewed-by: Tor Lillqvist <tml at collabora.com>
    Tested-by: Tor Lillqvist <tml at collabora.com>

diff --git a/sysui/desktop/macosx/Info.plist.in b/sysui/desktop/macosx/Info.plist.in
index 608140d2911d..fa3dbed3c79c 100644
--- a/sysui/desktop/macosx/Info.plist.in
+++ b/sysui/desktop/macosx/Info.plist.in
@@ -1463,6 +1463,15 @@
                 <string>vnd.libreoffice.cmis</string>
             </array>
         </dict>
+        <dict>
+            <key>CFBundleURLName</key>
+            <string>@PRODUCTNAME@ WebDav</string>
+            <key>CFBundleURLSchemes</key>
+            <array>
+                <string>vnd.sun.star.webdav</string>
+				<string>vnd.sun.star.webdavs</string>
+            </array>
+        </dict>
     </array>
 
     <key>CFBundleDocumentTypes</key>
commit eadfb43d8c80e1cf1b21d8d42eeb768ebe3f8e4c
Author:     Stephan Bergmann <sbergman at redhat.com>
AuthorDate: Sat May 16 15:44:47 2020 +0200
Commit:     Stephan Bergmann <sbergman at redhat.com>
CommitDate: Sat May 16 19:45:23 2020 +0200

    Remove unused "with accessibility support" string
    
    ...left over from 3bc8b14bea3c11159bdbd6fc4f9658fce3ba252e "Drop the JVM
    'feature' concept support"
    
    Change-Id: Id03362ca78866698e13b85554df0c0900a5b5b0e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94361
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sbergman at redhat.com>

diff --git a/cui/source/options/optjava.cxx b/cui/source/options/optjava.cxx
index 256328fd6e53..0eeaec393c6d 100644
--- a/cui/source/options/optjava.cxx
+++ b/cui/source/options/optjava.cxx

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list