X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0c5b83b0fa94deaa77ff72760bb9ba0e51a03202..585a7f9db315c3ef39cf09ff5e65b14cdcea04bf:/src/stc/PlatWX.cpp diff --git a/src/stc/PlatWX.cpp b/src/stc/PlatWX.cpp index d23d0a981b..8edc3bf5e7 100644 --- a/src/stc/PlatWX.cpp +++ b/src/stc/PlatWX.cpp @@ -284,9 +284,16 @@ bool SurfaceImpl::Initialised() { } void SurfaceImpl::Init() { +#if 0 Release(); hdc = new wxMemoryDC(); hdcOwned = true; +#else + // On Mac and GTK the DC is not really valid until it has a bitmap + // selected into it. So instead of just creating the DC with no bitmap, + // go ahead and give it one. + InitPixMap(1,1,NULL); +#endif } void SurfaceImpl::Init(SurfaceID hdc_) { @@ -625,8 +632,12 @@ void Window::SetCursor(Cursor curs) { cursorId = wxCURSOR_ARROW; break; } - - GETWIN(id)->SetCursor(wxCursor(cursorId)); +#ifdef __WXMOTIF__ + wxCursor wc = wxStockCursor(cursorId) ; +#else + wxCursor wc = wxCursor(cursorId) ; +#endif + GETWIN(id)->SetCursor(wc); } @@ -639,16 +650,42 @@ void Window::SetTitle(const char *s) { // Helper classes for ListBox -// #undef wxSTC_USE_POPUP -// #define wxSTC_USE_POPUP 0 +#if 1 // defined(__WXMAC__) +class wxSTCListBoxWin : public wxListBox { +public: + wxSTCListBoxWin(wxWindow* parent, wxWindowID id) + : wxListBox(parent, id, wxDefaultPosition, wxSize(0,0), + 0, NULL, wxLB_SINGLE | wxSIMPLE_BORDER) { + SetCursor(wxCursor(wxCURSOR_ARROW)); + Hide(); + } + + void OnFocus(wxFocusEvent& event) { + GetParent()->SetFocus(); + event.Skip(); + } + + wxListBox* GetLB() { return this; } + +private: + DECLARE_EVENT_TABLE() +}; + + +BEGIN_EVENT_TABLE(wxSTCListBoxWin, wxListBox) + EVT_SET_FOCUS(wxSTCListBoxWin::OnFocus) +END_EVENT_TABLE() + + + +#else -// A wxListBox that gives focus back to its parent if it gets it. class wxSTCListBox : public wxListBox { public: wxSTCListBox(wxWindow* parent, wxWindowID id) : wxListBox(parent, id, wxDefaultPosition, wxDefaultSize, - 0, NULL, wxLB_SINGLE | wxSIMPLE_BORDER) + 0, NULL, wxLB_SINGLE | wxSIMPLE_BORDER | wxWANTS_CHARS) {} void OnKeyDown(wxKeyEvent& event) { @@ -668,6 +705,9 @@ END_EVENT_TABLE() +#undef wxSTC_USE_POPUP +#define wxSTC_USE_POPUP 0 // wxPopupWindow just doesn't work well in this case... + // A window to place the listbox upon. If wxPopupWindow is supported then // that will be used so the listbox can extend beyond the client area of the // wxSTC if needed. @@ -687,7 +727,7 @@ public: lb = new wxSTCListBox(this, id); lb->SetCursor(wxCursor(wxCURSOR_ARROW)); lb->SetFocus(); - } + } void OnSize(wxSizeEvent& event) { lb->SetSize(GetSize()); @@ -715,7 +755,7 @@ private: BEGIN_EVENT_TABLE(wxSTCListBoxWin, wxSTCListBoxWinBase) EVT_SIZE(wxSTCListBoxWin::OnSize) END_EVENT_TABLE() - +#endif inline wxListBox* GETLB(WindowID win) { return (((wxSTCListBoxWin*)win)->GetLB());