]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/event.h
applied wxDirSelector() patch and regenerated the makefiles to include the new src...
[wxWidgets.git] / include / wx / event.h
index aa9a3b14256c1843cce755e1d02cb2b0f16b3f28..760e675e55c3293762496465464498a22105c8f0 100644 (file)
@@ -76,6 +76,7 @@ typedef int wxEventType;
 #define DECLARE_EVENT_TYPE(name, value) name = wxEVT_FIRST + value,
 #define DECLARE_LOCAL_EVENT_TYPE(name, value) name = wxEVT_FIRST + value,
 #define DEFINE_EVENT_TYPE(name)
+#define DEFINE_LOCAL_EVENT_TYPE(name)
 
 
 #else // !WXWIN_COMPATIBILITY_EVENT_TYPES
@@ -89,6 +90,7 @@ typedef int wxEventType;
     extern const wxEventType WXDLLEXPORT name;
 #define DECLARE_LOCAL_EVENT_TYPE(name, value) extern const wxEventType name;
 #define DEFINE_EVENT_TYPE(name) const wxEventType name = wxNewEventType();
+#define DEFINE_LOCAL_EVENT_TYPE(name) const wxEventType name = wxNewEventType();
 
 // generate a new unique event type
 extern WXDLLEXPORT wxEventType wxNewEventType();
@@ -1651,7 +1653,7 @@ struct WXDLLEXPORT wxEventTable
 // wxEvtHandler: the base class for all objects handling wxWindows events
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxEvtHandler : public wxObject, public wxClientDataContainer
+class WXDLLEXPORT wxEvtHandler : public wxObject
 {
 public:
     wxEvtHandler();
@@ -1701,6 +1703,15 @@ public:
                   wxObject *userData = (wxObject *) NULL )
         { return Disconnect(id, -1, eventType, func, userData); }
 
+
+    // User data can be associated with each wxEvtHandler
+    void SetClientObject( wxClientData *data ) { DoSetClientObject(data); }
+    wxClientData *GetClientObject() const { return DoGetClientObject(); }
+
+    void SetClientData( void *data ) { DoSetClientData(data); }
+    void *GetClientData() const { return DoGetClientData(); }
+
+
     // implementation from now on
     virtual bool SearchEventTable(wxEventTable& table, wxEvent& event);
     bool SearchDynamicEventTable( wxEvent& event );
@@ -1761,6 +1772,29 @@ protected:
     // Is event handler enabled?
     bool                m_enabled;
 
+
+    // The user data: either an object which will be deleted by the container
+    // when it's deleted or some raw pointer which we do nothing with - only
+    // one type of data can be used with the given window (i.e. you cannot set
+    // the void data and then associate the container with wxClientData or vice
+    // versa)
+    union
+    {
+        wxClientData *m_clientObject;
+        void         *m_clientData;
+    };
+
+    // what kind of data do we have?
+    wxClientDataType m_clientDataType;
+
+    // client data accessors
+    virtual void DoSetClientObject( wxClientData *data );
+    virtual wxClientData *DoGetClientObject() const;
+
+    virtual void DoSetClientData( void *data );
+    virtual void *DoGetClientData() const;
+
+
 private:
     DECLARE_DYNAMIC_CLASS(wxEvtHandler)
 };