Take care of some focus issues with the AutoComp list box and also a

crash at exit when losing focus.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27723 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2004-06-10 00:09:27 +00:00
parent 5ac9433d0a
commit 719ee9c389
6 changed files with 62 additions and 6 deletions

View File

@@ -684,6 +684,7 @@ public:
: wxListView(parent, id, pos, size, style)
{}
void OnFocus(wxFocusEvent& event) {
GetParent()->SetFocus();
event.Skip();
@@ -693,6 +694,23 @@ public:
// Do nothing. Prevents base class from resetting the colors...
}
#ifdef __WXMAC__
// For some reason I don't understand yet the focus doesn't really leave
// the listbox like it should, so if we get any events feed them back to
// the wxSTC
void OnKeyDown(wxKeyEvent& event) {
GetGrandParent()->GetEventHandler()->ProcessEvent(event);
}
void OnChar(wxKeyEvent& event) {
GetGrandParent()->GetEventHandler()->ProcessEvent(event);
}
// And we need to force the focus back when being destroyed
~wxSTCListBox() {
GetGrandParent()->SetFocus();
}
#endif
private:
DECLARE_EVENT_TABLE()
};
@@ -700,6 +718,10 @@ private:
BEGIN_EVENT_TABLE(wxSTCListBox, wxListView)
EVT_SET_FOCUS( wxSTCListBox::OnFocus)
EVT_KILL_FOCUS(wxSTCListBox::OnKillFocus)
#ifdef __WXMAC__
EVT_KEY_DOWN( wxSTCListBox::OnKeyDown)
EVT_CHAR( wxSTCListBox::OnChar)
#endif
END_EVENT_TABLE()
@@ -736,7 +758,7 @@ public:
// immediately.
bool Destroy() {
#ifdef __WXMAC__
// There bottom edge of this window is not getting properly
// The bottom edge of this window is not getting properly
// refreshed upon deletion, so help it out...
wxWindow* p = GetParent();
wxRect r(GetPosition(), GetSize());

View File

@@ -2720,6 +2720,9 @@ void wxStyledTextCtrl::OnKeyDown(wxKeyEvent& evt) {
void wxStyledTextCtrl::OnLoseFocus(wxFocusEvent& evt) {
#ifdef __WXMAC__
if (! (IsBeingDeleted() || GetParent()->IsBeingDeleted()))
#endif
m_swx->DoLoseFocus();
evt.Skip();
}

View File

@@ -529,6 +529,9 @@ void wxStyledTextCtrl::OnKeyDown(wxKeyEvent& evt) {
void wxStyledTextCtrl::OnLoseFocus(wxFocusEvent& evt) {
#ifdef __WXMAC__
if (! (IsBeingDeleted() || GetParent()->IsBeingDeleted()))
#endif
m_swx->DoLoseFocus();
evt.Skip();
}

View File

@@ -684,6 +684,7 @@ public:
: wxListView(parent, id, pos, size, style)
{}
void OnFocus(wxFocusEvent& event) {
GetParent()->SetFocus();
event.Skip();
@@ -693,6 +694,23 @@ public:
// Do nothing. Prevents base class from resetting the colors...
}
#ifdef __WXMAC__
// For some reason I don't understand yet the focus doesn't really leave
// the listbox like it should, so if we get any events feed them back to
// the wxSTC
void OnKeyDown(wxKeyEvent& event) {
GetGrandParent()->GetEventHandler()->ProcessEvent(event);
}
void OnChar(wxKeyEvent& event) {
GetGrandParent()->GetEventHandler()->ProcessEvent(event);
}
// And we need to force the focus back when being destroyed
~wxSTCListBox() {
GetGrandParent()->SetFocus();
}
#endif
private:
DECLARE_EVENT_TABLE()
};
@@ -700,6 +718,10 @@ private:
BEGIN_EVENT_TABLE(wxSTCListBox, wxListView)
EVT_SET_FOCUS( wxSTCListBox::OnFocus)
EVT_KILL_FOCUS(wxSTCListBox::OnKillFocus)
#ifdef __WXMAC__
EVT_KEY_DOWN( wxSTCListBox::OnKeyDown)
EVT_CHAR( wxSTCListBox::OnChar)
#endif
END_EVENT_TABLE()
@@ -736,7 +758,7 @@ public:
// immediately.
bool Destroy() {
#ifdef __WXMAC__
// There bottom edge of this window is not getting properly
// The bottom edge of this window is not getting properly
// refreshed upon deletion, so help it out...
wxWindow* p = GetParent();
wxRect r(GetPosition(), GetSize());

View File

@@ -2720,6 +2720,9 @@ void wxStyledTextCtrl::OnKeyDown(wxKeyEvent& evt) {
void wxStyledTextCtrl::OnLoseFocus(wxFocusEvent& evt) {
#ifdef __WXMAC__
if (! (IsBeingDeleted() || GetParent()->IsBeingDeleted()))
#endif
m_swx->DoLoseFocus();
evt.Skip();
}

View File

@@ -529,6 +529,9 @@ void wxStyledTextCtrl::OnKeyDown(wxKeyEvent& evt) {
void wxStyledTextCtrl::OnLoseFocus(wxFocusEvent& evt) {
#ifdef __WXMAC__
if (! (IsBeingDeleted() || GetParent()->IsBeingDeleted()))
#endif
m_swx->DoLoseFocus();
evt.Skip();
}