Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Note to anyone reading. Use "inputRoute.primaryKeyTarget: true" for a robust and simple alternative to this entire mess. Do NOT use the code below. :-)
- keyListeners: [
- KeyListener {
- id: keyListener
- property bool filterFocused: filterBar.focused
- property bool filterSynced: false
- property string inferredText: ''
- onKeyReleased: {
- print('key', event.keycap, event.key, '"' + event.unicode + '"', filterBar.focused, filterBar.dynamicText);
- if (!filterBar.focused) {
- // print('focusing');
- filterBar.requestFocus();
- // filterBar.text = event.unicode;
- }
- if (event.unicode) {
- if (!filterSynced) {
- if (event.unicode == '\b') {
- inferredText = inferredText.slice(0, -1);
- print('BS', '"' + inferredText + '"');
- }
- else
- inferredText = inferredText + event.unicode;
- if (inferredText != filterBar.text) {
- filterBar.text = inferredText;
- print('out-of-sync, force text', inferredText);
- } else {
- filterSynced = true;
- print('synced!');
- }
- } else {
- inferredText = filterBar.text;
- print('tracking', inferredText);
- }
- }
- syncTimer.start();
- }
- onFilterFocusedChanged: {
- print('filter focus?', filterFocused);
- if (!filterFocused)
- filterSynced = false;
- else
- syncTimer.start();
- }
- attachedObjects: [
- QTimer {
- id: syncTimer
- singleShot: true
- interval: 50
- onTimeout: {
- if (keyListener.inferredText == filterBar.text) {
- if (!keyListener.filterSynced)
- print('sync detected');
- keyListener.filterSynced = true;
- }
- }
- }
- ]
- function onDynamicTextChanged() {
- if (filterSynced)
- inferredText = filterBar.text;
- }
- onCreationCompleted: {
- filterBar.dynamicTextChanged.connect(onDynamicTextChanged);
- }
- }
- ]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement