]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/event.cpp
1. added wxEnhMetaFileXXX classes
[wxWidgets.git] / src / common / event.cpp
index 4b157d7e99d4525b4ce454ad0880a8a7a78edabe..97f135ff08c874c6106e64ec2802c752be135757 100644 (file)
@@ -173,10 +173,24 @@ void wxCommandEvent::CopyObject(wxObject& obj_d) const
 
     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_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();
 }
 
 /*
@@ -380,6 +394,10 @@ 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;
@@ -506,14 +524,16 @@ void wxQueryNewPaletteEvent::CopyObject(wxObject& obj_d) const
 }
 
 wxWindowCreateEvent::wxWindowCreateEvent(wxWindow *win)
-                   : wxEvent(wxEVT_CREATE)
+                   : wxEvent()
 {
+    SetEventType(wxEVT_CREATE);
     SetEventObject(win);
 }
 
 wxWindowDestroyEvent::wxWindowDestroyEvent(wxWindow *win)
-                    : wxEvent(wxEVT_DESTROY)
+                    : wxEvent()
 {
+    SetEventType(wxEVT_DESTROY);
     SetEventObject(win);
 }
 
@@ -617,19 +637,18 @@ void wxEvtHandler::AddPendingEvent(wxEvent& event)
 
     // 2) Add this event handler to list of event handlers that
     //    have pending events.
-    
+
     wxENTER_CRIT_SECT(*wxPendingEventsLocker);
 
     if ( !wxPendingEvents )
         wxPendingEvents = new wxList;
     wxPendingEvents->Append(this);
 
+    wxLEAVE_CRIT_SECT(*wxPendingEventsLocker);
+    
     // 3) Inform the system that new pending events are somwehere,
     //    and that these should be processed in idle time.
-    
     wxWakeUpIdle();
-
-    wxLEAVE_CRIT_SECT(*wxPendingEventsLocker);
 }
 
 void wxEvtHandler::ProcessPendingEvents()
@@ -645,9 +664,9 @@ void wxEvtHandler::ProcessPendingEvents()
     {
         wxEvent *event = (wxEvent *)node->Data();
         delete node;
-       
+
         // In ProcessEvent, new events might get added and
-       // we can safely leave the crtical section here.
+           // we can safely leave the crtical section here.
 #if defined(__VISAGECPP__)
         wxLEAVE_CRIT_SECT( m_eventsLocker);
 #else
@@ -660,10 +679,10 @@ void wxEvtHandler::ProcessPendingEvents()
 #else
         wxENTER_CRIT_SECT( *m_eventsLocker);
 #endif
-       
+
         node = m_pendingEvents->First();
     }
-    
+
 #if defined(__VISAGECPP__)
     wxLEAVE_CRIT_SECT( m_eventsLocker);
 #else
@@ -685,11 +704,18 @@ bool wxEvtHandler::ProcessEvent(wxEvent& event)
     // An event handler can be enabled or disabled
     if ( GetEvtHandlerEnabled() )
     {
-#if wxUSE_THREADS
+    
+#if 0
+/*
+        What is this? When using GUI threads, a non main
+        threads can send an event and process it itself.
+        This breaks GTK's GUI threads, so please explain.
+*/
+
         // Check whether we are in a child thread.
         if ( !wxThread::IsMain() )
           return ProcessThreadEvent(event);
-#endif // wxUSE_THREADS
+#endif
 
         // Handle per-instance dynamic event tables first
         if ( m_dynamicEvents && SearchDynamicEventTable(event) )
@@ -827,7 +853,7 @@ bool wxEvtHandler::Disconnect( int id, int lastId, wxEventType eventType,
 {
     if (!m_dynamicEvents)
         return FALSE;
-       
+
     wxNode *node = m_dynamicEvents->First();
     while (node)
     {