Hi Jules,
I’m trying to input Japanese character using TextEditor/Label components on Mac, but I can input only first one letter.
As for Japanese, two characters or more might be input. Probably, Korean and Chinese also have the same situation. Therefore I added the following changes.
juce_mac_Windowing.cpp
OSStatus handleTextInputEvent (EventRef theEvent)
{
#if 0 // Original code
UniChar uc;
GetEventParameter (theEvent, kEventParamTextInputSendText, typeUnicodeText, 0, sizeof (uc), 0, &uc);
EventRef originalEvent;
GetEventParameter (theEvent, kEventParamTextInputSendKeyboardEvent, typeEventRef, 0, sizeof (originalEvent), 0, &originalEvent);
return handleKeyEvent (originalEvent, (juce_wchar) uc);
#else // Handle input more than 2 characters, such as Japanese, Chinese, Korean and so on...
UniChar *text;
UInt32 actualSize;
GetEventParameter (theEvent, kEventParamTextInputSendText, typeUnicodeText, NULL, 0, &actualSize, NULL);
text = (UniChar*) NewPtr(actualSize);
GetEventParameter (theEvent, kEventParamTextInputSendText, typeUnicodeText, NULL, actualSize, NULL, text);
EventRef originalEvent;
GetEventParameter (theEvent, kEventParamTextInputSendKeyboardEvent, typeEventRef, 0, sizeof (originalEvent), 0, &originalEvent);
UniCharCount charCount = actualSize / sizeof( UniChar );
OSStatus result = eventNotHandledErr;
for (int i = 0; i < charCount; ++i)
{
if (handleKeyEvent (originalEvent, (juce_wchar) text[i]) != eventNotHandledErr)
result = noErr;
}
return result;
#endif
}
It seems to work properly. If possible, I would like you to fix the problem in future editions.
Programming Environment:
Mac OS X 10.5.2 / Xcode 2.5 / JUCE v1.46 from SVN
Best regards,
Jazzunko