原因是从英语切换到阿拉伯语,可输入字符从11个变为5,但是在file name editor那边去没有转换过来,仍然仍未可输入11个字符,达不到显示最大可输入字符数和已输入字符数的条件(输入长度超过可输入最大长度的一半),请尝试修改如下:
修改gui_input.c中gui_multi_line_input_box_insert_character_internal(),
将 if ((b_flags & UI_MULTI_LINE_INPUT_BOX_USE_ENCODING_BASED_LENGTH) && (b->UCS2_count == 0) &&
UI_TEST_UCS2_CHARACTER(c))
{
if ((b_flags & UI_MULTI_LINE_INPUT_BOX_ONE_LESS_CHARACTER) &&
(text_length >= UI_UCS2_STRING_HALF_LENGTH_MINUS_ONE(b->available_length)))
{
UI_editor_play_tone_cannot_insert(); /* play error tone */
return MMI_FALSE;
}
if ((b_flags & UI_MULTI_LINE_INPUT_BOX_FORTY_FOUR_LESS_CHARACTER) &&
(text_length >= UI_UCS2_STRING_HALF_LENGTH_MINUS_FORTYFOUR(b->available_length)))
{
UI_editor_play_tone_cannot_insert(); /* play error tone */
return MMI_FALSE;
}
else if (text_length >= UI_UCS2_STRING_HALF_LENGTH(b->available_length))
{
UI_editor_play_tone_cannot_insert(); /* play eror tone */
return MMI_FALSE;
}
}修改为:
if ((b_flags & UI_MULTI_LINE_INPUT_BOX_USE_ENCODING_BASED_LENGTH) && (b->UCS2_count == 0) &&
UI_TEST_UCS2_CHARACTER(c))
{
if ((b_flags & UI_MULTI_LINE_INPUT_BOX_ONE_LESS_CHARACTER) &&
(text_length >= UI_UCS2_STRING_HALF_LENGTH_MINUS_ONE(b->available_length)))
{
UI_editor_play_tone_cannot_insert(); /* play error tone */
return MMI_FALSE;
}
if ((b_flags & UI_MULTI_LINE_INPUT_BOX_FORTY_FOUR_LESS_CHARACTER) &&
(text_length >= UI_UCS2_STRING_HALF_LENGTH_MINUS_FORTYFOUR(b->available_length)))
{
UI_editor_play_tone_cannot_insert(); /* play error tone */
return MMI_FALSE;
}
else if (text_length >= UI_UCS2_STRING_HALF_LENGTH(b->available_length))
{
UI_editor_play_tone_cannot_insert(); /* play eror tone */
UI_TEST_UCS2_INCREMENT_COUNT_SET_LENGTH(c, b->UCS2_count, b->allocated_length, b->available_length);
b->UCS2_count = 0;
return MMI_FALSE;
}
}
if ((b_flags & UI_MULTI_LINE_INPUT_BOX_USE_ENCODING_BASED_LENGTH) && (b->UCS2_count == 0) &&
UI_TEST_ASCII_CHARACTER(c))
{
b->available_length = b->allocated_length;
}
修改gui_input.c中gui_multi_line_input_box_insert_character_internal(),
将 if ((b_flags & UI_MULTI_LINE_INPUT_BOX_USE_ENCODING_BASED_LENGTH) && (b->UCS2_count == 0) &&
UI_TEST_UCS2_CHARACTER(c))
{
if ((b_flags & UI_MULTI_LINE_INPUT_BOX_ONE_LESS_CHARACTER) &&
(text_length >= UI_UCS2_STRING_HALF_LENGTH_MINUS_ONE(b->available_length)))
{
UI_editor_play_tone_cannot_insert(); /* play error tone */
return MMI_FALSE;
}
if ((b_flags & UI_MULTI_LINE_INPUT_BOX_FORTY_FOUR_LESS_CHARACTER) &&
(text_length >= UI_UCS2_STRING_HALF_LENGTH_MINUS_FORTYFOUR(b->available_length)))
{
UI_editor_play_tone_cannot_insert(); /* play error tone */
return MMI_FALSE;
}
else if (text_length >= UI_UCS2_STRING_HALF_LENGTH(b->available_length))
{
UI_editor_play_tone_cannot_insert(); /* play eror tone */
return MMI_FALSE;
}
}修改为:
if ((b_flags & UI_MULTI_LINE_INPUT_BOX_USE_ENCODING_BASED_LENGTH) && (b->UCS2_count == 0) &&
UI_TEST_UCS2_CHARACTER(c))
{
if ((b_flags & UI_MULTI_LINE_INPUT_BOX_ONE_LESS_CHARACTER) &&
(text_length >= UI_UCS2_STRING_HALF_LENGTH_MINUS_ONE(b->available_length)))
{
UI_editor_play_tone_cannot_insert(); /* play error tone */
return MMI_FALSE;
}
if ((b_flags & UI_MULTI_LINE_INPUT_BOX_FORTY_FOUR_LESS_CHARACTER) &&
(text_length >= UI_UCS2_STRING_HALF_LENGTH_MINUS_FORTYFOUR(b->available_length)))
{
UI_editor_play_tone_cannot_insert(); /* play error tone */
return MMI_FALSE;
}
else if (text_length >= UI_UCS2_STRING_HALF_LENGTH(b->available_length))
{
UI_editor_play_tone_cannot_insert(); /* play eror tone */
UI_TEST_UCS2_INCREMENT_COUNT_SET_LENGTH(c, b->UCS2_count, b->allocated_length, b->available_length);
b->UCS2_count = 0;
return MMI_FALSE;
}
}
if ((b_flags & UI_MULTI_LINE_INPUT_BOX_USE_ENCODING_BASED_LENGTH) && (b->UCS2_count == 0) &&
UI_TEST_ASCII_CHARACTER(c))
{
b->available_length = b->allocated_length;
}