Fix #787: add CTRL-F search bar.

This commit is contained in:
Paddy Xu
2021-01-10 14:56:38 +01:00
parent 7cf0d0affb
commit 6d81d61cc5

View File

@@ -27,6 +27,7 @@ using ICSharpCode.AvalonEdit;
using ICSharpCode.AvalonEdit.Document; using ICSharpCode.AvalonEdit.Document;
using ICSharpCode.AvalonEdit.Highlighting; using ICSharpCode.AvalonEdit.Highlighting;
using ICSharpCode.AvalonEdit.Rendering; using ICSharpCode.AvalonEdit.Rendering;
using ICSharpCode.AvalonEdit.Search;
using QuickLook.Common.Helpers; using QuickLook.Common.Helpers;
using QuickLook.Common.Plugin; using QuickLook.Common.Plugin;
using UtfUnknown; using UtfUnknown;
@@ -67,6 +68,8 @@ namespace QuickLook.Plugin.TextViewer
TextArea.TextView.ElementGenerators.Add(new TruncateLongLines()); TextArea.TextView.ElementGenerators.Add(new TruncateLongLines());
SearchPanel.Install(this);
LoadFileAsync(path); LoadFileAsync(path);
} }
@@ -106,15 +109,15 @@ namespace QuickLook.Plugin.TextViewer
private class TruncateLongLines : VisualLineElementGenerator private class TruncateLongLines : VisualLineElementGenerator
{ {
const int maxLength = 10000; const int MAX_LENGTH = 10000;
const string ellipsis = "……………"; const string ELLIPSIS = "……………";
public override int GetFirstInterestedOffset(int startOffset) public override int GetFirstInterestedOffset(int startOffset)
{ {
var line = CurrentContext.VisualLine.LastDocumentLine; var line = CurrentContext.VisualLine.LastDocumentLine;
if (line.Length > maxLength) if (line.Length > MAX_LENGTH)
{ {
int ellipsisOffset = line.Offset + maxLength - ellipsis.Length; int ellipsisOffset = line.Offset + MAX_LENGTH - ELLIPSIS.Length;
if (startOffset <= ellipsisOffset) if (startOffset <= ellipsisOffset)
return ellipsisOffset; return ellipsisOffset;
} }
@@ -123,7 +126,7 @@ namespace QuickLook.Plugin.TextViewer
public override VisualLineElement ConstructElement(int offset) public override VisualLineElement ConstructElement(int offset)
{ {
return new FormattedTextElement(ellipsis, CurrentContext.VisualLine.LastDocumentLine.EndOffset - offset); return new FormattedTextElement(ELLIPSIS, CurrentContext.VisualLine.LastDocumentLine.EndOffset - offset);
} }
} }