]> git.saurik.com Git - wxWidgets.git/commitdiff
This form of the event cloning patch survived my
authorRobert Roebling <robert@roebling.de>
Sun, 18 Nov 2001 12:42:45 +0000 (12:42 +0000)
committerRobert Roebling <robert@roebling.de>
Sun, 18 Nov 2001 12:42:45 +0000 (12:42 +0000)
    thorough stress testing.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12476 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/latex/wx/event.tex
docs/latex/wx/evthand.tex
include/wx/event.h
src/common/event.cpp

index f747df581b16a6e2d5d26b51983906aa43245580..5d4403d78f5a9af604ec4acd67498f0ac88cd428 100644 (file)
@@ -25,13 +25,6 @@ event object, and is an abstract base class for other event classes (see below).
 
 Constructor. Should not need to be used directly by an application.
 
 
 Constructor. Should not need to be used directly by an application.
 
-\membersection{wxEvent::m\_eventHandle}
-
-\member{char*}{m\_eventHandle}
-
-Handle of an underlying windowing system event handle, such as
-XEvent. Not guaranteed to be instantiated.
-
 \membersection{wxEvent::m\_eventObject}
 
 \member{wxObject*}{m\_eventObject}
 \membersection{wxEvent::m\_eventObject}
 
 \member{wxObject*}{m\_eventObject}
@@ -63,6 +56,26 @@ Set to TRUE by {\bf Skip} if this event should be skipped.
 
 Timestamp for this event.
 
 
 Timestamp for this event.
 
+\membersection{wxEvent::Clone}\label{wxeventclone}
+
+\func{virtual wxEvent*}{Clone}{\void} const
+
+Returns a copy of the event.
+
+Any event that is posted to the wxWindows event system for later action (via
+\helpref{wxEvtHandler::AddPendingEvent}{wxevthandleraddpendingevent} or
+\helpref{wxPostEvent}{wxpostevent}) must implement this method. All wxWindows
+events fully implement this method, but any derived events implemented by the
+user should also implement this method just in case they (or some event
+derived from them) are ever posted.
+
+All wxWindows events implement a copy constructor, so the easiest way of
+implementing the Clone function is to implement a copy constructor for
+a new event (call it MyEvent) and then define the Clone function like this:
+\begin{verbatim}
+    wxEvent *Clone(void) const { return new MyEvent(*this); }
+\end{verbatim}
+
 \membersection{wxEvent::GetEventObject}
 
 \func{wxObject*}{GetEventObject}{\void}
 \membersection{wxEvent::GetEventObject}
 
 \func{wxObject*}{GetEventObject}{\void}
index cc269395f3c522414ddde35ea326fc9e8bdd2881..3b543f1a72bf6a49027685e03137a752dda5bc24 100644 (file)
@@ -36,9 +36,7 @@ each other.
 
 \func{virtual void}{AddPendingEvent}{\param{wxEvent\& }{event}}
 
 
 \func{virtual void}{AddPendingEvent}{\param{wxEvent\& }{event}}
 
-Adds an event to be processed later. The function will return immediately and the
-event will get processed in idle time using the \helpref{wxEvtHandler::ProcessEvent}{wxevthandlerprocessevent} 
-method.
+This function posts an event to be processed later.
 
 \wxheading{Parameters}
 
 
 \wxheading{Parameters}
 
@@ -46,26 +44,27 @@ method.
 
 \wxheading{Remarks}
 
 
 \wxheading{Remarks}
 
-Note that this requires that the event implements 
-\helpref{CopyObject}{wxobjectcopyobject} 
-method so that the event can be duplicated and stored until it gets processed later.
-Not all events in wxWindows currently fully implement this method,
-so you may have to look at the source to verify this.
-
-This methods automatically wakes up idle handling even if the underlying window 
-system is currently idle anyway and thus would not send any idle events. (Waking
-up the idle handling is done calling \helpref{::wxWakeUpIdle}{wxwakeupidle}.)
-
-This is also the method to call for inter-thread communication. In
-a multi-threaded program, you will often have to inform the main GUI thread
-about the status of other working threads and this has to be done using this
-method - which also means that this method is thread safe by means of using
-crtical sections where needed.
-
-% VZ: bad idea IMHO - we're going to have a lot of problems with this
-Furthermore, it may be noted that some ports of wxWindows will probably move
-to using this method more and more in preference over calling ProcessEvent()
-directly so as to avoid problems with reentrant code.
+The difference between sending an event (using the
+\helpref{ProcessEvent}{wxevthandlerprocessevent} method) and posting it is
+that in the first case the event is processed before the function returns,
+while in the second case, the function returns immediately and the event will
+be processed sometime later (usually during the next event loop iteration).
+
+A copy of {\it event} is made by the function, so the original can be deleted
+as soon as function returns (it is common that the original is created on the
+stack).  This requires that the \helpref{wxEvent::Clone}{wxeventclone} method
+be implemented by {\it event} so that it can be duplicated and stored until
+it gets processed.
+
+This is also the method to call for inter-thread communication---it will
+post events safely between different threads which means that this method is
+thread-safe by using critical sections where needed.  In a multi-threaded
+program, you often need to inform the main GUI thread about the status of
+other working threads and such notification should be done using this method.
+
+This method automatically wakes up idle handling if the underlying window 
+system is currently idle and thus would not send any idle events. (Waking
+up idle handling is done calling \helpref{::wxWakeUpIdle}{wxwakeupidle}.)
 
 \membersection{wxEvtHandler::Connect}\label{wxevthandlerconnect}
 
 
 \membersection{wxEvtHandler::Connect}\label{wxevthandlerconnect}
 
index 8189e166289c47b1d251d58c0d392e5139fc44f8..67958bb136c5e0e38483f924fe9ee282295927e8 100644 (file)
@@ -333,11 +333,11 @@ END_DECLARE_EVENT_TYPES()
 
 class WXDLLEXPORT wxEvent : public wxObject
 {
 
 class WXDLLEXPORT wxEvent : public wxObject
 {
-    DECLARE_ABSTRACT_CLASS(wxEvent)
+protected:
+    wxEvent(const wxEvent&);                   // for implementing Clone()
 
 public:
 
 public:
-    wxEvent(int id = 0);
-    ~wxEvent() {}
+    wxEvent(int id = 0, wxEventType commandType = wxEVT_NULL );
 
     void SetEventType(wxEventType typ) { m_eventType = typ; }
     wxEventType GetEventType() const { return m_eventType; }
 
     void SetEventType(wxEventType typ) { m_eventType = typ; }
     wxEventType GetEventType() const { return m_eventType; }
@@ -355,11 +355,12 @@ public:
     void Skip(bool skip = TRUE) { m_skipped = skip; }
     bool GetSkipped() const { return m_skipped; };
 
     void Skip(bool skip = TRUE) { m_skipped = skip; }
     bool GetSkipped() const { return m_skipped; };
 
-    // implementation only: this test is explicitlty anti OO and this functions
-    // exists only for optimization purposes
+    // Implementation only: this test is explicitlty anti OO and this functions
+    // exists only for optimization purposes.
     bool IsCommandEvent() const { return m_isCommandEvent; }
 
     bool IsCommandEvent() const { return m_isCommandEvent; }
 
-    void CopyObject(wxObject& object_dest) const;
+    // specialized clone function since it is done a lot
+    virtual wxEvent *Clone() const { return new wxEvent(*this); }
 
 public:
     wxObject*         m_eventObject;
 
 public:
     wxObject*         m_eventObject;
@@ -368,10 +369,10 @@ public:
     int               m_id;
     wxObject*         m_callbackUserData;
     bool              m_skipped;
     int               m_id;
     wxObject*         m_callbackUserData;
     bool              m_skipped;
-
-    // optimization: instead of using costly IsKindOf() we keep a flag telling
-    // whether we're a command event (by far the most common case)
     bool              m_isCommandEvent;
     bool              m_isCommandEvent;
+
+private:
+    DECLARE_ABSTRACT_CLASS(wxEvent)
 };
 
 #if wxUSE_GUI
 };
 
 #if wxUSE_GUI
