diff --git a/src/js/script.js b/src/js/script.js
index 7d01a66fc..91cd1d0ea 100644
--- a/src/js/script.js
+++ b/src/js/script.js
@@ -1120,7 +1120,7 @@ function updateActiveElement(backspace) {
}
function updateWordElement(showError) {
- if (config.mode == "zen") return;
+ // if (config.mode == "zen") return;
let input = currentInput;
let wordAtIndex;
@@ -1129,100 +1129,119 @@ function updateWordElement(showError) {
currentWord = wordsList[currentWordIndex];
let ret = "";
- if (config.highlightMode == "word") {
- //only for word highlight
+ let newlineafter = false;
- let correctSoFar = false;
- if (currentWord.slice(0, input.length) == input) {
- // this is when input so far is correct
- correctSoFar = true;
- }
- let classString = correctSoFar ? "correct" : "incorrect";
- if (config.blindMode) {
- classString = "correct";
- }
-
- //show letters in the current word
- for (let i = 0; i < currentWord.length; i++) {
- ret += `` + currentWord[i] + ``;
- }
-
- //show any extra letters if hide extra letters is disabled
- if (currentInput.length > currentWord.length && !config.hideExtraLetters) {
- for (let i = currentWord.length; i < currentInput.length; i++) {
- let letter = currentInput[i];
- if (letter == " ") {
- letter = "_";
- }
- ret += `${letter}`;
+ if (config.mode === "zen") {
+ for (let i = 0; i < currentInput.length; i++) {
+ if (currentInput[i] === "\t") {
+ ret += ``;
+ } else if (currentInput[i] === "\n") {
+ newlineafter = true;
+ ret += ``;
+ } else {
+ ret += `` + currentInput[i] + ``;
}
}
} else {
- for (let i = 0; i < input.length; i++) {
- let charCorrect;
- if (currentWord[i] == input[i]) {
- charCorrect = true;
- } else {
- charCorrect = false;
+ if (config.highlightMode == "word") {
+ //only for word highlight
+
+ let correctSoFar = false;
+ if (currentWord.slice(0, input.length) == input) {
+ // this is when input so far is correct
+ correctSoFar = true;
+ }
+ let classString = correctSoFar ? "correct" : "incorrect";
+ if (config.blindMode) {
+ classString = "correct";
}
- let currentLetter = currentWord[i];
- let tabChar = "";
- let nlChar = "";
- if (currentLetter === "\t") {
- tabChar = "tabChar";
- currentLetter = ``;
- } else if (currentLetter === "\n") {
- nlChar = "nlChar";
- currentLetter = ``;
+ //show letters in the current word
+ for (let i = 0; i < currentWord.length; i++) {
+ ret += `` + currentWord[i] + ``;
}
- if (charCorrect) {
- ret += `${currentLetter}`;
- } else {
- // if (config.difficulty == "master") {
- // if (!resultVisible) {
- // failTest();
- // }
- // }
- if (!showError) {
- if (currentLetter == undefined) {
- } else {
- ret += `${currentLetter}`;
+ //show any extra letters if hide extra letters is disabled
+ if (
+ currentInput.length > currentWord.length &&
+ !config.hideExtraLetters
+ ) {
+ for (let i = currentWord.length; i < currentInput.length; i++) {
+ let letter = currentInput[i];
+ if (letter == " ") {
+ letter = "_";
}
+ ret += `${letter}`;
+ }
+ }
+ } else {
+ for (let i = 0; i < input.length; i++) {
+ let charCorrect;
+ if (currentWord[i] == input[i]) {
+ charCorrect = true;
} else {
- if (currentLetter == undefined) {
- if (!config.hideExtraLetters) {
- let letter = input[i];
- if (letter == " " || letter == "\t" || letter == "\n") {
- letter = "_";
- }
- ret += ``;
+ charCorrect = false;
+ }
+
+ let currentLetter = currentWord[i];
+ let tabChar = "";
+ let nlChar = "";
+ if (currentLetter === "\t") {
+ tabChar = "tabChar";
+ currentLetter = ``;
+ } else if (currentLetter === "\n") {
+ nlChar = "nlChar";
+ currentLetter = ``;
+ }
+
+ if (charCorrect) {
+ ret += `${currentLetter}`;
+ } else {
+ // if (config.difficulty == "master") {
+ // if (!resultVisible) {
+ // failTest();
+ // }
+ // }
+ if (!showError) {
+ if (currentLetter == undefined) {
+ } else {
+ ret += `${currentLetter}`;
}
} else {
- ret +=
- `` +
- currentLetter +
- (config.indicateTypos ? `${input[i]}` : "") +
- "";
+ if (currentLetter == undefined) {
+ if (!config.hideExtraLetters) {
+ let letter = input[i];
+ if (letter == " " || letter == "\t" || letter == "\n") {
+ letter = "_";
+ }
+ ret += ``;
+ }
+ } else {
+ ret +=
+ `` +
+ currentLetter +
+ (config.indicateTypos ? `${input[i]}` : "") +
+ "";
+ }
}
}
}
- }
- if (input.length < currentWord.length) {
- for (let i = input.length; i < currentWord.length; i++) {
- if (currentWord[i] === "\t") {
- ret += ``;
- } else if (currentWord[i] === "\n") {
- ret += ``;
- } else {
- ret += "" + currentWord[i] + "";
+ if (input.length < currentWord.length) {
+ for (let i = input.length; i < currentWord.length; i++) {
+ if (currentWord[i] === "\t") {
+ ret += ``;
+ } else if (currentWord[i] === "\n") {
+ ret += ``;
+ } else {
+ ret += "" + currentWord[i] + "";
+ }
}
}
}
}
wordAtIndex.innerHTML = ret;
+ if (newlineafter) $("#words").append("
");
}
function highlightBadWord(index, showError) {
@@ -3038,19 +3057,19 @@ function restartTest(withSameWordset = false, nosave = false, event) {
// }
// }
if (resultCalculating) return;
- if (!manualRestart) {
- if ((textHasTab && manualRestart) || !textHasTab) {
+ if ($(".pageTest").hasClass("active") && !resultVisible) {
+ if (!manualRestart) {
+ // if ((textHasTab && manualRestart) || !textHasTab) {
+ if (textHasTab) {
+ try {
+ if (!event.shiftKey) return;
+ } catch {}
+ }
try {
- event.preventDefault();
+ if (config.mode !== "zen") event.preventDefault();
} catch {}
if (
- Misc.canQuickRestart(
- config.mode,
- config.words,
- config.time,
- customText
- ) ||
- manualRestart
+ Misc.canQuickRestart(config.mode, config.words, config.time, customText)
) {
} else {
let message = "Use your mouse to confirm.";
@@ -3059,6 +3078,9 @@ function restartTest(withSameWordset = false, nosave = false, event) {
Notifications.add("Quick restart disabled. " + message, 0, 3);
return;
}
+ // }else{
+ // return;
+ // }
}
}
@@ -5159,10 +5181,18 @@ function handleTab(event) {
$("#simplePopupWrapper").hasClass("hidden")
) {
if (config.quickTab) {
- if (event.shiftKey) manualRestart = true;
- restartTest(false, false, event);
+ if (config.mode == "zen" && !event.shiftKey) {
+ } else {
+ if (event.shiftKey) manualRestart = true;
+ restartTest(false, false, event);
+ }
} else {
- if ((textHasTab && event.shiftKey) || !textHasTab) {
+ if (
+ !resultVisible &&
+ ((textHasTab && event.shiftKey) ||
+ (!textHasTab && config.mode !== "zen") ||
+ (config.mode === "zen" && event.shiftKey))
+ ) {
event.preventDefault();
$("#restartTestButton").focus();
}
@@ -5283,10 +5313,6 @@ function handleBackspace(event) {
} else {
currentInput = currentInput.substring(0, currentInput.length - 1);
}
- if (config.mode == "zen") {
- $("#words .word.active").children().last().remove();
- accuracyStats.incorrect++;
- }
updateWordElement(!config.blindMode);
}
playClickSound();
@@ -5521,7 +5547,10 @@ function handleAlpha(event) {
}
if (event.key === "Tab") {
- if (!textHasTab || (textHasTab && event.shiftKey)) {
+ if (
+ config.mode !== "zen" &&
+ (!textHasTab || (textHasTab && event.shiftKey))
+ ) {
return;
}
event.key = "\t";