Warning, /frameworks/qqc2-desktop-style/tests/ContextMenuStacking.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 * SPDX-FileCopyrightText: 2023 ivan tkachenko <me@ratijas.tk> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 import QtQuick 0008 import QtQuick.Layouts 0009 import QtQuick.Controls as QQC2 0010 import QtQuick.Templates as T 0011 import org.kde.kirigami as Kirigami 0012 0013 QQC2.ApplicationWindow { 0014 id: root 0015 0016 width: 400 0017 height: 400 0018 visible: true 0019 0020 Kirigami.SelectableLabel { 0021 anchors { 0022 top: parent.top 0023 left: parent.left 0024 right: parent.right 0025 margins: Kirigami.Units.largeSpacing 0026 topMargin: Kirigami.Units.gridUnit * 3 0027 } 0028 text: `<ol> 0029 <li>TextField is parented to an item in Popup A.</li> 0030 <li>Context menu opens for the TextField, inheriting z index of Popup A.</li> 0031 <li>Then TextField is moved to a Popup B which is stacked much higher (e.g. in Notification layer).</li> 0032 <li>Context menu is requested again for the same TextField.</li> 0033 <li>Menu should inherit new z index and be stacked on top of Popup B.</li> 0034 </ol>` 0035 } 0036 0037 QQC2.TextField { 0038 id: textField 0039 anchors.top: parent.top 0040 anchors.right: parent.right 0041 anchors.margins: Kirigami.Units.largeSpacing 0042 placeholderText: "Right click me" 0043 } 0044 0045 component ControlPanel: Column { 0046 anchors.left: parent.left 0047 anchors.bottom: parent.bottom 0048 anchors.margins: Kirigami.Units.largeSpacing 0049 spacing: Kirigami.Units.smallSpacing 0050 0051 QQC2.Button { 0052 text: "Move TextField to Popup A" 0053 onClicked: { 0054 textField.parent = placeholderA; 0055 } 0056 } 0057 QQC2.Button { 0058 text: "Open Popup A" 0059 onClicked: { 0060 popupA.open(); 0061 } 0062 } 0063 QQC2.Button { 0064 text: "Move TextField to Popup B" 0065 onClicked: { 0066 textField.parent = placeholderB; 0067 } 0068 } 0069 QQC2.Button { 0070 text: "Open Popup B" 0071 onClicked: { 0072 popupB.open(); 0073 } 0074 } 0075 } 0076 0077 ControlPanel {} 0078 0079 QQC2.Popup { 0080 id: popupA 0081 0082 Kirigami.OverlayZStacking.layer: Kirigami.OverlayZStacking.Dialog 0083 z: Kirigami.OverlayZStacking.z 0084 0085 parent: root.QQC2.Overlay.overlay 0086 x: 0 0087 y: 0 0088 width: 300 0089 height: 300 0090 margins: Kirigami.Units.gridUnit 0091 closePolicy: QQC2.Popup.NoAutoClose | QQC2.Popup.CloseOnPressOutside 0092 modal: false 0093 0094 contentItem: Item { 0095 id: placeholderA 0096 0097 ControlPanel {} 0098 } 0099 } 0100 0101 QQC2.Popup { 0102 id: popupB 0103 0104 Kirigami.OverlayZStacking.layer: Kirigami.OverlayZStacking.Notification 0105 z: Kirigami.OverlayZStacking.z 0106 0107 parent: root.QQC2.Overlay.overlay 0108 anchors.centerIn: parent 0109 width: 300 0110 height: 300 0111 margins: Kirigami.Units.gridUnit 0112 closePolicy: QQC2.Popup.NoAutoClose | QQC2.Popup.CloseOnPressOutside 0113 modal: false 0114 0115 contentItem: Item { 0116 id: placeholderB 0117 0118 ControlPanel {} 0119 } 0120 } 0121 }