diff --git a/src/imports/FluentUI/Controls/FluCopyableText.qml b/src/imports/FluentUI/Controls/FluCopyableText.qml new file mode 100644 index 00000000..93d8b7e6 --- /dev/null +++ b/src/imports/FluentUI/Controls/FluCopyableText.qml @@ -0,0 +1,79 @@ +import QtQuick +import QtQuick.Controls +import FluentUI + +TextField { + + property int fontStyle: FluText.Body + property color textColor: FluTheme.dark ? FluColors.White : FluColors.Grey220 + property int pixelSize : FluTheme.textSize + + id:control + color: textColor + readOnly: true + renderType: FluTheme.nativeText ? Text.NativeRendering : Text.QtRendering + padding: 0 + leftPadding: 0 + rightPadding: 0 + topPadding: 0 + bottomPadding: 0 + selectionColor: FluTheme.primaryColor.lightest + TextMetrics { + id: text_metrics + font:control.font + text: control.text + } + background: Item{ + implicitWidth: text_metrics.width+10 + implicitHeight: text_metrics.height + } + font.bold: { + switch (fontStyle) { + case FluText.Display: + return true + case FluText.TitleLarge: + return true + case FluText.Title: + return true + case FluText.SubTitle: + return true + case FluText.BodyStrong: + return true + case FluText.Body: + return false + case FluText.Caption: + return false + default: + return false + } + } + font.pixelSize: { + switch (fontStyle) { + case FluText.Display: + return text.pixelSize * 4.857 + case FluText.TitleLarge: + return text.pixelSize * 2.857 + case FluText.Title: + return text.pixelSize * 2 + case FluText.SubTitle: + return text.pixelSize * 1.428 + case FluText.Body: + return text.pixelSize * 1.0 + case FluText.BodyStrong: + return text.pixelSize * 1.0 + case FluText.Caption: + return text.pixelSize * 0.857 + default: + return text.pixelSize * 1.0 + } + } + TapHandler { + acceptedButtons: Qt.RightButton + onTapped: control.echoMode !== TextInput.Password && menu.popup() + } + FluTextBoxMenu{ + id:menu + inputItem: control + } + +} diff --git a/src/imports/FluentUI/Controls/FluTableView.qml b/src/imports/FluentUI/Controls/FluTableView.qml index 6b1a3e86..b6e21f61 100644 --- a/src/imports/FluentUI/Controls/FluTableView.qml +++ b/src/imports/FluentUI/Controls/FluTableView.qml @@ -195,15 +195,10 @@ Item { Component{ id:com_text Item{ - MouseArea{ - id:item_mouse - hoverEnabled: true - anchors.fill: parent - } - FluText{ + FluCopyableText{ id:table_value text:String(model.itemData) - width: parent.width - 14 + width: Math.min(parent.width - 14,implicitWidth) wrapMode: Text.WordWrap onImplicitHeightChanged: parent.parent.parent.height = Math.max(implicitHeight + 20,itemHeight) anchors{ @@ -211,6 +206,12 @@ Item { left: parent.left leftMargin: 14 } + MouseArea{ + id:item_mouse + hoverEnabled: true + anchors.fill: parent + acceptedButtons: Qt.NoButton + } FluTooltip{ visible: item_mouse.containsMouse text:parent.text diff --git a/src/imports/FluentUI/Controls/FluTextBoxMenu.qml b/src/imports/FluentUI/Controls/FluTextBoxMenu.qml index 4355547e..707f22e4 100644 --- a/src/imports/FluentUI/Controls/FluTextBoxMenu.qml +++ b/src/imports/FluentUI/Controls/FluTextBoxMenu.qml @@ -14,6 +14,12 @@ FluMenu{ focus:false enableAnimation:false + onVisibleChanged: { + if(visible){ + inputItem.forceActiveFocus() + } + } + Connections{ target: inputItem function onTextChanged() {