diff --git a/apps/math_toolbox.cpp b/apps/math_toolbox.cpp index dc11829a7..a91e93daf 100644 --- a/apps/math_toolbox.cpp +++ b/apps/math_toolbox.cpp @@ -37,7 +37,7 @@ const ToolboxMessageTree arithmeticChildren[4] = { #if MATRICES_ARE_DEFINED const ToolboxMessageTree matricesChildren[6] = { - ToolboxMessageTree(I18n::Message::MatrixCommandWithArg, I18n::Message::NewMatrix, I18n::Message::MatrixCommandWithArg), + ToolboxMessageTree(I18n::Message::MatrixCommandWithArg, I18n::Message::NewMatrix, I18n::Message::MatrixCommand), ToolboxMessageTree(I18n::Message::InverseCommandWithArg, I18n::Message::Inverse, I18n::Message::InverseCommandWithArg), ToolboxMessageTree(I18n::Message::DeterminantCommandWithArg, I18n::Message::Determinant, I18n::Message::DeterminantCommandWithArg), ToolboxMessageTree(I18n::Message::TransposeCommandWithArg, I18n::Message::Transpose, I18n::Message::TransposeCommandWithArg), diff --git a/apps/shared.universal.i18n b/apps/shared.universal.i18n index 1f06a778b..d8147eaf0 100644 --- a/apps/shared.universal.i18n +++ b/apps/shared.universal.i18n @@ -32,6 +32,7 @@ LcmCommandWithArg = "lcm(p,q)" LeftIntegralFirstLegend = "P(X≤" LeftIntegralSecondLegend = ")=" LogCommandWithArg = "log(x,a)" +MatrixCommand = "[[]]" MatrixCommandWithArg = "[[1,2][3,4]]" MaxCommandWithArg = "max(L)" MinCommandWithArg = "min(L)" diff --git a/apps/shared/toolbox_helpers.cpp b/apps/shared/toolbox_helpers.cpp index 6186dce33..33c7b4461 100644 --- a/apps/shared/toolbox_helpers.cpp +++ b/apps/shared/toolbox_helpers.cpp @@ -13,7 +13,7 @@ int CursorIndexInCommandText(const char * text) { return i + 1; } if (text[i] == ']') { - return (i - 1) > 0 ? i - 1 : 0; + return i; } } return strlen(text); @@ -61,21 +61,10 @@ void TextToParseIntoLayoutForCommandMessage(I18n::Message message, char * buffer } void TextToParseIntoLayoutForCommandText(const char * command, char * buffer, int bufferSize) { - if (command == I18n::translate(I18n::Message::MatrixCommandWithArg)) { - assert(bufferSize >= 6); - // Handle a new matrix command. - buffer[0] = '['; - buffer[1] = '['; - buffer[2] = Ion::Charset::Empty; - buffer[3] = ']'; - buffer[4] = ']'; - buffer[5] = 0; - return; - } TextToInsertForCommandText(command, buffer, bufferSize); size_t bufferLength = strlen(buffer); for (size_t i = 0; i < bufferLength; i++) { - if (buffer[i] == '(' || buffer[i] == '[' || buffer[i] == ',') { + if (buffer[i] == '(' || buffer[i] == ',' || (i < bufferLength - 1 && buffer[i] == '[' && buffer[i+1] == ']')) { // Shift the buffer to make room for the new char. Use memmove to avoid // overwritting. memmove(&buffer[i+2], &buffer[i+1], bufferLength - (i+1) + 1);