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