]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk1/accel.cpp
Various changes
[wxWidgets.git] / src / gtk1 / accel.cpp
index 08b5436b343b8ad0db31a129152b4843afc522b0..8288d870daf7ce76edbda683ff58fb4db614b290 100644 (file)
@@ -13,6 +13,8 @@
 
 #include "wx/accel.h"
 
+#include <ctype.h>
+
 //-----------------------------------------------------------------------------
 // wxAcceleratorTable
 //-----------------------------------------------------------------------------
@@ -22,13 +24,24 @@ class wxAccelRefData: public wxObjectRefData
   public:
   
     wxAccelRefData(void);
+    ~wxAccelRefData(void);
   
     wxList m_accels;
 };
 
 wxAccelRefData::wxAccelRefData(void)
 {
-  m_accels.DeleteContents( TRUE );
+}
+
+wxAccelRefData::~wxAccelRefData(void)
+{
+  wxNode *node = m_accels.First();
+  while (node)
+  {
+    wxAcceleratorEntry *entry = (wxAcceleratorEntry *)node->Data();
+    delete entry;
+    node = node->Next();
+  }
 }
 
 //-----------------------------------------------------------------------------
@@ -47,8 +60,11 @@ wxAcceleratorTable::wxAcceleratorTable( int n, wxAcceleratorEntry entries[] )
   m_refData = new wxAccelRefData();
   for (int i = 0; i < n; i++)
   {
-    M_ACCELDATA->m_accels.Append( (wxObject*)
-      new wxAcceleratorEntry( entries[n].GetFlags(), entries[n].GetKeyCode(), entries[n].GetCommand() ) );
+    int flag    = entries[i].GetFlags();
+    int keycode = entries[i].GetKeyCode();
+    int command = entries[i].GetCommand();
+    if ((keycode >= (int)'A') && (keycode <= (int)'Z')) keycode = (int)tolower( (char)keycode );
+    M_ACCELDATA->m_accels.Append( (wxObject*) new wxAcceleratorEntry( flag, keycode, command ) );
   }
 }