Date: prev next · Thread: first prev next last
2014 Archives by date, by thread · List index


On 09/09/14 15:55, Justin Luth wrote:
Are sc/source/ui/vba/vbaapplications.cxx and
vbahelper/source/vbahelper/vbahelper.cxx ONLY used for MS VBA
compatibility, or does it also affect StarBasic etc?
it only affects MS VBA compatability

I have identified that the vbahelper function getCurrentDoc() is
broken, causing bug 71248, and suggested a band-aid solution for it in
the comments.  However, I don't know the larger implications of
replacing getCurrentDoc with getThisExcelDoc.  In practice, THIS and
CURRENT are likely the same thing
no, 'THIS' refers to the document running the macro and 'CURRENT' is the
'active' document. E.g. if a macro in foo.xls opens existing ba.xls,
'THIS' refers to foo.xls and CURRENT refers to ba.xls (after the
document is raised and opened and is still on top)
, but perhaps the current implementation is necessary and working for
someone...

I'm still going to try to figure out how to properly fix
"getCurrentDoc" but so far I don't really understand what it is doing.
I haven't looked at that code in a long time so feel free to dive in
there, iirc basically 'THIS' is tracked in the uno context (VBA has a
custom uno context), CURRENT should be accessible as a UNO global
variable inserted in to 'application' StarBasic. It sounds like somehow
somewhere getCurrentDoc either is no longer searching for the correct
variable, or its no longer getting updated (used to be updated somewhere
in sfx2/.../objxstor.cxx (try searching for 'ThisComponent', it's bound
to be handled somewhere close to that)
There used to be some confusing (but necessary) indirection to handling
this e.g. because Libreoffice is a single application (and VBA support
was trying to support both Word & Excel) the code in objxstor.cxx needs
to find out which variable in StartBasic to update, in the case of a
Word document it would need to update StarBasic variable named
'ThisWordDoc' & for Excel 'ThisExcelDoc' variable (both can exist
simulateously if multiple documents xls/doc are open).  That is my
recollection how this used to work, it is possible imports from AOO code
have trampled/changed this possibly in an incompatible way
If someone who actually knows how to program and submit patches could
take over from this point, that would be great.

suggested Band-aid fix:
uno::Reference< frame::XModel >  getCurrentExcelDoc( const
uno::Reference< uno::XComponentContext >& xContext ) throw
(uno::RuntimeException)
{
    return getThisExcelDoc( xContext );
}
I think this would be a bad idea, getCurrentExcelDoc needs fixing to
return the topmost open Excel document
Thanks,
Justin
https://bugs.freedesktop.org/show_bug.cgi?id=71248

thanks,

Noel

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.