diff --git a/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp b/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp index 183f89151..f2314a616 100644 --- a/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp +++ b/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp @@ -1200,6 +1200,9 @@ void OverlayWidget::setStaticContent(QImage image) { image = std::move(image).convertToFormat(kGood); } image.setDevicePixelRatio(style::DevicePixelRatio()); + if (_flip) { + image = image.mirrored(_flip & Qt::Horizontal, _flip & Qt::Vertical); + } _staticContent = std::move(image); _staticContentTransparent = IsSemitransparent(_staticContent); } @@ -2286,6 +2289,7 @@ OverlayWidget::~OverlayWidget() { void OverlayWidget::assignMediaPointer(DocumentData *document) { _savePhotoVideoWhenLoaded = SavePhotoVideo::None; + _flip = {}; _photo = nullptr; _photoMedia = nullptr; if (_document != document) { @@ -2314,6 +2318,7 @@ void OverlayWidget::assignMediaPointer(not_null photo) { _documentMedia = nullptr; _documentLoadingTo = QString(); if (_photo != photo) { + _flip = {}; _photo = photo; _photoMedia = _photo->createMediaView(); _photoMedia->wanted(Data::PhotoSize::Small, fileOrigin()); @@ -5461,6 +5466,26 @@ void OverlayWidget::handleKeyPress(not_null e) { activateControls(); } moveToNext(-1); + } else if (key == Qt::Key_H) { + if (_flip & Qt::Horizontal) { + _flip &= ~Qt::Horizontal; + } else { + _flip |= Qt::Horizontal; + } + if (_photo) { + validatePhotoCurrentImage(); + redisplayContent(); + } + } else if (key == Qt::Key_V) { + if (_flip & Qt::Vertical) { + _flip &= ~Qt::Vertical; + } else { + _flip |= Qt::Vertical; + } + if (_photo) { + validatePhotoCurrentImage(); + redisplayContent(); + } } else if (key == Qt::Key_Right) { if (_controlsHideTimer.isActive()) { activateControls(); diff --git a/Telegram/SourceFiles/media/view/media_view_overlay_widget.h b/Telegram/SourceFiles/media/view/media_view_overlay_widget.h index 19f55b423..1a5064cfe 100644 --- a/Telegram/SourceFiles/media/view/media_view_overlay_widget.h +++ b/Telegram/SourceFiles/media/view/media_view_overlay_widget.h @@ -638,6 +638,8 @@ private: bool _streamedQualityChangeFinished = false; bool _showAsPip = false; + Qt::Orientations _flip; + std::unique_ptr _stories; std::shared_ptr _cachedShow; rpl::event_stream<> _storiesChanged;