X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/66c135f346165a716b91a77df96805193dcf1a30..c1e820a40eed983ceb9e17a3d387dea707e31525:/src/gtk/accel.cpp diff --git a/src/gtk/accel.cpp b/src/gtk/accel.cpp index 8288d870da..f3f9ba6a68 100644 --- a/src/gtk/accel.cpp +++ b/src/gtk/accel.cpp @@ -2,9 +2,9 @@ // Name: accel.cpp // Purpose: // Author: Robert Roebling -// Id: +// Id: $id:$ // Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -13,6 +13,8 @@ #include "wx/accel.h" +#if wxUSE_ACCEL + #include //----------------------------------------------------------------------------- @@ -21,27 +23,15 @@ class wxAccelRefData: public wxObjectRefData { - public: - - wxAccelRefData(void); - ~wxAccelRefData(void); - +public: + wxAccelRefData(); + wxList m_accels; }; -wxAccelRefData::wxAccelRefData(void) -{ -} - -wxAccelRefData::~wxAccelRefData(void) +wxAccelRefData::wxAccelRefData() { - wxNode *node = m_accels.First(); - while (node) - { - wxAcceleratorEntry *entry = (wxAcceleratorEntry *)node->Data(); - delete entry; - node = node->Next(); - } + m_accels.DeleteContents( TRUE ); } //----------------------------------------------------------------------------- @@ -49,23 +39,23 @@ wxAccelRefData::~wxAccelRefData(void) #define M_ACCELDATA ((wxAccelRefData *)m_refData) IMPLEMENT_DYNAMIC_CLASS(wxAcceleratorTable,wxObject) - + wxAcceleratorTable::wxAcceleratorTable() { - m_refData = new wxAccelRefData(); } wxAcceleratorTable::wxAcceleratorTable( int n, wxAcceleratorEntry entries[] ) { - m_refData = new wxAccelRefData(); - for (int i = 0; i < n; i++) - { - 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 ) ); - } + m_refData = new wxAccelRefData(); + + for (int i = 0; i < n; i++) + { + int flag = entries[i].GetFlags(); + int keycode = entries[i].GetKeyCode(); + int command = entries[i].GetCommand(); + if ((keycode >= (int)'a') && (keycode <= (int)'z')) keycode = (int)toupper( (char)keycode ); + M_ACCELDATA->m_accels.Append( new wxAcceleratorEntry( flag, keycode, command ) ); + } } wxAcceleratorTable::~wxAcceleratorTable() @@ -74,23 +64,28 @@ wxAcceleratorTable::~wxAcceleratorTable() bool wxAcceleratorTable::Ok() const { - return (m_refData != NULL); + return (m_refData != NULL); } int wxAcceleratorTable::GetCommand( wxKeyEvent &event ) { - wxNode *node = M_ACCELDATA->m_accels.First(); - while (node) - { - wxAcceleratorEntry *entry = (wxAcceleratorEntry*)node->Data(); - if ((event.m_keyCode == entry->GetKeyCode()) && - (((entry->GetFlags() & wxACCEL_CTRL) == 0) || event.ControlDown()) && - (((entry->GetFlags() & wxACCEL_SHIFT) == 0) || event.ShiftDown()) && - (((entry->GetFlags() & wxACCEL_ALT) == 0) || event.AltDown() || event.MetaDown())) - return entry->GetCommand(); - node = node->Next(); - } - - return -1; + if (!Ok()) return -1; + + wxNode *node = M_ACCELDATA->m_accels.First(); + while (node) + { + wxAcceleratorEntry *entry = (wxAcceleratorEntry*)node->Data(); + if ((event.m_keyCode == entry->GetKeyCode()) && + (((entry->GetFlags() & wxACCEL_CTRL) == 0) || event.ControlDown()) && + (((entry->GetFlags() & wxACCEL_SHIFT) == 0) || event.ShiftDown()) && + (((entry->GetFlags() & wxACCEL_ALT) == 0) || event.AltDown() || event.MetaDown())) + { + return entry->GetCommand(); + } + node = node->Next(); + } + + return -1; } +#endif