diff --git a/src/lib3270/html.c b/src/lib3270/html.c index 07d5b7a..b3aefda 100644 --- a/src/lib3270/html.c +++ b/src/lib3270/html.c @@ -110,6 +110,8 @@ } mode; char * text; + char * input; + char * block; int maxlength; unsigned short fg; unsigned short bg; @@ -187,6 +189,8 @@ snprintf(name,29,"F%04d",addr); + info->block = info->text+strlen(info->text); + append_string(info,"mode = mode; info->maxlength = 0; + info->input = info->text+strlen(info->text); } @@ -201,12 +206,25 @@ { char buffer[80]; char *ptr; + char *mark; if(info->mode == HTML_MODE_TEXT) return; - for(ptr = info->text+(strlen(info->text)-1);ptr > info->text && *ptr == ' ';ptr--); - *(++ptr) = 0; + if(info->maxlength < 1) + { + *info->block = 0; + info->mode = HTML_MODE_TEXT; + info->maxlength = 0; + return; + } + + for(ptr=mark=info->input;*ptr;ptr++) + { + if(*ptr != ' ') + mark=ptr+1; + } + *mark = 0; snprintf(buffer,80,"\" maxlength=\"%d\" class=\"IW%03d\"",info->maxlength,info->maxlength); append_string(info,buffer); @@ -373,14 +391,25 @@ if(info.mode != HTML_MODE_TEXT) { - #warning Incluir o tratamento correto + enum HTML_MODE mode = info.mode; + close_input(&info); - } - if(cr || (option && LIB3270_HTML_OPTION_ALL)) + if(cr) + append_element(&info,HTML_ELEMENT_LINE_BREAK); + + open_input(&info,baddr,mode); + + } + else if(cr) + { append_element(&info,HTML_ELEMENT_LINE_BREAK); + } } + if(info.mode != HTML_MODE_TEXT) + close_input(&info); + if(info.fg != 0xFF) append_string(&info,element_text[HTML_ELEMENT_END_COLOR]); -- libgit2 0.21.2