diff --git a/poincare/src/multiplication.cpp b/poincare/src/multiplication.cpp index 79dcdca70..9a24b06ab 100644 --- a/poincare/src/multiplication.cpp +++ b/poincare/src/multiplication.cpp @@ -68,11 +68,16 @@ Expression MultiplicationNode::setSign(Sign s, Context & context, Preferences::A } bool MultiplicationNode::childNeedsParenthesis(const TreeNode * child) const { - if (static_cast(child)->isNumber() && static_cast(child)->sign() == Sign::Negative) { + if ((static_cast(child)->isNumber() && static_cast(child)->sign() == Sign::Negative) + || static_cast(child)->type() == ExpressionNode::Type::Opposite) + { + if (child == childAtIndex(0)) { + return false; + } return true; } - Type types[] = {Type::Subtraction, Type::Opposite, Type::Addition}; - return static_cast(child)->isOfType(types, 3); + Type types[] = {Type::Subtraction, Type::Addition}; + return static_cast(child)->isOfType(types, 2); } Layout MultiplicationNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const {