X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3396739da180ef3f8d006f11f8a13a9e0df7d88d..96c9640205933ad0673d5af2c96af0816c50160c:/src/stc/stc.cpp.in?ds=sidebyside diff --git a/src/stc/stc.cpp.in b/src/stc/stc.cpp.in index fa51a690f7..70f3646ae9 100644 --- a/src/stc/stc.cpp.in +++ b/src/stc/stc.cpp.in @@ -12,7 +12,7 @@ // Created: 13-Jan-2000 // RCS-ID: $Id$ // Copyright: (c) 2000 by Total Control Software -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// /* @@ -124,6 +124,8 @@ wxDEFINE_EVENT( wxEVT_STC_CALLTIP_CLICK, wxStyledTextEvent ); wxDEFINE_EVENT( wxEVT_STC_AUTOCOMP_SELECTION, wxStyledTextEvent ); wxDEFINE_EVENT( wxEVT_STC_INDICATOR_CLICK, wxStyledTextEvent ); wxDEFINE_EVENT( wxEVT_STC_INDICATOR_RELEASE, wxStyledTextEvent ); +wxDEFINE_EVENT( wxEVT_STC_AUTOCOMP_CANCELLED, wxStyledTextEvent ); +wxDEFINE_EVENT( wxEVT_STC_AUTOCOMP_CHAR_DELETED, wxStyledTextEvent ); @@ -197,7 +199,7 @@ bool wxStyledTextCtrl::Create(wxWindow *parent, m_swx = new ScintillaWX(this); m_stopWatch.Start(); m_lastKeyDownConsumed = false; - m_lastWheelTimestamp = 0; + m_timeToBlockWheelEventsUntil = 0; m_vScrollBar = NULL; m_hScrollBar = NULL; #if wxUSE_UNICODE @@ -208,7 +210,7 @@ bool wxStyledTextCtrl::Create(wxWindow *parent, SetInitialSize(size); // Reduces flicker on GTK+/X11 - SetBackgroundStyle(wxBG_STYLE_CUSTOM); + SetBackgroundStyle(wxBG_STYLE_PAINT); // Make sure it can take the focus SetCanFocus(true); @@ -584,9 +586,11 @@ bool wxStyledTextCtrl::GetUseAntiAliasing() { -void wxStyledTextCtrl::AddTextRaw(const char* text) +void wxStyledTextCtrl::AddTextRaw(const char* text, int length) { - SendMsg(SCI_ADDTEXT, strlen(text), (sptr_t)text); + if (length == -1) + length = strlen(text); + SendMsg(SCI_ADDTEXT, length, (sptr_t)text); } void wxStyledTextCtrl::InsertTextRaw(int pos, const char* text) @@ -674,9 +678,11 @@ wxCharBuffer wxStyledTextCtrl::GetTextRaw() return buf; } -void wxStyledTextCtrl::AppendTextRaw(const char* text) +void wxStyledTextCtrl::AppendTextRaw(const char* text, int length) { - SendMsg(SCI_APPENDTEXT, strlen(text), (sptr_t)text); + if (length == -1) + length = strlen(text); + SendMsg(SCI_APPENDTEXT, length, (sptr_t)text); } @@ -762,18 +768,24 @@ void wxStyledTextCtrl::OnContextMenu(wxContextMenuEvent& evt) { void wxStyledTextCtrl::OnMouseWheel(wxMouseEvent& evt) { - // prevent having an event queue with wheel events that cannot be processed - // reasonably fast (see ticket #9057) - if ( m_lastWheelTimestamp <= evt.GetTimestamp() ) + // Prevent having an event queue with wheel events that cannot be processed + // reasonably fast (see ticket #9057) by ignoring all of them that happen + // during the time interval corresponding to the time it took us to handle + // the last one. + // + // Notice the use of TimeInMicro() instead of Time() to avoid overflow in + // long running programs. + if ( m_timeToBlockWheelEventsUntil <= m_stopWatch.TimeInMicro() ) { - m_lastWheelTimestamp = m_stopWatch.Time(); + const wxLongLong beforeMouseWheel = m_stopWatch.TimeInMicro(); m_swx->DoMouseWheel(evt.GetWheelRotation(), evt.GetWheelDelta(), evt.GetLinesPerAction(), evt.ControlDown(), evt.IsPageScroll()); - m_lastWheelTimestamp = m_stopWatch.Time() - m_lastWheelTimestamp; - m_lastWheelTimestamp += evt.GetTimestamp(); + const wxLongLong afterMouseWheel = m_stopWatch.TimeInMicro(); + m_timeToBlockWheelEventsUntil = afterMouseWheel; + m_timeToBlockWheelEventsUntil += afterMouseWheel - beforeMouseWheel; } } @@ -1032,6 +1044,14 @@ void wxStyledTextCtrl::NotifyParent(SCNotification* _scn) { evt.SetEventType(wxEVT_STC_INDICATOR_RELEASE); break; + case SCN_AUTOCCANCELLED: + evt.SetEventType(wxEVT_STC_AUTOCOMP_CANCELLED); + break; + + case SCN_AUTOCCHARDELETED: + evt.SetEventType(wxEVT_STC_AUTOCOMP_CHAR_DELETED); + break; + default: return; } @@ -1063,8 +1083,8 @@ wxStyledTextEvent::wxStyledTextEvent(wxEventType commandType, int id) m_listType = 0; m_x = 0; m_y = 0; - m_dragAllowMove = false; #if wxUSE_DRAG_AND_DROP + m_dragFlags = wxDrag_CopyOnly; m_dragResult = wxDragNone; #endif } @@ -1098,9 +1118,9 @@ wxStyledTextEvent::wxStyledTextEvent(const wxStyledTextEvent& event): m_x = event.m_x; m_y = event.m_y; - m_dragText = event.m_dragText; - m_dragAllowMove =event.m_dragAllowMove; #if wxUSE_DRAG_AND_DROP + m_dragText = event.m_dragText; + m_dragFlags = event.m_dragFlags; m_dragResult = event.m_dragResult; #endif } @@ -1108,4 +1128,9 @@ wxStyledTextEvent::wxStyledTextEvent(const wxStyledTextEvent& event): //---------------------------------------------------------------------- //---------------------------------------------------------------------- +/*static*/ wxVersionInfo wxStyledTextCtrl::GetLibraryVersionInfo() +{ + return wxVersionInfo("Scintilla", 2, 3, 0, "Scintilla 2.03"); +} + #endif // wxUSE_STC