]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/event.h
Fix reentrancy in wxDataViewRendererBase::FinishEditing().
[wxWidgets.git] / include / wx / event.h
index b73289934f0104fcdc6273a400076ce667fed34e..7b4d53c6a29d9b058da9711718f04b1506214d72 100644 (file)
@@ -1661,7 +1661,12 @@ class WXDLLIMPEXP_CORE wxKeyEvent : public wxEvent,
 {
 public:
     wxKeyEvent(wxEventType keyType = wxEVT_NULL);
 {
 public:
     wxKeyEvent(wxEventType keyType = wxEVT_NULL);
+
+    // Normal copy ctor and a ctor creating a new event for the same key as the
+    // given one but a different event type (this is used in implementation
+    // code only, do not use outside of the library).
     wxKeyEvent(const wxKeyEvent& evt);
     wxKeyEvent(const wxKeyEvent& evt);
+    wxKeyEvent(wxEventType eventType, const wxKeyEvent& evt);
 
     // get the key code: an ASCII7 char or an element of wxKeyCode enum
     int GetKeyCode() const { return (int)m_keyCode; }
 
     // get the key code: an ASCII7 char or an element of wxKeyCode enum
     int GetKeyCode() const { return (int)m_keyCode; }
@@ -1739,6 +1744,14 @@ public:
     wxUint32      m_rawFlags;
 
 private:
     wxUint32      m_rawFlags;
 
 private:
+    // Set the event to propagate if necessary, i.e. if it's of wxEVT_CHAR_HOOK
+    // type. This is used by all ctors.
+    void InitPropagation()
+    {
+        if ( m_eventType == wxEVT_CHAR_HOOK )
+            m_propagationLevel = wxEVENT_PROPAGATE_MAX;
+    }
+
     // Copy only the event data present in this class, this is used by
     // AssignKeyData() and copy ctor.
     void DoAssignMembers(const wxKeyEvent& evt)
     // Copy only the event data present in this class, this is used by
     // AssignKeyData() and copy ctor.
     void DoAssignMembers(const wxKeyEvent& evt)