diff --git a/plugins/DigitalLibrary/resources/qml/Table.qml b/plugins/DigitalLibrary/resources/qml/Table.qml index b6162e9135..3cde4e4e1c 100644 --- a/plugins/DigitalLibrary/resources/qml/Table.qml +++ b/plugins/DigitalLibrary/resources/qml/Table.qml @@ -35,7 +35,7 @@ Item model: columnHeaders Rectangle { - width: Math.round(tableBase.width / headerRepeater.count) + width: Math.max(1, Math.round(tableBase.width / headerRepeater.count)) height: UM.Theme.getSize("section").height color: UM.Theme.getColor("secondary") @@ -53,7 +53,7 @@ Item color: UM.Theme.getColor("text") elide: Text.ElideRight } - Rectangle + Rectangle //Resize handle. { anchors { @@ -79,24 +79,31 @@ Item { if(drag.active) { - parent.parent.width = Math.max(10, parent.parent.width + mouseX); //Don't go smaller than 10 pixels, to make sure you can still scale it back. - let sum_widths = 0; + let new_width = parent.parent.width + mouseX; //Don't go smaller than 10 pixels, to make sure you can still scale it back. + let sum_widths = mouseX; for(let i = 0; i < headerBar.children.length; ++i) { sum_widths += headerBar.children[i].width; } if(sum_widths > tableBase.width) { - parent.parent.width -= sum_widths - tableBase.width; //Limit the total width to not exceed the view. + new_width -= sum_widths - tableBase.width; //Limit the total width to not exceed the view. } + let width_fraction = new_width / tableBase.width; //Scale with the same fraction along with the total width, if the table is resized. + parent.parent.width = Qt.binding(function() { return tableBase.width * width_fraction }); } - tableView.forceLayout(); } } } + + onWidthChanged: + { + tableView.forceLayout(); //Rescale table cells underneath as well. + } } } } + TableView { id: tableView @@ -154,14 +161,25 @@ Item font: UM.Theme.getFont("default") color: UM.Theme.getColor("text") } - MouseArea + TextMetrics + { + id: cellTextMetrics + text: cellContent.text + font: cellContent.font + elide: cellContent.elide + elideWidth: cellContent.width + } + UM.TooltipArea { anchors.fill: parent - enabled: tableBase.allowSelection + text: (cellTextMetrics.elidedText == cellContent.text) ? "" : cellContent.text //Show full text in tooltip if it was elided. onClicked: { - tableBase.currentRow = row; //Select this row. + if(tableBase.allowSelection) + { + tableBase.currentRow = row; //Select this row. + } } onDoubleClicked: {