Skip to content

Backends: SDL3: avoid calling SDL_SetTextInputArea() again if already installed the same text input area#8821

Closed
morrazzzz wants to merge 1 commit intoocornut:masterfrom
morrazzzz:fix_sdl_set_text_input_area
Closed

Backends: SDL3: avoid calling SDL_SetTextInputArea() again if already installed the same text input area#8821
morrazzzz wants to merge 1 commit intoocornut:masterfrom
morrazzzz:fix_sdl_set_text_input_area

Conversation

@morrazzzz
Copy link
Contributor

This will help to avoid situations where the same text input area is set. But we set it over and over again, generating the appropriate events, which may have its cost.

… installed the same text input area

This will help to avoid situations where the same text input area is set. But we set it over and over again, generating the appropriate events, which may have its cost.
@ocornut
Copy link
Owner

ocornut commented Jul 22, 2025

Unlike #8727 i am not sure this is needed, as we already perform a check in the calling code:

    // Notify Platform/OS when our Input Method Editor cursor has moved (e.g. CJK inputs using Microsoft IME)
    ImGuiPlatformImeData* ime_data = &g.PlatformImeData;
    if (g.PlatformIO.Platform_SetImeDataFn != NULL && memcmp(ime_data, &g.PlatformImeDataPrev, sizeof(ImGuiPlatformImeData)) != 0)
    {
        IMGUI_DEBUG_LOG_IO("[io] Calling Platform_SetImeDataFn(): WantVisible: %d, InputPos (%.2f,%.2f)\n", ime_data->WantVisible, ime_data->InputPos.x, ime_data->InputPos.y);
        IM_ASSERT(ime_data->ViewportId == IMGUI_VIEWPORT_DEFAULT_ID); // master branch
        ImGuiViewport* viewport = GetMainViewport();
        g.PlatformIO.Platform_SetImeDataFn(&g, viewport, ime_data);
    }

@morrazzzz
Copy link
Contributor Author

Unlike #8727 i am not sure this is needed, as we already perform a check in the calling code:

    // Notify Platform/OS when our Input Method Editor cursor has moved (e.g. CJK inputs using Microsoft IME)
    ImGuiPlatformImeData* ime_data = &g.PlatformImeData;
    if (g.PlatformIO.Platform_SetImeDataFn != NULL && memcmp(ime_data, &g.PlatformImeDataPrev, sizeof(ImGuiPlatformImeData)) != 0)
    {
        IMGUI_DEBUG_LOG_IO("[io] Calling Platform_SetImeDataFn(): WantVisible: %d, InputPos (%.2f,%.2f)\n", ime_data->WantVisible, ime_data->InputPos.x, ime_data->InputPos.y);
        IM_ASSERT(ime_data->ViewportId == IMGUI_VIEWPORT_DEFAULT_ID); // master branch
        ImGuiViewport* viewport = GetMainViewport();
        g.PlatformIO.Platform_SetImeDataFn(&g, viewport, ime_data);
    }

And how does this relate to the specified text input area? I recently watched this, it seems to be asking anyway, even without looking at this code.

@ocornut
Copy link
Owner

ocornut commented Aug 11, 2025

And how does this relate to the specified text input area?

The ImGuiPlatformImeData struct contains the text input position and height, so this is called whenever it changes.

@ocornut ocornut added the ime label Aug 11, 2025
@ocornut ocornut closed this Aug 27, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants