From e9c68a67c9678a9cfbaf9ec440102826da0fb6e8 Mon Sep 17 00:00:00 2001
From: Eric Oulashin <nightfox@synchro.net>
Date: Tue, 31 Jan 2023 23:07:28 +0000
Subject: [PATCH] DDMsgReader: (Hopefully) improved display of certain ANSI
 messages

---
 xtrn/DDMsgReader/DDMsgReader.js       | 31 +++++++++++++++++++++------
 xtrn/DDMsgReader/readme.txt           |  4 ++--
 xtrn/DDMsgReader/revision_history.txt |  2 ++
 3 files changed, 28 insertions(+), 9 deletions(-)

diff --git a/xtrn/DDMsgReader/DDMsgReader.js b/xtrn/DDMsgReader/DDMsgReader.js
index ae78a07bf5..12db746cfb 100644
--- a/xtrn/DDMsgReader/DDMsgReader.js
+++ b/xtrn/DDMsgReader/DDMsgReader.js
@@ -85,6 +85,9 @@
  *                              no longer gives the error "Invalid user field: 0"; also, if the sender is
  *                              unknown, prompts the user for a user name/number/email address to send
  *                              the reply to.
+ * 2023-01-30 Eric Oulashin     Version 1.62
+ *                              (Hopefully) Improved display of ANSI messages which would previously look
+ *                              bad with empty lines evrey other line
  */
 
 "use strict";
@@ -189,8 +192,8 @@ var ansiterm = require("ansiterm_lib.js", 'expand_ctrl_a');
 
 
 // Reader version information
-var READER_VERSION = "1.61";
-var READER_DATE = "2023-01-22";
+var READER_VERSION = "1.62";
+var READER_DATE = "2023-01-30";
 
 // Keyboard key codes for displaying on the screen
 var UP_ARROW = ascii(24);
@@ -4846,11 +4849,15 @@ function DigDistMsgReader_ReadMessageEnhanced_Scrollable(msgHeader, allowChgMsgA
 	if (msgHasANSICodes)
 	{
 		messageText = messageText.replace(/\u001b\[[012]J/gi, "");
-		var graphic = new Graphic(msgAreaWidth, this.msgAreaHeight-1);
+		//var graphic = new Graphic(msgAreaWidth, this.msgAreaHeight-1);
+		// To help ensure ANSI messages look good, it seems the Graphic object should have
+		// its with later set to 1 less than the width used to create it.
+		var graphicWidth = (msgAreaWidth < console.screen_columns ? msgAreaWidth+1 : console.screen_columns);
+		var graphic = new Graphic(graphicWidth, this.msgAreaHeight-1);
 		graphic.auto_extend = true;
 		graphic.ANSI = ansiterm.expand_ctrl_a(messageText);
 		//graphic.normalize();
-		//graphic.width = msgAreaWidth;
+		graphic.width = graphicWidth - 1;
 		//messageText = graphic.MSG.split('\n');
 		messageText = graphic.MSG;
 	}
@@ -5928,10 +5935,15 @@ function DigDistMsgReader_ReadMessageEnhanced_Scrollable(msgHeader, allowChgMsgA
 						// new width
 						if (msgHasANSICodes)
 						{
-							var graphic = new Graphic(msgAreaWidth, this.msgAreaHeight-1);
+							//var graphic = new Graphic(msgAreaWidth, this.msgAreaHeight-1);
+							// To help ensure ANSI messages look good, it seems the Graphic object should have
+							// its with later set to 1 less than the width used to create it.
+							var graphicWidth = (msgAreaWidth < console.screen_columns ? msgAreaWidth+1 : console.screen_columns);
+							var graphic = new Graphic(graphicWidth, this.msgAreaHeight-1);
 							graphic.auto_extend = true;
 							graphic.ANSI = ansiterm.expand_ctrl_a(messageText);
-							graphic.width = msgAreaWidth;
+							//graphic.width = msgAreaWidth;
+							graphic.width = graphicWidth - 1;
 							messageText = graphic.MSG;
 						}
 						// Display or erase the scrollbar
@@ -13975,9 +13987,14 @@ function DigDistMsgReader_SaveMsgToFile(pMsgHdr, pFilename)
 			{
 				if (textHasDrawingChars(msgBody))
 				{
-					var graphic = new Graphic(this.msgAreaWidth, this.msgAreaHeight);
+					//var graphic = new Graphic(this.msgAreaWidth, this.msgAreaHeight);
+					// To help ensure ANSI messages look good, it seems the Graphic object should have
+					// its with later set to 1 less than the width used to create it.
+					var graphicWidth = (msgAreaWidth < console.screen_columns ? msgAreaWidth+1 : console.screen_columns);
+					var graphic = new Graphic(graphicWidth, this.msgAreaHeight);
 					graphic.auto_extend = true;
 					graphic.ANSI = ansiterm.expand_ctrl_a(msgBody);
+					graphic.width = graphicWidth - 1;
 					msgBody = syncAttrCodesToANSI(graphic.MSG);
 				}
 				else
diff --git a/xtrn/DDMsgReader/readme.txt b/xtrn/DDMsgReader/readme.txt
index 9a357dd0ad..aaab131820 100644
--- a/xtrn/DDMsgReader/readme.txt
+++ b/xtrn/DDMsgReader/readme.txt
@@ -1,6 +1,6 @@
                       Digital Distortion Message Reader
-                                 Version 1.61
-                           Release date: 2023-01-22
+                                 Version 1.62
+                           Release date: 2023-01-30
 
                                      by
 
diff --git a/xtrn/DDMsgReader/revision_history.txt b/xtrn/DDMsgReader/revision_history.txt
index 12c80b4941..96464dd668 100644
--- a/xtrn/DDMsgReader/revision_history.txt
+++ b/xtrn/DDMsgReader/revision_history.txt
@@ -5,6 +5,8 @@ Revision History (change log)
 =============================
 Version  Date         Description
 -------  ----         -----------
+1.62     2023-01-30   (Hopefully) Improved display of ANSI messages which would
+                      previously look bad with empty lines evrey other line
 1.61     2023-01-22   Fix: When replying to an email with an unknown sender
                       (empty or "All"), no longer gives the error "Invalid user
                       field: 0"; also, if the sender is unknown, prompts the
-- 
GitLab