diff options
author | Richard Moe Gustavsen <richard.gustavsen@digia.com> | 2014-09-18 13:52:32 +0200 |
---|---|---|
committer | Richard Moe Gustavsen <richard.gustavsen@digia.com> | 2014-09-23 17:47:07 +0200 |
commit | 8c47885d9086bdd17a9b33b9353802f7b5d19deb (patch) | |
tree | 81f0871c094077034d7d53eed667d974be33d07b | |
parent | 229c4b0a71c888c37fad054c2fabaecfa3ba73fc (diff) | |
download | qtquickcontrols-8c47885d9086bdd17a9b33b9353802f7b5d19deb.tar.gz qtquickcontrols-8c47885d9086bdd17a9b33b9353802f7b5d19deb.tar.bz2 qtquickcontrols-8c47885d9086bdd17a9b33b9353802f7b5d19deb.zip |
EditMenu: add base implementation for desktop
This will add a default edit menu for TextArea, TextField
Combobox and Spinbox.
Change-Id: Ib310d20e9f8f8c17750d12cb181577838d600bd6
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
-rw-r--r-- | src/controls/Private/EditMenu.qml | 2 | ||||
-rw-r--r-- | src/controls/Private/EditMenu_base.qml | 106 | ||||
-rw-r--r-- | src/controls/Private/private.pri | 1 | ||||
-rw-r--r-- | src/controls/Private/qmldir | 1 |
4 files changed, 109 insertions, 1 deletions
diff --git a/src/controls/Private/EditMenu.qml b/src/controls/Private/EditMenu.qml index b7cebc19..c0faf9ff 100644 --- a/src/controls/Private/EditMenu.qml +++ b/src/controls/Private/EditMenu.qml @@ -49,5 +49,5 @@ Loader { property Flickable flickable property Menu defaultMenu: item && item.defaultMenu ? item.defaultMenu : null - source: Qt.platform.os === "ios" ? Qt.resolvedUrl("EditMenu_ios.qml") : "" + source: Qt.resolvedUrl("EditMenu_" + (Qt.platform.os === "ios" ? "ios" : "base") + ".qml") } diff --git a/src/controls/Private/EditMenu_base.qml b/src/controls/Private/EditMenu_base.qml new file mode 100644 index 00000000..88cef62a --- /dev/null +++ b/src/controls/Private/EditMenu_base.qml @@ -0,0 +1,106 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Quick controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +Item { + anchors.fill: parent + + Action { + id: cutAction + text: "Cu&t" + shortcut: StandardKey.Cut + iconName: "edit-cut" + enabled: !input.readOnly && selectionStart !== selectionEnd + onTriggered: { + input.cut(); + input.select(input.cursorPosition, input.cursorPosition); + } + } + + Action { + id: copyAction + text: "&Copy" + shortcut: StandardKey.Copy + iconName: "edit-copy" + enabled: input.selectionStart !== input.selectionEnd + onTriggered: { + input.copy(); + input.select(input.cursorPosition, input.cursorPosition); + } + } + + Action { + id: pasteAction + text: "&Paste" + shortcut: StandardKey.Paste + iconName: "edit-paste" + enabled: input.canPaste + onTriggered: input.paste() + } + + property Menu defaultMenu: Menu { + MenuItem { action: cutAction } + MenuItem { action: copyAction } + MenuItem { action: pasteAction } + } + + MouseArea { + id: mouseArea + anchors.fill: parent + acceptedButtons: Qt.RightButton + + onClicked: { + if (input.selectionStart === input.selectionEnd) { + var cursorPos = input.positionAt(mouse.x, mouse.y) + input.moveHandles(cursorPos, cursorPos) + } + + input.activate() + + if (control.menu) { + control.menu.__dismissMenu(); + var menuPos = mapToItem(null, mouse.x, mouse.y) + control.menu.__popup(menuPos.x, menuPos.y, -1, MenuPrivate.EditMenu); + } + } + } +} diff --git a/src/controls/Private/private.pri b/src/controls/Private/private.pri index b407cbf4..85e5c3ad 100644 --- a/src/controls/Private/private.pri +++ b/src/controls/Private/private.pri @@ -58,6 +58,7 @@ PRIVATE_QML_FILES += \ $$PWD/HoverButton.qml \ $$PWD/TextInputWithHandles.qml \ $$PWD/EditMenu.qml \ + $$PWD/EditMenu_base.qml \ $$PWD/EditMenu_ios.qml \ $$PWD/qmldir diff --git a/src/controls/Private/qmldir b/src/controls/Private/qmldir index 7ef7ae95..103d8347 100644 --- a/src/controls/Private/qmldir +++ b/src/controls/Private/qmldir @@ -30,4 +30,5 @@ singleton TextSingleton 1.0 TextSingleton.qml TextHandle 1.0 TextHandle.qml TextInputWithHandles 1.0 TextInputWithHandles.qml EditMenu 1.0 EditMenu.qml +EditMenu_base 1.0 EditMenu_base.qml EditMenu_ios 1.0 EditMenu_ios.qml |