From e930bb0ba945cb470b94f9b4063f72b9e82c4981 Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Sat, 11 Jul 2015 22:09:15 -0400 Subject: [PATCH] Columns: Removed _fixed_width for indicator columns - Column indicator formats (depends.indicator, for example), should not set the ::_fixed_width flag because then the column does not have the opportunity to be suppressed via rc.print.empty.colums=1. --- src/columns/ColDepends.cpp | 6 ++++-- src/columns/ColRecur.cpp | 6 ++++-- src/columns/ColStart.cpp | 6 ++++-- src/columns/ColTags.cpp | 6 ++++-- src/columns/ColUDA.cpp | 6 ++++-- src/columns/Column.h | 18 +++++++++--------- 6 files changed, 29 insertions(+), 19 deletions(-) diff --git a/src/columns/ColDepends.cpp b/src/columns/ColDepends.cpp index b367cb1c7..4622fbbb7 100644 --- a/src/columns/ColDepends.cpp +++ b/src/columns/ColDepends.cpp @@ -83,8 +83,10 @@ void ColumnDepends::measure (Task& task, unsigned int& minimum, unsigned int& ma if (_style == "indicator") { - minimum = maximum = utf8_width (context.config.get ("dependency.indicator")); - _fixed_width = true; + if (task.has ("depends")) + minimum = maximum = utf8_width (context.config.get ("dependency.indicator")); + else + minimum = maximum = 0; } else if (_style == "count") { diff --git a/src/columns/ColRecur.cpp b/src/columns/ColRecur.cpp index 9f1534e49..7e1bd6d71 100644 --- a/src/columns/ColRecur.cpp +++ b/src/columns/ColRecur.cpp @@ -86,8 +86,10 @@ void ColumnRecur::measure (Task& task, unsigned int& minimum, unsigned int& maxi } else if (_style == "indicator") { - minimum = maximum = utf8_width (context.config.get ("recurrence.indicator")); - _fixed_width = true; + if (task.has ("recur")) + minimum = maximum = utf8_width (context.config.get ("recurrence.indicator")); + else + minimum = maximum = 0; } else throw format (STRING_COLUMN_BAD_FORMAT, _name, _style); diff --git a/src/columns/ColStart.cpp b/src/columns/ColStart.cpp index 1bb070d74..f6321fef5 100644 --- a/src/columns/ColStart.cpp +++ b/src/columns/ColStart.cpp @@ -74,8 +74,10 @@ void ColumnStart::measure (Task& task, unsigned int& minimum, unsigned int& maxi { if (_style == "active") { - minimum = maximum = utf8_width (context.config.get ("active.indicator")); - _fixed_width = true; + if (task.has ("start")) + minimum = maximum = utf8_width (context.config.get ("active.indicator")); + else + minimum = maximum = 0; } else ColumnDate::measure (task, minimum, maximum); diff --git a/src/columns/ColTags.cpp b/src/columns/ColTags.cpp index 311bbf33f..3416b5db1 100644 --- a/src/columns/ColTags.cpp +++ b/src/columns/ColTags.cpp @@ -85,8 +85,10 @@ void ColumnTags::measure (Task& task, unsigned int& minimum, unsigned int& maxim { if (_style == "indicator") { - minimum = maximum = utf8_width (context.config.get ("tag.indicator")); - _fixed_width = true; + if (task.has ("tags")) + minimum = maximum = utf8_width (context.config.get ("tag.indicator")); + else + minimum = maximum = 0; } else if (_style == "count") { diff --git a/src/columns/ColUDA.cpp b/src/columns/ColUDA.cpp index d38d1758f..3043a8b67 100644 --- a/src/columns/ColUDA.cpp +++ b/src/columns/ColUDA.cpp @@ -116,8 +116,10 @@ void ColumnUDA::measure (Task& task, unsigned int& minimum, unsigned int& maximu } else if (_style == "indicator") { - minimum = maximum = utf8_width (context.config.get ("uda." + _name + ".indicator")); - _fixed_width = true; + if (task.has (_name)) + minimum = maximum = utf8_width (context.config.get ("uda." + _name + ".indicator")); + else + minimum = maximum = 0; } else throw format (STRING_COLUMN_BAD_FORMAT, _name, _style); diff --git a/src/columns/Column.h b/src/columns/Column.h index a6c09d367..da6bba5be 100644 --- a/src/columns/Column.h +++ b/src/columns/Column.h @@ -46,15 +46,15 @@ public: bool operator== (const Column&) const; // TODO Is this necessary? virtual ~Column (); - const std::string& name () const { return _name; } - const std::string& style () const { return _style; } - const std::string& label () const { return _label; } - const std::string& type () const { return _type; } - bool modifiable () const { return _modifiable; } - bool is_uda () const { return _uda; } - bool is_fixed_width () const { return _fixed_width;} - std::vector styles () const { return _styles; } - std::vector examples () const { return _examples; } + const std::string& name () const { return _name; } + const std::string& style () const { return _style; } + const std::string& label () const { return _label; } + const std::string& type () const { return _type; } + bool modifiable () const { return _modifiable; } + bool is_uda () const { return _uda; } + bool is_fixed_width () const { return _fixed_width; } + std::vector styles () const { return _styles; } + std::vector examples () const { return _examples; } virtual void setStyle (const std::string& value) { _style = value; } virtual void setLabel (const std::string& value) { _label = value; }