summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-09-06cid#1500587 silence Dereference before null checkCaolán McNamara
Change-Id: I3672d8266b339f06d5c75285fb9582f331a07c95 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139518 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-09-06cid#1500607 silence bogus Use after freeCaolán McNamara
Change-Id: Ibcb52aad5d47635e7096025d5b31de1b81503ae6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139517 Tested-by: Caolán McNamara <caolanm@redhat.com> Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-09-06cid#1509195 silence Explicit null dereferencedCaolán McNamara
Change-Id: I9a7cbdb0e2cc4a5624d78dbb88c7f5dacc68f309 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139516 Tested-by: Caolán McNamara <caolanm@redhat.com> Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-09-06cid#1509284 DMI: Dubious method invocationCaolán McNamara
Change-Id: I1fd1f710ae2a6b8ebc9506a56d522006509fc935 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139515 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-09-06cid#1509199 silence Constant expression resultCaolán McNamara
rename IsEqualData -> HasSameData Change-Id: I6294c847c284888e5537e04dc4f84314586c4b85 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139514 Tested-by: Caolán McNamara <caolanm@redhat.com> Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-09-06A ColRowName (label) is a QuotedLabel is a SingleQuotedEike Rathke
Hence a ' is not escaped by \' but by '' doubling it. See also ODFF 5.10 Quoted Label https://docs.oasis-open.org/office/OpenDocument/v1.3/os/part4-formula/OpenDocument-v1.3-os-part4-formula.html#__RefHeading__1017950_715980110 Apparently this was always wrong and even stored in files and never correctly read/compiled back. Change-Id: I94bdb7d1fdffe9bbd77cf443883dd76637be981b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139491 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins
2022-09-06tdf#142031: sc: Add UItestXisco Fauli
Change-Id: Icfe8229a0079bbe5be8394883299b2f959a74efd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139489 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2022-09-06vcl: Drop unused SalGraphics::CreateFontSubset() argumentKhaled Hosny
pWidths is always nullptr. Change-Id: I1c666f146865786269e9513cbb6c8ffdc7df96e7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139461 Tested-by: Jenkins Reviewed-by: خالد حسني <khaled@aliftype.com>
2022-09-06Use of uninitialized bMatchedRangesWereClampedStephan Bergmann
...introduced in a740176009411d21e20d7c11097af1d8812d251d "tdf#150749 Find and replace on very large sheet", causing > sc/source/ui/view/viewfun2.cxx:2068:94: runtime error: load of value 52, which is not a valid value for type 'bool' > #0 in ScViewFunc::SearchAndReplace(SvxSearchItem const*, bool, bool) at sc/source/ui/view/viewfun2.cxx:2068:94 > #1 in ScTabViewShell::ExecSearch(SfxRequest&) at sc/source/ui/view/tabvwshe.cxx:264:21 > #2 in SfxStubScTabViewShellExecSearch(SfxShell*, SfxRequest&) at workdir/SdiTarget/sc/sdi/scslots.hxx:1461:1 > #3 in SfxDispatcher::Call_Impl(SfxShell&, SfxSlot const&, SfxRequest&, bool) at sfx2/source/control/dispatch.cxx:254:9 > #4 in SfxDispatcher::Execute_(SfxShell&, SfxSlot const&, SfxRequest&, SfxCallMode) at sfx2/source/control/dispatch.cxx:753:9 > #5 in SfxBindings::Execute_Impl(SfxRequest&, SfxSlot const*, SfxShell*) at sfx2/source/control/bindings.cxx:1060:22 > #6 in SfxBindings::Execute_Impl(unsigned short, SfxPoolItem const**, unsigned short, SfxCallMode, SfxPoolItem const**, bool) at sfx2/source/control/bindings.cxx:964:5 > #7 in SfxBindings::ExecuteSynchron(unsigned short, SfxPoolItem const**) at sfx2/source/control/bindings.cxx:863:12 > #8 in SvxSearchDialog::CommandHdl_Impl(weld::Button&) at svx/source/dialog/srchdlg.cxx:1362:19 > #9 in SvxSearchDialog::LinkStubCommandHdl_Impl(void*, weld::Button&) at svx/source/dialog/srchdlg.cxx:1262:1 during UITest_search_replace Change-Id: I05cd21ed881e120807f9859f6724c5023a96a989 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139488 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-09-06vcl: Drop now unused SalGraphics::GetGlyphWidths()Khaled Hosny
Change-Id: Iec8974d6fc67d9d599c5e92aa325225963da0021 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139459 Tested-by: Jenkins Reviewed-by: خالد حسني <khaled@aliftype.com>
2022-09-06vcl: Drop now unused PDFFontCacheKhaled Hosny
Change-Id: I7959103f43d993e39bff03e7c71289c37a5cfa3d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139458 Tested-by: Jenkins Reviewed-by: خالد حسني <khaled@aliftype.com>
2022-09-06vcl: Use GetGlyphWidth() when emitting system fontsKhaled Hosny
Change-Id: I152afc51b771d09c8b1d7a220f4706afb9407337 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139457 Tested-by: Jenkins Reviewed-by: خالد حسني <khaled@aliftype.com>
2022-09-06vcl: Add LogicalFontInstance::GetGlyphWidth()Khaled Hosny
To be used it in PDF export where we need the unshaped glyph width to calculate PDF glyph adjustments. Getting the advances from HarfBuzz instead of reading them font the font makes sure we are always getting the correct values (e.g. when using variable fonts, though we still don’t correctly embed them in PDF). Change-Id: I91365a1580d3848c2f93044adcb366fd01173155 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139462 Tested-by: Jenkins Reviewed-by: خالد حسني <khaled@aliftype.com>
2022-09-06Remove duplicated ScCharFlags setting in XL grammarsEike Rathke
Change-Id: I0055eeb38ce6de519695675a29f6efccae49612a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139482 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins
2022-09-06fix and simplify opencl COMBIN()Luboš Luňák
Change-Id: I7568e3bb55cab31eb6e9b8644019a465333e8091 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139200 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2022-09-06upgrade openssl-1.1.1qTaichi Haradaguchi
Change-Id: I2317e734f074cf7301a6081cf3d2221beeaf5ad1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139463 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-09-06tdf#150499: sc_uicalc: Add unittestXisco Fauli
Change-Id: Id2aae130c3b9ede1fe88893d035a37b82b0964f4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139478 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2022-09-06Resolves: tdf#150307 Broadcast missing ScAreasChanged hint on sheet deletionEike Rathke
... and Undo. Change-Id: I59413d5470294c415c51e7d7ada9134f4173c872 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139450 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins
2022-09-06Replace leftover use of StarSymbol with OpenSymbolTor Lillqvist
Change-Id: I2cfc88dfbdb0d5d4f296dea6f5b72122a0af7965 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139476 Tested-by: Tor Lillqvist <tml@collabora.com> Reviewed-by: Tor Lillqvist <tml@collabora.com> Tested-by: Caolán McNamara <caolanm@redhat.com> Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-09-06opencl MOD() fixesLuboš Luňák
Change-Id: I72c588f714a49ef6ed33657dc30b41ee10ecd5d6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139199 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2022-09-06fix opencl FACT() implementationLuboš Luňák
Change-Id: I5b4525268c574c9edff2f4e8361b2b6d234c50f6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139198 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2022-09-06check parameter count in opencl logical functionsLuboš Luňák
Change-Id: If77bd146bd9eafd54afa1b82203d378ab9cd26d1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139197 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2022-09-06fixes to opencl rounding functionsLuboš Luňák
Change-Id: I5cd99116a7230b8070051cbf6969a1fdd2f7fe62 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139196 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2022-09-06use opencl's built-in PI values instead of hardcoded onesLuboš Luňák
Fixes a sc_subsequent_filters_test error because of =ACOT(-1)/PI() getting slightly miscalculated. Change-Id: I3846553cae55f463c34fba13663cad72c0e60b34 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139195 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2022-09-06fix opencl trigonometric functionsLuboš Luňák
Change-Id: Iacdae9fceff2feb198bd722e7e58e5e6dff5facc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139194 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2022-09-06add missing Calc test file opencl/compiler/precision.odsLuboš Luňák
Should have been included in 35ed13eba1ceb6ddab8a9a72c5ef46ab3af . Change-Id: I3cf1a6b38e9893b5ec4ec4d6ffdfc4bf0ddba065 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139477 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2022-09-06Simplify by using replace instead of replaceAt in loop in sc/compilerJulien Nabet
+ replace ScCompiler::EnQuote which is used only once with its content at this adhoc location Change-Id: I7d72fd573ec9cea06d9b54e9381b4783756cf08e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139452 Tested-by: Jenkins Reviewed-by: Eike Rathke <erack@redhat.com>
2022-09-06tdf#118247 - Correctly handle xlCellTypeConstants parameterAndreas Heinisch
Change-Id: I5cc281d6193bcf03d2da3c594d427ec340c2cfc1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139239 Tested-by: Jenkins Reviewed-by: Andreas Heinisch <andreas.heinisch@yahoo.de>
2022-09-06tdf#150599: sc_filters_test: Add unittestXisco Fauli
Change-Id: Ibc6434b3505276343da0a36c52ab175aefc518ef Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139470 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2022-09-06use more SwPosition::AssignNoel Grandin
part of hiding the internals of SwPosition Change-Id: I7bdc95f27f191e8315b1cd69114601df0c151124 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139442 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-09-06crashtesting: fix DOCX export of forum-mso-en-11199.docxMiklos Vajna
This went wrong in a4432eb0946c0bc775b3d30b634bef5d66544f8d (tdf#104823: support for sdt plain text fields, 2021-11-24), when we started to turn cell SDTs into a field containing the cell text, which now needs to work with redlining, even if the original DOCX file had no fields. The root cause was introduced earlier, in 0c84c60f48cf681daf467c0678a768711f22e5c3 (tdf#77419 DOCX table import: ignore right white space, 2020-01-21), which assumed that goRight(2, select=false) is the opposite of goLeft(1, false) + goLeft(1, true), which is not true for input fields where an input field with 2 chars will select 5 chars (not 1) when you do goLeft(1, true) with a cursor at the right edge of the field (2 chars of content + CH_TXT_ATR_INPUTFIELDSTART + CH_TXT_ATR_INPUTFIELDEND + the field's dummy character itself), as "going left" selects the entire field, not just 1 character. Fix the problem by replacing goRight() with re-positioning the cursor the way it was positioned before trimming whitespace a few lines above. Change-Id: Iaae8878e9801df95d3bc7465d3e8ad12c724a888 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139469 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2022-09-06Rather use copy(1) instead of replaceAt(0, 1, u"")Julien Nabet
Change-Id: Ia4d6980a32a47eb9ddbe63e62468f7ff26ecd293 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139454 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2022-09-06Deduplicate screen rect handlingMike Kaganski
Change-Id: I5aacadff5ada74c6bc83ac698c87bca75e85ba0c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139468 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2022-09-06CppunitTest_slideshow_engine: remove unused includesMiklos Vajna
I forgot to clean these up when I started this suite. Change-Id: I17e31bfff82caa7def00328ca6086b32a999f344 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139467 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2022-09-06use more SwPosition::AssignNoel Grandin
part of hiding the internals of SwPosition Change-Id: I878f32139a82eab4a9f77673ebaadb1f1f1007f2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139441 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-09-06use more SwPosition::AssignNoel Grandin
part of hiding the internals of SwPosition Change-Id: If16a9bd3f01afd57dbb44d80dd14a0f5f9bde9d9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139436 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-09-06Missing initialization of PhysicalFontFace::mbFontCapabilitiesReadStephan Bergmann
Regression introduced with 28c8cddd4218905bca05778dcdbae5911132a096 "vcl: Consolidate PhysicalFontFace::GetFontCapabilities()", causing > vcl/source/font/PhysicalFontFace.cxx:252:10: runtime error: load of value 190, which is not a valid value for type 'bool' > #0 in vcl::font::PhysicalFontFace::GetFontCapabilities(vcl::FontCapabilities&) const at vcl/source/font/PhysicalFontFace.cxx:252:10 > #1 in FreeTypeTextRenderImpl::GetFontCapabilities(vcl::FontCapabilities&) const at vcl/unx/generic/gdi/freetypetextrender.cxx:83:46 > #2 in SvpSalGraphics::GetFontCapabilities(vcl::FontCapabilities&) const at vcl/headless/svptext.cxx:46:30 > #3 in OutputDevice::GetFontCapabilities(vcl::FontCapabilities&) const at vcl/source/outdev/font.cxx:262:24 > #4 in makeShortRepresentativeTextForSelectedFont(OutputDevice const&) at svtools/source/misc/sampletext.cxx:1255:22 > #5 in DrawPreview(FontMetric const&, Point const&, OutputDevice&, bool) at svtools/source/control/ctrlbox.cxx:634:27 > #6 in FontNameBox::CachePreview(unsigned long, Point*) at svtools/source/control/ctrlbox.cxx:785:9 > #7 in FontNameBox::UpdateHdl(Timer*) at svtools/source/control/ctrlbox.cxx:564:5 > #8 in FontNameBox::LinkStubUpdateHdl(void*, Timer*) at svtools/source/control/ctrlbox.cxx:562:1 > #9 in Link<Timer*, void>::Call(Timer*) const at include/tools/link.hxx:111:45 during CppunitTest_toolkit_a11y. Change-Id: I3591c4722410a8c6d1ae539f71a3d8ac37a4d3a3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139464 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-09-06sw: document SwSelPaintRectsMiklos Vajna
This was mostly about the cursor only, but nowadays hosts other overlays as well. Change-Id: I4c43592273e4b996c2d7ed915fa78bd15ea41f98 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139451 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2022-09-06vcl: Create HFNT on WinFontFace when neededKhaled Hosny
I’m seeing frequent CI failures with warnings like: warn:sfx.appl:13336:18148:sfx2/source/appl/app.cxx:147: No DDE-Service possible. Error: 16399 warn:vcl:13336:18148:vcl/win/gdi/salvd.cxx:99: CreateCompatibleDC failed: There are no more files. Lets see if this is causing us to hit the GDI object limit. Change-Id: I1257ac7e701277814b5d17b40192ad3bc81a8e0a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139449 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2022-09-06tdf#147021 Use std::size() instead of SAL_N_ELEMENTS() macroRadhey Parekh
Change-Id: Ic9009eda963f922fc4d2e75a5002026eda63a7aa Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138686 Tested-by: Jenkins Reviewed-by: Hossein <hossein@libreoffice.org>
2022-09-06Related: tdf#150307 Use SfxHintId::ScAreasChanged, tdf#137577 follow-upEike Rathke
... instead of ScTablesRenamed, as ScAreasChanged (confusingly named) was meant exactly for this and also updates the Navigator. Change-Id: I6d90b82e6d5121e69c1a40af369be36544ad1b3b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139453 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins
2022-09-06Revert "vcl: Add LogicalFontInstance::GetUnscaledGLyphWidth()"خالد حسني
This reverts commit fa1835db77b38047d8c3cea7041d38762c329867. Reason for revert: merged too early Change-Id: I7dba2e8fcc06db59b2cbc211a0f4e7d1f209aa05 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139428 Tested-by: Jenkins Reviewed-by: خالد حسني <khaled@aliftype.com>
2022-09-05cid#1500657 silence Resource leakCaolán McNamara
it is pretty ugly stuff though Change-Id: Icf588f44807d136342de6d5425bc41b968fff97f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139445 Tested-by: Caolán McNamara <caolanm@redhat.com> Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-09-05Resolves: tdf#150797 page preview scrolling not updating positionCaolán McNamara
Change-Id: I8b495d755278ce850d69da8b7fb8588a4f111bd1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139444 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-09-05sw XHTML import: fix lost empty paragraphsMiklos Vajna
Plain HTML import ignores empty paragraph, because browsers ignore such paragraphs as well. This has the benefit of layout compatibility, but it breaks the semantics of documents when roundtripping them from Writer's document model to XHTML and back. Fix the problem by disabling this tweak for XHTML: the idea is that when it comes to paragraph / line breaks, XHTML is meant to preserve the semantics of the original document model, even if that results in slight differences in HTML rendering. So in case Writer/ODT doesn't collapse multiple line breaks and browsers/HTML does that, we apply workarounds in the HTML case, but not in the XHTML case. Change-Id: I55de8880503ee2d48fbd7a6af3891f2754f0d172 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139439 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2022-09-05Fix typoAndrea Gelmini
Change-Id: I9d6a047a38c9bb3155ffea55a242143f24f563cf Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139379 Tested-by: Julien Nabet <serval2412@yahoo.fr> Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2022-09-05vcl: Add LogicalFontInstance::GetUnscaledGLyphWidth()Khaled Hosny
To get glyph width in font units (i.e. scaled at font units per EM), and use it in PDF export. First step towards dropping SalGraphics::GetGlyphWidths(). Change-Id: Ic0ef165e8aed6f94caf68bf01ef7ecc0620ce7c7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139448 Tested-by: Jenkins Reviewed-by: خالد حسني <khaled@aliftype.com>
2022-09-05vcl: fontinstance.{cxx,hxx} -> LogicalFontInstance.{cxx,hxx}Khaled Hosny
Every time I need this file, I had to lookup the file name and location. Rename it following the pattern of other font classes and move the header next to their headers. Change-Id: Ia1e3ee4be9375c1110e169c593e1f8e7aad39c76 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139446 Tested-by: Jenkins Reviewed-by: خالد حسني <khaled@aliftype.com>
2022-09-05tdf#147021 Use std::size() instead of SAL_N_ELEMENTS() macrojsala
Also change some integer by std::size_t Change-Id: Ia51b27bb99b8adda576394f9331345cb11149d6c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137274 Tested-by: Jenkins Reviewed-by: Hossein <hossein@libreoffice.org>
2022-09-05Connect new import / export to starmathdante
See: https://gerrit.libreoffice.org/c/core/+/120753 Change-Id: I9b02a4a7b4bc6c132220710573b7672b1a5b1c60 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134163 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>