Fix: корень EditorPanel — ColumnLayout вместо Item (исправляет layout в SplitView: вкладки сверху, редактор снизу); убрана обёртка Item; color:text на TextArea; автооткрытие первого .md

This commit is contained in:
Flora (opencode)
2026-08-17 18:15:22 +03:00
parent 18962473ae
commit 8048b2be2f
+36 -48
View File
@@ -3,8 +3,9 @@ import QtQuick.Controls
import QtQuick.Layouts
// Центральная панель: панель вкладок + редактор.
// Поддержка двух панелей рядом («открыть рядом»): правая = вторая вкладка.
Item {
// Корень — ColumnLayout (без обёртки Item), чтобы SplitView корректно
// задавал размеры и вкладки были сверху, а редактор снизу.
ColumnLayout {
id: root
function baseName(p) {
@@ -12,11 +13,34 @@ Item {
return idx >= 0 ? p.substring(idx + 1) : p
}
ColumnLayout {
anchors.fill: parent
spacing: 0
function activePane() {
if (secondaryPane.visible && secondaryPane.hasFocus)
return secondaryPane
return primaryPane
}
// ----- Панель вкладок -----
function toolbarShouldShow() {
const p = primaryPane
const s = secondaryPane
return p.editMode
|| (s.visible && s.editMode)
}
Connections {
target: primaryPane
function onActiveFocusChanged() { formatToolbar.targetPane = root.activePane() }
}
Connections {
target: secondaryPane
function onActiveFocusChanged() { formatToolbar.targetPane = root.activePane() }
}
TableEditor {
id: tableEditor
onMarkdownReady: (md) => root.activePane().insertText(md)
}
// ---------- Панель вкладок ----------
Rectangle {
Layout.fillWidth: true
implicitHeight: 32
@@ -104,7 +128,7 @@ Item {
}
}
// ----- Панель форматирования (Фаза 5) -----
// ---------- Панель форматирования ----------
FormatToolbar {
id: formatToolbar
Layout.fillWidth: true
@@ -116,7 +140,7 @@ Item {
}
}
// ----- Область редактора (одна или две панели) -----
// ---------- Область редактора (одна или две панели) ----------
RowLayout {
Layout.fillWidth: true
Layout.fillHeight: true
@@ -154,58 +178,22 @@ Item {
}
}
}
}
// ----- Функции активной панели и таблица -----
function activePane() {
if (secondaryPane.visible && secondaryPane.hasFocus)
return secondaryPane
return primaryPane
}
function toolbarShouldShow() {
const p = primaryPane
const s = secondaryPane
return (p.hasFocus && p.editMode)
|| (s.visible && s.hasFocus && s.editMode)
}
Connections {
target: primaryPane
function onActiveFocusChanged() { formatToolbar.targetPane = root.activePane() }
}
Connections {
target: secondaryPane
function onActiveFocusChanged() { formatToolbar.targetPane = root.activePane() }
}
TableEditor {
id: tableEditor
onMarkdownReady: (md) => {
root.activePane().insertText(md)
}
}
// ----- Горячие клавиши -----
// ---------- Горячие клавиши ----------
Shortcut {
sequence: "Ctrl+S"
context: Qt.WindowShortcut
onActivated: {
documentManager.saveAll()
}
onActivated: documentManager.saveAll()
}
Shortcut {
sequence: "Ctrl+W"
context: Qt.WindowShortcut
onActivated: {
documentManager.closeTab(documentManager.activeIndex)
}
onActivated: documentManager.closeTab(documentManager.activeIndex)
}
Shortcut {
sequence: "Ctrl+E"
context: Qt.WindowShortcut
onActivated: {
primaryPane.editMode = !primaryPane.editMode
}
onActivated: primaryPane.editMode = !primaryPane.editMode
}
Shortcut {
sequence: "Ctrl+Tab"