Thanks, I'll get these bugfixes into CVS in time for the 0.44 release
On Mon, Jan 06, 2003 at 06:33:59PM +0800, sanit wrote:
> Hi, Micah
> There are some other bugs, we fixed.
> 1. in widget/textedit_logical.c, old code in most skins cause pgserver crashed.
>
> #ifdef CONFIG_HANDINFO_FIXED
> g_error text_backend_build ( text_widget * widget,
> s16 w,
> s16 h ) {
> #else
> g_error text_backend_build ( text_widget * widget,
> u16 w,
> u16 h ) {
> #endif
>
> 2.in widget/textedit_logical.c, we must judge if the buffer had chars.
>
> g_error text_backend_set_selection ( text_widget * widget,
> struct pgstring * text ) {
> g_error e;
> #ifdef CONFIG_TEXTEDIT_WCHART
> wchar_t * wBuffer;
> #ifdef CONFIG_HANDINFO_FIXED
> if (!text->buffer || text->num_chars == 0)
> {
> return success;
> }
> #endif
> ....
>
> }
>
> 3. in gcore/pgstring.c pgstr_utf8_seek function, we handle negative char_num, that
>be used in textbox widget if we want to support utf8 code (Chinese). but this code is
>vey ugly and slow and it can work.
>
>
> void pgstr_utf8_seek(const struct pgstring *str, struct pgstr_iterator *p, s32
>char_num, int whence) {
> int num = 0, savenum = 0;
> struct pgstr_iterator temp_iterator;
> switch (whence) {
>
> case PGSEEK_SET:
> p->offset = 0;
> break;
>
> case PGSEEK_END:
> #ifdef CONFIG_HANDINFO_FIXED
> if (str->num_chars == 0)
> p->offset = 0;
> else
> #endif
> p->offset = str->num_chars - 1;
> break;
> }
> /* FIXME: handle negative char_num by sanit Handinfo Ltd.*/
> #ifdef CONFIG_TEXTBOX_SUPPORT_UTF8
> if (char_num >= 0)
> {
> #endif
> while (char_num) {
> if (!pgstring_decode(str,p))
> return;
> char_num--;
> }
> #ifdef CONFIG_TEXTBOX_SUPPORT_UTF8
> }else
> {
> if ((num = char_num + str->num_chars) <= 0)
> p->offset = 0;
> else
> {
> temp_iterator = *p;
> temp_iterator.offset = 0;
>
> /*FIXED ME this is a very urgly code, sanit */
> savenum = str->num_chars;
>
> while (savenum) {
> if (!pgstring_decode(str,&temp_iterator))
> return;
> if (temp_iterator.offset == p->offset)
> {
> break;
> }
> savenum--;
> }
> if (savenum == 0)
> return;
>
> num = str->num_chars - savenum;
> temp_iterator.offset = 0;
>
> while (num) {
> if (!pgstring_decode(str,&temp_iterator))
> return;
> num--;
> }
> *p = temp_iterator;
> }
> }
> #endif
> }
>
>
>
>sanit???????????????????????????????????????????+,???????X???'???u??N??g??g?r????zH^j???m?????????(?????????????????????????????????????????u???f??)??+->????z????l??.??????w???i????+-??(??~???????b????+-?w???.??^
--
Only you can prevent creeping featurism!
-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
_______________________________________________
Pgui-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/pgui-devel