Age | Commit message (Collapse) | Author |
|
NotebookBar is a child of a BorderWindow, which is an unusual parent
for a widget, special handling is needed in that case to get updated
when Settings change
Change-Id: I1eca5188cb3aca974281987b7b3619b77bb5f26a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147008
Tested-by: Caolán McNamara <caolanm@redhat.com>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
...so that the reported numbers add up if you specify both in SAL_LOG. Also
make the code look more symmetric.
Change-Id: I8b24dbe7cfa4d7aaebd2069db87a4e9d5fe6e3f0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147017
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
it has an empty size of one pointer, so it saves no memory to use
unique_ptr.
Need to fix the const-ness of some methods in OInterfaceContainerHelper4
Change-Id: I0c0c28a228ccfe0e97174fbc83555059fc351b3c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147007
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
it is already a moveable type
Change-Id: If149c051365453ea9fe77c030438f3dfc799428a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146995
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: Id55c139cfcc55e18811fd79e402a78b123f37394
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147015
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
not just the "normal" toolbar, but also the "notebookbar" and
"sidebar" ones. Existing listeners have assume that this is the
case, so match their expectations to get the notebookbar to
track the config when it changes.
Change-Id: Ia6024217ad97374f753e1db6305eda011e42b85d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147010
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
Otherwise it might affect other tests if it hits an assert
Change-Id: I4bf752ed3a77f6e81c81bd3bca66957c6ec44e9e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147011
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
|
|
Change-Id: I3edcb60c793354b4471052e428ef6ac1b93cbdd5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147005
Tested-by: Xisco Fauli <xiscofauli@libreoffice.org>
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
|
|
Change-Id: I7e9a95d093573d786b97f79f9f3b1f18c424fd8e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146973
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Once the table is processed, the fact that we had a dummy paragraph
is no longer relevant to the section. So, after carefully figuring
out that we have had some other paragraph in the main text body,
clear the dummy status used to control bRemove.
This fixes the problem of adding an empty paragraph each round-trip.
Unfortunately, this would still fail if for example there was only
another table following the first one. Well, it wouldn't fail that
badly because the first save would add an empty paragraph,
and then following saves would use that single empty paragraph
as the one that resets things. So we always have at least one CR
following a table, but at least they aren't multiplying.
Unfortunately this isn't at all clean, because as soon as
the table starts, we no longer know that it is the first
paragraph in the section. (The other table paragraphs
and potentially header, comment, footnote, shape etc
can all set IsFirstParagraphInSection to off.
Basically, most flags are completely useless since
they are not stacked in any way. So we are left with
a multitude of conditions to check for everything.
Change-Id: Ic6a9795a6c529f8b5dd4f5d1cccc89db01b03d28
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146955
Tested-by: Jenkins
Reviewed-by: Justin Luth <jluth@mail.com>
|
|
Change-Id: I04d740cc0fcf87daa192a0a6af34138278043a19
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146905
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
This reverts commit 304ebfad5193c857e4edf18cb05d61b6ccc1f7d0. As mst pointed
out on IRC, "LO does not ship this service, it's only provided by Saxon
extension".
Change-Id: Iafb416f3a3385345fd74cf76af4e9f600ff8eb79
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146975
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
Otherwise it might affect other tests if it hits an assert
Change-Id: If1d0226860f4befe7f531fda7260c8b4147f2079
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146606
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
|
|
Change-Id: I4851fca7e9f4433bda79b86a0d5cc7842ff45bd3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146994
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: I9e308eee9534297b7257185d6b5f244d4fa86178
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146972
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: I7cad64f9031dd05e08321110ec670d3c744f03c0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146971
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: Ifc0afe5c04145378b5fe32b12791c774d96f8a9c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146903
Tested-by: Jenkins
Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
|
|
Change-Id: I46848169f9376588e91d9684e47f388074c41493
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146997
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
In repeat callback, if we didn't see a mouse up, but find that the mouse
is no longer pressed at this point, then bail
Change-Id: I6e5d1d7201065fadcc2242fd52323ffb56766383
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146947
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
after
commit 756185b5795c95180d32d02abfbd65951779b40e
Author: Noel Grandin <noel.grandin@collabora.co.uk>
Date: Mon Feb 13 09:06:02 2023 +0200
osl::Mutex->std::mutex in PersistentPropertySet
Change-Id: Ie52432ea1566b840bd88692f00f4753eea7896f7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146998
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Add ExportAsFixedFormat VBA function for calc.
Works fine with Workbook/Worksheet/Range objects
Optional parameters:
- Type: works but only with xlTypePDF. (xlTypeXPS not supperted by LO)
- FileName: works but not clear the xlQualityStandard or xlQualityMinimum real value,
so just used the lossless export in case of xlQualityStandard and 70% JPEG compression quality
for xlQualityMinimum.
- IncludeDocProperties: works
- IgnorePrintAreas: TODO
- From: works
- To: works
- OpenAfterPublish: works
- FixedFormatExtClassPtr: TODO?
Change-Id: I128fd880a82a5dd315897496c6f21bb9a7c2270b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146512
Tested-by: Jenkins
Reviewed-by: Balazs Varga <balazs.varga.extern@allotropia.de>
|
|
Change-Id: I811a3b562ead942c98705da29774b77c593eabc4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146828
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
|
|
Change-Id: I0b92e2a94060549c39df7d08a6409518252fc757
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146970
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
The bugdoc had a non-empty paragraph after the floating table, we
painted that text on both page 1 and page 2, while only page 2 is
expected.
We want that paragraph to be on both pages, but we want to split it
before the first char, so apart from providing a place to serve as an
anchor, it should be invisible on page 1.
Fix the problem by extending SwTextFrame::FormatEmpty() to consider the
master anchor text frame as empty in case it has no text, just
intersects with a fly frame.
Also improve SwTextFrame::HasNonLastSplitFlyDrawObj() a bit, so it
returns early when the own and the follow offset is not the same. These
are cheap checks and some callers already did it before iterating over
all the draw objects of the text frame, but other callers didn't do
this. Now we check for this consistently, everywhere.
Change-Id: I4b399ae3f9e9f364c61d977359f6c9b16c648629
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146969
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins
|
|
but the old did
Change-Id: I59ebd4d5974c5d67c4ac572b091febed879fc290
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146948
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
...for CppunitTest_sw_core_layout_flycnt newly introduced in
995198bfff4ae8abaf2129fe99d9f8ef899a4f25 "sw floattable: handle table-in-fly in
SwFrame::GetNextFlyLeaf()"
Change-Id: If006a912d365642181b0bc80dc21c55d42214e87
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146967
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
Its invariant was already documented, but it wasn't mentioned that the
UI's bibliography entry is called an authority field internally.
Change-Id: I55a946a5bdb59e8d6e1def54b16d0c986e531c34
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146942
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
|
|
Change-Id: If76feb51f0d2f187603fb1af7c27bbe3391b645b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146944
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: Id92161815cd1f336c030aa4491e67a84aaddeb87
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146943
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
...with --with-latest-c++,
> In file included from vcl/qt6/QtMenu.cxx:10:
> In file included from vcl/qt6/../qt5/QtMenu.cxx:10:
> In file included from vcl/inc/qt6/QtMenu.hxx:10:
> In file included from vcl/inc/qt6/../qt5/QtMenu.hxx:12:
> In file included from vcl/inc/salmenu.hxx:24:
> In file included from include/vcl/menu.hxx:23:
> In file included from ~/llvm/inst/bin/../include/c++/v1/memory:898:
> In file included from ~/llvm/inst/bin/../include/c++/v1/__memory/shared_ptr.h:31:
> ~/llvm/inst/bin/../include/c++/v1/__memory/unique_ptr.h:63:19: error: invalid application of 'sizeof' to an incomplete type 'QMenu'
> static_assert(sizeof(_Tp) >= 0, "cannot delete an incomplete type");
> ^~~~~~~~~~~
> ~/llvm/inst/bin/../include/c++/v1/__memory/unique_ptr.h:297:7: note: in instantiation of member function 'std::default_delete<QMenu>::operator()' requested here
> __ptr_.second()(__tmp);
> ^
> ~/llvm/inst/bin/../include/c++/v1/__memory/unique_ptr.h:263:75: note: in instantiation of member function 'std::unique_ptr<QMenu>::reset' requested here
> _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX23 ~unique_ptr() { reset(); }
> ^
> vcl/inc/qt6/../qt5/QtMenu.hxx:40:7: note: in instantiation of member function 'std::unique_ptr<QMenu>::~unique_ptr' requested here
> class QtMenu : public QObject, public SalMenu
> ^
> /usr/include/qt6/QtCore/qmetatype.h:2331:47: note: in implicit destructor for 'QtMenu' first required here
> reinterpret_cast<S *>(addr)->~S();
> ^
> /usr/include/qt6/QtCore/qmetatype.h:2370:41: note: in instantiation of member function 'QtPrivate::QMetaTypeForType<QtMenu>::getDtor' requested here
> /*.dtor=*/ QMetaTypeForType<T>::getDtor(),
> ^
> /usr/include/qt6/QtCore/qmetatype.h:2480:48: note: in instantiation of static data member 'QtPrivate::QMetaTypeInterfaceWrapper<QtMenu>::metaType' requested here
> return &QMetaTypeInterfaceWrapper<Ty>::metaType;
> ^
> /usr/include/qt6/QtCore/qmetatype.h:2537:16: note: in instantiation of function template specialization 'QtPrivate::qTryMetaTypeInterfaceForType<(anonymous namespace)::qt_meta_stringdata_QtMenu_t, QtPrivate::TypeAndForceComplete<QtMenu, std::integral_constant<bool, true>>>' requested here
> QtPrivate::qTryMetaTypeInterfaceForType<Unique, T>()...
> ^
> workdir/CustomTarget/vcl/qt6/QtMenu.moc:106:5: note: in instantiation of variable template specialization 'qt_incomplete_metaTypeArray<(anonymous namespace)::qt_meta_stringdata_QtMenu_t, QtPrivate::TypeAndForceComplete<QtMenu, std::integral_constant<bool, true>>, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false>>, QtPrivate::TypeAndForceComplete<QtMenuItem *, std::integral_constant<bool, false>>, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false>>, QtPrivate::TypeAndForceComplete<QtMenuItem *, std::integral_constant<bool, false>>, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false>>, QtPrivate::TypeAndForceComplete<QtMenuItem *, std::integral_constant<bool, false>>, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false>>, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false>>, QtPrivate::TypeAndForceComplete<QAbstractButton *, std::integral_constant<bool, false>>>' requested here
> qt_incomplete_metaTypeArray<qt_meta_stringdata_QtMenu_t,
> ^
> vcl/inc/qt6/../qt5/QtMenu.hxx:23:7: note: forward declaration of 'QMenu'
> class QMenu;
> ^
Change-Id: I4b4a227411c380e97d4c357708009c5905cef44a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146949
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
("instantiation of XSLT 2.0 transformer service failed" would mean that it
throws an exception, not that xTransformer would be null)
Change-Id: I8994c4b8d1c7ade8d5c7ef93569315d45fc7265d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146950
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
The theMacroExpander operations should never throw, so better leave uncaught any
exceptions that would happen after all, rather than silently swallowing them.
Change-Id: Ic5160a69e7cd7412c91ae3589b3dc89f6fe4c43b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146951
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
Change-Id: I35098e687eea832c075f68861e04be7b492ed25e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146966
Tested-by: Jenkins
Reviewed-by: Kohei Yoshida <kohei@libreoffice.org>
|
|
When starting a pargraph, we already had a clause to avoid
deferring page and column breaks when we were in a shape
or a comment. These clauses are also necessary
in the other sections of the code where we defer these breaks.
The provided test proves the two shape cases in lcl_utext.
I just took IsInComments along for the ride,
as it certainly would apply in that case as well.
make CppunitTest_sw_ooxmlexport18 CPPUNIT_TEST_NAME=testTdf153592_columnBreaks
ooxmlexport4's testTdf81345_045Original proves that it is
also needed in lcl_text. However, it is such a complex document
that I wasn't confident that a unit test would be stable enough.
Change-Id: I2de15341d3e756bf47fcd85b868a849c8a2419cd
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146939
Tested-by: Jenkins
Reviewed-by: Justin Luth <jluth@mail.com>
|
|
* Update helpcontent2 from branch 'master'
to cd49917023bc58662fa1c6be7294f66955f04525
- Rename Extension Manager to Extensions
Follow-up to core commit ef3c81d0fca9c8f80fd0d4e4025c37a114528344
Change-Id: I904f88bd184fb4ea10eb050c21d40041494e2e33
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/146952
Tested-by: Jenkins
Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
|
|
Change-Id: I8d015bf1435c6b3becd40ffd9056b9906a6dd19b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146938
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: I218460fac22e65f583a545d41720b0301b67c502
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146937
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: I587c742957da0bb40ff858180f27b62549ebadbf
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146912
Tested-by: Jenkins
Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
|
|
Reformulate error messages for headings whose outline levels
are not in sequence.
UX cleanup: Add missing periods to error messages.
Change-Id: I62b8f7af79460b644fae20dd521a160907605b76
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146807
Reviewed-by: Seth Chaiklin <sdc.blanco@youmail.dk>
Tested-by: Jenkins
Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
|
|
...after 756185b5795c95180d32d02abfbd65951779b40e "osl::Mutex->std::mutex in
PersistentPropertySet" caused
> ucb/source/core/ucbstore.cxx:1913:75: error: too few arguments to function call, expected 2, have 1
> m_pPropertyChangeListeners->getContainer( rEvent.PropertyName );
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
> include/comphelper/multiinterfacecontainer4.hxx:71:50: note: 'getContainer' declared here
> inline OInterfaceContainerHelper4<listener>* getContainer(std::unique_lock<std::mutex>& rGuard,
> ^
> ucb/source/core/ucbstore.cxx:1921:66: error: too few arguments to function call, expected 2, have 1
> m_pPropertyChangeListeners->getContainer( OUString() );
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
> include/comphelper/multiinterfacecontainer4.hxx:71:50: note: 'getContainer' declared here
> inline OInterfaceContainerHelper4<listener>* getContainer(std::unique_lock<std::mutex>& rGuard,
^
Change-Id: Ie13c7bf17d066607ec7095b3e45ab7d6ecea1cb6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146940
Tested-by: Stephan Bergmann <sbergman@redhat.com>
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
...following up on d552b4a549d614a03aa9328e017dec27bd3ff41e "Enable opening of
downloaded fonts only in ForKit in Online" and
9eaa1325a014ff76acd3290752f842ed6bad89ac "Only package the external/cairo
library that is named the same as the SONAME"
Change-Id: Ifec89813140dcca5eea13943a12883febb6c5cd1
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146934
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
...even though XSLTFilter::expandUrl did that unconditionally ever since the
function's introduction in 3218e6592694da70760c1a42b7c562c6864799b2
"INTEGRATION: CWS xsltfilter09".
Change-Id: I08022091bc15048478c08e3f0f5cfffbb954df5d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146911
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
Change-Id: Ie2aa4fe48da2362ff1a88fa44a51bed498a4f432
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146935
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
Change-Id: Id1e76a7ed728beb359e0944b51de84bf720490ec
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146910
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
change from static to dynamic was hidden away in commit:
commit d552b4a549d614a03aa9328e017dec27bd3ff41e
Date: Tue Sep 20 16:07:14 2022 +0300
Enable opening of downloaded fonts only in ForKit in Online
Change-Id: Ia6e636fdbdac31f6cf746fc70c892d71462a9619
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146895
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
Change-Id: Ic86305f3d16148925c7753200a687f36f08a6516
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146936
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: I1260503e12516b3b29d34a317ca3a58cc314b608
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146920
Reviewed-by: Seth Chaiklin <sdc.blanco@youmail.dk>
Tested-by: Jenkins
|
|
Change-Id: Ie8673462fac30132f4e6b3cf7792d8554bf4f14a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146901
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: I08a059998cb13f12ad6183ee54754525386dfcd4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146853
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: If88ac207083a928e2315e2ec1c7ac40951fb2a6d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146851
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|