diff --git a/Telegram/SourceFiles/editor/photo_editor.cpp b/Telegram/SourceFiles/editor/photo_editor.cpp index cd2ad4136..f7210ce96 100644 --- a/Telegram/SourceFiles/editor/photo_editor.cpp +++ b/Telegram/SourceFiles/editor/photo_editor.cpp @@ -57,7 +57,10 @@ PhotoEditor::PhotoEditor( _modifications, _undoController, std::move(data))) -, _controls(base::make_unique_q(this, _undoController)) +, _controls(base::make_unique_q( + this, + _undoController, + _modifications)) , _colorPicker(std::make_unique( this, Deserialize(Core::App().settings().photoEditorBrush()))) { diff --git a/Telegram/SourceFiles/editor/photo_editor_controls.cpp b/Telegram/SourceFiles/editor/photo_editor_controls.cpp index 97dec1285..6f377aa94 100644 --- a/Telegram/SourceFiles/editor/photo_editor_controls.cpp +++ b/Telegram/SourceFiles/editor/photo_editor_controls.cpp @@ -135,6 +135,7 @@ void HorizontalContainer::updateChildrenPosition() { PhotoEditorControls::PhotoEditorControls( not_null parent, std::shared_ptr undoController, + const PhotoModifications modifications, bool doneControls) : RpWidget(parent) , _bg(st::mediaviewSaveMsgBg) @@ -173,7 +174,8 @@ PhotoEditorControls::PhotoEditorControls( false, _bg, st::lightButtonFg, - st::photoEditorRotateButton.ripple)) { + st::photoEditorRotateButton.ripple)) +, _flipped(modifications.flipped) { _transformButtons->updateChildrenPosition(); _paintButtons->updateChildrenPosition(); @@ -241,6 +243,14 @@ PhotoEditorControls::PhotoEditorControls( : &st::photoEditorRedoButtonInactive); }, lifetime()); + _flipButton->clicks( + ) | rpl::start_with_next([=] { + _flipped = !_flipped; + _flipButton->setIconOverride(_flipped + ? &st::photoEditorFlipButton.iconOver + : nullptr); + }, _flipButton->lifetime()); + } rpl::producer PhotoEditorControls::rotateRequests() const { diff --git a/Telegram/SourceFiles/editor/photo_editor_controls.h b/Telegram/SourceFiles/editor/photo_editor_controls.h index c089cd162..903028419 100644 --- a/Telegram/SourceFiles/editor/photo_editor_controls.h +++ b/Telegram/SourceFiles/editor/photo_editor_controls.h @@ -26,6 +26,7 @@ public: PhotoEditorControls( not_null parent, std::shared_ptr undoController, + const PhotoModifications modifications, bool doneControls = true); [[nodiscard]] rpl::producer rotateRequests() const; @@ -53,6 +54,8 @@ private: const base::unique_qptr _cancel; const base::unique_qptr _done; + bool _flipped; + rpl::variable _mode; };