internal static void ClearSelected(QText tb) { Place start = tb.Selection.Start; Place end = tb.Selection.End; int fromLine = Math.Min(end.iLine, start.iLine); int toLine = Math.Max(end.iLine, start.iLine); int fromChar = tb.Selection.FromX; int toChar = tb.Selection.ToX; if (fromLine < 0) return; // if (fromLine == toLine) tb[fromLine].RemoveRange(fromChar, toChar - fromChar); else { tb[fromLine].RemoveRange(fromChar, tb[fromLine].Count - fromChar); tb[toLine].RemoveRange(0, toChar); tb.RemoveLine(fromLine + 1, toLine - fromLine - 1); InsertCharCommand.MergeLines(fromLine, tb); } // tb.Selection.Start = new Place(fromChar, fromLine); // tb.needRecalc = true; }
internal static void MergeLines(int i, QText tb) { if (i + 1 >= tb.LinesCount) return; tb.ExpandBlock(i); tb.ExpandBlock(i + 1); int pos = tb[i].Count; // if (tb[i].Count == 0) tb.RemoveLine(i); else if (tb[i + 1].Count == 0) tb.RemoveLine(i + 1); else { tb[i].AddRange(tb[i + 1]); tb.RemoveLine(i + 1); } tb.Selection.Start = new Place(pos, i); tb.needRecalc = true; }