now a little better integrated.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@15544
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
//----------------------------------------------------------------------
// Helper classes for ListBox
//----------------------------------------------------------------------
// Helper classes for ListBox
+
+// #undef wxSTC_USE_POPUP
+// #define wxSTC_USE_POPUP 0
+
+
// A wxListBox that gives focus back to its parent if it gets it.
class wxSTCListBox : public wxListBox {
public:
// A wxListBox that gives focus back to its parent if it gets it.
class wxSTCListBox : public wxListBox {
public:
0, NULL, wxLB_SINGLE | wxSIMPLE_BORDER)
{}
0, NULL, wxLB_SINGLE | wxSIMPLE_BORDER)
{}
- void OnFocus(wxFocusEvent& event) {
- GetParent()->SetFocus();
- event.Skip();
+ void OnKeyDown(wxKeyEvent& event) {
+ // Give the key events to the STC. It will then update
+ // the listbox as needed.
+ GetGrandParent()->GetEventHandler()->ProcessEvent(event);
};
BEGIN_EVENT_TABLE(wxSTCListBox, wxListBox)
};
BEGIN_EVENT_TABLE(wxSTCListBox, wxListBox)
- EVT_SET_FOCUS(wxSTCListBox::OnFocus)
+ EVT_KEY_DOWN(wxSTCListBox::OnKeyDown)
+ EVT_CHAR(wxSTCListBox::OnKeyDown)
-#undef wxSTC_USE_POPUP
-#define wxSTC_USE_POPUP 0 // Leave it off for this one...
// A window to place the listbox upon. If wxPopupWindow is supported then
// A window to place the listbox upon. If wxPopupWindow is supported then
: wxSTCListBoxWinBase(parent, param2) {
lb = new wxSTCListBox(this, id);
lb->SetCursor(wxCursor(wxCURSOR_ARROW));
: wxSTCListBoxWinBase(parent, param2) {
lb = new wxSTCListBox(this, id);
lb->SetCursor(wxCursor(wxCURSOR_ARROW));
}
void OnSize(wxSizeEvent& event) {
lb->SetSize(GetSize());
}
}
void OnSize(wxSizeEvent& event) {
lb->SetSize(GetSize());
}
- void OnFocus(wxFocusEvent& event) {
- GetParent()->SetFocus();
- event.Skip();
- }
- wxListBox* GetLB() { return lb; }
+ wxListBox* GetLB() { return lb; }
#if wxUSE_POPUPWIN && wxSTC_USE_POPUP
virtual void DoSetSize(int x, int y,
#if wxUSE_POPUPWIN && wxSTC_USE_POPUP
virtual void DoSetSize(int x, int y,
};
BEGIN_EVENT_TABLE(wxSTCListBoxWin, wxSTCListBoxWinBase)
};
BEGIN_EVENT_TABLE(wxSTCListBoxWin, wxSTCListBoxWinBase)
- EVT_SIZE (wxSTCListBoxWin::OnSize)
- EVT_SET_FOCUS (wxSTCListBoxWin::OnFocus)
+ EVT_SIZE(wxSTCListBoxWin::OnSize)
+ void OnFocus(wxFocusEvent& event) {
+ GetParent()->SetFocus();
+ event.Skip();
+ }
+
#if wxUSE_POPUPWIN && wxSTC_USE_POPUP
virtual void DoSetSize(int x, int y,
int width, int height,
#if wxUSE_POPUPWIN && wxSTC_USE_POPUP
virtual void DoSetSize(int x, int y,
int width, int height,
BEGIN_EVENT_TABLE(wxSTCCallTip, wxSTCCallTipBase)
EVT_PAINT(wxSTCCallTip::OnPaint)
BEGIN_EVENT_TABLE(wxSTCCallTip, wxSTCCallTipBase)
EVT_PAINT(wxSTCCallTip::OnPaint)
+ EVT_SET_FOCUS(wxSTCCallTip::OnFocus)
#if wxUSE_POPUPWIN && wxSTC_USE_POPUP
EVT_LEFT_DOWN(wxSTCCallTip::OnLeftDown)
#endif
#if wxUSE_POPUPWIN && wxSTC_USE_POPUP
EVT_LEFT_DOWN(wxSTCCallTip::OnLeftDown)
#endif
//----------------------------------------------------------------------
// Helper classes for ListBox
//----------------------------------------------------------------------
// Helper classes for ListBox
+
+// #undef wxSTC_USE_POPUP
+// #define wxSTC_USE_POPUP 0
+
+
// A wxListBox that gives focus back to its parent if it gets it.
class wxSTCListBox : public wxListBox {
public:
// A wxListBox that gives focus back to its parent if it gets it.
class wxSTCListBox : public wxListBox {
public:
0, NULL, wxLB_SINGLE | wxSIMPLE_BORDER)
{}
0, NULL, wxLB_SINGLE | wxSIMPLE_BORDER)
{}
- void OnFocus(wxFocusEvent& event) {
- GetParent()->SetFocus();
- event.Skip();
+ void OnKeyDown(wxKeyEvent& event) {
+ // Give the key events to the STC. It will then update
+ // the listbox as needed.
+ GetGrandParent()->GetEventHandler()->ProcessEvent(event);
};
BEGIN_EVENT_TABLE(wxSTCListBox, wxListBox)
};
BEGIN_EVENT_TABLE(wxSTCListBox, wxListBox)
- EVT_SET_FOCUS(wxSTCListBox::OnFocus)
+ EVT_KEY_DOWN(wxSTCListBox::OnKeyDown)
+ EVT_CHAR(wxSTCListBox::OnKeyDown)
-#undef wxSTC_USE_POPUP
-#define wxSTC_USE_POPUP 0 // Leave it off for this one...
// A window to place the listbox upon. If wxPopupWindow is supported then
// A window to place the listbox upon. If wxPopupWindow is supported then
: wxSTCListBoxWinBase(parent, param2) {
lb = new wxSTCListBox(this, id);
lb->SetCursor(wxCursor(wxCURSOR_ARROW));
: wxSTCListBoxWinBase(parent, param2) {
lb = new wxSTCListBox(this, id);
lb->SetCursor(wxCursor(wxCURSOR_ARROW));
}
void OnSize(wxSizeEvent& event) {
lb->SetSize(GetSize());
}
}
void OnSize(wxSizeEvent& event) {
lb->SetSize(GetSize());
}
- void OnFocus(wxFocusEvent& event) {
- GetParent()->SetFocus();
- event.Skip();
- }
- wxListBox* GetLB() { return lb; }
+ wxListBox* GetLB() { return lb; }
#if wxUSE_POPUPWIN && wxSTC_USE_POPUP
virtual void DoSetSize(int x, int y,
#if wxUSE_POPUPWIN && wxSTC_USE_POPUP
virtual void DoSetSize(int x, int y,
};
BEGIN_EVENT_TABLE(wxSTCListBoxWin, wxSTCListBoxWinBase)
};
BEGIN_EVENT_TABLE(wxSTCListBoxWin, wxSTCListBoxWinBase)
- EVT_SIZE (wxSTCListBoxWin::OnSize)
- EVT_SET_FOCUS (wxSTCListBoxWin::OnFocus)
+ EVT_SIZE(wxSTCListBoxWin::OnSize)
+ void OnFocus(wxFocusEvent& event) {
+ GetParent()->SetFocus();
+ event.Skip();
+ }
+
#if wxUSE_POPUPWIN && wxSTC_USE_POPUP
virtual void DoSetSize(int x, int y,
int width, int height,
#if wxUSE_POPUPWIN && wxSTC_USE_POPUP
virtual void DoSetSize(int x, int y,
int width, int height,
BEGIN_EVENT_TABLE(wxSTCCallTip, wxSTCCallTipBase)
EVT_PAINT(wxSTCCallTip::OnPaint)
BEGIN_EVENT_TABLE(wxSTCCallTip, wxSTCCallTipBase)
EVT_PAINT(wxSTCCallTip::OnPaint)
+ EVT_SET_FOCUS(wxSTCCallTip::OnFocus)
#if wxUSE_POPUPWIN && wxSTC_USE_POPUP
EVT_LEFT_DOWN(wxSTCCallTip::OnLeftDown)
#endif
#if wxUSE_POPUPWIN && wxSTC_USE_POPUP
EVT_LEFT_DOWN(wxSTCCallTip::OnLeftDown)
#endif