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:
Robin Dunn
2003-09-23 23:42:41 +00:00
parent 74b4ca1c60
commit 7ba2b66675
3 changed files with 30 additions and 1 deletions

View File

@@ -698,7 +698,7 @@ void Window::SetTitle(const char *s) {
// 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.
class wxSTCListBox : public wxListView {
public:
@@ -713,12 +713,17 @@ public:
event.Skip();
}
void OnKillFocus(wxFocusEvent& event) {
// Do nothing. Prevents base class from resetting the colors...
}
private:
DECLARE_EVENT_TABLE()
};
BEGIN_EVENT_TABLE(wxSTCListBox, wxListView)
EVT_SET_FOCUS( wxSTCListBox::OnFocus)
EVT_KILL_FOCUS(wxSTCListBox::OnKillFocus)
END_EVENT_TABLE()
@@ -741,6 +746,11 @@ public:
lv->SetCursor(wxCursor(wxCURSOR_ARROW));
lv->InsertColumn(0, wxEmptyString);
lv->InsertColumn(1, wxEmptyString);
// Eventhough we immediately reset the focus to the parent, this helps
// things to look right...
lv->SetFocus();
Hide();
}

View File

@@ -136,6 +136,7 @@ END_EVENT_TABLE()
ScintillaWX::ScintillaWX(wxStyledTextCtrl* win) {
capturedMouse = false;
focusEvent = false;
wMain = win;
stc = win;
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() {
if (currentPos != anchor) {
@@ -606,11 +619,15 @@ void ScintillaWX::DoSize(int WXUNUSED(width), int WXUNUSED(height)) {
}
void ScintillaWX::DoLoseFocus(){
focusEvent = true;
SetFocusState(false);
focusEvent = false;
}
void ScintillaWX::DoGainFocus(){
focusEvent = true;
SetFocusState(true);
focusEvent = false;
}
void ScintillaWX::DoSysColourChange() {

View File

@@ -124,6 +124,7 @@ public:
virtual void NotifyChange();
virtual void NotifyParent(SCNotification scn);
virtual void CancelModes();
// Event delegates
void DoPaint(wxDC* dc, wxRect rect);
@@ -164,6 +165,7 @@ public:
private:
bool capturedMouse;
bool focusEvent;
wxStyledTextCtrl* stc;
#if wxUSE_DRAG_AND_DROP