X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/88a8b04e9c387b5e5295d42f2ed23afcf37e3c2e..11d1adbfda13e56736ef62d07a7220134e62c5e5:/src/stc/PlatWX.cpp diff --git a/src/stc/PlatWX.cpp b/src/stc/PlatWX.cpp index 859d11ce9a..ceb50296a6 100644 --- a/src/stc/PlatWX.cpp +++ b/src/stc/PlatWX.cpp @@ -675,6 +675,7 @@ void Window::SetCursor(Cursor curs) { break; case cursorHand: cursorId = wxCURSOR_HAND; + break; default: cursorId = wxCURSOR_ARROW; break; @@ -697,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: @@ -712,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() @@ -740,9 +746,26 @@ 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(); } + + // On OSX and (possibly others) there can still be pending + // messages/events for the list control when Scintilla wants to + // close it, so do a pending delete of it instead of destroying + // immediately. + bool Destroy() { + if ( !wxPendingDelete.Member(this) ) + wxPendingDelete.Append(this); + return TRUE; + } + + int IconWidth() { wxImageList* il = lv->GetImageList(wxIMAGE_LIST_SMALL); if (il != NULL) { @@ -888,7 +911,7 @@ PRectangle ListBoxImpl::GetDesiredRect() { // wxListCtrl doesn't have a DoGetBestSize, so instead we kept track of // the max size in Append and calculate it here... int maxw = maxStrWidth; - int maxh = 0; + int maxh ; // give it a default if there are no lines, and/or add a bit more if (maxw == 0) maxw = 100;