diff --git a/apps/calculation/calculation.cpp b/apps/calculation/calculation.cpp index 0fb60cb04..a7b7e0540 100644 --- a/apps/calculation/calculation.cpp +++ b/apps/calculation/calculation.cpp @@ -137,7 +137,7 @@ KDCoordinate Calculation::height(Context * context, bool expanded, bool allExpre KDCoordinate inputHeight = inputLayout.layoutSize().height(); KDCoordinate inputWidth = inputLayout.layoutSize().width(); float singleMargin = 2 * Metric::CommonSmallMargin; - float doubleMargin = 2 * Metric::CommonSmallMargin; + float doubleMargin = 4 * Metric::CommonSmallMargin; bool singleLine = false; KDCoordinate inputBaseline = inputLayout.baseline(); @@ -162,19 +162,15 @@ KDCoordinate Calculation::height(Context * context, bool expanded, bool allExpre KDCoordinate exactOutputHeight = exactLayout.layoutSize().height(); KDCoordinate exactOutputWidth = exactLayout.layoutSize().width(); singleLine = exactOutputWidth + inputWidth < maxWidth - 40; - if (singleLine && Poincare::Preferences::sharedPreferences()->resultDisplay() == Poincare::Preferences::ResultDisplay::Compact) { - if (allExpressionsInline) { - KDCoordinate exactOutputBaseline = exactLayout.baseline(); - result = maxCoordinate(inputBaseline, exactOutputBaseline) + maxCoordinate(inputHeight - inputBaseline, exactOutputHeight-exactOutputBaseline)+doubleMargin; - } else { - result = (inputHeight >= exactOutputHeight) ? inputHeight + singleMargin : exactOutputHeight + singleMargin; - } + if (singleLine && Poincare::Preferences::sharedPreferences()->resultDisplay() == Poincare::Preferences::ResultDisplay::Compact && !allExpressionsInline) { + KDCoordinate exactOutputBaseline = exactLayout.baseline(); + result = maxCoordinate(inputBaseline, exactOutputBaseline) + maxCoordinate(inputHeight - inputBaseline, exactOutputHeight-exactOutputBaseline); } else { if (allExpressionsInline) { KDCoordinate exactOutputBaseline = exactLayout.baseline(); - result = maxCoordinate(inputBaseline, exactOutputBaseline) + maxCoordinate(inputHeight - inputBaseline, exactOutputHeight-exactOutputBaseline)+doubleMargin; + result = maxCoordinate(inputBaseline, exactOutputBaseline) + maxCoordinate(inputHeight - inputBaseline, exactOutputHeight-exactOutputBaseline); } else { - result = inputHeight+exactOutputHeight+doubleMargin+doubleMargin; + result = inputHeight + exactOutputHeight + doubleMargin; } } } else { @@ -200,19 +196,15 @@ KDCoordinate Calculation::height(Context * context, bool expanded, bool allExpre KDCoordinate approximateOutputWidth = approximateLayout.layoutSize().width(); singleLine = approximateOutputWidth + inputWidth < maxWidth - 40; if (displayOutput(context) == DisplayOutput::ApproximateOnly || (!expanded && displayOutput(context) == DisplayOutput::ExactAndApproximateToggle)) { - if (singleLine && Poincare::Preferences::sharedPreferences()->resultDisplay() == Poincare::Preferences::ResultDisplay::Compact) { - if (allExpressionsInline) { - KDCoordinate approximateOutputBaseline = approximateLayout.baseline(); - result = maxCoordinate(inputBaseline, approximateOutputBaseline) + maxCoordinate(inputHeight - inputBaseline, approximateOutputHeight-approximateOutputBaseline) + doubleMargin + singleMargin; - } else { - result = (inputHeight >= approximateOutputHeight) ? inputHeight + singleMargin : approximateOutputHeight + singleMargin; - } + if (singleLine && Poincare::Preferences::sharedPreferences()->resultDisplay() == Poincare::Preferences::ResultDisplay::Compact && !allExpressionsInline) { + KDCoordinate approximateOutputBaseline = approximateLayout.baseline(); + result = maxCoordinate(inputBaseline, approximateOutputBaseline) + maxCoordinate(inputHeight - inputBaseline, approximateOutputHeight-approximateOutputBaseline) + singleMargin; } else { if (allExpressionsInline) { KDCoordinate approximateOutputBaseline = approximateLayout.baseline(); - result = maxCoordinate(inputBaseline, approximateOutputBaseline) + maxCoordinate(inputHeight - inputBaseline, approximateOutputHeight-approximateOutputBaseline) + doubleMargin + singleMargin; + result = maxCoordinate(inputBaseline, approximateOutputBaseline) + maxCoordinate(inputHeight - inputBaseline, approximateOutputHeight-approximateOutputBaseline); } else { - result = inputHeight+approximateOutputHeight+doubleMargin+singleMargin; + result = inputHeight + approximateOutputHeight + doubleMargin; } } } else { @@ -221,21 +213,15 @@ KDCoordinate Calculation::height(Context * context, bool expanded, bool allExpre KDCoordinate exactOutputBaseline = exactLayout.baseline(); KDCoordinate exactOutputWidth = exactLayout.layoutSize().width(); KDCoordinate approximateOutputWidth = approximateLayout.layoutSize().width(); - KDCoordinate outputWidth = exactOutputWidth + approximateOutputWidth; - singleLine = outputWidth + inputWidth < maxWidth - 70; + singleLine = exactOutputWidth + approximateOutputWidth + inputWidth < maxWidth - 70; KDCoordinate approximateOutputBaseline = approximateLayout.baseline(); if (singleLine && Poincare::Preferences::sharedPreferences()->resultDisplay() == Poincare::Preferences::ResultDisplay::Compact) { - KDCoordinate outputHeight = maxCoordinate(exactOutputBaseline, approximateOutputBaseline) + maxCoordinate(exactOutputHeight-exactOutputBaseline, approximateOutputHeight-approximateOutputBaseline); - if (allExpressionsInline) { - result = maxCoordinate(inputBaseline, maxCoordinate(exactOutputBaseline, approximateOutputBaseline)) + maxCoordinate(inputHeight - inputBaseline, maxCoordinate(exactOutputHeight - exactOutputBaseline, approximateOutputHeight-approximateOutputBaseline)); - } else { - result = (inputHeight >= outputHeight) ? inputHeight + singleMargin : outputHeight + singleMargin; - } + result = maxCoordinate(inputBaseline, maxCoordinate(exactOutputBaseline, approximateOutputBaseline)) + maxCoordinate(inputHeight - inputBaseline, maxCoordinate(exactOutputHeight - exactOutputBaseline, approximateOutputHeight-approximateOutputBaseline)) + singleMargin; } else { if (allExpressionsInline) { result = maxCoordinate(inputBaseline, maxCoordinate(exactOutputBaseline, approximateOutputBaseline)) + maxCoordinate(inputHeight - inputBaseline, maxCoordinate(exactOutputHeight - exactOutputBaseline, approximateOutputHeight-approximateOutputBaseline)); } else { - KDCoordinate outputHeight = maxCoordinate(exactOutputBaseline, approximateOutputBaseline) + maxCoordinate(exactOutputHeight-exactOutputBaseline, approximateOutputHeight-approximateOutputBaseline) + doubleMargin; + KDCoordinate outputHeight = maxCoordinate(exactOutputBaseline, approximateOutputBaseline) + maxCoordinate(exactOutputHeight-exactOutputBaseline, approximateOutputHeight-approximateOutputBaseline); result = inputHeight + outputHeight + doubleMargin; } } diff --git a/apps/calculation/history_view_cell.cpp b/apps/calculation/history_view_cell.cpp index 2b7f34572..ce6360029 100644 --- a/apps/calculation/history_view_cell.cpp +++ b/apps/calculation/history_view_cell.cpp @@ -185,21 +185,16 @@ void HistoryViewCell::layoutSubviews(bool force) { inputSize.height()), force); KDSize outputSize = m_scrollableOutputView.minimalSizeForOptimalDisplay(); - int outputY = (oneLine() && Poincare::Preferences::sharedPreferences()->resultDisplay() == Poincare::Preferences::ResultDisplay::Compact) ? maxCoordinate(0, inputSize.height() - outputSize.height()) / 2 : inputSize.height(); + int singleLine = outputSize.width() + inputSize.width() < bounds().width() - 6; + int outputHeight = (singleLine) ? (maxCoordinate(0, inputSize.height() - outputSize.height()) / 2) + maxCoordinate(0, (inputSize.height() - outputSize.height()) / 2) : inputSize.height(); m_scrollableOutputView.setFrame(KDRect( maxCoordinate(0, maxFrameWidth - outputSize.width()), - outputY, + outputHeight, minCoordinate(maxFrameWidth, outputSize.width()), - oneLine() ? outputSize.height() : (bounds().height() - inputSize.height())), + outputSize.height()), force); } -bool HistoryViewCell::oneLine() { - KDSize inputSize = m_inputView.minimalSizeForOptimalDisplay(); - KDSize outputSize = m_scrollableOutputView.minimalSizeForOptimalDisplay(); - return outputSize.width() + inputSize.width() < bounds().width() - 6; -} - void HistoryViewCell::resetMemoization() { // Clean the layouts to make room in the pool // TODO: maybe do this only when the layout won't change to avoid blinking diff --git a/apps/calculation/history_view_cell.h b/apps/calculation/history_view_cell.h index aa525f3e1..7d6c12b45 100644 --- a/apps/calculation/history_view_cell.h +++ b/apps/calculation/history_view_cell.h @@ -52,7 +52,6 @@ public: Shared::ScrollableTwoExpressionsView * outputView(); Calculation::AdditionalInformationType additionalInformationType() const { return m_calculationAdditionInformation; } private: - bool oneLine(); constexpr static KDCoordinate k_resultWidth = 80; void reloadScroll(); void reloadOutputSelection(HistoryViewCellDataSource::SubviewType previousType);