Fix scrollbar for object selector

This commit is contained in:
Jaime van Kessel 2019-09-18 17:05:00 +02:00
parent 549eb21a5a
commit cc65bc8213
No known key found for this signature in database
GPG key ID: 3710727397403C91
2 changed files with 27 additions and 39 deletions

View file

@ -78,7 +78,7 @@ Item
id: contents
width: parent.width
visible: objectSelector.opened
height: visible ? scroll.height : 0
height: visible ? listView.height : 0
color: UM.Theme.getColor("main_background")
border.width: UM.Theme.getSize("default_lining").width
border.color: UM.Theme.getColor("lining")
@ -87,50 +87,39 @@ Item
anchors.bottom: parent.bottom
ScrollView
ListView
{
id: scroll
width: parent.width
id: listView
clip: true
padding: UM.Theme.getSize("default_lining").width
contentItem: ListView
anchors
{
id: listView
left: parent.left
right: parent.right
margins: UM.Theme.getSize("default_lining").width
}
// Can't use parent.width since the parent is the flickable component and not the ScrollView
width: scroll.width - scroll.leftPadding - scroll.rightPadding
property real maximumHeight: UM.Theme.getSize("objects_menu_size").height
ScrollBar.vertical: ScrollBar
{
hoverEnabled: true
}
// We use an extra property here, since we only want to to be informed about the content size changes.
onContentHeightChanged:
property real maximumHeight: UM.Theme.getSize("objects_menu_size").height
height: Math.min(contentHeight, maximumHeight)
model: Cura.ObjectsModel {}
delegate: ObjectItemButton
{
id: modelButton
Binding
{
// It can sometimes happen that (due to animations / updates) the contentHeight is -1.
// This can cause a bunch of updates to trigger oneother, leading to a weird loop.
if(contentHeight >= 0)
{
scroll.height = Math.min(contentHeight, maximumHeight) + scroll.topPadding + scroll.bottomPadding
}
}
Component.onCompleted:
{
scroll.height = Math.min(contentHeight, maximumHeight) + scroll.topPadding + scroll.bottomPadding
}
model: Cura.ObjectsModel {}
delegate: ObjectItemButton
{
id: modelButton
Binding
{
target: modelButton
property: "checked"
value: model.selected
}
text: model.name
width: listView.width
target: modelButton
property: "checked"
value: model.selected
}
text: model.name
width: listView.width
}
}
}