1. more consistency in wxTree/ListEvent methods naming convention:

GetKeyCode() instead of GetCode()
2. wxTreeEvent::GetKeyEvent()::IsAltDown() now works under MSW
3. wxTreeEvent::GetKeyCode() works for alnum keys


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16236 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2002-07-21 14:29:13 +00:00
parent 19caf22926
commit 1944ad7618
5 changed files with 170 additions and 14 deletions

View File

@@ -413,8 +413,8 @@ public:
, m_pointDrag(event.m_pointDrag) , m_pointDrag(event.m_pointDrag)
, m_item(event.m_item) , m_item(event.m_item)
{ } { }
int GetCode() const { return m_code; } int GetKeyCode() const { return m_code; }
long GetIndex() const { return m_itemIndex; } long GetIndex() const { return m_itemIndex; }
int GetColumn() const { return m_col; } int GetColumn() const { return m_col; }
wxPoint GetPoint() const { return m_pointDrag; } wxPoint GetPoint() const { return m_pointDrag; }
@@ -429,10 +429,13 @@ public:
long GetCacheFrom() const { return m_oldItemIndex; } long GetCacheFrom() const { return m_oldItemIndex; }
long GetCacheTo() const { return m_itemIndex; } long GetCacheTo() const { return m_itemIndex; }
// these methods don't do anything at all
#if WXWIN_COMPATIBILITY_2_2 #if WXWIN_COMPATIBILITY_2_2
// these methods don't do anything at all
long GetOldIndex() const { return 0; } long GetOldIndex() const { return 0; }
long GetOldItem() const { return 0; } long GetOldItem() const { return 0; }
// this one is superseded by GetKeyCode()
int GetCode() const { return GetKeyCode(); }
#endif // WXWIN_COMPATIBILITY_2_2 #endif // WXWIN_COMPATIBILITY_2_2
virtual wxEvent *Clone() const { return new wxListEvent(*this); } virtual wxEvent *Clone() const { return new wxListEvent(*this); }

View File

@@ -401,7 +401,5 @@ private:
#endif // wxUSE_LISTCTRL #endif // wxUSE_LISTCTRL
#endif #endif // _WX_LISTCTRL_H_
// _WX_LISTCTRL_H_
// vi:sts=4:sw=4:et

View File

@@ -234,11 +234,16 @@ public:
// keyboard data (for wxEVT_COMMAND_TREE_KEY_DOWN only) // keyboard data (for wxEVT_COMMAND_TREE_KEY_DOWN only)
const wxKeyEvent& GetKeyEvent() const { return m_evtKey; } const wxKeyEvent& GetKeyEvent() const { return m_evtKey; }
int GetCode() const { return m_evtKey.GetKeyCode(); } int GetKeyCode() const { return m_evtKey.GetKeyCode(); }
// label (for EVT_TREE_{BEGIN|END}_LABEL_EDIT only) // label (for EVT_TREE_{BEGIN|END}_LABEL_EDIT only)
const wxString& GetLabel() const { return m_label; } const wxString& GetLabel() const { return m_label; }
#if WXWIN_COMPATIBILITY_2_2
// for compatibility only, don't use
int GetCode() const { return m_evtKey.GetKeyCode(); }
#endif // WXWIN_COMPATIBILITY_2_2
private: private:
// not all of the members are used (or initialized) for all events // not all of the members are used (or initialized) for all events
wxKeyEvent m_evtKey; wxKeyEvent m_evtKey;
@@ -314,7 +319,7 @@ END_DECLARE_EVENT_TYPES()
#define EVT_TREE_SEL_CHANGED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_TREE_SEL_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL ), #define EVT_TREE_SEL_CHANGED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_TREE_SEL_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL ),
#define EVT_TREE_SEL_CHANGING(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_TREE_SEL_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL ), #define EVT_TREE_SEL_CHANGING(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_TREE_SEL_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL ),
// GetCode() returns the key code // GetKeyCode() returns the key code
// NB: this is the only message for which GetItem() is invalid (you may get the // NB: this is the only message for which GetItem() is invalid (you may get the
// item from GetSelection()) // item from GetSelection())
#define EVT_TREE_KEY_DOWN(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_TREE_KEY_DOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL ), #define EVT_TREE_KEY_DOWN(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_TREE_KEY_DOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL ),

View File

