X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e14d10b039e68a701a447043a4031cf43e9fa90b..d1a6e2b7a103d761fbc15e0e9c1c20ab53a849d9:/contrib/src/stc/stc.cpp diff --git a/contrib/src/stc/stc.cpp b/contrib/src/stc/stc.cpp index 274bce2f81..a9ca85c5c1 100644 --- a/contrib/src/stc/stc.cpp +++ b/contrib/src/stc/stc.cpp @@ -136,11 +136,24 @@ wxStyledTextCtrl::wxStyledTextCtrl(wxWindow *parent, const wxPoint& pos, const wxSize& size, long style, - const wxString& name) : - wxControl(parent, id, pos, size, - style | wxVSCROLL | wxHSCROLL | wxWANTS_CHARS | wxCLIP_CHILDREN, - wxDefaultValidator, name) + const wxString& name) { + m_swx = NULL; + Create(parent, id, pos, size, style, name); +} + + +void wxStyledTextCtrl::Create(wxWindow *parent, + wxWindowID id, + const wxPoint& pos, + const wxSize& size, + long style, + const wxString& name) +{ + wxControl::Create(parent, id, pos, size, + style | wxWANTS_CHARS | wxCLIP_CHILDREN, + wxDefaultValidator, name); + #ifdef LINK_LEXERS Scintilla_LinkLexers(); #endif @@ -1121,7 +1134,7 @@ wxString wxStyledTextCtrl::GetSelectedText() { int len = end - start; if (!len) return wxEmptyString; - wxMemoryBuffer mbuf(len+1); + wxMemoryBuffer mbuf(len+2); char* buf = (char*)mbuf.GetWriteBuf(len+1); SendMsg(2161, 0, (long)buf); mbuf.UngetWriteBuf(len); @@ -1802,12 +1815,12 @@ bool wxStyledTextCtrl::GetMouseDownCaptures() { } // Sets the cursor to one of the SC_CURSOR* values. -void wxStyledTextCtrl::SetCursor(int cursorType) { +void wxStyledTextCtrl::SetSTCCursor(int cursorType) { SendMsg(2386, cursorType, 0); } // Get cursor type. -int wxStyledTextCtrl::GetCursor() { +int wxStyledTextCtrl::GetSTCCursor() { return SendMsg(2387, 0, 0); } @@ -2037,6 +2050,11 @@ void wxStyledTextCtrl::StyleSetSpec(int styleNum, const wxString& spec) { // Set style size, face, bold, italic, and underline attributes from // a wxFont's attributes. void wxStyledTextCtrl::StyleSetFont(int styleNum, wxFont& font) { +#ifdef __WXGTK__ + // Ensure that the native font is initialized + int x, y; + GetTextExtent(wxT("X"), &x, &y, NULL, NULL, &font); +#endif int size = font.GetPointSize(); wxString faceName = font.GetFaceName(); bool bold = font.GetWeight() == wxBOLD; @@ -2110,7 +2128,7 @@ bool wxStyledTextCtrl::SaveFile(const wxString& filename) if (!file.IsOpened()) return FALSE; - bool success = file.Write(GetText()); + bool success = file.Write(GetText(), *wxConvCurrent); if (success) SetSavePoint(); @@ -2127,12 +2145,17 @@ bool wxStyledTextCtrl::LoadFile(const wxString& filename) { wxString contents; off_t len = file.Length(); - if (len > 0) { - wxChar *buf = contents.GetWriteBuf(len); - success = (file.Read(buf, len) == len); - contents.UngetWriteBuf(); +#if wxUSE_UNICODE + wxMemoryBuffer buffer(len); + success = (file.Read(buffer.GetData(), len) == len); + contents = wxString(buffer, *wxConvCurrent); +#else + wxString buffer; + success = (file.Read(wxStringBuffer(buffer, len), len) == len); + contents = buffer; +#endif } else success = true; // empty file is ok @@ -2149,10 +2172,22 @@ bool wxStyledTextCtrl::LoadFile(const wxString& filename) } +#if wxUSE_DRAG_AND_DROP +wxDragResult wxStyledTextCtrl::DoDragOver(wxCoord x, wxCoord y, wxDragResult def) { + return m_swx->DoDragOver(x, y, def); +} + + +bool wxStyledTextCtrl::DoDropText(long x, long y, const wxString& data) { + return m_swx->DoDropText(x, y, data); +} +#endif + + //---------------------------------------------------------------------- // Event handlers -void wxStyledTextCtrl::OnPaint(wxPaintEvent& evt) { +void wxStyledTextCtrl::OnPaint(wxPaintEvent& WXUNUSED(evt)) { wxPaintDC dc(this); m_swx->DoPaint(&dc, GetUpdateRegion().GetBox()); } @@ -2174,9 +2209,11 @@ void wxStyledTextCtrl::OnScroll(wxScrollEvent& evt) { } } -void wxStyledTextCtrl::OnSize(wxSizeEvent& evt) { - wxSize sz = GetClientSize(); - m_swx->DoSize(sz.x, sz.y); +void wxStyledTextCtrl::OnSize(wxSizeEvent& WXUNUSED(evt)) { + if (m_swx) { + wxSize sz = GetClientSize(); + m_swx->DoSize(sz.x, sz.y); + } } void wxStyledTextCtrl::OnMouseLeftDown(wxMouseEvent& evt) { @@ -2252,9 +2289,10 @@ void wxStyledTextCtrl::OnKeyDown(wxKeyEvent& evt) { int key = evt.GetKeyCode(); bool shift = evt.ShiftDown(), ctrl = evt.ControlDown(), - alt = evt.AltDown(); + alt = evt.AltDown(), + meta = evt.MetaDown(); - int processed = m_swx->DoKeyDown(key, shift, ctrl, alt, &m_lastKeyDownConsumed); + int processed = m_swx->DoKeyDown(key, shift, ctrl, alt, meta, &m_lastKeyDownConsumed); // printf("KeyDn key:%d shift:%d ctrl:%d alt:%d processed:%d consumed:%d\n", // key, shift, ctrl, alt, processed, m_lastKeyDownConsumed); @@ -2264,22 +2302,22 @@ void wxStyledTextCtrl::OnKeyDown(wxKeyEvent& evt) { } -void wxStyledTextCtrl::OnLoseFocus(wxFocusEvent& evt) { +void wxStyledTextCtrl::OnLoseFocus(wxFocusEvent& WXUNUSED(evt)) { m_swx->DoLoseFocus(); } -void wxStyledTextCtrl::OnGainFocus(wxFocusEvent& evt) { +void wxStyledTextCtrl::OnGainFocus(wxFocusEvent& WXUNUSED(evt)) { m_swx->DoGainFocus(); } -void wxStyledTextCtrl::OnSysColourChanged(wxSysColourChangedEvent& evt) { +void wxStyledTextCtrl::OnSysColourChanged(wxSysColourChangedEvent& WXUNUSED(evt)) { m_swx->DoSysColourChange(); } -void wxStyledTextCtrl::OnEraseBackground(wxEraseEvent& evt) { +void wxStyledTextCtrl::OnEraseBackground(wxEraseEvent& WXUNUSED(evt)) { // do nothing to help avoid flashing } @@ -2290,7 +2328,7 @@ void wxStyledTextCtrl::OnMenu(wxCommandEvent& evt) { } -void wxStyledTextCtrl::OnListBox(wxCommandEvent& evt) { +void wxStyledTextCtrl::OnListBox(wxCommandEvent& WXUNUSED(evt)) { m_swx->DoOnListBox(); }