diff --git a/Telegram/SourceFiles/editor/editor_paint.cpp b/Telegram/SourceFiles/editor/editor_paint.cpp index 6eff8abbd..d842d506f 100644 --- a/Telegram/SourceFiles/editor/editor_paint.cpp +++ b/Telegram/SourceFiles/editor/editor_paint.cpp @@ -176,6 +176,7 @@ std::shared_ptr Paint::saveScene() const { void Paint::cancel() { _scene->clearSelection(); + _scene->cancelDrawing(); const auto filtered = _scene->items(Qt::AscendingOrder); if (filtered.empty()) { @@ -199,6 +200,7 @@ void Paint::cancel() { void Paint::keepResult() { _scene->clearSelection(); + _scene->cancelDrawing(); for (const auto &item : _itemsToRemove) { _scene->removeItem(item); diff --git a/Telegram/SourceFiles/editor/scene/scene.cpp b/Telegram/SourceFiles/editor/scene/scene.cpp index fc64911e8..d99ccfd93 100644 --- a/Telegram/SourceFiles/editor/scene/scene.cpp +++ b/Telegram/SourceFiles/editor/scene/scene.cpp @@ -41,6 +41,10 @@ Scene::Scene(const QRectF &rect) }, _lifetime); } +void Scene::cancelDrawing() { + _canvas->cancelDrawing(); +} + void Scene::addItem(std::shared_ptr item) { if (!item) { return; diff --git a/Telegram/SourceFiles/editor/scene/scene.h b/Telegram/SourceFiles/editor/scene/scene.h index 1f235481d..0b3994fe9 100644 --- a/Telegram/SourceFiles/editor/scene/scene.h +++ b/Telegram/SourceFiles/editor/scene/scene.h @@ -38,6 +38,8 @@ public: [[nodiscard]] rpl::producer<> addsItem() const; [[nodiscard]] std::vector attachedStickers() const; + + void cancelDrawing(); protected: void mousePressEvent(QGraphicsSceneMouseEvent *event) override; void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override; diff --git a/Telegram/SourceFiles/editor/scene/scene_item_canvas.cpp b/Telegram/SourceFiles/editor/scene/scene_item_canvas.cpp index ed3b3a8fb..6aeaf1e49 100644 --- a/Telegram/SourceFiles/editor/scene/scene_item_canvas.cpp +++ b/Telegram/SourceFiles/editor/scene/scene_item_canvas.cpp @@ -209,6 +209,13 @@ bool ItemCanvas::collidesWithPath( return false; } +void ItemCanvas::cancelDrawing() { + _drawing = false; + _contentRect = QRectF(); + clearPixmap(); + update(); +} + ItemCanvas::~ItemCanvas() { _hq = nullptr; _p = nullptr; diff --git a/Telegram/SourceFiles/editor/scene/scene_item_canvas.h b/Telegram/SourceFiles/editor/scene/scene_item_canvas.h index 1c66b1422..d6e7b1e26 100644 --- a/Telegram/SourceFiles/editor/scene/scene_item_canvas.h +++ b/Telegram/SourceFiles/editor/scene/scene_item_canvas.h @@ -25,6 +25,7 @@ public: void applyBrush(const QColor &color, float size); void clearPixmap(); + void cancelDrawing(); QRectF boundingRect() const override; void paint(