diff options
-rw-r--r-- | src/imports/dialogs/DefaultColorDialog.qml | 29 | ||||
-rw-r--r-- | src/imports/dialogs/DefaultFileDialog.qml | 79 | ||||
-rw-r--r-- | src/imports/dialogs/DefaultFontDialog.qml | 21 | ||||
-rw-r--r-- | src/imports/dialogs/DefaultMessageDialog.qml | 33 | ||||
-rw-r--r-- | src/imports/dialogs/qml/TextField.qml | 9 |
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() } } |