aboutsummaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
authorrating89us <45968869+rating89us@users.noreply.github.com>2021-09-05 15:36:38 +0200
committerrating89us <45968869+rating89us@users.noreply.github.com>2021-09-05 15:52:51 +0200
commitd3780abe33f8e78125eda7546fa2e14a4cfc4fab (patch)
tree3c09afb67eed4f0be74c0abfa18b16d626f04418 /components
parent113efbfdf093401d3044ce370b7039ea8cc596bf (diff)
downloadmonzero-gui-d3780abe33f8e78125eda7546fa2e14a4cfc4fab.tar.gz
monzero-gui-d3780abe33f8e78125eda7546fa2e14a4cfc4fab.tar.xz
monzero-gui-d3780abe33f8e78125eda7546fa2e14a4cfc4fab.zip
ContextMenu: add Cut, Copy, Delete and Select All
Diffstat (limited to 'components')
-rw-r--r--components/ContextMenu.qml46
-rw-r--r--components/ContextMenuItem.qml20
-rw-r--r--components/Input.qml9
-rw-r--r--components/InputMulti.qml9
4 files changed, 73 insertions, 11 deletions
diff --git a/components/ContextMenu.qml b/components/ContextMenu.qml
index a4ca3209..efbd38ab 100644
--- a/components/ContextMenu.qml
+++ b/components/ContextMenu.qml
@@ -5,14 +5,21 @@ import FontAwesome 1.0
import "../components" as MoneroComponents
MouseArea {
+ signal cut()
+ signal copy()
signal paste()
+ signal remove()
+ signal selectAll()
id: root
acceptedButtons: Qt.RightButton
anchors.fill: parent
onClicked: {
- if (mouse.button === Qt.RightButton)
+ if (mouse.button === Qt.RightButton) {
+ root.parent.persistentSelection = true;
contextMenu.open()
+ root.parent.cursorVisible = true;
+ }
}
Menu {
@@ -22,19 +29,50 @@ MouseArea {
border.color: MoneroComponents.Style.buttonBackgroundColorDisabledHover
border.width: 1
radius: 2
- color: MoneroComponents.Style.buttonBackgroundColorDisabled
+ color: MoneroComponents.Style.blackTheme ? MoneroComponents.Style.buttonBackgroundColorDisabled : "#E5E5E5"
}
padding: 1
- width: 100
+ width: 110
x: root.mouseX
y: root.mouseY
+ onClosed: {
+ if (!root.parent.activeFocus) {
+ root.parent.cursorVisible = false;
+ }
+ root.parent.persistentSelection = false;
+ root.parent.forceActiveFocus()
+ }
+
+ MoneroComponents.ContextMenuItem {
+ enabled: root.parent.selectedText != "" && !root.parent.readOnly
+ onTriggered: root.cut()
+ text: qsTr("Cut") + translationManager.emptyString
+ }
+
+ MoneroComponents.ContextMenuItem {
+ enabled: root.parent.selectedText != ""
+ onTriggered: root.copy()
+ text: qsTr("Copy") + translationManager.emptyString
+ }
+
MoneroComponents.ContextMenuItem {
enabled: root.parent.canPaste === true
- glyphIcon: FontAwesome.paste
onTriggered: root.paste()
text: qsTr("Paste") + translationManager.emptyString
}
+
+ MoneroComponents.ContextMenuItem {
+ enabled: root.parent.selectedText != "" && !root.parent.readOnly
+ onTriggered: root.remove()
+ text: qsTr("Delete") + translationManager.emptyString
+ }
+
+ MoneroComponents.ContextMenuItem {
+ enabled: root.parent.text != ""
+ onTriggered: root.selectAll()
+ text: qsTr("Select All") + translationManager.emptyString
+ }
}
}
diff --git a/components/ContextMenuItem.qml b/components/ContextMenuItem.qml
index de2d54ad..c4e0f395 100644
--- a/components/ContextMenuItem.qml
+++ b/components/ContextMenuItem.qml
@@ -13,21 +13,31 @@ MenuItem {
background: Rectangle {
color: MoneroComponents.Style.buttonBackgroundColorDisabledHover
- opacity: mouse.containsMouse ? 1 : 0
+ opacity: 0
MouseArea {
id: mouse
anchors.fill: parent
hoverEnabled: true
- onClicked: menuItem.triggered()
- visible: menuItem.enabled
+ onEntered: {
+ parent.opacity = 1;
+ }
+ onExited: {
+ parent.opacity = 0;
+ }
+ onClicked: {
+ if (menuItem.enabled) {
+ menuItem.triggered();
+ parent.opacity = 0;
+ }
+ }
}
}
contentItem: RowLayout {
anchors.fill: parent
- anchors.leftMargin: 10
+ anchors.leftMargin: 20
anchors.rightMargin: 10
opacity: menuItem.enabled ? 1 : 0.4
spacing: 8
@@ -42,7 +52,7 @@ MenuItem {
}
Text {
- color: MoneroComponents.Style.buttonTextColor
+ color: MoneroComponents.Style.blackTheme ? MoneroComponents.Style.buttonTextColor : MoneroComponents.Style.defaultFontColor
font.family: MoneroComponents.Style.fontRegular.name
font.pixelSize: 14
Layout.fillWidth: true
diff --git a/components/Input.qml b/components/Input.qml
index 33601d88..b33a821e 100644
--- a/components/Input.qml
+++ b/components/Input.qml
@@ -48,9 +48,16 @@ TextField {
MoneroComponents.ContextMenu {
cursorShape: Qt.IBeamCursor
+ onCut: textField.cut();
+ onCopy: textField.copy();
onPaste: {
- textField.clear();
+ var previoustextFieldLength = textField.length
+ var previousCursorPosition = textField.cursorPosition;
textField.paste();
+ textField.forceActiveFocus()
+ textField.cursorPosition = previousCursorPosition + (textField.length - previoustextFieldLength);
}
+ onRemove: textField.remove(selectionStart, selectionEnd);
+ onSelectAll: textField.selectAll();
}
}
diff --git a/components/InputMulti.qml b/components/InputMulti.qml
index ddbd5552..5d530b1d 100644
--- a/components/InputMulti.qml
+++ b/components/InputMulti.qml
@@ -71,9 +71,16 @@ TextArea {
MoneroComponents.ContextMenu {
cursorShape: Qt.IBeamCursor
+ onCut: textArea.cut();
+ onCopy: textArea.copy();
onPaste: {
- textArea.clear();
+ var previoustextFieldLength = textArea.length
+ var previousCursorPosition = textArea.cursorPosition;
textArea.paste();
+ textArea.forceActiveFocus()
+ textArea.cursorPosition = previousCursorPosition + (textArea.length - previoustextFieldLength);
}
+ onRemove: textArea.remove(selectionStart, selectionEnd);
+ onSelectAll: textArea.selectAll();
}
}