@@ -397,16 +398,8 @@ public:
 
 class WXDLLEXPORT wxCommandEvent : public wxEvent
 {
 
 class WXDLLEXPORT wxCommandEvent : public wxEvent
 {
-    DECLARE_DYNAMIC_CLASS(wxCommandEvent)
-
 public:
     wxCommandEvent(wxEventType commandType = wxEVT_NULL, int id = 0);
 public:
     wxCommandEvent(wxEventType commandType = wxEVT_NULL, int id = 0);
-    ~wxCommandEvent() {}
-
-    /*
-     * Accessors dependent on context
-     *
-     */
 
     // Set/Get client data from controls
     void SetClientData(void* clientData) { m_clientData = clientData; }
 
     // Set/Get client data from controls
     void SetClientData(void* clientData) { m_clientData = clientData; }
@@ -435,7 +428,7 @@ public:
     void SetInt(int i) { m_commandInt = i; }
     long GetInt() const { return m_commandInt ; }
 
     void SetInt(int i) { m_commandInt = i; }
     long GetInt() const { return m_commandInt ; }
 
-    void CopyObject(wxObject& obj) const;
+    virtual wxEvent *Clone() const { return new wxCommandEvent(*this); }
 
 #if WXWIN_COMPATIBILITY_2
     bool Checked() const { return IsChecked(); }
 
 #if WXWIN_COMPATIBILITY_2
     bool Checked() const { return IsChecked(); }
@@ -447,6 +440,9 @@ public:
     long              m_extraLong;     // Additional information (e.g. select/deselect)
     void*             m_clientData;    // Arbitrary client data
     wxClientData*     m_clientObject;  // Arbitrary client object
     long              m_extraLong;     // Additional information (e.g. select/deselect)
     void*             m_clientData;    // Arbitrary client data
     wxClientData*     m_clientObject;  // Arbitrary client object
+    
+private:
+    DECLARE_DYNAMIC_CLASS(wxCommandEvent)
 };
 
 // this class adds a possibility to react (from the user) code to a control
 };
 
 // this class adds a possibility to react (from the user) code to a control
@@ -466,13 +462,12 @@ public:
     // for implementation code only: is the operation allowed?
     bool IsAllowed() const { return m_bAllow; }
 
     // for implementation code only: is the operation allowed?
     bool IsAllowed() const { return m_bAllow; }
 
-    // probably useless: CopyObject() is used for deferred event
-    // handling but wxNotifyEvent must be processed immediately
-    void CopyObject(wxObject& obj) const;
+    virtual wxEvent *Clone() const { return new wxNotifyEvent(*this); }
 
 private:
     bool m_bAllow;
 
 
 private:
     bool m_bAllow;
 
+private:
     DECLARE_DYNAMIC_CLASS(wxNotifyEvent)
 };
 
     DECLARE_DYNAMIC_CLASS(wxNotifyEvent)
 };
 
@@ -491,22 +486,19 @@ private:
 
 class WXDLLEXPORT wxScrollEvent : public wxCommandEvent
 {
 
 class WXDLLEXPORT wxScrollEvent : public wxCommandEvent
 {
-    DECLARE_DYNAMIC_CLASS(wxScrollEvent)
-
 public:
     wxScrollEvent(wxEventType commandType = wxEVT_NULL,
                   int id = 0, int pos = 0, int orient = 0);
 public:
     wxScrollEvent(wxEventType commandType = wxEVT_NULL,
                   int id = 0, int pos = 0, int orient = 0);
-    ~wxScrollEvent() {}
-
-    /*
-     * Accessors
-     *
-     */
 
     int GetOrientation() const { return (int) m_extraLong ; }
     int GetPosition() const { return m_commandInt ; }
     void SetOrientation(int orient) { m_extraLong = (long) orient; }
     void SetPosition(int pos) { m_commandInt = pos; }
 
     int GetOrientation() const { return (int) m_extraLong ; }
     int GetPosition() const { return m_commandInt ; }
     void SetOrientation(int orient) { m_extraLong = (long) orient; }
     void SetPosition(int pos) { m_commandInt = pos; }
+    
+    virtual wxEvent *Clone() const { return new wxScrollEvent(*this); }
+    
+private:
+    DECLARE_DYNAMIC_CLASS(wxScrollEvent)
 };
 
 // ScrollWin event class, derived fom wxEvent. wxScrollWinEvents
 };
 
 // ScrollWin event class, derived fom wxEvent. wxScrollWinEvents
@@ -527,23 +519,19 @@ class WXDLLEXPORT wxScrollWinEvent : public wxEvent
 public:
     wxScrollWinEvent(wxEventType commandType = wxEVT_NULL,
                      int pos = 0, int orient = 0);
 public:
     wxScrollWinEvent(wxEventType commandType = wxEVT_NULL,
                      int pos = 0, int orient = 0);
-    ~wxScrollWinEvent() {}
-
-    /*
-     * Accessors
-     */
 
     int GetOrientation() const { return (int) m_extraLong ; }
     int GetPosition() const { return m_commandInt ; }
     void SetOrientation(int orient) { m_extraLong = (long) orient; }
     void SetPosition(int pos) { m_commandInt = pos; }
 
 
     int GetOrientation() const { return (int) m_extraLong ; }
     int GetPosition() const { return m_commandInt ; }
     void SetOrientation(int orient) { m_extraLong = (long) orient; }
     void SetPosition(int pos) { m_commandInt = pos; }
 
-    void CopyObject(wxObject& object_dest) const;
+    virtual wxEvent *Clone() const { return new wxScrollWinEvent(*this); }
 
 public:
 
 public:
-    int               m_commandInt;    // Additional information
+    int               m_commandInt;
     long              m_extraLong;
 
     long              m_extraLong;
 
