[markdown][compose] IJPL-175711 IJPL-175739 Auto-scroll to the caret position after zooming/switching between views

GitOrigin-RevId: 796ef433da94b362c8cbd325255341915035a335
This commit is contained in:
Alexander Kuznetsov
2025-01-31 16:49:49 +00:00
committed by intellij-monorepo-bot
parent dacd545459
commit 0458e409ee
3 changed files with 17 additions and 2 deletions
@@ -107,6 +107,13 @@ internal class MarkdownComposePanel(
}
}
}
LaunchedEffect(it.initialScrollOffset) {
coroutineScope.launch {
if (it.initialScrollOffset != 0) {
scrollToLineFlow.emit(it.initialScrollOffset)
}
}
}
}
Markdown(
it.content,
@@ -122,7 +129,10 @@ internal class MarkdownComposePanel(
}
override fun setHtml(html: String, initialScrollOffset: Int, document: VirtualFile?) {
updateHandler.setContent(html, initialScrollOffset, document)
}
override fun setHtml(html: String, initialScrollOffset: Int, initialScrollLineNumber: Int, document: VirtualFile?) {
updateHandler.setContent(html, initialScrollLineNumber, document)
}
override fun reloadWithOffset(offset: Int) {
@@ -48,6 +48,10 @@ public interface MarkdownHtmlPanel extends ScrollableMarkdownPreview, Disposable
void setHtml(@NotNull String html, int initialScrollOffset, @Nullable VirtualFile document);
default void setHtml(@NotNull String html, int initialScrollOffset, int initialScrollLineNumber, @Nullable VirtualFile document) {
setHtml(html, initialScrollOffset, document);
}
/**
* @return null if current preview implementation doesn't support any message passing.
*/
@@ -215,7 +215,8 @@ class MarkdownPreviewFileEditor(
val editor = mainEditor.firstOrNull() ?: return
writeIntentReadAction {
val offset = editor.caretModel.offset
panel.setHtml(lastRenderedHtml, offset, file)
val line = editor.document.getLineNumber(offset)
panel.setHtml(lastRenderedHtml, offset, line, file)
}
}