https://bugs.freedesktop.org/show_bug.cgi?id=63398
Lionel Elie Mamane <lio...@mamane.lu> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |sberg...@redhat.com, | |tbehr...@suse.com --- Comment #6 from Lionel Elie Mamane <lio...@mamane.lu> --- Thorsten? This bug originates from this commit: commit 90eac3e69749a9227c4b6902b1f3cef1e338c6d1 Author: Thorsten Behrens <tbehr...@suse.com> Date: Thu Nov 29 21:27:57 2012 +0100 API CHANGE remove [oneway] method attributes I don't know what oneway was supposed to achieve, but it had at least one working effect, that is that the com.sun.star.reflection.theTypeDescriptionManager service gave a type description whose isOneway() member returned true. This in turn is used by svxform::FormScriptListener::impl_allowAsynchonousCall_nothrow in file svx/source/form/fmscriptingenv.cxx to return true. What is the link between oneway and "allow asynchronous call"? You tell me, I don't know. This brings us to this bug, namely that the event fires "too soon". That's because of this code in svxform::FormScriptListener::firing: if ( !impl_allowAsynchronousCall_nothrow( _rEvent.ListenerType.getTypeName(), _rEvent.MethodName ) ) { impl_doFireScriptEvent_nothrow( aGuard, _rEvent, NULL ); return; } acquire(); Application::PostUserEvent( LINK( this, FormScriptListener, OnAsyncScriptEvent ), new ScriptEvent( _rEvent ) ); So, in 3.x, this was taking the "Application::PostUserEvent" route, which means the event triggered after (about 20 frames up in the stacktrace) frm::ODatabaseForm::load is finished, and in particular the controls of the form are fully initialised. But in 4.0, this takes the "impl_doFireScriptEvent_nothrow" route and the controls are not fully initialised yet. We went even further down this road in master (4.1 alpha)... Since commit by Stephan, a *different* object is returned by ::comphelper::getProcessServiceFactory().getSingleton( "com.sun.star.reflection.theTypeDescriptionManager" ) namely a cppuhelper::TypeManager and not anymore a stoc_tdmgr::ManagerImpl. Its getByHierarchicalName method returns a "(anonymous namespace)::MethodDescription", whose isOneway() method just harcodes "return false"... FYI, in this specific case: _rListenerType == "com.sun.star.sdbc.XRowSetListener" _rMethodName == "cursorMoved" -- You are receiving this mail because: You are the assignee for the bug.
_______________________________________________ Libreoffice-bugs mailing list Libreoffice-bugs@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-bugs