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();
}
}
}