aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/imports/dialogs/DefaultColorDialog.qml29
-rw-r--r--src/imports/dialogs/DefaultFileDialog.qml79
-rw-r--r--src/imports/dialogs/DefaultFontDialog.qml21
-rw-r--r--src/imports/dialogs/DefaultMessageDialog.qml33
-rw-r--r--src/imports/dialogs/qml/TextField.qml9
5 files changed, 129 insertions, 42 deletions
diff --git a/src/imports/dialogs/DefaultColorDialog.qml b/src/imports/dialogs/DefaultColorDialog.qml
index 2449d5b01b..a0efb6ccf1 100644
--- a/src/imports/dialogs/DefaultColorDialog.qml
+++ b/src/imports/dialogs/DefaultColorDialog.qml
@@ -65,11 +65,40 @@ AbstractColorDialog {
implicitHeight: Math.min(maxSize, Screen.pixelDensity * (usePaletteMap ? 100 : 50))
implicitWidth: usePaletteMap ? implicitHeight - bottomMinHeight : implicitHeight * 1.5
color: palette.window
+ focus: root.visible
property real bottomMinHeight: sliders.height + buttonRow.height + outerSpacing * 3
property real spacing: 8
property real outerSpacing: 12
property bool usePaletteMap: true
+ Keys.onPressed: {
+ event.accepted = true
+ switch (event.key) {
+ case Qt.Key_Return:
+ case Qt.Key_Select:
+ accept()
+ break
+ case Qt.Key_Escape:
+ case Qt.Key_Back:
+ reject()
+ break
+ case Qt.Key_C:
+ if (event.modifiers & Qt.ControlModifier)
+ colorField.copyAll()
+ break
+ case Qt.Key_V:
+ if (event.modifiers & Qt.ControlModifier) {
+ colorField.paste()
+ root.currentColor = colorField.text
+ }
+ break
+ default:
+ // do nothing
+ event.accepted = false
+ break
+ }
+ }
+
// set the preferred width based on height, to avoid "letterboxing" the paletteMap
onHeightChanged: implicitHeight = Math.max((usePaletteMap ? 480 : bottomMinHeight), height)
diff --git a/src/imports/dialogs/DefaultFileDialog.qml b/src/imports/dialogs/DefaultFileDialog.qml
index 60928934d8..6ed6697f5a 100644
--- a/src/imports/dialogs/DefaultFileDialog.qml
+++ b/src/imports/dialogs/DefaultFileDialog.qml
@@ -103,7 +103,7 @@ AbstractFileDialog {
clearSelection()
if (selectFolder && selectedIndices.length == 0)
addSelection(folder)
- else {
+ else if (selectedIndices.length > 0) {
selectedIndices.map(function(idx) {
if (view.model.isFolder(idx)) {
if (selectFolder)
@@ -113,17 +113,20 @@ AbstractFileDialog {
addSelection(view.model.get(idx, "fileURL"))
}
})
+ } else {
+ addSelection(pathToUrl(currentPathField.text))
}
accept()
}
Rectangle {
+ id: content
property int maxSize: Math.min(Screen.desktopAvailableWidth, Screen.desktopAvailableHeight)
// TODO: QTBUG-29817 geometry from AbstractFileDialog
- id: window
implicitWidth: Math.min(maxSize, Screen.pixelDensity * 100)
implicitHeight: Math.min(maxSize, Screen.pixelDensity * 80)
color: palette.window
+ focus: root.visible && !currentPathField.visible
SystemPalette { id: palette }
@@ -138,7 +141,7 @@ AbstractFileDialog {
root.acceptSelection()
}
}
- width: window.width
+ width: content.width
height: nameText.implicitHeight * 1.5
color: "transparent"
Rectangle {
@@ -204,6 +207,47 @@ AbstractFileDialog {
}
}
+ Keys.onPressed: {
+ event.accepted = true
+ switch (event.key) {
+ case Qt.Key_Up:
+ root.up(event.modifiers & Qt.ShiftModifier && root.selectMultiple)
+ break
+ case Qt.Key_Down:
+ root.down(event.modifiers & Qt.ShiftModifier && root.selectMultiple)
+ break
+ case Qt.Key_Left:
+ root.dirUp()
+ break
+ case Qt.Key_Return:
+ case Qt.Key_Select:
+ case Qt.Key_Right:
+ if (view.currentItem)
+ view.currentItem.launch()
+ else
+ root.acceptSelection()
+ break
+ case Qt.Key_Back:
+ case Qt.Key_Escape:
+ reject()
+ break
+ case Qt.Key_C:
+ if (event.modifiers & Qt.ControlModifier)
+ currentPathField.copyAll()
+ break
+ case Qt.Key_V:
+ if (event.modifiers & Qt.ControlModifier) {
+ currentPathField.visible = true
+ currentPathField.paste()
+ }
+ break
+ default:
+ // do nothing
+ event.accepted = false
+ break
+ }
+ }
+
ListView {
id: view
anchors.top: titleBar.bottom
@@ -224,33 +268,6 @@ AbstractFileDialog {
}
highlightMoveDuration: 0
highlightMoveVelocity: -1
- focus: !currentPathField.visible
- Keys.onPressed: {
- event.accepted = true
- switch (event.key) {
- case Qt.Key_Up:
- root.up(event.modifiers & Qt.ShiftModifier && root.selectMultiple)
- break
- case Qt.Key_Down:
- root.down(event.modifiers & Qt.ShiftModifier && root.selectMultiple)
- break
- case Qt.Key_Left:
- root.dirUp()
- break
- case Qt.Key_Return:
- case Qt.Key_Select:
- case Qt.Key_Right:
- if (view.currentItem)
- view.currentItem.launch()
- else
- root.acceptSelection()
- break
- default:
- // do nothing
- event.accepted = false
- break
- }
- }
}
MouseArea {
@@ -318,6 +335,8 @@ AbstractFileDialog {
view.model.folder = root.pathFolder(text)
}
onDownPressed: currentPathField.visible = false
+ onBackPressed: reject()
+ onEscapePressed: reject()
}
}
Rectangle {
diff --git a/src/imports/dialogs/DefaultFontDialog.qml b/src/imports/dialogs/DefaultFontDialog.qml
index 87bb812c42..0ad476232c 100644
--- a/src/imports/dialogs/DefaultFontDialog.qml
+++ b/src/imports/dialogs/DefaultFontDialog.qml
@@ -55,6 +55,7 @@ AbstractFontDialog {
implicitWidth: settings.implicitWidth + changeableWidth + outerSpacing * 2
implicitHeight: writingSystemLabel.implicitHeight + changeableHeight + buttonRow.height + outerSpacing * 2
color: palette.window
+ focus: root.visible
property real spacing: 8
property real outerSpacing: 12
property real listMargins: 4
@@ -69,6 +70,7 @@ AbstractFontDialog {
property real changeableWidth: 160
property real changeableHeight: 120
+
onFontChanged: externalFont = font
onExternalFontChanged: {
@@ -80,6 +82,25 @@ AbstractFontDialog {
}
}
+ Keys.onPressed: {
+ event.accepted = true
+ switch (event.key) {
+ case Qt.Key_Return:
+ case Qt.Key_Select:
+ root.font = content.font
+ root.accept()
+ break
+ case Qt.Key_Escape:
+ case Qt.Key_Back:
+ reject()
+ break
+ default:
+ // do nothing
+ event.accepted = false
+ break
+ }
+ }
+
SystemPalette { id: palette }
Grid {
diff --git a/src/imports/dialogs/DefaultMessageDialog.qml b/src/imports/dialogs/DefaultMessageDialog.qml
index 5dbe727f68..2f1aa8612a 100644
--- a/src/imports/dialogs/DefaultMessageDialog.qml
+++ b/src/imports/dialogs/DefaultMessageDialog.qml
@@ -57,19 +57,28 @@ AbstractMessageDialog {
mainText.implicitWidth, buttons.implicitWidth) + outerSpacing * 2);
onImplicitWidthChanged: if (implicitWidth > root.width) root.width = implicitWidth
color: palette.window
- focus: true
- Keys.onEscapePressed: root.reject()
- Keys.onEnterPressed: root.accept()
- Keys.onReturnPressed: root.accept()
- Keys.onPressed: if (event.modifiers === Qt.ControlModifier)
- switch (event.key) {
- case Qt.Key_A:
- detailedText.selectAll();
- break;
- case Qt.Key_C:
- detailedText.copy();
- break;
+ focus: root.visible
+ Keys.onPressed: {
+ event.accepted = true
+ if (event.modifiers === Qt.ControlModifier)
+ switch (event.key) {
+ case Qt.Key_A:
+ detailedText.selectAll()
+ break
+ case Qt.Key_C:
+ detailedText.copy()
+ break
+ } else switch (event.key) {
+ case Qt.Key_Escape:
+ case Qt.Key_Back:
+ reject()
+ break
+ case Qt.Key_Enter:
+ case Qt.Key_Return:
+ accept()
+ break
}
+ }
Column {
id: contentColumn
diff --git a/src/imports/dialogs/qml/TextField.qml b/src/imports/dialogs/qml/TextField.qml
index 9a6427a105..e67155086c 100644
--- a/src/imports/dialogs/qml/TextField.qml
+++ b/src/imports/dialogs/qml/TextField.qml
@@ -47,6 +47,8 @@ Item {
property alias text: textInput.text
signal accepted
signal downPressed
+ signal backPressed
+ signal escapePressed
implicitWidth: textInput.implicitWidth + rect.radius * 2
implicitHeight: textInput.implicitHeight
@@ -55,6 +57,11 @@ Item {
textInput.copy()
}
+ function paste() {
+ textInput.selectAll()
+ textInput.paste()
+ }
+
SystemPalette { id: palette }
height: textInput.implicitHeight + 8
clip: true
@@ -76,5 +83,7 @@ Item {
verticalAlignment: Text.AlignVCenter
onAccepted: root.accepted()
Keys.onDownPressed: root.downPressed()
+ Keys.onBackPressed: root.backPressed()
+ Keys.onEscapePressed: root.escapePressed()
}
}