summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@qt.io>2022-03-18 15:14:15 +0200
committerMiikka Heikkinen <miikka.heikkinen@qt.io>2022-03-24 05:59:34 +0000
commit9a9cd6d62f85f8ead41ac607b87a14bd27ae4f4a (patch)
tree75ed23c7c1408f3b8135e5b4b6d570a7ef68a6ae
parente40041978e7b42e17bc5264def255f71090160b4 (diff)
downloadqt-creator-9a9cd6d62f85f8ead41ac607b87a14bd27ae4f4a.tar.gz
QmlDesigner: Prevent showing preview tooltip when button is pressed
On some platforms, drag will stop deliving mouse events to MouseArea. Disallowed showing the tooltip when a mouse button is pressed. Fixes: QDS-6481 Change-Id: I8777d57be1bfef8470571027d9257d3a10eb5a7a Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Samuel Ghinet <samuel.ghinet@qt.io> Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
-rw-r--r--share/qtcreator/qmldesigner/itemLibraryQmlSources/Assets.qml14
-rw-r--r--share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemDelegate.qml2
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ImagePreviewTooltipArea.qml11
-rw-r--r--src/plugins/qmldesigner/components/navigator/navigatortreeview.cpp9
4 files changed, 30 insertions, 6 deletions
diff --git a/share/qtcreator/qmldesigner/itemLibraryQmlSources/Assets.qml b/share/qtcreator/qmldesigner/itemLibraryQmlSources/Assets.qml
index 8173457f73..66760b1a24 100644
--- a/share/qtcreator/qmldesigner/itemLibraryQmlSources/Assets.qml
+++ b/share/qtcreator/qmldesigner/itemLibraryQmlSources/Assets.qml
@@ -665,15 +665,23 @@ Item {
MouseArea {
id: mouseArea
+ property bool allowTooltip: true
+
anchors.fill: parent
hoverEnabled: true
acceptedButtons: Qt.LeftButton | Qt.RightButton
onExited: tooltipBackend.hideTooltip()
- onCanceled: tooltipBackend.hideTooltip()
+ onEntered: allowTooltip = true
+ onCanceled: {
+ tooltipBackend.hideTooltip()
+ allowTooltip = true
+ }
onPositionChanged: tooltipBackend.reposition()
onPressed: (mouse)=> {
forceActiveFocus()
+ allowTooltip = false
+ tooltipBackend.hideTooltip()
var ctrlDown = mouse.modifiers & Qt.ControlModifier
if (mouse.button === Qt.LeftButton) {
if (!root.selectedAssets[filePath] && !ctrlDown)
@@ -698,12 +706,12 @@ Item {
root.contextDir = model.fileDir
root.isDirContextMenu = false
- tooltipBackend.hideTooltip()
contextMenu.popup()
}
}
onReleased: (mouse)=> {
+ allowTooltip = true
if (mouse.button === Qt.LeftButton) {
if (!(mouse.modifiers & Qt.ControlModifier))
root.selectedAssets = {}
@@ -720,7 +728,7 @@ Item {
Timer {
interval: 1000
- running: mouseArea.containsMouse
+ running: mouseArea.containsMouse && mouseArea.allowTooltip
onTriggered: {
if (suffix === ".ttf" || suffix === ".otf") {
tooltipBackend.name = fileName
diff --git a/share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemDelegate.qml b/share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemDelegate.qml
index 03e536676d..130ec2aff6 100644
--- a/share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemDelegate.qml
+++ b/share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemDelegate.qml
@@ -88,6 +88,8 @@ Item {
onShowContextMenu: delegateRoot.showContextMenu()
onPressed: (mouse)=> {
+ allowTooltip = false
+ hide()
if (mouse.button === Qt.LeftButton)
rootView.startDragAndDrop(itemLibraryEntry, mapToGlobal(mouse.x, mouse.y))
}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ImagePreviewTooltipArea.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ImagePreviewTooltipArea.qml
index e354f5a698..11d6d8445e 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ImagePreviewTooltipArea.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ImagePreviewTooltipArea.qml
@@ -30,6 +30,8 @@ import HelperWidgets 2.0
MouseArea {
id: mouseArea
+ property bool allowTooltip: true
+
signal showContextMenu()
function hide()
@@ -38,7 +40,12 @@ MouseArea {
}
onExited: tooltipBackend.hideTooltip()
- onCanceled: tooltipBackend.hideTooltip()
+ onEntered: allowTooltip = true
+ onCanceled: {
+ tooltipBackend.hideTooltip()
+ allowTooltip = true
+ }
+ onReleased: allowTooltip = true
onPositionChanged: tooltipBackend.reposition()
onClicked: function(mouse) {
forceActiveFocus()
@@ -51,7 +58,7 @@ MouseArea {
Timer {
interval: 1000
- running: mouseArea.containsMouse
+ running: mouseArea.containsMouse && mouseArea.allowTooltip
onTriggered: {
tooltipBackend.name = itemName
tooltipBackend.path = componentPath
diff --git a/src/plugins/qmldesigner/components/navigator/navigatortreeview.cpp b/src/plugins/qmldesigner/components/navigator/navigatortreeview.cpp
index d679e6017d..f243341938 100644
--- a/src/plugins/qmldesigner/components/navigator/navigatortreeview.cpp
+++ b/src/plugins/qmldesigner/components/navigator/navigatortreeview.cpp
@@ -293,8 +293,15 @@ void NavigatorTreeView::mousePressEvent(QMouseEvent *event)
void NavigatorTreeView::startDrag(Qt::DropActions supportedActions)
{
- if (m_dragAllowed)
+ if (m_dragAllowed) {
+ if (m_previewToolTip) {
+ // Workaround to ensure tooltip doesn't linger during drag, as drag grabs all mouse
+ // events on some platforms (e.g. mac)
+ m_previewToolTip->hide();
+ m_previewToolTipNodeId = -1;
+ }
QTreeView::startDrag(supportedActions);
+ }
}
}