]> git.saurik.com Git - wxWidgets.git/commitdiff
use AllocExclusive in wxAcceleratorTable
authorVáclav Slavík <vslavik@fastmail.fm>
Sun, 10 Mar 2002 23:11:46 +0000 (23:11 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Sun, 10 Mar 2002 23:11:46 +0000 (23:11 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14548 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/generic/accel.h
src/generic/accel.cpp

index 76e2f9369ca7d31a8b004bd0a4b687642be030e0..bdd4ff8a85f29692f35d264cda5412e9a4750208 100644 (file)
@@ -50,6 +50,11 @@ public:
 
     const wxAcceleratorEntry *GetEntry(const wxKeyEvent& event) const;
 
+protected:
+    // ref counting code
+    virtual wxObjectRefData *CreateRefData() const;
+    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+
 private:
     DECLARE_DYNAMIC_CLASS(wxAcceleratorTable)
 };
index d99b55cea6e24ee55fa7bcfb1026674ed0f40c70..21a745b598d4b42e84d4b6d2941c66be70030ea5 100644 (file)
@@ -53,7 +53,16 @@ WX_DEFINE_LIST(wxAccelList);
 class wxAccelRefData : public wxObjectRefData
 {
 public:
-    wxAccelRefData() { m_accels.DeleteContents(TRUE); }
+    wxAccelRefData()
+    {
+        m_accels.DeleteContents(TRUE);
+    }
+
+    wxAccelRefData(const wxAccelRefData& data)
+    {
+        m_accels.DeleteContents(TRUE);
+        m_accels = data.m_accels;
+    }
 
     wxAccelList m_accels;
 };
@@ -61,6 +70,7 @@ public:
 // macro which can be used to access wxAccelRefData from wxAcceleratorTable
 #define M_ACCELDATA ((wxAccelRefData *)m_refData)
 
+
 // ============================================================================
 // implementation
 // ============================================================================
@@ -108,6 +118,8 @@ bool wxAcceleratorTable::Ok() const
 
 void wxAcceleratorTable::Add(const wxAcceleratorEntry& entry)
 {
+    AllocExclusive();
+
     if ( !m_refData )
     {
         m_refData = new wxAccelRefData;
@@ -118,6 +130,8 @@ void wxAcceleratorTable::Add(const wxAcceleratorEntry& entry)
 
 void wxAcceleratorTable::Remove(const wxAcceleratorEntry& entry)
 {
+    AllocExclusive();
+
     wxAccelList::Node *node = M_ACCELDATA->m_accels.GetFirst();
     while ( node )
     {
@@ -189,5 +203,15 @@ int wxAcceleratorTable::GetCommand(const wxKeyEvent& event) const
     return entry ? entry->GetCommand() : -1;
 }
 
+wxObjectRefData *wxAcceleratorTable::CreateRefData() const
+{
+    return new wxAccelRefData;
+}
+
+wxObjectRefData *wxAcceleratorTable::CloneRefData(const wxObjectRefData *data) const
+{
+    return new wxAccelRefData(*(wxAccelRefData *)data);
+}
+
 #endif // wxUSE_ACCEL