Fix TreeView nesting for ColumnLayout.
This commit is contained in:
parent
db2f878018
commit
0fac2b71ab
@ -43,11 +43,26 @@ SplitView {
|
|||||||
SplitView.preferredWidth: 200
|
SplitView.preferredWidth: 200
|
||||||
SplitView.maximumWidth: 250
|
SplitView.maximumWidth: 250
|
||||||
|
|
||||||
StackLayout {
|
ColumnLayout {
|
||||||
anchors.fill: parent
|
spacing: 2
|
||||||
|
Rectangle {
|
||||||
|
width: navigationView.width
|
||||||
|
height: breadCrumb.height + 5
|
||||||
|
|
||||||
|
color: RustColors.explorer_text
|
||||||
|
Text {
|
||||||
|
id: breadCrumb
|
||||||
|
text: clideTreeView.rootDirectory
|
||||||
|
elide: Text.ElideLeft
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ClideTreeView {
|
ClideTreeView {
|
||||||
id: clideTreeView
|
id: clideTreeView
|
||||||
onFileClicked: path => root.projectDir = path
|
onFileClicked: path => root.projectDir = path
|
||||||
|
width: navigationView.width
|
||||||
|
height: navigationView.height
|
||||||
|
|
||||||
// Path to the directory opened in the file explorer.
|
// Path to the directory opened in the file explorer.
|
||||||
rootDirectory: root.projectDir
|
rootDirectory: root.projectDir
|
||||||
|
|||||||
@ -3,40 +3,36 @@
|
|||||||
// SPDX-License-Identifier: GNU General Public License v3.0 or later
|
// SPDX-License-Identifier: GNU General Public License v3.0 or later
|
||||||
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
|
import QtQuick.Effects
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
|
|
||||||
import clide.module 1.0
|
import clide.module 1.0
|
||||||
|
|
||||||
Rectangle {
|
TreeView {
|
||||||
id: root
|
id: fileSystemTreeView
|
||||||
color: RustColors.explorer_background
|
model: FileSystem
|
||||||
|
|
||||||
|
property int lastIndex: -1
|
||||||
|
|
||||||
required property string rootDirectory
|
required property string rootDirectory
|
||||||
|
|
||||||
signal fileClicked(string filePath)
|
signal fileClicked(string filePath)
|
||||||
|
|
||||||
TreeView {
|
|
||||||
id: fileSystemTreeView
|
|
||||||
anchors.margins: 15
|
|
||||||
|
|
||||||
property int lastIndex: -1
|
rootIndex: FileSystem.rootIndex
|
||||||
|
leftMargin: 5
|
||||||
model: FileSystem
|
|
||||||
anchors.fill: parent
|
|
||||||
boundsBehavior: Flickable.StopAtBounds
|
boundsBehavior: Flickable.StopAtBounds
|
||||||
boundsMovement: Flickable.StopAtBounds
|
boundsMovement: Flickable.StopAtBounds
|
||||||
clip: true
|
clip: true
|
||||||
rootIndex: FileSystem.rootIndex
|
|
||||||
|
|
||||||
Component.onCompleted: {
|
Component.onCompleted: {
|
||||||
FileSystem.setDirectory(root.rootDirectory)
|
FileSystem.rootIndex = FileSystem.setDirectory(fileSystemTreeView.rootDirectory)
|
||||||
fileSystemTreeView.expandRecursively(0, -1)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// The delegate represents a single entry in the filesystem.
|
// The delegate represents a single entry in the filesystem.
|
||||||
delegate: TreeViewDelegate {
|
delegate: TreeViewDelegate {
|
||||||
id: treeDelegate
|
id: treeDelegate
|
||||||
indentation: 8
|
indentation: 6
|
||||||
implicitWidth: fileSystemTreeView.width > 0 ? fileSystemTreeView.width : 250
|
implicitWidth: fileSystemTreeView.width > 0 ? fileSystemTreeView.width : 250
|
||||||
implicitHeight: 25
|
implicitHeight: 25
|
||||||
|
|
||||||
@ -92,8 +88,29 @@ Rectangle {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MultiEffect {
|
||||||
|
id: iconOverlay
|
||||||
|
|
||||||
|
anchors.fill: directoryIcon
|
||||||
|
source: directoryIcon
|
||||||
|
colorization: 1.0
|
||||||
|
brightness: 1.0
|
||||||
|
colorizationColor: {
|
||||||
|
const isFile = !treeDelegate.hasChildren;
|
||||||
|
if (isFile)
|
||||||
|
return Qt.lighter(RustColors.explorer_folder, 2)
|
||||||
|
|
||||||
|
const isExpandedFolder = treeDelegate.expanded && treeDelegate.hasChildren;
|
||||||
|
if (isExpandedFolder)
|
||||||
|
return Qt.darker(RustColors.explorer_folder, 2)
|
||||||
|
else
|
||||||
|
return RustColors.explorer_folder
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
HoverHandler {
|
HoverHandler {
|
||||||
id: hoverHandler
|
id: hoverHandler
|
||||||
|
acceptedDevices: PointerDevice.Mouse
|
||||||
}
|
}
|
||||||
|
|
||||||
TapHandler {
|
TapHandler {
|
||||||
@ -128,7 +145,8 @@ Rectangle {
|
|||||||
Action {
|
Action {
|
||||||
text: qsTr("Reset root index")
|
text: qsTr("Reset root index")
|
||||||
onTriggered: {
|
onTriggered: {
|
||||||
FileSystem.rootIndex = FileSystem.setDirectory(root.rootDirectory)
|
console.log("Reset root index")
|
||||||
|
FileSystem.rootIndex = FileSystem.setDirectory(fileSystemTreeView.rootDirectory)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -154,4 +172,3 @@ Rectangle {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|||||||
@ -88,10 +88,10 @@ impl Default for RustColorsImpl {
|
|||||||
gutter: QColor::try_from("#1e1f22").unwrap(),
|
gutter: QColor::try_from("#1e1f22").unwrap(),
|
||||||
explorer_hovered: QColor::try_from("#4c5053").unwrap(),
|
explorer_hovered: QColor::try_from("#4c5053").unwrap(),
|
||||||
explorer_text: QColor::try_from("#3b3b3b").unwrap(),
|
explorer_text: QColor::try_from("#3b3b3b").unwrap(),
|
||||||
explorer_text_selected: QColor::try_from("#8b8b8b").unwrap(),
|
explorer_text_selected: QColor::try_from("#262626").unwrap(),
|
||||||
explorer_background: QColor::try_from("#676c70").unwrap(),
|
explorer_background: QColor::try_from("#1E1F22").unwrap(),
|
||||||
explorer_folder: QColor::try_from("#54585b").unwrap(),
|
explorer_folder: QColor::try_from("#54585b").unwrap(),
|
||||||
explorer_folder_open: QColor::try_from("#FFF").unwrap(),
|
explorer_folder_open: QColor::try_from("#2b2b2b").unwrap(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user