Details
-
Bug
-
Resolution: Done
-
P2: Important
-
5.12.3, 5.15.4, 6.2.0 Beta1
-
-
61ee61d8c977ecf876ce1d364cff634467b562a9 (qt/qtdeclarative/dev) fae2460e925fd7baab85cf567dd9c6093647f4b9 (qt/qtdeclarative/6.2)
Description
Controls keep the intital focusReason. Tested with ComboBox and SpinBox.
- Run the example, tab once through all items. ComboBox and SpinBox should have the focusReason: Qt.TabFocusReason.
- Back tab through all items, only the TextInput will change to Qt.BacktabFocusReason, other items keep the Qt.TabFocusReason.
- Click on all the items, ComboBox and SpinBox keep their previous focusReason. TextInput changes to Qt.OtherFocusReason instead of Qt.MouseFocusReason.
- Restart the example, use the mouse to click on all items.
- Tab through all items, ComboBox and SpinBox keep their intital focusReason.
Note: Clicking on the drop down indicator of the ComboBox will change the focusReason.
import QtQuick 2.12 import QtQuick.Window 2.12 import QtQuick.Controls 2.12 Window { visible: true width: 640 height: 480 title: "Focus Reason Demo" Grid { columns: 2 anchors.top: parent.top anchors.topMargin: 10 anchors.horizontalCenter: parent.horizontalCenter spacing: 10 Text { text: "Component" font.pixelSize: 16 } Text { text: "Focus Reason" font.pixelSize: 16 } ComboBox { editable: true model: ["Banana", "Apple", "Coconut", "Kiwi", "Mango #5", "Pomelo"] onEditTextChanged: console.log("onEditTextChanged: " + editText) onAccepted: console.log("onAccepted.\neditText: " + editText +"\ncurrentText: " + currentText + "\ncurrentIndex: " + currentIndex + "\n") onVisualFocusChanged: { console.log("ComboBox\n\tonVisualFocusChanged: " + visualFocus) } onActiveFocusChanged: { console.log("ComboBox\n\tonActiveFocusChanged: " + activeFocus + "\n\tfocusReason: " + enumToString(focusReason)) comboBoxReason.text = enumToString(focusReason) } contentItem.onActiveFocusChanged: { console.log("ComboBoxTextInput\n\tonActiveFocusChanged: " + activeFocus + "\n\tfocusReason: " + enumToString(focusReason)) comboBoxInputReason.text = enumToString(focusReason) } } Grid { columns: 2 Text { text: "ComboBox: " } Text { id: comboBoxReason text: "None" } Text { text: "Input: " } Text { id: comboBoxInputReason text: "None" } } SpinBox { from: 0 to: 100 value: 20 editable: true activeFocusOnTab: true onVisualFocusChanged: { console.log("SpinBox\n\tonVisualFocusChanged: " + visualFocus) } onActiveFocusChanged: { console.log("SpinBox\n\tonActiveFocusChanged: " + activeFocus + "\n\tfocusReason: " + enumToString(focusReason)) spinBoxReason.text = enumToString(focusReason) } contentItem.onActiveFocusChanged: { console.log("SpinBoxTextInput\n\tonActiveFocusChanged: " + activeFocus + "\n\tfocusReason: " + enumToString(focusReason)) spinBoxInputReason.text = enumToString(focusReason) } } Grid { columns: 2 Text { text: "SpinBox: " } Text { id: spinBoxReason text: "None" } Text { text: "Input: " } Text { id: spinBoxInputReason text: "None" } } TextField { text: "test123" onActiveFocusChanged: { console.log("TextInput\n\tonActiveFocusChanged: " + activeFocus + "\n\tfocusReason: " + enumToString(focusReason)) textFieldReason.text = enumToString(focusReason) } } Text { id: textFieldReason text: "None" } } function enumToString(r) { switch (r) { case Qt.MouseFocusReason: return "Qt.MouseFocusReason"; case Qt.TabFocusReason: return "Qt.TabFocusReason"; case Qt.BacktabFocusReason: return "Qt.BacktabFocusReason"; case Qt.ActiveWindowFocusReason: return "Qt.ActiveWindowFocusReason"; case Qt.PopupFocusReason: return "Qt.PopupFocusReason"; case Qt.ShortcutFocusReason: return "Qt.ShortcutFocusReason"; case Qt.MenuBarFocusReason: return "Qt.MenuBarFocusReason"; case Qt.OtherFocusReason: return "Qt.OtherFocusReason"; default: return "UNKNOWN"; } } }
Attachments
Issue Links
- resulted in
-
QTBUG-95327 Move QQuickControl::focusReason into QQuickItem
-
- Reported
-