diff --git a/applets/notes/package/contents/ui/main.qml b/applets/notes/package/contents/ui/main.qml --- a/applets/notes/package/contents/ui/main.qml +++ b/applets/notes/package/contents/ui/main.qml @@ -124,186 +124,172 @@ selectionEnd: mainTextArea.selectionEnd } - PlasmaComponents.TextArea { - id: mainTextArea + FocusScope { + id: focusScope anchors { - top: parent.top - left: parent.left - right: parent.right - + fill: parent leftMargin: horizontalMargins rightMargin: horizontalMargins topMargin: verticalMargins - - bottom: fontButtons.top - bottomMargin: Math.round(units.largeSpacing / 2) + bottomMargin: verticalMargins } - backgroundVisible: false - frameVisible: false - textFormat: TextEdit.RichText + PlasmaComponents.TextArea { + id: mainTextArea + anchors { + top: parent.top + left: parent.left + right: parent.right + bottom: fontButtons.top + bottomMargin: Math.round(units.largeSpacing / 2) + } - onLinkActivated: Qt.openUrlExternally(link) + backgroundVisible: false + frameVisible: false + textFormat: TextEdit.RichText - Keys.onPressed: { - if(event.key === Qt.Key_Escape) { - plasmoid.expanded = false; - event.accepted = true; - } else if(event.modifiers === Qt.ControlModifier) { - if(event.key === Qt.Key_B) { - documentHandler.bold = !documentHandler.bold; - event.accepted = true; - } else if(event.key === Qt.Key_I) { - documentHandler.italic = !documentHandler.italic; - event.accepted = true; - } else if(event.key === Qt.Key_U) { - documentHandler.underline = !documentHandler.underline; - event.accepted = true; - } else if(event.key === Qt.Key_S) { - documentHandler.strikeOut = !documentHandler.strikeOut; + onLinkActivated: Qt.openUrlExternally(link) + + Keys.onPressed: { + if(event.key === Qt.Key_Escape) { + plasmoid.expanded = false; event.accepted = true; + } else if(event.modifiers === Qt.ControlModifier) { + if(event.key === Qt.Key_B) { + documentHandler.bold = !documentHandler.bold; + event.accepted = true; + } else if(event.key === Qt.Key_I) { + documentHandler.italic = !documentHandler.italic; + event.accepted = true; + } else if(event.key === Qt.Key_U) { + documentHandler.underline = !documentHandler.underline; + event.accepted = true; + } else if(event.key === Qt.Key_S) { + documentHandler.strikeOut = !documentHandler.strikeOut; + event.accepted = true; + } } } - } - style: PlasmaStyle.TextAreaStyle { - //this is deliberately _NOT_ the theme color as we are over a known bright background - //an unknown colour over a known colour is a bad move as you end up with white on yellow - textColor: plasmoid.configuration.color === "black" ? "#dfdfdf" : "#202020" - } + style: PlasmaStyle.TextAreaStyle { + //this is deliberately _NOT_ the theme color as we are over a known bright background + //an unknown colour over a known colour is a bad move as you end up with white on yellow + textColor: plasmoid.configuration.color === "black" ? "#dfdfdf" : "#202020" + } - //update the note if the source changes, but only if the user isn't editing it currently - Binding { - target: mainTextArea - property: "text" - value: note.noteText - when: !mainTextArea.activeFocus - } + //update the note if the source changes, but only if the user isn't editing it currently + Binding { + target: mainTextArea + property: "text" + value: note.noteText + when: !mainTextArea.activeFocus + } - onActiveFocusChanged: { - if (!activeFocus) { - note.save(mainTextArea.text); + onActiveFocusChanged: { + if (!activeFocus) { + note.save(mainTextArea.text); + } } } - } - DragDrop.DropArea { - id: dropArea - anchors.fill: mainTextArea + DragDrop.DropArea { + id: dropArea + anchors.fill: mainTextArea - function positionOfDrop(event) { - return mainTextArea.positionAt(event.x, event.y + mainTextArea.flickableItem.contentY) - } - - onDrop: { - var mimeData = event.mimeData - var text = "" - if (mimeData.hasUrls) { - var urls = mimeData.urls - for (var i = 0, j = urls.length; i < j; ++i) { - var url = urls[i] - text += "" + url + "
" - } - } else { - text = mimeData.text.replace(/\n/g, "
") + function positionOfDrop(event) { + return mainTextArea.positionAt(event.x, event.y + mainTextArea.flickableItem.contentY) } - mainTextArea.insert(positionOfDrop(event), text) - event.accept(Qt.CopyAction) - } - onDragMove: { - // there doesn't seem to be a "just move the cursor", so we move - // the selection and then unselect so the cursor follows the mouse - mainTextArea.moveCursorSelection(positionOfDrop(event)) - mainTextArea.deselect() - } - onDragEnter: mainTextArea.forceActiveFocus() - } + onDrop: { + var mimeData = event.mimeData + var text = "" + if (mimeData.hasUrls) { + var urls = mimeData.urls + for (var i = 0, j = urls.length; i < j; ++i) { + var url = urls[i] + text += "" + url + "
" + } + } else { + text = mimeData.text.replace(/\n/g, "
") + } - RowLayout { - id: fontButtons - spacing: units.smallSpacing - anchors { - bottom: parent.bottom - left: parent.left - right: parent.right - leftMargin: horizontalMargins - rightMargin: horizontalMargins - bottomMargin: verticalMargins + mainTextArea.insert(positionOfDrop(event), text) + event.accept(Qt.CopyAction) + } + onDragMove: { + // there doesn't seem to be a "just move the cursor", so we move + // the selection and then unselect so the cursor follows the mouse + mainTextArea.moveCursorSelection(positionOfDrop(event)) + mainTextArea.deselect() + } + onDragEnter: mainTextArea.forceActiveFocus() } - readonly property int requiredWidth: formatButtonsRow.width + spacing + settingsButton.width - readonly property bool showFormatButtons: width > requiredWidth - - Row { - id: formatButtonsRow + RowLayout { + id: fontButtons spacing: units.smallSpacing - // show format buttons if TextField or any of the buttons have focus + anchors { + bottom: parent.bottom + left: parent.left + right: parent.right + } - opacity: { - if (!fontButtons.showFormatButtons) { - return 0; + readonly property int requiredWidth: formatButtonsRow.width + spacing + settingsButton.width + readonly property bool showFormatButtons: width > requiredWidth + + Row { + id: formatButtonsRow + spacing: units.smallSpacing + // show format buttons if TextField or any of the buttons have focus + opacity: fontButtons.showFormatButtons && focusScope.activeFocus ? 1 : 0 + + Behavior on opacity { NumberAnimation { duration: units.longDuration } } + enabled: opacity > 0 + visible: fontButtons.showFormatButtons + + PlasmaComponents.ToolButton { + tooltip: i18n("Bold") + iconSource: "format-text-bold" + checked: documentHandler.bold + onClicked: documentHandler.bold = !documentHandler.bold + Accessible.name: tooltip } - - if (mainTextArea.activeFocus || settingsButton.activeFocus) { - return 1; + PlasmaComponents.ToolButton { + tooltip: i18n("Italic") + iconSource: "format-text-italic" + checked: documentHandler.italic + onClicked: documentHandler.italic = !documentHandler.italic + Accessible.name: tooltip } - - for (var i = 0; i < children.length; ++i) { - if (children[i].activeFocus) { - return 1; - } + PlasmaComponents.ToolButton { + tooltip: i18n("Underline") + iconSource: "format-text-underline" + checked: documentHandler.underline + onClicked: documentHandler.underline = !documentHandler.underline + Accessible.name: tooltip + } + PlasmaComponents.ToolButton { + tooltip: i18n("Strikethrough") + iconSource: "format-text-strikethrough" + checked: documentHandler.strikeOut + onClicked: documentHandler.strikeOut = !documentHandler.strikeOut + Accessible.name: tooltip } - - return 0; } - Behavior on opacity { NumberAnimation { duration: units.longDuration } } - enabled: opacity > 0 - visible: fontButtons.showFormatButtons - - PlasmaComponents.ToolButton { - tooltip: i18n("Bold") - iconSource: "format-text-bold" - checked: documentHandler.bold - onClicked: documentHandler.bold = !documentHandler.bold - Accessible.name: tooltip - } - PlasmaComponents.ToolButton { - tooltip: i18n("Italic") - iconSource: "format-text-italic" - checked: documentHandler.italic - onClicked: documentHandler.italic = !documentHandler.italic - Accessible.name: tooltip - } - PlasmaComponents.ToolButton { - tooltip: i18n("Underline") - iconSource: "format-text-underline" - checked: documentHandler.underline - onClicked: documentHandler.underline = !documentHandler.underline - Accessible.name: tooltip + Item { // spacer + Layout.fillWidth: true + Layout.fillHeight: true } + PlasmaComponents.ToolButton { - tooltip: i18n("Strikethrough") - iconSource: "format-text-strikethrough" - checked: documentHandler.strikeOut - onClicked: documentHandler.strikeOut = !documentHandler.strikeOut + id: settingsButton + tooltip: plasmoid.action("configure").text + iconSource: "configure" + onClicked: plasmoid.action("configure").trigger() Accessible.name: tooltip } } - - Item { // spacer - Layout.fillWidth: true - Layout.fillHeight: true - } - - PlasmaComponents.ToolButton { - id: settingsButton - tooltip: plasmoid.action("configure").text - iconSource: "configure" - onClicked: plasmoid.action("configure").trigger() - Accessible.name: tooltip - } } Component.onCompleted: {