https://bugs.documentfoundation.org/show_bug.cgi?id=92617
Lionel Elie Mamane <[email protected]> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |REOPENED Resolution|FIXED |--- --- Comment #30 from Lionel Elie Mamane <[email protected]> --- At first I thought this could be linked to the svxform::FormScriptListener::impl_allowAsynchonousCall_nothrow discussed in bug 63398, but it looks like it is not. Anybody has any idea of how I can enforce that one event "waits" for the other to finish? I attach a backtrace. At frame 80 starts the treatment of "change focus from one form to another": #80 0x00007f469e84c4c7 in svxform::FormController::OnActivated (this=this@entry=0x769aae0) at /home/master/src/libreoffice/workdirs/libreoffice-5-2/svx/source/form/formcontroller.cxx:1763 On frames 74 and 73 you see that the change of focus first makes the "commit the current record". #73 0x00007f469e886df7 in svx::FormControllerHelper::commitCurrentRecord (this=0x7b470f0) at /home/master/src/libreoffice/workdirs/libreoffice-5-2/svx/source/form/formcontrolling.cxx:306 #74 0x00007f469e7d537b in FmXFormShell::setActiveController (this=this@entry=0x322af50, xController=uno::Reference to (svxform::FormController *) 0x769ab30, _bNoSaveOldContent=_bNoSaveOldContent@entry=false) at /home/master/src/libreoffice/workdirs/libreoffice-5-2/svx/source/form/fmshimp.cxx:1881 This then calls the event listeners, which are allowed to veto the commit (approveRowChange event). This goes in Basic interpreter code (frames 49 and below). When Basic gets to the "wait" statement (frame 29) it calls Application::Yield() (frame 28) which then starts treating the "click on button" event (frames 17 and below): #13 0x00007f4638b4028f in frm::OButtonControl::OnClick (this=this@entry=0x797fb10) at /home/master/src/libreoffice/workdirs/libreoffice-5-2/forms/source/component/Button.cxx:460 (...) #16 0x00007f469b4c2de6 in ImplHandleUserEvent (pSVEvent=pSVEvent@entry=0x7a99270) at /home/master/src/libreoffice/workdirs/libreoffice-5-2/vcl/source/window/winproc.cxx:1959 I want that the "OnClick" of the button that is in the form IS NOT TREATED before the "activation handlers" of the form THAT THIS BUTTON IS IN (called in formcontroller.cxx line 1734) are finished executing. if ( bActivated ) { // (asynchronously) call activation handlers m_aActivationEvent.Call(); // call modify listeners if ( m_bModified ) m_aModifyListeners.notifyEach( &XModifyListener::modified, EventObject( *this ) ); } Any suggestion from the experts? -- You are receiving this mail because: You are the assignee for the bug.
_______________________________________________ Libreoffice-bugs mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-bugs
