Scrolling issues fixed

This commit is contained in:
HarukiToreda 2025-04-04 23:04:59 -04:00
parent 67ae1c553c
commit 75490f410b
2 changed files with 71 additions and 16 deletions

53
.vscode/settings.json vendored
View File

@ -10,5 +10,58 @@
}, },
"[powershell]": { "[powershell]": {
"editor.defaultFormatter": "ms-vscode.powershell" "editor.defaultFormatter": "ms-vscode.powershell"
},
"files.associations": {
"array": "cpp",
"atomic": "cpp",
"*.tcc": "cpp",
"cctype": "cpp",
"clocale": "cpp",
"cmath": "cpp",
"csignal": "cpp",
"cstdarg": "cpp",
"cstddef": "cpp",
"cstdint": "cpp",
"cstdio": "cpp",
"cstdlib": "cpp",
"cstring": "cpp",
"ctime": "cpp",
"cwchar": "cpp",
"cwctype": "cpp",
"deque": "cpp",
"list": "cpp",
"unordered_map": "cpp",
"unordered_set": "cpp",
"vector": "cpp",
"exception": "cpp",
"algorithm": "cpp",
"functional": "cpp",
"iterator": "cpp",
"map": "cpp",
"memory": "cpp",
"memory_resource": "cpp",
"numeric": "cpp",
"optional": "cpp",
"random": "cpp",
"string": "cpp",
"string_view": "cpp",
"system_error": "cpp",
"tuple": "cpp",
"type_traits": "cpp",
"utility": "cpp",
"fstream": "cpp",
"initializer_list": "cpp",
"iomanip": "cpp",
"iosfwd": "cpp",
"iostream": "cpp",
"istream": "cpp",
"limits": "cpp",
"new": "cpp",
"ostream": "cpp",
"sstream": "cpp",
"stdexcept": "cpp",
"streambuf": "cpp",
"cinttypes": "cpp",
"typeinfo": "cpp"
} }
} }

View File

@ -1118,27 +1118,29 @@ void drawTextMessageFrame(OLEDDisplay *display, OLEDDisplayUiState *state, int16
std::vector<std::string> lines; std::vector<std::string> lines;
lines.push_back(std::string(headerStr)); // Header line is always first lines.push_back(std::string(headerStr)); // Header line is always first
std::string word, line; std::string line, word;
int msgLen = strlen(messageBuf); for (int i = 0; messageBuf[i]; ++i) {
for (int i = 0; i <= msgLen; ++i) {
char ch = messageBuf[i]; char ch = messageBuf[i];
if (ch == ' ' || ch == '\0') { if (ch == '\n') {
if (!word.empty()) { if (!word.empty()) line += word;
if (display->getStringWidth((line + word).c_str()) > textWidth) { if (!line.empty()) lines.push_back(line);
lines.push_back(line); line.clear();
line = word + ' '; word.clear();
} else { } else if (ch == ' ') {
line += word + ' '; line += word + ' ';
} word.clear();
word.clear();
}
if (ch == '\0' && !line.empty()) {
lines.push_back(line);
}
} else { } else {
word += ch; word += ch;
std::string test = line + word;
if (display->getStringWidth(test.c_str()) > textWidth + 4) {
if (!line.empty()) lines.push_back(line);
line = word;
word.clear();
}
} }
} }
if (!word.empty()) line += word;
if (!line.empty()) lines.push_back(line);
// === Scrolling logic === // === Scrolling logic ===
const float rowHeight = FONT_HEIGHT_SMALL - 1; const float rowHeight = FONT_HEIGHT_SMALL - 1;