- typical_width = m.boundingRect(0, 0, INT_MAX, INT_MAX,
- Qt::AlignLeft | Qt::AlignTop,
- format_time(offset_, tick_prefix_, time_unit_)).width() +
+ // Precision is the number of fractional digits required, not
+ // taking the prefix into account (and it must never be negative)
+ tick_precision_ = std::max((int)ceil(log10f(1 / tick_period_)), 0);
+
+ tick_period_width = tick_period_ / scale_;
+
+ const QString label_text =
+ format_time(max_time, tick_prefix_, time_unit_, tick_precision_);
+
+ label_width = m.boundingRect(0, 0, INT_MAX, INT_MAX,
+ Qt::AlignLeft | Qt::AlignTop, label_text).width() +