///////////////////////////////////////////////////////////////////////////////
-// Name:        generic/accel.cpp
+// Name:        src/generic/accel.cpp
 // Purpose:     generic implementation of wxAcceleratorTable class
 // Author:      Robert Roebling
 // Modified:    VZ pn 31.05.01: use typed lists, Unicode cleanup, Add/Remove
 // 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"
 
 #if wxUSE_ACCEL
 
 #ifndef WX_PRECOMP
-    #include "wx/event.h"
     #include "wx/list.h"
+    #include "wx/event.h"
 #endif // WX_PRECOMP
 
 #include "wx/accel.h"
 
 WX_DECLARE_LIST(wxAcceleratorEntry, wxAccelList);
 #include "wx/listimpl.cpp"
-WX_DEFINE_LIST(wxAccelList);
+WX_DEFINE_LIST(wxAccelList)
 
 // ----------------------------------------------------------------------------
 // wxAccelRefData: the data used by wxAcceleratorTable
     {
         const wxAcceleratorEntry& entry = entries[i];
 
-        int keycode = wxToupper(entry.GetKeyCode());
+        int keycode = entry.GetKeyCode();
+        if ( isascii(keycode) )
+            keycode = toupper(keycode);
 
         M_ACCELDATA->m_accels.Append(new wxAcceleratorEntry(entry.GetFlags(),
                                                             keycode,
 {
 }
 
-bool wxAcceleratorTable::Ok() const
+bool wxAcceleratorTable::IsOk() const
 {
     return m_refData != NULL;
 }
     {
         const wxAcceleratorEntry *entryCur = node->GetData();
 
-        if ( *entryCur == entry )
+        // given entry contains only the information of the accelerator key
+        // because it was set that way during creation so do not use the
+        // comparison operator which also checks the command field
+        if ((entryCur->GetKeyCode() == entry.GetKeyCode()) &&
+            (entryCur->GetFlags() == entry.GetFlags()))
         {
             delete node->GetData();
             M_ACCELDATA->m_accels.Erase(node);
 }
 
 #endif // wxUSE_ACCEL
-