diff --git a/include/LCUI/gui/widget/textedit.h b/include/LCUI/gui/widget/textedit.h index 39d3161a2..6a391e5a1 100644 --- a/include/LCUI/gui/widget/textedit.h +++ b/include/LCUI/gui/widget/textedit.h @@ -55,7 +55,9 @@ LCUI_API size_t TextEdit_GetTextLength(LCUI_Widget w); /** 设置文本编辑框内的光标,指定是否闪烁、闪烁时间间隔 */ LCUI_API void TextEdit_SetCaretBlink(LCUI_Widget w, LCUI_BOOL visible, int time); -/** 为文本框设置文本(宽字符版) */ +LCUI_API LCUI_Object TextEdit_GetProperty(LCUI_Widget w, const char *name); + + /** 为文本框设置文本(宽字符版) */ LCUI_API int TextEdit_SetTextW(LCUI_Widget widget, const wchar_t *wstr); LCUI_API int TextEdit_SetText(LCUI_Widget widget, const char *utf8_str); diff --git a/src/font/textlayer.c b/src/font/textlayer.c index 851e4592b..bc3c035b5 100644 --- a/src/font/textlayer.c +++ b/src/font/textlayer.c @@ -878,6 +878,7 @@ size_t TextLayer_GetTextW(LCUI_TextLayer layer, size_t start_pos, LCUI_TextRow row_ptr; if (max_len == 0) { + wstr_buff[0] = 0; return 0; } /* 先根据一维坐标计算行列坐标 */ @@ -894,7 +895,7 @@ size_t TextLayer_GetTextW(LCUI_TextLayer layer, size_t start_pos, wstr_buff[i] = row_ptr->string[col]->code; } } - wstr_buff[i] = L'\0'; + wstr_buff[i] = 0; return i; } diff --git a/src/gui/widget/textedit.c b/src/gui/widget/textedit.c index 22ae70de8..ccf577c67 100644 --- a/src/gui/widget/textedit.c +++ b/src/gui/widget/textedit.c @@ -527,6 +527,22 @@ size_t TextEdit_GetTextLength(LCUI_Widget w) return edit->layer_source->length; } +LCUI_Object TextEdit_GetProperty(LCUI_Widget w, const char *name) +{ + size_t len = TextEdit_GetTextLength(w); + size_t size = (len + 1) * sizeof(wchar_t); + wchar_t *wcs = malloc(size); + LCUI_Object prop; + + if (strcmp(name, "value") != 0) { + return NULL; + } + TextEdit_GetTextW(w, 0, len, wcs); + prop = WString_New(wcs); + free(wcs); + return prop; +} + int TextEdit_SetTextW(LCUI_Widget w, const wchar_t *wstr) { TextEdit_ClearText(w);