]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/accel.cpp
replaced all int/size_t indices in wxControlWithItems API with unsigned int (committi...
[wxWidgets.git] / src / generic / accel.cpp
index a50bed3218af14a6dee3ffc239ee58b6a076086e..e19d33c09f0b200821f92779f884422d07d68006 100644 (file)
 // headers
 // ----------------------------------------------------------------------------
 
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-    #pragma implementation "accel.h"
-#endif
-
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
@@ -44,7 +40,7 @@
 
 WX_DECLARE_LIST(wxAcceleratorEntry, wxAccelList);
 #include "wx/listimpl.cpp"
-WX_DEFINE_LIST(wxAccelList);
+WX_DEFINE_LIST(wxAccelList)
 
 // ----------------------------------------------------------------------------
 // wxAccelRefData: the data used by wxAcceleratorTable
@@ -98,8 +94,8 @@ wxAcceleratorTable::wxAcceleratorTable(int n, const wxAcceleratorEntry entries[]
         const wxAcceleratorEntry& entry = entries[i];
 
         int keycode = entry.GetKeyCode();
-        if ( wxIslower(keycode) )
-            keycode = wxToupper(keycode);
+        if ( isascii(keycode) )
+            keycode = toupper(keycode);
 
         M_ACCELDATA->m_accels.Append(new wxAcceleratorEntry(entry.GetFlags(),
                                                             keycode,
@@ -141,7 +137,11 @@ void wxAcceleratorTable::Remove(const wxAcceleratorEntry& entry)
     {
         const wxAcceleratorEntry *entryCur = node->GetData();
 
-        if ( *entryCur == entry )
+        // given entry contains only the information of the accelerator key
+        // because it was set that way in wxGetAccelFromString()
+        // so do not perform full ( *entryCur == entry ) comparison
+        if ((entryCur->GetKeyCode() == entry.GetKeyCode()) &&
+            (entryCur->GetFlags() == entry.GetFlags()))
         {
             delete node->GetData();
             M_ACCELDATA->m_accels.Erase(node);