Age | Commit message (Collapse) | Author | Files | Lines |
|
...as emitted by at least GCC 8.2 with --enable-optimized, by making the buffers
large enough for the (hypothetical) largest values of the various date/time
components
Reviewed-on: https://gerrit.libreoffice.org/66618
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
(cherry picked from commit 113536e974d7ebbbc484b0ef40406f9b4d14e511)
Change-Id: I82e9b08fa099546b2d6f29c702e1440df9e6c6e0
|
|
Change-Id: I1b3fd47a23002673cb81811ebfd0034ca546d837
|
|
which benefits LOOL since we can delay creating the image until
we know the dpi setting of the display we are going to write to.
Achieved by
perl -pi -w -e "s/\bImage\s*\(\s*BitmapEx\s*\((\w+)\s*\)\s*\)/Image\(\1\)/g" $( git grep -lw "BitmapEx" )
followed by
git grep -nP '\bImage\s*\(\s*BitmapEx\s*\('
followed by commenting out the BitmapEx(OUString) constructor and seeing
what needed adjusting.
Change-Id: I3224e11937d720fa484b0d659d25673a9e809267
Reviewed-on: https://gerrit.libreoffice.org/64760
Tested-by: Jenkins
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/64860
Tested-by: Michael Meeks <michael.meeks@collabora.com>
|
|
In InterfaceOleWrapper::GetIDsOfNames(), look up also the parameter
names, if present (if cNames > 1, rgszNames entries after the first).
Return S_OK only if *all* the names were found, i.e. both the first
(method or property) name, *and* all the parameter names.
Change-Id: Ie04bc0558a7e2044ef527fc18f99230c71985a22
Reviewed-on: https://gerrit.libreoffice.org/55481
Reviewed-by: Andras Timar <andras.timar@collabora.com>
Tested-by: Andras Timar <andras.timar@collabora.com>
|
|
Change-Id: I8d1d3273fcafe1ce750e66e55712eac607722717
Reviewed-on: https://gerrit.libreoffice.org/55655
Reviewed-by: Andras Timar <andras.timar@collabora.com>
Tested-by: Andras Timar <andras.timar@collabora.com>
|
|
Convert a DISPPARAMS with named arguments into one with just
positional ones. If there are gaps, pass markers for them (VARIANTs
with VT_ERROR:DISP_E_PARAMNOTFOUND). Those will be passed on as empty
UNO Anys.
Change-Id: Iad1197ba2559567a9c0eca4524e76389c2048fec
Reviewed-on: https://gerrit.libreoffice.org/55654
Reviewed-by: Andras Timar <andras.timar@collabora.com>
Tested-by: Andras Timar <andras.timar@collabora.com>
|
|
Change-Id: I421d3980c50706f927a0611e48c33a43267dd01b
|
|
Change-Id: Ia116021ecc9f20c82622a4bc8ee40e7a9a1508fa
|
|
-Werror,-Wnon-virtual-dtor: made various dtors virtual
-Werror,-Winconsistent-missing-override in END_COM_MAP: silenced the same way as
in other places across the code base
loplugin:unreffun in BEGIN_COM_MAP and END_COM_MAP: silence with
-Wunused-function
various -Werror in atlbase.h and atlcom.h: silenced the same way as in e.g.
embedserv/source/inc/stdafx.h
-Werror,-Wshadow
-Werror,-Wunused-function
loplugin:casttovoid
loplugin:cstylecast
loplugin:nullptr
loplugin:salbool
loplugin:subtlezeroinit
Change-Id: Ifefdc930a1d3ecf5366523dea509bfaca1f4e001
Reviewed-on: https://gerrit.libreoffice.org/55186
Reviewed-by: Tor Lillqvist <tml@collabora.com>
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Reviewed-on: https://gerrit.libreoffice.org/55426
Tested-by: Tor Lillqvist <tml@collabora.com>
|
|
Change-Id: I2de9e53b2a0d923d4136ee5e093baa955c8301da
Reviewed-on: https://gerrit.libreoffice.org/55409
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
Tested-by: Michael Meeks <michael.meeks@collabora.com>
|
|
Change-Id: Ia0c3f9f1e95980b14415a030fc40268629ae06f3
Reviewed-on: https://gerrit.libreoffice.org/55408
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
Tested-by: Michael Meeks <michael.meeks@collabora.com>
|
|
An object returned by XCollection::Item() is of the right "VBA" kind
that we want. One returned by XEnumeration::nextElement() is not.
Change-Id: I26132a7d0f2638a61f2711b941386a889fabea72
Reviewed-on: https://gerrit.libreoffice.org/55391
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
Reviewed-by: Tor Lillqvist <tml@collabora.com>
Tested-by: Tor Lillqvist <tml@collabora.com>
|
|
Change-Id: Idfca38ec2c931572b6978440862c7bfca8d536e6
(cherry picked from commit 9d2e7c3c07b471a89e7fc375eb9094510a3cacd7)
|
|
Change-Id: Ic197a9573968fb252cb52cc5089f9140d5375d3a
(cherry picked from commit ad57e6d3369b10c181cb644729466512428cc52d)
|
|
Change-Id: I2723146f2c549c630dfa0e5da330af228cb305a0
(cherry picked from commit bfedeb79937aa5e8bdf01ecf6be25e2bbe8a6db5)
|
|
Change-Id: Ic76fc43fc521a6fd6642e22b71c311370788d4aa
(cherry picked from commit 469b8334ad858723b83be1c285cde1d991df86c6)
|
|
Parameters come in in reverse order in pdispparams. There might be
less parameters than expected. In that case, assume the missing ones
are "optional" (but can't be marked as such in UNO IDL), and fill in
the rest with empty Anys. There might also be more parameters than
expected. In that case, assume the oovbaapi UNO IDL hasn't kept up
with added optional parameters in MSO, and just ignore the extra ones,
as long as they are empty.
An example: incoming parameters: <12, 13, "foo/bar.tem">
Expected paramters: (string filename, int something, int
somethingElse, Any whatever, Any whateverElse)
Here the existing incoming parameters are placed in reverse order in
the first three outgoing parameters, and the rest of the outgoing
paramters are passed as empty Anys.
Another example: incoming parameters: <EMPTY, TRUE>
Expected parameters: (bool flag)
Here the TRUE is passed as the sole outgoing parameter, and the
incoming EMPTY is ignored.
Still an example: incoming parameters: <"foo.doc", TRUE>
Expected parameters: (bool flag)
This throws an error as the incoming non-empty extra parameter
presumably indicates something important, but there is no
corresponding outgoing parameter to pass it in.
Change-Id: Ib04f9701099ecb899e792d99ff86588022b3bbf6
(cherry picked from commit e4a99a3c502c0285b6fb542d84a9bffde045e526)
|
|
If we have too few parameters, fill with empty ones, as before. If we
have more paramters than the called method expects, but the extra ones
are empty anyway, ignore them. Do all of this in
convertDispparamsArgs(). This improves interoperability with typical
Automation clients.
Change-Id: I47376993dc10b401e4c349e19b2bbe4be9f8f444
|
|
Make it easier to search for a specific class and function in the
output by outputting the 'this' pointer first, not between the class
and function name.
Change-Id: Ia6e087e3a4be9e701c418aedb9b6af5fd4f6e828
(cherry picked from commit c86c08ea00e284ce4381b26609cd83fab17e4991)
|
|
Largely parallel to what we do for Writer.
Yes, there is a fair amount of duplicated code now for the outgoing
("sink") stuff in sw and sc, that should be factored out (to
vbahelper, probably).
Change-Id: I8df4a81c3b9043e8d6b0b206e3c04660205987c7
(cherry picked from commit b9ef6b66e7a67a448b1a840c47146d8789a92a6d)
|
|
Change-Id: I1c706a2139cb2596969c6c1d166d3f9fe9f91d39
(cherry picked from commit bbe55ee8e78b2e293234ea8d2b234c4cd7091aa1)
|
|
Change-Id: Ib7fcdbe934b66971995574226f982a6865faab1b
(cherry picked from commit 4bf4895739ea16f0fbc68099fd3372e9d8a389a5)
|
|
Change-Id: I428c2bbaa273d893fa5a3cc42bb7f3d060f375ad
(cherry picked from commit 552b62f24a8804b6875cfcf1191093af80af2923)
|
|
Change-Id: Iff629243888153250b655a5e942ced024e3338a7
(cherry picked from commit 2774593a4b23ba831b3b4d5729a241416634e917)
|
|
Change-Id: I4a9c6341891bc80d8ab7648ed972d57739aa4f4a
(cherry picked from commit b34d42129178731a841c52aac186f5d9f4fa817e)
|
|
The returned information for the methods is fairly bogus, though. Not
sure now (a few months after I wrote the code) whether this added
functionality was actually needed, or whether I just added it for
potential future need, and with the intent that it needs to be
improved significantly then later if actually needed.
Change-Id: Ifb132f494cdd7172b4b1d05cc26e2370ea595f41
(cherry picked from commit 27a1351122dbab79536870d7080307defbcae433)
|
|
Change-Id: I47054c1df40d1058618b0fbd3fdb82fa93ca8836
(cherry picked from commit 2ee43cff5cf0e4125e7b2bbb7c763069c6aca95c)
|
|
Change-Id: I228ae626532b3ae6f632701e71d3da182c496612
(cherry picked from commit 9673511526660ff23169456b2cce560d968107b3)
|
|
Instead, be generic, check whether the objects implements
ooo::vba::XConnectable. That's what we do in the
IID_IConnectionPointContainer case, too.
Change-Id: Ib499aa011775f79a2accaef64e19738bdb7ed143
Reviewed-on: https://gerrit.libreoffice.org/55109
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Tor Lillqvist <tml@collabora.com>
(cherry picked from commit 98630a6edf91183dbd8f1bdb02616889251927de)
|
|
I think. Anyway, if it turns out we do want one per client, easy to
revert this. (And it isn't very common to have several Automation
clients connected at the same time anyway, surely.)
There will still additionally be one SwVbaGlobals (and
SwVbaApplication) per open document with a StarBasic interpreter,
though. I think.
Change-Id: I5f7dbfd65b5decb152c1192298bc85dcf6027d64
Reviewed-on: https://gerrit.libreoffice.org/55094
Reviewed-by: Tor Lillqvist <tml@collabora.com>
Tested-by: Tor Lillqvist <tml@collabora.com>
(cherry picked from commit 3f3b7b38df42695c934d6382659db1b79b236c28)
|
|
XConnectable interfaces need a second IID, for the interface "itself",
not the coclass. (I am sure there is some catchy short term for that,
I just can't find it right now.)
Allow several simultaneous sinks for a SwVbaApplication. Not sure in
what case such would be needed, but you never know about 3rd-party
client code, and it's trivial to handle anyway, so why not.
Lots of FIXMEs still. There is likely also a lot of leaks. But at
least an event handler in a simple VBScript script does get invoked.
Note that the changed and added code in extensions/source/ole is
totally unaware of what outgoing ("event") interfaces Writer or Calc
implements, it is all handled generically through the UNO interfaces I
added recently.
One particular thing that needs doing is to actually make Writer (and
Calc) raise this kind of events when necessary. The current code to
invoke events handlers in StarBasic (including StarBasic code running
in "VBA" compaibility) is very much tied to having StarBasic running
(not surprisingly), which of course is not at all the case when it is
an Automation client that is manipulating a Writer or Calc instance
and wants events.
There is demonstration-only code in SwVbaApplication::Documents() to
raise the "Quit" event. (I would have put that in the SwVbaApplication
destructor but that doesn't seem to get called.) That should of course
go away once we invoke other relevant events in appropriate places.
And the "Quit" event needs to be invoked when the application is
quitting.
The whole callback mechanism with IConnectionPoint etc is still partly
a mystery to me. It is entirely possible that even if this now works
for a simple VBScript client, it won't work for (for instance) a VB6
client that might exercise the APIs of the COM interfaces we provide
in a different way.
Add XSinkCaller, for something that perhaps calls one or several
XSinks.
Change-Id: Ica03344010e374542f4aceff5ec032c78579f937
Reviewed-on: https://gerrit.libreoffice.org/55093
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Tor Lillqvist <tml@collabora.com>
(cherry picked from commit f7e0297b01f739e17f2f9517bf3d89baaee654ab)
|
|
It is just supposed to return 1, after all. And we do try to implement
the GetTypeInfo().
(Sure, the testing I am doing that turned out to require GetTypeInfo()
to work then immediately after this runs into much harder problems to
solve, but that is another issue.)
Change-Id: If7e0707d7b404d6a46b24e642c2146b3bfff03f0
Reviewed-on: https://gerrit.libreoffice.org/55070
Reviewed-by: Tor Lillqvist <tml@collabora.com>
Tested-by: Tor Lillqvist <tml@collabora.com>
(cherry picked from commit 5afbfd215a108a6bd3b3a8379d789663e1022789)
|
|
Change-Id: Iab17340f57cf8b116d2f058661dabd3a95fb61d2
(cherry picked from commit 8444ab9287ebb8029afe576f25d8ee9103f0e7c5)
|
|
As VS2017 so eloquently puts it, "Warning STL4017:
std::wbuffer_convert, std::wstring_convert, and the <codecvt> header
(containing std::codecvt_mode, std::codecvt_utf8, std::codecvt_utf16,
and std::codecvt_utf8_utf16) are deprecated in C++17. (The
std::codecvt class template is NOT deprecated.) The C++ Standard
doesn't provide equivalent non-deprecated fu tml_ nctionality;
consider using MultiByteToWideChar() and WideCharToMultiByte() from
<Windows.h> instead. You can define
_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING or
_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS to acknowledge that you have
received this warning."
So VS2017 actually recommends using platform-specific API instead of
standard C++ API that is or will be deprecated but has no standard
replacement. Insane.
Note that it is not enough to define that
_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING just right where you
are including <codecvt> because "for all of the warning suppression
macros, you must define them before any C++ Standard Library header
has been included (both <vector> etc. and <cstdlib> etc.)" as
mentioned on
https://blogs.msdn.microsoft.com/vcblog/2017/12/08/c17-feature-removals-and-deprecations/
So define it in the single file that includes windowsdebugoutput.hxx
for now.
Change-Id: Iecd9702502ce3b33013d6799c618d6b98d803c3e
(cherry picked from commit 3cce079c9307315f18b6f49f1de58f52e956e0d6)
|
|
Start a bit of work on that.
Change-Id: I7775f9598a81d64e9716996027b01f7f8e29745b
Reviewed-on: https://gerrit.libreoffice.org/55043
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Tor Lillqvist <tml@collabora.com>
(cherry picked from commit 2b6a84c8f699c9da115ce297ad19b8f480ab608f)
|
|
There were a couple of problems apparent at this stage when using the
ooovbaapi things from a test Automation client (written in VBScript,
to be precise).
Accessing for instance the ActiveDocument property of an
ooo::vba::word::XGlobals instance worked fine. But properties of other
objects, like instances of ooo::vba::word::XDocument, did not work.
When attempting to access any property of an
ooo::vba::word::XDocument, the code ended up calling the hasProperty()
of SwVbaDocuemnt. That function is for checking a totally different
kind of "properties", namely named form controls. Why form controls
are con-fused with oovbaapi properties I don't know. Maybe it is
intentional and as expected when using the oovbaapi from the built-in
Basic interpreter in LibreOffice. Or then just an accident in history.
Still, surely it can't be changed, that would break Basic scripts
embedded in existing ODF documents.
Anyway, from an OLE Automation client, for instance when asking for
the Content property of an ooo::vba::word::XDocument object, we
definitely don't want any form control that happens to have the name
"Content". We want an object with two integer properties, Start and
End.
Make this work by always creating an invocation factory instead of
using the object itself. Pass the invocation factory's
createInstanceWithArguments() function an extra argument indicating
this is the case of use from OLE Automation.
In the Invocation_Impl class in the stoc module, when this extra
argument is noticed, set a new mbFromOLE flag. Modify the behaviour
slightly when that is true. I am not at all sure that this will work
in all cases, but let's see, at least for simple tests so far it had
the intended effect.
Another issue was that looking up these properties was case sensitive.
This is wrong at least from languages like VBScript. Use the mbFromOLE
flag also to affect the case sensitivity behaviour.
Maybe I should simply make sure that _xDirect is null in the
Automation case? _Direct (a reference to an XInvocation) being
non-null probably means that we are using the document interface's own
implementation of XInvocation, which is probably always wrong in the
OLE Automation case. (Just see the SwVbaDocument implementations of
hasProperty() and invoke(), for instance.)
Change-Id: I2fd174f69f430893aef538cc9bf2a99d1c86b567
Reviewed-on: https://gerrit.libreoffice.org/55023
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Tor Lillqvist <tml@collabora.com>
(cherry picked from commit 7873bba6c1e5de580ef28d0ecf68d154dd57e726)
|
|
Create the objects on offer to Automation clients lazily
It would be silly to create the ooo.vba.word.XApplication in every
LibreOffice instance, even if no Writer functionality was going to be
used at all in that process.
I did not have to do what the old FIXME said, "make Application a
proper service", whatever that means.
Change-Id: I02a0ceb6290012b4bb6afacadc03871feaf57406
Reviewed-on: https://gerrit.libreoffice.org/55005
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Tor Lillqvist <tml@collabora.com>
(cherry picked from commit 0667df70dc749ae50ce29713308f14d624f2a683)
|
|
We get that when an Automation client wants to enumerate an object
that is a collection. We need to create an IEnumVARIANT object and
return it (as an IUnknown).
I wasted days on trying to implement this IEnumVARIANT object using
the same twisty maze of helpers, wrappers, UNO conversion utilities,
etc as used for the other stuff here. The other objects have both UNO
and OLE personalities. Could not figure out how to do it.
Then I decided to just do it brute force, following some sample code,
not bothering with any UNO personality at all for the IEnumVARIANT
thing, and it worked right away.
Change-Id: I6a175ea80b75d48d2f0b793f143f3a84715522c1
Reviewed-on: https://gerrit.libreoffice.org/54994
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Tor Lillqvist <tml@collabora.com>
(cherry picked from commit 52eb78c8d2c9954733d95326922462a820d9f0dd)
|
|
Change-Id: Ib22583a45c03a4b7c3b4ff73e9d28f47ab31bc4f
(cherry picked from commit 9bbb71d4a003d00a3361f337b3f96d4a19a35562)
|
|
Our convention is to just have the name of the abstract base class in
a comment before the declaration of the concrete overrides of its
abstract member functions. No need to say "Abstract struct" there.
Change-Id: I2b9bdf0555af5280771370a6df56fd4c8623661a
(cherry picked from commit 8d6f684067092a32e45a75e9290d7d19a753f726)
|
|
Change-Id: I7633648dc0398d2c1b6f04e6db9b18638a7451f5
Reviewed-on: https://gerrit.libreoffice.org/54781
Reviewed-by: Tor Lillqvist <tml@collabora.com>
Tested-by: Tor Lillqvist <tml@collabora.com>
|
|
OleServer::provideService() was not called anywhere. That means the
ProviderOleWrapper class is unused, too. Which is good, as it seemed
to largely be identical to OneInstanceOleWrapper anyway.
Change-Id: If8782d56ed1ec1bb173cfc18be585be4c331f335
Reviewed-on: https://gerrit.libreoffice.org/54647
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Tor Lillqvist <tml@collabora.com>
(cherry picked from commit 0f2157cb1513371829d7f8c415324cffed28c377)
|
|
We can just pass the GUID as parameter to the single member function
registerClass() that needs it. This perhaps means the same class can
be used in more cases, also for objects/classes that aren't going to
be registered and don't need any GUID.
Change-Id: I28703190c52b14236c6f613dd4acbe359c075f5c
Reviewed-on: https://gerrit.libreoffice.org/54622
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Tor Lillqvist <tml@collabora.com>
(cherry picked from commit 17ad73232ff604329e6532817570cb40342857e8)
|
|
Change-Id: I379770f93799668e44beab03fb64ceddffabe85a
Reviewed-on: https://gerrit.libreoffice.org/49326
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Tor Lillqvist <tml@collabora.com>
(cherry picked from commit 72fefd7ab6fd551effcf821e4e257df2756bece1)
|
|
Change-Id: I7118843fde87a2d587f0e4ec99d146c379da618e
(cherry picked from commit 79a6290969d5c1feab56158b6cf0dd0a4b52d53e)
|
|
Change-Id: I103f06b9c7f14ac7eff9911ab5bebc4c98e7d41f
Reviewed-on: https://gerrit.libreoffice.org/54614
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Tor Lillqvist <tml@collabora.com>
(cherry picked from commit 7c7b3c70e1def37ee707827e75d0afa00b0b3619)
|
|
Change-Id: I219226060ebf4b8b86c8f0487fc679f22f73812a
Reviewed-on: https://gerrit.libreoffice.org/54468
Reviewed-by: Tor Lillqvist <tml@collabora.com>
Tested-by: Tor Lillqvist <tml@collabora.com>
(cherry picked from commit 7a2b7693452dec3d30778301ae3a294bfaed344b)
|
|
Change-Id: I68dfd0832747c7c319e40ee28a4461623e95102f
Reviewed-on: https://gerrit.libreoffice.org/54482
Reviewed-by: Tor Lillqvist <tml@collabora.com>
Tested-by: Tor Lillqvist <tml@collabora.com>
(cherry picked from commit 69322f8b539cd9f98e0ee5f9afc7c3df0d897493)
|
|
I.e. where there is no other LibreOffice, or system, or 3rd-party
library thing with just the un-suffixed name that they would be a
pimpl of, etc. Why bother calling something InterfaceOleWrapper_Impl
when there is nothing that would be called InterfaceOleWrapper? It
just makes the code seem more complicated and harder to read.
An "implementation" of something is what everything that is not fully
abstract *is*. We don't suffix the name of every non-abstract class
with _Impl elsewhere either.
Also drop two unused structs.
Change-Id: I2755e6da78d8e4ded5291688dc90510b5f8b498b
Reviewed-on: https://gerrit.libreoffice.org/54411
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Tor Lillqvist <tml@collabora.com>
(cherry picked from commit a48f22db7dd1bfeff62007a655566ddaad79aebd)
|
|
Otherwise LO crashes e.g. at opening Expert Configuration dialog.
Instead, log the event, create an empty backend, and return empty values.
Change-Id: I433fc89c003e7886dfc5242a4ef8defa46d643d3
Reviewed-on: https://gerrit.libreoffice.org/53958
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Tested-by: Jenkins <ci@libreoffice.org>
(cherry picked from commit 5ed889e80805daf8471054786c1e424a73744ad3)
Reviewed-on: https://gerrit.libreoffice.org/54039
Reviewed-by: Andras Timar <andras.timar@collabora.com>
Tested-by: Andras Timar <andras.timar@collabora.com>
|