diff --git a/Telegram/SourceFiles/editor/editor.style b/Telegram/SourceFiles/editor/editor.style index 8556ab0bc..bd6a89ac3 100644 --- a/Telegram/SourceFiles/editor/editor.style +++ b/Telegram/SourceFiles/editor/editor.style @@ -39,6 +39,10 @@ photoEditorRedoButton: IconButton(historyAttach) { icon: icon {{ "photo_editor/undo-flip_horizontal", photoEditorButtonIconFg }}; iconOver: icon {{ "photo_editor/undo-flip_horizontal", photoEditorButtonIconFgOver }}; } +photoEditorStickersButton: IconButton(historyAttach) { + icon: icon {{ "settings_stickers", photoEditorButtonIconFg }}; + iconOver: icon {{ "settings_stickers", photoEditorButtonIconFgOver }}; +} photoEditorUndoButtonInactive: icon {{ "photo_editor/undo", photoEditorButtonIconFgInactive }}; photoEditorRedoButtonInactive: icon {{ "photo_editor/undo-flip_horizontal", photoEditorButtonIconFgInactive }}; diff --git a/Telegram/SourceFiles/editor/editor_paint.cpp b/Telegram/SourceFiles/editor/editor_paint.cpp index 6ba8e8db8..b4a199cf7 100644 --- a/Telegram/SourceFiles/editor/editor_paint.cpp +++ b/Telegram/SourceFiles/editor/editor_paint.cpp @@ -95,6 +95,12 @@ Paint::Paint( .enable = enable, }; }))); + + if (controllers->stickersPanelController) { + controllers->stickersPanelController->setShowRequestChanges( + controllers->stickersPanelController->stickerChosen( + ) | rpl::map_to(std::optional(false))); + } } void Paint::applyTransform(QRect geometry, int angle, bool flipped) { diff --git a/Telegram/SourceFiles/editor/photo_editor_controls.cpp b/Telegram/SourceFiles/editor/photo_editor_controls.cpp index dbc5a6404..6d43fb144 100644 --- a/Telegram/SourceFiles/editor/photo_editor_controls.cpp +++ b/Telegram/SourceFiles/editor/photo_editor_controls.cpp @@ -159,6 +159,11 @@ PhotoEditorControls::PhotoEditorControls( , _paintModeButtonActive(base::make_unique_q( _paintButtons, st::photoEditorPaintModeButton)) +, _stickersButton(controllers->stickersPanelController + ? base::make_unique_q( + _paintButtons, + st::photoEditorStickersButton) + : nullptr) , _cancel(base::make_unique_q( this, tr::lng_cancel(tr::now), @@ -243,6 +248,27 @@ PhotoEditorControls::PhotoEditorControls( : &st::photoEditorRedoButtonInactive); }, lifetime()); + if (_stickersButton) { + controllers->stickersPanelController->setShowRequestChanges( + _stickersButton->clicks( + ) | rpl::map_to(std::optional(std::nullopt))); + + controllers->stickersPanelController->setMoveRequestChanges( + _paintButtons->positionValue( + ) | rpl::map([=](const QPoint &containerPos) { + return QPoint( + (x() + width()) / 2, + y() + containerPos.y() + _stickersButton->y()); + })); + + controllers->stickersPanelController->panelShown( + ) | rpl::start_with_next([=](bool shown) { + _stickersButton->setIconOverride(shown + ? &st::photoEditorStickersButton.iconOver + : nullptr); + }, _stickersButton->lifetime()); + } + _flipButton->clicks( ) | rpl::start_with_next([=] { _flipped = !_flipped; diff --git a/Telegram/SourceFiles/editor/photo_editor_controls.h b/Telegram/SourceFiles/editor/photo_editor_controls.h index 6b16de0f7..362a88b7e 100644 --- a/Telegram/SourceFiles/editor/photo_editor_controls.h +++ b/Telegram/SourceFiles/editor/photo_editor_controls.h @@ -50,6 +50,7 @@ private: const base::unique_qptr _undoButton; const base::unique_qptr _redoButton; const base::unique_qptr _paintModeButtonActive; + const base::unique_qptr _stickersButton; const base::unique_qptr _cancel; const base::unique_qptr _done;