From ad47153d1b3b9210c0f04262d98b48b68647118b Mon Sep 17 00:00:00 2001 From: Adeel Asghar Date: Mon, 20 Nov 2023 16:03:27 +0100 Subject: [PATCH] Do not use elided text for multiline string with fixed font size (#11610) Fixes #8383 --- OMEdit/OMEditLIB/Annotations/TextAnnotation.cpp | 4 ++-- OMEdit/OMEditLIB/Util/Utilities.cpp | 11 +++++++++++ OMEdit/OMEditLIB/Util/Utilities.h | 1 + 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/OMEdit/OMEditLIB/Annotations/TextAnnotation.cpp b/OMEdit/OMEditLIB/Annotations/TextAnnotation.cpp index 7f407089d8e..52c6c31be11 100644 --- a/OMEdit/OMEditLIB/Annotations/TextAnnotation.cpp +++ b/OMEdit/OMEditLIB/Annotations/TextAnnotation.cpp @@ -434,10 +434,10 @@ void TextAnnotation::drawAnnotation(QPainter *painter) painter->setFont(font); } /* Try to get the elided text if calculated font size <= Helper::minimumTextFontSize - * OR if font size is absolute. + * OR if font size is absolute and text is not multiline. */ QString textToDraw = textString; - if (absMappedBoundingRect.width() > 1 && ((mFontSize <= 0 && painter->font().pointSizeF() <= Helper::minimumTextFontSize) || mFontSize > 0)) { + if (absMappedBoundingRect.width() > 1 && ((mFontSize <= 0 && painter->font().pointSizeF() <= Helper::minimumTextFontSize) || (mFontSize > 0 && !Utilities::isMultiline(textString)))) { QFontMetrics fontMetrics(painter->font()); textToDraw = fontMetrics.elidedText(textString, Qt::ElideRight, absMappedBoundingRect.width()); // if we get "..." i.e., QChar(0x2026) as textToDraw then don't draw anything diff --git a/OMEdit/OMEditLIB/Util/Utilities.cpp b/OMEdit/OMEditLIB/Util/Utilities.cpp index ae3c93d3f08..8a18f1e0693 100644 --- a/OMEdit/OMEditLIB/Util/Utilities.cpp +++ b/OMEdit/OMEditLIB/Util/Utilities.cpp @@ -1333,3 +1333,14 @@ void Utilities::setToolTip(QComboBox *pComboBox, const QString &description, con } pComboBox->setToolTip(QString("

%1

").arg(description, itemsToolTip)); } + +/*! + * \brief Utilities::isMultiline + * Returns true if the text containts \n. + * \param text + * \return + */ +bool Utilities::isMultiline(const QString &text) +{ + return text.indexOf('\n') >= 0; +} diff --git a/OMEdit/OMEditLIB/Util/Utilities.h b/OMEdit/OMEditLIB/Util/Utilities.h index eadc007cfaf..477d8593db6 100644 --- a/OMEdit/OMEditLIB/Util/Utilities.h +++ b/OMEdit/OMEditLIB/Util/Utilities.h @@ -523,6 +523,7 @@ namespace Utilities { QString convertSymbolToUnit(const QString &symbol); QRectF adjustSceneRectangle(const QRectF sceneRectangle, const qreal factor); void setToolTip(QComboBox *pComboBox, const QString &description, const QStringList &optionsDescriptions); + bool isMultiline(const QString &text); } // namespace Utilities #endif // UTILITIES_H