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

Reply via email to