public void MoveSelectionUp() { if (IsEmpty) { return; } var rect = PrintedTokens .Where(t => t.Token.Index + t.Token.Length <= End) .Select(t => t.Rect) .DefaultIfEmpty(RectangleF.Empty) .Last(); if (rect.IsEmpty) { return; } var tokenAbove = getTokenAbove(new PointF(rect.Right, rect.Top)); Begin = End = tokenAbove?.Index ?? 0; onChanged(); }
public void MoveSelectionDown() { if (IsEmpty) { return; } var rect = PrintedTokens .Where(t => t.Token.Index <= End) .Select(t => t.Rect) .DefaultIfEmpty(RectangleF.Empty) .Last(); if (rect.IsEmpty) { return; } var tokenBelow = getTokenBelow(rect.Location); Begin = End = tokenBelow?.Right ?? Text.Length; onChanged(); }
public void SetSelection(TextSelection copy) { Text = copy.Text; Begin = copy.Begin; End = copy.End; PrintedTokens.Clear(); PrintedTokens.AddRange(copy.PrintedTokens); onChanged(); }
public void MoveSelectionLeft() { if (IsEmpty) { return; } Begin = End = PrintedTokens .Select(t => t.Token.Index) .Where(F.IsLessThan(End)) .DefaultIfEmpty(0) .Last(); onChanged(); }
public void MoveSelectionRight() { if (IsEmpty) { return; } Begin = End = PrintedTokens .Select(t => t.Token.Index + t.Token.Length) .Where(F.IsGreaterThan(End)) .DefaultIfEmpty(Text.Length) .First(); onChanged(); }