diff --git a/Telegram/SourceFiles/editor/editor_paint.cpp b/Telegram/SourceFiles/editor/editor_paint.cpp index ddda079fe..6eff8abbd 100644 --- a/Telegram/SourceFiles/editor/editor_paint.cpp +++ b/Telegram/SourceFiles/editor/editor_paint.cpp @@ -66,11 +66,6 @@ Paint::Paint( _view->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); _view->setStyleSheet(kViewStyle.utf8()); - _scene->addsItem( - ) | rpl::start_with_next([=] { - updateUndoState(); - }, lifetime()); - // Undo / Redo. controllers->undoController->performRequestChanges( ) | rpl::start_with_next([=](const Undo &command) { @@ -138,10 +133,10 @@ Paint::Paint( ? controllers->stickersPanelController->stickerChosen( ) | rpl::to_empty : rpl::never<>(), - _scene->mousePresses() + _scene->addsItem() ) | rpl::start_with_next([=] { - _hasUndo = true; clearRedoList(); + updateUndoState(); }, lifetime()); } diff --git a/Telegram/SourceFiles/editor/scene/scene.cpp b/Telegram/SourceFiles/editor/scene/scene.cpp index 262b4b4fd..fc64911e8 100644 --- a/Telegram/SourceFiles/editor/scene/scene.cpp +++ b/Telegram/SourceFiles/editor/scene/scene.cpp @@ -71,7 +71,6 @@ void Scene::mousePressEvent(QGraphicsSceneMouseEvent *event) { return; } _canvas->handleMousePressEvent(event); - _mousePresses.fire({}); } void Scene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { @@ -94,10 +93,6 @@ void Scene::applyBrush(const QColor &color, float size) { _canvas->applyBrush(color, size); } -rpl::producer<> Scene::mousePresses() const { - return _mousePresses.events(); -} - rpl::producer<> Scene::addsItem() const { return _addsItem.events(); } diff --git a/Telegram/SourceFiles/editor/scene/scene.h b/Telegram/SourceFiles/editor/scene/scene.h index 102a23bd0..1f235481d 100644 --- a/Telegram/SourceFiles/editor/scene/scene.h +++ b/Telegram/SourceFiles/editor/scene/scene.h @@ -36,7 +36,6 @@ public: void removeItem(not_null item); void removeItem(const ItemPtr &item); [[nodiscard]] rpl::producer<> addsItem() const; - [[nodiscard]] rpl::producer<> mousePresses() const; [[nodiscard]] std::vector attachedStickers() const; protected: @@ -51,7 +50,6 @@ private: float64 _lastLineZ = 0.; int _itemNumber = 0; - rpl::event_stream<> _mousePresses; rpl::event_stream<> _addsItem; rpl::lifetime _lifetime; diff --git a/Telegram/SourceFiles/editor/scene/scene_item_canvas.cpp b/Telegram/SourceFiles/editor/scene/scene_item_canvas.cpp index cc1d32431..ed3b3a8fb 100644 --- a/Telegram/SourceFiles/editor/scene/scene_item_canvas.cpp +++ b/Telegram/SourceFiles/editor/scene/scene_item_canvas.cpp @@ -168,16 +168,18 @@ void ItemCanvas::handleMouseReleaseEvent( } _drawing = false; - const auto scaledContentRect = QRectF( - _contentRect.x() * cRetinaFactor(), - _contentRect.y() * cRetinaFactor(), - _contentRect.width() * cRetinaFactor(), - _contentRect.height() * cRetinaFactor()); + if (_contentRect.isValid()) { + const auto scaledContentRect = QRectF( + _contentRect.x() * cRetinaFactor(), + _contentRect.y() * cRetinaFactor(), + _contentRect.width() * cRetinaFactor(), + _contentRect.height() * cRetinaFactor()); - _grabContentRequests.fire({ - .pixmap = _pixmap.copy(scaledContentRect.toRect()), - .position = _contentRect.topLeft(), - }); + _grabContentRequests.fire({ + .pixmap = _pixmap.copy(scaledContentRect.toRect()), + .position = _contentRect.topLeft(), + }); + } clearPixmap(); update(); }