diff --git a/containments/desktop/package/contents/ui/FolderItemDelegate.qml b/containments/desktop/package/contents/ui/FolderItemDelegate.qml index 8129d3144..1f3e9c058 100644 --- a/containments/desktop/package/contents/ui/FolderItemDelegate.qml +++ b/containments/desktop/package/contents/ui/FolderItemDelegate.qml @@ -1,425 +1,423 @@ /*************************************************************************** * Copyright (C) 2014-2015 by Eike Hein * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . * ***************************************************************************/ import QtQuick 2.4 import QtGraphicalEffects 1.0 import org.kde.plasma.plasmoid 2.0 import org.kde.plasma.core 2.0 as PlasmaCore import org.kde.plasma.components 2.0 as PlasmaComponents import org.kde.kquickcontrolsaddons 2.0 Item { id: main property int index: model.index property string name: model.blank ? "" : model.display property bool blank: model.blank property bool isDir: loader.item ? loader.item.isDir : false property QtObject popupDialog: loader.item ? loader.item.popupDialog : null property Item iconArea: loader.item ? loader.item.iconArea : null property Item label: loader.item ? loader.item.label : null property Item labelArea: loader.item ? loader.item.labelArea : null property Item actionsOverlay: loader.item ? loader.item.actionsOverlay : null property Item hoverArea: loader.item ? loader.item.hoverArea : null property Item toolTip: loader.item ? loader.item.toolTip : null function openPopup() { if (isDir) { loader.item.openPopup(); } } Loader { id: loader anchors.fill: parent visible: status === Loader.Ready active: !model.blank sourceComponent: delegateImplementation asynchronous: true } Component { id: delegateImplementation Item { id: impl anchors.fill: parent property bool blank: model.blank property bool selected: model.blank ? false : model.selected property bool isDir: model.blank ? false : model.isDir property bool hovered: (main.GridView.view.hoveredItem == main) property QtObject popupDialog: null property Item iconArea: icon property Item label: label property Item labelArea: frameLoader.textShadow || label property Item actionsOverlay: actions property Item hoverArea: toolTip property Item toolTip: toolTip property Item selectionButton: null property Item popupButton: null onSelectedChanged: { if (selected && !blank) { frameLoader.grabToImage(function(result) { dir.addItemDragImage(positioner.map(index), main.x + frameLoader.x, main.y + frameLoader.y, frameLoader.width, frameLoader.height, result.image); }); } } onHoveredChanged: { if (hovered) { if (plasmoid.configuration.selectionMarkers && Qt.styleHints.singleClickActivation) { selectionButton = selectionButtonComponent.createObject(actions); } if (model.isDir) { if (!main.GridView.view.isRootView || root.containsDrag) { hoverActivateTimer.restart(); } if (plasmoid.configuration.popups && !root.useListViewMode) { popupButton = popupButtonComponent.createObject(actions); } } } else if (!hovered) { hoverActivateTimer.stop(); if (popupDialog != null) { popupDialog.requestDestroy(); popupDialog = null; } if (selectionButton) { selectionButton.destroy(); selectionButton = null; } if (popupButton) { popupButton.destroy(); popupButton = null; } } } function openPopup() { if (folderViewDialogComponent.status == Component.Ready) { impl.popupDialog = folderViewDialogComponent.createObject(impl); impl.popupDialog.visualParent = icon; impl.popupDialog.url = model.linkDestinationUrl; impl.popupDialog.visible = true; } } PlasmaCore.ToolTipArea { id: toolTip x: frameLoader.x + Math.min(icon.x, label.x) y: frameLoader.y + icon.y width: Math.max(icon.width, label.width) height: (label.y + label.paintedHeight) active: (plasmoid.configuration.toolTips && popupDialog == null && !model.blank) interactive: false location: root.useListViewMode ? (plasmoid.location == PlasmaCore.Types.LeftEdge ? PlasmaCore.Types.LeftEdge : PlasmaCore.Types.RightEdge) : plasmoid.location onContainsMouseChanged: { if (containsMouse && !model.blank) { toolTip.icon = model.decoration; toolTip.mainText = model.display; if (model.size != undefined) { toolTip.subText = model.type + "\n" + model.size; } else { toolTip.subText = model.type; } main.GridView.view.hoveredItem = main; } } } Loader { id: frameLoader x: root.useListViewMode ? 0 : units.smallSpacing y: root.useListViewMode ? 0 : units.smallSpacing property Item textShadow: null property string prefix: "" sourceComponent: frameComponent active: state !== "" asynchronous: true width: { if (root.useListViewMode) { if (main.GridView.view.overflowing) { return parent.width - units.smallSpacing; } else { return parent.width; } } return parent.width - (units.smallSpacing * 2); } height: { if (root.useListViewMode) { return parent.height; } return (icon.height + (2 * units.smallSpacing) + (label.lineCount * theme.mSize(theme.defaultFont).height) + (2 * units.largeSpacing)); } PlasmaCore.IconItem { id: icon z: 2 states: [ State { // icon view when: !root.useListViewMode AnchorChanges { target: icon anchors.top: parent.top anchors.horizontalCenter: parent.horizontalCenter } }, State { // list view when: root.useListViewMode AnchorChanges { target: icon anchors.left: parent.left anchors.verticalCenter: parent.verticalCenter } } ] anchors { topMargin: units.largeSpacing leftMargin: units.smallSpacing } width: root.useListViewMode ? main.GridView.view.iconSize : (parent.width - 2 * units.smallSpacing) height: main.GridView.view.iconSize opacity: root.useListViewMode && selectionButton ? 0.3 : 1.0 animated: false usesPlasmaTheme: false source: model.decoration overlays: model.overlays } PlasmaComponents.Label { id: label z: 2 // So we can position a textShadowComponent below if needed. states: [ State { // icon view when: !root.useListViewMode AnchorChanges { target: label anchors.top: icon.bottom anchors.horizontalCenter: parent.horizontalCenter } PropertyChanges { target: label anchors.topMargin: 2 * units.smallSpacing width: Math.min(label.implicitWidth + units.smallSpacing, parent.width - units.smallSpacing * 8) maximumLineCount: plasmoid.configuration.textLines horizontalAlignment: Text.AlignHCenter } }, State { // list view when: root.useListViewMode AnchorChanges { target: label anchors.left: icon.right anchors.verticalCenter: parent.verticalCenter } PropertyChanges { target: label anchors.leftMargin: units.smallSpacing * 2 anchors.rightMargin: units.smallSpacing * 2 width: parent.width - icon.width - (units.smallSpacing * 4) maximumLineCount: 1 horizontalAlignment: Text.AlignLeft } } ] height: undefined // Unset PlasmaComponents.Label's default. textFormat: Text.PlainText wrapMode: Text.Wrap elide: Text.ElideRight color: (frameLoader.textShadow && frameLoader.textShadow.visible ? "#fff" : PlasmaCore.ColorScope.textColor) text: model.blank ? "" : model.display font.italic: model.isLink - - Component.onCompleted: textFix.disableMouseHandling(label) // FIXME TODO: See https://codereview.qt-project.org/#/c/113758/ } Column { id: actions visible: { if (main.GridView.view.isRootView && root.containsDrag) { return false; } if (!main.GridView.view.isRootView && dialog.containsDrag) { return false; } if (popupDialog) { return false; } return true; } x: units.smallSpacing * 3 y: units.smallSpacing * 3 z: 3 anchors { centerIn: root.useListViewMode ? icon : undefined } width: implicitWidth height: implicitHeight } Component { id: frameComponent PlasmaCore.FrameSvgItem { prefix: frameLoader.prefix imagePath: "widgets/viewitem" } } Component { id: selectionButtonComponent FolderItemActionButton { element: model.selected ? "remove" : "add" onClicked: dir.toggleSelected(positioner.map(index)) } } Component { id: popupButtonComponent FolderItemActionButton { visible: popupDialog == null element: "open" onClicked: openPopup() } } Component { id: textShadowComponent DropShadow { anchors.fill: label z: 1 horizontalOffset: 2 verticalOffset: 2 radius: 9.0 samples: 18 spread: 0.15 color: "black" source: label } } states: [ State { name: "selected" when: model.selected PropertyChanges { target: frameLoader prefix: "selected" } }, State { name: "hover" when: hovered && !model.selected PropertyChanges { target: frameLoader prefix: "hover" } }, State { name: "selected+hover" when: hovered && model.selected PropertyChanges { target: frameLoader prefix: "selected+hover" } } ] } Component.onCompleted: { if (root.isContainment && main.GridView.view.isRootView) { frameLoader.textShadow = textShadowComponent.createObject(frameLoader); } } } } } diff --git a/containments/desktop/package/contents/ui/FolderViewLayer.qml b/containments/desktop/package/contents/ui/FolderViewLayer.qml index 74c2b1d17..ba8ced995 100644 --- a/containments/desktop/package/contents/ui/FolderViewLayer.qml +++ b/containments/desktop/package/contents/ui/FolderViewLayer.qml @@ -1,362 +1,357 @@ /*************************************************************************** * Copyright (C) 2014-2015 by Eike Hein * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . * ***************************************************************************/ import QtQuick 2.0 import org.kde.plasma.plasmoid 2.0 import org.kde.plasma.core 2.0 as PlasmaCore import org.kde.plasma.components 2.0 as PlasmaComponents import org.kde.private.desktopcontainment.folder 0.1 as Folder Item { id: folderViewLayerComponent property variant sharedActions: ["newMenu", "paste", "undo", "refresh", "emptyTrash"] property Component folderViewDialogComponent: Qt.createComponent("FolderViewDialog.qml", Qt.Asynchronous, root) property Item view: folderView property Item label: null property int labelHeight: theme.mSize(theme.defaultFont).height + (root.isPopup ? (units.smallSpacing * 2) : 0) property alias model: folderView.model property alias overflowing: folderView.overflowing property alias flow: folderView.flow function updateContextualActions() { folderView.model.updateActions(); var actionName = ""; var appletAction = null; var modelAction = null; for (var i = 0; i < sharedActions.length; i++) { actionName = sharedActions[i]; appletAction = plasmoid.action(actionName); modelAction = folderView.model.action(actionName); appletAction.text = modelAction.text; appletAction.enabled = modelAction.enabled; appletAction.visible = modelAction.visible; } } PlasmaCore.Svg { id: actionOverlays imagePath: "widgets/action-overlays" multipleImages: true size: "16x16" } - // FIXME TODO: See https://codereview.qt-project.org/#/c/113758/ - Folder.TextFix { - id: textFix - } - Folder.MenuHelper { id: menuHelper } Folder.ViewPropertiesMenu { id: viewPropertiesMenu showLayoutActions: !isPopup showLockAction: isContainment showIconSizeActions: !root.useListViewMode onArrangementChanged: { plasmoid.configuration.arrangement = arrangement; } onAlignmentChanged: { plasmoid.configuration.alignment = alignment; } onLockedChanged: { plasmoid.configuration.locked = locked; } onSortModeChanged: { plasmoid.configuration.sortMode = sortMode; } onSortDescChanged: { plasmoid.configuration.sortDesc = sortDesc; } onSortDirsFirstChanged: { plasmoid.configuration.sortDirsFirst = sortDirsFirst; } onIconSizeChanged: { plasmoid.configuration.iconSize = iconSize; } Component.onCompleted: { arrangement = plasmoid.configuration.arrangement; alignment = plasmoid.configuration.alignment; locked = plasmoid.configuration.locked; sortMode = plasmoid.configuration.sortMode; sortDesc = plasmoid.configuration.sortDesc; sortDirsFirst = plasmoid.configuration.sortDirsFirst; iconSize = plasmoid.configuration.iconSize; } } PlasmaComponents.Label { anchors.fill: parent text: folderView.errorString horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignVCenter wrapMode: Text.Wrap } Connections { target: plasmoid onExpandedChanged: { if (root.isPopup && !plasmoid.expanded) { if (folderView.url != plasmoid.configuration.url) { folderView.url = plasmoid.configuration.url; folderView.history = []; folderView.updateHistory(); } folderView.currentIndex = -1; folderView.model.clearSelection(); } } onExternalData: { plasmoid.configuration.url = data } } Connections { target: plasmoid.configuration onArrangementChanged: { viewPropertiesMenu.arrangement = plasmoid.configuration.arrangement; } onAlignmentChanged: { viewPropertiesMenu.alignment = plasmoid.configuration.alignment; } onLockedChanged: { viewPropertiesMenu.locked = plasmoid.configuration.locked; } onSortModeChanged: { folderView.sortMode = plasmoid.configuration.sortMode; viewPropertiesMenu.sortMode = plasmoid.configuration.sortMode; } onSortDescChanged: { viewPropertiesMenu.sortDesc = plasmoid.configuration.sortDesc; } onSortDirsFirstChanged: { viewPropertiesMenu.sortDirsFirst = plasmoid.configuration.sortDirsFirst; } onIconSizeChanged: { viewPropertiesMenu.iconSize = plasmoid.configuration.iconSize; } onPositionsChanged: { folderView.positions = plasmoid.configuration.positions; } } PlasmaCore.ColorScope { id: colorScope anchors.left: parent.left anchors.top: parent.top anchors.topMargin: folderViewLayerComponent.label != null ? folderViewLayerComponent.label.height : 0 anchors.right: parent.right anchors.bottom: parent.bottom colorGroup: (root.isContainment ? PlasmaCore.Theme.ComplementaryColorGroup : PlasmaCore.Theme.NormalColorGroup) FolderView { id: folderView anchors.fill: parent isRootView: true url: plasmoid.configuration.url locked: (plasmoid.configuration.locked || !isContainment) filterMode: plasmoid.configuration.filterMode filterPattern: plasmoid.configuration.filterPattern filterMimeTypes: plasmoid.configuration.filterMimeTypes flow: (plasmoid.configuration.arrangement == 0) ? GridView.FlowLeftToRight : GridView.FlowTopToBottom layoutDirection: (plasmoid.configuration.alignment == 0) ? Qt.LeftToRight : Qt.RightToLeft onSortModeChanged: { plasmoid.configuration.sortMode = sortMode; } onPositionsChanged: { plasmoid.configuration.positions = folderView.positions; } Component.onCompleted: { folderView.sortMode = plasmoid.configuration.sortMode; folderView.positions = plasmoid.configuration.positions; } } } Component { id: labelComponent Item { id: label // If we bind height to visible, it will be invisible initially (since "visible" // propagates recursively) and that confuses the Label, hence the temp property. readonly property bool active: (plasmoid.configuration.labelMode != 0) width: parent.width height: active ? labelHeight : 0 visible: active property Item windowPin: null onVisibleChanged: { if (root.isPopup && !visible) { plasmoid.hideOnWindowDeactivate = true; } } Connections { target: root onIsPopupChanged: { if (windowPin == null && root.isPopup) { windowPin = windowPinComponent.createObject(label); } else if (upButton != null) { windowPin.destroy(); } } } PlasmaComponents.Label { id: text width: parent.width - (windowPin != null ? windowPin.width - units.smallSpacing : 0) height: parent.height horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignTop elide: Text.ElideMiddle text: labelGenerator.displayLabel Binding { target: plasmoid property: "title" value: labelGenerator.displayLabel } Folder.LabelGenerator { id: labelGenerator url: folderView.model.resolvedUrl rtl: (Qt.application.layoutDirection == Qt.RightToLeft) labelMode: plasmoid.configuration.labelMode labelText: plasmoid.configuration.labelText } } MouseArea { anchors.fill: text onClicked: { var action = plasmoid.action("run associated application"); if (action) { action.trigger(); } } } Component { id: windowPinComponent PlasmaComponents.ToolButton { id: windowPin anchors.right: parent.right visible: root.isPopup width: root.isPopup ? Math.round(units.gridUnit * 1.25) : 0 height: width checkable: true iconSource: "window-pin" onCheckedChanged: plasmoid.hideOnWindowDeactivate = !checked } } Component.onCompleted: { if (root.isPopup) { windowPin = windowPinComponent.createObject(label); } } } } Component.onCompleted: { if (!isContainment) { label = labelComponent.createObject(folderViewLayerComponent); } var actionName = ""; var modelAction = null; for (var i = 0; i < sharedActions.length; i++) { actionName = sharedActions[i]; modelAction = folderView.model.action(actionName); plasmoid.setAction(actionName, modelAction.text, menuHelper.iconName(modelAction)); if (actionName == "newMenu") { menuHelper.setMenu(plasmoid.action(actionName), folderView.model.newMenu); plasmoid.setActionSeparator("separator1"); plasmoid.setAction("viewProperties", i18n("Icons"), "preferences-desktop-icons"); menuHelper.setMenu(plasmoid.action("viewProperties"), viewPropertiesMenu.menu); } else { plasmoid.action(actionName).triggered.connect(modelAction.trigger); } } plasmoid.setActionSeparator("separator2"); plasmoid.contextualActionsAboutToShow.connect(updateContextualActions); } } diff --git a/containments/desktop/plugins/folder/CMakeLists.txt b/containments/desktop/plugins/folder/CMakeLists.txt index 6a766a925..e6aeea31f 100644 --- a/containments/desktop/plugins/folder/CMakeLists.txt +++ b/containments/desktop/plugins/folder/CMakeLists.txt @@ -1,37 +1,36 @@ include_directories(plasmaquick) set(folderplugin_SRCS directorypicker.cpp foldermodel.cpp folderplugin.cpp itemviewadapter.cpp labelgenerator.cpp menuhelper.cpp mimetypesmodel.cpp placesmodel.cpp positioner.cpp previewpluginsmodel.cpp rubberband.cpp subdialog.cpp - textfix.cpp viewpropertiesmenu.cpp wheelinterceptor.cpp shortcut.cpp ) install(FILES qmldir DESTINATION ${QML_INSTALL_DIR}/org/kde/private/desktopcontainment/folder) add_library(folderplugin SHARED ${folderplugin_SRCS}) target_link_libraries(folderplugin Qt5::Core Qt5::Qml Qt5::Quick KF5::KIOCore KF5::KIOWidgets KF5::KIOFileWidgets KF5::I18n KF5::PlasmaQuick KF5::ConfigGui) install(TARGETS folderplugin DESTINATION ${QML_INSTALL_DIR}/org/kde/private/desktopcontainment/folder) diff --git a/containments/desktop/plugins/folder/folderplugin.cpp b/containments/desktop/plugins/folder/folderplugin.cpp index 37cdaef2a..9b21e0feb 100644 --- a/containments/desktop/plugins/folder/folderplugin.cpp +++ b/containments/desktop/plugins/folder/folderplugin.cpp @@ -1,58 +1,56 @@ /*************************************************************************** * Copyright (C) 2014 by Eike Hein * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . * ***************************************************************************/ #include "folderplugin.h" #include "directorypicker.h" #include "foldermodel.h" #include "itemviewadapter.h" #include "labelgenerator.h" #include "menuhelper.h" #include "mimetypesmodel.h" #include "placesmodel.h" #include "positioner.h" #include "previewpluginsmodel.h" #include "rubberband.h" #include "subdialog.h" -#include "textfix.h" #include "viewpropertiesmenu.h" #include "wheelinterceptor.h" #include "shortcut.h" #include void FolderPlugin::registerTypes(const char *uri) { Q_ASSERT(uri == QLatin1String("org.kde.private.desktopcontainment.folder")); qmlRegisterType(uri, 0, 1, "DirectoryPicker"); qmlRegisterType(uri, 0, 1, "FolderModel"); qmlRegisterType(uri, 0, 1, "ItemViewAdapter"); qmlRegisterType(uri, 0, 1, "LabelGenerator"); qmlRegisterType(uri, 0, 1, "MenuHelper"); qmlRegisterType(uri, 0, 1, "FilterableMimeTypesModel"); qmlRegisterType(uri, 0, 1, "PlacesModel"); qmlRegisterType(uri, 0, 1, "Positioner"); qmlRegisterType(uri, 0, 1, "PreviewPluginsModel"); qmlRegisterType(uri, 0, 1, "RubberBand"); qmlRegisterType(uri, 0, 1, "SubDialog"); - qmlRegisterType(uri, 0, 1, "TextFix"); qmlRegisterType(uri, 0, 1, "ViewPropertiesMenu"); qmlRegisterType(uri, 0, 1, "WheelInterceptor"); qmlRegisterType(uri, 0, 1, "ShortCut"); } diff --git a/containments/desktop/plugins/folder/textfix.cpp b/containments/desktop/plugins/folder/textfix.cpp deleted file mode 100644 index 2ac87a2af..000000000 --- a/containments/desktop/plugins/folder/textfix.cpp +++ /dev/null @@ -1,39 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2015 by Eike Hein * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . * - ***************************************************************************/ - -#include "textfix.h" - -#include - -TextFix::TextFix(QObject *parent) : QObject(parent) -{ -} - -TextFix::~TextFix() -{ -} - -void TextFix::disableMouseHandling(QQuickItem *textItem) -{ - if (!textItem) { - return; - } - - textItem->setAcceptedMouseButtons(Qt::NoButton); -} diff --git a/containments/desktop/plugins/folder/textfix.h b/containments/desktop/plugins/folder/textfix.h deleted file mode 100644 index 9d48b1120..000000000 --- a/containments/desktop/plugins/folder/textfix.h +++ /dev/null @@ -1,40 +0,0 @@ -/************************************************************************** - * Copyright (C) 2015 by Eike Hein * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . * - ***************************************************************************/ - -// FIXME TODO: See https://codereview.qt-project.org/#/c/113758/ - -#ifndef TEXTFIX_H -#define TEXTFIX_H - -#include - -class QQuickItem; - -class TextFix : public QObject -{ - Q_OBJECT - - public: - TextFix(QObject *parent = 0); - ~TextFix(); - - Q_INVOKABLE void disableMouseHandling(QQuickItem *textItem); -}; - -#endif