Report "no constraint" (still needs the translations; to be added in the next translation round I guess) from minimumWidth() for a title template instead of an arbitrary value.

Following up on the earlier division-by-zero fix: return -1 from the bad denominator branch of minimumWidth(), matching the "no
constraint" convention maximumWidth() already uses, instead of std::numeric_limits<int>::max() or 0. Update
TitleBlockTemplateView::updateDisplayedMinMaxWidth() to skip the "Longueur minimale" line when minimumWidth() reports -1, mirroring
its existing handling of maximumWidth() == -1.
This commit is contained in:
Andre Rummler
2026-08-07 11:39:08 +02:00
parent 43e4603c55
commit 99151b9c04
2 changed files with 20 additions and 8 deletions
+16 -2
View File
@@ -999,20 +999,34 @@ void TitleBlockTemplateView::updateDisplayedMinMaxWidth()
int max_width = tbtemplate_ -> maximumWidth(); int max_width = tbtemplate_ -> maximumWidth();
QString min_max_width_sentence; QString min_max_width_sentence;
if (max_width != -1) { if (min_width != -1 && max_width != -1) {
min_max_width_sentence = QString( min_max_width_sentence = QString(
tr( tr(
"Longueur minimale : %1px\nLongueur maximale : %2px\n", "Longueur minimale : %1px\nLongueur maximale : %2px\n",
"tooltip showing the minimum and/or maximum width of the edited template" "tooltip showing the minimum and/or maximum width of the edited template"
) )
).arg(min_width).arg(max_width); ).arg(min_width).arg(max_width);
} else { } else if (min_width != -1) {
min_max_width_sentence = QString( min_max_width_sentence = QString(
tr( tr(
"Longueur minimale : %1px\n", "Longueur minimale : %1px\n",
"tooltip showing the minimum width of the edited template" "tooltip showing the minimum width of the edited template"
) )
).arg(min_width); ).arg(min_width);
} else if (max_width != -1) {
min_max_width_sentence = QString(
tr(
"Longueur maximale : %1px\n",
"tooltip showing the maximum width of the edited template"
)
).arg(max_width);
} else {
min_max_width_sentence = QString(
tr(
"Longueur non contrainte.\n",
"tooltip shown when the edited template has neither a minimum nor a maximum width constraint"
)
);
} }
// the tooltip may also display the split label for readability purpose // the tooltip may also display the split label for readability purpose
+4 -6
View File
@@ -26,7 +26,6 @@
#include <QRegularExpression> #include <QRegularExpression>
#include <QRegularExpressionMatch> #include <QRegularExpressionMatch>
#include <limits>
/** /**
@brief TitleBlockTemplate::TitleBlockTemplate @brief TitleBlockTemplate::TitleBlockTemplate
Constructor Constructor
@@ -980,11 +979,10 @@ int TitleBlockTemplate::minimumWidth()
if (denominator <= 0.0) { if (denominator <= 0.0) {
// The relative-to-total-length columns alone already consume // The relative-to-total-length columns alone already consume
// 100% (or more) of the available width, so the formula above // 100% (or more) of the available width, so the formula above
// would divide by zero (or go negative). If there are no // would divide by zero (or go negative). There is no finite
// absolute-width columns, there is no meaningful minimum width // minimum width this formula can determine. Report "no
// to enforce; if there are, the template is asking for more // constraint", the same convention maximumWidth() uses.
// than 100% of its own width, which cannot be satisfied. return -1;
return abs_total > 0 ? std::numeric_limits<int>::max() : 0;
} }
return(qRound(abs_total / denominator)); return(qRound(abs_total / denominator));