master #5

Merged
BRNSystems merged 45 commits from Mirrorlandia_minetest/irrlicht:master into master 2024-02-27 13:26:18 +01:00
2 changed files with 22 additions and 1 deletions
Showing only changes of commit 6779ac83f9 - Show all commits

@ -218,9 +218,28 @@ int CIrrDeviceSDL::findCharToPassToIrrlicht(int assumedChar, EKEY_CODE key) {
void CIrrDeviceSDL::resetReceiveTextInputEvents() { void CIrrDeviceSDL::resetReceiveTextInputEvents() {
gui::IGUIElement *elem = GUIEnvironment->getFocus(); gui::IGUIElement *elem = GUIEnvironment->getFocus();
if (elem && elem->acceptsIME()) if (elem && elem->acceptsIME())
{
// IBus seems to have an issue where dead keys and compose keys do not
// work (specifically, the individual characters in the sequence are
// sent as text input events instead of the result) when
// SDL_StartTextInput() is called on the same input box.
core::rect<s32> pos = elem->getAbsolutePosition();
if (!SDL_IsTextInputActive() || lastElemPos != pos)
{
lastElemPos = pos;
SDL_Rect rect;
rect.x = pos.UpperLeftCorner.X;
rect.y = pos.UpperLeftCorner.Y;
rect.w = pos.getWidth();
rect.h = pos.getHeight();
SDL_SetTextInputRect(&rect);
SDL_StartTextInput(); SDL_StartTextInput();
}
}
else else
{
SDL_StopTextInput(); SDL_StopTextInput();
}
} }
//! constructor //! constructor

@ -303,6 +303,8 @@ namespace irr
bool Resizable; bool Resizable;
core::rect<s32> lastElemPos;
struct SKeyMap struct SKeyMap
{ {
SKeyMap() {} SKeyMap() {}