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