From b1ed8cd1b1701a81802254af6e7579fd18d0d0ab Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Fri, 14 Jul 2023 21:09:55 +0300 Subject: [PATCH] Fixed bug of display for y-axis captions with instant delivered data. --- .../SourceFiles/statistics/chart_widget.cpp | 28 +++++++++++-------- .../SourceFiles/statistics/chart_widget.h | 1 + 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/Telegram/SourceFiles/statistics/chart_widget.cpp b/Telegram/SourceFiles/statistics/chart_widget.cpp index 72b22e63a..010df238c 100644 --- a/Telegram/SourceFiles/statistics/chart_widget.cpp +++ b/Telegram/SourceFiles/statistics/chart_widget.cpp @@ -816,7 +816,9 @@ ChartWidget::ChartWidget(not_null parent) } }) { sizeValue( - ) | rpl::start_with_next([=](const QSize &s) { + ) | rpl::filter([](const QSize &s) { + return !s.isNull(); + }) | rpl::start_with_next([=](const QSize &s) { const auto filtersHeight = _filterButtons ? _filterButtons->height() : 0; @@ -840,6 +842,11 @@ ChartWidget::ChartWidget(not_null parent) - st::statisticsChartFooterHeight - filtersHeight - st::statisticsChartFooterSkip); + + { + updateChartFullWidth(s.width()); + updateBottomDates(); + } }, lifetime()); setupChartArea(); @@ -857,6 +864,11 @@ void ChartWidget::resizeHeight() { + (_filterButtons ? _filterButtons->height() : 0)); } +void ChartWidget::updateChartFullWidth(int w) { + const auto finalXLimits = _animationController.finalXLimits(); + _bottomLine.chartFullWidth = w / (finalXLimits.max - finalXLimits.min); +} + QRect ChartWidget::chartAreaRect() const { return _chartArea->rect() - QMargins( @@ -971,7 +983,7 @@ void ChartWidget::setupChartArea() { } void ChartWidget::updateBottomDates() { - if (!_chartData) { + if (!_chartData || !_bottomLine.chartFullWidth) { return; } const auto d = _bottomLine.chartFullWidth * _chartData.oneDayPercentage; @@ -1079,11 +1091,7 @@ void ChartWidget::setupFooter() { xPercentageLimits, _animatedChartLines, now); - { - const auto finalXLimits = _animationController.finalXLimits(); - _bottomLine.chartFullWidth = _chartArea->width() - / (finalXLimits.max - finalXLimits.min); - } + updateChartFullWidth(_chartArea->width()); updateBottomDates(); if ((now - _lastHeightLimitsChanged) < kHeightLimitsUpdateTimeout) { return; @@ -1221,11 +1229,7 @@ void ChartWidget::setChartData(Data::StatisticalChart chartData) { { _chartData.xPercentage.front(), _chartData.xPercentage.back() }, _animatedChartLines, 0); - { - const auto finalXLimits = _animationController.finalXLimits(); - _bottomLine.chartFullWidth = _chartArea->width() - / (finalXLimits.max - finalXLimits.min); - } + updateChartFullWidth(_chartArea->width()); updateBottomDates(); _animationController.finish(); addHorizontalLine(_animationController.finalHeightLimits(), false); diff --git a/Telegram/SourceFiles/statistics/chart_widget.h b/Telegram/SourceFiles/statistics/chart_widget.h index 5b635478c..96610443c 100644 --- a/Telegram/SourceFiles/statistics/chart_widget.h +++ b/Telegram/SourceFiles/statistics/chart_widget.h @@ -121,6 +121,7 @@ private: void updateBottomDates(); void resizeHeight(); + void updateChartFullWidth(int w); const base::unique_qptr _chartArea; const std::unique_ptr