From 2f6de2a285db8179bf3bf06f26f60476df873b98 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Tue, 11 Jan 2022 09:25:05 -0500 Subject: [PATCH] Fix selected collision space not updating during paint --- CHANGELOG.md | 1 + include/ui/collisionpixmapitem.h | 2 ++ src/ui/collisionpixmapitem.cpp | 18 +++++++++++++++--- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index eb3f8848..c261fc47 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ The **"Breaking Changes"** listed below are changes that have been made in the d ### Fixed - Fix cursor tile outline not updating at the end of a dragged selection. +- Fix selected space not updating while painting in Collision view. ## [4.5.0] - 2021-12-26 ### Added diff --git a/include/ui/collisionpixmapitem.h b/include/ui/collisionpixmapitem.h index bd208c1b..2e3e74e3 100644 --- a/include/ui/collisionpixmapitem.h +++ b/include/ui/collisionpixmapitem.h @@ -27,6 +27,7 @@ public: private: unsigned actionId_ = 0; + QPoint previousPos; signals: void mouseEvent(QGraphicsSceneMouseEvent *, CollisionPixmapItem *); @@ -35,6 +36,7 @@ signals: protected: void hoverMoveEvent(QGraphicsSceneHoverEvent*); + void hoverEnterEvent(QGraphicsSceneHoverEvent*); void hoverLeaveEvent(QGraphicsSceneHoverEvent*); void mousePressEvent(QGraphicsSceneMouseEvent*); void mouseMoveEvent(QGraphicsSceneMouseEvent*); diff --git a/src/ui/collisionpixmapitem.cpp b/src/ui/collisionpixmapitem.cpp index 5c658bca..87fb2cd3 100644 --- a/src/ui/collisionpixmapitem.cpp +++ b/src/ui/collisionpixmapitem.cpp @@ -3,14 +3,21 @@ #include "metatile.h" void CollisionPixmapItem::hoverMoveEvent(QGraphicsSceneHoverEvent *event) { - int x = static_cast(event->pos().x()) / 16; - int y = static_cast(event->pos().y()) / 16; - emit this->hoveredMapMovementPermissionChanged(x, y); + QPoint pos = Metatile::coordFromPixmapCoord(event->pos()); + if (pos != this->previousPos) { + this->previousPos = pos; + emit this->hoveredMapMovementPermissionChanged(pos.x(), pos.y()); + } if (this->settings->betterCursors && this->paintingMode == MapPixmapItem::PaintMode::Metatiles) { setCursor(this->settings->mapCursor); } } +void CollisionPixmapItem::hoverEnterEvent(QGraphicsSceneHoverEvent * event) { + QPoint pos = Metatile::coordFromPixmapCoord(event->pos()); + emit this->hoveredMapMovementPermissionChanged(pos.x(), pos.y()); +} + void CollisionPixmapItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *) { emit this->hoveredMapMovementPermissionCleared(); if (this->settings->betterCursors && this->paintingMode == MapPixmapItem::PaintMode::Metatiles){ @@ -26,6 +33,11 @@ void CollisionPixmapItem::mousePressEvent(QGraphicsSceneMouseEvent *event) { } void CollisionPixmapItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { + QPoint pos = Metatile::coordFromPixmapCoord(event->pos()); + if (pos != this->previousPos) { + this->previousPos = pos; + emit this->hoveredMapMovementPermissionChanged(pos.x(), pos.y()); + } emit mouseEvent(event, this); }