From d83a46461587c9bc0913e04a903cc6f94d983387 Mon Sep 17 00:00:00 2001 From: Mahmoud Badri Date: Fri, 16 Feb 2024 14:57:41 +0200 Subject: [PATCH] EffectComposer: Fix scroll to end when adding a node Change-Id: Id13a825cedfe98500337d1914bda064c2f5e3bb3 Reviewed-by: Miikka Heikkinen --- .../effectComposerQmlSources/EffectComposer.qml | 10 ++++++++++ .../effectComposerQmlSources/EffectNodesComboBox.qml | 3 +++ 2 files changed, 13 insertions(+) diff --git a/share/qtcreator/qmldesigner/effectComposerQmlSources/EffectComposer.qml b/share/qtcreator/qmldesigner/effectComposerQmlSources/EffectComposer.qml index 6e72a258cbb..fabed985893 100644 --- a/share/qtcreator/qmldesigner/effectComposerQmlSources/EffectComposer.qml +++ b/share/qtcreator/qmldesigner/effectComposerQmlSources/EffectComposer.qml @@ -145,6 +145,8 @@ ColumnLayout { color: StudioTheme.Values.themeToolbarBackground EffectNodesComboBox { + id: nodesComboBox + mainRoot: root anchors.verticalCenter: parent.verticalCenter @@ -197,6 +199,14 @@ ColumnLayout { clip: true interactive: !HelperWidgets.Controller.contextMenuOpened + onContentHeightChanged: { + if (nodesComboBox.nodeJustAdded && scrollView.contentItem.height > scrollView.height) { + let lastItemH = repeater.itemAt(repeater.count - 1).height + scrollView.contentY = scrollView.contentItem.height - lastItemH + nodesComboBox.nodeJustAdded = false + } + } + Column { id: nodesCol width: scrollView.width diff --git a/share/qtcreator/qmldesigner/effectComposerQmlSources/EffectNodesComboBox.qml b/share/qtcreator/qmldesigner/effectComposerQmlSources/EffectNodesComboBox.qml index dbab36051d2..7051a9292fc 100644 --- a/share/qtcreator/qmldesigner/effectComposerQmlSources/EffectNodesComboBox.qml +++ b/share/qtcreator/qmldesigner/effectComposerQmlSources/EffectNodesComboBox.qml @@ -22,6 +22,8 @@ StudioControls.ComboBox { readonly property int popupHeight: Math.min(800, row.height + 2) + property bool nodeJustAdded: false + function calculateWindowGeometry() { var globalPos = EffectComposerBackend.rootView.globalPos(mainRoot.mapFromItem(root, 0, 0)) var screenRect = EffectComposerBackend.rootView.screenRect(); @@ -117,6 +119,7 @@ StudioControls.ComboBox { onAddEffectNode: (nodeQenPath) => { EffectComposerBackend.rootView.addEffectNode(modelData.nodeQenPath) root.popup.close() + root.nodeJustAdded = true } } }