aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-10-19 09:25:03 +0200
committerDanilo M. <danix@danix.xyz>2026-10-19 09:25:03 +0200
commit9ffe93f709ba376fc169a8cf20c55d4ba077baea (patch)
tree1405aa9aa8a52a83383a97c97f8521863f0476f3
parentd30518748d926b380557dd99b2e5bcb083aafb0a (diff)
downloadquickshell-9ffe93f709ba376fc169a8cf20c55d4ba077baea.tar.gz
quickshell-9ffe93f709ba376fc169a8cf20c55d4ba077baea.zip
desktop: Tab moves between the hand-rolled text fields
A bare TextInput defaults activeFocusOnTab to false, unlike the Controls TextField some pages use, so Tab skipped every field built from one: the settings search, Field, the qtmaildir, git, autostart, assistant, OBS, user, VM and network rows, and the calendar editor. Multi-line TextEdits stay out of the chain. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
-rw-r--r--AGENTS.md4
-rw-r--r--desktop/Settings.qml2
-rw-r--r--desktop/island/calendar/EventEditor.qml1
-rw-r--r--desktop/modules/appearance/Field.qml2
-rw-r--r--desktop/modules/assistant/AssistantPage.qml1
-rw-r--r--desktop/modules/assistant/PresetsPage.qml1
-rw-r--r--desktop/modules/autostart/AutostartPage.qml1
-rw-r--r--desktop/modules/git/GitPage.qml3
-rw-r--r--desktop/modules/network/NetworkRow.qml2
-rw-r--r--desktop/modules/obs/ObsScenesPage.qml4
-rw-r--r--desktop/modules/qtmaildir/AccountsPage.qml1
-rw-r--r--desktop/modules/qtmaildir/Setting.qml1
-rw-r--r--desktop/modules/qtmaildir/TagsKeysPage.qml1
-rw-r--r--desktop/modules/user/UserPage.qml1
-rw-r--r--desktop/modules/vm/VmPage.qml2
15 files changed, 27 insertions, 0 deletions
diff --git a/AGENTS.md b/AGENTS.md
index 2b6315f..e17c65e 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -204,6 +204,10 @@ changing that component. The ones that generalise:
- **`FloatingWindow.maximized` works under Hyprland.** Setting it fills the
monitor and clearing it restores the old size, checked by eye; the settings
window's titlebar row uses it, since Hyprland draws no decorations.
+- **A bare `TextInput` is not in the Tab chain.** `activeFocusOnTab` defaults
+ to false on it, unlike a Controls `TextField`, so every hand-rolled field
+ carries `activeFocusOnTab: true` or Tab skips it. A new one needs it too.
+ Multi-line `TextEdit`s are left out on purpose.
- **A QML method cannot be named `escape`.** It shadows the global JS
function, and the file fails with `Illegal method name` at load, which a
hot reload reports as the whole island being unavailable. The island's
diff --git a/desktop/Settings.qml b/desktop/Settings.qml
index c6d4b19..607d6a3 100644
--- a/desktop/Settings.qml
+++ b/desktop/Settings.qml
@@ -173,6 +173,8 @@ Scope {
color: Theme.surface
TextInput {
+
+ activeFocusOnTab: true
id: searchIn
anchors { fill: parent; leftMargin: 10; rightMargin: 30 }
verticalAlignment: TextInput.AlignVCenter
diff --git a/desktop/island/calendar/EventEditor.qml b/desktop/island/calendar/EventEditor.qml
index 7f3ad2a..510c844 100644
--- a/desktop/island/calendar/EventEditor.qml
+++ b/desktop/island/calendar/EventEditor.qml
@@ -96,6 +96,7 @@ Column {
radius: 8
color: Theme.surface
TextInput {
+ activeFocusOnTab: true
id: ti
anchors { fill: parent; leftMargin: 8; rightMargin: 8 }
verticalAlignment: TextInput.AlignVCenter
diff --git a/desktop/modules/appearance/Field.qml b/desktop/modules/appearance/Field.qml
index ad6af85..1f55870 100644
--- a/desktop/modules/appearance/Field.qml
+++ b/desktop/modules/appearance/Field.qml
@@ -37,6 +37,8 @@ Rectangle {
}
TextInput {
+
+ activeFocusOnTab: true
id: input
anchors.fill: parent
anchors.leftMargin: 6
diff --git a/desktop/modules/assistant/AssistantPage.qml b/desktop/modules/assistant/AssistantPage.qml
index 832e9be..2970784 100644
--- a/desktop/modules/assistant/AssistantPage.qml
+++ b/desktop/modules/assistant/AssistantPage.qml
@@ -63,6 +63,7 @@ Column {
onValueChanged: if (ti.text.trim() !== field.value.trim()) ti.text = field.value
onBadChanged: if (!field.bad) ti.text = field.value
TextInput {
+ activeFocusOnTab: true
id: ti
anchors { fill: parent; leftMargin: 10; rightMargin: 10 }
verticalAlignment: TextInput.AlignVCenter
diff --git a/desktop/modules/assistant/PresetsPage.qml b/desktop/modules/assistant/PresetsPage.qml
index 56d507c..7889047 100644
--- a/desktop/modules/assistant/PresetsPage.qml
+++ b/desktop/modules/assistant/PresetsPage.qml
@@ -70,6 +70,7 @@ Column {
border.color: Theme.red
onValueChanged: if (ti.text !== field.value) ti.text = field.value
TextInput {
+ activeFocusOnTab: true
id: ti
anchors { fill: parent; leftMargin: 10; rightMargin: 10 }
verticalAlignment: TextInput.AlignVCenter
diff --git a/desktop/modules/autostart/AutostartPage.qml b/desktop/modules/autostart/AutostartPage.qml
index e0fa2c9..2e6df9c 100644
--- a/desktop/modules/autostart/AutostartPage.qml
+++ b/desktop/modules/autostart/AutostartPage.qml
@@ -179,6 +179,7 @@ Column {
radius: 8
color: Theme.surface
TextInput {
+ activeFocusOnTab: true
id: ti
anchors { fill: parent; leftMargin: 10; rightMargin: 10 }
verticalAlignment: TextInput.AlignVCenter
diff --git a/desktop/modules/git/GitPage.qml b/desktop/modules/git/GitPage.qml
index c5d04d9..b1b1d9d 100644
--- a/desktop/modules/git/GitPage.qml
+++ b/desktop/modules/git/GitPage.qml
@@ -131,6 +131,7 @@ Column {
radius: 8
color: Theme.surface
TextInput {
+ activeFocusOnTab: true
id: keyIn
anchors { fill: parent; leftMargin: 10; rightMargin: 10 }
verticalAlignment: TextInput.AlignVCenter
@@ -159,6 +160,7 @@ Column {
radius: 8
color: Theme.surface
TextInput {
+ activeFocusOnTab: true
id: valIn
anchors { fill: parent; leftMargin: 10; rightMargin: 10 }
verticalAlignment: TextInput.AlignVCenter
@@ -268,6 +270,7 @@ Column {
// ponytail: one line; a value holding a newline (a long
// alias) shows joined and is best edited in the editor.
TextInput {
+ activeFocusOnTab: true
id: input
anchors { fill: parent; leftMargin: 10; rightMargin: 10 }
verticalAlignment: TextInput.AlignVCenter
diff --git a/desktop/modules/network/NetworkRow.qml b/desktop/modules/network/NetworkRow.qml
index 3afab9a..ebe3493 100644
--- a/desktop/modules/network/NetworkRow.qml
+++ b/desktop/modules/network/NetworkRow.qml
@@ -94,6 +94,8 @@ Rectangle {
visible: row.prompting
TextInput {
+
+ activeFocusOnTab: true
id: pskField
width: parent.width - connectBtn.width - parent.spacing
echoMode: TextInput.Password
diff --git a/desktop/modules/obs/ObsScenesPage.qml b/desktop/modules/obs/ObsScenesPage.qml
index 0fb06a9..b689c72 100644
--- a/desktop/modules/obs/ObsScenesPage.qml
+++ b/desktop/modules/obs/ObsScenesPage.qml
@@ -86,6 +86,8 @@ Column {
readonly property bool invalid: value !== "" && !SceneIcons.validGlyph(value)
TextInput {
+
+ activeFocusOnTab: true
anchors.fill: parent
horizontalAlignment: TextInput.AlignHCenter
verticalAlignment: TextInput.AlignVCenter
@@ -124,6 +126,8 @@ Column {
readonly property bool invalid: value !== "" && !SceneIcons.validGlyph(value)
TextInput {
+
+ activeFocusOnTab: true
anchors.fill: parent
horizontalAlignment: TextInput.AlignHCenter
verticalAlignment: TextInput.AlignVCenter
diff --git a/desktop/modules/qtmaildir/AccountsPage.qml b/desktop/modules/qtmaildir/AccountsPage.qml
index 8a40333..ae56e34 100644
--- a/desktop/modules/qtmaildir/AccountsPage.qml
+++ b/desktop/modules/qtmaildir/AccountsPage.qml
@@ -96,6 +96,7 @@ Column {
radius: 8
color: Theme.surface
TextInput {
+ activeFocusOnTab: true
anchors { fill: parent; leftMargin: 10; rightMargin: 10 }
verticalAlignment: TextInput.AlignVCenter
clip: true
diff --git a/desktop/modules/qtmaildir/Setting.qml b/desktop/modules/qtmaildir/Setting.qml
index 78103bf..d29ee6e 100644
--- a/desktop/modules/qtmaildir/Setting.qml
+++ b/desktop/modules/qtmaildir/Setting.qml
@@ -89,6 +89,7 @@ Column {
radius: 8
color: Theme.surface
TextInput {
+ activeFocusOnTab: true
id: ti
anchors { fill: parent; leftMargin: 10; rightMargin: 10 }
verticalAlignment: TextInput.AlignVCenter
diff --git a/desktop/modules/qtmaildir/TagsKeysPage.qml b/desktop/modules/qtmaildir/TagsKeysPage.qml
index 709e943..1f5a31c 100644
--- a/desktop/modules/qtmaildir/TagsKeysPage.qml
+++ b/desktop/modules/qtmaildir/TagsKeysPage.qml
@@ -57,6 +57,7 @@ Column {
radius: 8
color: Theme.surface
TextInput {
+ activeFocusOnTab: true
id: ti
anchors { fill: parent; leftMargin: 10; rightMargin: 10 }
verticalAlignment: TextInput.AlignVCenter
diff --git a/desktop/modules/user/UserPage.qml b/desktop/modules/user/UserPage.qml
index abcb116..da1b3bf 100644
--- a/desktop/modules/user/UserPage.qml
+++ b/desktop/modules/user/UserPage.qml
@@ -303,6 +303,7 @@ Column {
radius: 8
color: field.derived ? Qt.alpha(Theme.surface, 0.4) : Theme.surface
TextInput {
+ activeFocusOnTab: true
anchors { fill: parent; leftMargin: 10; rightMargin: 10 }
verticalAlignment: TextInput.AlignVCenter
clip: true
diff --git a/desktop/modules/vm/VmPage.qml b/desktop/modules/vm/VmPage.qml
index 9fca5f5..4f9e0aa 100644
--- a/desktop/modules/vm/VmPage.qml
+++ b/desktop/modules/vm/VmPage.qml
@@ -308,6 +308,8 @@ Column {
}
TextInput {
+
+ activeFocusOnTab: true
id: nameField
visible: needsTyping
width: 260