X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FApplications%2Firc_src%2Fwindow.c;h=ba12880c1f3f33efd9fb15d4e9985adea070b06f;hb=cd0f6c2fa183794952178fa4a5c90485055e12bb;hp=db3e4da8c722bdbef03dff5fdbf1ea36cbe03a30;hpb=802762ae7efd39786c0e134ed0bdfe8100d97230;p=tpg%2Facess2.git diff --git a/Usermode/Applications/irc_src/window.c b/Usermode/Applications/irc_src/window.c index db3e4da8..ba12880c 100644 --- a/Usermode/Applications/irc_src/window.c +++ b/Usermode/Applications/irc_src/window.c @@ -141,24 +141,33 @@ size_t Windows_int_PaintMessagePrefix(const tMessage *Message, bool EnablePrint) size_t Windows_int_PaintMessageLine(const tMessage *Message, size_t Offset, bool EnablePrint) { - if( Message->Data[Offset] == '\0' ) { + _SysDebug("Windows_int_PaintMessageLine: Message=%p,Offset=%i,EnablePrint=%b", + Message, (int)Offset, EnablePrint); + if( Offset > strlen(Message->Data) ) { + _SysDebug("Windows_int_PaintMessageLine: No message left"); return 0; } + _SysDebug("Windows_int_PaintMessageLine: Message->Data=\"%.*s\"+\"%s\"", + (int)Offset, Message->Data, Message->Data+Offset); size_t avail = giTerminal_Width - Message->PrefixLen; const char *msg_data = Message->Data + Offset; - int used = WordBreak(msg_data+Offset, avail); + int used = WordBreak(msg_data, avail); if( EnablePrint ) { if( Offset == 0 ) Windows_int_PaintMessagePrefix(Message, true); - else - printf("\x1b[%iC", Message->PrefixLen); + else { + for(int i = 0; i < Message->PrefixLen; i ++) + printf(" "); + //printf("\x1b[%iC", Message->PrefixLen); + } printf("%.*s", used, msg_data); } - if( msg_data[used] == '\0' ) + _SysDebug("used(%i) >= strlen(msg_data)(%i)", used, strlen(msg_data)); + if( used >= strlen(msg_data) ) return 0; return Offset + used; @@ -306,9 +315,9 @@ void Window_AppendMessage(tWindow *Window, enum eMessageClass Class, const char printf("\33[s"); // Save cursor size_t offset = 0, len; do { - printf("\33[T"); // Scroll down 1 (free space below) + printf("\33[S"); // Scroll down 1 (free space below) SetCursorPos(giTerminal_Height-2, 1); - len = Windows_int_PaintMessageLine(Message, offset, true); + len = Windows_int_PaintMessageLine(msg, offset, true); offset += len; } while( len > 0 ); printf("\33[u"); // Restore cursor