diff --git a/static/application.js b/static/application.js
index 51767f10..83b4376b 100644
--- a/static/application.js
+++ b/static/application.js
@@ -78,6 +78,9 @@ var override_focusout = false;
var sman_allow_delete = false;
var sman_allow_rename = false;
+// This is true iff [we're in macOS and the browser is Safari] or [we're in iOS]
+var using_webkit_patch = false;
+
// Key states
var shift_down = false;
var do_clear_ent = false;
@@ -985,10 +988,12 @@ function chunkOnSelectionChange(event) {
highlightEditingChunks();
// Attempt to prevent Chromium-based browsers on Android from
// scrolling away from the current selection
- setTimeout(function() {
- game_text.blur();
- game_text.focus();
- }, 144);
+ if(!using_webkit_patch) {
+ setTimeout(function() {
+ game_text.blur();
+ game_text.focus();
+ }, 144);
+ }
}, 2);
}, 2);
}
@@ -1091,6 +1096,35 @@ $(document).ready(function(){
rs_close = $("#btn_rsclose");
seqselmenu = $("#seqselmenu");
seqselcontents = $("#seqselcontents");
+
+ // A simple feature detection test to determine whether the user interface
+ // is using WebKit (Safari browser's rendering engine) because WebKit
+ // requires special treatment to work correctly with the KoboldAI editor
+ using_webkit_patch = (function() {
+ try {
+ var active_element = document.activeElement;
+ var c = document.createElement("chunk");
+ var t = document.createTextNode("KoboldAI");
+ c.appendChild(t);
+ game_text[0].appendChild(c);
+ var r = rangy.createRange();
+ r.setStart(t, 6);
+ r.collapse(true);
+ var s = rangy.getSelection();
+ s.removeAllRanges();
+ s.addRange(r);
+ game_text.blur();
+ game_text.focus();
+ var offset = rangy.getSelection().focusOffset;
+ c.removeChild(t);
+ game_text[0].removeChild(c);
+ document.activeElement.blur();
+ active_element.focus();
+ return offset !== 6;
+ } catch (e) {
+ return false;
+ }
+ })();
// Connect to SocketIO server
socket = io.connect(window.document.origin);
diff --git a/templates/index.html b/templates/index.html
index 7098a824..3a078f88 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -6,7 +6,7 @@
-
+