diff --git a/Telegram/SourceFiles/statistics/chart_widget.cpp b/Telegram/SourceFiles/statistics/chart_widget.cpp index 2a4c2f017b..422d6f84f4 100644 --- a/Telegram/SourceFiles/statistics/chart_widget.cpp +++ b/Telegram/SourceFiles/statistics/chart_widget.cpp @@ -215,6 +215,9 @@ public: Footer(not_null parent); + void setXPercentageLimits(const Limits &xLimits); + + [[nodiscard]] Limits xPercentageLimits() const; [[nodiscard]] rpl::producer xPercentageLimitsChange() const; [[nodiscard]] rpl::producer<> userInteractionFinished() const; @@ -355,11 +358,15 @@ ChartWidget::Footer::Footer(not_null parent) }, lifetime()); } -void ChartWidget::Footer::fire() const { - _xPercentageLimitsChange.fire({ +Limits ChartWidget::Footer::xPercentageLimits() const { + return { .min = _leftSide.min / float64(width()), .max = _rightSide.max / float64(width()), - }); + }; +} + +void ChartWidget::Footer::fire() const { + _xPercentageLimitsChange.fire(xPercentageLimits()); } void ChartWidget::Footer::moveCenter( @@ -482,6 +489,16 @@ void ChartWidget::Footer::paintEvent(QPaintEvent *e) { p.drawImage(_rightSide.min, 0, _rightCache); } +void ChartWidget::Footer::setXPercentageLimits(const Limits &xLimits) { + const auto left = xLimits.min * width(); + const auto w = float64(st::statisticsChartFooterSideWidth); + const auto right = xLimits.max * width() - w; + moveSide(true, left); + moveSide(false, right); + fire(); + update(); +} + rpl::producer ChartWidget::Footer::xPercentageLimitsChange() const { return _xPercentageLimitsChange.events(); }