This reverts commit 45504f9ba8.
The problem that is apparently fixed here is that link.exe is too dumb
to pick the right entry-point if the WinMain definition does not come
from an object file but a .lib; in that case it apparently defaults to
archaic 8-bit WinMain so tell it to use Unicode one with /ENTRY.
Conflicts:
desktop/Executable_sbase.mk
desktop/Executable_scalc.mk
desktop/Executable_sdraw.mk
desktop/Executable_simpress.mk
desktop/Executable_smath.mk
desktop/Executable_sweb.mk
desktop/Executable_swriter.mk
Change-Id: Ib6239eb0fd3d64fd4a292a0d42d65ef75475c389
The AccObject is stored by value in XIdAccList, so don't call GetResID()
after it has been erased.
Change-Id: I391aad1e3ab71d443cc6e6b92381f74918e0bcfb
The COM components will (usually? always?) be called on the main thread
via COM, and may also be called on any thread from the UNO event
listeners. Both ways may access the global AccWinObjectManager.
So the easiest way to lock all that without introducing new deadlocks
seems to be to just use the SolarMutex.
The fact that the main thread is in a COM STA is rather irrelevant here
since we don't currently do the required manual marshalling of the COM
pointers so they can be accessed from UNO event listeners running in
threads other than the main thread anyway.
To get that to build:
- use prewin.h and postwin.h around ATL headers
- link UAccCOM against vcl
- define both UNICODE and _UNICODE to not break on mis-matching TCHAR
nonsense
Change-Id: I1ccdf7a4a5c2b5f0b9c29ef39d126c4b8a16898a
Replace it with a map for the new direct C++ instantiation and move this
implementation detail to the cxx file.
Change-Id: Ia961da03f8eb899481cf02f430c921aa8abd7c5c
The value written for an Impress time field is something like
text:time-value="0000-00-00T23:28:07" (in LO 3.5+) or
text:time-value="0-00-00T23:28:07" (in OOo 3.3) which contains an
invalid all-zero date. Such values are actually rejected by the
ODF import since commit ae3e2f1700.
Actually there was no real support to read the RelaxNG type
timeOrDateTime before.
So fix that by:
- adding convertTimeOrDateTime/parseTimeOrDateTime functions to
sax::Converter
- recognizing and ignoring the 2 invalid all-zero values written by
LO 3.5 and historic OOo respectively
- writing a bare "time" in text:time-value if the DateTime struct
contains zero Date members
(Older OOo versions and AOO cannot actually read that, but everything
they _can_ read is invalid ODF...)
Change-Id: I754076caee74a5163ed3f972af0f23796aa14f9f
Apparenty an uninitialized SvxTimeField is created instead of the
SvxExtTimeField that is needed to preserve the value and format.
(regression from ee5fc5d25f)
Change-Id: I36b16af0c143e8b5451a1925806756492dc2334e
SfxDateTimeItem and SvxExtTimeField need to use 64-bit integer to store
Time as well. These classes also have binary serialization
Load()/Save() methods but they are unlikely to be used in a persistent
way, just for the clipboard.
The problem is easy to reproduce in Impress: Insert->Field->Time(fixed)
(regression from 9830fd36db)
Change-Id: I5946c5b94dd5a509805b6dc40461bbd910caffc4
SwDoc::SetFixFields() uses sal_uLong to store Time.GetTime() which needs
64 bits.
Also fix same problem on Time fields in HTML import.
(regression from 9830fd36db)
Change-Id: I5d0388cbc364e1f9dfb60ff9e83c7d2f101c69d8
So f22006dc6a changed the SwDrawTextInfo
to contain not a pointer but an actual OUString, and then
d908422f57 changes
SwSubFont::DoOnCapitals() thus:
- const XubString& rOldText = rDo.GetInf().GetText();
+ const OUString& rOldText = rDo.GetInf().GetText();
rDo.GetInf().SetText( aTxt );
That used to _copy_ the string, but now it just references the
member, and so the SetText(aTxt) below overwrites rOldText.
Change-Id: I06d7ee7084c15d88b3e748ef18877b62e79bdd0e
SwTOXBaseSection::GenerateText() wants to operate directly on
SwTxtNode::m_Text and accepts no substitutes such as a temporary string
on the stack; this regression shows that developers often
significantly underestimate the craziness of the existing code.
(regression from d6e321f826)
Change-Id: I01b831f35a52bde207a7db8cae9d4aadb826b2d8
The code that updates RSIDs assumes that the number of nodes copied is
the same as the number of nodes inserted, which is not true when pasting
a table into a footnote because Writer can't do that, hence all table
nodes are missing. Count inserted nodes instead.
(regression from 062eaeffe7)
Change-Id: I77b5b7751d1036a6401f708532537d874969502e
This is an unfortunate combination of 2 special cases:
- the Hybrid PDF has its own XFilter implementation to extract the
embedded ODF document
- Writer needs to create a SwReader with SwPaM for Insert
Since the PDF XFilter uses a special service in sfx2 to implement
the import, handling this requires a new method in SfxObjectShell
that calls back into Writer to create the properly setup SwReader.
Change-Id: Ie85f3bfa322bfe883c479e1cb198a8bf0cbbac23
In ~SwDoc when a SwFmt is deleted,
SwAccessibleNoTextFrame::GetNoTxtNode() would access the mpFrm which
at that point was already deleted too; avoid that by returning early.
This can be reproduced by closing the bugdoc from fdo#71450.
Change-Id: Ide4d42511ccad116fa0362c23ced299d8430d08a
Trying to set a name that is already in use will throw an exception (and
set a different, generated name); if there is actually no name in the
file then there's no point trying to set anything.
(regression from b69d152cfa)
Change-Id: Ie54d4a830cc23e2853a6efeb81f77dcc788192ea
This only works partially: the ClassObjects are only registered on the
main thread; CoCreateInstance on other threads still fails.
This reverts commit 29c6216af8c502f220bb84857d3dda901ddfd234.
The ImplHandleGetObject() function modifies the Application Settings and
must take the SolarMutex for this; otherwise we get crashes when another
thread calls StyleSettings::GetPersonaHeader() during some unoapi test.
Also fix another HWND to long cast; use LRESULT which is Win32 for intptr_t.
Change-Id: I5580f88ed0a8e9955697655ace94584e2307982d
Perhaps delayloading the URE dlls makes it easier to register the
UAccCOM.dll during installation or something? Well we don't do that any
more.
Change-Id: Ic7c356f5954f869c8752aab2563f059a27ef731f
Deadlock found in forms_unoapi on Windows, with
OGridControlModel::setFastPropertyValue_NoBroadcast() calling event
handler that tries to lock SolarMutex.
FontControlModel::setFastPropertyValue_NoBroadcast() and its callers in
3 other classes must not send events via firePropertyChange()
because they are called by OPropertySetHelper::setFastPropertyValues()
with its Mutex locked.
It is possible (though sadly quite convoluted) to delay the sending of
the events by calling setDependentFastPropertyValue() instead.
Change-Id: I0c767cfec01fe1bcaeb1236287b5faf81a2e7441
This is an alternative (to 732ec36edf)
solution to the "CoCreateInstance does not work" problem:
replace all CoCreateInstance calls with equivalent calls to create
the components directly.
Since the only reason why this COM stuff needs to be registered
at all is that AccObject uses CoCreateInstance() to create its
COM objects, another possible solution appears to be to simply link
the libraries and instantiate the COM objects directly, without COM.
The only difference appears to be that CoCreateInstance would
automatically add proxy objects in case the COM objects reside in a
single-threaded appartment; not sure if that is relevant here.
Change-Id: I8ffb8af501f6084f3145fa4d4f53366a070e1691
Reviewed-on: https://gerrit.libreoffice.org/6792
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
Tested-by: Michael Meeks <michael.meeks@collabora.com>
The COM services are not found because they are not registered in the
registry via regsvr32 (doing that is unnecessary since the components
are only instantiated by winaccessibility code and undesirable since
that would likely register the IAccessible2 types too, breaking A11y
tools) and the special manifest resource #97 that ActivateActContext()
tries to load does not exist in UAccCOM.dll; this would need to be a
XML manifest, the *.rgs and *.tlb that are already included as
individual resources won't work.
After reading ATL headers for hours it is immediately obvious that the
COM components can simply be registered by a call to
CComModule::RegisterClassObjects() from DllMain; this just requires
actually loading the UAccCOM library from somewhere so the DllMain runs.
Change-Id: Id58b754835cd2f1bcada37e5639a6b6042a42fd5
Merge aliases pRContextInterface (unused) and pRContext; this is
exacerbated by countless local variables pRContext that shadow the
member...
Change-Id: I6bc71911fb41a2ce2590d614020ecea36d6ab4f8
... which is what we already use in calc.desktop; also
"application/dbaes" is not registered at IANA.
Change-Id: Ic2031a53e6620d10874df8882448497564962114
Just install both; 448727e598 already made
IA2 an experimental feature with fallback to Java access bridge if
experimental mode is disabled.
Change-Id: I4ca64adbc586bd87b4d28087709f5c2e02bf7990
Apparently the life-cycle of this global variable is tied to the
MSAAService anyway, so just make it a member of that.
Also it appears that the FreeTopListener function would call release()
but at the place where the global variable is assigned acquire() was
missing. Using a rtl::Reference should fix this up too.
Change-Id: I6dd305dfd990d7fd4c54b16d971700b88470dc43
Put back the definition of WITH_RPM: otherwise a build
--with-pkgformat=archive fails since the scripts/install is not built.
Leave in the change to installer that should fix the original DEB bug.
This reverts commit 4f995b395e.
Change-Id: I0cf4ba003237c66dfb7a0677d6a32a69f8203c6b
... otherwise it will get inherited from Executables to StaticLibraries
and then mt.exe will be unhappy and complain.
Change-Id: Ic9cc32ea3d0fb5d1fe91c1e9efa354fdf30c8264
- disambiguate overloading
- only use SAL_CALL for UNO methods, and non-UNO methods start uppercase
- use SAL_OVERRIDE
Change-Id: Ib57adad65b2b8e8246b103ff77ce162b0b540422