xref: /aoo42x/main/svx/source/form/delayedevent.cxx (revision cdf0e10c)
1 /*************************************************************************
2  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
3  *
4  * Copyright 2000, 2010 Oracle and/or its affiliates.
5  *
6  * OpenOffice.org - a multi-platform office productivity suite
7  *
8  * This file is part of OpenOffice.org.
9  *
10  * OpenOffice.org is free software: you can redistribute it and/or modify
11  * it under the terms of the GNU Lesser General Public License version 3
12  * only, as published by the Free Software Foundation.
13  *
14  * OpenOffice.org is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU Lesser General Public License version 3 for more details
18  * (a copy is included in the LICENSE file that accompanied this code).
19  *
20  * You should have received a copy of the GNU Lesser General Public License
21  * version 3 along with OpenOffice.org.  If not, see
22  * <http://www.openoffice.org/license.html>
23  * for a copy of the LGPLv3 License.
24  *
25 ************************************************************************/
26 
27 #include "precompiled_svx.hxx"
28 
29 #include "delayedevent.hxx"
30 
31 #include <osl/diagnose.h>
32 #include <vcl/svapp.hxx>
33 
34 //........................................................................
35 namespace svxform
36 {
37 //........................................................................
38 
39 	//====================================================================
40 	//= DelayedEvent
41 	//====================================================================
42 	//--------------------------------------------------------------------
43     void DelayedEvent::Call( void* _pArg )
44     {
45         CancelPendingCall();
46         OSL_POSTCOND( m_nEventId == 0, "DelayedEvent::Call: CancelPendingCall did not work!" );
47 
48         m_nEventId = Application::PostUserEvent( LINK( this, DelayedEvent, OnCall ), _pArg );
49     }
50 
51 	//--------------------------------------------------------------------
52     void DelayedEvent::CancelPendingCall()
53     {
54         if ( m_nEventId )
55             Application::RemoveUserEvent( m_nEventId );
56         m_nEventId = 0;
57     }
58 
59 	//--------------------------------------------------------------------
60     IMPL_LINK( DelayedEvent, OnCall, void*, _pArg )
61     {
62         m_nEventId = 0;
63         return m_aHandler.Call( _pArg );
64     }
65 
66 //........................................................................
67 } // namespace svxform
68 //........................................................................
69