void TextAreaMouseMove(object sender, MouseEventArgs e) { ShowHiddenCursor(); if (dodragdrop) { dodragdrop = false; return; } doubleclick = false; mousepos = new Point(e.X, e.Y); if (clickedOnSelectedText) { if (Math.Abs(mousedownpos.X - mousepos.X) >= SystemInformation.DragSize.Width / 2 || Math.Abs(mousedownpos.Y - mousepos.Y) >= SystemInformation.DragSize.Height / 2) { clickedOnSelectedText = false; ISelection selection = textArea.SelectionManager.GetSelectionAt(textArea.Caret.Offset); if (selection != null) { if (textArea.EnableCutOrPaste == true) { string text = selection.SelectedText; if (text != null && text.Length > 0) { DataObject dataObject = new DataObject(); dataObject.SetData(DataFormats.UnicodeText, true, text); dataObject.SetData(selection); dodragdrop = true; textArea.DoDragDrop(dataObject, DragDropEffects.All); } } } } return; } if (e.Button == MouseButtons.None) { FoldMarker marker = textArea.TextView.GetFoldMarkerFromPosition(mousepos.X - textArea.TextView.DrawingPosition.X, mousepos.Y - textArea.TextView.DrawingPosition.Y); if (marker != null && marker.IsFolded) { StringBuilder sb = new StringBuilder(marker.InnerText); // max 10 lines int endLines = 0; for (int i = 0; i < sb.Length; ++i) { if (sb[i] == '\n') { ++endLines; if (endLines >= 10) { sb.Remove(i + 1, sb.Length - i - 1); sb.Append(Environment.NewLine); sb.Append("..."); break; } } } sb.Replace("\t", " "); textArea.SetToolTip(sb.ToString()); return; } Point clickPosition2 = textArea.TextView.GetLogicalPosition(mousepos.X - textArea.TextView.DrawingPosition.X, mousepos.Y - textArea.TextView.DrawingPosition.Y); ArrayList markers = textArea.Document.MarkerStrategy.GetMarkers(clickPosition2); foreach (TextMarker tm in markers) { if (tm.ToolTip != null) { textArea.SetToolTip(tm.ToolTip.Replace("\t", " ")); return; } } } if (e.Button == MouseButtons.Left) { if (gotmousedown) { ExtendSelectionToMouse(); } } }