Flip Elsewhen between Fahrenheit and Celsius with Alt+T (#13450)

* Flip Elsewhen between Fahrenheit and Celsius with Shift+T

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Flip Elsewhen's temperature units with Alt+T instead of Shift+T

PanelKeyCatcher's textKey now carries the held modifiers, which is how the
panel tells Alt+T from T. Existing handlers take only the text and are
unaffected.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
David Heinemeier HanssonandClaude Opus 5.5 authored and GitHub committed 2026-09-27 22:19:31 +02:00
1 parent ed5837a05b
commit 349ecc09a2
4 files changed
+76 -5

No files matched your search

+23
View File
@@ -0,0 +1,23 @@
#!/bin/bash
set -euo pipefail
source "$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)/base-test.sh"
# /usr/bin/qmltestrunner is the Qt 5 binary, which exits 0 having run nothing.
qml_test_runner=""
for candidate in /usr/lib/qt6/bin/qmltestrunner /usr/lib/qt6/qmltestrunner; do
if [[ -x $candidate ]]; then
qml_test_runner=$candidate
break
fi
done
if [[ -z $qml_test_runner ]]; then
skip "qt6 qmltestrunner not found; skipping panel key catcher tests"
exit 0
fi
output=$(QT_QPA_PLATFORM=offscreen QT_QUICK_BACKEND=software "$qml_test_runner" -input "$SHELL_TEST_DIR/panel-key-catcher/qml" -o -,txt 2>&1) ||
fail "panel key catcher passes modifiers with text keys" "$output"
pass "panel key catcher passes modifiers with text keys"
@@ -0,0 +1,45 @@
import QtQuick
import QtTest
import "../../../../shell/Ui"
// Text keys carry their modifiers, so a panel can tell Alt+T from T.
Item {
id: root
width: 100
height: 100
property string lastText: ""
property int lastModifiers: -1
PanelKeyCatcher {
id: catcher
anchors.fill: parent
onTextKey: function(text, modifiers) {
root.lastText = text
root.lastModifiers = modifiers
}
}
TestCase {
name: "PanelKeyCatcherModifiers"
when: windowShown
function init() {
catcher.forceActiveFocus()
root.lastText = ""
root.lastModifiers = -1
}
function test_plainLetterHasNoModifiers() {
keyClick(Qt.Key_T)
compare(root.lastText, "t")
compare(root.lastModifiers & Qt.AltModifier, 0)
}
function test_altLetterCarriesAlt() {
keyClick(Qt.Key_T, Qt.AltModifier)
compare(root.lastText.toLowerCase(), "t")
verify(root.lastModifiers & Qt.AltModifier)
}
}
}