diff --git a/exec/load/dd_lightbar_menu.js b/exec/load/dd_lightbar_menu.js index 60d20e700fecaf5b386f322ca46ba14760e31aae..eda8baab21d35e31187e6497fca6029ca496039a 100644 --- a/exec/load/dd_lightbar_menu.js +++ b/exec/load/dd_lightbar_menu.js @@ -3434,9 +3434,6 @@ function substrWithAttrCodes(pStr, pStartIdx, pLen) var screenLen = console.strlen(pStr); if (typeof(pStartIdx) === "number" && pStartIdx >= 0 && pStartIdx < screenLen) startIdx = pStartIdx; - var len = 0; - if (typeof(pLen) === "number" && pLen <= screenLen - startIdx) - len = pLen; // Find the real start index. If there are Synchronet attribute startIdx = printedToRealIdxInStr(pStr, startIdx); diff --git a/xtrn/DDAreaChoosers/DDMsgAreaChooser.js b/xtrn/DDAreaChoosers/DDMsgAreaChooser.js index 9647f7b0ac66429a34ccc2ec5bf1d68a92a8fa6a..cab81e77bc48d1dd26d0c31c75308e664ecf5f41 100644 --- a/xtrn/DDAreaChoosers/DDMsgAreaChooser.js +++ b/xtrn/DDAreaChoosers/DDMsgAreaChooser.js @@ -60,6 +60,9 @@ * Area change header display bug fix * 2023-09-16 Eric Oulashin Version 1.37 * Releasing this version + * 2023-10-07 Eric Oulashin Version 1.38 + * Fix for name collapsing mode with the lightbar interface: No longer gets stuck + * in a loop when choosing a sub-board. */ // TODO: In the area list, the 10,000ths digit (for # posts) is in a different color) @@ -103,8 +106,8 @@ if (system.version_num < 31400) } // Version & date variables -var DD_MSG_AREA_CHOOSER_VERSION = "1.37"; -var DD_MSG_AREA_CHOOSER_VER_DATE = "2023-09-16"; +var DD_MSG_AREA_CHOOSER_VERSION = "1.38"; +var DD_MSG_AREA_CHOOSER_VER_DATE = "2023-10-07"; // Keyboard input key codes var CTRL_H = "\x08"; @@ -585,8 +588,9 @@ function DDMsgAreaChooser_SelectMsgArea_Lightbar(pLevel, pGrpIdx, pSubIdx) return; } var level = (typeof(pLevel) === "number" ? pLevel : 1); - if ((level < 1) || (level > 3)) + if (level < 1 || level > 3) return; + else if (level == 1) { // If there are no sub-boards in the given group index, then see if there's a next group with @@ -618,7 +622,7 @@ function DDMsgAreaChooser_SelectMsgArea_Lightbar(pLevel, pGrpIdx, pSubIdx) } } - var chooseGroup = (pLevel == 1); + var chooseGroup = (level == 1); // Clear the screen, write the header, help line, and list header(s) console.clear("\x01n"); @@ -639,7 +643,6 @@ function DDMsgAreaChooser_SelectMsgArea_Lightbar(pLevel, pGrpIdx, pSubIdx) var returnedMenuIdx = msgAreaMenu.GetVal(drawMenu); drawMenu = true; var lastUserInputUpper = (typeof(msgAreaMenu.lastUserInput) === "string" ? msgAreaMenu.lastUserInput.toUpperCase() : ""); - //if (user.is_sysop) console.print("\x01n\r\nlastUserInputUpper: " + lastUserInputUpper + ":\r\n\x01p"); // Temporary if (typeof(returnedMenuIdx) === "number") chosenIdx = returnedMenuIdx; // If userChoice is not a number, then it should be null in this case, @@ -865,7 +868,13 @@ function DDMsgAreaChooser_SelectMsgArea_Lightbar(pLevel, pGrpIdx, pSubIdx) var defaultSubIdx = chosenIdx == bbs.curgrp ? bbs.cursub : 0; var subCodeBackup = bbs.cursub_code; var chosenSubBoardIdx = this.SelectMsgArea_Lightbar(2, chosenIdx, defaultSubIdx); - if (typeof(chosenSubBoardIdx) === "number" && chosenSubBoardIdx > -1) + // chosenSubBoardIdx could actually be a boolean and could be false (returned + // when pLevel is 3 and the user chose a sub-board), so check its type and + // act accordingly. + var retValType = typeof(chosenSubBoardIdx); + if (retValType === "boolean") + continueOn = chosenSubBoardIdx; + else if (typeof(chosenSubBoardIdx) === "number" && chosenSubBoardIdx > -1) { // Set the current sub-board if (this.useSubCollapsing) @@ -876,10 +885,17 @@ function DDMsgAreaChooser_SelectMsgArea_Lightbar(pLevel, pGrpIdx, pSubIdx) } else { - // A message sub-board was not chosen, so we'll have to re-draw - // the header and key help line - this.DisplayListHdrLines(this.areaChangeHdrLines.length+1, chooseGroup, pGrpIdx); - this.WriteKeyHelpLine(); + // If the sub-board changed (probably at level 3 because name + // collapsing is enabled), then exit here. + if (bbs.cursub_code != subCodeBackup) + continueOn = false; + else + { + // A message sub-board was not chosen, so we'll have to re-draw + // the header and key help line + this.DisplayListHdrLines(this.areaChangeHdrLines.length+1, chooseGroup, pGrpIdx); + this.WriteKeyHelpLine(); + } } } else if (level == 2) // Choosing a sub-board @@ -898,8 +914,14 @@ function DDMsgAreaChooser_SelectMsgArea_Lightbar(pLevel, pGrpIdx, pSubIdx) if (chosenSubSubBoardIdx > -1) { // Set the current message sub-board + //bbs.cursub_code = this.group_list[pGrpIdx].sub_list[chosenIdx].sub_subboard_list[chosenSubSubBoardIdx].code; bbs.cursub_code = this.group_list[pGrpIdx].sub_list[chosenIdx].sub_subboard_list[chosenSubSubBoardIdx].code; continueOn = false; + //return chosenSubSubBoardIdx; + // Return a false here so that after this function is called by itself when + // pLevel is 2, it will know that a sub-board has been chosen and will set + // continueOn to false so that the loop won't continue from there. + return false; } else { @@ -917,7 +939,9 @@ function DDMsgAreaChooser_SelectMsgArea_Lightbar(pLevel, pGrpIdx, pSubIdx) return chosenIdx; // Return the chosen file directory index } else if (level == 3) + { return chosenIdx; // Return the chosen subdirectory index + } } } } diff --git a/xtrn/DDAreaChoosers/readme.txt b/xtrn/DDAreaChoosers/readme.txt index ddba43a44e9d2e81b41a6f506e9b9f5f27d10a43..285ecc954071b72e3a6fe3f795b5d08474532776 100644 --- a/xtrn/DDAreaChoosers/readme.txt +++ b/xtrn/DDAreaChoosers/readme.txt @@ -1,6 +1,6 @@ Digital Distortion Area Choosers - Version 1.38/1.37 - Release date: 2023-09-17 + Version 1.38 + Release date: 2023-10-07 by diff --git a/xtrn/DDAreaChoosers/version_history.txt b/xtrn/DDAreaChoosers/version_history.txt index 23a3ca83fd31470082b4b9be14a3abcf88f7de67..31e553c7d9720fb950172ef02d5551b45a98889e 100644 --- a/xtrn/DDAreaChoosers/version_history.txt +++ b/xtrn/DDAreaChoosers/version_history.txt @@ -5,6 +5,11 @@ Revision History (change log) ============================= Version Date Description ------- ---- ----------- +1.38 2023-10-07 Message area chooser fix for name collapsing mode with the + lightbar interface: No longer gets stuck in a loop when + choosing a sub-board. The message area chooser version + was 1.37 before and has been updated to 1.38, which + matches the file area chooser. 1.38 2023-09-17 File area chooser: Bug fix for searching with name collapsing 1.37 2023-09-16 Header line bug fix