@@ -848,10 +848,146 @@ TREE_EVENT_HANDLER(OnItemExpanding)
TREE_EVENT_HANDLER(OnItemCollapsed) TREE_EVENT_HANDLER(OnItemCollapsed)
TREE_EVENT_HANDLER(OnSelChanged) TREE_EVENT_HANDLER(OnSelChanged)
TREE_EVENT_HANDLER(OnSelChanging) TREE_EVENT_HANDLER(OnSelChanging)
TREE_EVENT_HANDLER(OnTreeKeyDown)
#undef TREE_EVENT_HANDLER #undef TREE_EVENT_HANDLER
void LogKeyEvent(const wxChar *name, const wxKeyEvent& event)
{
wxString key;
long keycode = event.KeyCode();
{
switch ( keycode )
{
case WXK_BACK: key = "BACK"; break;
case WXK_TAB: key = "TAB"; break;
case WXK_RETURN: key = "RETURN"; break;
case WXK_ESCAPE: key = "ESCAPE"; break;
case WXK_SPACE: key = "SPACE"; break;
case WXK_DELETE: key = "DELETE"; break;
case WXK_START: key = "START"; break;
case WXK_LBUTTON: key = "LBUTTON"; break;
case WXK_RBUTTON: key = "RBUTTON"; break;
case WXK_CANCEL: key = "CANCEL"; break;
case WXK_MBUTTON: key = "MBUTTON"; break;
case WXK_CLEAR: key = "CLEAR"; break;
case WXK_SHIFT: key = "SHIFT"; break;
case WXK_ALT: key = "ALT"; break;
case WXK_CONTROL: key = "CONTROL"; break;
case WXK_MENU: key = "MENU"; break;
case WXK_PAUSE: key = "PAUSE"; break;
case WXK_CAPITAL: key = "CAPITAL"; break;
case WXK_PRIOR: key = "PRIOR"; break;
case WXK_NEXT: key = "NEXT"; break;
case WXK_END: key = "END"; break;
case WXK_HOME: key = "HOME"; break;
case WXK_LEFT: key = "LEFT"; break;
case WXK_UP: key = "UP"; break;
case WXK_RIGHT: key = "RIGHT"; break;
case WXK_DOWN: key = "DOWN"; break;
case WXK_SELECT: key = "SELECT"; break;
case WXK_PRINT: key = "PRINT"; break;
case WXK_EXECUTE: key = "EXECUTE"; break;
case WXK_SNAPSHOT: key = "SNAPSHOT"; break;
case WXK_INSERT: key = "INSERT"; break;
case WXK_HELP: key = "HELP"; break;
case WXK_NUMPAD0: key = "NUMPAD0"; break;
case WXK_NUMPAD1: key = "NUMPAD1"; break;
case WXK_NUMPAD2: key = "NUMPAD2"; break;
case WXK_NUMPAD3: key = "NUMPAD3"; break;
case WXK_NUMPAD4: key = "NUMPAD4"; break;
case WXK_NUMPAD5: key = "NUMPAD5"; break;
case WXK_NUMPAD6: key = "NUMPAD6"; break;
case WXK_NUMPAD7: key = "NUMPAD7"; break;
case WXK_NUMPAD8: key = "NUMPAD8"; break;
case WXK_NUMPAD9: key = "NUMPAD9"; break;
case WXK_MULTIPLY: key = "MULTIPLY"; break;
case WXK_ADD: key = "ADD"; break;
case WXK_SEPARATOR: key = "SEPARATOR"; break;
case WXK_SUBTRACT: key = "SUBTRACT"; break;
case WXK_DECIMAL: key = "DECIMAL"; break;
case WXK_DIVIDE: key = "DIVIDE"; break;
case WXK_F1: key = "F1"; break;
case WXK_F2: key = "F2"; break;
case WXK_F3: key = "F3"; break;
case WXK_F4: key = "F4"; break;
case WXK_F5: key = "F5"; break;
case WXK_F6: key = "F6"; break;
case WXK_F7: key = "F7"; break;
case WXK_F8: key = "F8"; break;
case WXK_F9: key = "F9"; break;
case WXK_F10: key = "F10"; break;
case WXK_F11: key = "F11"; break;
case WXK_F12: key = "F12"; break;
case WXK_F13: key = "F13"; break;
case WXK_F14: key = "F14"; break;
case WXK_F15: key = "F15"; break;
case WXK_F16: key = "F16"; break;
case WXK_F17: key = "F17"; break;
case WXK_F18: key = "F18"; break;
case WXK_F19: key = "F19"; break;
case WXK_F20: key = "F20"; break;
case WXK_F21: key = "F21"; break;
case WXK_F22: key = "F22"; break;
case WXK_F23: key = "F23"; break;
case WXK_F24: key = "F24"; break;
case WXK_NUMLOCK: key = "NUMLOCK"; break;
case WXK_SCROLL: key = "SCROLL"; break;
case WXK_PAGEUP: key = "PAGEUP"; break;
case WXK_PAGEDOWN: key = "PAGEDOWN"; break;
case WXK_NUMPAD_SPACE: key = "NUMPAD_SPACE"; break;
case WXK_NUMPAD_TAB: key = "NUMPAD_TAB"; break;
case WXK_NUMPAD_ENTER: key = "NUMPAD_ENTER"; break;
case WXK_NUMPAD_F1: key = "NUMPAD_F1"; break;
case WXK_NUMPAD_F2: key = "NUMPAD_F2"; break;
case WXK_NUMPAD_F3: key = "NUMPAD_F3"; break;
case WXK_NUMPAD_F4: key = "NUMPAD_F4"; break;
case WXK_NUMPAD_HOME: key = "NUMPAD_HOME"; break;
case WXK_NUMPAD_LEFT: key = "NUMPAD_LEFT"; break;
case WXK_NUMPAD_UP: key = "NUMPAD_UP"; break;
case WXK_NUMPAD_RIGHT: key = "NUMPAD_RIGHT"; break;
case WXK_NUMPAD_DOWN: key = "NUMPAD_DOWN"; break;
case WXK_NUMPAD_PRIOR: key = "NUMPAD_PRIOR"; break;
case WXK_NUMPAD_PAGEUP: key = "NUMPAD_PAGEUP"; break;
case WXK_NUMPAD_PAGEDOWN: key = "NUMPAD_PAGEDOWN"; break;
case WXK_NUMPAD_END: key = "NUMPAD_END"; break;
case WXK_NUMPAD_BEGIN: key = "NUMPAD_BEGIN"; break;
case WXK_NUMPAD_INSERT: key = "NUMPAD_INSERT"; break;
case WXK_NUMPAD_DELETE: key = "NUMPAD_DELETE"; break;
case WXK_NUMPAD_EQUAL: key = "NUMPAD_EQUAL"; break;
case WXK_NUMPAD_MULTIPLY: key = "NUMPAD_MULTIPLY"; break;
case WXK_NUMPAD_ADD: key = "NUMPAD_ADD"; break;
case WXK_NUMPAD_SEPARATOR: key = "NUMPAD_SEPARATOR"; break;
case WXK_NUMPAD_SUBTRACT: key = "NUMPAD_SUBTRACT"; break;
case WXK_NUMPAD_DECIMAL: key = "NUMPAD_DECIMAL"; break;
default:
{
if ( wxIsprint((int)keycode) )
key.Printf(_T("'%c'"), (char)keycode);
else if ( keycode > 0 && keycode < 27 )
key.Printf(_("Ctrl-%c"), _T('A') + keycode - 1);
else
key.Printf(_T("unknown (%ld)"), keycode);
}
}
}
wxLogMessage( _T("%s event: %s (flags = %c%c%c%c)"),
name,
key.c_str(),
event.ControlDown() ? _T('C') : _T('-'),
event.AltDown() ? _T('A') : _T('-'),
event.ShiftDown() ? _T('S') : _T('-'),
event.MetaDown() ? _T('M') : _T('-'));
}
void MyTreeCtrl::OnTreeKeyDown(wxTreeEvent& event)
{
LogKeyEvent(_T("Tree key down "), event.GetKeyEvent());
event.Skip();
}
void MyTreeCtrl::OnBeginDrag(wxTreeEvent& event) void MyTreeCtrl::OnBeginDrag(wxTreeEvent& event)
{ {
// need to explicitly allow drag // need to explicitly allow drag

View File

@@ -2294,12 +2294,26 @@ bool wxTreeCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result)
eventType = wxEVT_COMMAND_TREE_KEY_DOWN; eventType = wxEVT_COMMAND_TREE_KEY_DOWN;
TV_KEYDOWN *info = (TV_KEYDOWN *)lParam; TV_KEYDOWN *info = (TV_KEYDOWN *)lParam;
// we pass 0 as 2 last CreateKeyEvent() parameters because we // fabricate the lParam and wParam parameters sufficiently
// don't have access to the real key press flags here - but as // similar to the ones from a "real" WM_KEYDOWN so that
// it is only used to determin wxKeyEvent::m_altDown flag it's // CreateKeyEvent() works correctly
// not too bad WXLPARAM lParam =
(::GetKeyState(VK_MENU) & 0x100 ? KF_ALTDOWN : 0) << 16;
WXWPARAM wParam = info->wVKey;
int keyCode = wxCharCodeMSWToWX(info->wVKey);
if ( !keyCode )
{
// wxCharCodeMSWToWX() returns 0 to indicate that this is a
// simple ASCII key
keyCode = wParam;
}
event.m_evtKey = CreateKeyEvent(wxEVT_KEY_DOWN, event.m_evtKey = CreateKeyEvent(wxEVT_KEY_DOWN,
wxCharCodeMSWToWX(info->wVKey)); keyCode,
lParam,
wParam);
// a separate event for Space/Return // a separate event for Space/Return
if ( !wxIsCtrlDown() && !wxIsShiftDown() && if ( !wxIsCtrlDown() && !wxIsShiftDown() &&