@@ -666,6 +666,15 @@ void TizenWindowTcoreWl::RegisterEventHandlers() {
666666 char * dev_identifier = nullptr ;
667667 tizen_core_wl_event_input_base_get_device_identifier (ev,
668668 &dev_identifier);
669+ const char * key = keysymbol ? keysymbol : keyname;
670+ if (!key) {
671+ FT_LOG (Error) << " Failed to get a key symbol from tcore wl event." ;
672+ free (keyname);
673+ free (keysymbol);
674+ free (compose);
675+ free (dev_identifier);
676+ return ;
677+ }
669678
670679 bool handled = false ;
671680 if (self->input_method_context_ &&
@@ -682,8 +691,8 @@ void TizenWindowTcoreWl::RegisterEventHandlers() {
682691 // Passing keysymbol as `string` breaks the printable-key fallback
683692 // in TextInputChannel::HandleKey() for keys whose symbol name is
684693 // multi-char ("period", "minus", "equal", ...).
685- self->view_delegate_ ->OnKey (keysymbol , compose, compose, modifiers,
686- keycode, dev_identifier, true );
694+ self->view_delegate_ ->OnKey (key , compose, compose, modifiers, keycode ,
695+ dev_identifier, true );
687696 }
688697 free (keyname);
689698 free (keysymbol);
@@ -718,6 +727,14 @@ void TizenWindowTcoreWl::RegisterEventHandlers() {
718727 tizen_core_wl_event_key_get_modifiers (ev, &modifiers);
719728 unsigned int keycode = 0 ;
720729 tizen_core_wl_event_key_get_keycode (ev, &keycode);
730+ const char * key = keysymbol ? keysymbol : keyname;
731+ if (!key) {
732+ FT_LOG (Error) << " Failed to get a key symbol from tcore wl event." ;
733+ free (keyname);
734+ free (keysymbol);
735+ free (compose);
736+ return ;
737+ }
721738
722739 bool handled = false ;
723740 if (self->input_method_context_ &&
@@ -727,8 +744,8 @@ void TizenWindowTcoreWl::RegisterEventHandlers() {
727744 }
728745 if (!handled) {
729746 // See key-down handler for the keysymbol vs compose rationale.
730- self->view_delegate_ ->OnKey (keysymbol , compose, compose, modifiers,
731- keycode, nullptr , false );
747+ self->view_delegate_ ->OnKey (key , compose, compose, modifiers, keycode ,
748+ nullptr , false );
732749 }
733750 free (keyname);
734751 free (keysymbol);
@@ -843,17 +860,24 @@ void TizenWindowTcoreWl::SetPreferredOrientations(
843860}
844861
845862void TizenWindowTcoreWl::BindKeys (const std::vector<std::string>& keys) {
863+ GList* list = nullptr ;
864+ std::vector<tizen_core_wl_keygrab_info_h> infos;
846865 for (const std::string& key : keys) {
847866 tizen_core_wl_keygrab_info_h info = nullptr ;
848867 tizen_core_wl_keygrab_info_create (key.c_str (),
849868 TIZEN_CORE_WL_KEYGRAB_TOPMOST , &info);
850869 if (info) {
851- GList* list = g_list_append (nullptr , info);
852- tizen_core_wl_window_set_keygrab_list (tcore_wl_window_, list);
853- g_list_free (list);
854- tizen_core_wl_keygrab_info_destroy (info);
870+ list = g_list_append (list, info);
871+ infos.push_back (info);
855872 }
856873 }
874+ if (list) {
875+ tizen_core_wl_window_set_keygrab_list (tcore_wl_window_, list);
876+ g_list_free (list);
877+ }
878+ for (tizen_core_wl_keygrab_info_h info : infos) {
879+ tizen_core_wl_keygrab_info_destroy (info);
880+ }
857881}
858882
859883void TizenWindowTcoreWl::Show () {
@@ -910,8 +934,7 @@ void TizenWindowTcoreWl::UpdateFlutterCursor(const std::string& kind) {
910934 kTcoreWlInputCursorThemeName );
911935 tizen_core_wl_seat_set_cursor_name (default_seat, cursor_name.c_str ());
912936 } else {
913- tizen_core_wl_seat_set_cursor_theme (default_seat, " default" );
914- tizen_core_wl_seat_set_cursor_name (default_seat, " left_ptr" );
937+ FT_LOG (Error) << " Could not get default seat." ;
915938 }
916939#else
917940 tizen_core_wl_seat_h default_seat = nullptr ;
0 commit comments