Fix crash when reducing tileset metatiles past current selection
This commit is contained in:
parent
1747a4bf2e
commit
16f7373816
3 changed files with 5 additions and 4 deletions
|
@ -17,6 +17,7 @@ public:
|
||||||
void select(uint16_t metatileId);
|
void select(uint16_t metatileId);
|
||||||
void setTilesets(Tileset*, Tileset*);
|
void setTilesets(Tileset*, Tileset*);
|
||||||
uint16_t getSelectedMetatile();
|
uint16_t getSelectedMetatile();
|
||||||
|
void updateSelectedMetatile();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void mousePressEvent(QGraphicsSceneMouseEvent*);
|
void mousePressEvent(QGraphicsSceneMouseEvent*);
|
||||||
|
@ -30,7 +31,6 @@ private:
|
||||||
Tileset *secondaryTileset = nullptr;
|
Tileset *secondaryTileset = nullptr;
|
||||||
uint16_t selectedMetatile;
|
uint16_t selectedMetatile;
|
||||||
int numMetatilesWide;
|
int numMetatilesWide;
|
||||||
void updateSelectedMetatile();
|
|
||||||
uint16_t getMetatileId(int x, int y);
|
uint16_t getMetatileId(int x, int y);
|
||||||
QPoint getMetatileIdCoords(uint16_t);
|
QPoint getMetatileIdCoords(uint16_t);
|
||||||
bool shouldAcceptEvent(QGraphicsSceneMouseEvent*);
|
bool shouldAcceptEvent(QGraphicsSceneMouseEvent*);
|
||||||
|
|
|
@ -650,6 +650,7 @@ void TilesetEditor::on_actionChange_Metatiles_Count_triggered()
|
||||||
this->secondaryTileset->metatiles->append(metatile);
|
this->secondaryTileset->metatiles->append(metatile);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this->metatileSelector->updateSelectedMetatile();
|
||||||
this->refresh();
|
this->refresh();
|
||||||
this->hasUnsavedChanges = true;
|
this->hasUnsavedChanges = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,6 +54,9 @@ void TilesetEditorMetatileSelector::updateSelectedMetatile() {
|
||||||
uint16_t metatileId = this->getMetatileId(origin.x(), origin.y());
|
uint16_t metatileId = this->getMetatileId(origin.x(), origin.y());
|
||||||
if (Tileset::metatileIsValid(metatileId, this->primaryTileset, this->secondaryTileset))
|
if (Tileset::metatileIsValid(metatileId, this->primaryTileset, this->secondaryTileset))
|
||||||
this->selectedMetatile = metatileId;
|
this->selectedMetatile = metatileId;
|
||||||
|
else
|
||||||
|
this->selectedMetatile = 0;
|
||||||
|
emit selectedMetatileChanged(this->selectedMetatile);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t TilesetEditorMetatileSelector::getSelectedMetatile() {
|
uint16_t TilesetEditorMetatileSelector::getSelectedMetatile() {
|
||||||
|
@ -78,7 +81,6 @@ void TilesetEditorMetatileSelector::mousePressEvent(QGraphicsSceneMouseEvent *ev
|
||||||
if (!shouldAcceptEvent(event)) return;
|
if (!shouldAcceptEvent(event)) return;
|
||||||
SelectablePixmapItem::mousePressEvent(event);
|
SelectablePixmapItem::mousePressEvent(event);
|
||||||
this->updateSelectedMetatile();
|
this->updateSelectedMetatile();
|
||||||
emit selectedMetatileChanged(this->selectedMetatile);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TilesetEditorMetatileSelector::mouseMoveEvent(QGraphicsSceneMouseEvent *event) {
|
void TilesetEditorMetatileSelector::mouseMoveEvent(QGraphicsSceneMouseEvent *event) {
|
||||||
|
@ -86,14 +88,12 @@ void TilesetEditorMetatileSelector::mouseMoveEvent(QGraphicsSceneMouseEvent *eve
|
||||||
SelectablePixmapItem::mouseMoveEvent(event);
|
SelectablePixmapItem::mouseMoveEvent(event);
|
||||||
this->updateSelectedMetatile();
|
this->updateSelectedMetatile();
|
||||||
emit hoveredMetatileChanged(this->selectedMetatile);
|
emit hoveredMetatileChanged(this->selectedMetatile);
|
||||||
emit selectedMetatileChanged(this->selectedMetatile);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TilesetEditorMetatileSelector::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) {
|
void TilesetEditorMetatileSelector::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) {
|
||||||
if (!shouldAcceptEvent(event)) return;
|
if (!shouldAcceptEvent(event)) return;
|
||||||
SelectablePixmapItem::mouseReleaseEvent(event);
|
SelectablePixmapItem::mouseReleaseEvent(event);
|
||||||
this->updateSelectedMetatile();
|
this->updateSelectedMetatile();
|
||||||
emit selectedMetatileChanged(this->selectedMetatile);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TilesetEditorMetatileSelector::hoverMoveEvent(QGraphicsSceneHoverEvent *event) {
|
void TilesetEditorMetatileSelector::hoverMoveEvent(QGraphicsSceneHoverEvent *event) {
|
||||||
|
|
Loading…
Reference in a new issue