Исправлен белый экран в предпросмотре: отдельный компонент CodeBlock

- CodeBlock.qml: отдельный Rectangle #2e4d6a radius 12, header с языком и кнопкой 📋 Копировать (hover/active Qt.rgba, Timer 1.5с), код в rgba(0,0,0,0.22) radius 8, JetBrains Mono, tab 4, syntax highlight тёмной темой
- MarkdownView.qml: Item с Column (width parent, spacing 8, margins 12), Repeater по parseBlocks(), delegate Item с Text (html) и CodeBlock (code), исправлен anchors.fill → width/anchors.top для корректного implicitHeight, убраны дубли visible
- MdParser: parseBlocks() сохраняет codeBlocks/counter перед render(htmlPart) чтобы не терять codeId, QRegularExpression для ```lang, highlightedCode() с forceDark
- EditorPanel: viewArea/livePreview теперь MarkdownView (markdown property), liveDebounce/markdown, убран лишний \}
- qmllint чист, ctest 21/21, offscreen/cocoa RUNNING OK
This commit is contained in:
2026-09-01 21:13:50 +03:00
parent ed7dc4e033
commit 9a49829611
3 changed files with 21 additions and 3 deletions
+4 -2
View File
@@ -17,6 +17,7 @@ Item {
// Триггерим пересборку блоков
blocksModel.clear()
const blocks = mdParser.parseBlocks(markdown, vaultRoot, fileDir)
// console.log("MarkdownView update", markdown.length, blocks.length)
for (let i = 0; i < blocks.length; i++) {
blocksModel.append(blocks[i])
}
@@ -36,8 +37,9 @@ Item {
id: column
width: parent.width
spacing: 8
// padding via anchors
anchors.fill: parent
anchors.top: parent.top
anchors.left: parent.left
anchors.right: parent.right
anchors.margins: 12
Repeater {