]> git.saurik.com Git - wxWidgets.git/blobdiff - src/stc/stc.cpp
fix for rather mysterious problem when deleting the list ctrl
[wxWidgets.git] / src / stc / stc.cpp
index a362eaf491657cdf6dab08be7a0f45d0a92d2f27..35655c34114507e1ececceaa5a046a2f9c967c08 100644 (file)
@@ -66,14 +66,36 @@ int wxForceScintillaLexers(void)
 
 const wxChar* wxSTCNameStr = "stcwindow";
 
+
+DEFINE_EVENT_TYPE( wxEVT_STC_CHANGE )
+DEFINE_EVENT_TYPE( wxEVT_STC_STYLENEEDED )
+DEFINE_EVENT_TYPE( wxEVT_STC_CHARADDED )
+DEFINE_EVENT_TYPE( wxEVT_STC_UPDATEUI )
+DEFINE_EVENT_TYPE( wxEVT_STC_SAVEPOINTREACHED )
+DEFINE_EVENT_TYPE( wxEVT_STC_SAVEPOINTLEFT )
+DEFINE_EVENT_TYPE( wxEVT_STC_ROMODIFYATTEMPT )
+DEFINE_EVENT_TYPE( wxEVT_STC_DOUBLECLICK )
+DEFINE_EVENT_TYPE( wxEVT_STC_MODIFIED )
+DEFINE_EVENT_TYPE( wxEVT_STC_KEY )
+DEFINE_EVENT_TYPE( wxEVT_STC_MACRORECORD )
+DEFINE_EVENT_TYPE( wxEVT_STC_MARGINCLICK )
+DEFINE_EVENT_TYPE( wxEVT_STC_NEEDSHOWN )
+DEFINE_EVENT_TYPE( wxEVT_STC_POSCHANGED )
+
+
 BEGIN_EVENT_TABLE(wxStyledTextCtrl, wxControl)
     EVT_PAINT                   (wxStyledTextCtrl::OnPaint)
     EVT_SCROLLWIN               (wxStyledTextCtrl::OnScrollWin)
     EVT_SIZE                    (wxStyledTextCtrl::OnSize)
     EVT_LEFT_DOWN               (wxStyledTextCtrl::OnMouseLeftDown)
+#ifdef __WXMSW__
+    // Let Scintilla see the double click as a second click
+    EVT_LEFT_DCLICK             (wxStyledTextCtrl::OnMouseLeftDown)
+#endif
     EVT_MOTION                  (wxStyledTextCtrl::OnMouseMove)
     EVT_LEFT_UP                 (wxStyledTextCtrl::OnMouseLeftUp)
     EVT_RIGHT_UP                (wxStyledTextCtrl::OnMouseRightUp)
+    EVT_MOUSEWHEEL              (wxStyledTextCtrl::OnMouseWheel)
     EVT_CHAR                    (wxStyledTextCtrl::OnChar)
     EVT_KEY_DOWN                (wxStyledTextCtrl::OnKeyDown)
     EVT_KILL_FOCUS              (wxStyledTextCtrl::OnLoseFocus)
@@ -1055,7 +1077,7 @@ void wxStyledTextCtrl::SetText(const wxString& text) {
 // Retrieve all the text in the document.
 wxString wxStyledTextCtrl::GetText() {
                         wxString text;
-                        int   len  = GetTextLength();
+                        int   len  = GetTextLength()+1;
                         char* buff = text.GetWriteBuf(len+1);
 
                         SendMsg(2182, len, (long)buff);
@@ -1481,7 +1503,6 @@ wxPoint wxStyledTextCtrl::PointFromPosition(int pos) {
     return wxPoint(x, y);
 }
 
-
 // Scroll enough to make the given line visible
 void wxStyledTextCtrl::ScrollToLine(int line) {
     m_swx->DoScrollToLine(line);
@@ -1494,6 +1515,7 @@ void wxStyledTextCtrl::ScrollToColumn(int column) {
 }
 
 
+
 //----------------------------------------------------------------------
 // Event handlers
 
@@ -1540,37 +1562,23 @@ void wxStyledTextCtrl::OnMouseRightUp(wxMouseEvent& evt) {
 }
 
 
+void wxStyledTextCtrl::OnMouseWheel(wxMouseEvent& evt) {
+    m_swx->DoMouseWheel(evt.GetWheelRotation(),
+                        evt.GetWheelDelta(),
+                        evt.GetLinesPerAction());
+}
+
+
 void wxStyledTextCtrl::OnChar(wxKeyEvent& evt) {
     long key = evt.KeyCode();
-    switch (key) {
-        // Special handling for charcters that must be typed with AltGr down on
-        // foreign keyboards.  (Comes to us as Ctrl+Alt, and so would get
-        // filtered out by the default case below.)
-        //
-        // There should be a better way to do this...
-        //
-        case '\\':
-        case '|':
-        case '@':
-        case '#':
-        case '¬':
-        case '[':
-        case ']':
-        case '{':
-        case '}':
-        case '?':
-            m_swx->DoAddChar(key);
-            break;
-
-        default:
-            if ((key > WXK_ESCAPE) && (key != WXK_DELETE) && (key < 255) &&
-                !evt.ControlDown() && !evt.AltDown()) {
-
-                m_swx->DoAddChar(key);
-            }
-            else {
-                evt.Skip();
-            }
+    if ((key > WXK_ESCAPE) &&
+        (key != WXK_DELETE) && (key < 255) &&
+        !evt.ControlDown() && !evt.AltDown()) {
+
+        m_swx->DoAddChar(key);
+    }
+    else {
+        evt.Skip();
     }
 }
 
@@ -1583,7 +1591,6 @@ void wxStyledTextCtrl::OnKeyDown(wxKeyEvent& evt) {
         evt.Skip();
 }
 
-
 void wxStyledTextCtrl::OnLoseFocus(wxFocusEvent& evt) {
     m_swx->DoLoseFocus();
 }