@@ -399,71 +399,64 @@ void TextInputChannel::SendStateUpdate(const flutter::TextInputModel& model) {
399
399
channel_->InvokeMethod (kUpdateEditingStateMethod , std::move (args));
400
400
}
401
401
402
- bool TextInputChannel::FilterEvent (Ecore_Event_Key* keyDownEvent ) {
402
+ bool TextInputChannel::FilterEvent (Ecore_Event_Key* event ) {
403
403
bool handled = false ;
404
404
405
405
#ifdef WEARABLE_PROFILE
406
406
// Hardware keyboard not supported on watches.
407
- bool isIME = true ;
407
+ bool is_ime = true ;
408
408
#else
409
- bool isIME = strcmp (ecore_device_name_get (keyDownEvent ->dev ), " ime" ) == 0 ;
409
+ bool is_ime = strcmp (ecore_device_name_get (event ->dev ), " ime" ) == 0 ;
410
410
#endif
411
411
412
- Ecore_IMF_Event_Key_Down ecoreKeyDownEvent;
413
- ecoreKeyDownEvent.keyname = keyDownEvent->keyname ;
414
- ecoreKeyDownEvent.key = keyDownEvent->key ;
415
- ecoreKeyDownEvent.string = keyDownEvent->string ;
416
- ecoreKeyDownEvent.compose = keyDownEvent->compose ;
417
- ecoreKeyDownEvent.timestamp = keyDownEvent->timestamp ;
418
- ecoreKeyDownEvent.modifiers =
419
- EcoreInputModifierToEcoreIMFModifier (keyDownEvent->modifiers );
420
- ecoreKeyDownEvent.locks =
421
- EcoreInputModifierToEcoreIMFLock (keyDownEvent->modifiers );
422
- ecoreKeyDownEvent.dev_name = isIME ? " ime" : " " ;
423
- ecoreKeyDownEvent.keycode = keyDownEvent->keycode ;
424
-
425
- if (isIME && strcmp (keyDownEvent->key , " Select" ) == 0 ) {
412
+ Ecore_IMF_Event_Key_Down imf_event;
413
+ imf_event.keyname = event->keyname ;
414
+ imf_event.key = event->key ;
415
+ imf_event.string = event->string ;
416
+ imf_event.compose = event->compose ;
417
+ imf_event.timestamp = event->timestamp ;
418
+ imf_event.modifiers = EcoreInputModifierToEcoreIMFModifier (event->modifiers );
419
+ imf_event.locks = EcoreInputModifierToEcoreIMFLock (event->modifiers );
420
+ imf_event.dev_name = is_ime ? " ime" : " " ;
421
+ imf_event.keycode = event->keycode ;
422
+
423
+ if (is_ime && strcmp (event->key , " Select" ) == 0 ) {
426
424
if (engine_->device_profile == DeviceProfile::kWearable ) {
427
425
// FIXME: for wearable
428
426
in_select_mode_ = true ;
429
427
FT_LOGI (" Set select mode[true]" );
430
428
}
431
429
}
432
430
433
- if (isIME) {
434
- if (!strcmp (keyDownEvent->key , " Left" ) ||
435
- !strcmp (keyDownEvent->key , " Right" ) ||
436
- !strcmp (keyDownEvent->key , " Up" ) ||
437
- !strcmp (keyDownEvent->key , " Down" ) ||
438
- !strcmp (keyDownEvent->key , " End" ) ||
439
- !strcmp (keyDownEvent->key , " Home" ) ||
440
- !strcmp (keyDownEvent->key , " BackSpace" ) ||
441
- !strcmp (keyDownEvent->key , " Delete" ) ||
442
- (!strcmp (keyDownEvent->key , " Select" ) && !in_select_mode_)) {
431
+ if (is_ime) {
432
+ if (!strcmp (event->key , " Left" ) || !strcmp (event->key , " Right" ) ||
433
+ !strcmp (event->key , " Up" ) || !strcmp (event->key , " Down" ) ||
434
+ !strcmp (event->key , " End" ) || !strcmp (event->key , " Home" ) ||
435
+ !strcmp (event->key , " BackSpace" ) || !strcmp (event->key , " Delete" ) ||
436
+ (!strcmp (event->key , " Select" ) && !in_select_mode_)) {
443
437
// Force redirect to fallback!(especially on TV)
444
438
// If you don't do this, it affects the input panel.
445
439
// For example, when the left key of the input panel is pressed, the focus
446
440
// of the input panel is shifted to left!
447
441
// What we want is to move only the cursor on the text editor.
448
442
ResetCurrentContext ();
449
- FT_LOGW (" Force redirect IME key-event[%s] to fallback" ,
450
- keyDownEvent->keyname );
443
+ FT_LOGW (" Force redirect IME key-event[%s] to fallback" , event->keyname );
451
444
return false ;
452
445
}
453
446
}
454
447
455
448
handled = ecore_imf_context_filter_event (
456
449
imf_context_, ECORE_IMF_EVENT_KEY_DOWN,
457
- reinterpret_cast <Ecore_IMF_Event*>(&ecoreKeyDownEvent ));
450
+ reinterpret_cast <Ecore_IMF_Event*>(&imf_event ));
458
451
459
452
if (handled) {
460
- last_handled_ecore_event_keyname_ = keyDownEvent ->keyname ;
453
+ last_handled_ecore_event_keyname_ = event ->keyname ;
461
454
}
462
455
463
- FT_LOGI (" The %skey-event[%s] are%s filtered" , isIME ? " IME " : " " ,
464
- keyDownEvent ->keyname , handled ? " " : " not" );
456
+ FT_LOGI (" The %skey-event[%s] are%s filtered" , is_ime ? " IME " : " " ,
457
+ event ->keyname , handled ? " " : " not" );
465
458
466
- if (!handled && !strcmp (keyDownEvent ->key , " Return" ) && in_select_mode_ &&
459
+ if (!handled && !strcmp (event ->key , " Return" ) && in_select_mode_ &&
467
460
engine_->device_profile == DeviceProfile::kWearable ) {
468
461
in_select_mode_ = false ;
469
462
handled = true ;
@@ -473,61 +466,60 @@ bool TextInputChannel::FilterEvent(Ecore_Event_Key* keyDownEvent) {
473
466
return handled;
474
467
}
475
468
476
- void TextInputChannel::NonIMFFallback (Ecore_Event_Key* keyDownEvent ) {
477
- FT_LOGI (" NonIMFFallback key name [%s]" , keyDownEvent ->keyname );
469
+ void TextInputChannel::NonIMFFallback (Ecore_Event_Key* event ) {
470
+ FT_LOGI (" NonIMFFallback key name [%s]" , event ->keyname );
478
471
479
472
// For mobile, fix me!
480
473
if (engine_->device_profile == DeviceProfile::kMobile &&
481
474
edit_status_ == EditStatus::kPreeditEnd ) {
482
475
SetEditStatus (EditStatus::kNone );
483
- FT_LOGW (" Ignore key-event[%s]!" , keyDownEvent ->keyname );
476
+ FT_LOGW (" Ignore key-event[%s]!" , event ->keyname );
484
477
return ;
485
478
}
486
479
487
- bool select = !strcmp (keyDownEvent ->key , " Select" );
480
+ bool select = !strcmp (event ->key , " Select" );
488
481
bool is_filtered = true ;
489
- if (!strcmp (keyDownEvent ->key , " Left" )) {
482
+ if (!strcmp (event ->key , " Left" )) {
490
483
if (active_model_ && active_model_->MoveCursorBack ()) {
491
484
SendStateUpdate (*active_model_);
492
485
}
493
- } else if (!strcmp (keyDownEvent ->key , " Right" )) {
486
+ } else if (!strcmp (event ->key , " Right" )) {
494
487
if (active_model_ && active_model_->MoveCursorForward ()) {
495
488
SendStateUpdate (*active_model_);
496
489
}
497
- } else if (!strcmp (keyDownEvent ->key , " End" )) {
490
+ } else if (!strcmp (event ->key , " End" )) {
498
491
if (active_model_) {
499
492
active_model_->MoveCursorToEnd ();
500
493
SendStateUpdate (*active_model_);
501
494
}
502
- } else if (!strcmp (keyDownEvent ->key , " Home" )) {
495
+ } else if (!strcmp (event ->key , " Home" )) {
503
496
if (active_model_) {
504
497
active_model_->MoveCursorToBeginning ();
505
498
SendStateUpdate (*active_model_);
506
499
}
507
- } else if (!strcmp (keyDownEvent ->key , " BackSpace" )) {
500
+ } else if (!strcmp (event ->key , " BackSpace" )) {
508
501
if (active_model_ && active_model_->Backspace ()) {
509
502
SendStateUpdate (*active_model_);
510
503
}
511
- } else if (!strcmp (keyDownEvent ->key , " Delete" )) {
504
+ } else if (!strcmp (event ->key , " Delete" )) {
512
505
if (active_model_ && active_model_->Delete ()) {
513
506
SendStateUpdate (*active_model_);
514
507
}
515
- } else if (!strcmp (keyDownEvent->key , " Return" ) ||
516
- (select && !in_select_mode_)) {
508
+ } else if (!strcmp (event->key , " Return" ) || (select && !in_select_mode_)) {
517
509
if (active_model_) {
518
510
EnterPressed (active_model_.get (), select);
519
511
}
520
- } else if (keyDownEvent ->string && strlen (keyDownEvent ->string ) == 1 &&
521
- IsASCIIPrintableKey (keyDownEvent ->string [0 ])) {
512
+ } else if (event ->string && strlen (event ->string ) == 1 &&
513
+ IsASCIIPrintableKey (event ->string [0 ])) {
522
514
if (active_model_) {
523
- active_model_->AddCodePoint (keyDownEvent ->string [0 ]);
515
+ active_model_->AddCodePoint (event ->string [0 ]);
524
516
SendStateUpdate (*active_model_);
525
517
}
526
518
} else {
527
519
is_filtered = false ;
528
520
}
529
521
if (!active_model_ && is_filtered) {
530
- engine_->platform_view_channel ->SendKeyEvent (keyDownEvent , true );
522
+ engine_->platform_view_channel ->SendKeyEvent (event , true );
531
523
}
532
524
SetEditStatus (EditStatus::kNone );
533
525
}
0 commit comments