From 26f929fd6b4625cc9417b8baa30349e49f5372bc Mon Sep 17 00:00:00 2001 From: wangfei Date: Thu, 21 Dec 2023 17:33:12 +0800 Subject: [PATCH] fix: There isn't context menu in TextField add context menu in TextField Issue: https://github.com/linuxdeepin/developer-center/issues/6521 --- qt6/src/qml/TextField.qml | 59 +++++++++++++++++++++++++++++++++++++++ src/qml/TextField.qml | 59 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 118 insertions(+) diff --git a/qt6/src/qml/TextField.qml b/qt6/src/qml/TextField.qml index b0789328..6f363bd9 100644 --- a/qt6/src/qml/TextField.qml +++ b/qt6/src/qml/TextField.qml @@ -54,4 +54,63 @@ T.TextField { implicitWidth: DS.Style.edit.width implicitHeight: DS.Style.edit.textFieldHeight } + + MouseArea { + anchors.fill: parent + acceptedButtons: Qt.RightButton + + onClicked: { + contextMenu.popup(mouse.x, mouse.y) + } + } + + Menu { + id: contextMenu + + MenuItem + { + text: "Copy" + onTriggered: control.copy() + enabled: control.selectedText.length + } + + MenuItem + { + text: "Cut" + onTriggered: control.cut() + enabled: control.selectedText.length + } + + MenuItem + { + text: "Paste" + onTriggered: + { + var text = control.paste() + control.insert(control.cursorPosition, text) + } + } + + MenuItem + { + text: "Select All" + onTriggered: control.selectAll() + enabled: control.text.length + } + + MenuItem + { + text: "Undo" + onTriggered: control.undo() + enabled: control.canUndo + } + + MenuItem + { + text: "Redo" + onTriggered: control.redo() + enabled: control.canRedo + } + } + } diff --git a/src/qml/TextField.qml b/src/qml/TextField.qml index 08ce9970..38d682e1 100644 --- a/src/qml/TextField.qml +++ b/src/qml/TextField.qml @@ -53,4 +53,63 @@ T.TextField { implicitWidth: DS.Style.edit.width implicitHeight: DS.Style.edit.textFieldHeight } + + MouseArea { + anchors.fill: parent + acceptedButtons: Qt.RightButton + + onClicked: { + contextMenu.popup(mouse.x, mouse.y) + } + } + + Menu { + id: contextMenu + + MenuItem + { + text: "Copy" + onTriggered: control.copy() + enabled: control.selectedText.length + } + + MenuItem + { + text: "Cut" + onTriggered: control.cut() + enabled: control.selectedText.length + } + + MenuItem + { + text: "Paste" + onTriggered: + { + var text = control.paste() + control.insert(control.cursorPosition, text) + } + } + + MenuItem + { + text: "Select All" + onTriggered: control.selectAll() + enabled: control.text.length + } + + MenuItem + { + text: "Undo" + onTriggered: control.undo() + enabled: control.canUndo + } + + MenuItem + { + text: "Redo" + onTriggered: control.redo() + enabled: control.canRedo + } + } + }