Resolves: tdf#120013 tdf#123714 tdf#123736 shared formula group split

 This is a combination of 7 commits.

Resolves: tdf#123714 tdf#123736 all split formula groups; tdf#120013 related

Add all split shared formula groups to regrouping and mark for
listening, even if the references had not be to adjusted.

This partly also resolves tdf#120013 but there's more to that, a
remaining partial group is not updated.

Reviewed-on: https://gerrit.libreoffice.org/68951
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Jenkins
(cherry picked from commit 7fdc5df36f5b50e0629405a47ff3d5765fcfeb93)

Resolves: tdf#120013 tdf#123714 split-off group or single cell needs listening

Reviewed-on: https://gerrit.libreoffice.org/69066
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Jenkins
(cherry picked from commit 5c27a048658afcd2f78ef4d7e6c7128554ed3f4c)

Resolves: tdf#123736 re-establish listeners for unshared formula groups

... when replacing one of their formula cells, with another
formula cell or any other cell, passing through
DetachFormulaCell()

Reviewed-on: https://gerrit.libreoffice.org/69221
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Jenkins
(cherry picked from commit 1634a6d926c6cfd8fe92be1f3ae6083d2fb80f5e)

In case of sc::NoListening only SetNeedsListeningGroup(), tdf#123736 follow-up

Reviewed-on: https://gerrit.libreoffice.org/69303
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Jenkins
(cherry picked from commit 6160025b27e97841321be29863bb1efd8c194a5f)

Related: tdf#123736 re-establish listeners also for vector unsharing

... via DetachFormulaCells()

Reviewed-on: https://gerrit.libreoffice.org/69320
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Jenkins
(cherry picked from commit 564d0d145cf9c164ea9c717b4b2113fd971fa0af)

Reget position_type as the block or type may have changed, tdf#123736 related

Reviewed-on: https://gerrit.libreoffice.org/69358
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Jenkins
(cherry picked from commit e5de84e73ffbaa1a45ab787750f5997582bbfa49)

