diff --git a/js/global_scope_js.js b/js/global_scope_js.js index 801f1574..205d9375 100644 --- a/js/global_scope_js.js +++ b/js/global_scope_js.js @@ -95,12 +95,21 @@ function startEditing(messageElement, messageBody, isUserMessage) { editingInterface.textarea.focus(); editingInterface.textarea.setSelectionRange(rawText.length, rawText.length); + // Temporarily mark as scrolled to prevent auto-scroll + const wasScrolled = window.isScrolled; + window.isScrolled = true; + // Scroll the textarea into view editingInterface.textarea.scrollIntoView({ behavior: "smooth", block: "center" }); + // Restore the original scroll state after animation + setTimeout(() => { + window.isScrolled = wasScrolled; + }, 500); + // Setup event handlers setupEditingHandlers(editingInterface.textarea, messageElement, originalHTML, messageBody, isUserMessage); } diff --git a/js/main.js b/js/main.js index 1953a6be..e970884d 100644 --- a/js/main.js +++ b/js/main.js @@ -145,7 +145,7 @@ typingSibling.insertBefore(typing, typingSibling.childNodes[2]); const targetElement = document.getElementById("chat").parentNode.parentNode.parentNode; targetElement.classList.add("pretty_scrollbar"); targetElement.classList.add("chat-parent"); -let isScrolled = false; +window.isScrolled = false; let scrollTimeout; targetElement.addEventListener("scroll", function() { @@ -154,9 +154,9 @@ targetElement.addEventListener("scroll", function() { let diff = targetElement.scrollHeight - targetElement.clientHeight; if(Math.abs(targetElement.scrollTop - diff) <= 10 || diff == 0) { - isScrolled = false; + window.isScrolled = false; } else { - isScrolled = true; + window.isScrolled = true; } // Clear previous timeout and set new one @@ -182,7 +182,7 @@ const observer = new MutationObserver(function(mutations) { doSyntaxHighlighting(); - if (!isScrolled && targetElement.scrollTop !== targetElement.scrollHeight) { + if (!window.isScrolled && targetElement.scrollTop !== targetElement.scrollHeight) { targetElement.scrollTop = targetElement.scrollHeight; }