+private:
     DECLARE_DYNAMIC_CLASS(wxScrollWinEvent)
 };
 
     DECLARE_DYNAMIC_CLASS(wxScrollWinEvent)
 };
 
@@ -708,8 +696,7 @@ public:
     // wheel action.  Defaults to one.
     int GetLinesPerAction() const { return m_linesPerAction; }
 
     // wheel action.  Defaults to one.
     int GetLinesPerAction() const { return m_linesPerAction; }
 
-
-    void CopyObject(wxObject& obj) const;
+    virtual wxEvent *Clone() const { return new wxMouseEvent(*this); }
 
 public:
     wxCoord m_x, m_y;
 
 public:
     wxCoord m_x, m_y;
@@ -740,7 +727,7 @@ private:
 class WXDLLEXPORT wxSetCursorEvent : public wxEvent
 {
 public:
 class WXDLLEXPORT wxSetCursorEvent : public wxEvent
 {
 public:
-    wxSetCursorEvent(wxCoord x, wxCoord y)
+    wxSetCursorEvent(wxCoord x = 0, wxCoord y = 0)
     {
         m_eventType = wxEVT_SET_CURSOR;
 
     {
         m_eventType = wxEVT_SET_CURSOR;
 
@@ -755,9 +742,14 @@ public:
     const wxCursor& GetCursor() const { return m_cursor; }
     bool HasCursor() const { return m_cursor.Ok(); }
 
     const wxCursor& GetCursor() const { return m_cursor; }
     bool HasCursor() const { return m_cursor.Ok(); }
 
+    virtual wxEvent *Clone() const { return new wxSetCursorEvent(*this); }
+    
 private:
     wxCoord  m_x, m_y;
     wxCursor m_cursor;
 private:
     wxCoord  m_x, m_y;
     wxCursor m_cursor;
+    
+private:
+    DECLARE_DYNAMIC_CLASS(wxSetCursorEvent)
 };
 
 // Keyboard input event class
 };
 
 // Keyboard input event class
@@ -771,8 +763,6 @@ private:
 
 class WXDLLEXPORT wxKeyEvent : public wxEvent
 {
 
 class WXDLLEXPORT wxKeyEvent : public wxEvent
 {
-    DECLARE_DYNAMIC_CLASS(wxKeyEvent)
-
 public:
     wxKeyEvent(wxEventType keyType = wxEVT_NULL);
 
 public:
     wxKeyEvent(wxEventType keyType = wxEVT_NULL);
 
@@ -814,11 +804,11 @@ public:
     // Get Y position
     wxCoord GetY() const { return m_y; }
 
     // Get Y position
     wxCoord GetY() const { return m_y; }
 
-    void CopyObject(wxObject& obj) const;
-
     // deprecated
     long KeyCode() const { return m_keyCode; }
 
     // deprecated
     long KeyCode() const { return m_keyCode; }
 
+    virtual wxEvent *Clone() const { return new wxKeyEvent(*this); }
+    
 public:
     wxCoord       m_x, m_y;
 
 public:
     wxCoord       m_x, m_y;
 
@@ -829,6 +819,9 @@ public:
     bool          m_altDown;
     bool          m_metaDown;
     bool          m_scanCode;
     bool          m_altDown;
     bool          m_metaDown;
     bool          m_scanCode;
+    
+private:
+    DECLARE_DYNAMIC_CLASS(wxKeyEvent)
 };
 
 // Size event class
 };
 
 // Size event class
@@ -838,11 +831,7 @@ public:
 
 class WXDLLEXPORT wxSizeEvent : public wxEvent
 {
 
 class WXDLLEXPORT wxSizeEvent : public wxEvent
 {
-    DECLARE_DYNAMIC_CLASS(wxSizeEvent)
-
 public:
 public:
-    wxSize m_size;
-
     wxSizeEvent() { m_eventType = wxEVT_SIZE; }
     wxSizeEvent(const wxSize& sz, int id = 0)
         : m_size(sz)
     wxSizeEvent() { m_eventType = wxEVT_SIZE; }
     wxSizeEvent(const wxSize& sz, int id = 0)
         : m_size(sz)
@@ -850,7 +839,13 @@ public:
 
     wxSize GetSize() const { return m_size; }
 
 
     wxSize GetSize() const { return m_size; }
 
-    void CopyObject(wxObject& obj) const;
+    virtual wxEvent *Clone() const { return new wxSizeEvent(*this); }
+
+public:
+    wxSize m_size;
+
+private:    
+    DECLARE_DYNAMIC_CLASS(wxSizeEvent)
 };
 
 // Move event class
 };
 
 // Move event class
@@ -861,11 +856,7 @@ public:
 
 class WXDLLEXPORT wxMoveEvent : public wxEvent
 {
 
 class WXDLLEXPORT wxMoveEvent : public wxEvent
 {
-    DECLARE_DYNAMIC_CLASS(wxMoveEvent)
-
 public:
 public:
-    wxPoint m_pos;
-
     wxMoveEvent() { m_eventType = wxEVT_MOVE; }
     wxMoveEvent(const wxPoint& pos, int id = 0)
         : m_pos(pos)
     wxMoveEvent() { m_eventType = wxEVT_MOVE; }
     wxMoveEvent(const wxPoint& pos, int id = 0)
         : m_pos(pos)
@@ -873,7 +864,12 @@ public:
 
     wxPoint GetPosition() const { return m_pos; }
 
 
     wxPoint GetPosition() const { return m_pos; }
 
-    void CopyObject(wxObject& obj) const;
+    virtual wxEvent *Clone() const { return new wxMoveEvent(*this); }
+    
+    wxPoint m_pos;
+    
+private:
+    DECLARE_DYNAMIC_CLASS(wxMoveEvent)
 };
 
 // Paint event class
 };
 
 // Paint event class
@@ -890,8 +886,6 @@ public:
 
 class WXDLLEXPORT wxPaintEvent : public wxEvent
 {
 
 class WXDLLEXPORT wxPaintEvent : public wxEvent
 {
-    DECLARE_DYNAMIC_CLASS(wxPaintEvent)
-
 public:
     wxPaintEvent(int Id = 0)
     {
 public:
     wxPaintEvent(int Id = 0)
     {
@@ -910,12 +904,19 @@ public:
         g_isPainting--;
     }
 #endif // debug
         g_isPainting--;
     }
 #endif // debug
+
+    virtual wxEvent *Clone() const { return new wxPaintEvent(*this); }
+    
+private:
+    DECLARE_DYNAMIC_CLASS(wxPaintEvent)
 };
 
 class WXDLLEXPORT wxNcPaintEvent : public wxEvent
 {
 public:
     wxNcPaintEvent(int id = 0) : wxEvent(id) { SetEventType(wxEVT_NC_PAINT); }
 };
 
 class WXDLLEXPORT wxNcPaintEvent : public wxEvent
 {
 public:
     wxNcPaintEvent(int id = 0) : wxEvent(id) { SetEventType(wxEVT_NC_PAINT); }
+    
+    virtual wxEvent *Clone() const { return new wxNcPaintEvent(*this); }
 
 private:
     DECLARE_DYNAMIC_CLASS(wxNcPaintEvent)
 
 private:
     DECLARE_DYNAMIC_CLASS(wxNcPaintEvent)
@@ -928,16 +929,18 @@ private:
 
 class WXDLLEXPORT wxEraseEvent : public wxEvent
 {
 
 class WXDLLEXPORT wxEraseEvent : public wxEvent
 {
-    DECLARE_DYNAMIC_CLASS(wxEraseEvent)
-
 public:
 public:
-    wxDC *m_dc;
-
     wxEraseEvent(int Id = 0, wxDC *dc = (wxDC *) NULL)
         { m_eventType = wxEVT_ERASE_BACKGROUND; m_id = Id; m_dc = dc; }
     wxEraseEvent(int Id = 0, wxDC *dc = (wxDC *) NULL)
         { m_eventType = wxEVT_ERASE_BACKGROUND; m_id = Id; m_dc = dc; }
+        
     wxDC *GetDC() const { return m_dc; }
 
     wxDC *GetDC() const { return m_dc; }
 
-    void CopyObject(wxObject& obj) const;
+    virtual wxEvent *Clone() const { return new wxEraseEvent(*this); }
+    
+    wxDC *m_dc;
+
+private:
+    DECLARE_DYNAMIC_CLASS(wxEraseEvent)
 };
 
 // Focus event class
 };
 
 // Focus event class
@@ -952,17 +955,18 @@ public:
     wxFocusEvent(wxEventType type = wxEVT_NULL, int id = 0)
         { m_eventType = type; m_id = id; m_win = NULL; }
 
     wxFocusEvent(wxEventType type = wxEVT_NULL, int id = 0)
         { m_eventType = type; m_id = id; m_win = NULL; }
 
-    // the window associated with this event is the window which had focus
+    // The window associated with this event is the window which had focus
     // before for SET event and the window which will have focus for the KILL
     // before for SET event and the window which will have focus for the KILL
-    // one
-    //
-    // NB: it may be NULL in both cases!
+    // one. NB: it may be NULL in both cases!
     wxWindow *GetWindow() const { return m_win; }
     void SetWindow(wxWindow *win) { m_win = win; }
 
     wxWindow *GetWindow() const { return m_win; }
     void SetWindow(wxWindow *win) { m_win = win; }
 
+    virtual wxEvent *Clone() const { return new wxFocusEvent(*this); }
+    
 private:
     wxWindow *m_win;
 
 private:
     wxWindow *m_win;
 
+private:
     DECLARE_DYNAMIC_CLASS(wxFocusEvent)
 };
 
     DECLARE_DYNAMIC_CLASS(wxFocusEvent)
 };
 
@@ -975,6 +979,9 @@ public:
 
     wxWindow *GetWindow() const { return (wxWindow *)GetEventObject(); }
 
 
     wxWindow *GetWindow() const { return (wxWindow *)GetEventObject(); }
 
+    virtual wxEvent *Clone() const { return new wxChildFocusEvent(*this); }
+    
+private:
     DECLARE_DYNAMIC_CLASS(wxChildFocusEvent)
 };
 
     DECLARE_DYNAMIC_CLASS(wxChildFocusEvent)
 };
 