Listening when grouping in ScColumn::AttachNewFormulaCells(), (tdf#123736)

Not directly related to tdf#123736 but similar approach.
Setting a vector with ScColumn::SetFormulaCells() is currently
only done for Undo documents, but implementation provided
listening as only single cell listening for not-undo/clip
documents, which wouldn't work if actually used in grouping
context. The upcoming unit tests will use SetFormulaCells() for
checks.

Reviewed-on: https://gerrit.libreoffice.org/69371
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Jenkins
(cherry picked from commit de024e572dd7a588f82b84c68daa2051ec6b20e9)

c511f618e9dde2288491c01cfcd889970fd6e4e5
d527307ef5278d87345c6dbfab9d05cb490dfe6c
3e5a5334dfe11002b526f942463626b62efbc340
a57308495a06e0df612eb1610b5f387d6b60ce08
2faf3e74d95cb1f3088f20cbb7de7ba965a6de21
990e6a5d6e1efcf70a2661b3a9a39c37d9e4c2e6

Change-Id: If6d1fef7e545017232a1b7e29b4d60dd58775e88
Reviewed-on: https://gerrit.libreoffice.org/69554
Tested-by: Jenkins
Reviewed-by: Dennis Francis <dennis.francis@collabora.com>
Reviewed-by: Katarina Behrens <Katarina.Behrens@cib.de>
7 files changed
tree: d31090a69accf6e12670fe2c1470752acdaaaea6
  1. .git-hooks/
  2. accessibility/
  3. android/
  4. animations/
  5. apple_remote/
  6. avmedia/
  7. basctl/
  8. basegfx/
  9. basic/
  10. bean/
  11. bin/
  12. binaryurp/
  13. bridges/
  14. canvas/
  15. chart2/
  16. cli_ure/
  17. codemaker/
  18. comphelper/
  19. compilerplugins/
  20. config_host/
  21. configmgr/
  22. connectivity/
  23. cppcanvas/
  24. cppu/
  25. cppuhelper/
  26. cpputools/
  27. cui/
  28. dbaccess/
  29. desktop/
  30. distro-configs/
  31. drawinglayer/
  32. dtrans/
  33. editeng/
  34. embeddedobj/
  35. embedserv/
  36. emfio/
  37. eventattacher/
  38. extensions/
  39. external/
  40. extras/
  41. filter/
  42. forms/
  43. formula/
  44. fpicker/
  45. framework/
  46. helpcompiler/
  47. hwpfilter/
  48. i18nlangtag/
  49. i18npool/
  50. i18nutil/
  51. icon-themes/
  52. idl/
  53. idlc/
  54. include/
  55. instsetoo_native/
  56. io/
  57. ios/
  58. javaunohelper/
  59. jurt/
  60. jvmaccess/
  61. jvmfwk/
  62. l10ntools/
  63. librelogo/
  64. libreofficekit/
  65. lingucomponent/
  66. linguistic/
  67. lotuswordpro/
  68. m4/
  69. nlpsolver/
  70. o3tl/
  71. odk/
  72. offapi/
  73. officecfg/
  74. onlineupdate/
  75. oovbaapi/
  76. oox/
  77. opencl/
  78. osx/
  79. package/
  80. postprocess/
  81. pyuno/
  82. qadevOOo/
  83. readlicense_oo/
  84. registry/
  85. remotebridges/
  86. reportbuilder/
  87. reportdesign/
  88. ridljar/
  89. sal/
  90. salhelper/
  91. sax/
  92. sc/
  93. scaddins/
  94. sccomp/
  95. schema/
  96. scp2/
  97. scripting/
  98. sd/
  99. sdext/
  100. setup_native/
  101. sfx2/
  102. shell/
  103. slideshow/
  104. smoketest/
  105. solenv/
  106. soltools/
  107. sot/
  108. starmath/
  109. stoc/
  110. store/
  111. svgio/
  112. svl/
  113. svtools/
  114. svx/
  115. sw/
  116. swext/
  117. sysui/
  118. test/
  119. testtools/
  120. toolkit/
  121. tools/
  122. ucb/
  123. ucbhelper/
  124. udkapi/
  125. uitest/
  126. UnoControls/
  127. unodevtools/
  128. unoidl/
  129. unoil/
  130. unotest/
  131. unotools/
  132. unoxml/
  133. ure/
  134. uui/
  135. vbahelper/
  136. vcl/
  137. winaccessibility/
  138. wizards/
  139. writerfilter/
  140. writerperfect/
  141. xmerge/
  142. xmlhelp/
  143. xmloff/
  144. xmlreader/
  145. xmlscript/
  146. xmlsecurity/
  147. .buckconfig
  148. .buckversion
  149. .clang-format
  150. .editorconfig
  151. .gitattributes
  152. .gitignore
  153. .gitmodules
  154. .gitreview
  155. autogen.sh
  156. BUCK
  157. config.guess
  158. config.sub
  159. config_host.mk.in
  160. config_host_lang.mk.in
  161. configure.ac
  162. COPYING
  163. COPYING.LGPL
  164. COPYING.MPL
  165. download.lst
  166. g
  167. install-sh
  168. leak-suppress.txt
  169. Library_merged.mk
  170. lo.xcent.in
  171. logerrit
  172. Makefile.fetch
  173. Makefile.gbuild
  174. Makefile.in
  175. README.cross
  176. README.md
  177. README.Solaris
  178. Repository.mk
  179. RepositoryExternal.mk
  180. RepositoryFixes.mk
  181. RepositoryModule_build.mk
  182. RepositoryModule_host.mk
  183. sanitize-ubsan-blacklist
  184. TEMPLATE.SOURCECODE.HEADER
README.md

LibreOffice

Coverity Scan Build Status CII Best Practices

LibreOffice is an integrated office suite based on copyleft licenses and compatible with most document formats and standards. Libreoffice is backed by The Document Foundation, which represents a large independent community of enterprises, developers and other volunteers moved by the common goal of bringing to the market the best software for personal productivity. LibreOffice is open source, and free to download, use and distribute.

A quick overview of the LibreOffice code structure.

Overview

You can develop for LibreOffice in one of two ways, one recommended and one much less so. First the somewhat less recommended way: it is possible to use the SDK to develop an extension, for which you can read the API docs here and here. This re-uses the (extremely generic) UNO APIs that are also used by macro scripting in StarBasic.

The best way to add a generally useful feature to LibreOffice is to work on the code base however. Overall this way makes it easier to compile and build your code, it avoids any arbitrary limitations of our scripting APIs, and in general is far more simple and intuitive - if you are a reasonably able C++ programmer.

The build chain and runtime baselines

These are the current minimal operating system and compiler versions to run and compile LibreOffice, also used by the TDF builds:

  • Windows:
    • Runtime: Windows 7
    • Build: Cygwin + Visual Studio 2015 Update 3
  • macOS:
    • Runtime: 10.9
    • Build: 10.12 + Xcode 8
  • Linux:
    • Runtime: RHEL 6 or CentOS 6
    • Build: GCC 4.8.1 or Clang
  • iOS (only for LibreOfficeKit):
    • Runtime: 11.0 (only support for newer i devices == 64 bit)
    • Build: Xcode 9.0 and iPhone SDK 11.1

If you want to use Clang with the LibreOffice compiler plugins, the minimal version of Clang is 3.4. Since Xcode doesn't provide the compiler plugin headers, you have to compile your own Clang to use them on macOS.

You can find the TDF configure switches in the distro-configs/ directory.

To setup your initial build environment on Windows and macOS, we provide the LibreOffice Development Environment (LODE) scripts.

For more information see the build instructions for your platform in the TDF wiki.

The important bits of code

Each module should have a README file inside it which has some degree of documentation for that module; patches are most welcome to improve those. We have those turned into a web page here:

http://docs.libreoffice.org/

However, there are two hundred modules, many of them of only peripheral interest for a specialist audience. So - where is the good stuff, the code that is most useful. Here is a quick overview of the most important ones:

ModuleDescription
sal/this provides a simple System Abstraction Layer
tools/this provides basic internal types: 'Rectangle', 'Color' etc.
vcl/this is the widget toolkit library and one rendering abstraction
frameworkUNO framework, responsible for building toolbars, menus, status bars, and the chrome around the document using widgets from VCL, and XML descriptions from /uiconfig/ files
sfx2/legacy core framework used by Writer/Calc/Draw: document model / load/save / signals for actions etc.
svx/drawing model related helper code, including much of Draw/Impress

Then applications

ModuleDescription
desktop/this is where the 'main' for the application lives, init / bootstrap. the name dates back to an ancient StarOffice that also drew a desktop
sw/Writer
sc/Calc
sd/Draw / Impress

There are several other libraries that are helpful from a graphical perspective:

ModuleDescription
basegfx/algorithms and data-types for graphics as used in the canvas
canvas/new (UNO) canvas rendering model with various backends
cppcanvas/C++ helper classes for using the UNO canvas
drawinglayer/View code to render drawable objects and break them down into primitives we can render more easily.

Rules for #include directives (C/C++)

Use the "..." form if and only if the included file is found next to the including file. Otherwise, use the <...> form. (For further details, see the mail Re: C[++]: Normalizing include syntax ("" vs <>).)

The UNO API include files should consistently use double quotes, for the benefit of external users of this API.

Finding out more

Beyond this, you can read the README files, send us patches, ask on the mailing list libreoffice@lists.freedesktop.org (no subscription required) or poke people on IRC #libreoffice-dev on irc.freenode.net - we're a friendly and generally helpful mob. We know the code can be hard to get into at first, and so there are no silly questions.