diff --git a/Telegram/SourceFiles/media/view/media_view_playback_controls.cpp b/Telegram/SourceFiles/media/view/media_view_playback_controls.cpp index 16d06deb5..09e292878 100644 --- a/Telegram/SourceFiles/media/view/media_view_playback_controls.cpp +++ b/Telegram/SourceFiles/media/view/media_view_playback_controls.cpp @@ -64,12 +64,16 @@ protected: int contentHeight() const override; private: + float64 computeSpeed(float64 value) const; + QString speedString(float64 value) const; + QRect _itemRect; QRect _textRect; const style::MediaSlider &_sliderSt; const base::unique_qptr _slider; const not_null _dummyAction; + const int _lineCount; const int _height; rpl::event_stream _changeSpeedRequests; @@ -86,8 +90,10 @@ MenuSpeedItem::MenuSpeedItem( this, _sliderSt)) , _dummyAction(new QAction(parent)) +, _lineCount(std::ceil(st.itemStyle.font->width(speedString(0.9)) + / float(st.widthMax))) , _height(st.itemPadding.top() * 2 - + st.itemStyle.font->height + + st.itemStyle.font->height * _lineCount + _sliderSt.seekSize.height() + st.itemPadding.bottom() * 2) { @@ -95,16 +101,6 @@ MenuSpeedItem::MenuSpeedItem( enableMouseSelecting(); enableMouseSelecting(_slider.get()); - const auto computeSpeed = [=](float64 value) { - return anim::interpolate(kMinSpeed, kMaxSpeed, value) / 100.; - }; - const auto speedString = [=](float64 value) { - return tr::lng_mediaview_playback_speed( - tr::now, - lt_speed, - QString::number(computeSpeed(value), 'f', 2) + 'x'); - }; - _slider->setAlwaysDisplayMarker(true); _slider->setValue((std::round(startSpeed * 100.) - kMinSpeed) / (kMaxSpeed - kMinSpeed)); @@ -129,8 +125,13 @@ MenuSpeedItem::MenuSpeedItem( _itemRect = geometry - st.itemPadding; const auto height = _itemRect.height(); + const auto penWidth = QPen(st.itemBgOver).width(); _textRect = _itemRect - - style::margins(0, 0, 0, height - st.itemStyle.font->height); + - style::margins( + -penWidth, + 0, + -penWidth, + height - st.itemStyle.font->height * _lineCount); const auto sliderGeometry = _itemRect - style::margins(0, height - _sliderSt.seekSize.height(), 0, 0); @@ -170,6 +171,17 @@ MenuSpeedItem::MenuSpeedItem( }); } +float64 MenuSpeedItem::computeSpeed(float64 value) const { + return anim::interpolate(kMinSpeed, kMaxSpeed, value) / 100.; +} + +QString MenuSpeedItem::speedString(float64 value) const { + return tr::lng_mediaview_playback_speed( + tr::now, + lt_speed, + QString::number(computeSpeed(value), 'f', 2) + 'x'); +} + not_null MenuSpeedItem::action() const { return _dummyAction; }