@@ -986,17 +993,19 @@ public:
 
 class WXDLLEXPORT wxActivateEvent : public wxEvent
 {
 
 class WXDLLEXPORT wxActivateEvent : public wxEvent
 {
-    DECLARE_DYNAMIC_CLASS(wxActivateEvent)
-
 public:
     wxActivateEvent(wxEventType type = wxEVT_NULL, bool active = TRUE, int Id = 0)
         { m_eventType = type; m_active = active; m_id = Id; }
 public:
     wxActivateEvent(wxEventType type = wxEVT_NULL, bool active = TRUE, int Id = 0)
         { m_eventType = type; m_active = active; m_id = Id; }
+        
     bool GetActive() const { return m_active; }
 
     bool GetActive() const { return m_active; }
 
-    void CopyObject(wxObject& obj) const;
+    virtual wxEvent *Clone() const { return new wxActivateEvent(*this); }
 
 private:
     bool m_active;
 
 private:
     bool m_active;
+
+private:
+    DECLARE_DYNAMIC_CLASS(wxActivateEvent)
 };
 
 // InitDialog event class
 };
 
 // InitDialog event class
@@ -1006,11 +1015,14 @@ private:
 
 class WXDLLEXPORT wxInitDialogEvent : public wxEvent
 {
 
 class WXDLLEXPORT wxInitDialogEvent : public wxEvent
 {
-    DECLARE_DYNAMIC_CLASS(wxInitDialogEvent)
-
 public:
     wxInitDialogEvent(int Id = 0)
         { m_eventType = wxEVT_INIT_DIALOG; m_id = Id; }
 public:
     wxInitDialogEvent(int Id = 0)
         { m_eventType = wxEVT_INIT_DIALOG; m_id = Id; }
+
+    virtual wxEvent *Clone() const { return new wxInitDialogEvent(*this); }
+    
+private:        
+    DECLARE_DYNAMIC_CLASS(wxInitDialogEvent)
 };
 
 // Miscellaneous menu event class
 };
 
 // Miscellaneous menu event class
@@ -1023,17 +1035,19 @@ public:
 
 class WXDLLEXPORT wxMenuEvent : public wxEvent
 {
 
 class WXDLLEXPORT wxMenuEvent : public wxEvent
 {
-    DECLARE_DYNAMIC_CLASS(wxMenuEvent)
-
 public:
     wxMenuEvent(wxEventType type = wxEVT_NULL, int id = 0)
       { m_eventType = type; m_menuId = id; m_id = id; }
 
     int GetMenuId() const { return m_menuId; }
 
 public:
     wxMenuEvent(wxEventType type = wxEVT_NULL, int id = 0)
       { m_eventType = type; m_menuId = id; m_id = id; }
 
     int GetMenuId() const { return m_menuId; }
 
-    void CopyObject(wxObject& obj) const;
+    virtual wxEvent *Clone() const { return new wxMenuEvent(*this); }
+    
 private:
     int m_menuId;
 private:
     int m_menuId;
+    
+private:
+    DECLARE_DYNAMIC_CLASS(wxMenuEvent)
 };
 
 // Window close or session close event class
 };
 
 // Window close or session close event class
