mirror of
https://github.com/rustdesk/rustdesk.git
synced 2026-05-03 08:11:03 +00:00
c8ba99d1a1
* flutter: shift after one shot IME capitalization Signed-off-by: Amirhossein Akhlaghpour <m9.akhlaghpoor@gmail.com> * flutter: clarify stale mobile shift handling Signed-off-by: Amirhossein Akhlaghpour <m9.akhlaghpoor@gmail.com> * fix(android): gboard shift stuck Signed-off-by: fufesou <linlong1266@gmail.com> * fix(android): gboard shift stuck, remove unused param Signed-off-by: fufesou <linlong1266@gmail.com> * fix(android): gboard shift stuck, release shift before sending events Signed-off-by: fufesou <linlong1266@gmail.com> * chore(flutter): document stale mobile shift release flow Signed-off-by: Amirhossein Akhlaghpour <m9.akhlaghpoor@gmail.com> --------- Signed-off-by: Amirhossein Akhlaghpour <m9.akhlaghpoor@gmail.com> Signed-off-by: fufesou <linlong1266@gmail.com> Co-authored-by: fufesou <linlong1266@gmail.com>
126 lines
3.3 KiB
Dart
126 lines
3.3 KiB
Dart
import 'package:flutter/services.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:flutter_hbb/models/input_modifier_utils.dart';
|
|
|
|
void main() {
|
|
group('shouldReleaseStaleMobileShift', () {
|
|
test('does not release when cached shift is already false', () {
|
|
expect(
|
|
shouldReleaseStaleMobileShift(
|
|
isMobile: true,
|
|
cachedShiftPressed: false,
|
|
actualShiftPressed: false,
|
|
logicalKey: LogicalKeyboardKey.keyD,
|
|
hasTrackedShiftKeyDown: true,
|
|
),
|
|
isFalse,
|
|
);
|
|
});
|
|
|
|
test('releases one-shot mobile shift after a text key', () {
|
|
expect(
|
|
shouldReleaseStaleMobileShift(
|
|
isMobile: true,
|
|
cachedShiftPressed: true,
|
|
actualShiftPressed: false,
|
|
logicalKey: LogicalKeyboardKey.keyD,
|
|
hasTrackedShiftKeyDown: true,
|
|
),
|
|
isTrue,
|
|
);
|
|
});
|
|
|
|
test('does not release manually toggled shift without tracked key down',
|
|
() {
|
|
expect(
|
|
shouldReleaseStaleMobileShift(
|
|
isMobile: true,
|
|
cachedShiftPressed: true,
|
|
actualShiftPressed: false,
|
|
logicalKey: LogicalKeyboardKey.keyD,
|
|
hasTrackedShiftKeyDown: false,
|
|
),
|
|
isFalse,
|
|
);
|
|
});
|
|
|
|
test('does not release when shift is still physically pressed', () {
|
|
expect(
|
|
shouldReleaseStaleMobileShift(
|
|
isMobile: true,
|
|
cachedShiftPressed: true,
|
|
actualShiftPressed: true,
|
|
logicalKey: LogicalKeyboardKey.keyD,
|
|
hasTrackedShiftKeyDown: true,
|
|
),
|
|
isFalse,
|
|
);
|
|
});
|
|
|
|
test('does not release on non-mobile platforms', () {
|
|
expect(
|
|
shouldReleaseStaleMobileShift(
|
|
isMobile: false,
|
|
cachedShiftPressed: true,
|
|
actualShiftPressed: false,
|
|
logicalKey: LogicalKeyboardKey.keyD,
|
|
hasTrackedShiftKeyDown: true,
|
|
),
|
|
isFalse,
|
|
);
|
|
});
|
|
|
|
test('releases on enter key', () {
|
|
expect(
|
|
shouldReleaseStaleMobileShift(
|
|
isMobile: true,
|
|
cachedShiftPressed: true,
|
|
actualShiftPressed: false,
|
|
logicalKey: LogicalKeyboardKey.enter,
|
|
hasTrackedShiftKeyDown: true,
|
|
),
|
|
isTrue,
|
|
);
|
|
});
|
|
|
|
test('releases on arrow key', () {
|
|
expect(
|
|
shouldReleaseStaleMobileShift(
|
|
isMobile: true,
|
|
cachedShiftPressed: true,
|
|
actualShiftPressed: false,
|
|
logicalKey: LogicalKeyboardKey.arrowLeft,
|
|
hasTrackedShiftKeyDown: true,
|
|
),
|
|
isTrue,
|
|
);
|
|
});
|
|
|
|
test('does not release on modifier events', () {
|
|
expect(
|
|
shouldReleaseStaleMobileShift(
|
|
isMobile: true,
|
|
cachedShiftPressed: true,
|
|
actualShiftPressed: false,
|
|
logicalKey: LogicalKeyboardKey.shiftLeft,
|
|
hasTrackedShiftKeyDown: true,
|
|
),
|
|
isFalse,
|
|
);
|
|
});
|
|
|
|
test('does not release on shiftRight modifier events', () {
|
|
expect(
|
|
shouldReleaseStaleMobileShift(
|
|
isMobile: true,
|
|
cachedShiftPressed: true,
|
|
actualShiftPressed: false,
|
|
logicalKey: LogicalKeyboardKey.shiftRight,
|
|
hasTrackedShiftKeyDown: true,
|
|
),
|
|
isFalse,
|
|
);
|
|
});
|
|
});
|
|
}
|