X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/222ed1d678dff2f5c3c4164321dd05e8f47de487..f54632db33bc3ccc834cc5bcb6405fae6e26ed6e:/src/generic/accel.cpp diff --git a/src/generic/accel.cpp b/src/generic/accel.cpp index edf52970cd..3bc6df37be 100644 --- a/src/generic/accel.cpp +++ b/src/generic/accel.cpp @@ -16,7 +16,7 @@ // headers // ---------------------------------------------------------------------------- -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "accel.h" #endif @@ -97,9 +97,7 @@ wxAcceleratorTable::wxAcceleratorTable(int n, const wxAcceleratorEntry entries[] { const wxAcceleratorEntry& entry = entries[i]; - int keycode = entry.GetKeyCode(); - if ( wxIslower(keycode) ) - keycode = wxToupper(keycode); + int keycode = wxToupper(entry.GetKeyCode()); M_ACCELDATA->m_accels.Append(new wxAcceleratorEntry(entry.GetFlags(), keycode, @@ -141,7 +139,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); @@ -181,8 +183,7 @@ wxAcceleratorTable::GetEntry(const wxKeyEvent& event) const // now check flags if ( (((flags & wxACCEL_CTRL) != 0) == event.ControlDown()) && (((flags & wxACCEL_SHIFT) != 0) == event.ShiftDown()) && - (((flags & wxACCEL_ALT) != 0) == - (event.AltDown() || event.MetaDown())) ) + (((flags & wxACCEL_ALT) != 0) == event.AltDown()) ) { return entry; }