@@ -1045,8 +1059,6 @@ private:
 
 class WXDLLEXPORT wxCloseEvent : public wxEvent
 {
 
 class WXDLLEXPORT wxCloseEvent : public wxEvent
 {
-    DECLARE_DYNAMIC_CLASS(wxCloseEvent)
-
 public:
     wxCloseEvent(wxEventType type = wxEVT_NULL, int id = 0)
     {
 public:
     wxCloseEvent(wxEventType type = wxEVT_NULL, int id = 0)
     {
@@ -1084,7 +1096,7 @@ public:
     bool GetForce() const { return m_force; }
 #endif
 
     bool GetForce() const { return m_force; }
 #endif
 
-    void CopyObject(wxObject& obj) const;
+    virtual wxEvent *Clone() const { return new wxCloseEvent(*this); }
 
 protected:
     bool m_loggingOff;
 
 protected:
     bool m_loggingOff;
@@ -1093,6 +1105,10 @@ protected:
 #if WXWIN_COMPATIBILITY
     bool m_force;
 #endif
 #if WXWIN_COMPATIBILITY
     bool m_force;
 #endif
+
+private:
+    DECLARE_DYNAMIC_CLASS(wxCloseEvent)
+
 };
 
 /*
 };
 
 /*
@@ -1108,11 +1124,12 @@ public:
     void SetShow(bool show) { m_show = show; }
     bool GetShow() const { return m_show; }
 
     void SetShow(bool show) { m_show = show; }
     bool GetShow() const { return m_show; }
 
-    void CopyObject(wxObject& obj) const;
+    virtual wxEvent *Clone() const { return new wxShowEvent(*this); }
 
 protected:
     bool m_show;
 
 
 protected:
     bool m_show;
 
+private:
     DECLARE_DYNAMIC_CLASS(wxShowEvent)
 };
 
     DECLARE_DYNAMIC_CLASS(wxShowEvent)
 };
 
@@ -1129,12 +1146,14 @@ public:
     // return true if the frame was iconized, false if restored
     bool Iconized() const { return m_iconized; }
 
     // return true if the frame was iconized, false if restored
     bool Iconized() const { return m_iconized; }
 
+    virtual wxEvent *Clone() const { return new wxIconizeEvent(*this); }
+    
 protected:
     bool m_iconized;
 
 protected:
     bool m_iconized;
 
+private:
     DECLARE_DYNAMIC_CLASS(wxIconizeEvent)
 };
     DECLARE_DYNAMIC_CLASS(wxIconizeEvent)
 };
-
 /*
  wxEVT_MAXIMIZE
  */
 /*
  wxEVT_MAXIMIZE
  */
@@ -1145,6 +1164,9 @@ public:
     wxMaximizeEvent(int id = 0)
         { m_eventType = wxEVT_MAXIMIZE; m_id = id; }
 
     wxMaximizeEvent(int id = 0)
         { m_eventType = wxEVT_MAXIMIZE; m_id = id; }
 
+    virtual wxEvent *Clone() const { return new wxMaximizeEvent(*this); }
+    
+private:
     DECLARE_DYNAMIC_CLASS(wxMaximizeEvent)
 };
 
     DECLARE_DYNAMIC_CLASS(wxMaximizeEvent)
 };
 
@@ -1169,8 +1191,6 @@ public:
 
 class WXDLLEXPORT wxJoystickEvent : public wxEvent
 {
 
 class WXDLLEXPORT wxJoystickEvent : public wxEvent
 {
-    DECLARE_DYNAMIC_CLASS(wxJoystickEvent)
-
 public:
     wxPoint   m_pos;
     int       m_zPosition;
 public:
     wxPoint   m_pos;
     int       m_zPosition;
@@ -1228,7 +1248,10 @@ public:
     { return (((but == wxJOY_BUTTON_ANY) && (m_buttonState != 0)) ||
             ((m_buttonState & but) == but)); }
 
     { return (((but == wxJOY_BUTTON_ANY) && (m_buttonState != 0)) ||
             ((m_buttonState & but) == but)); }
 
-    void CopyObject(wxObject& obj) const;
+    virtual wxEvent *Clone() const { return new wxJoystickEvent(*this); }
+    
+private:
+    DECLARE_DYNAMIC_CLASS(wxJoystickEvent)
 };
 
 // Drop files event class
 };
 
 // Drop files event class
@@ -1238,8 +1261,6 @@ public:
 
 class WXDLLEXPORT wxDropFilesEvent : public wxEvent
 {
 
 class WXDLLEXPORT wxDropFilesEvent : public wxEvent
 {
-    DECLARE_DYNAMIC_CLASS(wxDropFilesEvent)
-
 public:
     int       m_noFiles;
     wxPoint   m_pos;
 public:
     int       m_noFiles;
     wxPoint   m_pos;
@@ -1254,7 +1275,10 @@ public:
     int GetNumberOfFiles() const { return m_noFiles; }
     wxString *GetFiles() const { return m_files; }
 
     int GetNumberOfFiles() const { return m_noFiles; }
     wxString *GetFiles() const { return m_files; }
 
-    void CopyObject(wxObject& obj) const;
+    virtual wxEvent *Clone() const { wxFAIL_MSG("error"); return NULL; }
+    
+private:
+    DECLARE_DYNAMIC_CLASS(wxDropFilesEvent)
 };
 
 // Update UI event
 };
 
 // Update UI event
@@ -1264,8 +1288,6 @@ public:
 
 class WXDLLEXPORT wxUpdateUIEvent : public wxCommandEvent
 {
 
 class WXDLLEXPORT wxUpdateUIEvent : public wxCommandEvent
 {
-    DECLARE_DYNAMIC_CLASS(wxUpdateUIEvent)
-
 public:
     wxUpdateUIEvent(wxWindowID commandId = 0)
     {
 public:
     wxUpdateUIEvent(wxWindowID commandId = 0)
     {
@@ -1290,7 +1312,7 @@ public:
     void Enable(bool enable) { m_enabled = enable; m_setEnabled = TRUE; }
     void SetText(const wxString& text) { m_text = text; m_setText = TRUE; }
 
     void Enable(bool enable) { m_enabled = enable; m_setEnabled = TRUE; }
     void SetText(const wxString& text) { m_text = text; m_setText = TRUE; }
 
-    void CopyObject(wxObject& obj) const;
+    virtual wxEvent *Clone() const { return new wxUpdateUIEvent(*this); }
 
 protected:
     bool          m_checked;
 
 protected:
     bool          m_checked;
@@ -1299,6 +1321,9 @@ protected:
     bool          m_setText;
     bool          m_setChecked;
     wxString      m_text;
     bool          m_setText;
     bool          m_setChecked;
     wxString      m_text;
+    
+private:
+    DECLARE_DYNAMIC_CLASS(wxUpdateUIEvent)
 };
 
 /*
 };
 
 /*
@@ -1308,11 +1333,14 @@ protected:
 // TODO: shouldn't all events record the window ID?
 class WXDLLEXPORT wxSysColourChangedEvent : public wxEvent
 {
 // TODO: shouldn't all events record the window ID?
 class WXDLLEXPORT wxSysColourChangedEvent : public wxEvent
 {
-    DECLARE_DYNAMIC_CLASS(wxSysColourChangedEvent)
-
 public:
     wxSysColourChangedEvent()
         { m_eventType = wxEVT_SYS_COLOUR_CHANGED; }
 public:
     wxSysColourChangedEvent()
         { m_eventType = wxEVT_SYS_COLOUR_CHANGED; }
+        
+    virtual wxEvent *Clone() const { return new wxSysColourChangedEvent(*this); }
+    
+private:
+    DECLARE_DYNAMIC_CLASS(wxSysColourChangedEvent)
 };
 
 /*
 };
 
 /*
@@ -1321,8 +1349,6 @@ public:
 
 class WXDLLEXPORT wxPaletteChangedEvent : public wxEvent
 {
 
 class WXDLLEXPORT wxPaletteChangedEvent : public wxEvent
 {
-    DECLARE_DYNAMIC_CLASS(wxPaletteChangedEvent)
-
 public:
     wxPaletteChangedEvent(wxWindowID id = 0) : wxEvent(id)
     {
 public:
     wxPaletteChangedEvent(wxWindowID id = 0) : wxEvent(id)
     {
@@ -1333,10 +1359,13 @@ public:
     void SetChangedWindow(wxWindow* win) { m_changedWindow = win; }
     wxWindow* GetChangedWindow() const { return m_changedWindow; }
 
     void SetChangedWindow(wxWindow* win) { m_changedWindow = win; }
     wxWindow* GetChangedWindow() const { return m_changedWindow; }
 
-    void CopyObject(wxObject& obj) const;
+    virtual wxEvent *Clone() const { return new wxPaletteChangedEvent(*this); }
 
 protected:
     wxWindow*     m_changedWindow;
 
 protected:
     wxWindow*     m_changedWindow;
+
+private:
+    DECLARE_DYNAMIC_CLASS(wxPaletteChangedEvent)
 };
 
 /*
 };
 
 /*
@@ -1346,8 +1375,6 @@ protected:
 
 class WXDLLEXPORT wxQueryNewPaletteEvent : public wxEvent
 {
 
 class WXDLLEXPORT wxQueryNewPaletteEvent : public wxEvent
 {
-    DECLARE_DYNAMIC_CLASS(wxQueryNewPaletteEvent)
-
 public:
     wxQueryNewPaletteEvent(wxWindowID id = 0): wxEvent(id)
         { m_eventType = wxEVT_QUERY_NEW_PALETTE; m_paletteRealized = FALSE; }
 public:
     wxQueryNewPaletteEvent(wxWindowID id = 0): wxEvent(id)
         { m_eventType = wxEVT_QUERY_NEW_PALETTE; m_paletteRealized = FALSE; }
@@ -1356,10 +1383,13 @@ public:
     void SetPaletteRealized(bool realized) { m_paletteRealized = realized; }
     bool GetPaletteRealized() const { return m_paletteRealized; }
 
     void SetPaletteRealized(bool realized) { m_paletteRealized = realized; }
     bool GetPaletteRealized() const { return m_paletteRealized; }
 
-    void CopyObject(wxObject& obj) const;
+    virtual wxEvent *Clone() const { return new wxQueryNewPaletteEvent(*this); }
 
 protected:
     bool m_paletteRealized;
 
 protected:
     bool m_paletteRealized;
+    
+private:
+    DECLARE_DYNAMIC_CLASS(wxQueryNewPaletteEvent)
 };
 
 /*
 };
 
 /*
@@ -1404,6 +1434,8 @@ public:
     wxWindow* GetCurrentFocus() const { return m_focus; }
     void SetCurrentFocus(wxWindow *win) { m_focus = win; }
 
     wxWindow* GetCurrentFocus() const { return m_focus; }
     void SetCurrentFocus(wxWindow *win) { m_focus = win; }
 
+    virtual wxEvent *Clone() const { return new wxNavigationKeyEvent(*this); }
+
 private:
     enum
     {
 private:
     enum
     {
@@ -1415,6 +1447,7 @@ private:
     long m_flags;
     wxWindow *m_focus;
 
     long m_flags;
     wxWindow *m_focus;
 
+private:
     DECLARE_DYNAMIC_CLASS(wxNavigationKeyEvent)
 };
 
     DECLARE_DYNAMIC_CLASS(wxNavigationKeyEvent)
 };
 
@@ -1430,22 +1463,28 @@ private:
 
 class WXDLLEXPORT wxWindowCreateEvent : public wxCommandEvent
 {
 
 class WXDLLEXPORT wxWindowCreateEvent : public wxCommandEvent
 {
-    DECLARE_DYNAMIC_CLASS(wxWindowCreateEvent)
-
 public:
     wxWindowCreateEvent(wxWindow *win = NULL);
 
     wxWindow *GetWindow() const { return (wxWindow *)GetEventObject(); }
 public:
     wxWindowCreateEvent(wxWindow *win = NULL);
 
     wxWindow *GetWindow() const { return (wxWindow *)GetEventObject(); }
+    
+    virtual wxEvent *Clone() const { return new wxWindowCreateEvent(*this); }
+    
+private:
+    DECLARE_DYNAMIC_CLASS(wxWindowCreateEvent)
 };
 
 class WXDLLEXPORT wxWindowDestroyEvent : public wxCommandEvent
 {
 };
 
 class WXDLLEXPORT wxWindowDestroyEvent : public wxCommandEvent
 {
-    DECLARE_DYNAMIC_CLASS(wxWindowDestroyEvent)
-
 public:
     wxWindowDestroyEvent(wxWindow *win = NULL);
 
     wxWindow *GetWindow() const { return (wxWindow *)GetEventObject(); }
 public:
     wxWindowDestroyEvent(wxWindow *win = NULL);
 
     wxWindow *GetWindow() const { return (wxWindow *)GetEventObject(); }
+    
+    virtual wxEvent *Clone() const { return new wxWindowDestroyEvent(*this); }
+
+private:
+    DECLARE_DYNAMIC_CLASS(wxWindowDestroyEvent)
 };
 
 // A help event is sent when the user clicks on a window in context-help mode.
 };
 
 // A help event is sent when the user clicks on a window in context-help mode.
@@ -1478,6 +1517,8 @@ public:
     const wxString& GetTarget() const { return m_target; }
     void SetTarget(const wxString& target) { m_target = target; }
 
     const wxString& GetTarget() const { return m_target; }
     void SetTarget(const wxString& target) { m_target = target; }
 
+    virtual wxEvent *Clone() const { return new wxHelpEvent(*this); }
+    
 protected:
     wxPoint   m_pos;
     wxString  m_target;
 protected:
     wxPoint   m_pos;
     wxString  m_target;
@@ -1511,6 +1552,8 @@ public:
     const wxPoint& GetPosition() const { return m_pos; }
     void SetPosition(const wxPoint& pos) { m_pos = pos; }
 
     const wxPoint& GetPosition() const { return m_pos; }
     void SetPosition(const wxPoint& pos) { m_pos = pos; }
 
+    virtual wxEvent *Clone() const { return new wxContextMenuEvent(*this); }
+    
 protected:
     wxPoint   m_pos;
 
 protected:
     wxPoint   m_pos;
 
@@ -1525,8 +1568,6 @@ private:
 
 class WXDLLEXPORT wxIdleEvent : public wxEvent
 {
 
 class WXDLLEXPORT wxIdleEvent : public wxEvent
 {
-    DECLARE_DYNAMIC_CLASS(wxIdleEvent)
-
 public:
     wxIdleEvent()
         { m_eventType = wxEVT_IDLE; m_requestMore = FALSE; }
 public:
     wxIdleEvent()
         { m_eventType = wxEVT_IDLE; m_requestMore = FALSE; }
@@ -1534,10 +1575,13 @@ public:
     void RequestMore(bool needMore = TRUE) { m_requestMore = needMore; }
     bool MoreRequested() const { return m_requestMore; }
 
     void RequestMore(bool needMore = TRUE) { m_requestMore = needMore; }
     bool MoreRequested() const { return m_requestMore; }
 
-    void CopyObject(wxObject& obj) const;
+    virtual wxEvent *Clone() const { return new wxIdleEvent(*this); }
 
 protected:
     bool m_requestMore;
 
 protected:
     bool m_requestMore;
+    
+private:
+    DECLARE_DYNAMIC_CLASS(wxIdleEvent)
 };
 
 #endif // wxUSE_GUI
 };
 
 #endif // wxUSE_GUI
index 221360d838a463bba53f53e8fd9ddac87a15e373..6bdc802f27a571ce2c9c9662befee82f78cc398b 100644 (file)
@@ -77,6 +77,7 @@ IMPLEMENT_ABSTRACT_CLASS(wxEvent, wxObject)
     IMPLEMENT_DYNAMIC_CLASS(wxDropFilesEvent, wxEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxActivateEvent, wxEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxInitDialogEvent, wxEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxDropFilesEvent, wxEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxActivateEvent, wxEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxInitDialogEvent, wxEvent)
+    IMPLEMENT_DYNAMIC_CLASS(wxSetCursorEvent, wxEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxSysColourChangedEvent, wxEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxUpdateUIEvent, wxCommandEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxNavigationKeyEvent, wxCommandEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxSysColourChangedEvent, wxEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxUpdateUIEvent, wxCommandEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxNavigationKeyEvent, wxCommandEvent)
@@ -293,9 +294,9 @@ int wxNewEventType()
  *
  */
 
  *
  */
 
-wxEvent::wxEvent(int theId)
+wxEvent::wxEvent(int theId, wxEventType commandType )
 {
 {
-    m_eventType = wxEVT_NULL;
+    m_eventType = commandType;
     m_eventObject = (wxObject *) NULL;
     m_timeStamp = 0;
     m_id = theId;
     m_eventObject = (wxObject *) NULL;
     m_timeStamp = 0;
     m_id = theId;
@@ -304,18 +305,15 @@ wxEvent::wxEvent(int theId)
     m_isCommandEvent = FALSE;
 }
 
     m_isCommandEvent = FALSE;
 }
 
-void wxEvent::CopyObject(wxObject& object_dest) const
+wxEvent::wxEvent(const wxEvent &src)
 {
 {
-    wxEvent *obj = (wxEvent *)&object_dest;
-    wxObject::CopyObject(object_dest);
-
-    obj->m_eventType = m_eventType;
-    obj->m_eventObject = m_eventObject;
-    obj->m_timeStamp = m_timeStamp;
-    obj->m_id = m_id;
-    obj->m_skipped = m_skipped;
-    obj->m_callbackUserData = m_callbackUserData;
-    obj->m_isCommandEvent = m_isCommandEvent;
+    m_eventType = src.m_eventType;
+    m_eventObject = src.m_eventObject;
+    m_timeStamp = src.m_timeStamp;
+    m_id = src.m_id;
+    m_skipped = src.m_skipped;
+    m_callbackUserData = src.m_callbackUserData;
+    m_isCommandEvent = src.m_isCommandEvent;
 }
 
 #if wxUSE_GUI
 }
 
 #if wxUSE_GUI
@@ -326,43 +324,16 @@ void wxEvent::CopyObject(wxObject& object_dest) const
  */
 
 wxCommandEvent::wxCommandEvent(wxEventType commandType, int theId)
  */
 
 wxCommandEvent::wxCommandEvent(wxEventType commandType, int theId)
+  : wxEvent( theId, commandType )
 {
 {
-    m_eventType = commandType;
     m_clientData = (char *) NULL;
     m_clientObject = (wxClientData *) NULL;
     m_extraLong = 0;
     m_commandInt = 0;
     m_clientData = (char *) NULL;
     m_clientObject = (wxClientData *) NULL;
     m_extraLong = 0;
     m_commandInt = 0;
-    m_id = theId;
     m_commandString = wxEmptyString;
     m_isCommandEvent = TRUE;
 }
 
     m_commandString = wxEmptyString;
     m_isCommandEvent = TRUE;
 }
 
-void wxCommandEvent::CopyObject(wxObject& obj_d) const
-{
-    wxCommandEvent *obj = (wxCommandEvent *)&obj_d;
-
-    wxEvent::CopyObject(obj_d);
-
-    obj->m_clientData    = m_clientData;
-    obj->m_clientObject  = m_clientObject;
-    obj->m_extraLong     = m_extraLong;
-    obj->m_commandInt    = m_commandInt;
-    obj->m_commandString = m_commandString;
-}
-
-/*
- * Notify events
- */
-
-void wxNotifyEvent::CopyObject(wxObject& obj_d) const
-{
-    wxNotifyEvent *obj = (wxNotifyEvent *)&obj_d;
-
-    wxEvent::CopyObject(obj_d);
-
-    if (!m_bAllow) obj->Veto();
-}
-
 /*
  * Scroll events
  */
 /*
  * Scroll events
  */
@@ -390,16 +361,6 @@ wxScrollWinEvent::wxScrollWinEvent(wxEventType commandType,
     m_commandInt = pos;
 }
 
     m_commandInt = pos;
 }
 
-void wxScrollWinEvent::CopyObject(wxObject& obj_d) const
-{
-    wxScrollWinEvent *obj = (wxScrollWinEvent*)&obj_d;
-
-    wxEvent::CopyObject(obj_d);
-
-    obj->m_extraLong    = m_extraLong;
-    obj->m_commandInt   = m_commandInt;
-}
-
 /*
  * Mouse events
  *
 /*
  * Mouse events
  *
@@ -422,23 +383,6 @@ wxMouseEvent::wxMouseEvent(wxEventType commandType)
     m_linesPerAction = 0;
 }
 
     m_linesPerAction = 0;
 }
 
-void wxMouseEvent::CopyObject(wxObject& obj_d) const
-{
-    wxMouseEvent *obj = (wxMouseEvent *)&obj_d;
-
-    wxEvent::CopyObject(obj_d);
-
-    obj->m_metaDown = m_metaDown;
-    obj->m_altDown = m_altDown;
-    obj->m_controlDown = m_controlDown;
-    obj->m_shiftDown = m_shiftDown;
-    obj->m_leftDown = m_leftDown;
-    obj->m_rightDown = m_rightDown;
-    obj->m_middleDown = m_middleDown;
-    obj->m_x = m_x;
-    obj->m_y = m_y;
-}
-
 // True if was a button dclick event (1 = left, 2 = middle, 3 = right)
 // or any button dclick event (but = -1)
 bool wxMouseEvent::ButtonDClick(int but) const
 // True if was a button dclick event (1 = left, 2 = middle, 3 = right)
 // or any button dclick event (but = -1)
 bool wxMouseEvent::ButtonDClick(int but) const
@@ -563,7 +507,7 @@ wxPoint wxMouseEvent::GetLogicalPosition(const wxDC& dc) const
 
 
 /*
 
 
 /*
- * Keyboard events
+ * Keyboard event
  *
  */
 
  *
  */
 
@@ -578,139 +522,6 @@ wxKeyEvent::wxKeyEvent(wxEventType type)
     m_scanCode = 0;
 }
 
     m_scanCode = 0;
 }
 
-void wxKeyEvent::CopyObject(wxObject& obj_d) const
-{
-    wxKeyEvent *obj = (wxKeyEvent *)&obj_d;
-    wxEvent::CopyObject(obj_d);
-
-    obj->m_x = m_x;
-    obj->m_y = m_y;
-    obj->m_keyCode = m_keyCode;
-
-    obj->m_shiftDown   = m_shiftDown;
-    obj->m_controlDown = m_controlDown;
-    obj->m_metaDown    = m_metaDown;
-    obj->m_altDown     = m_altDown;
-    obj->m_keyCode     = m_keyCode;
-}
-
-
-/*
- * Misc events
- */
-
-void wxSizeEvent::CopyObject(wxObject& obj_d) const
-{
-    wxSizeEvent *obj = (wxSizeEvent *)&obj_d;
-    wxEvent::CopyObject(obj_d);
-
-    obj->m_size = m_size;
-}
-
-void wxMoveEvent::CopyObject(wxObject& obj_d) const
-{
-    wxMoveEvent *obj = (wxMoveEvent *)&obj_d;
-    wxEvent::CopyObject(obj_d);
-
-    obj->m_pos = m_pos;
-}
-
-void wxEraseEvent::CopyObject(wxObject& obj_d) const
-{
-    wxEraseEvent *obj = (wxEraseEvent *)&obj_d;
-    wxEvent::CopyObject(obj_d);
-
-    obj->m_dc = m_dc;
-}
-
-void wxActivateEvent::CopyObject(wxObject& obj_d) const
-{
-    wxActivateEvent *obj = (wxActivateEvent *)&obj_d;
-    wxEvent::CopyObject(obj_d);
-
-    obj->m_active = m_active;
-}
-
-void wxMenuEvent::CopyObject(wxObject& obj_d) const
-{
-    wxMenuEvent *obj = (wxMenuEvent *)&obj_d;
-    wxEvent::CopyObject(obj_d);
-
-    obj->m_menuId = m_menuId;
-}
-
-void wxCloseEvent::CopyObject(wxObject& obj_d) const
-{
-    wxCloseEvent *obj = (wxCloseEvent *)&obj_d;
-    wxEvent::CopyObject(obj_d);
-
-    obj->m_loggingOff = m_loggingOff;
-    obj->m_veto = m_veto;
-#if WXWIN_COMPATIBILITY
-    obj->m_force = m_force;
-#endif
-    obj->m_canVeto = m_canVeto;
-}
-
-void wxShowEvent::CopyObject(wxObject& obj_d) const
-{
-    wxShowEvent *obj = (wxShowEvent *)&obj_d;
-    wxEvent::CopyObject(obj_d);
-
-    obj->m_show = m_show;
-}
-
-void wxJoystickEvent::CopyObject(wxObject& obj_d) const
-{
-    wxJoystickEvent *obj = (wxJoystickEvent *)&obj_d;
-    wxEvent::CopyObject(obj_d);
-
-    obj->m_pos = m_pos;
-    obj->m_zPosition = m_zPosition;
-    obj->m_buttonChange = m_buttonChange;
-    obj->m_buttonState = m_buttonState;
-    obj->m_joyStick = m_joyStick;
-}
-
-void wxDropFilesEvent::CopyObject(wxObject& obj_d) const
-{
-    wxDropFilesEvent *obj = (wxDropFilesEvent *)&obj_d;
-    wxEvent::CopyObject(obj_d);
-
-    obj->m_noFiles = m_noFiles;
-    obj->m_pos = m_pos;
-    // TODO: Problem with obj->m_files. It should be deallocated by the
-    // destructor of the event.
-}
-
-void wxUpdateUIEvent::CopyObject(wxObject &obj_d) const
-{
-    wxUpdateUIEvent *obj = (wxUpdateUIEvent *)&obj_d;
-    wxEvent::CopyObject(obj_d);
-
-    obj->m_checked = m_checked;
-    obj->m_enabled = m_enabled;
-    obj->m_text = m_text;
-    obj->m_setText = m_setText;
-    obj->m_setChecked = m_setChecked;
-    obj->m_setEnabled = m_setEnabled;
-}
-
-void wxPaletteChangedEvent::CopyObject(wxObject &obj_d) const
-{
-    wxPaletteChangedEvent *obj = (wxPaletteChangedEvent *)&obj_d;
-    wxEvent::CopyObject(obj_d);
-
-    obj->m_changedWindow = m_changedWindow;
-}
-
-void wxQueryNewPaletteEvent::CopyObject(wxObject& obj_d) const
-{
-    wxQueryNewPaletteEvent *obj = (wxQueryNewPaletteEvent *)&obj_d;
-    wxEvent::CopyObject(obj_d);
-
-    obj->m_paletteRealized = m_paletteRealized;
-}
 
 wxWindowCreateEvent::wxWindowCreateEvent(wxWindow *win)
 {
 
 wxWindowCreateEvent::wxWindowCreateEvent(wxWindow *win)
 {
@@ -724,14 +535,6 @@ wxWindowDestroyEvent::wxWindowDestroyEvent(wxWindow *win)
     SetEventObject(win);
 }
 
     SetEventObject(win);
 }
 
-void wxIdleEvent::CopyObject(wxObject& obj_d) const
-{
-    wxIdleEvent *obj = (wxIdleEvent *)&obj_d;
-    wxEvent::CopyObject(obj_d);
-
-    obj->m_requestMore = m_requestMore;
-}
-
 wxChildFocusEvent::wxChildFocusEvent(wxWindow *win)
                  : wxCommandEvent(wxEVT_CHILD_FOCUS)
 {
 wxChildFocusEvent::wxChildFocusEvent(wxWindow *win)
                  : wxCommandEvent(wxEVT_CHILD_FOCUS)
 {