From 949e702c980a9b0cd0818c21bb2eb6f404b5b767 Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Sun, 8 May 2011 15:15:48 -0400 Subject: [PATCH] Bug - ColDescription::measure did not correctly account for annotation size. - The macro 'max' was used with expensive arguments, which get evaluated twice. --- src/columns/ColDescription.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/columns/ColDescription.cpp b/src/columns/ColDescription.cpp index c68302a48..55cdc2d83 100644 --- a/src/columns/ColDescription.cpp +++ b/src/columns/ColDescription.cpp @@ -55,7 +55,7 @@ void ColumnDescription::measure (Task& task, int& minimum, int& maximum) std::string description = task.get ("description"); // The text - // + // // ... if (_style == "default") { @@ -64,16 +64,20 @@ void ColumnDescription::measure (Task& task, int& minimum, int& maximum) if (format == "") format = context.config.get ("dateformat"); - minimum = Date::length (format); - minimum = longestWord (description); + int min_desc = longestWord (description); + int min_anno = indent + Date::length (format); + minimum = max (min_desc, min_anno); maximum = description.length (); std::vector annos; task.getAnnotations (annos); std::vector ::iterator i; for (i = annos.begin (); i != annos.end (); i++) - if (indent + i->value ().length () + minimum + 1 > maximum) - maximum = indent + i->value ().length () + minimum + 1; + { + int len = min_anno + 1 + i->value ().length (); + if (len > maximum) + maximum = len; + } } // Just the text @@ -90,7 +94,9 @@ void ColumnDescription::measure (Task& task, int& minimum, int& maximum) if (format == "") format = context.config.get ("dateformat"); - minimum = max (Date::length (format), longestWord (description)); + int min_desc = longestWord (description); + int min_anno = Date::length (format); + minimum = max (min_desc, min_anno); maximum = description.length (); std::vector annos;