Fixes in focus handling related to the AutoComplete window.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@23865 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -698,7 +698,7 @@ void Window::SetTitle(const char *s) {
|
|||||||
// Helper classes for ListBox
|
// Helper classes for ListBox
|
||||||
|
|
||||||
|
|
||||||
// This is a simple subclass of wxLIstView that just resets focus to the
|
// This is a simple subclass of wxListView that just resets focus to the
|
||||||
// parent when it gets it.
|
// parent when it gets it.
|
||||||
class wxSTCListBox : public wxListView {
|
class wxSTCListBox : public wxListView {
|
||||||
public:
|
public:
|
||||||
@@ -713,12 +713,17 @@ public:
|
|||||||
event.Skip();
|
event.Skip();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void OnKillFocus(wxFocusEvent& event) {
|
||||||
|
// Do nothing. Prevents base class from resetting the colors...
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DECLARE_EVENT_TABLE()
|
DECLARE_EVENT_TABLE()
|
||||||
};
|
};
|
||||||
|
|
||||||
BEGIN_EVENT_TABLE(wxSTCListBox, wxListView)
|
BEGIN_EVENT_TABLE(wxSTCListBox, wxListView)
|
||||||
EVT_SET_FOCUS( wxSTCListBox::OnFocus)
|
EVT_SET_FOCUS( wxSTCListBox::OnFocus)
|
||||||
|
EVT_KILL_FOCUS(wxSTCListBox::OnKillFocus)
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
|
|
||||||
@@ -741,6 +746,11 @@ public:
|
|||||||
lv->SetCursor(wxCursor(wxCURSOR_ARROW));
|
lv->SetCursor(wxCursor(wxCURSOR_ARROW));
|
||||||
lv->InsertColumn(0, wxEmptyString);
|
lv->InsertColumn(0, wxEmptyString);
|
||||||
lv->InsertColumn(1, wxEmptyString);
|
lv->InsertColumn(1, wxEmptyString);
|
||||||
|
|
||||||
|
// Eventhough we immediately reset the focus to the parent, this helps
|
||||||
|
// things to look right...
|
||||||
|
lv->SetFocus();
|
||||||
|
|
||||||
Hide();
|
Hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -136,6 +136,7 @@ END_EVENT_TABLE()
|
|||||||
|
|
||||||
ScintillaWX::ScintillaWX(wxStyledTextCtrl* win) {
|
ScintillaWX::ScintillaWX(wxStyledTextCtrl* win) {
|
||||||
capturedMouse = false;
|
capturedMouse = false;
|
||||||
|
focusEvent = false;
|
||||||
wMain = win;
|
wMain = win;
|
||||||
stc = win;
|
stc = win;
|
||||||
wheelRotation = 0;
|
wheelRotation = 0;
|
||||||
@@ -333,6 +334,18 @@ void ScintillaWX::NotifyParent(SCNotification scn) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// This method is overloaded from ScintillaBase in order to prevent the
|
||||||
|
// AutoComplete window from being destroyed when it gets the focus. There is
|
||||||
|
// a side effect that the AutoComp will also not be destroyed when switching
|
||||||
|
// to another window, but I think that is okay.
|
||||||
|
void ScintillaWX::CancelModes() {
|
||||||
|
if (! focusEvent)
|
||||||
|
AutoCompleteCancel();
|
||||||
|
ct.CallTipCancel();
|
||||||
|
Editor::CancelModes();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void ScintillaWX::Copy() {
|
void ScintillaWX::Copy() {
|
||||||
if (currentPos != anchor) {
|
if (currentPos != anchor) {
|
||||||
@@ -606,11 +619,15 @@ void ScintillaWX::DoSize(int WXUNUSED(width), int WXUNUSED(height)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ScintillaWX::DoLoseFocus(){
|
void ScintillaWX::DoLoseFocus(){
|
||||||
|
focusEvent = true;
|
||||||
SetFocusState(false);
|
SetFocusState(false);
|
||||||
|
focusEvent = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScintillaWX::DoGainFocus(){
|
void ScintillaWX::DoGainFocus(){
|
||||||
|
focusEvent = true;
|
||||||
SetFocusState(true);
|
SetFocusState(true);
|
||||||
|
focusEvent = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScintillaWX::DoSysColourChange() {
|
void ScintillaWX::DoSysColourChange() {
|
||||||
|
@@ -124,6 +124,7 @@ public:
|
|||||||
virtual void NotifyChange();
|
virtual void NotifyChange();
|
||||||
virtual void NotifyParent(SCNotification scn);
|
virtual void NotifyParent(SCNotification scn);
|
||||||
|
|
||||||
|
virtual void CancelModes();
|
||||||
|
|
||||||
// Event delegates
|
// Event delegates
|
||||||
void DoPaint(wxDC* dc, wxRect rect);
|
void DoPaint(wxDC* dc, wxRect rect);
|
||||||
@@ -164,6 +165,7 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
bool capturedMouse;
|
bool capturedMouse;
|
||||||
|
bool focusEvent;
|
||||||
wxStyledTextCtrl* stc;
|
wxStyledTextCtrl* stc;
|
||||||
|
|
||||||
#if wxUSE_DRAG_AND_DROP
|
#if wxUSE_DRAG_AND_DROP
|
||||||
|
Reference in New Issue
Block a user