summaryrefslogtreecommitdiff
path: root/vcl/source/edit
AgeCommit message (Collapse)Author
2023-08-11clang-tidy bugprone-parent-virtual-call in vclNoel Grandin
Change-Id: I270bb35f577cc1ee56233c585665478cbaab9085 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155616 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-06-28Drop i18nutil::SearchOptionsMike Kaganski
It was mostly unused by now, only remained in a couple of function arguments, where callers actually passed SearchOptions2, and where internally it was converted back to SearchOptions2. Change-Id: Ib188ec3bf0de6d1f70a04eb90fb3a577df8b3d98 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153687 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-06-07tdf#155376 partially convert SvCTLOptions to officecfgNoel Grandin
When accessibility is enabled, Calc will add tens of thousands of listeners. We then spend a significant chunk of time creating SvCTLOptions objects (attached to ImpEditEngine) and adding and removing those objects from the related listener lists. But the required information is already globally cached by the officecfg module, so we can avoid that overhead and just fetch it directly from officecfg. Change-Id: I7ff55fd7c4926866eb7086812275ba8bd6e84c75 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152645 Tested-by: Jenkins Reviewed-by: Patrick Luby <plubius@neooffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-04-02Avoid conversions between OUString and OString in VCLMike Kaganski
Standardize on OUString, which is the main internal string class. Convert from/to OUString only when communicating with respective external APIs. Removes about 200 conversions from the code. Change-Id: I96ecee7c6fd271bb76639220e96d69d2964bed26 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149930 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-01-12Resolves: tdf#107625 make ctrl+tab act like tab when tab is an input charCaolán McNamara
Change-Id: Ic3d698920fc94df1adf142e4cbab9725ae45273c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145193 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-11-03Related: tdf#149932 honour PANGO_UNDERLINE_DOUBLE for preedit underlineCaolán McNamara
we already have support for double underline so that's an easy add Change-Id: I1bba5620038e396765bd79050ff6a520096f9476 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/142223 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-10-18tdf#143148 Use pragma once in vcl/source/editHemant Kumar Singh
Change-Id: I62be40614baf489433a53f19397737031d1f217b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/141509 Tested-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org> Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
2022-09-21use more string_view in vclNoel Grandin
Change-Id: I66f96a305bb095716023ae1e565950971826bce0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/140242 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-09-19Rename MouseNotifyEvent to NotifyEventTypeSamuel Mehrbrodt
Also contains keyboard and focus events, not only mouse events Change-Id: Iec1d6c341b01a489ba80fe9634ea3579afb02ea9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139970 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de>
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-05vcl: Rename Gesture event to GesturePanPovilas Kanapickas
We have 5 gesture types: GestureZoom, GestureRotate, Gesture (for panning), Swipe and LongPress. For consistency all of these will use Gesture as a prefix to reduce confusion and for easier grepping throughout the codebase. Change-Id: I8b9e245d011203a19c1172f9833c172f65382ca9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139241 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-08-31cid#1500647 silence Resource leakCaolán McNamara
Change-Id: I3f3a3cb5f31aff28711786af18d4bedcbd8e9ab8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139109 Tested-by: Caolán McNamara <caolanm@redhat.com> Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-08-26cid#1509211 silence Explicit null dereferencedCaolán McNamara
Change-Id: I5f1c1d061a59b3edaa62b988fcbbc8dd6be0093b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138860 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-08-09move scrbar.hxx to vcl/toolkitCaolán McNamara
Change-Id: I77038cbf500976703ad41365da9a675a698863a2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137979 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-07-13clang-tidy modernize-pass-by-value in vclNoel Grandin
Change-Id: I9ddb786eb88213c53cf53067ced6899ca40ac6e8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137000 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-05-13add SvStream::ReadLine(OStringBuffer... to reduce OString allocationNoel Grandin
and use it where possible Change-Id: I3efc7a642f73661ce606c917c0323ba9948521c6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134265 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-05-01don't use an empty fontname, reuse the default from the virtual devCaolán McNamara
zero size font is odd, but that's as it was already Change-Id: Ib430f2ff2a53c21dc7d15d11377762ab336a61e0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133660 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2021-12-14Stream::Tell returns sal_uInt64Noel Grandin
Change-Id: I02e49d4f59c17a9868c4111ac91b5dd2715e689c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126630 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-12-13tdf#145764 - Change behaviour of BASIC IDE Home KeyAndreas Heinisch
Pressing the Home Key moves the cursor to the first non-space character in the line, whereas pressing it at the first non-space character moves it to the beginning of that line Follow up of: I8eabb6d01b1a4de0d24bf064f82c83342ca91396 Change-Id: I9f4f0b2b602fa0158488959c2e2029f5da315771 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126702 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2021-12-11tdf#145764 - BASIC IDE Home Key: move cursor to the beginning/first characterAndreas Heinisch
Pressing the Home Key moves the cursor to the first character in the line, whereas pressing it at line start moves it to the first character in that line. Change-Id: I8eabb6d01b1a4de0d24bf064f82c83342ca91396 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126548 Tested-by: Jenkins Reviewed-by: Andreas Heinisch <andreas.heinisch@yahoo.de>
2021-11-23O[U]String::replaceAt overloads that take string_viewNoel Grandin
which results in lots of nice string_view improvements picked up by the plugins Change-Id: Ib0ec3887816b3d4436d003b739d9814f83e244b2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125657 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-09-30loplugin:constmethod handle more casesNoel Grandin
remove some of the naming limitations, and handle pointer parameters better. I only let the plugin run up till vcl/ Change-Id: Ice916e0157031ab531c47f10778f406b07966251 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122892 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-09-28gives names to all the Idles and TasksNoel Grandin
enforce it by making the constructor parameter non-default. Change-Id: I321543e4dcf15ea0a43ad8cce91d2f8dc22df6ec Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122766 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-09-28vcl: rename OutDevState to StackChris Sherlock
I have moved the header file to include/vcl/rendercontext as this will eventually be part of the RenderContext split from OutputDevice. State and associated enums have also been moved to the vcl namespace. I have also moved ComplexTextLayoutFlags into the vcl::text namespace. Change-Id: I0abbf560e75b45a272854b267e948c240cd69091 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121524 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2021-09-11clang:optin.performance.Padding in vclNoel Grandin
Excessive padding in 'class ImplAccelEntry' (13 padding bytes, where 5 is optimal). Excessive padding in 'struct SalQueryCharPositionEvent' (14 padding bytes, where 6 is optimal). Excessive padding in 'struct SalFrameState' (8 padding bytes, where 0 is optimal). Excessive padding in 'struct BitmapBuffer' (10 padding bytes, where 2 is optimal). Excessive padding in 'class GraphicAttr' (10 padding bytes, where 2 is optimal). Excessive padding in 'struct ImplPostEventData' (12 padding bytes, where 4 is optimal). Excessive padding in 'class TETextPortion' (10 padding bytes, where 2 is optimal). Excessive padding in 'struct MapMode::ImplMapMode' (11 padding bytes, where 3 is optimal). Change-Id: I41801e0fd676981cc9f386d814fe2f0ea670a673 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121925 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-08-30tdf#74702 vcl: introduce GetSystemTextColor()Chris Sherlock
Also rename DrawFlags to SystemDrawColorFlags, added a unit test. Change-Id: I3cb74b278e43561d1055b3b55b9730cdbdea51aa Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113559 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2021-08-18undo changes to TextAlignCaolán McNamara
revert commit 8689bd5490b473a7ffb149bbe5f7f0683f679c72 Author: Caolán McNamara <caolanm@redhat.com> Date: Thu Jul 29 20:49:29 2021 +0100 convert TextAlign to scoped enum lets leave this as it always was Change-Id: Id4d2a5644974cdd2b0ed6d361d5c52629674d057 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120626 Tested-by: Caolán McNamara <caolanm@redhat.com> Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2021-07-30convert TextAlign to scoped enumCaolán McNamara
Change-Id: Id2c466eacb44f0ea6adba75a0ac0be8be8e7ed4c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119682 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2021-06-24Delete copy ctors/assignments for DLLEXPORT classMike Kaganski
... instead of including <vcl/window.hxx> where it is not directly used. For details, see commit ee405fb2ef36337851801f1bd34411c606d55988. This reverts commits 6aa6b6c814b0353768fa7276d1f11d69a0ebedba and beeb19b361213d22247e5cb776dc522cbf190ca8. Change-Id: Ia91f3c303e1df0a698d06cdef1d8e64e99d781ef Reviewed-on: https://gerrit.libreoffice.org/c/core/+/117751 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2021-05-27TETextPortion can be allocated inside the vectorNoel Grandin
Change-Id: Ib54b94f5dcb2a9cf422ef30db99926f200b749c9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116261 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-05-18cid#1484904 Dereference after null checkCaolán McNamara
Change-Id: I4680b1d45eb9770b1891fa23e88be0d18ba47658 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115741 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2021-05-17split OutputDevice from WindowNoel Grandin
as part of a longer-term goal of doing our widget rendering only inside a top-level render- context. I moved all of the OutputDevice-related code that existed in vcl::Window into a new subclass of OutputDevice called WindowOutputDevice. Notes for further work (*) not sure why we are getting an 1x1 surface in SvpSalGraphics::releaseCairoContext, but to fix it I clamp the size there (*) might have to dump VCLXDevice, and move it's code down into VCLXWindow and VCLXVirtualDevice (*) can we remove use of VCLXDevice in other places, in favour of just talking to the VCL code? Change-Id: I105946377f5322677d6f7d0c1c23847178a720b6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113204 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-05-14Fix assertion in vcl/textengJulien Nabet
Insert macro from https://bugs.documentfoundation.org/show_bug.cgi?id=94024 and start I got this bt: 0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50 1 0x00007f39e2b61537 in __GI_abort () at abort.c:79 2 0x00007f39e2b6140f in __assert_fail_base (fmt=0x7f39e2cca128 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x7f39db29740e "index >= 0 && static_cast<sal_uInt32>(index) < static_cast<sal_uInt32>(getLength())", file=0x7f39db27f997 "/home/julien/lo/libreoffice/include/rtl/ustring.hxx", line=794, function=<optimized out>) at assert.c:92 3 0x00007f39e2b70662 in __GI___assert_fail (assertion=0x7f39db29740e "index >= 0 && static_cast<sal_uInt32>(index) < static_cast<sal_uInt32>(getLength())", file=0x7f39db27f997 "/home/julien/lo/libreoffice/include/rtl/ustring.hxx", line=794, function=0x7f39db2bada5 "sal_Unicode rtl::OUString::operator[](sal_Int32) const") at assert.c:101 4 0x00007f39da1fe3c4 in rtl::OUString::operator[](int) const (this=0x846da80, index=-1) at include/rtl/ustring.hxx:794 5 0x00007f39da59acdc in TextEngine::GetWord(TextPaM const&, TextPaM*, TextPaM*) (this=0x8901e80, rCursorPos=..., pStartOfWord=0x7ffd1f0b7360, pEndOfWord=0x0) at vcl/source/edit/texteng.cxx:2375 6 0x00007f39c4ac5c5c in basctl::EditorWindow::RequestHelp(HelpEvent const&) (this=0x8581060, rHEvt=...) at basctl/source/basicide/baside2b.cxx:370 7 0x00007f39da3b8f91 in ImplHandleMouseHelpRequest(vcl::Window*, Point const&) (pChild=0x8581060, rMousePos=Point = {...}) at vcl/source/window/winproc.cxx:181 (gdb) frame 4 4 0x00007f39da1fe3c4 in rtl::OUString::operator[] (this=0x846da80, index=-1) at include/rtl/ustring.hxx:794 794 assert(index >= 0 && static_cast<sal_uInt32>(index) < static_cast<sal_uInt32>(getLength())); (gdb) p this $1 = (const rtl::OUString *) 0x846da80 (gdb) p *this $2 = "\t\t" (gdb) frame 5 5 0x00007f39da59acdc in TextEngine::GetWord (this=0x8901e80, rCursorPos=..., pStartOfWord=0x7ffd1f0b7360, pEndOfWord=0x0) at vcl/source/edit/texteng.cxx:2375 2375 if (aBoundary.endPos < pNode->GetText().getLength() && u_charType(pNode->GetText()[aBoundary.endPos - 1]) == U_CONNECTOR_PUNCTUATION) (gdb) p aBoundary.endPos $3 = 0 (gdb) p pNode->GetText() $4 = "\t\t" (gdb) p pNode->GetText().getLength() $5 = 2 Change-Id: Ic94362b26cb0ebb0975c42fe5a31724ff485aad0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115546 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-05-02sal_uLong->sal_Int32 in TextHintNoel Grandin
Change-Id: If8125e1343b74c2216fb8e9f9e1e16669062de14 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115004 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-04-06Fix --disable-pch build: missing includeMike Kaganski
... after b1253218e428640c0079916ddd5688c8fbb7171e Change-Id: I62f4c06d804258ed25a0906510ab215e8a8482e1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113704 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2021-03-09this should be dynamic_castNoel
accidentally broken with commit e4e80ed313882f9ea1b309054e5aa3e839586516 Date: Sat Mar 6 20:40:58 2021 +0200 loplugin:staticdynamic now with extra salt Change-Id: If5946d7f65eb51c9785e7ad2e6def0ebd56fd9cc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112198 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-03-09fetch/set/clear primary selection without intermediate vcl::WindowCaolán McNamara
the intermediate layer doesn't do anything useful Change-Id: I00564f43db8914445ea4013c6f387c7d7c783427 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112170 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2021-03-07loplugin:staticdynamic now with extra saltNoel
because it wasn't quite there yet - now checks for casts with and without const, because const doesn't really matter here. Change-Id: I319025b2095a803fcaad2a7a696d2730b7fd2f81 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112098 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-02-22forward declare some things and avoid includesCaolán McNamara
Change-Id: I8bf6e23904c932de646aa84fffab1b5549dbdf31 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111349 Tested-by: Caolán McNamara <caolanm@redhat.com> Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2021-02-19loplugin:refcounting in vclNoel
Change-Id: Ieca3dd33a7ae40c3f7b8ba30f763d71a548cd144 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111171 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-01-28simplify code, use more subView()Noel
Change-Id: I569c7f34acbdf8451cd5c9acf1abd334637072d1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110051 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-01-28remove unused SelectionOptions valuesNoel Grandin
Focus is dead since commit 6a22fc81e219667566b9cc3ed5e9de1898c1fe6b Date: Thu Apr 23 20:49:05 2020 +0200 loplugin:unusedmethods Invert seems to have dead since initial import Change-Id: I9f03a9cd9abef6d056331ead47bfff5ffcef512b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110044 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-01-12transparency->alpha in tools::ColorNoel
this just changes the Get/Set methods, the constructor and internal representation of Color is not changed. Change-Id: Idb6e07cc08bbaa5bd55b6bd4b585e648aef507b6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/109074 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-11-11loplugin:stringviewNoel
Add new methods "subView" to O(U)String to return substring views of the underlying data. Add a clang plugin to warn when replacing existing calls to copy() would be better to use subView(). Change-Id: I03a5732431ce60808946f2ce2c923b22845689ca Reviewed-on: https://gerrit.libreoffice.org/c/core/+/105420 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-10-28convert some more long -> tools::LongNoel
grepping for stuff in template params this time Change-Id: Ia37bfd85480b3a72c3c465489581d56ad8dde851 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104855 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-10-28std::set->o3tl::sorted_vector in vclNoel Grandin
Change-Id: Ie486b629b4074da5121b55c76965aeb8ea057f31 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104904 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-10-19use tools::Long in vclNoel
Change-Id: Ice1055021e8568634e9a66ba89d3bb4ef4e731df Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104522 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-09-02move Edit into toolkit only headersCaolán McNamara
Change-Id: If51bf7143116721e8f16272cf8aff797651d5ed1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101880 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2020-08-29loplugin:unusedmethodsNoel Grandin
Change-Id: I2be47d2faf883b519f693e2d5ad58a5ab111849f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101629 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-08-29Fix typo in codeAndrea Gelmini
It passed "make check" on Linux Change-Id: I4c8cdb74fe926f3269132d5cd0ad7c21cc2c74ed Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101612 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>