no real changes, just add some comments
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58610 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -69,7 +69,8 @@ typedef int wxEventType;
|
|||||||
#define wxEVT_ANY ((wxEventType)-1)
|
#define wxEVT_ANY ((wxEventType)-1)
|
||||||
|
|
||||||
// this is used to make the event table entry type safe, so that for an event
|
// this is used to make the event table entry type safe, so that for an event
|
||||||
// handler only a function with proper parameter list can be given.
|
// handler only a function with proper parameter list can be given. See also
|
||||||
|
// the wxEVENT_HANDLER_CAST-macro.
|
||||||
#define wxStaticCastEvent(type, val) static_cast<type>(val)
|
#define wxStaticCastEvent(type, val) static_cast<type>(val)
|
||||||
|
|
||||||
#define DECLARE_EVENT_TABLE_ENTRY(type, winid, idLast, fn, obj) \
|
#define DECLARE_EVENT_TABLE_ENTRY(type, winid, idLast, fn, obj) \
|
||||||
@@ -99,48 +100,70 @@ extern WXDLLIMPEXP_BASE wxEventType wxNewEventType();
|
|||||||
#undef wxEVENTS_COMPATIBILITY_2_8
|
#undef wxEVENTS_COMPATIBILITY_2_8
|
||||||
#define wxEVENTS_COMPATIBILITY_2_8 1
|
#define wxEVENTS_COMPATIBILITY_2_8 1
|
||||||
|
|
||||||
// macros to create an event type depending on whether type safe events are
|
// New macros to create templatized event types:
|
||||||
// enabled.
|
|
||||||
|
|
||||||
#if wxEVENTS_COMPATIBILITY_2_8
|
#if wxEVENTS_COMPATIBILITY_2_8
|
||||||
|
|
||||||
|
// Define/Declare a wxEventType-based event type:
|
||||||
|
|
||||||
#define wxDEFINE_EVENT( name, type ) \
|
#define wxDEFINE_EVENT( name, type ) \
|
||||||
const wxEventType name( wxNewEventType() );
|
const wxEventType name( wxNewEventType() );
|
||||||
|
|
||||||
#define wxDECLARE_EXPORTED_EVENT( expdecl, name, type ) \
|
#define wxDECLARE_EXPORTED_EVENT( expdecl, name, type ) \
|
||||||
extern const expdecl wxEventType name;
|
extern const expdecl wxEventType name;
|
||||||
|
|
||||||
|
// Define/Declare a wxEventType-based event type and initialize it with a
|
||||||
|
// predefined event type. (Only used for wxEVT_SPIN_XXX for backward
|
||||||
|
// compatibility)
|
||||||
|
|
||||||
#define wxDEFINE_EVENT_ALIAS( name, type, value ) \
|
#define wxDEFINE_EVENT_ALIAS( name, type, value ) \
|
||||||
const wxEventType name = value;
|
const wxEventType name = value;
|
||||||
|
|
||||||
#define wxDECLARE_EXPORTED_EVENT_ALIAS( expdecl, name, type ) \
|
#define wxDECLARE_EXPORTED_EVENT_ALIAS( expdecl, name, type ) \
|
||||||
extern const expdecl wxEventType name;
|
extern const expdecl wxEventType name;
|
||||||
|
|
||||||
|
// Declare a local (not exported) wxEventType-based event type:
|
||||||
|
|
||||||
#define wxDECLARE_LOCAL_EVENT( name, type ) \
|
#define wxDECLARE_LOCAL_EVENT( name, type ) \
|
||||||
wxDECLARE_EXPORTED_EVENT( wxEMPTY_PARAMETER_VALUE, name, type )
|
wxDECLARE_EXPORTED_EVENT( wxEMPTY_PARAMETER_VALUE, name, type )
|
||||||
|
|
||||||
|
// Try to cast the given event handler to the correct handler type:
|
||||||
|
|
||||||
#define wxEVENT_HANDLER_CAST( functype, func ) \
|
#define wxEVENT_HANDLER_CAST( functype, func ) \
|
||||||
( wxObjectEventFunction )( wxEventFunction )wxStaticCastEvent( functype, &func )
|
( wxObjectEventFunction )( wxEventFunction )wxStaticCastEvent( functype, &func )
|
||||||
#else
|
#else
|
||||||
|
// Define/Declare a templatized event type with the corresponding event as
|
||||||
|
// a nested typedef:
|
||||||
|
|
||||||
#define wxDEFINE_EVENT( name, type ) \
|
#define wxDEFINE_EVENT( name, type ) \
|
||||||
const wxTypedEventType< type > name( wxNewEventType() );
|
const wxTypedEventType< type > name( wxNewEventType() );
|
||||||
|
|
||||||
#define wxDECLARE_EXPORTED_EVENT( expdecl, name, type ) \
|
#define wxDECLARE_EXPORTED_EVENT( expdecl, name, type ) \
|
||||||
extern const expdecl wxTypedEventType< type > name;
|
extern const expdecl wxTypedEventType< type > name;
|
||||||
|
|
||||||
|
// Define/Declare a templatized event type and initialize it with a
|
||||||
|
// predefined event type. (Only used for wxEVT_SPIN_XXX for backward
|
||||||
|
// compatibility)
|
||||||
|
|
||||||
#define wxDEFINE_EVENT_ALIAS( name, type, value ) \
|
#define wxDEFINE_EVENT_ALIAS( name, type, value ) \
|
||||||
const wxTypedEventType< type > name( value );
|
const wxTypedEventType< type > name( value );
|
||||||
|
|
||||||
#define wxDECLARE_EXPORTED_EVENT_ALIAS( expdecl, name, type ) \
|
#define wxDECLARE_EXPORTED_EVENT_ALIAS( expdecl, name, type ) \
|
||||||
extern const expdecl wxTypedEventType< type > name;
|
extern const expdecl wxTypedEventType< type > name;
|
||||||
|
|
||||||
|
// Declare a local (not exported) templatized event type:
|
||||||
|
|
||||||
#define wxDECLARE_LOCAL_EVENT( name, type ) \
|
#define wxDECLARE_LOCAL_EVENT( name, type ) \
|
||||||
wxDECLARE_EXPORTED_EVENT( wxEMPTY_PARAMETER_VALUE, name, type )
|
wxDECLARE_EXPORTED_EVENT( wxEMPTY_PARAMETER_VALUE, name, type )
|
||||||
|
|
||||||
|
// Don't cast the given event handler so that wxEvtHandler::Connect() sees
|
||||||
|
// the actual type:
|
||||||
|
|
||||||
#define wxEVENT_HANDLER_CAST( functype, func ) \
|
#define wxEVENT_HANDLER_CAST( functype, func ) \
|
||||||
( &func )
|
( &func )
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// template which associates the correct event object with the event type
|
// Template which associates the correct event object with the event type
|
||||||
|
|
||||||
#if !wxEVENTS_COMPATIBILITY_2_8
|
#if !wxEVENTS_COMPATIBILITY_2_8
|
||||||
|
|
||||||
@@ -152,7 +175,9 @@ public:
|
|||||||
|
|
||||||
wxTypedEventType(wxEventType type) { m_type = type; }
|
wxTypedEventType(wxEventType type) { m_type = type; }
|
||||||
|
|
||||||
// used for static event tables
|
// Return a wxEventType reference for the initialization of the static
|
||||||
|
// event tables. See wxEventTableEntry::m_eventType for a more thorough
|
||||||
|
// explanation.
|
||||||
operator const wxEventType&() const { return m_type; }
|
operator const wxEventType&() const { return m_type; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -174,13 +199,13 @@ typedef void (wxEvtHandler::*wxEventFunction)(wxEvent&);
|
|||||||
typedef wxEventFunction wxObjectEventFunction;
|
typedef wxEventFunction wxObjectEventFunction;
|
||||||
|
|
||||||
|
|
||||||
// the functors which will be stored in the static/dynamic tables
|
// The event functor which is stored in the static and dynamic event tables:
|
||||||
class WXDLLIMPEXP_BASE wxEventFunctor
|
class WXDLLIMPEXP_BASE wxEventFunctor
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual ~wxEventFunctor();
|
virtual ~wxEventFunctor();
|
||||||
|
|
||||||
// this operator is used to actually invoke the event handler
|
// Invoke the actual event handler:
|
||||||
virtual void operator()(wxEvtHandler *, wxEvent &) = 0;
|
virtual void operator()(wxEvtHandler *, wxEvent &) = 0;
|
||||||
|
|
||||||
// this function tests whether this functor is matched, for the purpose of
|
// this function tests whether this functor is matched, for the purpose of
|
||||||
@@ -2778,37 +2803,7 @@ public:
|
|||||||
wxObject *userData = NULL,
|
wxObject *userData = NULL,
|
||||||
wxEvtHandler *eventSink = NULL)
|
wxEvtHandler *eventSink = NULL)
|
||||||
{ return Disconnect(wxID_ANY, eventType, func, userData, eventSink); }
|
{ return Disconnect(wxID_ANY, eventType, func, userData, eventSink); }
|
||||||
|
|
||||||
|
|
||||||
#if !wxEVENTS_COMPATIBILITY_2_8
|
#if !wxEVENTS_COMPATIBILITY_2_8
|
||||||
//
|
|
||||||
// Connect a function to an event:
|
|
||||||
//
|
|
||||||
template <typename EventType>
|
|
||||||
void Connect(int winid,
|
|
||||||
int lastId,
|
|
||||||
const EventType &eventType,
|
|
||||||
void (*func)(typename EventType::CorrespondingEvent&),
|
|
||||||
wxObject* userData = NULL)
|
|
||||||
{
|
|
||||||
wxEventFunctorFunction< EventType > *functor = wxNewEventFunctor( eventType, func );
|
|
||||||
|
|
||||||
Subscribe( winid, lastId, eventType, functor, userData );
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename EventType>
|
|
||||||
void Connect( int winid,
|
|
||||||
const EventType &eventType,
|
|
||||||
void ( *func )( typename EventType::CorrespondingEvent & ),
|
|
||||||
wxObject* userData = NULL )
|
|
||||||
{ Connect( winid, wxID_ANY, eventType, func, userData ); }
|
|
||||||
|
|
||||||
template <typename EventType>
|
|
||||||
void Connect( const EventType &eventType,
|
|
||||||
void ( *func )( typename EventType::CorrespondingEvent & ),
|
|
||||||
wxObject* userData = NULL )
|
|
||||||
{ Connect( wxID_ANY, wxID_ANY, eventType, func, userData ); }
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Connect a method to an event:
|
// Connect a method to an event:
|
||||||
//
|
//
|
||||||
@@ -2900,6 +2895,34 @@ public:
|
|||||||
Derived *eventSink = NULL )
|
Derived *eventSink = NULL )
|
||||||
{ Connect( sender, wxID_ANY, wxID_ANY, eventType, func, userData, eventSink ); }
|
{ Connect( sender, wxID_ANY, wxID_ANY, eventType, func, userData, eventSink ); }
|
||||||
|
|
||||||
|
//
|
||||||
|
// Connect a function to an event:
|
||||||
|
//
|
||||||
|
template <typename EventType>
|
||||||
|
void Connect(int winid,
|
||||||
|
int lastId,
|
||||||
|
const EventType &eventType,
|
||||||
|
void (*func)(typename EventType::CorrespondingEvent&),
|
||||||
|
wxObject* userData = NULL)
|
||||||
|
{
|
||||||
|
wxEventFunctorFunction< EventType > *functor = wxNewEventFunctor( eventType, func );
|
||||||
|
|
||||||
|
Subscribe( winid, lastId, eventType, functor, userData );
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename EventType>
|
||||||
|
void Connect( int winid,
|
||||||
|
const EventType &eventType,
|
||||||
|
void ( *func )( typename EventType::CorrespondingEvent & ),
|
||||||
|
wxObject* userData = NULL )
|
||||||
|
{ Connect( winid, wxID_ANY, eventType, func, userData ); }
|
||||||
|
|
||||||
|
template <typename EventType>
|
||||||
|
void Connect( const EventType &eventType,
|
||||||
|
void ( *func )( typename EventType::CorrespondingEvent & ),
|
||||||
|
wxObject* userData = NULL )
|
||||||
|
{ Connect( wxID_ANY, wxID_ANY, eventType, func, userData ); }
|
||||||
|
|
||||||
//
|
//
|
||||||
// Connect an arbitrary functor to an event:
|
// Connect an arbitrary functor to an event:
|
||||||
//
|
//
|
||||||
|
Reference in New Issue
Block a user