src/events/SDL_keyboard.c
changeset 4435 e953700da4ca
parent 4434 5c64052fb476
child 4437 25e45611fa3d
equal deleted inserted replaced
4434:5c64052fb476 4435:e953700da4ca
   677     keyboard->focus = window;
   677     keyboard->focus = window;
   678 
   678 
   679     if (keyboard->focus) {
   679     if (keyboard->focus) {
   680         SDL_SendWindowEvent(keyboard->focus, SDL_WINDOWEVENT_FOCUS_GAINED,
   680         SDL_SendWindowEvent(keyboard->focus, SDL_WINDOWEVENT_FOCUS_GAINED,
   681                             0, 0);
   681                             0, 0);
   682         if (SDL_EventState(SDL_TEXTINPUT, SDL_QUERY))
   682 
       
   683         if (SDL_EventState(SDL_TEXTINPUT, SDL_QUERY)) {
   683             SDL_StartTextInput();
   684             SDL_StartTextInput();
       
   685         }
   684     }
   686     }
   685 }
   687 }
   686 
   688 
   687 int
   689 int
   688 SDL_SendKeyboardKey(int index, Uint8 state, SDL_scancode scancode)
   690 SDL_SendKeyboardKey(int index, Uint8 state, SDL_scancode scancode)
   830     /* Post the event, if desired */
   832     /* Post the event, if desired */
   831     posted = 0;
   833     posted = 0;
   832     if (SDL_GetEventState(SDL_TEXTINPUT) == SDL_ENABLE) {
   834     if (SDL_GetEventState(SDL_TEXTINPUT) == SDL_ENABLE) {
   833         SDL_Event event;
   835         SDL_Event event;
   834         event.text.type = SDL_TEXTINPUT;
   836         event.text.type = SDL_TEXTINPUT;
       
   837         event.text.windowID = keyboard->focus ? keyboard->focus->id : 0;
   835         event.text.which = (Uint8) index;
   838         event.text.which = (Uint8) index;
   836         SDL_strlcpy(event.text.text, text, SDL_arraysize(event.text.text));
   839         SDL_strlcpy(event.text.text, text, SDL_arraysize(event.text.text));
   837         event.text.windowID = keyboard->focus->id;
   840         event.text.windowID = keyboard->focus->id;
   838         posted = (SDL_PushEvent(&event) > 0);
   841         posted = (SDL_PushEvent(&event) > 0);
   839     }
   842     }
   844 SDL_SendEditingText(int index, const char *text, int start, int length)
   847 SDL_SendEditingText(int index, const char *text, int start, int length)
   845 {
   848 {
   846     SDL_Keyboard *keyboard = SDL_GetKeyboard(index);
   849     SDL_Keyboard *keyboard = SDL_GetKeyboard(index);
   847     int posted;
   850     int posted;
   848 
   851 
   849     if (!keyboard)
   852     if (!keyboard) {
   850         return 0;
   853         return 0;
       
   854     }
   851 
   855 
   852     /* Post the event, if desired */
   856     /* Post the event, if desired */
   853     posted = 0;
   857     posted = 0;
   854     if (SDL_GetEventState(SDL_TEXTEDITING) == SDL_ENABLE) {
   858     if (SDL_GetEventState(SDL_TEXTEDITING) == SDL_ENABLE) {
   855         SDL_Event event;
   859         SDL_Event event;
   856         event.edit.type = SDL_TEXTEDITING;
   860         event.edit.type = SDL_TEXTEDITING;
       
   861         event.edit.windowID = keyboard->focus ? keyboard->focus->id : 0;
       
   862         event.text.which = (Uint8) index;
   857         event.edit.start = start;
   863         event.edit.start = start;
   858         event.edit.length = length;
   864         event.edit.length = length;
   859         SDL_strlcpy(event.edit.text, text, SDL_arraysize(event.text.text));
   865         SDL_strlcpy(event.edit.text, text, SDL_arraysize(event.edit.text));
   860         event.edit.windowID = keyboard->focus->id;
       
   861         posted = (SDL_PushEvent(&event) > 0);
   866         posted = (SDL_PushEvent(&event) > 0);
   862     }
   867     }
   863     return (posted);
   868     return (posted);
   864 }
   869 }
   865 
   870