cleanup of find in text implementation

This commit is contained in:
zadam 2023-05-18 13:41:32 +02:00
parent 1089e84f56
commit 074820dae5
4 changed files with 12 additions and 43 deletions

View File

@ -145,10 +145,10 @@ export default class FindWidget extends NoteContextAwareWidget {
if (!['text', 'code', 'render'].includes(this.note.type)) {
return;
}
this.handler = await this.getHandler();
var searchTerm = await this.handler.getInitialSearchTerm();
searchTerm = searchTerm=="" ? window.getSelection().toString():searchTerm;
const selectedText = window.getSelection().toString() || "";
this.$findBox.show();
this.$input.focus();
@ -156,18 +156,21 @@ export default class FindWidget extends NoteContextAwareWidget {
const isAlreadyVisible = this.$findBox.is(":visible");
if (isAlreadyVisible) {
this.$input.val(searchTerm || "");
if (searchTerm !== "") {
this.$input.select();
if (selectedText) {
this.$input.val(selectedText);
}
if (this.$input.val()) {
await this.performFind();
}
this.$input.select();
} else {
this.$totalFound.text(0);
this.$currentFound.text(0);
searchTerm = await this.handler.getInitialSearchTerm();
this.$input.val(searchTerm || "");
if (searchTerm !== "") {
this.$input.val(selectedText);
if (selectedText) {
this.$input.select();
await this.performFind();
}

View File

@ -16,23 +16,6 @@ export default class FindInCode {
return this.parent.noteContext.getCodeEditor();
}
async getInitialSearchTerm() {
const codeEditor = await this.getCodeEditor();
// highlightSelectionMatches is the overlay that highlights
// the words under the cursor. This occludes the search
// markers style, save it, disable it. Will be restored when
// the focus is back into the note
this.oldHighlightSelectionMatches = codeEditor.getOption("highlightSelectionMatches");
codeEditor.setOption("highlightSelectionMatches", false);
// Fill in the findbox with the current selection if any
const selectedText = codeEditor.getSelection()
if (selectedText !== "") {
return selectedText;
}
}
async performFind(searchTerm, matchCase, wholeWord) {
let findResult = null;
let totalFound = 0;

View File

@ -16,10 +16,6 @@ export default class FindInHtml {
this.$results = null;
}
async getInitialSearchTerm() {
return ""; // FIXME
}
async performFind(searchTerm, matchCase, wholeWord) {
await libraryLoader.requireLibrary(libraryLoader.MARKJS);

View File

@ -8,19 +8,6 @@ export default class FindInText {
return this.parent.noteContext.getTextEditor();
}
async getInitialSearchTerm() {
const textEditor = await this.getTextEditor();
const selection = textEditor.model.document.selection;
const range = selection.getFirstRange();
// FIXME
for (const item of range.getItems()) {
// Fill in the findbox with the current selection if any
return item.data;
}
}
async performFind(searchTerm, matchCase, wholeWord) {
// Do this even if the searchTerm is empty so the markers are cleared and
// the counters updated